├── .editorconfig ├── .gitignore ├── .jshintrc ├── LICENSE ├── README.md ├── gulpfile.js ├── netlify.toml ├── package.json ├── source ├── about.html ├── blog-details.html ├── blog.html ├── contact.html ├── faq.html ├── how-it-works.html ├── images │ ├── about-us.png │ ├── about │ │ ├── about-11.jpg │ │ ├── team-1.jpg │ │ ├── team-2.jpg │ │ └── team-3.jpg │ ├── banner │ │ └── banner.png │ ├── blog │ │ ├── post-1.jpg │ │ ├── post-2.jpg │ │ ├── post-3.jpg │ │ ├── post-4.jpg │ │ ├── post-5.jpg │ │ └── post-6.jpg │ ├── favicon.png │ ├── illustration-1.png │ ├── illustration-2.png │ ├── logo.png │ ├── payment-info.png │ ├── testimonials │ │ ├── 01.jpg │ │ ├── 02.jpg │ │ ├── 03.jpg │ │ ├── 04.jpg │ │ ├── 05.jpg │ │ └── 06.jpg │ └── video-thumb.png ├── index.html ├── js │ └── script.js ├── legal.html ├── partials │ ├── _footer.htm │ ├── _header.htm │ └── navigation.htm ├── plugins │ ├── bootstrap │ │ ├── bootstrap.bundle.min.js │ │ └── bootstrap.min.js │ ├── font-awesome │ │ ├── brands.css │ │ ├── fontawesome.min.css │ │ └── solid.css │ ├── jquery │ │ └── jquery.min.js │ ├── scrollmenu │ │ └── scrollmenu.min.js │ └── slick │ │ ├── ajax-loader.gif │ │ ├── fonts │ │ ├── slick.eot │ │ ├── slick.svg │ │ ├── slick.ttf │ │ └── slick.woff │ │ ├── slick.css │ │ └── slick.min.js ├── privacy-policy.html ├── scss │ ├── _buttons.scss │ ├── _common.scss │ ├── _mixins.scss │ ├── _typography.scss │ ├── bootstrap │ │ ├── _accordion.scss │ │ ├── _alert.scss │ │ ├── _badge.scss │ │ ├── _breadcrumb.scss │ │ ├── _button-group.scss │ │ ├── _buttons.scss │ │ ├── _card.scss │ │ ├── _carousel.scss │ │ ├── _close.scss │ │ ├── _containers.scss │ │ ├── _dropdown.scss │ │ ├── _forms.scss │ │ ├── _functions.scss │ │ ├── _grid.scss │ │ ├── _helpers.scss │ │ ├── _images.scss │ │ ├── _list-group.scss │ │ ├── _mixins.scss │ │ ├── _modal.scss │ │ ├── _nav.scss │ │ ├── _navbar.scss │ │ ├── _offcanvas.scss │ │ ├── _pagination.scss │ │ ├── _popover.scss │ │ ├── _progress.scss │ │ ├── _reboot.scss │ │ ├── _root.scss │ │ ├── _spinners.scss │ │ ├── _tables.scss │ │ ├── _toasts.scss │ │ ├── _tooltip.scss │ │ ├── _transitions.scss │ │ ├── _type.scss │ │ ├── _utilities.scss │ │ ├── _variables.scss │ │ ├── bootstrap-grid.scss │ │ ├── bootstrap-reboot.scss │ │ ├── bootstrap-utilities.scss │ │ ├── bootstrap.scss │ │ ├── forms │ │ │ ├── _floating-labels.scss │ │ │ ├── _form-check.scss │ │ │ ├── _form-control.scss │ │ │ ├── _form-range.scss │ │ │ ├── _form-select.scss │ │ │ ├── _form-text.scss │ │ │ ├── _input-group.scss │ │ │ ├── _labels.scss │ │ │ └── _validation.scss │ │ ├── helpers │ │ │ ├── _clearfix.scss │ │ │ ├── _colored-links.scss │ │ │ ├── _position.scss │ │ │ ├── _ratio.scss │ │ │ ├── _stretched-link.scss │ │ │ ├── _text-truncation.scss │ │ │ └── _visually-hidden.scss │ │ ├── mixins │ │ │ ├── _alert.scss │ │ │ ├── _backdrop.scss │ │ │ ├── _border-radius.scss │ │ │ ├── _box-shadow.scss │ │ │ ├── _breakpoints.scss │ │ │ ├── _buttons.scss │ │ │ ├── _caret.scss │ │ │ ├── _clearfix.scss │ │ │ ├── _color-scheme.scss │ │ │ ├── _container.scss │ │ │ ├── _deprecate.scss │ │ │ ├── _forms.scss │ │ │ ├── _gradients.scss │ │ │ ├── _grid.scss │ │ │ ├── _image.scss │ │ │ ├── _list-group.scss │ │ │ ├── _lists.scss │ │ │ ├── _pagination.scss │ │ │ ├── _reset-text.scss │ │ │ ├── _resize.scss │ │ │ ├── _table-variants.scss │ │ │ ├── _text-truncate.scss │ │ │ ├── _transition.scss │ │ │ ├── _utilities.scss │ │ │ └── _visually-hidden.scss │ │ ├── utilities │ │ │ └── _api.scss │ │ └── vendor │ │ │ └── _rfs.scss │ ├── style.scss │ └── templates │ │ ├── _main.scss │ │ └── _navigation.scss ├── service-details.html ├── services.html └── terms.html └── theme ├── about.html ├── blog-details.html ├── blog.html ├── contact.html ├── css ├── bootstrap │ ├── bootstrap-grid.css │ ├── bootstrap-grid.css.map │ ├── bootstrap-reboot.css │ ├── bootstrap-reboot.css.map │ ├── bootstrap-utilities.css │ ├── bootstrap-utilities.css.map │ ├── bootstrap.css │ └── bootstrap.css.map ├── style.css └── style.css.map ├── faq.html ├── how-it-works.html ├── images ├── about-us.png ├── about │ ├── about-11.jpg │ ├── team-1.jpg │ ├── team-2.jpg │ └── team-3.jpg ├── banner │ └── banner.png ├── blog │ ├── post-1.jpg │ ├── post-2.jpg │ ├── post-3.jpg │ ├── post-4.jpg │ ├── post-5.jpg │ └── post-6.jpg ├── favicon.png ├── illustration-1.png ├── illustration-2.png ├── logo.png ├── payment-info.png ├── testimonials │ ├── 01.jpg │ ├── 02.jpg │ ├── 03.jpg │ ├── 04.jpg │ ├── 05.jpg │ └── 06.jpg └── video-thumb.png ├── index.html ├── js └── script.js ├── legal.html ├── plugins ├── bootstrap │ ├── bootstrap.bundle.min.js │ └── bootstrap.min.js ├── font-awesome │ ├── brands.css │ ├── fontawesome.min.css │ └── solid.css ├── jquery │ └── jquery.min.js ├── scrollmenu │ └── scrollmenu.min.js └── slick │ ├── ajax-loader.gif │ ├── fonts │ ├── slick.eot │ ├── slick.svg │ ├── slick.ttf │ └── slick.woff │ ├── slick.css │ └── slick.min.js ├── privacy-policy.html ├── service-details.html ├── services.html └── terms.html /.editorconfig: -------------------------------------------------------------------------------- 1 | ; https://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | end_of_line = lf 8 | indent_size = 2 9 | indent_style = space 10 | trim_trailing_whitespace = true 11 | insert_final_newline = true 12 | 13 | [*.md] 14 | trim_trailing_whitespace = false -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Thumbs.db 2 | .DS_Store 3 | .dist 4 | .tmp 5 | .sass-cache 6 | npm-debug.log 7 | node_modules 8 | package-lock.json 9 | yarn.lock 10 | netlify -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "maxerr": 50, 3 | "bitwise": true, 4 | "camelcase": false, 5 | "curly": true, 6 | "eqeqeq": true, 7 | "forin": true, 8 | "freeze": true, 9 | "immed": true, 10 | "indent": 4, 11 | "latedef": true, 12 | "newcap": false, 13 | "noarg": true, 14 | "noempty": true, 15 | "nonbsp": true, 16 | "nonew": true, 17 | "plusplus": false, 18 | "quotmark": "double", 19 | "undef": true, 20 | "unused": false, 21 | "strict": true, 22 | "maxparams": false, 23 | "maxdepth": 4, 24 | "maxstatements": false, 25 | "maxcomplexity": false, 26 | "maxlen": 400, 27 | "browser": true, 28 | "devel": true, 29 | "asi": false, 30 | "boss": false, 31 | "debug": false, 32 | "eqnull": false, 33 | "es3": true, 34 | "es5": false, 35 | "esnext": true, 36 | "moz": false, 37 | 38 | "evil": true, 39 | "expr": true, 40 | "funcscope": false, 41 | "globalstrict": false, 42 | "iterator": false, 43 | "lastsemic": false, 44 | "laxbreak": false, 45 | "laxcomma": false, 46 | "loopfunc": true, 47 | "multistr": true, 48 | "noyield": false, 49 | "notypeof": false, 50 | "proto": false, 51 | "scripturl": false, 52 | "shadow": false, 53 | "sub": false, 54 | "supernew": false, 55 | "validthis": false, 56 | "globals": { 57 | "jQuery": false, 58 | "google": false, 59 | "$": false 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 - Present, Themefisher 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Wallet Free Bootstrap Finance Template 2 | 3 | ![wallet](https://demo.themefisher.com/thumbnails/wallet.png) 4 | 5 | 👉🏻[View Live Preview](https://demo.themefisher.com/wallet/) 6 | 7 | 8 | ## Download And installation 9 | 10 | Download this template from [Github](https://github.com/themefisher/wallet/archive/main.zip) 11 | 12 | 13 | ### Basic Usages 14 | 15 | After downloading the template, you can simply edit the HTML and CSS files from the `theme` folder. To preview the changes you make to the code, you can open the index.html file in your web browser. 16 | 17 | ### Advanced Usage 18 | 19 | For advanced usage, you have some prerequisites to install. Then you can run it on your localhost. You can view the package.json file to see which scripts are included. 20 | 21 | #### Install prerequisites (once for a machine) 22 | 23 | * **Node Installation:** [Install node js](https://nodejs.org/en/download/) 24 | * **Gulp Installation:** Install gulp globally from your terminal 25 | 26 | ``` 27 | npm install --global gulp-cli 28 | ``` 29 | 30 | Or visit the original [Gulp docs](https://gulpjs.com/docs/en/getting-started/quick-start) 31 | 32 | #### Local setup 33 | 34 | After successfully installing those dependencies, open this theme with any IDE [[VS Code](https://code.visualstudio.com/) recommended], and then open the internal terminal of IDM [vs code shortcut ctrl/cmd+\`] 35 | 36 | * Install dependencies 37 | 38 | ``` 39 | npm install 40 | ``` 41 | 42 | * Run locally 43 | 44 | ``` 45 | npm run dev 46 | ``` 47 | 48 | After that, it will open up a preview of the template in your default browser, watch for changes to source files, and live reload the browser when changes are saved. 49 | 50 | #### Production Build 51 | 52 | After finishing all the customization, you can create a production build by running this command. 53 | 54 | ``` 55 | npm run build 56 | ``` 57 | 58 | Now you get a `theme` folder that has all the changes you have made. you can use this folder as your main theme. 59 | 60 | 👉🏻 [visit documentation](https://docs.themefisher.com/wallet/) 61 | 62 | 63 | ## Reporting Issues 64 | 65 | We use GitHub Issues as the official bug tracker for the wallet Template. Please Search [existing issues](https://github.com/themefisher/wallet/issues). It’s possible someone has already reported the same problem. 66 | If your problem or idea has not been addressed yet, feel free to [open a new issue](https://github.com/themefisher/wallet/issues). 67 | 68 | 69 | ## Technical Support or Questions (Paid) 70 | 71 | If you have questions or need help integrating the product please [contact us](mailto:mehedi@themefisher.com) instead of opening an issue. 72 | 73 | 74 | ## License 75 | 76 | Copyright (c) 2016 - Present, Designed & Developed by [Themefisher](https://themefisher.com) 77 | 78 | **Code License:** Released under the [MIT](https://github.com/themefisher/wallet/blob/main/LICENSE) license. 79 | 80 | **Image license:** The images are only for demonstration purposes. They have their license, we don't have permission to share those images. 81 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | const sass = require("gulp-sass")(require("sass")); 4 | const gulp = require("gulp"); 5 | const gutil = require("gulp-util"); 6 | const sourcemaps = require("gulp-sourcemaps"); 7 | const fileinclude = require("gulp-file-include"); 8 | const autoprefixer = require("gulp-autoprefixer"); 9 | const bs = require("browser-sync").create(); 10 | const rimraf = require("rimraf"); 11 | const comments = require("gulp-header-comment"); 12 | const jshint = require("gulp-jshint"); 13 | 14 | var path = { 15 | src: { 16 | html: "source/*.html", 17 | others: "source/*.+(php|ico|png)", 18 | htminc: "source/partials/**/*.htm", 19 | incdir: "source/partials/", 20 | plugins: "source/plugins/**/*.*", 21 | js: "source/js/*.js", 22 | scss: "source/scss/**/*.scss", 23 | images: "source/images/**/*.+(png|jpg|gif|svg)", 24 | fonts: "source/fonts/**/*.+(eot|ttf|woff|woff2|otf)", 25 | }, 26 | build: { 27 | dir: "theme/", 28 | }, 29 | }; 30 | 31 | // HTML 32 | gulp.task("html:build", function () { 33 | return gulp 34 | .src(path.src.html) 35 | .pipe( 36 | fileinclude({ 37 | basepath: path.src.incdir, 38 | }) 39 | ) 40 | .pipe( 41 | comments(` 42 | WEBSITE: https://themefisher.com 43 | TWITTER: https://twitter.com/themefisher 44 | FACEBOOK: https://www.facebook.com/themefisher 45 | GITHUB: https://github.com/themefisher/ 46 | `) 47 | ) 48 | .pipe(gulp.dest(path.build.dir)) 49 | .pipe( 50 | bs.reload({ 51 | stream: true, 52 | }) 53 | ); 54 | }); 55 | 56 | // SCSS 57 | gulp.task("scss:build", function () { 58 | return gulp 59 | .src(path.src.scss) 60 | .pipe(sourcemaps.init()) 61 | .pipe( 62 | sass({ 63 | outputStyle: "expanded", 64 | }).on("error", sass.logError) 65 | ) 66 | .pipe(autoprefixer()) 67 | .pipe(sourcemaps.write("/")) 68 | .pipe( 69 | comments(` 70 | WEBSITE: https://themefisher.com 71 | TWITTER: https://twitter.com/themefisher 72 | FACEBOOK: https://www.facebook.com/themefisher 73 | GITHUB: https://github.com/themefisher/ 74 | `) 75 | ) 76 | .pipe(gulp.dest(path.build.dir + "css/")) 77 | .pipe( 78 | bs.reload({ 79 | stream: true, 80 | }) 81 | ); 82 | }); 83 | 84 | // Javascript 85 | gulp.task("js:build", function () { 86 | return gulp 87 | .src(path.src.js) 88 | .pipe(jshint("./.jshintrc")) 89 | .pipe(jshint.reporter("jshint-stylish")) 90 | .on("error", gutil.log) 91 | .pipe( 92 | comments(` 93 | WEBSITE: https://themefisher.com 94 | TWITTER: https://twitter.com/themefisher 95 | FACEBOOK: https://www.facebook.com/themefisher 96 | GITHUB: https://github.com/themefisher/ 97 | `) 98 | ) 99 | .pipe(gulp.dest(path.build.dir + "js/")) 100 | .pipe( 101 | bs.reload({ 102 | stream: true, 103 | }) 104 | ); 105 | }); 106 | 107 | // Images 108 | gulp.task("images:build", function () { 109 | return gulp 110 | .src(path.src.images) 111 | .pipe(gulp.dest(path.build.dir + "images/")) 112 | .pipe( 113 | bs.reload({ 114 | stream: true, 115 | }) 116 | ); 117 | }); 118 | 119 | // fonts 120 | gulp.task("fonts:build", function () { 121 | return gulp 122 | .src(path.src.fonts) 123 | .pipe(gulp.dest(path.build.dir + "fonts/")) 124 | .pipe( 125 | bs.reload({ 126 | stream: true, 127 | }) 128 | ); 129 | }); 130 | 131 | // Plugins 132 | gulp.task("plugins:build", function () { 133 | return gulp 134 | .src(path.src.plugins) 135 | .pipe(gulp.dest(path.build.dir + "plugins/")) 136 | .pipe( 137 | bs.reload({ 138 | stream: true, 139 | }) 140 | ); 141 | }); 142 | 143 | // Other files like favicon, php, sourcele-icon on root directory 144 | gulp.task("others:build", function () { 145 | return gulp.src(path.src.others).pipe(gulp.dest(path.build.dir)); 146 | }); 147 | 148 | // Clean Build Folder 149 | gulp.task("clean", function (cb) { 150 | rimraf("./theme", cb); 151 | }); 152 | 153 | // Watch Task 154 | gulp.task("watch:build", function () { 155 | gulp.watch(path.src.html, gulp.series("html:build")); 156 | gulp.watch(path.src.htminc, gulp.series("html:build")); 157 | gulp.watch(path.src.scss, gulp.series("scss:build")); 158 | gulp.watch(path.src.js, gulp.series("js:build")); 159 | gulp.watch(path.src.images, gulp.series("images:build")); 160 | gulp.watch(path.src.fonts, gulp.series("fonts:build")); 161 | gulp.watch(path.src.plugins, gulp.series("plugins:build")); 162 | }); 163 | 164 | // Dev Task 165 | gulp.task( 166 | "default", 167 | gulp.series( 168 | "clean", 169 | "html:build", 170 | "js:build", 171 | "scss:build", 172 | "images:build", 173 | "fonts:build", 174 | "plugins:build", 175 | "others:build", 176 | gulp.parallel("watch:build", function () { 177 | bs.init({ 178 | server: { 179 | baseDir: path.build.dir, 180 | }, 181 | }); 182 | }) 183 | ) 184 | ); 185 | 186 | // Build Task 187 | gulp.task( 188 | "build", 189 | gulp.series( 190 | "html:build", 191 | "js:build", 192 | "scss:build", 193 | "images:build", 194 | "fonts:build", 195 | "plugins:build" 196 | ) 197 | ); 198 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | publish = "theme" 3 | command = "npm run build" 4 | 5 | [[headers]] 6 | for = "/*" # This defines which paths this specific [[headers]] block will cover. 7 | 8 | [headers.values] 9 | X-Frame-Options = "DENY" 10 | X-XSS-Protection = "1; mode=block" 11 | Referrer-Policy = "same-origin" 12 | Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload" 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wallet", 3 | "version": "1.0.0", 4 | "description": "wallet free bootstrap finance template", 5 | "author": "Themefisher", 6 | "license": "MIT", 7 | "scripts": { 8 | "dev": "gulp", 9 | "build": "gulp build" 10 | }, 11 | "dependencies": { 12 | "browser-sync": "^2.27.10", 13 | "gulp": "^4.0.2", 14 | "gulp-autoprefixer": "^8.0.0", 15 | "gulp-file-include": "^2.3.0", 16 | "gulp-header-comment": "^0.10.0", 17 | "gulp-jshint": "^2.1.0", 18 | "gulp-rimraf": "^1.0.0", 19 | "gulp-sass": "^5.1.0", 20 | "gulp-sourcemaps": "^3.0.0", 21 | "gulp-util": "^3.0.8", 22 | "jshint": "^2.13.4", 23 | "jshint-stylish": "^2.2.1", 24 | "sass": "^1.53.0" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /source/faq.html: -------------------------------------------------------------------------------- 1 | @@include('_header.htm') 2 | 3 |
4 |
5 |
6 |
7 |
8 |

Frequient Questions

9 |

Frequently Asked Questions

10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |

Can I apply if my credit isn’t 21 | perfect? 22 |

23 |
26 |
The difference between and premium product consist number of 27 | components, plugins, page in each. The Free versions contain only a few elements and pages that.
28 |
29 |
30 |
31 | 36 |
38 |
The difference between and premium product consist number of 39 | components, plugins, page in each. The Free versions contain only a few elements and pages that.
40 |
41 |
42 |
43 | 48 |
50 |
The difference between and premium product consist number of 51 | components, plugins, page in each. The Free versions contain only a few elements and pages that.
52 |
53 |
54 |
55 | 61 |
63 |
The difference between and premium product consist number of 64 | components, plugins, page in each. The Free versions contain only a few elements and pages that.
65 |
66 |
67 |
68 | 73 |
75 |
The difference between and premium product consist number of 76 | components, plugins, page in each. The Free versions contain only a few elements and pages that.
77 |
78 |
79 |
80 | 86 |
88 |
The difference between and premium product consist number of 89 | components, plugins, page in each. The Free versions contain only a few elements and pages that.
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 | 98 | @@include('_footer.htm') -------------------------------------------------------------------------------- /source/images/about-us.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/about-us.png -------------------------------------------------------------------------------- /source/images/about/about-11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/about/about-11.jpg -------------------------------------------------------------------------------- /source/images/about/team-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/about/team-1.jpg -------------------------------------------------------------------------------- /source/images/about/team-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/about/team-2.jpg -------------------------------------------------------------------------------- /source/images/about/team-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/about/team-3.jpg -------------------------------------------------------------------------------- /source/images/banner/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/banner/banner.png -------------------------------------------------------------------------------- /source/images/blog/post-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/blog/post-1.jpg -------------------------------------------------------------------------------- /source/images/blog/post-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/blog/post-2.jpg -------------------------------------------------------------------------------- /source/images/blog/post-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/blog/post-3.jpg -------------------------------------------------------------------------------- /source/images/blog/post-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/blog/post-4.jpg -------------------------------------------------------------------------------- /source/images/blog/post-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/blog/post-5.jpg -------------------------------------------------------------------------------- /source/images/blog/post-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/blog/post-6.jpg -------------------------------------------------------------------------------- /source/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/favicon.png -------------------------------------------------------------------------------- /source/images/illustration-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/illustration-1.png -------------------------------------------------------------------------------- /source/images/illustration-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/illustration-2.png -------------------------------------------------------------------------------- /source/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/logo.png -------------------------------------------------------------------------------- /source/images/payment-info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/payment-info.png -------------------------------------------------------------------------------- /source/images/testimonials/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/testimonials/01.jpg -------------------------------------------------------------------------------- /source/images/testimonials/02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/testimonials/02.jpg -------------------------------------------------------------------------------- /source/images/testimonials/03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/testimonials/03.jpg -------------------------------------------------------------------------------- /source/images/testimonials/04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/testimonials/04.jpg -------------------------------------------------------------------------------- /source/images/testimonials/05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/testimonials/05.jpg -------------------------------------------------------------------------------- /source/images/testimonials/06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/testimonials/06.jpg -------------------------------------------------------------------------------- /source/images/video-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/images/video-thumb.png -------------------------------------------------------------------------------- /source/js/script.js: -------------------------------------------------------------------------------- 1 | // Preloader js 2 | $(window).on("load", function () { 3 | "use strict"; 4 | $(".preloader").fadeOut(0); 5 | }); 6 | 7 | (function ($) { 8 | "use strict"; 9 | 10 | // tab 11 | $(".tab-content") 12 | .find(".tab-pane") 13 | .each(function (idx, item) { 14 | var navTabs = $(this).closest(".code-tabs").find(".nav-tabs"), 15 | title = $(this).attr("title"); 16 | navTabs.append( 17 | '" 20 | ); 21 | }); 22 | 23 | $(".code-tabs ul.nav-tabs").each(function () { 24 | $(this).find("li:first").addClass("active"); 25 | }); 26 | 27 | $(".code-tabs .tab-content").each(function () { 28 | $(this).find("div:first").addClass("active"); 29 | }); 30 | 31 | $(".nav-tabs a").click(function (e) { 32 | e.preventDefault(); 33 | var tab = $(this).parent(), 34 | tabIndex = tab.index(), 35 | tabPanel = $(this).closest(".code-tabs"), 36 | tabPane = tabPanel.find(".tab-pane").eq(tabIndex); 37 | tabPanel.find(".active").removeClass("active"); 38 | tab.addClass("active"); 39 | tabPane.addClass("active"); 40 | }); 41 | 42 | // accordion-collapse 43 | $(".accordion-collapse").on("show.bs.collapse", function () { 44 | $(this).siblings(".accordion-header").addClass("active"); 45 | }); 46 | $(".accordion-collapse").on("hide.bs.collapse", function () { 47 | $(this).siblings(".accordion-header").removeClass("active"); 48 | }); 49 | 50 | //post slider 51 | $(".post-slider").slick({ 52 | slidesToShow: 1, 53 | slidesToScroll: 1, 54 | autoplay: true, 55 | autoplaySpeed: 4500, 56 | dots: false, 57 | arrows: true, 58 | prevArrow: 59 | '', 60 | nextArrow: 61 | '', 62 | }); 63 | 64 | // videoPopupInit 65 | function videoPopupInit() { 66 | var $videoSrc; 67 | $(".video-play-btn").click(function () { 68 | $videoSrc = $(this).data("src"); 69 | }); 70 | $("#videoModal").on("shown.bs.modal", function (e) { 71 | $("#showVideo").attr( 72 | "src", 73 | $videoSrc + "?autoplay=1&modestbranding=1&showinfo=0" 74 | ); 75 | }); 76 | $("#videoModal").on("hide.bs.modal", function (e) { 77 | $("#showVideo").attr("src", $videoSrc); 78 | }); 79 | } 80 | videoPopupInit(); 81 | 82 | // table of content 83 | new ScrollMenu("#TableOfContents a", { 84 | duration: 400, 85 | activeOffset: 40, 86 | scrollOffset: 10, 87 | }); 88 | })(jQuery); 89 | -------------------------------------------------------------------------------- /source/partials/_footer.htm: -------------------------------------------------------------------------------- 1 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /source/partials/_header.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Wallet - Payday Loan Service Template 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 | @@include('navigation.htm') 34 | -------------------------------------------------------------------------------- /source/partials/navigation.htm: -------------------------------------------------------------------------------- 1 | 2 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /source/plugins/font-awesome/brands.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: "Font Awesome 5 Brands"; 3 | font-style: normal; 4 | font-weight: 400; 5 | font-display: block; 6 | src: url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-brands-400.eot); 7 | src: url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"), url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-brands-400.woff2) format("woff2"), url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-brands-400.woff) format("woff"), url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-brands-400.ttf) format("truetype"), url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-brands-400.svg#fontawesome) format("svg") 8 | } 9 | 10 | .fab { 11 | font-family: "Font Awesome 5 Brands"; 12 | font-weight: 400 13 | } -------------------------------------------------------------------------------- /source/plugins/font-awesome/solid.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: "Font Awesome 5 Free"; 3 | font-style: normal; 4 | font-weight: 900; 5 | font-display: block; 6 | src: url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-solid-900.eot); 7 | src: url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"), url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-solid-900.woff2) format("woff2"), url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-solid-900.woff) format("woff"), url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-solid-900.ttf) format("truetype"), url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-solid-900.svg#fontawesome) format("svg") 8 | } 9 | 10 | .fa, 11 | .fas { 12 | font-family: "Font Awesome 5 Free"; 13 | font-weight: 900 14 | } -------------------------------------------------------------------------------- /source/plugins/scrollmenu/scrollmenu.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var t=function(t,i){this.initDefaultOptions(),this.extendOptions(i),this.initMenuItems(t),this.getSectionsPositions(),this.bindWindowEvents(),this.bindMenuItems()};t.prototype.initDefaultOptions=function(){this.options={duration:400,activeOffset:40,scrollOffset:10,easingFunction:function(t,i,e,n){return(t/=n/2)<1?e/2*t*t*t+i:e/2*((t-=2)*t*t+2)+i}}},t.prototype.extendOptions=function(t){if(t)for(var i in this.options)this.options.hasOwnProperty(i)&&t[i]&&(this.options[i]=t[i])},t.prototype.initMenuItems=function(t){this.items=[],!1===Array.isArray(t)&&(t=[t]),t.forEach(function(t){var i=[].slice.call(document.querySelectorAll(t));this.items=this.items.concat(i)}.bind(this))},t.prototype.getTargetOffset=function(t){var i=t.getAttribute("href");return i.match(/^#?$/)?0:document.querySelector(i).offsetTop},t.prototype.bindWindowEvents=function(){window.addEventListener("scroll",this.onWindowUpdate.bind(this),!1),window.addEventListener("resize",this.onWindowUpdate.bind(this),!1)},t.prototype.bindMenuItems=function(){this.items.forEach(function(t){t.addEventListener("click",this.onMenuItemClick.bind(this),!1)}.bind(this))},t.prototype.onWindowUpdate=function(){this.getSectionsPositions(),this.updateActiveMenuItem()},t.prototype.getSectionsPositions=function(){this.positions=this.items.map(function(t){return this.getTargetOffset(t)-this.options.activeOffset}.bind(this))},t.prototype.updateActiveMenuItem=function(){if(this.getScrollOffset()+window.innerHeight===document.body.clientHeight)this.changeActiveMenuItem(this.items[this.items.length-1]);else{var t=this.items.filter(function(t,i){return this.positions[i]<=this.getScrollOffset()}.bind(this));t.length>0?this.changeActiveMenuItem(t[t.length-1]):this.resetActiveMenuItem()}},t.prototype.getScrollOffset=function(){return document.body.scrollTop||window.pageYOffset},t.prototype.resetActiveMenuItem=function(){this.items.forEach(function(t){t.classList.remove("active")})},t.prototype.changeActiveMenuItem=function(t){t.classList.contains("active")||(this.resetActiveMenuItem(),t.classList.add("active"))},t.prototype.onMenuItemClick=function(t){t.preventDefault();var i=this.items.indexOf(t.target);-1!==i&&(this.updateLocationHash(i),this.animatePageScroll(i))},t.prototype.updateLocationHash=function(t){var i=this.items[t].getAttribute("href"),e=location.pathname+location.search;i.match(/^#?$/)||(e+=i),history.pushState(i,document.title,e)},t.prototype.animatePageScroll=function(t){var i=-this.options.activeOffset+this.options.scrollOffset,e=this.positions[t]-i;this.scrollTo(e,this.options.duration)},t.prototype.scrollTo=function(t,i,e){if(!(i<=0)){var n=t-this.getScrollOffset();e=(e||0)+10,setTimeout(function(){var o=this.options.easingFunction(e,this.getScrollOffset(),n,i);window.scroll(0,o),i===e?this.updateActiveMenuItem():this.scrollTo(t,i,e)}.bind(this),10)}},window.ScrollMenu=t}(); -------------------------------------------------------------------------------- /source/plugins/slick/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/plugins/slick/ajax-loader.gif -------------------------------------------------------------------------------- /source/plugins/slick/fonts/slick.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/plugins/slick/fonts/slick.eot -------------------------------------------------------------------------------- /source/plugins/slick/fonts/slick.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by Fontastic.me 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /source/plugins/slick/fonts/slick.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/plugins/slick/fonts/slick.ttf -------------------------------------------------------------------------------- /source/plugins/slick/fonts/slick.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/source/plugins/slick/fonts/slick.woff -------------------------------------------------------------------------------- /source/plugins/slick/slick.css: -------------------------------------------------------------------------------- 1 | .slick-list,.slick-slider,.slick-track{position:relative;display:block}.slick-loading .slick-slide,.slick-loading .slick-track{visibility:hidden}.slick-slider{box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.slick-list{overflow:hidden;margin:0;padding:0}.slick-list:focus{outline:0}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-list,.slick-slider .slick-track{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.slick-track{top:0;left:0;margin-left:auto;margin-right:auto}.slick-track:after,.slick-track:before{display:table;content:''}.slick-track:after{clear:both}.slick-slide{display:none;float:left;height:100%;min-height:1px}[dir=rtl] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent}.slick-arrow.slick-hidden{display:none} -------------------------------------------------------------------------------- /source/scss/_buttons.scss: -------------------------------------------------------------------------------- 1 | /* Button style */ 2 | .btn { 3 | font-size: 15px; 4 | text-transform: capitalize; 5 | padding: 13px 28px; 6 | border-radius: 10px; 7 | position: relative; 8 | z-index: 1; 9 | font-weight: 500; 10 | transition: .2s ease; 11 | overflow: hidden; 12 | border: 0; 13 | 14 | &::after { 15 | position: absolute; 16 | content: ""; 17 | height: 15px; 18 | width: 15px; 19 | background-color: darken($primary-color, 12); 20 | top: 100%; 21 | left: 60%; 22 | z-index: -1; 23 | border-radius: 50%; 24 | transition: 0.3s; 25 | transform: rotate(25deg); 26 | } 27 | &.w-100, 28 | &.d-block, 29 | &.d-flex, 30 | &.effect-none { 31 | &::after { 32 | display: none; 33 | } 34 | } 35 | 36 | &-sm { 37 | padding: 13px 25px; 38 | } 39 | 40 | &:hover, 41 | &:active, 42 | &.active, 43 | &:focus, 44 | &.focus { 45 | outline: 0; 46 | box-shadow: none !important; 47 | text-decoration: none; 48 | &::after { 49 | top: -75px; 50 | left: -55px; 51 | height: 300px; 52 | width: 300px; 53 | transition: 0.4s; 54 | transform: rotate(0deg); 55 | } 56 | } 57 | } 58 | 59 | .btn-primary { 60 | background: $primary-color; 61 | color: $white; 62 | border-color: $primary-color; 63 | 64 | &:hover, 65 | &:active, 66 | &.active, 67 | &:focus, 68 | &.focus { 69 | background: $primary-color !important; 70 | color: $white; 71 | } 72 | &.w-100, 73 | &.d-block, 74 | &.d-flex, 75 | &.effect-none { 76 | &:hover { 77 | background-color: darken($primary-color, 10) !important; 78 | } 79 | } 80 | } 81 | 82 | .btn-outline-primary { 83 | background: lighten($primary-color, 40); 84 | color: darken($primary-color, 10); 85 | 86 | &::after { 87 | background-color: $primary-color; 88 | } 89 | 90 | &:hover, 91 | &:active, 92 | &.active, 93 | &:focus, 94 | &.focus { 95 | background: lighten($primary-color, 40); 96 | color: $white; 97 | } 98 | &.w-100, 99 | &.d-block, 100 | &.d-flex, 101 | &.effect-none { 102 | &:hover { 103 | background: lighten($primary-color, 40); 104 | } 105 | } 106 | } 107 | .nav-pills .nav-link:hover { 108 | color: darken($primary-color, 10) !important; 109 | } 110 | .nav-pills .nav-link.active, .nav-pills .show>.nav-link { 111 | background-color: $primary-color; 112 | } -------------------------------------------------------------------------------- /source/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | @mixin mobile-xs{ 2 | @media(max-width:400px){ 3 | @content; 4 | } 5 | } 6 | @mixin mobile{ 7 | @media(max-width:575px){ 8 | @content; 9 | } 10 | } 11 | @mixin tablet{ 12 | @media(max-width:767px){ 13 | @content; 14 | } 15 | } 16 | @mixin desktop{ 17 | @media(max-width:991px){ 18 | @content; 19 | } 20 | } 21 | @mixin desktop-lg{ 22 | @media(max-width:1200px){ 23 | @content; 24 | } 25 | } 26 | 27 | @mixin size($size){ 28 | width: $size; height: $size; 29 | } -------------------------------------------------------------------------------- /source/scss/_typography.scss: -------------------------------------------------------------------------------- 1 | /* typography */ 2 | body { 3 | line-height: 1.7; 4 | font-family: $primary-font; 5 | -webkit-font-smoothing: antialiased; 6 | font-size: 15px; 7 | font-weight: 400; 8 | color: $text-color; 9 | } 10 | 11 | p, .paragraph { 12 | font-size: 16px; 13 | } 14 | 15 | .lead { 16 | color: $text-color-light; 17 | } 18 | 19 | h1,h2,h3,h4,h5,h6, 20 | .h1,.h2,.h3,.h4,.h5,.h6 { 21 | color: $text-color-dark; 22 | font-family: $primary-font; 23 | font-weight: 700; 24 | } 25 | 26 | h1, .h1{ 27 | font-size: 44px; 28 | @include tablet { 29 | font-size: 38px; 30 | } 31 | } 32 | 33 | h2, .h2{ 34 | font-size: 36px; 35 | 36 | @include tablet { 37 | font-size: 30px; 38 | } 39 | } 40 | 41 | h3, .h3{ 42 | font-size: 24px; 43 | } 44 | 45 | h4, .h4{ 46 | font-size: 22px; 47 | } 48 | 49 | h5, .h5{ 50 | font-size: 18px; 51 | } 52 | 53 | h6, .h6{ 54 | font-size: 14px; 55 | } 56 | -------------------------------------------------------------------------------- /source/scss/bootstrap/_accordion.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base styles 3 | // 4 | 5 | .accordion-button { 6 | position: relative; 7 | display: flex; 8 | align-items: center; 9 | width: 100%; 10 | padding: $accordion-button-padding-y $accordion-button-padding-x; 11 | @include font-size($font-size-base); 12 | color: $accordion-button-color; 13 | text-align: left; // Reset button style 14 | background-color: $accordion-button-bg; 15 | border: 0; 16 | @include border-radius(0); 17 | overflow-anchor: none; 18 | @include transition($accordion-transition); 19 | 20 | &:not(.collapsed) { 21 | color: $accordion-button-active-color; 22 | background-color: $accordion-button-active-bg; 23 | box-shadow: inset 0 ($accordion-border-width * -1) 0 $accordion-border-color; 24 | 25 | &::after { 26 | background-image: escape-svg($accordion-button-active-icon); 27 | transform: $accordion-icon-transform; 28 | } 29 | } 30 | 31 | // Accordion icon 32 | &::after { 33 | flex-shrink: 0; 34 | width: $accordion-icon-width; 35 | height: $accordion-icon-width; 36 | margin-left: auto; 37 | content: ""; 38 | background-image: escape-svg($accordion-button-icon); 39 | background-repeat: no-repeat; 40 | background-size: $accordion-icon-width; 41 | @include transition($accordion-icon-transition); 42 | } 43 | 44 | &:hover { 45 | z-index: 2; 46 | } 47 | 48 | &:focus { 49 | z-index: 3; 50 | border-color: $accordion-button-focus-border-color; 51 | outline: 0; 52 | box-shadow: $accordion-button-focus-box-shadow; 53 | } 54 | } 55 | 56 | .accordion-header { 57 | margin-bottom: 0; 58 | } 59 | 60 | .accordion-item { 61 | background-color: $accordion-bg; 62 | border: $accordion-border-width solid $accordion-border-color; 63 | 64 | &:first-of-type { 65 | @include border-top-radius($accordion-border-radius); 66 | 67 | .accordion-button { 68 | @include border-top-radius($accordion-inner-border-radius); 69 | } 70 | } 71 | 72 | &:not(:first-of-type) { 73 | border-top: 0; 74 | } 75 | 76 | // Only set a border-radius on the last item if the accordion is collapsed 77 | &:last-of-type { 78 | @include border-bottom-radius($accordion-border-radius); 79 | 80 | .accordion-button { 81 | &.collapsed { 82 | @include border-bottom-radius($accordion-inner-border-radius); 83 | } 84 | } 85 | 86 | .accordion-collapse { 87 | @include border-bottom-radius($accordion-border-radius); 88 | } 89 | } 90 | } 91 | 92 | .accordion-body { 93 | padding: $accordion-body-padding-y $accordion-body-padding-x; 94 | } 95 | 96 | 97 | // Flush accordion items 98 | // 99 | // Remove borders and border-radius to keep accordion items edge-to-edge. 100 | 101 | .accordion-flush { 102 | .accordion-collapse { 103 | border-width: 0; 104 | } 105 | 106 | .accordion-item { 107 | border-right: 0; 108 | border-left: 0; 109 | @include border-radius(0); 110 | 111 | &:first-child { border-top: 0; } 112 | &:last-child { border-bottom: 0; } 113 | 114 | .accordion-button { 115 | @include border-radius(0); 116 | } 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /source/scss/bootstrap/_alert.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base styles 3 | // 4 | 5 | .alert { 6 | position: relative; 7 | padding: $alert-padding-y $alert-padding-x; 8 | margin-bottom: $alert-margin-bottom; 9 | border: $alert-border-width solid transparent; 10 | @include border-radius($alert-border-radius); 11 | } 12 | 13 | // Headings for larger alerts 14 | .alert-heading { 15 | // Specified to prevent conflicts of changing $headings-color 16 | color: inherit; 17 | } 18 | 19 | // Provide class for links that match alerts 20 | .alert-link { 21 | font-weight: $alert-link-font-weight; 22 | } 23 | 24 | 25 | // Dismissible alerts 26 | // 27 | // Expand the right padding and account for the close button's positioning. 28 | 29 | .alert-dismissible { 30 | padding-right: $alert-dismissible-padding-r; 31 | 32 | // Adjust close link position 33 | .btn-close { 34 | position: absolute; 35 | top: 0; 36 | right: 0; 37 | z-index: $stretched-link-z-index + 1; 38 | padding: $alert-padding-y * 1.25 $alert-padding-x; 39 | } 40 | } 41 | 42 | 43 | // scss-docs-start alert-modifiers 44 | // Generate contextual modifier classes for colorizing the alert. 45 | 46 | @each $state, $value in $theme-colors { 47 | $alert-background: shift-color($value, $alert-bg-scale); 48 | $alert-border: shift-color($value, $alert-border-scale); 49 | $alert-color: shift-color($value, $alert-color-scale); 50 | @if (contrast-ratio($alert-background, $alert-color) < $min-contrast-ratio) { 51 | $alert-color: mix($value, color-contrast($alert-background), abs($alert-color-scale)); 52 | } 53 | .alert-#{$state} { 54 | @include alert-variant($alert-background, $alert-border, $alert-color); 55 | } 56 | } 57 | // scss-docs-end alert-modifiers 58 | -------------------------------------------------------------------------------- /source/scss/bootstrap/_badge.scss: -------------------------------------------------------------------------------- 1 | // Base class 2 | // 3 | // Requires one of the contextual, color modifier classes for `color` and 4 | // `background-color`. 5 | 6 | .badge { 7 | display: inline-block; 8 | padding: $badge-padding-y $badge-padding-x; 9 | @include font-size($badge-font-size); 10 | font-weight: $badge-font-weight; 11 | line-height: 1; 12 | color: $badge-color; 13 | text-align: center; 14 | white-space: nowrap; 15 | vertical-align: baseline; 16 | @include border-radius($badge-border-radius); 17 | @include gradient-bg(); 18 | 19 | // Empty badges collapse automatically 20 | &:empty { 21 | display: none; 22 | } 23 | } 24 | 25 | // Quick fix for badges in buttons 26 | .btn .badge { 27 | position: relative; 28 | top: -1px; 29 | } 30 | -------------------------------------------------------------------------------- /source/scss/bootstrap/_breadcrumb.scss: -------------------------------------------------------------------------------- 1 | .breadcrumb { 2 | display: flex; 3 | flex-wrap: wrap; 4 | padding: $breadcrumb-padding-y $breadcrumb-padding-x; 5 | margin-bottom: $breadcrumb-margin-bottom; 6 | @include font-size($breadcrumb-font-size); 7 | list-style: none; 8 | background-color: $breadcrumb-bg; 9 | @include border-radius($breadcrumb-border-radius); 10 | } 11 | 12 | .breadcrumb-item { 13 | // The separator between breadcrumbs (by default, a forward-slash: "/") 14 | + .breadcrumb-item { 15 | padding-left: $breadcrumb-item-padding-x; 16 | 17 | &::before { 18 | float: left; // Suppress inline spacings and underlining of the separator 19 | padding-right: $breadcrumb-item-padding-x; 20 | color: $breadcrumb-divider-color; 21 | content: var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{"/* rtl:"} var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped)) #{"*/"}; 22 | } 23 | } 24 | 25 | &.active { 26 | color: $breadcrumb-active-color; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /source/scss/bootstrap/_button-group.scss: -------------------------------------------------------------------------------- 1 | // Make the div behave like a button 2 | .btn-group, 3 | .btn-group-vertical { 4 | position: relative; 5 | display: inline-flex; 6 | vertical-align: middle; // match .btn alignment given font-size hack above 7 | 8 | > .btn { 9 | position: relative; 10 | flex: 1 1 auto; 11 | } 12 | 13 | // Bring the hover, focused, and "active" buttons to the front to overlay 14 | // the borders properly 15 | > .btn-check:checked + .btn, 16 | > .btn-check:focus + .btn, 17 | > .btn:hover, 18 | > .btn:focus, 19 | > .btn:active, 20 | > .btn.active { 21 | z-index: 1; 22 | } 23 | } 24 | 25 | // Optional: Group multiple button groups together for a toolbar 26 | .btn-toolbar { 27 | display: flex; 28 | flex-wrap: wrap; 29 | justify-content: flex-start; 30 | 31 | .input-group { 32 | width: auto; 33 | } 34 | } 35 | 36 | .btn-group { 37 | // Prevent double borders when buttons are next to each other 38 | > .btn:not(:first-child), 39 | > .btn-group:not(:first-child) { 40 | margin-left: -$btn-border-width; 41 | } 42 | 43 | // Reset rounded corners 44 | > .btn:not(:last-child):not(.dropdown-toggle), 45 | > .btn-group:not(:last-child) > .btn { 46 | @include border-end-radius(0); 47 | } 48 | 49 | // The left radius should be 0 if the button is: 50 | // - the "third or more" child 51 | // - the second child and the previous element isn't `.btn-check` (making it the first child visually) 52 | // - part of a btn-group which isn't the first child 53 | > .btn:nth-child(n + 3), 54 | > :not(.btn-check) + .btn, 55 | > .btn-group:not(:first-child) > .btn { 56 | @include border-start-radius(0); 57 | } 58 | } 59 | 60 | // Sizing 61 | // 62 | // Remix the default button sizing classes into new ones for easier manipulation. 63 | 64 | .btn-group-sm > .btn { @extend .btn-sm; } 65 | .btn-group-lg > .btn { @extend .btn-lg; } 66 | 67 | 68 | // 69 | // Split button dropdowns 70 | // 71 | 72 | .dropdown-toggle-split { 73 | padding-right: $btn-padding-x * .75; 74 | padding-left: $btn-padding-x * .75; 75 | 76 | &::after, 77 | .dropup &::after, 78 | .dropend &::after { 79 | margin-left: 0; 80 | } 81 | 82 | .dropstart &::before { 83 | margin-right: 0; 84 | } 85 | } 86 | 87 | .btn-sm + .dropdown-toggle-split { 88 | padding-right: $btn-padding-x-sm * .75; 89 | padding-left: $btn-padding-x-sm * .75; 90 | } 91 | 92 | .btn-lg + .dropdown-toggle-split { 93 | padding-right: $btn-padding-x-lg * .75; 94 | padding-left: $btn-padding-x-lg * .75; 95 | } 96 | 97 | 98 | // The clickable button for toggling the menu 99 | // Set the same inset shadow as the :active state 100 | .btn-group.show .dropdown-toggle { 101 | @include box-shadow($btn-active-box-shadow); 102 | 103 | // Show no shadow for `.btn-link` since it has no other button styles. 104 | &.btn-link { 105 | @include box-shadow(none); 106 | } 107 | } 108 | 109 | 110 | // 111 | // Vertical button groups 112 | // 113 | 114 | .btn-group-vertical { 115 | flex-direction: column; 116 | align-items: flex-start; 117 | justify-content: center; 118 | 119 | > .btn, 120 | > .btn-group { 121 | width: 100%; 122 | } 123 | 124 | > .btn:not(:first-child), 125 | > .btn-group:not(:first-child) { 126 | margin-top: -$btn-border-width; 127 | } 128 | 129 | // Reset rounded corners 130 | > .btn:not(:last-child):not(.dropdown-toggle), 131 | > .btn-group:not(:last-child) > .btn { 132 | @include border-bottom-radius(0); 133 | } 134 | 135 | > .btn ~ .btn, 136 | > .btn-group:not(:first-child) > .btn { 137 | @include border-top-radius(0); 138 | } 139 | } 140 | -------------------------------------------------------------------------------- /source/scss/bootstrap/_buttons.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base styles 3 | // 4 | 5 | .btn { 6 | display: inline-block; 7 | font-family: $btn-font-family; 8 | font-weight: $btn-font-weight; 9 | line-height: $btn-line-height; 10 | color: $body-color; 11 | text-align: center; 12 | text-decoration: if($link-decoration == none, null, none); 13 | white-space: $btn-white-space; 14 | vertical-align: middle; 15 | cursor: if($enable-button-pointers, pointer, null); 16 | user-select: none; 17 | background-color: transparent; 18 | border: $btn-border-width solid transparent; 19 | @include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-border-radius); 20 | @include transition($btn-transition); 21 | 22 | &:hover { 23 | color: $body-color; 24 | text-decoration: if($link-hover-decoration == underline, none, null); 25 | } 26 | 27 | .btn-check:focus + &, 28 | &:focus { 29 | outline: 0; 30 | box-shadow: $btn-focus-box-shadow; 31 | } 32 | 33 | .btn-check:checked + &, 34 | .btn-check:active + &, 35 | &:active, 36 | &.active { 37 | @include box-shadow($btn-active-box-shadow); 38 | 39 | &:focus { 40 | @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow); 41 | } 42 | } 43 | 44 | &:disabled, 45 | &.disabled, 46 | fieldset:disabled & { 47 | pointer-events: none; 48 | opacity: $btn-disabled-opacity; 49 | @include box-shadow(none); 50 | } 51 | } 52 | 53 | 54 | // 55 | // Alternate buttons 56 | // 57 | 58 | // scss-docs-start btn-variant-loops 59 | @each $color, $value in $theme-colors { 60 | .btn-#{$color} { 61 | @include button-variant($value, $value); 62 | } 63 | } 64 | 65 | @each $color, $value in $theme-colors { 66 | .btn-outline-#{$color} { 67 | @include button-outline-variant($value); 68 | } 69 | } 70 | // scss-docs-end btn-variant-loops 71 | 72 | 73 | // 74 | // Link buttons 75 | // 76 | 77 | // Make a button look and behave like a link 78 | .btn-link { 79 | font-weight: $font-weight-normal; 80 | color: $btn-link-color; 81 | text-decoration: $link-decoration; 82 | 83 | &:hover { 84 | color: $btn-link-hover-color; 85 | text-decoration: $link-hover-decoration; 86 | } 87 | 88 | &:focus { 89 | text-decoration: $link-hover-decoration; 90 | } 91 | 92 | &:disabled, 93 | &.disabled { 94 | color: $btn-link-disabled-color; 95 | } 96 | 97 | // No need for an active state here 98 | } 99 | 100 | 101 | // 102 | // Button Sizes 103 | // 104 | 105 | .btn-lg { 106 | @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-border-radius-lg); 107 | } 108 | 109 | .btn-sm { 110 | @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-border-radius-sm); 111 | } 112 | -------------------------------------------------------------------------------- /source/scss/bootstrap/_card.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base styles 3 | // 4 | 5 | .card { 6 | position: relative; 7 | display: flex; 8 | flex-direction: column; 9 | min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106 10 | height: $card-height; 11 | word-wrap: break-word; 12 | background-color: $card-bg; 13 | background-clip: border-box; 14 | border: $card-border-width solid $card-border-color; 15 | @include border-radius($card-border-radius); 16 | 17 | > hr { 18 | margin-right: 0; 19 | margin-left: 0; 20 | } 21 | 22 | > .list-group { 23 | border-top: inherit; 24 | border-bottom: inherit; 25 | 26 | &:first-child { 27 | border-top-width: 0; 28 | @include border-top-radius($card-inner-border-radius); 29 | } 30 | 31 | &:last-child { 32 | border-bottom-width: 0; 33 | @include border-bottom-radius($card-inner-border-radius); 34 | } 35 | } 36 | 37 | // Due to specificity of the above selector (`.card > .list-group`), we must 38 | // use a child selector here to prevent double borders. 39 | > .card-header + .list-group, 40 | > .list-group + .card-footer { 41 | border-top: 0; 42 | } 43 | } 44 | 45 | .card-body { 46 | // Enable `flex-grow: 1` for decks and groups so that card blocks take up 47 | // as much space as possible, ensuring footers are aligned to the bottom. 48 | flex: 1 1 auto; 49 | padding: $card-spacer-y $card-spacer-x; 50 | color: $card-color; 51 | } 52 | 53 | .card-title { 54 | margin-bottom: $card-title-spacer-y; 55 | } 56 | 57 | .card-subtitle { 58 | margin-top: -$card-title-spacer-y * .5; 59 | margin-bottom: 0; 60 | } 61 | 62 | .card-text:last-child { 63 | margin-bottom: 0; 64 | } 65 | 66 | .card-link { 67 | &:hover { 68 | text-decoration: none; 69 | } 70 | 71 | + .card-link { 72 | margin-left: $card-spacer-x; 73 | } 74 | } 75 | 76 | // 77 | // Optional textual caps 78 | // 79 | 80 | .card-header { 81 | padding: $card-cap-padding-y $card-cap-padding-x; 82 | margin-bottom: 0; // Removes the default margin-bottom of 83 | color: $card-cap-color; 84 | background-color: $card-cap-bg; 85 | border-bottom: $card-border-width solid $card-border-color; 86 | 87 | &:first-child { 88 | @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0); 89 | } 90 | } 91 | 92 | .card-footer { 93 | padding: $card-cap-padding-y $card-cap-padding-x; 94 | color: $card-cap-color; 95 | background-color: $card-cap-bg; 96 | border-top: $card-border-width solid $card-border-color; 97 | 98 | &:last-child { 99 | @include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius); 100 | } 101 | } 102 | 103 | 104 | // 105 | // Header navs 106 | // 107 | 108 | .card-header-tabs { 109 | margin-right: -$card-cap-padding-x * .5; 110 | margin-bottom: -$card-cap-padding-y; 111 | margin-left: -$card-cap-padding-x * .5; 112 | border-bottom: 0; 113 | 114 | @if $nav-tabs-link-active-bg != $card-bg { 115 | .nav-link.active { 116 | background-color: $card-bg; 117 | border-bottom-color: $card-bg; 118 | } 119 | } 120 | } 121 | 122 | .card-header-pills { 123 | margin-right: -$card-cap-padding-x * .5; 124 | margin-left: -$card-cap-padding-x * .5; 125 | } 126 | 127 | // Card image 128 | .card-img-overlay { 129 | position: absolute; 130 | top: 0; 131 | right: 0; 132 | bottom: 0; 133 | left: 0; 134 | padding: $card-img-overlay-padding; 135 | @include border-radius($card-inner-border-radius); 136 | } 137 | 138 | .card-img, 139 | .card-img-top, 140 | .card-img-bottom { 141 | width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch 142 | } 143 | 144 | .card-img, 145 | .card-img-top { 146 | @include border-top-radius($card-inner-border-radius); 147 | } 148 | 149 | .card-img, 150 | .card-img-bottom { 151 | @include border-bottom-radius($card-inner-border-radius); 152 | } 153 | 154 | 155 | // 156 | // Card groups 157 | // 158 | 159 | .card-group { 160 | // The child selector allows nested `.card` within `.card-group` 161 | // to display properly. 162 | > .card { 163 | margin-bottom: $card-group-margin; 164 | } 165 | 166 | @include media-breakpoint-up(sm) { 167 | display: flex; 168 | flex-flow: row wrap; 169 | // The child selector allows nested `.card` within `.card-group` 170 | // to display properly. 171 | > .card { 172 | // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4 173 | flex: 1 0 0%; 174 | margin-bottom: 0; 175 | 176 | + .card { 177 | margin-left: 0; 178 | border-left: 0; 179 | } 180 | 181 | // Handle rounded corners 182 | @if $enable-rounded { 183 | &:not(:last-child) { 184 | @include border-end-radius(0); 185 | 186 | .card-img-top, 187 | .card-header { 188 | // stylelint-disable-next-line property-disallowed-list 189 | border-top-right-radius: 0; 190 | } 191 | .card-img-bottom, 192 | .card-footer { 193 | // stylelint-disable-next-line property-disallowed-list 194 | border-bottom-right-radius: 0; 195 | } 196 | } 197 | 198 | &:not(:first-child) { 199 | @include border-start-radius(0); 200 | 201 | .card-img-top, 202 | .card-header { 203 | // stylelint-disable-next-line property-disallowed-list 204 | border-top-left-radius: 0; 205 | } 206 | .card-img-bottom, 207 | .card-footer { 208 | // stylelint-disable-next-line property-disallowed-list 209 | border-bottom-left-radius: 0; 210 | } 211 | } 212 | } 213 | } 214 | } 215 | } 216 | -------------------------------------------------------------------------------- /source/scss/bootstrap/_close.scss: -------------------------------------------------------------------------------- 1 | // transparent background and border properties included for button version. 2 | // iOS requires the button element instead of an anchor tag. 3 | // If you want the anchor version, it requires `href="#"`. 4 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile 5 | 6 | .btn-close { 7 | box-sizing: content-box; 8 | width: $btn-close-width; 9 | height: $btn-close-height; 10 | padding: $btn-close-padding-y $btn-close-padding-x; 11 | color: $btn-close-color; 12 | background: transparent escape-svg($btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements 13 | border: 0; // for button elements 14 | @include border-radius(); 15 | opacity: $btn-close-opacity; 16 | 17 | // Override 's hover style 18 | &:hover { 19 | color: $btn-close-color; 20 | text-decoration: none; 21 | opacity: $btn-close-hover-opacity; 22 | } 23 | 24 | &:focus { 25 | outline: 0; 26 | opacity: $btn-close-focus-opacity; 27 | } 28 | 29 | &:disabled, 30 | &.disabled { 31 | pointer-events: none; 32 | user-select: none; 33 | opacity: $btn-close-disabled-opacity; 34 | } 35 | } 36 | 37 | .btn-close-white { 38 | filter: $btn-close-white-filter; 39 | } 40 | -------------------------------------------------------------------------------- /source/scss/bootstrap/_containers.scss: -------------------------------------------------------------------------------- 1 | // Container widths 2 | // 3 | // Set the container width, and override it for fixed navbars in media queries. 4 | 5 | @if $enable-grid-classes { 6 | // Single container class with breakpoint max-widths 7 | .container, 8 | // 100% wide container at all breakpoints 9 | .container-fluid { 10 | @include make-container(); 11 | } 12 | 13 | // Responsive containers that are 100% wide until a breakpoint 14 | @each $breakpoint, $container-max-width in $container-max-widths { 15 | .container-#{$breakpoint} { 16 | @extend .container-fluid; 17 | } 18 | 19 | @include media-breakpoint-up($breakpoint, $grid-breakpoints) { 20 | %responsive-container-#{$breakpoint} { 21 | max-width: $container-max-width; 22 | } 23 | 24 | // Extend each breakpoint which is smaller or equal to the current breakpoint 25 | $extend-breakpoint: true; 26 | 27 | @each $name, $width in $grid-breakpoints { 28 | @if ($extend-breakpoint) { 29 | .container#{breakpoint-infix($name, $grid-breakpoints)} { 30 | @extend %responsive-container-#{$breakpoint}; 31 | } 32 | 33 | // Once the current breakpoint is reached, stop extending 34 | @if ($breakpoint == $name) { 35 | $extend-breakpoint: false; 36 | } 37 | } 38 | } 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /source/scss/bootstrap/_dropdown.scss: -------------------------------------------------------------------------------- 1 | // The dropdown wrapper (`
`) 2 | .dropup, 3 | .dropend, 4 | .dropdown, 5 | .dropstart { 6 | position: relative; 7 | } 8 | 9 | .dropdown-toggle { 10 | white-space: nowrap; 11 | 12 | // Generate the caret automatically 13 | @include caret(); 14 | } 15 | 16 | // The dropdown menu 17 | .dropdown-menu { 18 | position: absolute; 19 | z-index: $zindex-dropdown; 20 | display: none; // none by default, but block on "open" of the menu 21 | min-width: $dropdown-min-width; 22 | padding: $dropdown-padding-y $dropdown-padding-x; 23 | margin: 0; // Override default margin of ul 24 | @include font-size($dropdown-font-size); 25 | color: $dropdown-color; 26 | text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) 27 | list-style: none; 28 | background-color: $dropdown-bg; 29 | background-clip: padding-box; 30 | border: $dropdown-border-width solid $dropdown-border-color; 31 | @include border-radius($dropdown-border-radius); 32 | @include box-shadow($dropdown-box-shadow); 33 | 34 | &[data-bs-popper] { 35 | top: 100%; 36 | left: 0; 37 | margin-top: $dropdown-spacer; 38 | } 39 | } 40 | 41 | // scss-docs-start responsive-breakpoints 42 | // We deliberately hardcode the `bs-` prefix because we check 43 | // this custom property in JS to determine Popper's positioning 44 | 45 | @each $breakpoint in map-keys($grid-breakpoints) { 46 | @include media-breakpoint-up($breakpoint) { 47 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints); 48 | 49 | .dropdown-menu#{$infix}-start { 50 | --bs-position: start; 51 | 52 | &[data-bs-popper] { 53 | right: auto; 54 | left: 0; 55 | } 56 | } 57 | 58 | .dropdown-menu#{$infix}-end { 59 | --bs-position: end; 60 | 61 | &[data-bs-popper] { 62 | right: 0; 63 | left: auto; 64 | } 65 | } 66 | } 67 | } 68 | // scss-docs-end responsive-breakpoints 69 | 70 | // Allow for dropdowns to go bottom up (aka, dropup-menu) 71 | // Just add .dropup after the standard .dropdown class and you're set. 72 | .dropup { 73 | .dropdown-menu[data-bs-popper] { 74 | top: auto; 75 | bottom: 100%; 76 | margin-top: 0; 77 | margin-bottom: $dropdown-spacer; 78 | } 79 | 80 | .dropdown-toggle { 81 | @include caret(up); 82 | } 83 | } 84 | 85 | .dropend { 86 | .dropdown-menu[data-bs-popper] { 87 | top: 0; 88 | right: auto; 89 | left: 100%; 90 | margin-top: 0; 91 | margin-left: $dropdown-spacer; 92 | } 93 | 94 | .dropdown-toggle { 95 | @include caret(end); 96 | &::after { 97 | vertical-align: 0; 98 | } 99 | } 100 | } 101 | 102 | .dropstart { 103 | .dropdown-menu[data-bs-popper] { 104 | top: 0; 105 | right: 100%; 106 | left: auto; 107 | margin-top: 0; 108 | margin-right: $dropdown-spacer; 109 | } 110 | 111 | .dropdown-toggle { 112 | @include caret(start); 113 | &::before { 114 | vertical-align: 0; 115 | } 116 | } 117 | } 118 | 119 | 120 | // Dividers (basically an `
`) within the dropdown 121 | .dropdown-divider { 122 | height: 0; 123 | margin: $dropdown-divider-margin-y 0; 124 | overflow: hidden; 125 | border-top: 1px solid $dropdown-divider-bg; 126 | } 127 | 128 | // Links, buttons, and more within the dropdown menu 129 | // 130 | // `
', 67 | nextArrow: 68 | '', 69 | }); 70 | 71 | // videoPopupInit 72 | function videoPopupInit() { 73 | var $videoSrc; 74 | $(".video-play-btn").click(function () { 75 | $videoSrc = $(this).data("src"); 76 | }); 77 | $("#videoModal").on("shown.bs.modal", function (e) { 78 | $("#showVideo").attr( 79 | "src", 80 | $videoSrc + "?autoplay=1&modestbranding=1&showinfo=0" 81 | ); 82 | }); 83 | $("#videoModal").on("hide.bs.modal", function (e) { 84 | $("#showVideo").attr("src", $videoSrc); 85 | }); 86 | } 87 | videoPopupInit(); 88 | 89 | // table of content 90 | new ScrollMenu("#TableOfContents a", { 91 | duration: 400, 92 | activeOffset: 40, 93 | scrollOffset: 10, 94 | }); 95 | })(jQuery); 96 | -------------------------------------------------------------------------------- /theme/plugins/font-awesome/brands.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: "Font Awesome 5 Brands"; 3 | font-style: normal; 4 | font-weight: 400; 5 | font-display: block; 6 | src: url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-brands-400.eot); 7 | src: url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"), url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-brands-400.woff2) format("woff2"), url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-brands-400.woff) format("woff"), url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-brands-400.ttf) format("truetype"), url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-brands-400.svg#fontawesome) format("svg") 8 | } 9 | 10 | .fab { 11 | font-family: "Font Awesome 5 Brands"; 12 | font-weight: 400 13 | } -------------------------------------------------------------------------------- /theme/plugins/font-awesome/solid.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: "Font Awesome 5 Free"; 3 | font-style: normal; 4 | font-weight: 900; 5 | font-display: block; 6 | src: url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-solid-900.eot); 7 | src: url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"), url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-solid-900.woff2) format("woff2"), url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-solid-900.woff) format("woff"), url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-solid-900.ttf) format("truetype"), url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-solid-900.svg#fontawesome) format("svg") 8 | } 9 | 10 | .fa, 11 | .fas { 12 | font-family: "Font Awesome 5 Free"; 13 | font-weight: 900 14 | } -------------------------------------------------------------------------------- /theme/plugins/scrollmenu/scrollmenu.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var t=function(t,i){this.initDefaultOptions(),this.extendOptions(i),this.initMenuItems(t),this.getSectionsPositions(),this.bindWindowEvents(),this.bindMenuItems()};t.prototype.initDefaultOptions=function(){this.options={duration:400,activeOffset:40,scrollOffset:10,easingFunction:function(t,i,e,n){return(t/=n/2)<1?e/2*t*t*t+i:e/2*((t-=2)*t*t+2)+i}}},t.prototype.extendOptions=function(t){if(t)for(var i in this.options)this.options.hasOwnProperty(i)&&t[i]&&(this.options[i]=t[i])},t.prototype.initMenuItems=function(t){this.items=[],!1===Array.isArray(t)&&(t=[t]),t.forEach(function(t){var i=[].slice.call(document.querySelectorAll(t));this.items=this.items.concat(i)}.bind(this))},t.prototype.getTargetOffset=function(t){var i=t.getAttribute("href");return i.match(/^#?$/)?0:document.querySelector(i).offsetTop},t.prototype.bindWindowEvents=function(){window.addEventListener("scroll",this.onWindowUpdate.bind(this),!1),window.addEventListener("resize",this.onWindowUpdate.bind(this),!1)},t.prototype.bindMenuItems=function(){this.items.forEach(function(t){t.addEventListener("click",this.onMenuItemClick.bind(this),!1)}.bind(this))},t.prototype.onWindowUpdate=function(){this.getSectionsPositions(),this.updateActiveMenuItem()},t.prototype.getSectionsPositions=function(){this.positions=this.items.map(function(t){return this.getTargetOffset(t)-this.options.activeOffset}.bind(this))},t.prototype.updateActiveMenuItem=function(){if(this.getScrollOffset()+window.innerHeight===document.body.clientHeight)this.changeActiveMenuItem(this.items[this.items.length-1]);else{var t=this.items.filter(function(t,i){return this.positions[i]<=this.getScrollOffset()}.bind(this));t.length>0?this.changeActiveMenuItem(t[t.length-1]):this.resetActiveMenuItem()}},t.prototype.getScrollOffset=function(){return document.body.scrollTop||window.pageYOffset},t.prototype.resetActiveMenuItem=function(){this.items.forEach(function(t){t.classList.remove("active")})},t.prototype.changeActiveMenuItem=function(t){t.classList.contains("active")||(this.resetActiveMenuItem(),t.classList.add("active"))},t.prototype.onMenuItemClick=function(t){t.preventDefault();var i=this.items.indexOf(t.target);-1!==i&&(this.updateLocationHash(i),this.animatePageScroll(i))},t.prototype.updateLocationHash=function(t){var i=this.items[t].getAttribute("href"),e=location.pathname+location.search;i.match(/^#?$/)||(e+=i),history.pushState(i,document.title,e)},t.prototype.animatePageScroll=function(t){var i=-this.options.activeOffset+this.options.scrollOffset,e=this.positions[t]-i;this.scrollTo(e,this.options.duration)},t.prototype.scrollTo=function(t,i,e){if(!(i<=0)){var n=t-this.getScrollOffset();e=(e||0)+10,setTimeout(function(){var o=this.options.easingFunction(e,this.getScrollOffset(),n,i);window.scroll(0,o),i===e?this.updateActiveMenuItem():this.scrollTo(t,i,e)}.bind(this),10)}},window.ScrollMenu=t}(); -------------------------------------------------------------------------------- /theme/plugins/slick/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/theme/plugins/slick/ajax-loader.gif -------------------------------------------------------------------------------- /theme/plugins/slick/fonts/slick.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/theme/plugins/slick/fonts/slick.eot -------------------------------------------------------------------------------- /theme/plugins/slick/fonts/slick.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by Fontastic.me 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /theme/plugins/slick/fonts/slick.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/theme/plugins/slick/fonts/slick.ttf -------------------------------------------------------------------------------- /theme/plugins/slick/fonts/slick.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themefisher/wallet-bootstrap/1df65266e3f4edc7eeac44198d5d36f31af30f05/theme/plugins/slick/fonts/slick.woff -------------------------------------------------------------------------------- /theme/plugins/slick/slick.css: -------------------------------------------------------------------------------- 1 | .slick-list,.slick-slider,.slick-track{position:relative;display:block}.slick-loading .slick-slide,.slick-loading .slick-track{visibility:hidden}.slick-slider{box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.slick-list{overflow:hidden;margin:0;padding:0}.slick-list:focus{outline:0}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-list,.slick-slider .slick-track{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.slick-track{top:0;left:0;margin-left:auto;margin-right:auto}.slick-track:after,.slick-track:before{display:table;content:''}.slick-track:after{clear:both}.slick-slide{display:none;float:left;height:100%;min-height:1px}[dir=rtl] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent}.slick-arrow.slick-hidden{display:none} --------------------------------------------------------------------------------