├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md ├── License.pdf ├── README.md ├── Useful_Resources.pdf ├── buttons.html ├── css ├── addons │ ├── datatables-select.css │ ├── datatables-select.min.css │ ├── datatables.css │ ├── datatables.min.css │ ├── directives.css │ ├── directives.min.css │ ├── flag.css │ ├── flag.min.css │ ├── rating.css │ ├── rating.min.css │ ├── zmd.hierarchical-display.css │ └── zmd.hierarchical-display.min.css ├── bootstrap.css ├── bootstrap.min.css ├── mdb.css ├── mdb.lite.css ├── mdb.lite.min.css ├── mdb.min.css ├── modules │ ├── animations-extended.css │ └── animations-extended.min.css ├── style.css └── style.min.css ├── font └── roboto │ ├── Roboto-Bold.eot │ ├── Roboto-Bold.ttf │ ├── Roboto-Bold.woff │ ├── Roboto-Bold.woff2 │ ├── Roboto-Light.eot │ ├── Roboto-Light.ttf │ ├── Roboto-Light.woff │ ├── Roboto-Light.woff2 │ ├── Roboto-Medium.eot │ ├── Roboto-Medium.ttf │ ├── Roboto-Medium.woff │ ├── Roboto-Medium.woff2 │ ├── Roboto-Regular.eot │ ├── Roboto-Regular.ttf │ ├── Roboto-Regular.woff │ ├── Roboto-Regular.woff2 │ ├── Roboto-Thin.eot │ ├── Roboto-Thin.ttf │ ├── Roboto-Thin.woff │ └── Roboto-Thin.woff2 ├── form.html ├── img ├── flags.png ├── lightbox │ ├── default-skin.png │ ├── default-skin.svg │ └── preloader.gif ├── overlays │ ├── 01.png │ ├── 02.png │ ├── 03.png │ ├── 04.png │ ├── 05.png │ ├── 06.png │ ├── 07.png │ ├── 08.png │ └── 09.png ├── sample.jpg └── svg │ ├── arrow_left.svg │ ├── arrow_right.svg │ └── flags.png ├── js ├── addons │ ├── datatables-select.js │ ├── datatables-select.min.js │ ├── datatables.js │ ├── datatables.min.js │ ├── imagesloaded.pkgd.min.js │ ├── jquery.zmd.hierarchical-display.js │ ├── jquery.zmd.hierarchical-display.min.js │ ├── masonry.pkgd.min.js │ ├── progressBar.js │ ├── progressBar.min.js │ ├── rating.js │ └── rating.min.js ├── bootstrap.js ├── bootstrap.min.js ├── jquery-3.4.1.min.js ├── mdb.js ├── mdb.min.js ├── modules │ ├── bs-custom-file-input.js │ ├── chart.js │ ├── default-file-input.js │ ├── enhanced-modals.js │ ├── forms-free.js │ ├── jquery.easing.js │ ├── scrolling-navbar.js │ ├── treeview.js │ ├── velocity.js │ ├── velocity.min.js │ ├── waves.js │ └── wow.js └── popper.min.js └── scss ├── _custom-skin.scss ├── _custom-styles.scss ├── _custom-variables.scss ├── addons ├── _datatables-select.scss ├── _datatables.scss ├── _directives.scss ├── _flags.scss ├── _hierarchical-display.scss └── _rating.scss ├── core ├── _colors.scss ├── _global.scss ├── _helpers.scss ├── _masks.scss ├── _mixins.scss ├── _typography.scss ├── _variables.scss ├── _waves.scss └── bootstrap │ ├── _functions.scss │ ├── _rfs.scss │ └── _variables.scss ├── free ├── _animations-basic.scss ├── _badges.scss ├── _buttons.scss ├── _cards.scss ├── _carousels.scss ├── _depreciated.scss ├── _dropdowns.scss ├── _footers.scss ├── _forms.scss ├── _input-group.scss ├── _list-group.scss ├── _loader.scss ├── _modals.scss ├── _msc.scss ├── _navbars.scss ├── _pagination.scss ├── _steppers.scss ├── _switch.scss ├── _tables.scss ├── _treeview.scss └── modules │ └── animations-extended │ ├── _module.scss │ └── animations-extended.scss ├── mdb.lite.scss ├── mdb.scss └── style.scss /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at contact@mdbootstrap.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing Guide 2 | 3 | We value your and our time, we created this Guidline to avoid unnecessary diffuculties with pull requests and contribution process. 4 | 5 | Please read the text below **before starting your improvements** in order to help us make cooperation and reviewing experience as pleasent and effective as possible. 6 | 7 | Not following these rules and procedures may entail closing issues or rejection of your work even if it's theoreticly adequate. 8 | 9 | ## Issues and Support 10 | 11 | 1. **Use Support Forum** - don't use GitHub Issues for personal questions and support requests. We're maintaining a [dedicated Support Forum](https://mdbootstrap.com/support/) for this purpose. This is also a go-to place for every suggestion, opinion, bugs, and issue reports - if you'd like to receive help as soon as possible. Reports posted on Support Forum are **prior to GitHub issues**. 12 | 13 | 2. **Check available resources** - always check current issues before opening your own. Also check [Support Forum](https://mdbootstrap.com/support/) and [Documentation](https://mdbootstrap.com/md-bootstrap-sitemap/) - most likely you'll find your answer there. Unchecked issues and duplicates will be closed immediatelly. 14 | 15 | 3. **Examine issue source** - MDB code is depending on other projects, mainly [Bootstrap](https://github.com/twbs/bootstrap). Don't open issues concerning sources we cannot influence. For example - lack of flexbox support for older IE versions is determined by Bootstrap not MDB. 16 | 17 | 4. **Check updates** - We resolve most of reported bugs and issues with every new release. Check if your MDB template version is the latest. If you want to keep track on updates and bug fixes, the best way is joining our newsletter [here](https://mdbootstrap.com/newsletter/). 18 | 19 | 5. **Be specific** - describe your case **in English**, clearly and with details. Attach code examples, screenshots, links and any other relevant resources. 20 | 21 | ## Contributing Standards 22 | All improvements, fixes and new elements are welcome and we're deeply grateful for every help attempt. Although we recommend thinking twice before starting. We don't want to waste your time and some changes may be rejected not becouse of their quality but simply as a result of different style, organization or prefifined procedures we maintain. 23 | That's why we came up with standards below, following them will maximize the chance of your contribution beeing included in project. 24 | 25 | 1. Make sure that your idea doesn't contradict the concepts of [Bootstrap](https://getbootstrap.com/), [Material Design](https://material.io/guidelines/) and [jQuery](https://jquery.com/) 26 | 2. Verify if it fits the rest of MDB envoirement and style 27 | 3. Write and form your code accordingly to [those rules](http://codeguide.co/) 28 | 4. Use Gulp to minify your code after finishing 29 | 5. Create clear titles and detailed descriptions for your Pull Requests 30 | 31 | ## Questions 32 | If you're not sure about your ideas or you'd like to talk about them with our team before starting, write to: contact@mdbootstrap.com, and for every query regarding technical consultance open your case on [Support Forum](https://mdbootstrap.com/support/) 33 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### Expected behavior 2 | 3 | ### Actual behavior 4 | 5 | ### Your working environment and MDB template version information 6 | 7 | ### Resources (screenshots, code snippets etc.) 8 | 9 | For every **question of technical nature**, in order to get the most detailed answer as soon as possible, ask on our dedicated [Support Forum](https://mdbootstrap.com/support/) 10 | -------------------------------------------------------------------------------- /License.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/License.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Material Design for Bootstrap](https://mdbootstrap.com/wp-content/uploads/2018/03/landing-page.jpg)](https://mdbootstrap.com/freebies/jquery/landing-page/) 2 | 3 | # Bootstrap 4 & Material Design - Landing Page Template 4 | 5 | Free, responsive Landing Page template containing stunning, full or half-page Intro, Call to Action Buttons, Forms, and many other crucial components. Built with the newest Bootstrap 4 and Material Design. MIT license – free for personal and commercial use. 6 | 7 | ________ 8 | 9 | # Live Previews: 10 | ## https://mdbootstrap.com/freebies/jquery/landing-page/ 11 | 12 | # Most important features: 13 | 14 | 1. Fully responsive 15 | 16 | 2. Plenty of useful components 17 | 18 | 3. Easy installation 19 | 20 | 4. Easy to use and customize 21 | 22 | 5. Active community 23 | 24 | 6. Dedicated support forum 25 | 26 | 7. Detailed documentation 27 | 28 | # Demo: 29 | **Main demo**: https://mdbootstrap.com/previews/free-templates/landing-page/form.html 30 | 31 | # MDB Quick Start (5 minutes): 32 | **Written Tutorial**: https://mdbootstrap.com/education/bootstrap/quick-start/ 33 | 34 | **Video Tutorial**:https://www.youtube.com/watch?v=cXTThxoywNQ&t=9s 35 | 36 | **npm installation** 37 | You can install MDBootstrap using NPM: 38 | - `npm install mdbootstrap` 39 | 40 | # Additional tutorials: 41 | 42 | **MDB - Bootstrap tutorial**: https://mdbootstrap.com/education/bootstrap/ 43 | 44 | **MDB - Wordpress tutorial**: https://mdbootstrap.com/education/wordpress/ 45 | 46 | # Documentation: 47 | 48 | **Huge, detailed documentation avilable online on**: https://mdbootstrap.com/ 49 | 50 | # PRO version: 51 | 52 | **MDB Landing Page Template Pro (jQuery version)**: https://mdbootstrap.com/products/jquery-landing-page/ 53 | 54 | # Highlights: 55 | **Bootstrap 4** 56 | Thanks to MDB you can take advantage of all feature of newest Bootstrap 4. 57 | 58 | **Material Design for Bootstrap** 59 | This template is built with MDBootstrap - powerful and free UI Kit, containing 400+ material UI elements, 600+ material icons, 74 CSS animations, SASS files, templates, tutorials and many more. 60 | 61 | **Free for personal and commercial use** 62 | Our license is user-friendly. Feel free to use MDB for both private as well as commercial projects. 63 | 64 | **10 fresh ready to use templates** 65 | We are going further and giving to you ready to use templates! Use them as you like, as an inspiration, prototype or final product for your customers. 66 | 67 | **Fully responsive** 68 | It doesn't matter whether your project will be displayed on desktop, laptop, tablet or mobile phone. MDB looks great on each screen. 69 | 70 | **Technical support** 71 | We really care about reliability. If you have any questions - do not hesitate to contact us. 72 | 73 | **Active community** 74 | Our society grows day by day. Visit **our forum** and check how it is to be a part of our family. 75 | 76 | **Flex box** 77 | MDB fully suppports Flex Box. You can forget about alignment issues. 78 | 79 | **Latest jQuery** 80 | MDB is integrated with newest jQuery, therefore you can use all the newest features which comes along with it. 81 | 82 | **Detailed documentation:** 83 | We give you detailed documentation at your disposal. It will help you to implement your ideas easily. 84 | 85 | A big **thank you to all our users** who are working with us to improve the software. We wouldn't be where we are without you. 86 | 87 | # Useful Links: 88 | 89 | Getting started: https://mdbootstrap.com/docs/jquery/getting-started/download/ 90 | 91 | 5 min quick start: https://mdbootstrap.com/education/bootstrap/quick-start/ 92 | 93 | Material Design + Bootstrap Tutorial: https://mdbootstrap.com/education/bootstrap/ 94 | 95 | Material Design + WordPress Tutorial: https://mdbootstrap.com/education/wordpress/ 96 | 97 | Other Freebies: https://mdbootstrap.com/freebies/ 98 | 99 | Premium Templates: https://mdbootstrap.com/templates/ 100 | 101 | 102 | # Social Media: 103 | 104 | Twitter: https://twitter.com/MDBootstrap 105 | 106 | Facebook: https://www.facebook.com/mdbootstrap 107 | 108 | Pinterest: https://pl.pinterest.com/mdbootstrap 109 | 110 | Google+: https://plus.google.com/u/0/b/107863090883699620484/+Mdbootstrap/posts 111 | 112 | Dribbble: https://dribbble.com/mdbootstrap 113 | 114 | LinkedIn: https://www.linkedin.com/company/material-design-for-bootstrap 115 | 116 | # Visit our website: https://mdbootstrap.com/ 117 | -------------------------------------------------------------------------------- /Useful_Resources.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/Useful_Resources.pdf -------------------------------------------------------------------------------- /css/addons/datatables-select.css: -------------------------------------------------------------------------------- 1 | /* 2 | * MDBootstrap integration with Datatables 3 | * Learn more: https://mdbootstrap.com/docs/jquery/tables/datatables/ 4 | * About MDBootstrap: https://mdbootstrap.com/ 5 | * 6 | * This combined file was created taking that code from this webstie: 7 | * https://cdn.datatables.net/select/1.2.7/css/select.dataTables.min.css 8 | * 9 | * 10 | * To rebuild or modify this file with the latest versions of the included 11 | * software please visit: 12 | * https://datatables.net/download/#bs4/dt-1.10.18 13 | * 14 | * Included libraries: 15 | * DataTables 1.10.18 16 | */ 17 | table.dataTable tbody > tr.selected, 18 | table.dataTable tbody > tr > .selected { 19 | background-color: #B0BED9; } 20 | 21 | table.dataTable.stripe tbody > tr.odd.selected, 22 | table.dataTable.stripe tbody > tr.odd > .selected, table.dataTable.display tbody > tr.odd.selected, 23 | table.dataTable.display tbody > tr.odd > .selected { 24 | background-color: #acbad4; } 25 | 26 | table.dataTable.hover tbody > tr.selected:hover, 27 | table.dataTable.hover tbody > tr > .selected:hover, table.dataTable.display tbody > tr.selected:hover, 28 | table.dataTable.display tbody > tr > .selected:hover { 29 | background-color: #aab7d1; } 30 | 31 | table.dataTable.order-column tbody > tr.selected > .sorting_1, table.dataTable.order-column tbody > tr.selected > .sorting_2, table.dataTable.order-column tbody > tr.selected > .sorting_3, table.dataTable.display tbody > tr.selected > .sorting_1, table.dataTable.display tbody > tr.selected > .sorting_2, table.dataTable.display tbody > tr.selected > .sorting_3 { 32 | background-color: #acbad5; } 33 | 34 | table.dataTable.order-column tbody > tr > .selected, table.dataTable.display tbody > tr > .selected { 35 | background-color: #acbad5; } 36 | 37 | table.dataTable.display tbody > tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_1 { 38 | background-color: #a6b4cd; } 39 | 40 | table.dataTable.display tbody > tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_2 { 41 | background-color: #a8b5cf; } 42 | 43 | table.dataTable.display tbody > tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_3 { 44 | background-color: #a9b7d1; } 45 | 46 | table.dataTable.display tbody > tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_1 { 47 | background-color: #acbad5; } 48 | 49 | table.dataTable.display tbody > tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_2 { 50 | background-color: #aebcd6; } 51 | 52 | table.dataTable.display tbody > tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_3 { 53 | background-color: #afbdd8; } 54 | 55 | table.dataTable.display tbody > tr.odd > .selected, table.dataTable.order-column.stripe tbody > tr.odd > .selected { 56 | background-color: #a6b4cd; } 57 | 58 | table.dataTable.display tbody > tr.even > .selected, table.dataTable.order-column.stripe tbody > tr.even > .selected { 59 | background-color: #acbad5; } 60 | 61 | table.dataTable.display tbody > tr.selected:hover > .sorting_1, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_1 { 62 | background-color: #a2aec7; } 63 | 64 | table.dataTable.display tbody > tr.selected:hover > .sorting_2, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_2 { 65 | background-color: #a3b0c9; } 66 | 67 | table.dataTable.display tbody > tr.selected:hover > .sorting_3, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_3 { 68 | background-color: #a5b2cb; } 69 | 70 | table.dataTable.display tbody > tr:hover > .selected, table.dataTable.display tbody > tr > .selected:hover, table.dataTable.order-column.hover tbody > tr:hover > .selected, table.dataTable.order-column.hover tbody > tr > .selected:hover { 71 | background-color: #a2aec7; } 72 | 73 | table.dataTable tbody td.select-checkbox, table.dataTable tbody th.select-checkbox { 74 | position: relative; } 75 | 76 | table.dataTable tbody td.select-checkbox:before, table.dataTable tbody td.select-checkbox:after, table.dataTable tbody th.select-checkbox:before, table.dataTable tbody th.select-checkbox:after { 77 | display: block; 78 | position: absolute; 79 | top: 1.2em; 80 | left: 50%; 81 | width: 12px; 82 | height: 12px; 83 | -webkit-box-sizing: border-box; 84 | box-sizing: border-box; } 85 | 86 | table.dataTable tbody td.select-checkbox:before, 87 | table.dataTable tbody th.select-checkbox:before { 88 | content: ' '; 89 | margin-top: 4px; 90 | margin-left: -6px; 91 | border: 1px solid black; 92 | -webkit-border-radius: 3px; 93 | border-radius: 3px; } 94 | 95 | table.dataTable tr.selected td.select-checkbox:after, 96 | table.dataTable tr.selected th.select-checkbox:after { 97 | content: '\2714'; 98 | margin-top: 0px; 99 | margin-left: -4px; 100 | text-align: center; 101 | text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9; } 102 | 103 | div.dataTables_wrapper span.select-info, div.dataTables_wrapper span.select-item { 104 | margin-left: 0.5em; } 105 | 106 | @media screen and (max-width: 640px) { 107 | div.dataTables_wrapper span.select-info, div.dataTables_wrapper span.select-item { 108 | margin-left: 0; 109 | display: block; } } 110 | -------------------------------------------------------------------------------- /css/addons/datatables-select.min.css: -------------------------------------------------------------------------------- 1 | table.dataTable tbody>tr.selected,table.dataTable tbody>tr>.selected{background-color:#B0BED9}table.dataTable.display tbody>tr.odd.selected,table.dataTable.display tbody>tr.odd>.selected,table.dataTable.stripe tbody>tr.odd.selected,table.dataTable.stripe tbody>tr.odd>.selected{background-color:#acbad4}table.dataTable.display tbody>tr.selected:hover,table.dataTable.display tbody>tr>.selected:hover,table.dataTable.hover tbody>tr.selected:hover,table.dataTable.hover tbody>tr>.selected:hover{background-color:#aab7d1}table.dataTable.display tbody>tr.selected>.sorting_1,table.dataTable.display tbody>tr.selected>.sorting_2,table.dataTable.display tbody>tr.selected>.sorting_3,table.dataTable.display tbody>tr>.selected,table.dataTable.order-column tbody>tr.selected>.sorting_1,table.dataTable.order-column tbody>tr.selected>.sorting_2,table.dataTable.order-column tbody>tr.selected>.sorting_3,table.dataTable.order-column tbody>tr>.selected{background-color:#acbad5}table.dataTable.display tbody>tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody>tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody>tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody>tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody>tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody>tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody>tr.odd>.selected,table.dataTable.order-column.stripe tbody>tr.odd>.selected{background-color:#a6b4cd}table.dataTable.display tbody>tr.even>.selected,table.dataTable.order-column.stripe tbody>tr.even>.selected{background-color:#acbad5}table.dataTable.display tbody>tr.selected:hover>.sorting_1,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody>tr.selected:hover>.sorting_2,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody>tr.selected:hover>.sorting_3,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_3{background-color:#a5b2cb}table.dataTable.display tbody>tr:hover>.selected,table.dataTable.display tbody>tr>.selected:hover,table.dataTable.order-column.hover tbody>tr:hover>.selected,table.dataTable.order-column.hover tbody>tr>.selected:hover{background-color:#a2aec7}table.dataTable tbody td.select-checkbox,table.dataTable tbody th.select-checkbox{position:relative}table.dataTable tbody td.select-checkbox:after,table.dataTable tbody td.select-checkbox:before,table.dataTable tbody th.select-checkbox:after,table.dataTable tbody th.select-checkbox:before{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;-webkit-box-sizing:border-box;box-sizing:border-box}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody th.select-checkbox:before{content:' ';margin-top:4px;margin-left:-6px;border:1px solid #000;-webkit-border-radius:3px;border-radius:3px}table.dataTable tr.selected td.select-checkbox:after,table.dataTable tr.selected th.select-checkbox:after{content:'\2714';margin-top:0;margin-left:-4px;text-align:center;text-shadow:1px 1px #B0BED9,-1px -1px #B0BED9,1px -1px #B0BED9,-1px 1px #B0BED9}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:.5em}@media screen and (max-width:640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}} -------------------------------------------------------------------------------- /css/addons/datatables.css: -------------------------------------------------------------------------------- 1 | /* 2 | * MDBootstrap integration with Datatables 3 | * Learn more: https://mdbootstrap.com/docs/jquery/tables/datatables/ 4 | * About MDBootstrap: https://mdbootstrap.com/ 5 | * 6 | * This combined file was created by the DataTables downloader builder: 7 | * https://datatables.net/download 8 | * 9 | * To rebuild or modify this file with the latest versions of the included 10 | * software please visit: 11 | * https://datatables.net/download/#bs4/dt-1.10.18 12 | * 13 | * Included libraries: 14 | * DataTables 1.10.18 15 | */ 16 | table.dataTable thead { 17 | cursor: pointer; } 18 | table.dataTable thead > tr > th:active, 19 | table.dataTable thead > tr > td:active { 20 | outline: none; } 21 | 22 | div.dataTables_wrapper div.dataTables_length.d-flex.flex-row label { 23 | margin-top: 1.2rem; 24 | margin-right: 1rem; } 25 | 26 | div.dataTables_wrapper div.dataTables_length.d-flex.flex-row .select-wrapper.mdb-select span, 27 | div.dataTables_wrapper div.dataTables_length.d-flex.flex-row .select-wrapper.mdb-select .select-dropdown { 28 | margin-top: 1rem; } 29 | 30 | div.dataTables_wrapper div.dataTables_length label, div.dataTables_wrapper div.dataTables_filter label { 31 | text-align: left; 32 | font-weight: normal; 33 | padding-top: .5rem; 34 | padding-bottom: .5rem; } 35 | 36 | div.dataTables_wrapper div.dataTables_length select, 37 | div.dataTables_wrapper div.dataTables_length input { 38 | width: auto; } 39 | 40 | div.dataTables_wrapper div.dataTables_filter { 41 | text-align: right; } 42 | div.dataTables_wrapper div.dataTables_filter select, 43 | div.dataTables_wrapper div.dataTables_filter input { 44 | width: auto; } 45 | div.dataTables_wrapper div.dataTables_filter input { 46 | margin-left: .5rem; 47 | display: inline-block; } 48 | 49 | div.dataTables_wrapper div.dataTables_info, div.dataTables_wrapper div.dataTables_paginate { 50 | font-weight: normal; 51 | padding-top: 1rem; 52 | padding-bottom: 1rem; } 53 | 54 | div.dataTables_wrapper div.dataTables_paginate { 55 | text-align: right; 56 | margin: 0; } 57 | div.dataTables_wrapper div.dataTables_paginate ul.pagination { 58 | -webkit-box-pack: end; 59 | -webkit-justify-content: flex-end; 60 | -ms-flex-pack: end; 61 | justify-content: flex-end; } 62 | div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-item.active .page-link:focus { 63 | background-color: #4285f4; } 64 | div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-item .page-link:focus { 65 | -webkit-box-shadow: none; 66 | box-shadow: none; } 67 | 68 | @media (max-width: 767px) { 69 | div.dataTables_wrapper div .dataTables_length, 70 | div.dataTables_wrapper div .dataTables_filter, 71 | div.dataTables_wrapper div .dataTables_info, 72 | div.dataTables_wrapper div .dataTables_paginate ul.pagination { 73 | text-align: center; 74 | -webkit-box-pack: center; 75 | -webkit-justify-content: center; 76 | -ms-flex-pack: center; 77 | justify-content: center; } } 78 | 79 | .bs-select select { 80 | display: inline-block !important; } 81 | 82 | table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, 83 | table.dataTable thead > tr > td.sorting_asc, 84 | table.dataTable thead > tr > td.sorting_desc, 85 | table.dataTable thead > tr > td.sorting { 86 | padding-right: 30px; } 87 | 88 | table.dataTable thead > tr > th:active, 89 | table.dataTable thead > tr > td:active { 90 | outline: none; } 91 | 92 | table.dataTable thead .sorting, 93 | table.dataTable thead .sorting_asc, 94 | table.dataTable thead .sorting_desc, 95 | table.dataTable thead .sorting_asc_disabled, 96 | table.dataTable thead .sorting_desc_disabled { 97 | cursor: pointer; 98 | position: relative; } 99 | 100 | table.dataTable thead .sorting:before, table.dataTable thead .sorting:after, 101 | table.dataTable thead .sorting_asc:before, 102 | table.dataTable thead .sorting_asc:after, 103 | table.dataTable thead .sorting_desc:before, 104 | table.dataTable thead .sorting_desc:after, 105 | table.dataTable thead .sorting_asc_disabled:before, 106 | table.dataTable thead .sorting_asc_disabled:after, 107 | table.dataTable thead .sorting_desc_disabled:before, 108 | table.dataTable thead .sorting_desc_disabled:after { 109 | position: absolute; 110 | bottom: 0.9em; 111 | display: block; 112 | opacity: 0.3; } 113 | 114 | table.dataTable thead .sorting:before, 115 | table.dataTable thead .sorting_asc:before, 116 | table.dataTable thead .sorting_desc:before, 117 | table.dataTable thead .sorting_asc_disabled:before, 118 | table.dataTable thead .sorting_desc_disabled:before { 119 | right: 1em; 120 | content: "\f0de"; } 121 | 122 | table.dataTable thead .sorting:after, 123 | table.dataTable thead .sorting_asc:after, 124 | table.dataTable thead .sorting_desc:after, 125 | table.dataTable thead .sorting_asc_disabled:after, 126 | table.dataTable thead .sorting_desc_disabled:after { 127 | content: "\f0dd"; 128 | right: 16px; } 129 | 130 | table.dataTable thead .sorting:before, 131 | table.dataTable thead .sorting_asc:before, 132 | table.dataTable thead .sorting_desc:before, 133 | table.dataTable thead .sorting_asc_disabled:before, 134 | table.dataTable thead .sorting_desc_disabled:before, 135 | table.dataTable thead .sorting:after, 136 | table.dataTable thead .sorting_asc:after, 137 | table.dataTable thead .sorting_desc:after, 138 | table.dataTable thead .sorting_asc_disabled:after, 139 | table.dataTable thead .sorting_desc_disabled:after { 140 | font-family: 'Font Awesome\ 5 Free'; 141 | font-weight: 900; 142 | font-size: 1rem; } 143 | 144 | table.dataTable thead .sorting_asc:before, 145 | table.dataTable thead .sorting_desc:after { 146 | opacity: 1; } 147 | 148 | table.dataTable thead .sorting_asc_disabled:before, 149 | table.dataTable thead .sorting_desc_disabled:after { 150 | opacity: 0; } 151 | -------------------------------------------------------------------------------- /css/addons/datatables.min.css: -------------------------------------------------------------------------------- 1 | div.dataTables_wrapper div.dataTables_filter input,div.dataTables_wrapper div.dataTables_filter select,div.dataTables_wrapper div.dataTables_length input,div.dataTables_wrapper div.dataTables_length select{width:auto}table.dataTable thead{cursor:pointer}div.dataTables_wrapper div.dataTables_length.d-flex.flex-row label{margin-top:1.2rem;margin-right:1rem}div.dataTables_wrapper div.dataTables_length.d-flex.flex-row .select-wrapper.mdb-select .select-dropdown,div.dataTables_wrapper div.dataTables_length.d-flex.flex-row .select-wrapper.mdb-select span{margin-top:1rem}div.dataTables_wrapper div.dataTables_filter label,div.dataTables_wrapper div.dataTables_length label{text-align:left;font-weight:400;padding-top:.5rem;padding-bottom:.5rem}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter input{margin-left:.5rem;display:inline-block}div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{font-weight:400;padding-top:1rem;padding-bottom:1rem}div.dataTables_wrapper div.dataTables_paginate{text-align:right;margin:0}div.dataTables_wrapper div.dataTables_paginate ul.pagination{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-item.active .page-link:focus{background-color:#4285f4}div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-item .page-link:focus{-webkit-box-shadow:none;box-shadow:none}@media (max-width:767px){div.dataTables_wrapper div .dataTables_filter,div.dataTables_wrapper div .dataTables_info,div.dataTables_wrapper div .dataTables_length,div.dataTables_wrapper div .dataTables_paginate ul.pagination{text-align:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}}.bs-select select{display:inline-block!important}table.dataTable thead>tr>td.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc{padding-right:30px}table.dataTable thead>tr>td:active,table.dataTable thead>tr>th:active{outline:0}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc_disabled:after,table.dataTable thead .sorting_desc_disabled:before{position:absolute;bottom:.9em;display:block;opacity:.3;font-family:'Font Awesome\ 5 Free';font-weight:900;font-size:1rem}table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc_disabled:before{right:1em;content:"\f0de"}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_desc_disabled:after{content:"\f0dd";right:16px}table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:after{opacity:1}table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{opacity:0} -------------------------------------------------------------------------------- /css/addons/directives.css: -------------------------------------------------------------------------------- 1 | .opacity-0 { 2 | opacity: 0; } 3 | 4 | .opacity-10 { 5 | opacity: 0.1; } 6 | 7 | .opacity-20 { 8 | opacity: 0.2; } 9 | 10 | .opacity-30 { 11 | opacity: 0.3; } 12 | 13 | .opacity-40 { 14 | opacity: 0.4; } 15 | 16 | .opacity-50 { 17 | opacity: 0.5; } 18 | 19 | .opacity-60 { 20 | opacity: 0.6; } 21 | 22 | .opacity-70 { 23 | opacity: 0.7; } 24 | 25 | .opacity-80 { 26 | opacity: 0.8; } 27 | 28 | .opacity-90 { 29 | opacity: 0.9; } 30 | 31 | .opacity-100 { 32 | opacity: 1; } -------------------------------------------------------------------------------- /css/addons/directives.min.css: -------------------------------------------------------------------------------- 1 | .opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-20{opacity:.2}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-100{opacity:1} -------------------------------------------------------------------------------- /css/addons/rating.css: -------------------------------------------------------------------------------- 1 | .mdb-rating .rate-popover { 2 | color: grey; } 3 | 4 | .mdb-rating .live { 5 | color: black; } 6 | 7 | .mdb-rating .oneStar { 8 | color: #44370f; } 9 | 10 | .mdb-rating .twoStars { 11 | color: #96781e; } 12 | 13 | .mdb-rating .threeStars { 14 | color: #e2b52e; } 15 | 16 | .mdb-rating .fourStars { 17 | color: #f1ba12; } 18 | 19 | .mdb-rating .fiveStars { 20 | color: #f3cb06; } 21 | 22 | .mdb-rating .amber-text { 23 | color: #ffc107 !important; } -------------------------------------------------------------------------------- /css/addons/rating.min.css: -------------------------------------------------------------------------------- 1 | .mdb-rating .rate-popover{color:grey}.mdb-rating .live{color:#000}.mdb-rating .oneStar{color:#44370f}.mdb-rating .twoStars{color:#96781e}.mdb-rating .threeStars{color:#e2b52e}.mdb-rating .fourStars{color:#f1ba12}.mdb-rating .fiveStars{color:#f3cb06}.mdb-rating .amber-text{color:#ffc107!important} -------------------------------------------------------------------------------- /css/addons/zmd.hierarchical-display.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Material Design Hierarchical Display by Sergey Kupletsky (@zavoloklom) - https://github.com/zavoloklom/material-design-hierarchical-display/ 3 | * License - https://github.com/zavoloklom/material-design-hierarchical-display/blob/master/LICENSE (MIT License) 4 | */ 5 | .zmd-hierarchical-display { 6 | visibility: hidden; } 7 | .zmd-hierarchical-display.in { 8 | visibility: visible; } 9 | 10 | .zmd-hierarchical-displaying { 11 | visibility: visible; } 12 | 13 | .animation { 14 | -webkit-animation-duration: 1s; 15 | animation-duration: 1s; 16 | -webkit-animation-fill-mode: both; 17 | animation-fill-mode: both; } 18 | 19 | .animation.zoomedIn, 20 | .animation.zoomedOut { 21 | -webkit-animation-timing-function: cubic-bezier(0.55, 0, 0.1, 1); 22 | animation-timing-function: cubic-bezier(0.55, 0, 0.1, 1); } 23 | 24 | @-webkit-keyframes zoomedIn { 25 | from { 26 | -webkit-transform: scale(0); 27 | transform: scale(0); } 28 | to { 29 | -webkit-transform: scale(1); 30 | transform: scale(1); } } 31 | 32 | @keyframes zoomedIn { 33 | from { 34 | -webkit-transform: scale(0); 35 | transform: scale(0); } 36 | to { 37 | -webkit-transform: scale(1); 38 | transform: scale(1); } } 39 | 40 | @-webkit-keyframes zoomedOut { 41 | from { 42 | -webkit-transform: scale(1); 43 | transform: scale(1); } 44 | to { 45 | -webkit-transform: scale(0); 46 | transform: scale(0); } } 47 | 48 | @keyframes zoomedOut { 49 | from { 50 | -webkit-transform: scale(1); 51 | transform: scale(1); } 52 | to { 53 | -webkit-transform: scale(0); 54 | transform: scale(0); } } 55 | 56 | .zoomedIn { 57 | -webkit-animation-name: zoomedIn; 58 | animation-name: zoomedIn; } 59 | 60 | .zoomedOut { 61 | -webkit-animation-name: zoomedOut; 62 | animation-name: zoomedOut; } 63 | -------------------------------------------------------------------------------- /css/addons/zmd.hierarchical-display.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Material Design Hierarchical Display by Sergey Kupletsky (@zavoloklom) - https://github.com/zavoloklom/material-design-hierarchical-display/ 3 | * License - https://github.com/zavoloklom/material-design-hierarchical-display/blob/master/LICENSE (MIT License) 4 | */.zmd-hierarchical-display{visibility:hidden}.zmd-hierarchical-display.in{visibility:visible}.zmd-hierarchical-displaying{visibility:visible}.animation{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animation.zoomedIn,.animation.zoomedOut{-webkit-animation-timing-function:cubic-bezier(.55,0,.1,1);animation-timing-function:cubic-bezier(.55,0,.1,1)}@-webkit-keyframes zoomedIn{from{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes zoomedIn{from{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes zoomedOut{from{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(0);transform:scale(0)}}@keyframes zoomedOut{from{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(0);transform:scale(0)}}.zoomedIn{-webkit-animation-name:zoomedIn;animation-name:zoomedIn}.zoomedOut{-webkit-animation-name:zoomedOut;animation-name:zoomedOut} -------------------------------------------------------------------------------- /css/style.css: -------------------------------------------------------------------------------- 1 | /* Required height of parents of the Half Page Carousel for proper displaying carousel itself */ 2 | html, 3 | body, 4 | .view { 5 | height: 100%; } 6 | 7 | @media (max-width: 740px) { 8 | .full-page-intro { 9 | height: 1000px; } } 10 | 11 | /* Half Page Carousel itself*/ 12 | .carousel { 13 | height: 50%; } 14 | .carousel .carousel-inner { 15 | height: 100%; } 16 | .carousel .carousel-inner .carousel-item, 17 | .carousel .carousel-inner .active { 18 | height: 100%; } 19 | 20 | /* Adjustment for mobile devices*/ 21 | @media (max-width: 776px) { 22 | .carousel { 23 | height: 100%; } } 24 | 25 | /* Navbar animation */ 26 | .navbar { 27 | background-color: rgba(0, 0, 0, 0.3); } 28 | 29 | .top-nav-collapse { 30 | background-color: #1C2331; } 31 | 32 | /* Adding color to the Navbar on mobile */ 33 | @media only screen and (max-width: 768px) { 34 | .navbar { 35 | background-color: #1C2331; } } 36 | 37 | /* Footer color for sake of consistency with Navbar */ 38 | .page-footer { 39 | background-color: #1C2331; } 40 | -------------------------------------------------------------------------------- /css/style.min.css: -------------------------------------------------------------------------------- 1 | .view,body,html{height:100%}@media (max-width:740px){.full-page-intro{height:1000px}}.carousel{height:50%}.carousel .carousel-inner,.carousel .carousel-inner .active,.carousel .carousel-inner .carousel-item{height:100%}@media (max-width:776px){.carousel{height:100%}}.navbar{background-color:rgba(0,0,0,.3)}.page-footer,.top-nav-collapse{background-color:#1C2331}@media only screen and (max-width:768px){.navbar{background-color:#1C2331}} -------------------------------------------------------------------------------- /font/roboto/Roboto-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Bold.eot -------------------------------------------------------------------------------- /font/roboto/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Bold.ttf -------------------------------------------------------------------------------- /font/roboto/Roboto-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Bold.woff -------------------------------------------------------------------------------- /font/roboto/Roboto-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Bold.woff2 -------------------------------------------------------------------------------- /font/roboto/Roboto-Light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Light.eot -------------------------------------------------------------------------------- /font/roboto/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Light.ttf -------------------------------------------------------------------------------- /font/roboto/Roboto-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Light.woff -------------------------------------------------------------------------------- /font/roboto/Roboto-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Light.woff2 -------------------------------------------------------------------------------- /font/roboto/Roboto-Medium.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Medium.eot -------------------------------------------------------------------------------- /font/roboto/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Medium.ttf -------------------------------------------------------------------------------- /font/roboto/Roboto-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Medium.woff -------------------------------------------------------------------------------- /font/roboto/Roboto-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Medium.woff2 -------------------------------------------------------------------------------- /font/roboto/Roboto-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Regular.eot -------------------------------------------------------------------------------- /font/roboto/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Regular.ttf -------------------------------------------------------------------------------- /font/roboto/Roboto-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Regular.woff -------------------------------------------------------------------------------- /font/roboto/Roboto-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Regular.woff2 -------------------------------------------------------------------------------- /font/roboto/Roboto-Thin.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Thin.eot -------------------------------------------------------------------------------- /font/roboto/Roboto-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Thin.ttf -------------------------------------------------------------------------------- /font/roboto/Roboto-Thin.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Thin.woff -------------------------------------------------------------------------------- /font/roboto/Roboto-Thin.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/font/roboto/Roboto-Thin.woff2 -------------------------------------------------------------------------------- /img/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/img/flags.png -------------------------------------------------------------------------------- /img/lightbox/default-skin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/img/lightbox/default-skin.png -------------------------------------------------------------------------------- /img/lightbox/default-skin.svg: -------------------------------------------------------------------------------- 1 | default-skin 2 -------------------------------------------------------------------------------- /img/lightbox/preloader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/img/lightbox/preloader.gif -------------------------------------------------------------------------------- /img/overlays/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/img/overlays/01.png -------------------------------------------------------------------------------- /img/overlays/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/img/overlays/02.png -------------------------------------------------------------------------------- /img/overlays/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/img/overlays/03.png -------------------------------------------------------------------------------- /img/overlays/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/img/overlays/04.png -------------------------------------------------------------------------------- /img/overlays/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/img/overlays/05.png -------------------------------------------------------------------------------- /img/overlays/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/img/overlays/06.png -------------------------------------------------------------------------------- /img/overlays/07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/img/overlays/07.png -------------------------------------------------------------------------------- /img/overlays/08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/img/overlays/08.png -------------------------------------------------------------------------------- /img/overlays/09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/img/overlays/09.png -------------------------------------------------------------------------------- /img/sample.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/img/sample.jpg -------------------------------------------------------------------------------- /img/svg/arrow_left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /img/svg/arrow_right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /img/svg/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbootstrap/Landing-Page-Template-Bootstrap/a72186574fdf5023b228f372cf9720a4a9c09322/img/svg/flags.png -------------------------------------------------------------------------------- /js/addons/datatables-select.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | Select for DataTables 1.2.7 3 | 2015-2018 SpryMedia Ltd - datatables.net/license/mit 4 | */ 5 | (function(e){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(i){return e(i,window,document)}):"object"===typeof exports?module.exports=function(i,l){i||(i=window);if(!l||!l.fn.dataTable)l=require("datatables.net")(i,l).$;return e(l,i,i.document)}:e(jQuery,window,document)})(function(e,i,l,h){function u(a,c,b){var d;d=function(b,c){if(b>c)var d=c,c=b,b=d;var f=!1;return a.columns(":visible").indexes().filter(function(a){a===b&&(f=!0);return a===c?(f=!1,!0):f})};var f=function(b,c){var d=a.rows({search:"applied"}).indexes();if(d.indexOf(b)>d.indexOf(c))var f=c,c=b,b=f;var e=!1;return d.filter(function(a){a===b&&(e=!0);return a===c?(e=!1,!0):e})};!a.cells({selected:!0}).any()&&!b?(d=d(0,c.column),b=f(0,c.row)):(d=d(b.column,c.column),b=f(b.row,c.row));b=a.cells(b,d).flatten();a.cells(c,{selected:!0}).any()?a.cells(b).deselect():a.cells(b).select()}function q(a){var c=a.settings()[0]._select.selector;e(a.table().container()).off("mousedown.dtSelect",c).off("mouseup.dtSelect",c).off("click.dtSelect",c);e("body").off("click.dtSelect"+a.table().node().id)}function x(a){var c=e(a.table().container()),b=a.settings()[0],d=b._select.selector,f;c.on("mousedown.dtSelect",d,function(b){if(b.shiftKey||b.metaKey||b.ctrlKey)c.css("-moz-user-select","none").one("selectstart.dtSelect",d,function(){return!1});i.getSelection&&(f=i.getSelection())}).on("mouseup.dtSelect",d,function(){c.css("-moz-user-select","")}).on("click.dtSelect",d,function(b){var c=a.select.items();if(i.getSelection){var d=i.getSelection();if((!d.anchorNode||e(d.anchorNode).closest("table")[0]===a.table().node())&&d!==f)return}var d=a.settings()[0],g=a.settings()[0].oClasses.sWrapper.replace(/ /g,".");if(e(b.target).closest("div."+g)[0]==a.table().container()&&(g=a.cell(e(b.target).closest("td, th")),g.any())){var h=e.Event("user-select.dt");j(a,h,[c,g,b]);h.isDefaultPrevented()||(h=g.index(),"row"===c?(c=h.row,r(b,a,d,"row",c)):"column"===c?(c=g.index().column,r(b,a,d,"column",c)):"cell"===c&&(c=g.index(),r(b,a,d,"cell",c)),d._select_lastCell=h)}});e("body").on("click.dtSelect"+a.table().node().id,function(c){b._select.blurable&&!e(c.target).parents().filter(a.table().container()).length&&(0!==e(c.target).parents("html").length&&!e(c.target).parents("div.DTE").length)&&o(b,!0)})}function j(a,c,b,d){if(!d||a.flatten().length)"string"===typeof c&&(c+=".dt"),b.unshift(a),e(a.table().node()).trigger(c,b)}function y(a){var c=a.settings()[0];if(c._select.info&&c.aanFeatures.i&&"api"!==a.select.style()){var b=a.rows({selected:!0}).flatten().length,d=a.columns({selected:!0}).flatten().length,f=a.cells({selected:!0}).flatten().length,k=function(b,c,d){b.append(e('').append(a.i18n("select."+c+"s",{_:"%d "+c+"s selected","0":"",1:"1 "+c+" selected"},d)))};e.each(c.aanFeatures.i,function(c,a){var a=e(a),g=e('');k(g,"row",b);k(g,"column",d);k(g,"cell",f);var h=a.children("span.select-info");h.length&&h.remove();""!==g.text()&&a.append(g)})}}function z(a,c,b,d){var f=a[c+"s"]({search:"applied"}).indexes(),d=e.inArray(d,f),k=e.inArray(b,f);if(!a[c+"s"]({selected:!0}).any()&&-1===d)f.splice(e.inArray(b,f)+1,f.length);else{if(d>k)var g=k,k=d,d=g;f.splice(k+1,f.length);f.splice(0,d)}a[c](b,{selected:!0}).any()?(f.splice(e.inArray(b,f),1),a[c+"s"](f).deselect()):a[c+"s"](f).select()}function o(a,c){if(c||"single"===a._select.style){var b=new g.Api(a);b.rows({selected:!0}).deselect();b.columns({selected:!0}).deselect();b.cells({selected:!0}).deselect()}}function r(a,c,b,d,f){var e=c.select.style(),g=c[d](f,{selected:!0}).any();"os"===e?a.ctrlKey||a.metaKey?c[d](f).select(!g):a.shiftKey?"cell"===d?u(c,f,b._select_lastCell||null):z(c,d,f,b._select_lastCell?b._select_lastCell[d]:null):(a=c[d+"s"]({selected:!0}),g&&1===a.flatten().length?c[d](f).deselect():(a.deselect(),c[d](f).select())):"multi+shift"==e?a.shiftKey?"cell"===d?u(c,f,b._select_lastCell||null):z(c,d,f,b._select_lastCell?b._select_lastCell[d]:null):c[d](f).select(!g):c[d](f).select(!g)}function p(a,c){return function(b){return b.i18n("buttons."+a,c)}}function s(a){a=a._eventNamespace;return"draw.dt.DT"+a+" select.dt.DT"+a+" deselect.dt.DT"+a}var g=e.fn.dataTable;g.select={};g.select.version="1.2.7";g.select.init=function(a){var c=a.settings()[0],b=c.oInit.select,d=g.defaults.select,b=b===h?d:b,d="row",f="api",k=!1,v=!0,w="td, th",i="selected",j=!1;c._select={};if(!0===b)f="os",j=!0;else if("string"===typeof b)f=b,j=!0;else if(e.isPlainObject(b)&&(b.blurable!==h&&(k=b.blurable),b.info!==h&&(v=b.info),b.items!==h&&(d=b.items),b.style!==h&&(f=b.style,j=!0),b.selector!==h&&(w=b.selector),b.className!==h))i=b.className;a.select.selector(w);a.select.items(d);a.select.style(f);a.select.blurable(k);a.select.info(v);c._select.className=i;e.fn.dataTable.ext.order["select-checkbox"]=function(b,c){return this.api().column(c,{order:"index"}).nodes().map(function(c){return"row"===b._select.items?e(c).parent().hasClass(b._select.className):"cell"===b._select.items?e(c).hasClass(b._select.className):!1})};!j&&e(a.table().node()).hasClass("selectable")&&a.select.style("os")};e.each([{type:"row",prop:"aoData"},{type:"column",prop:"aoColumns"}],function(a,c){g.ext.selector[c.type].push(function(b,a,f){var a=a.selected,e,g=[];if(!0!==a&&!1!==a)return f;for(var h=0,i=f.length;h'); 9 | $this.hasClass('md-progress') ? selector.children().children().addClass('md-progress-bar-text') : selector.children().children().addClass('progress-bar-text'); 10 | (progressValue !== 100) ? selector.children().children().text(`${progressValue}%`) : selector.children().children().html(''); 11 | } 12 | 13 | function set(selector, value) { 14 | selector.children().removeClass('success fail active'); 15 | selector.children().attr('aria-valuenow', value); 16 | init(selector); 17 | if (value > 100) { 18 | return false; 19 | } else if (value === 100) { 20 | selector.children().addClass('success'); 21 | } else if (value < 30) { 22 | selector.children().addClass('fail'); 23 | } else { 24 | selector.children().addClass('active'); 25 | } 26 | return true; 27 | } 28 | 29 | set($this, givenValue); 30 | }; 31 | }(jQuery)); 32 | -------------------------------------------------------------------------------- /js/addons/progressBar.min.js: -------------------------------------------------------------------------------- 1 | (function($){$.fn.progressBar=function(givenValue){const $this=$(this);function init(selector){const progressValue=selector.children().attr('aria-valuenow');selector.children().width(`${progressValue}%`);selector.children().html('');$this.hasClass('md-progress')?selector.children().children().addClass('md-progress-bar-text'):selector.children().children().addClass('progress-bar-text');(progressValue!==100)?selector.children().children().text(`${progressValue}%`):selector.children().children().html('')} 2 | function set(selector,value){selector.children().removeClass('success fail active');selector.children().attr('aria-valuenow',value);init(selector);if(value>100){return!1}else if(value===100){selector.children().addClass('success')}else if(value<30){selector.children().addClass('fail')}else{selector.children().addClass('active')} 3 | return!0} 4 | set($this,givenValue)}}(jQuery)) -------------------------------------------------------------------------------- /js/addons/rating.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | $.fn.mdbRate = function () { 3 | var $stars; 4 | // Custom whitelist to allow for using HTML tags in popover content 5 | var myDefaultWhiteList = $.fn.tooltip.Constructor.Default.whiteList 6 | myDefaultWhiteList.textarea = []; 7 | myDefaultWhiteList.button = []; 8 | 9 | var $container = $(this); 10 | 11 | var titles = ['Very bad', 'Poor', 'OK', 'Good', 'Excellent']; 12 | 13 | for (var i = 0; i < 5; i++) { 14 | $container.append(``); 16 | } 17 | 18 | $stars = $container.children(); 19 | 20 | if ($container.hasClass('rating-faces')) { 21 | $stars.addClass('far fa-meh-blank'); 22 | } else if ($container.hasClass('empty-stars')) { 23 | $stars.addClass('far fa-star'); 24 | } else { 25 | $stars.addClass('fas fa-star'); 26 | } 27 | 28 | $stars.on('mouseover', function () { 29 | var index = $(this).attr('data-index'); 30 | markStarsAsActive(index); 31 | }); 32 | 33 | function markStarsAsActive(index) { 34 | unmarkActive(); 35 | 36 | for (var i = 0; i <= index; i++) { 37 | 38 | if ($container.hasClass('rating-faces')) { 39 | $($stars.get(i)).removeClass('fa-meh-blank'); 40 | $($stars.get(i)).addClass('live'); 41 | 42 | switch (index) { 43 | case '0': 44 | $($stars.get(i)).addClass('fa-angry'); 45 | break; 46 | case '1': 47 | $($stars.get(i)).addClass('fa-frown'); 48 | break; 49 | case '2': 50 | $($stars.get(i)).addClass('fa-meh'); 51 | break; 52 | case '3': 53 | $($stars.get(i)).addClass('fa-smile'); 54 | break; 55 | case '4': 56 | $($stars.get(i)).addClass('fa-laugh'); 57 | break; 58 | } 59 | 60 | } else if ($container.hasClass('empty-stars')) { 61 | $($stars.get(i)).addClass('fas'); 62 | switch (index) { 63 | case '0': 64 | $($stars.get(i)).addClass('oneStar'); 65 | break; 66 | case '1': 67 | $($stars.get(i)).addClass('twoStars'); 68 | break; 69 | case '2': 70 | $($stars.get(i)).addClass('threeStars'); 71 | break; 72 | case '3': 73 | $($stars.get(i)).addClass('fourStars'); 74 | break; 75 | case '4': 76 | $($stars.get(i)).addClass('fiveStars'); 77 | break; 78 | } 79 | } else { 80 | $($stars.get(i)).addClass('amber-text'); 81 | 82 | } 83 | } 84 | } 85 | 86 | function unmarkActive() { 87 | $stars.parent().hasClass('rating-faces') ? $stars.addClass('fa-meh-blank') : $stars; 88 | $container.hasClass('empty-stars') ? $stars.removeClass('fas') : $container; 89 | $stars.removeClass('fa-angry fa-frown fa-meh fa-smile fa-laugh live oneStar twoStars threeStars fourStars fiveStars amber-text'); 90 | } 91 | 92 | $stars.on('click', function () { 93 | $stars.popover('hide'); 94 | }); 95 | 96 | // Submit, you can add some extra custom code here 97 | // ex. to send the information to the server 98 | $container.on('click', '#voteSubmitButton', function () { 99 | $stars.popover('hide'); 100 | }); 101 | 102 | // Cancel, just close the popover 103 | $container.on('click', '#closePopoverButton', function () { 104 | $stars.popover('hide'); 105 | }); 106 | 107 | if ($container.hasClass('feedback')) { 108 | 109 | $(function () { 110 | $stars.popover({ 111 | // Append popover to #rateMe to allow handling form inside the popover 112 | container: $container, 113 | // Custom content for popover 114 | content: `
` 115 | }); 116 | }) 117 | } 118 | 119 | $stars.tooltip(); 120 | } 121 | })(jQuery); -------------------------------------------------------------------------------- /js/addons/rating.min.js: -------------------------------------------------------------------------------- 1 | (function($){$.fn.mdbRate=function(){var $stars;var myDefaultWhiteList=$.fn.tooltip.Constructor.Default.whiteList 2 | myDefaultWhiteList.textarea=[];myDefaultWhiteList.button=[];var $container=$(this);var titles=['Very bad','Poor','OK','Good','Excellent'];for(var i=0;i<5;i++){$container.append(``)} 4 | $stars=$container.children();if($container.hasClass('rating-faces')){$stars.addClass('far fa-meh-blank')}else if($container.hasClass('empty-stars')){$stars.addClass('far fa-star')}else{$stars.addClass('fas fa-star')} 5 | $stars.on('mouseover',function(){var index=$(this).attr('data-index');markStarsAsActive(index)});function markStarsAsActive(index){unmarkActive();for(var i=0;i<=index;i++){if($container.hasClass('rating-faces')){$($stars.get(i)).removeClass('fa-meh-blank');$($stars.get(i)).addClass('live');switch(index){case '0':$($stars.get(i)).addClass('fa-angry');break;case '1':$($stars.get(i)).addClass('fa-frown');break;case '2':$($stars.get(i)).addClass('fa-meh');break;case '3':$($stars.get(i)).addClass('fa-smile');break;case '4':$($stars.get(i)).addClass('fa-laugh');break}}else if($container.hasClass('empty-stars')){$($stars.get(i)).addClass('fas');switch(index){case '0':$($stars.get(i)).addClass('oneStar');break;case '1':$($stars.get(i)).addClass('twoStars');break;case '2':$($stars.get(i)).addClass('threeStars');break;case '3':$($stars.get(i)).addClass('fourStars');break;case '4':$($stars.get(i)).addClass('fiveStars');break}}else{$($stars.get(i)).addClass('amber-text')}}} 6 | function unmarkActive(){$stars.parent().hasClass('rating-faces')?$stars.addClass('fa-meh-blank'):$stars;$container.hasClass('empty-stars')?$stars.removeClass('fas'):$container;$stars.removeClass('fa-angry fa-frown fa-meh fa-smile fa-laugh live oneStar twoStars threeStars fourStars fiveStars amber-text')} 7 | $stars.on('click',function(){$stars.popover('hide')});$container.on('click','#voteSubmitButton',function(){$stars.popover('hide')});$container.on('click','#closePopoverButton',function(){$stars.popover('hide')});if($container.hasClass('feedback')){$(function(){$stars.popover({container:$container,content:`
`})})} 8 | $stars.tooltip()}})(jQuery) -------------------------------------------------------------------------------- /js/modules/bs-custom-file-input.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * bsCustomFileInput v1.3.2 (https://github.com/Johann-S/bs-custom-file-input) 3 | * Copyright 2018 - 2019 Johann-S 4 | * Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE) 5 | */ 6 | (function (global, factory) { 7 | typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 8 | typeof define === 'function' && define.amd ? define(factory) : 9 | (global = global || self, global.bsCustomFileInput = factory()); 10 | }(this, function () { 11 | 'use strict'; 12 | 13 | var Selector = { 14 | CUSTOMFILE: '.custom-file input[type="file"]', 15 | CUSTOMFILELABEL: '.custom-file-label', 16 | FORM: 'form', 17 | INPUT: 'input' 18 | }; 19 | 20 | var textNodeType = 3; 21 | 22 | var getDefaultText = function getDefaultText(input) { 23 | var defaultText = ''; 24 | var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL); 25 | 26 | if (label) { 27 | defaultText = label.innerHTML; 28 | } 29 | 30 | return defaultText; 31 | }; 32 | 33 | var findFirstChildNode = function findFirstChildNode(element) { 34 | if (element.childNodes.length > 0) { 35 | var childNodes = [].slice.call(element.childNodes); 36 | 37 | for (var i = 0; i < childNodes.length; i++) { 38 | var node = childNodes[i]; 39 | 40 | if (node.nodeType !== textNodeType) { 41 | return node; 42 | } 43 | } 44 | } 45 | 46 | return element; 47 | }; 48 | 49 | var restoreDefaultText = function restoreDefaultText(input) { 50 | var defaultText = input.bsCustomFileInput.defaultText; 51 | var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL); 52 | 53 | if (label) { 54 | var element = findFirstChildNode(label); 55 | element.innerHTML = defaultText; 56 | } 57 | }; 58 | 59 | var fileApi = !!window.File; 60 | var FAKE_PATH = 'fakepath'; 61 | var FAKE_PATH_SEPARATOR = '\\'; 62 | 63 | var getSelectedFiles = function getSelectedFiles(input) { 64 | if (input.hasAttribute('multiple') && fileApi) { 65 | return [].slice.call(input.files).map(function (file) { 66 | return file.name; 67 | }).join(', '); 68 | } 69 | 70 | if (input.value.indexOf(FAKE_PATH) !== -1) { 71 | var splittedValue = input.value.split(FAKE_PATH_SEPARATOR); 72 | return splittedValue[splittedValue.length - 1]; 73 | } 74 | 75 | return input.value; 76 | }; 77 | 78 | function handleInputChange() { 79 | var label = this.parentNode.querySelector(Selector.CUSTOMFILELABEL); 80 | 81 | if (label) { 82 | var element = findFirstChildNode(label); 83 | var inputValue = getSelectedFiles(this); 84 | 85 | if (inputValue.length) { 86 | element.innerHTML = inputValue; 87 | } else { 88 | restoreDefaultText(this); 89 | } 90 | } 91 | } 92 | 93 | function handleFormReset() { 94 | var customFileList = [].slice.call(this.querySelectorAll(Selector.INPUT)).filter(function (input) { 95 | return !!input.bsCustomFileInput; 96 | }); 97 | 98 | for (var i = 0, len = customFileList.length; i < len; i++) { 99 | restoreDefaultText(customFileList[i]); 100 | } 101 | } 102 | 103 | var customProperty = 'bsCustomFileInput'; 104 | var Event = { 105 | FORMRESET: 'reset', 106 | INPUTCHANGE: 'change' 107 | }; 108 | var bsCustomFileInput = { 109 | init: function init(inputSelector, formSelector) { 110 | if (inputSelector === void 0) { 111 | inputSelector = Selector.CUSTOMFILE; 112 | } 113 | 114 | if (formSelector === void 0) { 115 | formSelector = Selector.FORM; 116 | } 117 | 118 | var customFileInputList = [].slice.call(document.querySelectorAll(inputSelector)); 119 | var formList = [].slice.call(document.querySelectorAll(formSelector)); 120 | 121 | for (var i = 0, len = customFileInputList.length; i < len; i++) { 122 | var input = customFileInputList[i]; 123 | Object.defineProperty(input, customProperty, { 124 | value: { 125 | defaultText: getDefaultText(input) 126 | }, 127 | writable: true 128 | }); 129 | handleInputChange.call(input); 130 | input.addEventListener(Event.INPUTCHANGE, handleInputChange); 131 | } 132 | 133 | for (var _i = 0, _len = formList.length; _i < _len; _i++) { 134 | formList[_i].addEventListener(Event.FORMRESET, handleFormReset); 135 | 136 | Object.defineProperty(formList[_i], customProperty, { 137 | value: true, 138 | writable: true 139 | }); 140 | } 141 | }, 142 | destroy: function destroy() { 143 | var formList = [].slice.call(document.querySelectorAll(Selector.FORM)).filter(function (form) { 144 | return !!form.bsCustomFileInput; 145 | }); 146 | var customFileInputList = [].slice.call(document.querySelectorAll(Selector.INPUT)).filter(function (input) { 147 | return !!input.bsCustomFileInput; 148 | }); 149 | 150 | for (var i = 0, len = customFileInputList.length; i < len; i++) { 151 | var input = customFileInputList[i]; 152 | restoreDefaultText(input); 153 | input[customProperty] = undefined; 154 | input.removeEventListener(Event.INPUTCHANGE, handleInputChange); 155 | } 156 | 157 | for (var _i2 = 0, _len2 = formList.length; _i2 < _len2; _i2++) { 158 | formList[_i2].removeEventListener(Event.FORMRESET, handleFormReset); 159 | 160 | formList[_i2][customProperty] = undefined; 161 | } 162 | } 163 | }; 164 | 165 | return bsCustomFileInput; 166 | 167 | })); 168 | //# sourceMappingURL=bs-custom-file-input.js.map 169 | 170 | document.addEventListener("DOMContentLoaded", function () { 171 | 172 | bsCustomFileInput.init() 173 | }); 174 | -------------------------------------------------------------------------------- /js/modules/default-file-input.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | (function ($) { 4 | $('.input-default-wrapper').on('change', '.input-default-js', function (e) { 5 | 6 | var $this = $(e.target), 7 | $label = $this.next('label'), 8 | $files = $this[0].files; 9 | var fileName = ''; 10 | 11 | if ($files && $files.length > 1) { 12 | fileName = ($this.attr('data-multiple-target') || '').replace('{target}', $files.length); 13 | } else if (e.target.value) { 14 | fileName = e.target.value.split('\\').pop(); 15 | } 16 | fileName ? $label.find('.span-choose-file').html(fileName) : $label.html($label.html()); 17 | }); 18 | })(jQuery); -------------------------------------------------------------------------------- /js/modules/enhanced-modals.js: -------------------------------------------------------------------------------- 1 | /* 2 | Enhanced Bootstrap Modals 3 | https://mdbootstrap.com 4 | office@mdbootstrap.com 5 | */ 6 | 7 | (function($){ 8 | $('body').on('shown.bs.modal', '.modal', function() { 9 | if(!$('.modal-backdrop').length) { 10 | 11 | $modal_dialog = $(this).children('.modal-dialog') 12 | 13 | if($modal_dialog.hasClass('modal-side')) { 14 | $(this).addClass('modal-scrolling'); 15 | $('body').addClass('scrollable'); 16 | } 17 | 18 | if($modal_dialog.hasClass('modal-frame')) { 19 | $(this).addClass('modal-content-clickable'); 20 | $('body').addClass('scrollable'); 21 | } 22 | } 23 | }); 24 | $('body').on('hidden.bs.modal', '.modal', function() { 25 | $('body').removeClass('scrollable'); 26 | }); 27 | })(jQuery); 28 | -------------------------------------------------------------------------------- /js/modules/forms-free.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var _this = void 0; 4 | 5 | (function ($) { 6 | var inputSelector = "".concat(['text', 'password', 'email', 'url', 'tel', 'number', 'search', 'search-md'].map(function (selector) { 7 | return "input[type=".concat(selector, "]"); 8 | }).join(', '), ", textarea"); 9 | var textAreaSelector = '.materialize-textarea'; 10 | 11 | var updateTextFields = function updateTextFields($input) { 12 | var $labelAndIcon = $input.siblings('label, i'); 13 | var hasValue = $input.val().length; 14 | var hasPlaceholder = $input.attr('placeholder'); 15 | var addOrRemove = "".concat(hasValue || hasPlaceholder ? 'add' : 'remove', "Class"); 16 | $labelAndIcon[addOrRemove]('active'); 17 | }; 18 | 19 | var validateField = function validateField($input) { 20 | if ($input.hasClass('validate')) { 21 | var value = $input.val(); 22 | var noValue = !value.length; 23 | var isValid = !$input[0].validity.badInput; 24 | 25 | if (noValue && isValid) { 26 | $input.removeClass('valid').removeClass('invalid'); 27 | } else { 28 | var valid = $input.is(':valid'); 29 | var length = Number($input.attr('length')) || 0; 30 | 31 | if (valid && (!length || length > value.length)) { 32 | $input.removeClass('invalid').addClass('valid'); 33 | } else { 34 | $input.removeClass('valid').addClass('invalid'); 35 | } 36 | } 37 | } 38 | }; 39 | 40 | var textAreaAutoResize = function textAreaAutoResize() { 41 | var $textarea = $(_this); 42 | 43 | if ($textarea.val().length) { 44 | var $hiddenDiv = $('.hiddendiv'); 45 | var fontFamily = $textarea.css('font-family'); 46 | var fontSize = $textarea.css('font-size'); 47 | 48 | if (fontSize) { 49 | $hiddenDiv.css('font-size', fontSize); 50 | } 51 | 52 | if (fontFamily) { 53 | $hiddenDiv.css('font-family', fontFamily); 54 | } 55 | 56 | if ($textarea.attr('wrap') === 'off') { 57 | $hiddenDiv.css('overflow-wrap', 'normal').css('white-space', 'pre'); 58 | } 59 | 60 | $hiddenDiv.text("".concat($textarea.val(), "\n")); 61 | var content = $hiddenDiv.html().replace(/\n/g, '
'); 62 | $hiddenDiv.html(content); // When textarea is hidden, width goes crazy. 63 | // Approximate with half of window size 64 | 65 | $hiddenDiv.css('width', $textarea.is(':visible') ? $textarea.width() : $(window).width() / 2); 66 | $textarea.css('height', $hiddenDiv.height()); 67 | } 68 | }; 69 | 70 | $(inputSelector).each(function (index, input) { 71 | var $this = $(input); 72 | var $labelAndIcon = $this.siblings('label, i'); 73 | updateTextFields($this); 74 | var isValid = input.validity.badInput; 75 | 76 | if (isValid) { 77 | $labelAndIcon.addClass('active'); 78 | } 79 | }); 80 | $(document).on('focus', inputSelector, function (e) { 81 | $(e.target).siblings('label, i').addClass('active'); 82 | }); 83 | $(document).on('blur', inputSelector, function (e) { 84 | var $this = $(e.target); 85 | var noValue = !$this.val(); 86 | var invalid = !e.target.validity.badInput; 87 | var noPlaceholder = $this.attr('placeholder') === undefined; 88 | 89 | if (noValue && invalid && noPlaceholder) { 90 | $this.siblings('label, i').removeClass('active'); 91 | } 92 | 93 | validateField($this); 94 | }); 95 | $(document).on('change', inputSelector, function (e) { 96 | var $this = $(e.target); 97 | updateTextFields($this); 98 | validateField($this); 99 | }); 100 | $('input[autofocus]').siblings('label, i').addClass('active'); 101 | $(document).on('reset', function (e) { 102 | var $formReset = $(e.target); 103 | 104 | if ($formReset.is('form')) { 105 | var $formInputs = $formReset.find(inputSelector); 106 | $formInputs.removeClass('valid').removeClass('invalid').each(function (index, input) { 107 | var $this = $(input); 108 | var noDefaultValue = !$this.val(); 109 | var noPlaceholder = !$this.attr('placeholder'); 110 | 111 | if (noDefaultValue && noPlaceholder) { 112 | $this.siblings('label, i').removeClass('active'); 113 | } 114 | }); 115 | $formReset.find('select.initialized').each(function (index, select) { 116 | var $select = $(select); 117 | var $visibleInput = $select.siblings('input.select-dropdown'); 118 | var defaultValue = $select.children('[selected]').val(); 119 | $select.val(defaultValue); 120 | $visibleInput.val(defaultValue); 121 | }); 122 | } 123 | }); 124 | 125 | function init() { 126 | var $text = $('.md-textarea-auto'); 127 | 128 | if ($text.length) { 129 | var observe; 130 | 131 | if (window.attachEvent) { 132 | observe = function observe(element, event, handler) { 133 | element.attachEvent("on".concat(event), handler); 134 | }; 135 | } else { 136 | observe = function observe(element, event, handler) { 137 | element.addEventListener(event, handler, false); 138 | }; 139 | } 140 | 141 | $text.each(function () { 142 | var self = this; 143 | 144 | function resize() { 145 | self.style.height = 'auto'; 146 | self.style.height = "".concat(self.scrollHeight, "px"); 147 | } 148 | 149 | function delayedResize() { 150 | window.setTimeout(resize, 0); 151 | } 152 | 153 | observe(self, 'change', resize); 154 | observe(self, 'cut', delayedResize); 155 | observe(self, 'paste', delayedResize); 156 | observe(self, 'drop', delayedResize); 157 | observe(self, 'keydown', delayedResize); 158 | resize(); 159 | }); 160 | } 161 | } 162 | 163 | init(); 164 | var $body = $('body'); 165 | 166 | if (!$('.hiddendiv').first().length) { 167 | var $hiddenDiv = $('
'); 168 | $body.append($hiddenDiv); 169 | } 170 | 171 | $(textAreaSelector).each(textAreaAutoResize); 172 | $body.on('keyup keydown', textAreaSelector, textAreaAutoResize); 173 | })(jQuery); -------------------------------------------------------------------------------- /js/modules/jquery.easing.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ 3 | * 4 | * Uses the built in easing capabilities added In jQuery 1.1 5 | * to offer multiple easing options 6 | * 7 | * TERMS OF USE - jQuery Easing 8 | * 9 | * Open source under the BSD License. 10 | * 11 | * Copyright © 2008 George McGinley Smith 12 | * All rights reserved. 13 | * 14 | * Redistribution and use in source and binary forms, with or without modification, 15 | * are permitted provided that the following conditions are met: 16 | * 17 | * Redistributions of source code must retain the above copyright notice, this list of 18 | * conditions and the following disclaimer. 19 | * Redistributions in binary form must reproduce the above copyright notice, this list 20 | * of conditions and the following disclaimer in the documentation and/or other materials 21 | * provided with the distribution. 22 | * 23 | * Neither the name of the author nor the names of contributors may be used to endorse 24 | * or promote products derived from this software without specific prior written permission. 25 | * 26 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 27 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 28 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 29 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 30 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 31 | * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 32 | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 33 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 34 | * OF THE POSSIBILITY OF SUCH DAMAGE. 35 | * 36 | */ 37 | 38 | // t: current time, b: begInnIng value, c: change In value, d: duration 39 | jQuery.easing['jswing'] = jQuery.easing['swing']; 40 | 41 | jQuery.extend( jQuery.easing, 42 | { 43 | def: 'easeOutQuad', 44 | swing: function (x, t, b, c, d) { 45 | //alert(jQuery.easing.default); 46 | return jQuery.easing[jQuery.easing.def](x, t, b, c, d); 47 | }, 48 | easeInQuad: function (x, t, b, c, d) { 49 | return c*(t/=d)*t + b; 50 | }, 51 | easeOutQuad: function (x, t, b, c, d) { 52 | return -c *(t/=d)*(t-2) + b; 53 | }, 54 | easeInOutQuad: function (x, t, b, c, d) { 55 | if ((t/=d/2) < 1) return c/2*t*t + b; 56 | return -c/2 * ((--t)*(t-2) - 1) + b; 57 | }, 58 | easeInCubic: function (x, t, b, c, d) { 59 | return c*(t/=d)*t*t + b; 60 | }, 61 | easeOutCubic: function (x, t, b, c, d) { 62 | return c*((t=t/d-1)*t*t + 1) + b; 63 | }, 64 | easeInOutCubic: function (x, t, b, c, d) { 65 | if ((t/=d/2) < 1) return c/2*t*t*t + b; 66 | return c/2*((t-=2)*t*t + 2) + b; 67 | }, 68 | easeInQuart: function (x, t, b, c, d) { 69 | return c*(t/=d)*t*t*t + b; 70 | }, 71 | easeOutQuart: function (x, t, b, c, d) { 72 | return -c * ((t=t/d-1)*t*t*t - 1) + b; 73 | }, 74 | easeInOutQuart: function (x, t, b, c, d) { 75 | if ((t/=d/2) < 1) return c/2*t*t*t*t + b; 76 | return -c/2 * ((t-=2)*t*t*t - 2) + b; 77 | }, 78 | easeInQuint: function (x, t, b, c, d) { 79 | return c*(t/=d)*t*t*t*t + b; 80 | }, 81 | easeOutQuint: function (x, t, b, c, d) { 82 | return c*((t=t/d-1)*t*t*t*t + 1) + b; 83 | }, 84 | easeInOutQuint: function (x, t, b, c, d) { 85 | if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; 86 | return c/2*((t-=2)*t*t*t*t + 2) + b; 87 | }, 88 | easeInSine: function (x, t, b, c, d) { 89 | return -c * Math.cos(t/d * (Math.PI/2)) + c + b; 90 | }, 91 | easeOutSine: function (x, t, b, c, d) { 92 | return c * Math.sin(t/d * (Math.PI/2)) + b; 93 | }, 94 | easeInOutSine: function (x, t, b, c, d) { 95 | return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; 96 | }, 97 | easeInExpo: function (x, t, b, c, d) { 98 | return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; 99 | }, 100 | easeOutExpo: function (x, t, b, c, d) { 101 | return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; 102 | }, 103 | easeInOutExpo: function (x, t, b, c, d) { 104 | if (t==0) return b; 105 | if (t==d) return b+c; 106 | if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; 107 | return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; 108 | }, 109 | easeInCirc: function (x, t, b, c, d) { 110 | return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; 111 | }, 112 | easeOutCirc: function (x, t, b, c, d) { 113 | return c * Math.sqrt(1 - (t=t/d-1)*t) + b; 114 | }, 115 | easeInOutCirc: function (x, t, b, c, d) { 116 | if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; 117 | return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; 118 | }, 119 | easeInElastic: function (x, t, b, c, d) { 120 | var s=1.70158;var p=0;var a=c; 121 | if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; 122 | if (a < Math.abs(c)) { a=c; var s=p/4; } 123 | else var s = p/(2*Math.PI) * Math.asin (c/a); 124 | return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; 125 | }, 126 | easeOutElastic: function (x, t, b, c, d) { 127 | var s=1.70158;var p=0;var a=c; 128 | if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; 129 | if (a < Math.abs(c)) { a=c; var s=p/4; } 130 | else var s = p/(2*Math.PI) * Math.asin (c/a); 131 | return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; 132 | }, 133 | easeInOutElastic: function (x, t, b, c, d) { 134 | var s=1.70158;var p=0;var a=c; 135 | if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); 136 | if (a < Math.abs(c)) { a=c; var s=p/4; } 137 | else var s = p/(2*Math.PI) * Math.asin (c/a); 138 | if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; 139 | return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; 140 | }, 141 | easeInBack: function (x, t, b, c, d, s) { 142 | if (s == undefined) s = 1.70158; 143 | return c*(t/=d)*t*((s+1)*t - s) + b; 144 | }, 145 | easeOutBack: function (x, t, b, c, d, s) { 146 | if (s == undefined) s = 1.70158; 147 | return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; 148 | }, 149 | easeInOutBack: function (x, t, b, c, d, s) { 150 | if (s == undefined) s = 1.70158; 151 | if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; 152 | return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; 153 | }, 154 | easeInBounce: function (x, t, b, c, d) { 155 | return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; 156 | }, 157 | easeOutBounce: function (x, t, b, c, d) { 158 | if ((t/=d) < (1/2.75)) { 159 | return c*(7.5625*t*t) + b; 160 | } else if (t < (2/2.75)) { 161 | return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; 162 | } else if (t < (2.5/2.75)) { 163 | return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; 164 | } else { 165 | return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; 166 | } 167 | }, 168 | easeInOutBounce: function (x, t, b, c, d) { 169 | if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; 170 | return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; 171 | } 172 | }); 173 | 174 | /* 175 | * 176 | * TERMS OF USE - EASING EQUATIONS 177 | * 178 | * Open source under the BSD License. 179 | * 180 | * Copyright © 2001 Robert Penner 181 | * All rights reserved. 182 | * 183 | * Redistribution and use in source and binary forms, with or without modification, 184 | * are permitted provided that the following conditions are met: 185 | * 186 | * Redistributions of source code must retain the above copyright notice, this list of 187 | * conditions and the following disclaimer. 188 | * Redistributions in binary form must reproduce the above copyright notice, this list 189 | * of conditions and the following disclaimer in the documentation and/or other materials 190 | * provided with the distribution. 191 | * 192 | * Neither the name of the author nor the names of contributors may be used to endorse 193 | * or promote products derived from this software without specific prior written permission. 194 | * 195 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 196 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 197 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 198 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 199 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 200 | * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 201 | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 202 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 203 | * OF THE POSSIBILITY OF SUCH DAMAGE. 204 | * 205 | */ -------------------------------------------------------------------------------- /js/modules/scrolling-navbar.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | (function ($) { 4 | var SCROLLING_NAVBAR_OFFSET_TOP = 50; 5 | $(window).on('scroll', function () { 6 | var $navbar = $('.navbar'); 7 | 8 | if ($navbar.length) { 9 | if ($navbar.offset().top > SCROLLING_NAVBAR_OFFSET_TOP) { 10 | $('.scrolling-navbar').addClass('top-nav-collapse'); 11 | } else { 12 | $('.scrolling-navbar').removeClass('top-nav-collapse'); 13 | } 14 | } 15 | }); 16 | })(jQuery); -------------------------------------------------------------------------------- /js/modules/treeview.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | (function ($) { 4 | $.fn.mdbTreeview = function () { 5 | var $this = $(this); 6 | 7 | if ($this.hasClass('treeview')) { 8 | var $toggler = $this.find('.rotate'); 9 | $.each($toggler, function (e) { 10 | $($toggler[e]).off('click'); 11 | $($toggler[e]).on('click', function () { 12 | var $this = $(this); 13 | $this.siblings('.nested').toggleClass('active'); 14 | $this.toggleClass('down'); 15 | }); 16 | }); 17 | } 18 | 19 | if ($this.hasClass('treeview-animated')) { 20 | var $elements = $this.find('.treeview-animated-element'); 21 | var $closed = $this.find('.closed'); 22 | $this.find('.nested').hide(); 23 | $closed.off('click'); 24 | $closed.on('click', function () { 25 | var $this = $(this); 26 | var $target = $this.siblings('.nested'); 27 | var $pointer = $this.children('.fa-angle-right'); 28 | $this.toggleClass('open'); 29 | $pointer.toggleClass('down'); 30 | !$target.hasClass('active') ? $target.addClass('active').slideDown() : $target.removeClass('active').slideUp(); 31 | return false; 32 | }); 33 | $elements.off('click'); 34 | $elements.on('click', function () { 35 | var $this = $(this); 36 | $this.hasClass('opened') ? $this.removeClass('opened') : ($elements.removeClass('opened'), $this.addClass('opened')); 37 | }); 38 | } 39 | 40 | if ($this.hasClass('treeview-colorful')) { 41 | var _$elements = $this.find('.treeview-colorful-element'); 42 | 43 | var $header = $this.find('.treeview-colorful-items-header'); 44 | $this.find('.nested').hide(); 45 | $header.off('click'); 46 | $header.on('click', function () { 47 | var $this = $(this); 48 | var $target = $this.siblings('.nested'); 49 | var $pointerPlus = $this.children('.fa-plus-circle'); 50 | var $pointerMinus = $this.children('.fa-minus-circle'); 51 | $this.toggleClass('open'); 52 | $pointerPlus.removeClass('fa-plus-circle'); 53 | $pointerPlus.addClass('fa-minus-circle'); 54 | $pointerMinus.removeClass('fa-minus-circle'); 55 | $pointerMinus.addClass('fa-plus-circle'); 56 | !$target.hasClass('active') ? $target.addClass('active').slideDown() : $target.removeClass('active').slideUp(); 57 | }); 58 | 59 | _$elements.off('click'); 60 | 61 | _$elements.on('click', function () { 62 | var $this = $(this); 63 | $this.hasClass('opened') ? _$elements.removeClass('opened') : (_$elements.removeClass('opened'), $this.addClass('opened')); 64 | }); 65 | } 66 | }; 67 | })(jQuery); -------------------------------------------------------------------------------- /js/modules/wow.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var WOW; 4 | 5 | (function ($) { 6 | 7 | WOW = function WOW() { 8 | 9 | return { 10 | 11 | init: function init() { 12 | 13 | var animationName = []; 14 | 15 | var once = 1; 16 | 17 | function mdbWow() { 18 | 19 | var windowHeight = window.innerHeight; 20 | var scroll = window.scrollY; 21 | 22 | $('.wow').each(function () { 23 | 24 | if ($(this).css('visibility') == 'visible') { 25 | return; 26 | } 27 | 28 | if (windowHeight + scroll - 100 > getOffset(this) && scroll < getOffset(this) || windowHeight + scroll - 100 > getOffset(this) + $(this).height() && scroll < getOffset(this) + $(this).height() || windowHeight + scroll == $(document).height() && getOffset(this) + 100 > $(document).height()) { 29 | 30 | var index = $(this).index('.wow'); 31 | 32 | var delay = $(this).attr('data-wow-delay'); 33 | 34 | if (delay) { 35 | 36 | delay = $(this).attr('data-wow-delay').slice(0, -1 37 | 38 | ); 39 | var self = this; 40 | 41 | var timeout = parseFloat(delay) * 1000; 42 | 43 | $(self).addClass('animated'); 44 | $(self).css({ 45 | 'visibility': 'visible' 46 | }); 47 | $(self).css({ 48 | 'animation-delay': delay 49 | }); 50 | $(self).css({ 51 | 'animation-name': animationName[index] 52 | }); 53 | 54 | var removeTime = $(this).css('animation-duration').slice(0, -1) * 1000; 55 | 56 | if ($(this).attr('data-wow-delay')) { 57 | 58 | removeTime += $(this).attr('data-wow-delay').slice(0, -1) * 1000; 59 | } 60 | 61 | var self = this; 62 | 63 | setTimeout(function () { 64 | 65 | $(self).removeClass('animated'); 66 | }, removeTime); 67 | } else { 68 | 69 | $(this).addClass('animated'); 70 | $(this).css({ 71 | 'visibility': 'visible' 72 | }); 73 | $(this).css({ 74 | 'animation-name': animationName[index] 75 | }); 76 | 77 | var removeTime = $(this).css('animation-duration').slice(0, -1) * 1000; 78 | 79 | var self = this; 80 | 81 | setTimeout(function () { 82 | 83 | $(self).removeClass('animated'); 84 | }, removeTime); 85 | } 86 | } 87 | }); 88 | } 89 | 90 | function appear() { 91 | 92 | $('.wow').each(function () { 93 | 94 | var index = $(this).index('.wow'); 95 | 96 | var delay = $(this).attr('data-wow-delay'); 97 | 98 | if (delay) { 99 | 100 | delay = $(this).attr('data-wow-delay').slice(0, -1); 101 | 102 | var timeout = parseFloat(delay) * 1000; 103 | 104 | $(this).addClass('animated'); 105 | $(this).css({ 106 | 'visibility': 'visible' 107 | }); 108 | $(this).css({ 109 | 'animation-delay': delay + 's' 110 | }); 111 | $(this).css({ 112 | 'animation-name': animationName[index] 113 | }); 114 | } else { 115 | 116 | $(this).addClass('animated'); 117 | $(this).css({ 118 | 'visibility': 'visible' 119 | }); 120 | $(this).css({ 121 | 'animation-name': animationName[index] 122 | }); 123 | } 124 | }); 125 | } 126 | 127 | function hide() { 128 | 129 | var windowHeight = window.innerHeight; 130 | var scroll = window.scrollY; 131 | 132 | $('.wow.animated').each(function () { 133 | 134 | if (windowHeight + scroll - 100 > getOffset(this) && scroll > getOffset(this) + 100 || windowHeight + scroll - 100 < getOffset(this) && scroll < getOffset(this) + 100 || getOffset(this) + $(this).height > $(document).height() - 100) { 135 | 136 | $(this).removeClass('animated'); 137 | $(this).css({ 138 | 'animation-name': 'none' 139 | }); 140 | $(this).css({ 141 | 'visibility': 'hidden' 142 | }); 143 | } else { 144 | 145 | var removeTime = $(this).css('animation-duration').slice(0, -1) * 1000; 146 | 147 | if ($(this).attr('data-wow-delay')) { 148 | 149 | removeTime += $(this).attr('data-wow-delay').slice(0, -1) * 1000; 150 | } 151 | 152 | var self = this; 153 | 154 | setTimeout(function () { 155 | 156 | $(self).removeClass('animated'); 157 | }, removeTime); 158 | } 159 | }); 160 | 161 | mdbWow(); 162 | 163 | once--; 164 | } 165 | 166 | function getOffset(elem) { 167 | 168 | var box = elem.getBoundingClientRect(); 169 | 170 | var body = document.body; 171 | var docEl = document.documentElement; 172 | 173 | var scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop; 174 | 175 | var clientTop = docEl.clientTop || body.clientTop || 0; 176 | 177 | var top = box.top + scrollTop - clientTop; 178 | 179 | return Math.round(top); 180 | } 181 | 182 | $('.wow').each(function () { 183 | 184 | $(this).css({ 185 | 'visibility': 'hidden' 186 | }); 187 | animationName[$(this).index('.wow')] = $(this).css('animation-name'); 188 | $(this).css({ 189 | 'animation-name': 'none' 190 | }); 191 | }); 192 | 193 | $(window).scroll(function () { 194 | 195 | if (once) { 196 | 197 | hide(); 198 | } else { 199 | 200 | mdbWow(); 201 | } 202 | }); 203 | 204 | appear(); 205 | } 206 | }; 207 | }; 208 | })(jQuery); 209 | -------------------------------------------------------------------------------- /scss/_custom-skin.scss: -------------------------------------------------------------------------------- 1 | // Your custom skin 2 | // Skins 3 | $skins: () !default; 4 | $skins: map-merge(( 5 | "test": ( 6 | "skin-primary-color": #fff, 7 | "skin-navbar": #fff, 8 | "skin-footer-color": #fff, 9 | "skin-flat": #fff, 10 | "skin-accent": #fff, 11 | "skin-sidenav-item": #fff, 12 | "skin-sidenav-item-hover": #fff, 13 | "skin-gradient-start": #fff, 14 | "skin-gradient-end": #fff, 15 | "skin-mask-slight": #fff, 16 | "skin-mask-light": #fff, 17 | "skin-mask-strong": #fff, 18 | "skin-sn-child": #fff, 19 | "skin-btn-primary": #fff, 20 | "skin-btn-secondary": #fff, 21 | "skin-btn-default": #fff, 22 | "skin-text": #fff 23 | ) 24 | ), $skins); 25 | 26 | -------------------------------------------------------------------------------- /scss/_custom-styles.scss: -------------------------------------------------------------------------------- 1 | // Your custom styles 2 | -------------------------------------------------------------------------------- /scss/_custom-variables.scss: -------------------------------------------------------------------------------- 1 | // Your custom variables 2 | -------------------------------------------------------------------------------- /scss/addons/_datatables-select.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * MDBootstrap integration with Datatables 3 | * Learn more: https://mdbootstrap.com/docs/jquery/tables/datatables/ 4 | * About MDBootstrap: https://mdbootstrap.com/ 5 | * 6 | * This combined file was created taking that code from this webstie: 7 | * https://cdn.datatables.net/select/1.2.7/css/select.dataTables.min.css 8 | * 9 | * 10 | * To rebuild or modify this file with the latest versions of the included 11 | * software please visit: 12 | * https://datatables.net/download/#bs4/dt-1.10.18 13 | * 14 | * Included libraries: 15 | * DataTables 1.10.18 16 | */ 17 | 18 | table { 19 | &.dataTable { 20 | tbody > tr { 21 | &.selected, 22 | > .selected { 23 | background-color: #b0bed9; 24 | } 25 | } 26 | &.stripe, &.display { 27 | tbody > tr.odd { 28 | &.selected, 29 | > .selected { 30 | background-color: #acbad4; 31 | } 32 | } 33 | } 34 | &.hover, &.display { 35 | tbody > tr { 36 | &.selected:hover, 37 | > .selected:hover { 38 | background-color: #aab7d1; 39 | } 40 | } 41 | } 42 | &.order-column, &.display { 43 | tbody > tr { 44 | &.selected > { 45 | .sorting_1, .sorting_2, .sorting_3 { 46 | background-color: #acbad5; 47 | } 48 | } 49 | > .selected { 50 | background-color: #acbad5; 51 | } 52 | } 53 | } 54 | &.display, &.order-column.stripe { 55 | tbody > tr { 56 | &.odd.selected > .sorting_1 { 57 | background-color: #a6b4cd; 58 | } 59 | } 60 | } 61 | &.display tbody > tr.odd.selected > .sorting_2, &.order-column.stripe tbody > tr.odd.selected > .sorting_2 { 62 | background-color: #a8b5cf; 63 | } 64 | &.display tbody > tr.odd.selected > .sorting_3, &.order-column.stripe tbody > tr.odd.selected > .sorting_3 { 65 | background-color: #a9b7d1; 66 | } 67 | &.display tbody > tr.even.selected > .sorting_1, &.order-column.stripe tbody > tr.even.selected > .sorting_1 { 68 | background-color: #acbad5; 69 | } 70 | &.display tbody > tr.even.selected > .sorting_2, &.order-column.stripe tbody > tr.even.selected > .sorting_2 { 71 | background-color: #aebcd6; 72 | } 73 | &.display tbody > tr.even.selected > .sorting_3, &.order-column.stripe tbody > tr.even.selected > .sorting_3 { 74 | background-color: #afbdd8; 75 | } 76 | &.display tbody > tr.odd > .selected, &.order-column.stripe tbody > tr.odd > .selected { 77 | background-color: #a6b4cd; 78 | } 79 | &.display tbody > tr.even > .selected, &.order-column.stripe tbody > tr.even > .selected { 80 | background-color: #acbad5; 81 | } 82 | &.display tbody > tr.selected:hover > .sorting_1, &.order-column.hover tbody > tr.selected:hover > .sorting_1 { 83 | background-color: #a2aec7; 84 | } 85 | &.display tbody > tr.selected:hover > .sorting_2, &.order-column.hover tbody > tr.selected:hover > .sorting_2 { 86 | background-color: #a3b0c9; 87 | } 88 | &.display tbody > tr.selected:hover > .sorting_3, &.order-column.hover tbody > tr.selected:hover > .sorting_3 { 89 | background-color: #a5b2cb; 90 | } 91 | &.display, &.order-column.hover { 92 | tbody > tr { 93 | &:hover > .selected, > .selected:hover { 94 | background-color: #a2aec7; 95 | } 96 | } 97 | } 98 | tbody { 99 | td, th { 100 | &.select-checkbox { 101 | position: relative; 102 | &:before, 103 | &:after { 104 | position: absolute; 105 | top: 1.2em; 106 | left: 50%; 107 | box-sizing: border-box; 108 | display: block; 109 | width: 12px; 110 | height: 12px; 111 | } 112 | } 113 | } 114 | td.select-checkbox:before, 115 | th.select-checkbox:before { 116 | margin-top: 4px; 117 | margin-left: -6px; 118 | content: " "; 119 | border: 1px solid #000; 120 | border-radius: 3px; 121 | } 122 | } 123 | tr.selected { 124 | td.select-checkbox:after, 125 | th.select-checkbox:after { 126 | margin-top: 0; 127 | margin-left: -4px; 128 | text-align: center; 129 | text-shadow: 1px 1px #b0bed9, -1px -1px #b0bed9, 1px -1px #b0bed9, -1px 1px #b0bed9; 130 | content: "\2714"; 131 | } 132 | } 133 | } 134 | } 135 | 136 | div.dataTables_wrapper span { 137 | &.select-info, &.select-item { 138 | margin-left: .5em; 139 | } 140 | } 141 | 142 | @media screen and (max-width: 640px) { 143 | div.dataTables_wrapper span { 144 | &.select-info, &.select-item { 145 | display: block; 146 | margin-left: 0; 147 | } 148 | } 149 | } 150 | -------------------------------------------------------------------------------- /scss/addons/_datatables.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * MDBootstrap integration with Datatables 3 | * Learn more: https://mdbootstrap.com/docs/jquery/tables/datatables/ 4 | * About MDBootstrap: https://mdbootstrap.com/ 5 | * 6 | * This combined file was created by the DataTables downloader builder: 7 | * https://datatables.net/download 8 | * 9 | * To rebuild or modify this file with the latest versions of the included 10 | * software please visit: 11 | * https://datatables.net/download/#bs4/dt-1.10.18 12 | * 13 | * Included libraries: 14 | * DataTables 1.10.18 15 | */ 16 | 17 | div.dataTables_wrapper div { 18 | &.dataTables_length { 19 | select, input { 20 | width: auto; 21 | } 22 | &.d-flex.flex-row { 23 | label { 24 | margin-top: 1.2rem; 25 | margin-right: 1rem; 26 | } 27 | .select-wrapper.mdb-select { 28 | span, .select-dropdown { 29 | margin-top: 1rem; 30 | } 31 | } 32 | } 33 | } 34 | &.dataTables_length, 35 | &.dataTables_filter { 36 | label { 37 | padding-top: .5rem; 38 | padding-bottom: .5rem; 39 | font-weight: 400; 40 | text-align: left; 41 | } 42 | } 43 | &.dataTables_filter { 44 | select, 45 | input { 46 | width: auto; 47 | } 48 | input { 49 | display: inline-block; 50 | margin-left: .5rem; 51 | } 52 | text-align: right; 53 | } 54 | &.dataTables_info, 55 | &.dataTables_paginate { 56 | padding-top: 1rem; 57 | padding-bottom: 1rem; 58 | font-weight: 400; 59 | } 60 | &.dataTables_paginate { 61 | margin: 0; 62 | text-align: right; 63 | ul.pagination { 64 | -ms-flex-pack: end; 65 | -webkit-justify-content: flex-end; 66 | justify-content: flex-end; 67 | -webkit-box-pack: end; 68 | .page-item { 69 | &.active .page-link:focus { 70 | background-color: #4285f4; 71 | } 72 | .page-link:focus { 73 | -webkit-box-shadow: none; 74 | box-shadow: none; 75 | } 76 | } 77 | } 78 | } 79 | } 80 | 81 | @media (max-width: 767px) { 82 | div.dataTables_wrapper div { 83 | .dataTables_length, .dataTables_filter, .dataTables_info, .dataTables_paginate ul.pagination { 84 | -ms-flex-pack: center; 85 | -webkit-justify-content: center; 86 | justify-content: center; 87 | text-align: center; 88 | -webkit-box-pack: center; 89 | } 90 | } 91 | } 92 | 93 | .bs-select select { 94 | display: inline-block !important; 95 | } 96 | 97 | table.dataTable thead { 98 | cursor: pointer; 99 | > tr > { 100 | th, 101 | td { 102 | &.sorting_asc, &.sorting_desc, &.sorting { 103 | padding-right: 30px; 104 | } 105 | } 106 | th:active, td:active { 107 | outline: none; 108 | } 109 | } 110 | .sorting, 111 | .sorting_asc, 112 | .sorting_desc, 113 | .sorting_asc_disabled, 114 | .sorting_desc_disabled { 115 | position: relative; 116 | cursor: pointer; 117 | &:before, &:after { 118 | position: absolute; 119 | bottom: .9em; 120 | display: block; 121 | opacity: .3; 122 | } 123 | } 124 | .sorting:before, .sorting_asc:before, .sorting_desc:before, .sorting_asc_disabled:before, .sorting_desc_disabled:before { 125 | right: 1em; 126 | font-family: "Font Awesome\ 5 Free", sans-serif; 127 | font-size: 1rem; 128 | font-weight: 900; 129 | content: "\f0de"; 130 | } 131 | .sorting:after, .sorting_asc:after, .sorting_desc:after, .sorting_asc_disabled:after, .sorting_desc_disabled:after { 132 | right: 16px; 133 | font-family: "Font Awesome\ 5 Free", sans-serif; 134 | font-size: 1rem; 135 | font-weight: 900; 136 | content: "\f0dd"; 137 | } 138 | .sorting_asc:before, .sorting_desc:after { 139 | opacity: 1; 140 | } 141 | .sorting_asc_disabled:before, .sorting_desc_disabled:after { 142 | opacity: 0; 143 | } 144 | } 145 | -------------------------------------------------------------------------------- /scss/addons/_directives.scss: -------------------------------------------------------------------------------- 1 | // Optional directives 2 | @each $key in (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100) { 3 | .opacity-#{$key} { 4 | opacity: $key * .01; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /scss/addons/_hierarchical-display.scss: -------------------------------------------------------------------------------- 1 | .zmd-hierarchical-display { 2 | visibility: hidden; 3 | &.in { 4 | visibility: visible; 5 | } 6 | } 7 | .zmd-hierarchical-displaying { 8 | visibility: visible; 9 | } 10 | 11 | .animation { 12 | animation-duration: 1s; 13 | animation-fill-mode: both; 14 | } 15 | 16 | .animation.zoomedIn, 17 | .animation.zoomedOut { 18 | animation-timing-function: cubic-bezier(.55, 0, .1, 1); // "Swift Out" easing curve 19 | } 20 | 21 | @keyframes zoomedIn { 22 | from { 23 | transform: scale(0); 24 | } 25 | to { 26 | transform: scale(1); 27 | } 28 | } 29 | 30 | @keyframes zoomedOut { 31 | from { 32 | transform: scale(1); 33 | } 34 | to { 35 | transform: scale(0); 36 | } 37 | } 38 | 39 | .zoomedIn { 40 | animation-name: zoomedIn; 41 | } 42 | 43 | .zoomedOut { 44 | animation-name: zoomedOut; 45 | } 46 | 47 | -------------------------------------------------------------------------------- /scss/addons/_rating.scss: -------------------------------------------------------------------------------- 1 | .mdb-rating { 2 | 3 | .rate-popover { 4 | color: #808080; 5 | } 6 | 7 | .live { 8 | color: #000; 9 | } 10 | 11 | .oneStar { 12 | color: #44370f; 13 | } 14 | 15 | .twoStars { 16 | color: #96781e; 17 | } 18 | 19 | .threeStars { 20 | color: #e2b52e; 21 | } 22 | 23 | .fourStars { 24 | color: #f1ba12; 25 | } 26 | 27 | .fiveStars { 28 | color: #f3cb06; 29 | } 30 | 31 | .amber-text { 32 | color: #ffc107; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /scss/core/_global.scss: -------------------------------------------------------------------------------- 1 | // Globals 2 | // Full palette of colors 3 | @each $color_name, $color in $mdb-colors-1 { 4 | @each $color_type, $color_value in $color { 5 | @if $color_type == "base" { 6 | .#{$color_name} { 7 | background-color: $color_value !important; 8 | } 9 | .#{$color_name}-text { 10 | color: $color-value !important; 11 | } 12 | .rgba-#{$color_name}-slight, 13 | .rgba-#{$color_name}-slight:after { 14 | background-color: rgba($color_value, .1); 15 | } 16 | .rgba-#{$color_name}-light, 17 | .rgba-#{$color_name}-light:after { 18 | background-color: rgba($color_value, .3); 19 | } 20 | .rgba-#{$color_name}-strong, 21 | .rgba-#{$color_name}-strong:after { 22 | background-color: rgba($color_value, .7); 23 | } 24 | } 25 | @else { 26 | @if $enable_full_palette { 27 | .#{$color_name}.#{$color_type} { 28 | background-color: $color_value !important; 29 | } 30 | } 31 | } 32 | } 33 | } 34 | 35 | // Stylish color 36 | @each $color_name, $color_value in $stylish-rgba { 37 | .#{$color_name} { 38 | background-color: $color_value; 39 | } 40 | } 41 | 42 | // Material colors palette 43 | @each $color_name, $color in $material-colors { 44 | .#{$color_name} { 45 | background-color: $color !important; 46 | } 47 | } 48 | 49 | // Basic gradients 50 | @each $name, $val in $gradients { 51 | @include make-gradient($name, $val); 52 | } 53 | @each $name, $val in $gradients-rgba { 54 | @include make-gradient-rgba($name, $val); 55 | } 56 | 57 | .dark-grey-text { 58 | color: #4f4f4f !important; 59 | &:hover, 60 | &:focus { 61 | color: #4f4f4f !important; 62 | } 63 | } 64 | 65 | // Shadow on hover 66 | .hoverable { 67 | box-shadow: none; 68 | transition: $transition-hoverable; 69 | &:hover { 70 | box-shadow: $z-depth-2; 71 | transition: $transition-hoverable; 72 | } 73 | } 74 | 75 | // Shadows 76 | .z-depth-0 { 77 | box-shadow: none !important; 78 | } 79 | .z-depth-1 { 80 | box-shadow: $z-depth-1 !important; 81 | } 82 | .z-depth-1-half { 83 | box-shadow: $z-depth-1-half !important; 84 | } 85 | .z-depth-2 { 86 | box-shadow: $z-depth-2 !important; 87 | } 88 | .z-depth-3 { 89 | box-shadow: $z-depth-3 !important; 90 | } 91 | .z-depth-4 { 92 | box-shadow: $z-depth-4 !important; 93 | } 94 | .z-depth-5 { 95 | box-shadow: $z-depth-5 !important; 96 | } 97 | 98 | // Disabled cursor 99 | .disabled, 100 | :disabled { 101 | pointer-events: none !important; 102 | } 103 | 104 | // Links 105 | a { 106 | color: $link-color; 107 | text-decoration: none; 108 | cursor: pointer; 109 | transition: $transition-basic; 110 | &:hover { 111 | color: $link-hover-color; 112 | text-decoration: none; 113 | transition: $transition-basic; 114 | } 115 | &.disabled, 116 | &:disabled { 117 | &:hover { 118 | color: $link-color; 119 | } 120 | } 121 | } 122 | 123 | a:not([href]):not([tabindex]), a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover { 124 | color: inherit; 125 | text-decoration: none; 126 | } 127 | 128 | // Divider 129 | .divider-new { 130 | display: flex; 131 | flex-direction: row; 132 | align-items: center; 133 | justify-content: center; 134 | margin-top: $divider-margin-y; 135 | margin-bottom: $divider-margin-y; 136 | > h1, h2, h3, h4, h5, h6 { 137 | margin-bottom: 0; 138 | } 139 | &:before, 140 | &:after { 141 | flex: 1; 142 | height: 1.5px; 143 | height: $divider-height; 144 | content: ""; 145 | background: #c6c6c6; 146 | } 147 | &:before { 148 | margin: 0 $divider-margin-x 0 0; 149 | } 150 | &:after { 151 | margin: 0 0 0 $divider-margin-x; 152 | } 153 | } 154 | -------------------------------------------------------------------------------- /scss/core/_helpers.scss: -------------------------------------------------------------------------------- 1 | // Helpers 2 | // MDB helpers 3 | .img-fluid, 4 | .video-fluid { 5 | max-width: 100%; 6 | height: auto; 7 | } 8 | 9 | .flex-center { 10 | display: flex; 11 | align-items: center; 12 | justify-content: center; 13 | height: 100%; 14 | 15 | p { 16 | margin: 0; 17 | } 18 | 19 | ul { 20 | text-align: center; 21 | 22 | li { 23 | margin-bottom: $flex-center-ul-mb; 24 | 25 | &:last-of-type { 26 | margin-bottom: 0; 27 | } 28 | } 29 | } 30 | } 31 | 32 | .hr-light { 33 | border-top: 1px solid $hr-light; 34 | } 35 | 36 | .hr-dark { 37 | border-top: 1px solid $hr-dark; 38 | } 39 | 40 | // Responsive width 41 | .w-responsive { 42 | width: 75%; 43 | 44 | @media (max-width: 740px) { 45 | width: 100%; 46 | } 47 | } 48 | 49 | // Collapsible body 50 | .collapsible-body { 51 | display: none; 52 | } 53 | 54 | .jumbotron { 55 | background-color: $white-base; 56 | border-radius: $border-radius-base; 57 | box-shadow: $z-depth-1; 58 | } 59 | 60 | @each $name, 61 | $color in $basic-mdb-colors { 62 | @include bg-variant(".bg-#{$name}", $color); 63 | 64 | .border-#{$name} { 65 | border-color: $color !important; 66 | } 67 | } 68 | 69 | .card-img-100 { 70 | width: 100px; 71 | height: 100px; 72 | } 73 | 74 | .card-img-64 { 75 | width: 64px; 76 | height: 64px; 77 | } 78 | 79 | .mml-1 { 80 | margin-left: - .25rem !important; 81 | } 82 | 83 | .flex-1 { 84 | flex: 1; 85 | } 86 | -------------------------------------------------------------------------------- /scss/core/_masks.scss: -------------------------------------------------------------------------------- 1 | // Masks 2 | // General properties 3 | .view { 4 | position: relative; 5 | overflow: hidden; 6 | cursor: default; 7 | .mask { 8 | position: absolute; 9 | top: 0; 10 | right: 0; 11 | bottom: 0; 12 | left: 0; 13 | width: 100%; 14 | height: 100%; 15 | overflow: hidden; 16 | background-attachment: fixed; 17 | } 18 | img, video { 19 | position: relative; 20 | display: block; 21 | } 22 | video { 23 | &.video-intro { 24 | top: 50%; 25 | left: 50%; 26 | z-index: -100; 27 | width: auto; 28 | min-width: 100%; 29 | height: auto; 30 | min-height: 100%; 31 | transition: $intro-video-transition opacity; 32 | transform: $intro-video-transform; 33 | } 34 | } 35 | } 36 | 37 | // Overlay 38 | .overlay { 39 | .mask { 40 | opacity: 0; 41 | transition: $mask-overlay-transition; 42 | &:hover { 43 | opacity: 1; 44 | } 45 | } 46 | } 47 | 48 | // Zoom 49 | .zoom { 50 | img, video { 51 | transition: $mask-zoom-transition; 52 | } 53 | &:hover { 54 | img, video { 55 | transform: $mask-zoom-transform; 56 | } 57 | } 58 | } 59 | 60 | // Patterns 61 | $patterns: ( 62 | 1: "01", 63 | 2: "02", 64 | 3: "03", 65 | 4: "04", 66 | 5: "05", 67 | 6: "06", 68 | 7: "07", 69 | 8: "08", 70 | 9: "09" 71 | ) !default; 72 | 73 | @each $no, $filename in $patterns { 74 | .pattern-#{$no} { 75 | background: url("#{$image-path}/overlays/#{$filename}.png"); 76 | background-attachment: fixed; 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /scss/core/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // Bootstrap Mixins 3 | @function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) { 4 | $n: index($breakpoint-names, $name); 5 | @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null); 6 | } 7 | 8 | @function breakpoint-min($name, $breakpoints: $grid-breakpoints) { 9 | $min: map-get($breakpoints, $name); 10 | @return if($min !=0, $min, null); 11 | } 12 | 13 | @function breakpoint-max($name, $breakpoints: $grid-breakpoints) { 14 | $next: breakpoint-next($name, $breakpoints); 15 | @return if($next, breakpoint-min($next, $breakpoints) - .02px, null); 16 | } 17 | 18 | // Media of at least the minimum breakpoint width. No query for the smallest breakpoint. 19 | // Makes the @content apply to the given breakpoint and wider. 20 | @mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) { 21 | $min: breakpoint-min($name, $breakpoints); 22 | 23 | @if $min { 24 | @media (min-width: $min) { 25 | @content; 26 | } 27 | } 28 | 29 | @else { 30 | @content; 31 | } 32 | } 33 | 34 | // Media of at most the maximum breakpoint width. No query for the largest breakpoint. 35 | // Makes the @content apply to the given breakpoint and narrower. 36 | @mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) { 37 | $max: breakpoint-max($name, $breakpoints); 38 | 39 | @if $max { 40 | @media (max-width: $max) { 41 | @content; 42 | } 43 | } 44 | 45 | @else { 46 | @content; 47 | } 48 | } 49 | 50 | // Media that spans multiple breakpoint widths. 51 | // Makes the @content apply between the min and max breakpoints 52 | @mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) { 53 | $min: breakpoint-min($lower, $breakpoints); 54 | $max: breakpoint-max($upper, $breakpoints); 55 | 56 | @if $min !=null and $max !=null { 57 | @media (min-width: $min) and (max-width: $max) { 58 | @content; 59 | } 60 | } 61 | 62 | @else if $max==null { 63 | @include media-breakpoint-up($lower, $breakpoints) { 64 | @content; 65 | } 66 | } 67 | 68 | @else if $min==null { 69 | @include media-breakpoint-down($upper, $breakpoints) { 70 | @content; 71 | } 72 | } 73 | } 74 | 75 | // Media between the breakpoint's minimum and maximum widths. 76 | // No minimum for the smallest breakpoint, and no maximum for the largest one. 77 | // Makes the @content apply only to the given breakpoint, not viewports any wider or narrower. 78 | @mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) { 79 | $min: breakpoint-min($name, $breakpoints); 80 | $max: breakpoint-max($name, $breakpoints); 81 | 82 | @if $min !=null and $max !=null { 83 | @media (min-width: $min) and (max-width: $max) { 84 | @content; 85 | } 86 | } 87 | 88 | @else if $max==null { 89 | @include media-breakpoint-up($name, $breakpoints) { 90 | @content; 91 | } 92 | } 93 | 94 | @else if $min==null { 95 | @include media-breakpoint-down($name, $breakpoints) { 96 | @content; 97 | } 98 | } 99 | } 100 | 101 | @function breakpoint-infix($name, $breakpoints: $grid-breakpoints) { 102 | @return if(breakpoint-min($name, $breakpoints)==null, "", "-#{$name}"); 103 | } 104 | 105 | @mixin hover { 106 | &:hover { @content; } 107 | } 108 | 109 | @mixin hover-focus { 110 | &:hover, 111 | &:focus { 112 | @content; 113 | } 114 | } 115 | 116 | // Background color 117 | @mixin bg-variant($parent, $color) { 118 | #{$parent} { 119 | background-color: $color !important; 120 | } 121 | 122 | a#{$parent}, 123 | button#{$parent} { 124 | @include hover-focus { 125 | background-color: darken($color, 10%) !important; 126 | } 127 | } 128 | } 129 | 130 | // Typography 131 | @mixin text-emphasis-variant($parent, $color) { 132 | #{$parent} { 133 | color: $color !important; 134 | } 135 | 136 | a#{$parent} { 137 | @include hover-focus { 138 | color: darken($color, 10%) !important; 139 | } 140 | } 141 | } 142 | 143 | // Placeholder 144 | @mixin placeholder { 145 | &::placeholder { 146 | @content; 147 | } 148 | } 149 | 150 | /// Grid system 151 | // 152 | // Generate semantic grid columns with these mixins. 153 | 154 | @mixin make-container($gutter: $grid-gutter-width) { 155 | width: 100%; 156 | padding-right: $gutter / 2; 157 | padding-left: $gutter / 2; 158 | margin-right: auto; 159 | margin-left: auto; 160 | } 161 | 162 | // For each breakpoint, define the maximum width of the container in a media query 163 | @mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) { 164 | 165 | @each $breakpoint, 166 | $container-max-width in $max-widths { 167 | @include media-breakpoint-up($breakpoint, $breakpoints) { 168 | max-width: $container-max-width; 169 | } 170 | } 171 | } 172 | 173 | @mixin make-row() { 174 | display: flex; 175 | flex-wrap: wrap; 176 | margin-right: ($grid-gutter-width / -2); 177 | margin-left: ($grid-gutter-width / -2); 178 | } 179 | 180 | @mixin make-col-ready() { 181 | position: relative; 182 | // Prevent columns from becoming too narrow when at smaller grid tiers by 183 | // always setting `width: 100%;`. This works because we use `flex` values 184 | // later on to override this initial width. 185 | width: 100%; 186 | min-height: 1px; // Prevent collapsing 187 | padding-right: ($grid-gutter-width / 2); 188 | padding-left: ($grid-gutter-width / 2); 189 | } 190 | 191 | @mixin make-col($size, $columns: $grid-columns) { 192 | flex: 0 0 percentage($size / $columns); 193 | // Add a `max-width` to ensure content within each column does not blow out 194 | // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari 195 | // do not appear to require this. 196 | max-width: percentage($size / $columns); 197 | } 198 | 199 | @mixin make-col-offset($size, $columns: $grid-columns) { 200 | $num: $size / $columns; 201 | margin-left: if($num==0, 0, percentage($num)); 202 | } 203 | 204 | @mixin clearfix() { 205 | &::after { 206 | display: block; 207 | clear: both; 208 | content: ""; 209 | } 210 | } 211 | 212 | @mixin float-left { 213 | float: left !important; 214 | } 215 | 216 | @mixin float-right { 217 | float: right !important; 218 | } 219 | 220 | @mixin float-none { 221 | float: none !important; 222 | } 223 | 224 | // CSS image replacement 225 | @mixin text-hide($ignore-warning: false) { 226 | // stylelint-disable-next-line font-family-no-missing-generic-family-keyword 227 | font: 0/0 a; 228 | color: transparent; 229 | text-shadow: none; 230 | background-color: transparent; 231 | border: 0; 232 | 233 | @if ($ignore-warning !=true) { 234 | @warn "The `text-hide()` mixin has been deprecated as of v4.1.0. It will be removed entirely in v5."; 235 | } 236 | } 237 | 238 | // Only display content to screen readers 239 | // 240 | // See: https://a11yproject.com/posts/how-to-hide-content/ 241 | // See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/ 242 | 243 | @mixin sr-only { 244 | position: absolute; 245 | width: 1px; 246 | height: 1px; 247 | padding: 0; 248 | overflow: hidden; 249 | clip: rect(0, 0, 0, 0); 250 | white-space: nowrap; 251 | border: 0; 252 | } 253 | 254 | // Use in conjunction with .sr-only to only display content when it's focused. 255 | // 256 | // Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 257 | // 258 | // Credit: HTML5 Boilerplate 259 | 260 | @mixin sr-only-focusable { 261 | 262 | &:active, 263 | &:focus { 264 | position: static; 265 | width: auto; 266 | height: auto; 267 | overflow: visible; 268 | clip: auto; 269 | white-space: normal; 270 | } 271 | } 272 | 273 | @mixin invisible($visibility) { 274 | visibility: $visibility !important; 275 | } 276 | 277 | // MDB Mixins 278 | @mixin hover-focus-active { 279 | &:hover, 280 | &:focus, 281 | &:active { 282 | @content; 283 | } 284 | } 285 | 286 | // Set the color of the button and badge 287 | @function set-notification-text-color($color) { 288 | @if (lightness($color) > 80) { 289 | @return $black-base; // Lighter backgorund, return dark color 290 | } 291 | 292 | @else { 293 | @return $white-base; // Darker background, return light color 294 | } 295 | } 296 | 297 | // Make button 298 | @mixin make-button ($name, $color) { 299 | .btn-#{$name} { 300 | color: set-notification-text-color($color); 301 | background-color: $color !important; 302 | 303 | &:hover { 304 | color: set-notification-text-color($color); 305 | background-color: lighten($color, 5%); 306 | } 307 | 308 | &:focus, 309 | &.focus { 310 | box-shadow: $z-depth-1-half; 311 | } 312 | 313 | &:focus, 314 | &:active, 315 | &.active { 316 | background-color: darken($color, 20%); 317 | } 318 | 319 | &.dropdown-toggle { 320 | background-color: $color !important; 321 | 322 | &:hover, 323 | &:focus { 324 | background-color: lighten($color, 5%) !important; 325 | } 326 | } 327 | 328 | &:not([disabled]):not(.disabled):active, 329 | &:not([disabled]):not(.disabled).active, 330 | .show > &.dropdown-toggle { 331 | background-color: darken($color, 20%) !important; 332 | box-shadow: $z-depth-1-half; 333 | } 334 | 335 | &:not([disabled]):not(.disabled):active:focus, 336 | &:not([disabled]):not(.disabled).active:focus, 337 | .show > &.dropdown-toggle:focus { 338 | box-shadow: $z-depth-1-half; 339 | } 340 | } 341 | 342 | .#{$name}-ic { 343 | color: $color !important; 344 | 345 | &:hover, 346 | &:focus { 347 | color: $color; 348 | } 349 | } 350 | 351 | a.btn:not([href]):not([tabindex]), 352 | a.btn:not([href]):not([tabindex]):focus, 353 | a.btn:not([href]):not([tabindex]):hover { 354 | color: set-notification-text-color($color); 355 | } 356 | table { 357 | &.table { 358 | a { 359 | &.btn { 360 | &.btn-#{$name} { 361 | color: set-notification-text-color($color); 362 | } 363 | } 364 | } 365 | } 366 | } 367 | } 368 | 369 | // Make outline button 370 | @mixin make-outline-button ($name, $color) { 371 | .btn-outline-#{$name} { 372 | color: $color !important; 373 | background-color: transparent !important; 374 | border: 2px solid $color !important; 375 | 376 | &:hover, 377 | &:focus, 378 | &:active, 379 | &:active:focus, 380 | &.active { 381 | color: $color !important; 382 | background-color: transparent !important; 383 | border-color: $color !important; 384 | } 385 | 386 | &:not([disabled]):not(.disabled):active, 387 | &:not([disabled]):not(.disabled).active, 388 | .show > &.dropdown-toggle { 389 | background-color: transparent !important; 390 | border-color: $color !important; 391 | box-shadow: $z-depth-1-half; 392 | } 393 | 394 | &:not([disabled]):not(.disabled):active:focus, 395 | &:not([disabled]):not(.disabled).active:focus, 396 | .show > &.dropdown-toggle:focus { 397 | box-shadow: $z-depth-1-half; 398 | } 399 | } 400 | } 401 | 402 | // Make gradient 403 | @mixin make-gradient($name, $value) { 404 | .#{$name}-gradient { 405 | background: linear-gradient(40deg, map-get($value, start), map-get($value, end)) !important; 406 | } 407 | } 408 | 409 | $opacity: .9 !default; 410 | 411 | // Make gradient 412 | @mixin make-gradient-rgba($name, $value) { 413 | .#{$name}-gradient-rgba { 414 | background: linear-gradient(40deg, map-get($value, start), map-get($value, end)) !important; 415 | } 416 | } 417 | 418 | // Make gradient button 419 | @mixin make-gradient-button($name, $value) { 420 | .btn { 421 | &.#{$name}-gradient { 422 | color: $white-base; 423 | transition: .5s ease; 424 | 425 | &:hover, 426 | &:focus, 427 | &:active, 428 | &:active:focus &.active { 429 | background: linear-gradient(lighten(map-get($value, start), 5%), lighten(map-get($value, end), 5%)); 430 | } 431 | } 432 | } 433 | } 434 | 435 | // Button size 436 | @mixin button-size($padding-y, $padding-x, $font-size) { 437 | padding: $padding-y $padding-x; 438 | font-size: $font-size; 439 | } 440 | 441 | @mixin make-badge($name, $color) { 442 | .badge-#{$name} { 443 | color: set-notification-text-color($color) !important; 444 | background-color: $color !important; 445 | } 446 | } 447 | 448 | // Make input 449 | @mixin make-input($margin-bottom, $label-font-size, $label-active-font-size, $top, $prefix-font-size, $margin-left, $width, $margin-left-2) { 450 | .validate { 451 | margin-bottom: $margin-bottom; 452 | } 453 | 454 | label { 455 | font-size: $label-font-size; 456 | 457 | &.active { 458 | font-size: $label-active-font-size; 459 | } 460 | } 461 | 462 | .prefix { 463 | top: $top; 464 | font-size: $prefix-font-size; 465 | 466 | ~ input, 467 | ~ textarea { 468 | width: $width; 469 | margin-left: $margin-left; 470 | } 471 | 472 | ~ label { 473 | margin-left: $margin-left; 474 | } 475 | 476 | ~ .form-text { 477 | margin-left: $margin-left-2; 478 | } 479 | } 480 | } 481 | 482 | // Make navbar 483 | @mixin make-navbar($color-0, $background-image, $color, $color-2, $color-3) { 484 | .navbar-nav { 485 | .nav-item { 486 | .nav-link { 487 | &.disbled { 488 | color: $color-0; 489 | 490 | &:hover { 491 | color: $color-0; 492 | } 493 | } 494 | } 495 | } 496 | } 497 | 498 | .navbar-toggler-icon { 499 | cursor: pointer; 500 | background-image: $background-image; 501 | } 502 | 503 | .breadcrumb, 504 | .navbar-nav { 505 | .nav-item { 506 | .nav-link { 507 | color: $color; 508 | transition: $navbar-nav-transition; 509 | 510 | &:hover { 511 | color: $color-2; 512 | } 513 | } 514 | 515 | &.active > .nav-link { 516 | background-color: $color-3; 517 | 518 | &:hover { 519 | color: $color; 520 | } 521 | } 522 | } 523 | } 524 | 525 | .navbar-toggler { 526 | color: $color; 527 | } 528 | 529 | form { 530 | .md-form { 531 | input { 532 | border-bottom: 1px solid $color; 533 | 534 | &:focus:not([readonly]) { 535 | border-color: $input-md-focus-color; 536 | } 537 | } 538 | 539 | .form-control { 540 | color: $color; 541 | 542 | @include placeholder { 543 | font-weight: $navbar-font-weight; 544 | color: $color; 545 | } 546 | } 547 | } 548 | } 549 | } 550 | 551 | // Make floating button 552 | @mixin make-btn-floating($width, $height, $font-size, $line-height) { 553 | width: $width; 554 | height: $height; 555 | 556 | i { 557 | font-size: $font-size; 558 | line-height: $line-height; 559 | } 560 | } 561 | 562 | // Keyframes 563 | @mixin keyframes($animation-name) { 564 | @keyframes #{$animation-name} { 565 | @content; 566 | } 567 | } 568 | 569 | // Scroll bar and scroll spy width and height 570 | @mixin scroll-width($scrollbar-width) { 571 | width: $scrollbar-width; 572 | } 573 | 574 | @mixin scroll-height($scrollbar-height) { 575 | height: $scrollbar-height; 576 | } 577 | 578 | // Scroll spy font-weight 579 | @mixin scrollspy-font-weight($scrollspy-font-weight) { 580 | font-weight: $scrollspy-font-weight; 581 | } 582 | 583 | // Switch width and height 584 | @mixin switch-width-height($switchWidth, $switchHeight) { 585 | width: $switchWidth; 586 | height: $switchHeight; 587 | } 588 | 589 | // Make Box-shadows 590 | @mixin box-shadows($shadow...) { 591 | box-shadow: $shadow; 592 | } 593 | 594 | // Make Transition 595 | @mixin transition-main($transition...) { 596 | transition: $transition; 597 | } 598 | 599 | // Make border-radius scrollspy 600 | @mixin scrollspy-border-radius($scrollspy-radius) { 601 | border-radius: $scrollspy-radius; 602 | } 603 | 604 | // Make border-radius scrollspy 4rows 605 | @mixin scrollspy-border-radius-4rows($top-left, $top-right, $bottom-right, $bottom-left) { 606 | border-radius: $top-left $top-right $bottom-right $bottom-left; 607 | } 608 | 609 | //Make animation for progresss 610 | @mixin progress-animation-default($animation...) { 611 | animation: $animation; 612 | } 613 | 614 | //Make transform 615 | @mixin transform($transform...) { 616 | transform: $transform; 617 | } 618 | -------------------------------------------------------------------------------- /scss/core/_typography.scss: -------------------------------------------------------------------------------- 1 | // Typography 2 | 3 | // Roboto font 4 | @font-face { 5 | font-family: Roboto; 6 | font-weight: 200; 7 | src: local(Roboto Thin), url("#{$roboto-font-path}Roboto-Thin.eot"); 8 | src: url("#{$roboto-font-path}Roboto-Thin.eot?#iefix") format("embedded-opentype"), url("#{$roboto-font-path}Roboto-Thin.woff2") format("woff2"), url("#{$roboto-font-path}Roboto-Thin.woff") format("woff"), url("#{$roboto-font-path}Roboto-Thin.ttf") format("truetype"); 9 | } 10 | 11 | @font-face { 12 | font-family: Roboto; 13 | font-weight: 300; 14 | src: local(Roboto Light), url("#{$roboto-font-path}Roboto-Light.eot"); 15 | src: url("#{$roboto-font-path}Roboto-Light.eot?#iefix") format("embedded-opentype"), url("#{$roboto-font-path}Roboto-Light.woff2") format("woff2"), url("#{$roboto-font-path}Roboto-Light.woff") format("woff"), url("#{$roboto-font-path}Roboto-Light.ttf") format("truetype"); 16 | } 17 | 18 | @font-face { 19 | font-family: Roboto; 20 | font-weight: 400; 21 | src: local(Roboto Regular), url("#{$roboto-font-path}Roboto-Regular.eot"); 22 | src: url("#{$roboto-font-path}Roboto-Regular.eot?#iefix") format("embedded-opentype"), url("#{$roboto-font-path}Roboto-Regular.woff2") format("woff2"), url("#{$roboto-font-path}Roboto-Regular.woff") format("woff"), url("#{$roboto-font-path}Roboto-Regular.ttf") format("truetype"); 23 | } 24 | 25 | @font-face { 26 | font-family: Roboto; 27 | font-weight: 500; 28 | src: url("#{$roboto-font-path}Roboto-Medium.eot"); 29 | src: url("#{$roboto-font-path}Roboto-Medium.eot?#iefix") format("embedded-opentype"), url("#{$roboto-font-path}Roboto-Medium.woff2") format("woff2"), url("#{$roboto-font-path}Roboto-Medium.woff") format("woff"), url("#{$roboto-font-path}Roboto-Medium.ttf") format("truetype"); 30 | } 31 | 32 | @font-face { 33 | font-family: Roboto; 34 | font-weight: 700; 35 | src: url("#{$roboto-font-path}Roboto-Bold.eot"); 36 | src: url("#{$roboto-font-path}Roboto-Bold.eot?#iefix") format("embedded-opentype"), url("#{$roboto-font-path}Roboto-Bold.woff2") format("woff2"), url("#{$roboto-font-path}Roboto-Bold.woff") format("woff"), url("#{$roboto-font-path}Roboto-Bold.ttf") format("truetype"); 37 | } 38 | 39 | // General properties 40 | body { 41 | font-family: $mdb-font-family; 42 | font-weight: $font-weight-light; 43 | } 44 | 45 | h1, h2, h3, h4, h5, h6 { 46 | font-weight: $font-weight-light; 47 | } 48 | 49 | // Blockquote 50 | .blockquote { 51 | padding: $blockquote-padding-y $blockquote-padding-x; 52 | border-left: .25rem solid #eceeef; 53 | &.text-right { 54 | border-right: .25rem solid #eceeef; 55 | border-left: none; 56 | } 57 | .bq-title { 58 | margin-bottom: 0; 59 | font-size: $font-size-large; 60 | font-weight: 400; 61 | } 62 | p { 63 | padding: $blockquote-p-padding-y 0; 64 | font-size: $blockquote-p-font-size; 65 | } 66 | } 67 | 68 | @each $name, $color in $basic { 69 | .bq-#{$name} { 70 | border-left: 3px solid $color !important; 71 | .bq-title { 72 | color: $color !important; 73 | } 74 | } 75 | } 76 | 77 | // Responsive headings 78 | @each $key, $val in $grid-breakpoints { 79 | @include media-breakpoint-up($key) { 80 | $y: map-get($responsive-headings, $key); 81 | @each $name, $value in $y { 82 | .#{$name}-responsive { 83 | font-size: $value; 84 | } 85 | } 86 | } 87 | } 88 | 89 | @each $name, $color in $basic-mdb-colors { 90 | @include text-emphasis-variant(".text-#{$name}", $color); 91 | } 92 | 93 | .font-small { 94 | font-size: $font-size-small; 95 | } 96 | -------------------------------------------------------------------------------- /scss/core/_waves.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Waves v0.7.6 3 | * http://fian.my.id/Waves 4 | * 5 | * Copyright 2014-2018 Alfiana E. Sibuea and other contributors 6 | * Released under the MIT license 7 | * https://github.com/fians/Waves/blob/master/LICENSE */ 8 | 9 | @mixin waves-transition($transition){ 10 | -webkit-transition: $transition; 11 | -moz-transition: $transition; 12 | -o-transition: $transition; 13 | transition: $transition; 14 | } 15 | 16 | @mixin waves-transform($string){ 17 | -webkit-transform: $string; 18 | -moz-transform: $string; 19 | -ms-transform: $string; 20 | -o-transform: $string; 21 | transform: $string; 22 | } 23 | 24 | @mixin waves-box-shadow($shadow){ 25 | -webkit-box-shadow: $shadow; 26 | box-shadow: $shadow; 27 | } 28 | 29 | .waves-effect { 30 | position: relative; 31 | overflow: hidden; 32 | cursor: pointer; 33 | -webkit-user-select: none; 34 | -moz-user-select: none; 35 | -ms-user-select: none; 36 | user-select: none; 37 | -webkit-tap-highlight-color: transparent; 38 | 39 | .waves-ripple { 40 | $gradient: rgba(0, 0, 0, .2) 0,rgba(0, 0, 0, .3) 40%,rgba(0, 0, 0, .4) 50%,rgba(0, 0, 0, .5) 60%,rgba(255, 255, 255, 0) 70%; 41 | position: absolute; 42 | width: 100px; 43 | height: 100px; 44 | margin-top: -50px; 45 | margin-left: -50px; 46 | pointer-events: none; 47 | background: rgba(0, 0, 0, .2); 48 | background: radial-gradient($gradient); 49 | border-radius: 50%; 50 | opacity: 0; 51 | -webkit-transition-property: -webkit-transform, opacity; 52 | -moz-transition-property: -moz-transform, opacity; 53 | -o-transition-property: -o-transform, opacity; 54 | transition-property: transform, opacity; 55 | @include waves-transition(all .5s ease-out); 56 | @include waves-transform(scale(0) translate(0,0)); 57 | } 58 | 59 | &.waves-light .waves-ripple { 60 | $gradient: rgba(255, 255, 255, .2) 0,rgba(255, 255, 255, .3) 40%,rgba(255, 255, 255, .4) 50%,rgba(255, 255, 255, .5) 60%,rgba(255, 255, 255, 0) 70%; 61 | background: rgba(255, 255, 255, .4); 62 | background: radial-gradient($gradient); 63 | } 64 | 65 | &.waves-classic .waves-ripple { 66 | background: rgba(0, 0, 0, .2); 67 | } 68 | 69 | &.waves-classic.waves-light .waves-ripple { 70 | background: rgba(255, 255, 255, .4); 71 | } 72 | } 73 | 74 | .waves-notransition { 75 | @include waves-transition(none #{"!important"}); 76 | } 77 | 78 | .waves-button, 79 | .waves-circle { 80 | @include waves-transform(translateZ(0)); 81 | -webkit-mask-image: -webkit-radial-gradient(circle, #fff 100%, #000 100%); 82 | } 83 | 84 | .waves-button, 85 | .waves-button:hover, 86 | .waves-button:visited, 87 | .waves-button-input { 88 | z-index: 1; 89 | font-size: 1em; 90 | line-height: 1em; 91 | color: inherit; 92 | text-align: center; 93 | text-decoration: none; 94 | white-space: nowrap; 95 | vertical-align: middle; 96 | cursor: pointer; 97 | background-color: rgba(0, 0, 0, 0); 98 | border: none; 99 | outline: none; 100 | } 101 | 102 | .waves-button { 103 | padding: .85em 1.1em; 104 | border-radius: .2em; 105 | } 106 | 107 | .waves-button-input { 108 | padding: .85em 1.1em; 109 | margin: 0; 110 | } 111 | 112 | .waves-input-wrapper { 113 | position: relative; 114 | display: inline-block; 115 | vertical-align: middle; 116 | border-radius: .2em; 117 | 118 | &.waves-button { 119 | padding: 0; 120 | } 121 | 122 | .waves-button-input { 123 | position: relative; 124 | top: 0; 125 | left: 0; 126 | z-index: 1; 127 | } 128 | } 129 | 130 | .waves-circle { 131 | width: 2.5em; 132 | height: 2.5em; 133 | line-height: 2.5em; 134 | text-align: center; 135 | border-radius: 50%; 136 | } 137 | 138 | .waves-float { 139 | -webkit-mask-image: none; 140 | @include waves-box-shadow(0 1px 1.5px 1px rgba(0, 0, 0, .12)); 141 | @include waves-transition(all 300ms); 142 | 143 | &:active { 144 | @include waves-box-shadow(0 8px 20px 1px rgba(0, 0, 0, .3)); 145 | } 146 | } 147 | 148 | .waves-block { 149 | display: block; 150 | } 151 | 152 | a { 153 | &.waves-effect, 154 | &.waves-light { 155 | display: inline-block; 156 | } 157 | } 158 | -------------------------------------------------------------------------------- /scss/core/bootstrap/_functions.scss: -------------------------------------------------------------------------------- 1 | // Bootstrap functions 2 | // 3 | // Utility mixins and functions for evaluating source code across our variables, maps, and mixins. 4 | 5 | // Ascending 6 | // Used to evaluate Sass maps like our grid breakpoints. 7 | @mixin _assert-ascending($map, $map-name) { 8 | $prev-key: null; 9 | $prev-num: null; 10 | @each $key, $num in $map { 11 | @if $prev-num == null or unit($num) == "%" { 12 | // Do nothing 13 | } @else if not comparable($prev-num, $num) { 14 | @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !"; 15 | } @else if $prev-num >= $num { 16 | @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !"; 17 | } 18 | $prev-key: $key; 19 | $prev-num: $num; 20 | } 21 | } 22 | 23 | // Starts at zero 24 | // Used to ensure the min-width of the lowest breakpoint starts at 0. 25 | @mixin _assert-starts-at-zero($map, $map-name: "$grid-breakpoints") { 26 | $values: map-values($map); 27 | $first-value: nth($values, 1); 28 | @if $first-value != 0 { 29 | @warn "First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}."; 30 | } 31 | } 32 | 33 | // Replace `$search` with `$replace` in `$string` 34 | // Used on our SVG icon backgrounds for custom forms. 35 | // 36 | // @author Hugo Giraudel 37 | // @param {String} $string - Initial string 38 | // @param {String} $search - Substring to replace 39 | // @param {String} $replace ('') - New value 40 | // @return {String} - Updated string 41 | @function str-replace($string, $search, $replace: "") { 42 | $index: str-index($string, $search); 43 | 44 | @if $index { 45 | @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); 46 | } 47 | 48 | @return $string; 49 | } 50 | 51 | // Color contrast 52 | @function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) { 53 | $r: red($color); 54 | $g: green($color); 55 | $b: blue($color); 56 | 57 | $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000; 58 | 59 | @if ($yiq >= $yiq-contrasted-threshold) { 60 | @return $dark; 61 | } @else { 62 | @return $light; 63 | } 64 | } 65 | 66 | // Retrieve color Sass maps 67 | @function color($key: "blue") { 68 | @return map-get($colors, $key); 69 | } 70 | 71 | @function theme-color($key: "primary") { 72 | @return map-get($theme-colors, $key); 73 | } 74 | 75 | @function gray($key: "100") { 76 | @return map-get($grays, $key); 77 | } 78 | 79 | // Request a theme color level 80 | @function theme-color-level($color-name: "primary", $level: 0) { 81 | $color: theme-color($color-name); 82 | $color-base: if($level > 0, $black, $white); 83 | $level: abs($level); 84 | 85 | @return mix($color-base, $color, $level * $theme-color-interval); 86 | } 87 | -------------------------------------------------------------------------------- /scss/core/bootstrap/_rfs.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable property-blacklist, scss/dollar-variable-default 2 | 3 | // SCSS RFS mixin 4 | // 5 | // Automated font-resizing 6 | // 7 | // See https://github.com/twbs/rfs 8 | 9 | // Configuration 10 | 11 | // Base font size 12 | $rfs-base-font-size: 1.25rem !default; 13 | $rfs-font-size-unit: rem !default; 14 | 15 | // Breakpoint at where font-size starts decreasing if screen width is smaller 16 | $rfs-breakpoint: 1200px !default; 17 | $rfs-breakpoint-unit: px !default; 18 | 19 | // Resize font-size based on screen height and width 20 | $rfs-two-dimensional: false !default; 21 | 22 | // Factor of decrease 23 | $rfs-factor: 10 !default; 24 | 25 | @if type-of($rfs-factor) != "number" or $rfs-factor <= 1 { 26 | @error "`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1."; 27 | } 28 | 29 | // Generate enable or disable classes. Possibilities: false, "enable" or "disable" 30 | $rfs-class: false !default; 31 | 32 | // 1 rem = $rfs-rem-value px 33 | $rfs-rem-value: 16 !default; 34 | 35 | // Safari iframe resize bug: https://github.com/twbs/rfs/issues/14 36 | $rfs-safari-iframe-resize-bug-fix: false !default; 37 | 38 | // Disable RFS by setting $enable-responsive-font-sizes to false 39 | $enable-responsive-font-sizes: true !important; 40 | 41 | // Cache $rfs-base-font-size unit 42 | $rfs-base-font-size-unit: unit($rfs-base-font-size); 43 | 44 | // Remove px-unit from $rfs-base-font-size for calculations 45 | @if $rfs-base-font-size-unit == "px" { 46 | $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1); 47 | } 48 | @else if $rfs-base-font-size-unit == "rem" { 49 | $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value); 50 | } 51 | 52 | // Cache $rfs-breakpoint unit to prevent multiple calls 53 | $rfs-breakpoint-unit-cache: unit($rfs-breakpoint); 54 | 55 | // Remove unit from $rfs-breakpoint for calculations 56 | @if $rfs-breakpoint-unit-cache == "px" { 57 | $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1); 58 | } 59 | @else if $rfs-breakpoint-unit-cache == "rem" or $rfs-breakpoint-unit-cache == "em" { 60 | $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value); 61 | } 62 | 63 | // Responsive font-size mixin 64 | @mixin rfs($fs, $important: false) { 65 | // Cache $fs unit 66 | $fs-unit: if(type-of($fs) == "number", unit($fs), false); 67 | 68 | // Add !important suffix if needed 69 | $rfs-suffix: if($important, " !important", ""); 70 | 71 | // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value 72 | @if not $fs-unit or $fs-unit != "" and $fs-unit != "px" and $fs-unit != "rem" or $fs == 0 { 73 | font-size: #{$fs}#{$rfs-suffix}; 74 | } 75 | @else { 76 | // Variables for storing static and fluid rescaling 77 | $rfs-static: null; 78 | $rfs-fluid: null; 79 | 80 | // Remove px-unit from $fs for calculations 81 | @if $fs-unit == "px" { 82 | $fs: $fs / ($fs * 0 + 1); 83 | } 84 | @else if $fs-unit == "rem" { 85 | $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value); 86 | } 87 | 88 | // Set default font-size 89 | @if $rfs-font-size-unit == rem { 90 | $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix}; 91 | } 92 | @else if $rfs-font-size-unit == px { 93 | $rfs-static: #{$fs}px#{$rfs-suffix}; 94 | } 95 | @else { 96 | @error "`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`."; 97 | } 98 | 99 | // Only add media query if font-size is bigger as the minimum font-size 100 | // If $rfs-factor == 1, no rescaling will take place 101 | @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes { 102 | $min-width: null; 103 | $variable-unit: null; 104 | 105 | // Calculate minimum font-size for given font-size 106 | $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor; 107 | 108 | // Calculate difference between given font-size and minimum font-size for given font-size 109 | $fs-diff: $fs - $fs-min; 110 | 111 | // Base font-size formatting 112 | // No need to check if the unit is valid, because we did that before 113 | $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px); 114 | 115 | // If two-dimensional, use smallest of screen width and height 116 | $variable-unit: if($rfs-two-dimensional, vmin, vw); 117 | 118 | // Calculate the variable width between 0 and $rfs-breakpoint 119 | $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit}; 120 | 121 | // Set the calculated font-size. 122 | $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix}; 123 | } 124 | 125 | // Rendering 126 | @if $rfs-fluid == null { 127 | // Only render static font-size if no fluid font-size is available 128 | font-size: $rfs-static; 129 | } 130 | @else { 131 | $mq-value: null; 132 | 133 | // RFS breakpoint formatting 134 | @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem { 135 | $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit}; 136 | } 137 | @else if $rfs-breakpoint-unit == px { 138 | $mq-value: #{$rfs-breakpoint}px; 139 | } 140 | @else { 141 | @error "`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`."; 142 | } 143 | 144 | @if $rfs-class == "disable" { 145 | // Adding an extra class increases specificity, 146 | // which prevents the media query to override the font size 147 | &, 148 | .disable-responsive-font-size &, 149 | &.disable-responsive-font-size { 150 | font-size: $rfs-static; 151 | } 152 | } 153 | @else { 154 | font-size: $rfs-static; 155 | } 156 | 157 | @if $rfs-two-dimensional { 158 | @media (max-width: #{$mq-value}), (max-height: #{$mq-value}) { 159 | @if $rfs-class == "enable" { 160 | .enable-responsive-font-size &, 161 | &.enable-responsive-font-size { 162 | font-size: $rfs-fluid; 163 | } 164 | } 165 | @else { 166 | font-size: $rfs-fluid; 167 | } 168 | 169 | @if $rfs-safari-iframe-resize-bug-fix { 170 | // stylelint-disable-next-line length-zero-no-unit 171 | min-width: 0vw; 172 | } 173 | } 174 | } 175 | @else { 176 | @media (max-width: #{$mq-value}) { 177 | @if $rfs-class == "enable" { 178 | .enable-responsive-font-size &, 179 | &.enable-responsive-font-size { 180 | font-size: $rfs-fluid; 181 | } 182 | } 183 | @else { 184 | font-size: $rfs-fluid; 185 | } 186 | 187 | @if $rfs-safari-iframe-resize-bug-fix { 188 | // stylelint-disable-next-line length-zero-no-unit 189 | min-width: 0vw; 190 | } 191 | } 192 | } 193 | } 194 | } 195 | } 196 | 197 | // The font-size & responsive-font-size mixin uses RFS to rescale font sizes 198 | @mixin font-size($fs, $important: false) { 199 | @include rfs($fs, $important); 200 | } 201 | 202 | @mixin responsive-font-size($fs, $important: false) { 203 | @include rfs($fs, $important); 204 | } 205 | -------------------------------------------------------------------------------- /scss/free/_animations-basic.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * animate.css -http://daneden.me/animate 3 | * Version - 3.7.0 4 | * Licensed under the MIT license - http://opensource.org/licenses/MIT 5 | * 6 | * Copyright (c) 2018 Daniel Eden 7 | */ 8 | .animated { 9 | animation-duration: 1s; 10 | animation-fill-mode: both; 11 | &.infinite { 12 | animation-iteration-count: infinite; 13 | } 14 | &.delay-1s { 15 | animation-delay: 1s; 16 | } 17 | &.delay-2s { 18 | animation-delay: 2s; 19 | } 20 | &.delay-3s { 21 | animation-delay: 3s; 22 | } 23 | &.delay-4s { 24 | animation-delay: 4s; 25 | } 26 | &.delay-5s { 27 | animation-delay: 5s; 28 | } 29 | &.fast { 30 | animation-duration: 800ms; 31 | } 32 | &.faster { 33 | animation-duration: 500ms; 34 | } 35 | &.slow { 36 | animation-duration: 2s; 37 | } 38 | &.slower { 39 | animation-duration: 3s; 40 | } 41 | } 42 | 43 | @media (prefers-reduced-motion) { 44 | .animated { 45 | transition: none !important; 46 | animation: unset !important; 47 | } 48 | } 49 | 50 | @keyframes fadeIn { 51 | from { 52 | opacity: 0; 53 | } 54 | 55 | to { 56 | opacity: 1; 57 | } 58 | } 59 | 60 | .fadeIn { 61 | animation-name: fadeIn; 62 | } 63 | 64 | @keyframes fadeInDown { 65 | from { 66 | opacity: 0; 67 | transform: translate3d(0, -100%, 0); 68 | } 69 | 70 | to { 71 | opacity: 1; 72 | transform: translate3d(0, 0, 0); 73 | } 74 | } 75 | 76 | .fadeInDown { 77 | animation-name: fadeInDown; 78 | } 79 | 80 | @keyframes fadeInLeft { 81 | from { 82 | opacity: 0; 83 | transform: translate3d(-100%, 0, 0); 84 | } 85 | 86 | to { 87 | opacity: 1; 88 | transform: translate3d(0, 0, 0); 89 | } 90 | } 91 | 92 | .fadeInLeft { 93 | animation-name: fadeInLeft; 94 | } 95 | 96 | 97 | @keyframes fadeInRight { 98 | from { 99 | opacity: 0; 100 | transform: translate3d(100%, 0, 0); 101 | } 102 | 103 | to { 104 | opacity: 1; 105 | transform: translate3d(0, 0, 0); 106 | } 107 | } 108 | 109 | .fadeInRight { 110 | animation-name: fadeInRight; 111 | } 112 | 113 | 114 | @keyframes fadeInUp { 115 | from { 116 | opacity: 0; 117 | transform: translate3d(0, 100%, 0); 118 | } 119 | 120 | to { 121 | opacity: 1; 122 | transform: translate3d(0, 0, 0); 123 | } 124 | } 125 | 126 | .fadeInUp { 127 | animation-name: fadeInUp; 128 | } 129 | 130 | 131 | @keyframes fadeOut { 132 | from { 133 | opacity: 1; 134 | } 135 | 136 | to { 137 | opacity: 0; 138 | } 139 | } 140 | 141 | .fadeOut { 142 | animation-name: fadeOut; 143 | } 144 | 145 | 146 | @keyframes fadeOutDown { 147 | from { 148 | opacity: 1; 149 | } 150 | 151 | to { 152 | opacity: 0; 153 | transform: translate3d(0, 100%, 0); 154 | } 155 | } 156 | 157 | .fadeOutDown { 158 | animation-name: fadeOutDown; 159 | } 160 | 161 | 162 | @keyframes fadeOutLeft { 163 | from { 164 | opacity: 1; 165 | } 166 | 167 | to { 168 | opacity: 0; 169 | transform: translate3d(-100%, 0, 0); 170 | } 171 | } 172 | 173 | .fadeOutLeft { 174 | animation-name: fadeOutLeft; 175 | } 176 | 177 | 178 | @keyframes fadeOutRight { 179 | from { 180 | opacity: 1; 181 | } 182 | 183 | to { 184 | opacity: 0; 185 | transform: translate3d(100%, 0, 0); 186 | } 187 | } 188 | 189 | .fadeOutRight { 190 | animation-name: fadeOutRight; 191 | } 192 | 193 | 194 | @keyframes fadeOutUp { 195 | from { 196 | opacity: 1; 197 | } 198 | 199 | to { 200 | opacity: 0; 201 | transform: translate3d(0, -100%, 0); 202 | } 203 | } 204 | 205 | .fadeOutUp { 206 | animation-name: fadeOutUp; 207 | } 208 | -------------------------------------------------------------------------------- /scss/free/_badges.scss: -------------------------------------------------------------------------------- 1 | // Badges 2 | .badge { 3 | color: $white !important; 4 | border-radius: $border-radius-base; 5 | box-shadow: $z-depth-1; 6 | } 7 | .badge-pill { 8 | padding-right: $badge-pill-padding-x; 9 | padding-left: $badge-pill-padding-x; 10 | border-radius: $badge-pill-border-radius; 11 | } 12 | @each $name, $color in $basic-mdb-colors { 13 | @include make-badge($name, $color); 14 | } 15 | 16 | -------------------------------------------------------------------------------- /scss/free/_buttons.scss: -------------------------------------------------------------------------------- 1 | // Buttons 2 | .btn { 3 | margin: $btn-margin-basic; 4 | color: inherit; 5 | text-transform: uppercase; 6 | word-wrap: break-word; 7 | white-space: normal; 8 | cursor: pointer; 9 | border: 0; 10 | border-radius: $border-radius-base; 11 | box-shadow: $z-depth-1; 12 | transition: $btn-transition; 13 | @include button-size($btn-padding-y-basic, $btn-padding-x-basic, $btn-font-size-basic); 14 | 15 | @include hover-focus-active { 16 | outline: 0; 17 | box-shadow: $z-depth-1-half; 18 | } 19 | 20 | &.btn-block { 21 | margin: inherit; 22 | } 23 | 24 | .fas, 25 | .fab, 26 | .far { 27 | &.right { 28 | margin-left: $btn-icon-margin; 29 | } 30 | &.left { 31 | margin-right: $btn-icon-margin; 32 | } 33 | } 34 | 35 | &.btn-lg { 36 | @include button-size($btn-padding-y-large, $btn-padding-x-large, $btn-font-size-large); 37 | } 38 | &.btn-md { 39 | @include button-size($btn-padding-y-medium, $btn-padding-x-medium, $btn-font-size-medium); 40 | } 41 | &.btn-sm { 42 | @include button-size($btn-padding-y-small, $btn-padding-x-small, $btn-font-size-small); 43 | } 44 | 45 | &.disabled, 46 | &:disabled { 47 | @include hover-focus-active { 48 | box-shadow: $z-depth-1; 49 | } 50 | } 51 | 52 | &[class*="btn-outline-"] { 53 | padding-top: $btn-outline-padding-y-basic; 54 | padding-bottom: $btn-outline-padding-y-basic; 55 | &.btn-lg { 56 | padding-top: $btn-outline-padding-y-large; 57 | padding-bottom: $btn-outline-padding-y-large; 58 | } 59 | &.btn-md { 60 | padding-top: $btn-outline-padding-y-medium; 61 | padding-bottom: $btn-outline-padding-y-medium; 62 | } 63 | &.btn-sm { 64 | padding-top: $btn-outline-padding-y-small; 65 | padding-bottom: $btn-outline-padding-y-small; 66 | } 67 | } 68 | } 69 | 70 | .btn-link { 71 | color: $black-base; 72 | background-color: transparent; 73 | box-shadow: none; 74 | @include hover-focus-active { 75 | color: $black-base; 76 | background-color: transparent; 77 | box-shadow: none; 78 | } 79 | } 80 | 81 | .btn-group { 82 | > .btn:not(:first-child), 83 | > .btn-group:not(:first-child) { 84 | margin-left: -$btn-group-margin; 85 | } 86 | } 87 | 88 | @each $btn_name, $color_value in $mdb-colors { 89 | @include make-button($btn_name, $color_value); 90 | @include make-outline-button($btn_name, $color_value); 91 | } 92 | 93 | @each $name, $val in $gradients { 94 | @include make-gradient-button($name, $val); 95 | } 96 | 97 | .btn-warning:not(:disabled):not(.disabled).active, 98 | .btn-warning:not(:disabled):not(.disabled):active, 99 | .show > .btn-warning.dropdown-toggle { 100 | color: $white-base; 101 | } 102 | 103 | -------------------------------------------------------------------------------- /scss/free/_cards.scss: -------------------------------------------------------------------------------- 1 | // Cards 2 | .card { 3 | font-weight: 400; 4 | border: 0; 5 | box-shadow: $z-depth-1; 6 | &[class*="border"] { 7 | border: 1px solid $grey-base; 8 | box-shadow: none; 9 | } 10 | .card-body { 11 | h1, h2, h3, h4, h5, h6 { 12 | font-weight: 400; 13 | } 14 | .card-title { 15 | a { 16 | transition: $md-card-link-transition; 17 | &:hover { 18 | transition: $md-card-link-transition; 19 | } 20 | } 21 | } 22 | .card-text { 23 | font-size: $md-card-font-size; 24 | font-weight: 400; 25 | color: $md-card-text-color; 26 | } 27 | } 28 | .md-form { 29 | label { 30 | font-weight: 300; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /scss/free/_carousels.scss: -------------------------------------------------------------------------------- 1 | // Carousels 2 | .carousel { 3 | .carousel-control-prev-icon, 4 | .carousel-control-next-icon { 5 | width: $carousel-control-icon-width; 6 | height: $carousel-control-icon-height; 7 | } 8 | .carousel-control-prev-icon { 9 | background-image: $carousel-control-prev-icon; 10 | } 11 | .carousel-control-next-icon { 12 | background-image: $carousel-control-next-icon; 13 | } 14 | .carousel-indicators { 15 | li { 16 | width: $carousel-indicators-width; 17 | height: $carousel-indicators-height; 18 | cursor: pointer; 19 | border-radius: $carousel-indicators-border-radius; 20 | } 21 | } 22 | } 23 | .carousel-fade { 24 | .carousel-item { 25 | opacity: 0; 26 | transition-duration: $carousel-transition-duration; 27 | transition-property: opacity; 28 | } 29 | .carousel-item.active, 30 | .carousel-item-next.carousel-item-left, 31 | .carousel-item-prev.carousel-item-right { 32 | opacity: 1; 33 | } 34 | .carousel-item-left, 35 | .carousel-item-right { 36 | &.active { 37 | opacity: 0; 38 | } 39 | } 40 | .carousel-item-next, 41 | .carousel-item-prev, 42 | .carousel-item.active, 43 | .carousel-item-left.active, 44 | .carousel-item-prev.active { 45 | transform: $carousel-item-transform; 46 | @supports (transform-style: preserve-3d) { 47 | transform: $carousel-item-transform-2; 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /scss/free/_depreciated.scss: -------------------------------------------------------------------------------- 1 | // These settings will be only for one version 2 | // Scrolable navbar 3 | 4 | /* 5 | .navbar { 6 | &.fixed-top, 7 | &.sticky-top { 8 | .navbar-collapse { 9 | @media (min-width: 400px) and (max-width: 767px), 10 | (min-width: 800px) and (max-width: 850px) { 11 | max-height: 340px; 12 | overflow-x: hidden; 13 | overflow-y: auto; 14 | } 15 | } 16 | } 17 | } 18 | */ 19 | -------------------------------------------------------------------------------- /scss/free/_dropdowns.scss: -------------------------------------------------------------------------------- 1 | // Dropdowns 2 | .dropdown { 3 | .dropdown-menu { 4 | .dropdown-item { 5 | &:active { 6 | background-color: $grey-darken-1; 7 | } 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /scss/free/_footers.scss: -------------------------------------------------------------------------------- 1 | // Footers 2 | footer { 3 | &.page-footer { 4 | bottom: 0; 5 | color: $white-base; 6 | .container-fluid { 7 | width: auto; 8 | } 9 | .footer-copyright { 10 | overflow: hidden; 11 | color: $footer-copyright-color; 12 | background-color: $footer-copyright-bg-color; 13 | } 14 | a { 15 | color: $white-base; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /scss/free/_input-group.scss: -------------------------------------------------------------------------------- 1 | // Input group 2 | .md-form { 3 | &.input-group { 4 | label { 5 | top: 0; 6 | margin-bottom: 0; 7 | } 8 | .input-group-text { 9 | background-color: $input-group-text-bgc; 10 | &.md-addon { 11 | font-weight: 500; 12 | background-color: transparent; 13 | border: none; 14 | } 15 | } 16 | .form-control { 17 | padding: $input-group-form-control-py $input-group-form-control-px; 18 | margin: 0; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /scss/free/_list-group.scss: -------------------------------------------------------------------------------- 1 | // List group 2 | .media { 3 | .media-left { 4 | padding: $list-group-padding; 5 | 6 | img { 7 | box-shadow: $z-depth-1; 8 | } 9 | } 10 | } 11 | 12 | .list-group { 13 | .list-group-item { 14 | &:first-child { 15 | border-top-left-radius: $border-radius-base; 16 | border-top-right-radius: $border-radius-base; 17 | } 18 | 19 | &:last-child { 20 | border-bottom-right-radius: $border-radius-base; 21 | border-bottom-left-radius: $border-radius-base; 22 | } 23 | } 24 | 25 | a, 26 | button { 27 | transition: $list-group-transition; 28 | 29 | &:hover { 30 | transition: $list-group-transition; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /scss/free/_loader.scss: -------------------------------------------------------------------------------- 1 | // Loader / Spinner 2 | .fast { 3 | &.spinner-border { 4 | animation: $spinner-border-animation; 5 | } 6 | &.spinner-grow { 7 | animation: $spinner-grow-animation; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /scss/free/_modals.scss: -------------------------------------------------------------------------------- 1 | // Modals 2 | // Styles for body 3 | body { 4 | &.modal-open { 5 | padding-right: 0 !important; 6 | overflow: auto; 7 | } 8 | &.scrollable { 9 | overflow-y: auto; 10 | } 11 | } 12 | 13 | // *** ENHANCED BOOTSTRAP MODALS ***/// 14 | // General styles 15 | .modal-dialog { 16 | .modal-content { 17 | border: 0; 18 | border-radius: $border-radius-base; 19 | box-shadow: $z-depth-1-half; 20 | .modal-header { 21 | border-top-left-radius: $border-radius-base; 22 | border-top-right-radius: $border-radius-base; 23 | } 24 | } 25 | // Cascading modals 26 | &.cascading-modal { 27 | margin-top: 10%; 28 | .close { 29 | color: $white-base; 30 | text-shadow: none; 31 | outline: 0; 32 | opacity: 1; 33 | } 34 | // Cascading header 35 | .modal-header { 36 | padding: $cascading-modal-padding; 37 | margin: $cascading-modal-margin-top $cascading-modal-margin-right $cascading-modal-margin-bottom $cascading-modal-margin-left; 38 | text-align: center; 39 | border: none; 40 | border-radius: $border-radius-base; 41 | box-shadow: $z-depth-1-half; 42 | .close { 43 | margin-right: $cascading-modal-close-margin-right; 44 | } 45 | .title { 46 | width: 100%; 47 | margin-bottom: 0; 48 | font-size: $cascading-modal-font-size; 49 | .fas, .fab, .far { 50 | margin-right: $cascading-modal-fa-margin-right; 51 | } 52 | } 53 | .social-buttons { 54 | margin-top: $cascading-modal-social-margin-top; 55 | a { 56 | font-size: $cascading-modal-a-font-size; 57 | } 58 | } 59 | } 60 | // Cascading tabs nav 61 | .modal-c-tabs { 62 | .md-tabs { 63 | display: flex; 64 | margin: $cascading-modal-tabs-margin-top $cascading-modal-tabs-margin-x 0 $cascading-modal-tabs-margin-x; 65 | box-shadow: $z-depth-1; 66 | li { 67 | flex: 1; 68 | a { 69 | text-align: center; 70 | } 71 | } 72 | } 73 | .tab-content { 74 | padding: $cascading-modal-tabs-padding-top 0 0 0; 75 | } 76 | 77 | /* 78 | .md-tabs { 79 | border-radius: $md-card-border-radius; 80 | .nav-item { 81 | .nav-link { 82 | border-radius: $md-card-border-radius; 83 | background-color: inherit; 84 | color: $white-base; 85 | } 86 | } 87 | } 88 | */ 89 | } 90 | // Footer customization 91 | .modal-body, 92 | .modal-footer { 93 | padding-right: $modal-body-padding-right; 94 | padding-left: $modal-body-padding-left; 95 | color: $grey-darken-2; 96 | .additional-option { 97 | margin-top: $modal-body-margin-top; 98 | text-align: center; 99 | } 100 | } 101 | // Cascading avatar 102 | &.modal-avatar { 103 | margin-top: $modal-avatar-margin-top; 104 | .modal-header { 105 | @extend .img-fluid; 106 | margin: $modal-avatar-header-margin-top 0 $modal-avatar-header-margin-bottom; 107 | box-shadow: none; 108 | img { 109 | width: $modal-avatar-img-width; 110 | margin-right: auto; 111 | margin-left: auto; 112 | box-shadow: $z-depth-2; 113 | } 114 | } 115 | } 116 | } 117 | // Modal notify 118 | &.modal-notify { 119 | .heading { 120 | padding: $modal-notify-heading-padding; 121 | margin: 0; 122 | font-size: $modal-notify-font-size; 123 | color: $white-base; 124 | } 125 | .modal-header { 126 | border: 0; 127 | box-shadow: $z-depth-1; 128 | } 129 | .close { 130 | opacity: 1; 131 | } 132 | .modal-body { 133 | padding: $modal-notify-body-padding; 134 | color: $grey-darken-2; 135 | } 136 | @each $name, $color in $basic { 137 | &.modal-#{$name} { 138 | .modal-header { 139 | background-color: $color; 140 | } 141 | .fas, .fab, .far { 142 | color: $color; 143 | } 144 | .badge { 145 | background-color: $color; 146 | } 147 | .btn { 148 | .fas, 149 | .fab, 150 | .far { 151 | color: #fff; 152 | } 153 | &.btn-outline-#{$name} { 154 | .fas, 155 | .fab, 156 | .far { 157 | color: $color; 158 | } 159 | } 160 | } 161 | } 162 | } 163 | } 164 | } 165 | 166 | // Position & Size 167 | .modal { 168 | padding-right: 0 !important; 169 | .modal-dialog { 170 | @media (min-width: 768px) { 171 | &.modal-top { 172 | top: 0; 173 | } 174 | &.modal-left { 175 | left: 0; 176 | } 177 | &.modal-right { 178 | right: 0; 179 | } 180 | &.modal-bottom { 181 | bottom: 0; 182 | } 183 | &.modal-top-left { 184 | top: $modal-distance; 185 | left: $modal-distance; 186 | } 187 | &.modal-top-right { 188 | top: $modal-distance; 189 | right: $modal-distance; 190 | } 191 | &.modal-bottom-left { 192 | bottom: $modal-distance; 193 | left: $modal-distance; 194 | } 195 | &.modal-bottom-right { 196 | right: $modal-distance; 197 | bottom: $modal-distance; 198 | } 199 | } 200 | } 201 | &.fade { 202 | &.top:not(.show) .modal-dialog { 203 | transform: $modal-fade-top-transform; 204 | } 205 | &.left:not(.show) .modal-dialog { 206 | transform: $modal-fade-left-transform; 207 | } 208 | &.right:not(.show) .modal-dialog { 209 | transform: $modal-fade-right-transform; 210 | } 211 | &.bottom:not(.show) .modal-dialog { 212 | transform: $modal-fade-bottom-transform; 213 | } 214 | } 215 | @media (min-width: $medium-screen) { 216 | &.modal-scrolling { 217 | position: relative; 218 | .modal-dialog { 219 | position: fixed; 220 | z-index: 1050; 221 | } 222 | } 223 | &.modal-content-clickable { 224 | top: auto; 225 | bottom: auto; 226 | .modal-dialog { 227 | position: fixed; 228 | } 229 | } 230 | .modal-fluid { 231 | width: 100%; 232 | max-width: 100%; 233 | .modal-content { 234 | width: 100%; 235 | } 236 | } 237 | .modal-frame { 238 | position: absolute; 239 | width: 100%; 240 | max-width: 100% !important; 241 | margin: 0 !important; 242 | &.modal-bottom { 243 | bottom: 0; 244 | } 245 | } 246 | .modal-full-height { 247 | position: absolute; 248 | top: 0; 249 | right: 0; 250 | display: flex; 251 | width: $modal-width; 252 | height: auto; 253 | min-height: 100%; 254 | margin: 0; 255 | &.modal-top, 256 | &.modal-bottom { 257 | display: block; 258 | width: 100%; 259 | max-width: 100%; 260 | height: auto; 261 | } 262 | &.modal-top { 263 | bottom: auto; 264 | } 265 | &.modal-bottom { 266 | top: auto; 267 | min-height: 0; 268 | } 269 | .modal-content { 270 | width: 100%; 271 | } 272 | &.modal-lg { 273 | width: 90%; 274 | max-width: 90%; 275 | @media (min-width: $medium-screen) { 276 | width: $modal-full-height-medium-screen; 277 | max-width: $modal-full-height-medium-screen; 278 | } 279 | @media (min-width: $large-screen) { 280 | width: $modal-full-height-large-screen; 281 | max-width: $modal-full-height-large-screen; 282 | } 283 | } 284 | } 285 | .modal-side { 286 | position: absolute; 287 | right: $modal-distance; 288 | bottom: $modal-distance; 289 | width: $modal-width; 290 | margin: 0; 291 | } 292 | } 293 | } 294 | -------------------------------------------------------------------------------- /scss/free/_msc.scss: -------------------------------------------------------------------------------- 1 | // Miscellaneous 2 | // Edge Headers 3 | .edge-header { 4 | display: block; 5 | height: $edge-header-height; 6 | background-color: $edge-header-background-color; 7 | } 8 | 9 | .free-bird { 10 | margin-top: $edge-header-margin-top; 11 | } 12 | 13 | // Additional gradients 14 | .juicy-peach-gradient { 15 | background-image: linear-gradient(to right, #ffecd2 0%, #fcb69f 100%); 16 | } 17 | 18 | .young-passion-gradient { 19 | background-image: linear-gradient(to right, #ff8177 0%, #ff867a 0%, #ff8c7f 21%, #f99185 52%, #cf556c 78%, #b12a5b 100%); 20 | } 21 | 22 | .lady-lips-gradient { 23 | background-image: linear-gradient(to top, #ff9a9e 0%, #fecfef 99%, #fecfef 100%); 24 | } 25 | 26 | .sunny-morning-gradient { 27 | background-image: linear-gradient(120deg, #f6d365 0%, #fda085 100%); 28 | } 29 | 30 | .rainy-ashville-gradient { 31 | background-image: linear-gradient(to top, #fbc2eb 0%, #a6c1ee 100%); 32 | } 33 | 34 | .frozen-dreams-gradient { 35 | background-image: linear-gradient(to top, #fdcbf1 0%, #fdcbf1 1%, #e6dee9 100%); 36 | } 37 | 38 | .warm-flame-gradient { 39 | background-image: linear-gradient(45deg, #ff9a9e 0%, #fad0c4 99%, #fad0c4 100%); 40 | } 41 | 42 | .night-fade-gradient { 43 | background-image: linear-gradient(to top, #a18cd1 0%, #fbc2eb 100%); 44 | } 45 | 46 | .spring-warmth-gradient { 47 | background-image: linear-gradient(to top, #fad0c4 0%, #ffd1ff 100%); 48 | } 49 | 50 | .winter-neva-gradient { 51 | background-image: linear-gradient(120deg, #a1c4fd 0%, #c2e9fb 100%); 52 | } 53 | 54 | .dusty-grass-gradient { 55 | background-image: linear-gradient(120deg, #d4fc79 0%, #96e6a1 100%); 56 | } 57 | 58 | .tempting-azure-gradient { 59 | background-image: linear-gradient(120deg, #84fab0 0%, #8fd3f4 100%); 60 | } 61 | 62 | .heavy-rain-gradient { 63 | background-image: linear-gradient(to top, #cfd9df 0%, #e2ebf0 100%); 64 | } 65 | 66 | .amy-crisp-gradient { 67 | background-image: linear-gradient(120deg, #a6c0fe 0%, #f68084 100%); 68 | } 69 | 70 | .mean-fruit-gradient { 71 | background-image: linear-gradient(120deg, #fccb90 0%, #d57eeb 100%); 72 | } 73 | 74 | .deep-blue-gradient { 75 | background-image: linear-gradient(120deg, #e0c3fc 0%, #8ec5fc 100%); 76 | } 77 | 78 | .ripe-malinka-gradient { 79 | background-image: linear-gradient(120deg, #f093fb 0%, #f5576c 100%); 80 | } 81 | 82 | .cloudy-knoxville-gradient { 83 | background-image: linear-gradient(120deg, #fdfbfb 0%, #ebedee 100%); 84 | } 85 | 86 | .morpheus-den-gradient { 87 | background-image: linear-gradient(to top, #30cfd0 0%, #330867 100%); 88 | } 89 | 90 | .rare-wind-gradient { 91 | background-image: linear-gradient(to top, #a8edea 0%, #fed6e3 100%); 92 | } 93 | 94 | .near-moon-gradient { 95 | background-image: linear-gradient(to top, #5ee7df 0%, #b490ca 100%); 96 | } 97 | 98 | .schedule-list { 99 | .hr-bold { 100 | border-top: 2px solid #212529; 101 | } 102 | 103 | .font-smaller { 104 | font-size: .8rem; 105 | } 106 | } 107 | 108 | .note { 109 | padding: 10px; 110 | border-left: 6px solid; 111 | border-radius: 5px; 112 | strong { 113 | font-weight: 600; 114 | } 115 | p { 116 | font-weight: 500; 117 | } 118 | } 119 | 120 | @each $name, $color in $note { 121 | .note-#{$name} { 122 | background-color: map-get($color, bgc); 123 | border-color: map-get($color, border-color); 124 | } 125 | } 126 | -------------------------------------------------------------------------------- /scss/free/_navbars.scss: -------------------------------------------------------------------------------- 1 | // Navbars 2 | .navbar { 3 | font-weight: $navbar-font-weight; 4 | box-shadow: $z-depth-1; 5 | form { 6 | .md-form { 7 | input { 8 | margin: 0 $navbar-form-input-mr $navbar-form-input-mb $navbar-form-input-ml; 9 | } 10 | } 11 | } 12 | .breadcrumb { 13 | padding: $navbar-breadcrumb-padding-top 0 0 $navbar-breadcrumb-padding-left; 14 | margin: 0; 15 | font-size: $navbar-double-font-size; 16 | font-weight: $navbar-font-weight; 17 | background-color: inherit; 18 | .breadcrumb-item { 19 | color: $white-base; 20 | &.active { 21 | color: $navbar-breadcrumb-color; 22 | } 23 | &:before { 24 | color: $navbar-breadcrumb-color; 25 | } 26 | } 27 | } 28 | .navbar-toggler { 29 | border-width: 0; 30 | outline: 0; 31 | } 32 | .nav-flex-icons { 33 | flex-direction: row; 34 | } 35 | .container { 36 | @media (max-width: $medium-screen) { 37 | width: 100%; 38 | .navbar-toggler-right { 39 | right: 0; 40 | } 41 | } 42 | } 43 | .nav-item { 44 | .nav-link { 45 | display: block; 46 | &.disabled { 47 | &:active { 48 | pointer-events: none; 49 | } 50 | } 51 | .fas, .fab, .far { 52 | padding-right: $navbar-flex-icons-padding-lg; 53 | padding-left: $navbar-flex-icons-padding-lg; 54 | } 55 | @media (max-width: $medium-screen) { 56 | padding-right: $navbar-flex-icons-padding-md; 57 | padding-left: $navbar-flex-icons-padding-md; 58 | } 59 | } 60 | } 61 | .dropdown-menu { 62 | position: absolute !important; 63 | margin-top: 0; 64 | a { 65 | padding: $navbar-dropdown-menu-padding; 66 | font-size: $navbar-dropdown-font-size; 67 | font-weight: $navbar-font-weight; 68 | color: $black; 69 | } 70 | form { 71 | @media (max-width: $small-screen) { 72 | width: 17rem; 73 | } 74 | @media (min-width: $small-screen) { 75 | width: 22rem; 76 | } 77 | } 78 | } 79 | &.navbar-light { 80 | @include make-navbar($navbar-light-disabled-color, $navbar-light-toggler-icon, $black, $navbar-light-hover-color, $navbar-light-bg-active-color); 81 | } 82 | &.navbar-dark { 83 | @include make-navbar($navbar-dark-disabled-color, $navbar-dark-toggler-icon, $white, $navbar-dark-hover-color, $navbar-dark-bg-active-color); 84 | } 85 | &.scrolling-navbar { 86 | @media (min-width: $small-screen) { 87 | padding-top: $navbar-scrolling-padding; 88 | padding-bottom: $navbar-scrolling-padding; 89 | transition: $navbar-scrolling-transition; 90 | .navbar-nav > li { 91 | transition-duration: $navbar-scrolling-transition-duration; 92 | } 93 | &.top-nav-collapse { 94 | padding-top: $navbar-top-collapse-padding; 95 | padding-bottom: $navbar-top-collapse-padding; 96 | } 97 | } 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /scss/free/_pagination.scss: -------------------------------------------------------------------------------- 1 | // Pagination 2 | .pagination { 3 | .page-item { 4 | &.active { 5 | .page-link { 6 | color: $white-base; 7 | background-color: $primary-color; 8 | border-radius: $border-radius-base; 9 | box-shadow: $z-depth-1; 10 | transition: $pagination-active-transition; 11 | &:hover { 12 | background-color: $primary-color; 13 | } 14 | } 15 | } 16 | &.disabled { 17 | .page-link { 18 | color: $pagination-page-item-disabled-color; 19 | } 20 | } 21 | .page-link { 22 | font-size: $pagination-page-link-font-size; 23 | color: $pagination-page-link-color; 24 | background-color: transparent; 25 | border: 0; 26 | outline: 0; 27 | transition: $pagination-page-link-transition; 28 | &:hover { 29 | background-color: $pagination-page-link-hover-bg-color; 30 | border-radius: $border-radius-base; 31 | transition: $pagination-page-link-transition; 32 | } 33 | &:focus { 34 | background-color: transparent; 35 | box-shadow: none; 36 | } 37 | } 38 | } 39 | &.pagination-lg { 40 | .page-item { 41 | .page-link { 42 | font-size: $pagination-page-link-font-size-lg; 43 | } 44 | } 45 | } 46 | &.pagination-sm { 47 | .page-item { 48 | .page-link { 49 | font-size: $pagination-page-link-font-size-sm; 50 | } 51 | } 52 | } 53 | &.pagination-circle { 54 | .page-item { 55 | .page-link { 56 | margin-right: $pagination-circle-margin-x; 57 | margin-left: $pagination-circle-margin-x; 58 | border-radius: $pagination-circle-border-radius; 59 | &:hover { 60 | border-radius: $pagination-circle-border-radius; 61 | } 62 | } 63 | &.active { 64 | .page-link { 65 | border-radius: $pagination-circle-border-radius; 66 | } 67 | } 68 | } 69 | } 70 | @each $name, $color in $pagination-colors { 71 | &.pg-#{$name} { 72 | .page-item { 73 | &.active { 74 | .page-link { 75 | background-color: $color; 76 | &:hover { 77 | background-color: $color; 78 | } 79 | } 80 | } 81 | } 82 | } 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /scss/free/_steppers.scss: -------------------------------------------------------------------------------- 1 | // Steppers 2 | ul.stepper { 3 | padding: 0 1.5rem; 4 | padding: 1.5rem; 5 | margin: 1em -1.5rem; 6 | overflow-x: hidden; 7 | overflow-y: auto; 8 | counter-reset: section; 9 | 10 | li { 11 | a { 12 | padding: $stepper-li-a-padding; 13 | text-align: center; 14 | 15 | .circle { 16 | display: inline-block; 17 | width: 1.75rem; 18 | height: 1.75rem; 19 | margin-right: $stepper-li-a-circle-mr; 20 | line-height: 1.7rem; 21 | color: $stepper-li-a-circle-color; 22 | text-align: center; 23 | background: $stepper-li-a-circle-bg; 24 | border-radius: $stepper-li-a-circle-border-radius; 25 | } 26 | 27 | .label { 28 | display: inline-block; 29 | color: $stepper-li-a-circle-bg; 30 | } 31 | } 32 | 33 | &.active, 34 | &.completed { 35 | a { 36 | .circle { 37 | @extend .primary-color; 38 | } 39 | 40 | .label { 41 | font-weight: 600; 42 | color: $stepper-li-a-label-color; 43 | } 44 | } 45 | } 46 | 47 | &.warning { 48 | a { 49 | .circle { 50 | // background-color: #ff3547 !important; 51 | @extend .danger-color !optional; 52 | } 53 | } 54 | } 55 | } 56 | } 57 | 58 | // Horizontal 59 | .stepper-horizontal { 60 | position: relative; 61 | display: flex; 62 | justify-content: space-between; 63 | 64 | li { 65 | position: relative; 66 | display: flex; 67 | flex: 1; 68 | align-items: center; 69 | transition: $stepper-horizontal-li-transition; 70 | 71 | a { 72 | .label { 73 | margin-top: $stepper-horizontal-li-a-label-mt; 74 | } 75 | } 76 | 77 | &:not(:last-child):after { 78 | position: relative; 79 | flex: 1; 80 | height: $stepper-horizontal-li-after-height; 81 | margin: $stepper-horizontal-li-after-margin 0 0 0; 82 | content: ""; 83 | background-color: $stepper-horizontal-li-after-bgc; 84 | } 85 | 86 | &:not(:first-child):before { 87 | position: relative; 88 | flex: 1; 89 | height: $stepper-horizontal-li-after-height; 90 | margin: $stepper-horizontal-li-after-margin 0 0 0; 91 | content: ""; 92 | background-color: $stepper-horizontal-li-after-bgc; 93 | } 94 | 95 | &:hover { 96 | background-color: rgba(0, 0, 0, .06); 97 | } 98 | } 99 | 100 | @media (max-width: $stepper-horizontal-breakpoint) { 101 | flex-direction: column; 102 | 103 | li { 104 | flex-direction: column; 105 | align-items: flex-start; 106 | 107 | a { 108 | .label { 109 | flex-flow: column nowrap; 110 | order: 2; 111 | margin-top: $stepper-horizontal-small-li-a-label-mt; 112 | } 113 | } 114 | 115 | &:not(:last-child):after { 116 | position: absolute; 117 | top: $stepper-horizontal-small-li-after-top; 118 | left: $stepper-horizontal-small-li-after-left; 119 | width: $stepper-horizontal-small-li-after-width; 120 | height: $stepper-horizontal-small-li-after-height; 121 | content: ""; 122 | } 123 | } 124 | } 125 | 126 | > li:not(:last-of-type) { 127 | margin-bottom: 0 !important; 128 | } 129 | } 130 | 131 | // Vertical 132 | .stepper-vertical { 133 | position: relative; 134 | display: flex; 135 | flex-direction: column; 136 | justify-content: space-between; 137 | 138 | li { 139 | position: relative; 140 | display: flex; 141 | flex: 1; 142 | flex-direction: column; 143 | align-items: flex-start; 144 | 145 | a { 146 | position: relative; 147 | display: flex; 148 | align-self: flex-start; 149 | 150 | .circle { 151 | order: 1; 152 | } 153 | 154 | .label { 155 | flex-flow: column nowrap; 156 | order: 2; 157 | margin-top: $stepper-vertical-li-a-label-mt; 158 | } 159 | } 160 | 161 | &.completed { 162 | a { 163 | .label { 164 | font-weight: 500; 165 | } 166 | } 167 | } 168 | 169 | .step-content { 170 | display: block; 171 | padding: $stepper-vertical-li-step-content-padding; 172 | margin-top: 0; 173 | margin-left: $stepper-vertical-li-step-content-ml; 174 | 175 | p { 176 | font-size: $stepper-vertical-li-step-content-p-font-size; 177 | } 178 | } 179 | 180 | &:not(:last-child):after { 181 | position: absolute; 182 | top: $stepper-vertical-li-after-top; 183 | left: $stepper-vertical-li-after-left; 184 | width: $stepper-vertical-li-after-width; 185 | height: $stepper-vertical-li-after-height; 186 | content: ""; 187 | background-color: $stepper-vertical-li-after-bgc; 188 | } 189 | } 190 | } 191 | -------------------------------------------------------------------------------- /scss/free/_switch.scss: -------------------------------------------------------------------------------- 1 | // Switch free 2 | .bs-switch { 3 | position: relative; 4 | display: inline-block; 5 | width: 60px; 6 | height: 34px; 7 | input { 8 | display: none; 9 | &:checked { 10 | + .slider { 11 | background-color: #2196F3; 12 | &:before { 13 | transform: translateX(26px); 14 | } 15 | } 16 | } 17 | &:focus { 18 | + .slider { 19 | box-shadow: 0 0 1px #2196F3; 20 | } 21 | } 22 | } 23 | .slider { 24 | position: absolute; 25 | cursor: pointer; 26 | top: 0; 27 | left: 0; 28 | right: 0; 29 | bottom: 0; 30 | background-color: #ccc; 31 | -webkit-transition: .4s; 32 | transition: .4s; 33 | &:before { 34 | position: absolute; 35 | content: ""; 36 | height: 26px; 37 | width: 26px; 38 | left: 4px; 39 | bottom: 4px; 40 | background-color: white; 41 | -webkit-transition: .4s; 42 | transition: .4s; 43 | } 44 | &.round { 45 | border-radius: 34px; 46 | &:before { 47 | border-radius: 50%; 48 | } 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /scss/free/_tables.scss: -------------------------------------------------------------------------------- 1 | // Tables 2 | table { 3 | th { 4 | font-size: $table-th-font-size; 5 | font-weight: 400; 6 | } 7 | td { 8 | font-size: $table-td-font-size; 9 | font-weight: 300; 10 | } 11 | &.table { 12 | thead th { 13 | border-top: none; 14 | } 15 | th, 16 | td { 17 | padding-top: $table-th-padding-top; 18 | padding-bottom: $table-td-padding-bottom; 19 | } 20 | a { 21 | margin: 0; 22 | color: $table-a-color; 23 | // &.btn { 24 | // color: inherit; 25 | // } 26 | } 27 | .label-table { 28 | height: $table-label-line-height; 29 | padding: 0; 30 | margin: 0; 31 | line-height: $table-label-height; 32 | } 33 | &.btn-table { 34 | td { 35 | vertical-align: middle; 36 | } 37 | } 38 | } 39 | &.table-hover { 40 | tbody { 41 | tr { 42 | &:hover { 43 | background-color: $table-hover-background-color; 44 | transition: $table-hover-transition; 45 | } 46 | } 47 | } 48 | } 49 | .th-lg { 50 | min-width: $table-th-lg-min-width; 51 | } 52 | .th-sm { 53 | min-width: $table-th-sm-min-width; 54 | } 55 | &.table-sm { 56 | th, 57 | td { 58 | padding-top: $table-sm-padding-y; 59 | padding-bottom: $table-sm-padding-y; 60 | } 61 | } 62 | } 63 | .table-scroll-vertical { 64 | max-height: $table-scroll-vertical-max-height; 65 | overflow-y: auto; 66 | } 67 | .table-fixed { 68 | table-layout: fixed; 69 | } 70 | .table-responsive, 71 | .table-responsive-sm, 72 | .table-responsive-md, 73 | .table-responsive-lg, 74 | .table-responsive-xl { 75 | > .table-bordered { 76 | border-top: 1px solid #dee2e6; 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /scss/free/_treeview.scss: -------------------------------------------------------------------------------- 1 | // Treeview 2 | .treeview { 3 | &.w-20 { 4 | width: 20rem; 5 | } 6 | .rotate { 7 | margin-top: .2rem; 8 | font-size: .8rem; 9 | vertical-align: text-top; 10 | cursor: pointer; 11 | user-select: none; 12 | transition: all .1s linear; 13 | &.down { 14 | transform: rotate(90deg); 15 | } 16 | } 17 | .nested { 18 | display: none; 19 | } 20 | .active { 21 | display: block; 22 | } 23 | ul { 24 | list-style-type: none; 25 | } 26 | .ic-w { 27 | width: 1.3rem; 28 | } 29 | } 30 | 31 | .treeview-animated { 32 | &.w-20 { 33 | width: 20rem; 34 | } 35 | ul { 36 | position: relative; 37 | padding-left: 1em; 38 | list-style: none; 39 | } 40 | 41 | .treeview-animated-list { 42 | li { 43 | padding: .2em 0 0 .2em; 44 | } 45 | 46 | .treeview-animated-items { 47 | 48 | .nested { 49 | &::before { 50 | position: absolute; 51 | left: 5px; 52 | display: block; 53 | width: 5px; 54 | height: 100%; 55 | content: ""; 56 | background-color: #808080; 57 | } 58 | } 59 | 60 | .closed { 61 | display: block; 62 | padding: .2em .2em .2em .4em; 63 | margin-right: 0; 64 | border-top-left-radius: .3em; 65 | border-bottom-left-radius: .3em; 66 | 67 | &:hover { 68 | background-color: rgb(140, 185, 255); 69 | } 70 | 71 | .fa-angle-right { 72 | font-size: .8rem; 73 | transition: all .1s linear; 74 | 75 | &.down { 76 | position: relative; 77 | color: #f8f9fa; 78 | transform: rotate(90deg); 79 | } 80 | } 81 | } 82 | 83 | .open { 84 | background-color: rgb(50, 160, 255); 85 | transition: all .1s linear; 86 | 87 | &:hover { 88 | color: #f8f9fa; 89 | background-color: rgb(50, 160, 255); 90 | } 91 | 92 | span { 93 | color: #f8f9fa; 94 | } 95 | } 96 | } 97 | 98 | .treeview-animated-element { 99 | padding: .2em .2em .2em .6em; 100 | cursor: pointer; 101 | border-top-left-radius: 4px; 102 | border-bottom-left-radius: 4px; 103 | transition: all .1s linear; 104 | 105 | &:hover { 106 | background-color: rgb(140, 185, 255); 107 | } 108 | 109 | &.opened { 110 | color: #f8f9fa; 111 | background-color: rgb(50, 160, 255); 112 | 113 | &:hover { 114 | color: #f8f9fa; 115 | background-color: rgb(50, 160, 255); 116 | } 117 | } 118 | } 119 | } 120 | } 121 | 122 | .treeview-colorful { 123 | font-size: 16px; 124 | font-weight: 400; 125 | background: rgba(224, 127, 178, .2); 126 | 127 | &.w-20 { 128 | width: 20rem; 129 | } 130 | 131 | hr { 132 | border-color: #a2127a; 133 | } 134 | 135 | h6 { 136 | font-size: 1.4em; 137 | font-weight: 500; 138 | color: #a2127a; 139 | } 140 | 141 | ul { 142 | position: relative; 143 | padding-left: 0; 144 | list-style: none; 145 | } 146 | 147 | .treeview-colorful-list { 148 | 149 | ul { 150 | padding-left: 1em; 151 | margin-top: .1em; 152 | background: rgba(224, 127, 178, .2); 153 | } 154 | } 155 | 156 | .treeview-colorful-element { 157 | padding: .2em .2em .2em 1em; 158 | cursor: pointer; 159 | border: 2px solid transparent; 160 | border-right: 0 solid transparent; 161 | transition: all .1s linear; 162 | 163 | &:hover { 164 | background-color: #e07fb2; 165 | } 166 | 167 | &.opened { 168 | color: #ffac47; 169 | background-color: #a2127a; 170 | border: 2px solid #ffac47; 171 | border-right: 0 solid transparent; 172 | 173 | &:hover { 174 | color: #ffac47; 175 | background-color: #a2127a; 176 | } 177 | } 178 | 179 | } 180 | .treeview-colorful-items-header { 181 | display: block; 182 | padding: .4em; 183 | margin-right: 0; 184 | border-bottom: 2px solid transparent; 185 | transition: all .1s linear; 186 | 187 | &:hover { 188 | background-color: #e07fb2; 189 | } 190 | 191 | &.open { 192 | background-color: #a2127a; 193 | border-bottom: 2px solid #ffac47; 194 | transition: all .1s linear; 195 | 196 | span { 197 | color: #ffac47; 198 | } 199 | 200 | &:hover { 201 | color: #ffac47; 202 | background-color: #a2127a; 203 | } 204 | 205 | div:hover { 206 | background-color: #a2127a; 207 | } 208 | } 209 | 210 | .fa-angle-right { 211 | font-size: .8rem; 212 | transition: all .2s linear; 213 | } 214 | 215 | .fas { 216 | position: relative; 217 | color: #ffac47; 218 | transition: all .2s linear; 219 | transform: rotate(90deg); 220 | } 221 | 222 | .fa-minus-circle { 223 | position: relative; 224 | color: #ffac47; 225 | transition: all .2s linear; 226 | transform: rotate(180deg); 227 | } 228 | } 229 | } 230 | -------------------------------------------------------------------------------- /scss/free/modules/animations-extended/animations-extended.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * MDBootstrap Animations Extended 3 | * Learn more: https://mdbootstrap.com/docs/jquery/css/animations/ 4 | * About MDBootstrap: https://mdbootstrap.com/ 5 | */ 6 | 7 | @import "module"; 8 | -------------------------------------------------------------------------------- /scss/mdb.lite.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Material Design for Bootstrap 4 3 | * Version: MDB Lite 4.8.11 4 | * 5 | * 6 | * Copyright: Material Design for Bootstrap 7 | * https://mdbootstrap.com/ 8 | * 9 | * Read the license: https://mdbootstrap.com/general/license/ 10 | * 11 | * 12 | * Documentation: https://mdbootstrap.com/ 13 | * 14 | * Getting started: https://mdbootstrap.com/docs/jquery/getting-started/download/ 15 | * 16 | * Tutorials: https://mdbootstrap.com/education/bootstrap/ 17 | * 18 | * Templates: https://mdbootstrap.com/templates/ 19 | * 20 | * Support: https://mdbootstrap.com/support/ 21 | * 22 | * Contact: office@mdbootstrap.com 23 | * 24 | * Attribution: Animate CSS, Twitter Bootstrap, Materialize CSS, Normalize CSS, Waves JS, WOW JS, Toastr, Chart.js 25 | * 26 | */ 27 | 28 | @charset "UTF-8"; 29 | 30 | // Bootstrap 31 | @import "core/bootstrap/functions"; 32 | @import "core/bootstrap/variables"; 33 | 34 | // CORE 35 | @import "core/mixins"; 36 | // Your custom variables 37 | @import "custom-variables"; 38 | @import "core/colors"; 39 | @import "core/variables"; 40 | @import "core/global"; 41 | @import "core/helpers"; 42 | @import "core/typography"; 43 | @import "core/masks"; 44 | @import "core/waves"; 45 | 46 | // FREE 47 | @import "free/animations-basic"; 48 | @import "free/buttons"; 49 | @import "free/cards"; 50 | @import "free/dropdowns"; 51 | @import "free/input-group"; 52 | @import "free/navbars"; 53 | @import "free/pagination"; 54 | @import "free/badges"; 55 | @import "free/modals"; 56 | @import "free/carousels"; 57 | @import "free/forms"; 58 | @import "free/msc"; 59 | @import "free/footers"; 60 | @import "free/list-group"; 61 | @import "free/tables"; 62 | @import "free/depreciated"; 63 | @import "free/steppers"; 64 | @import "free/loader"; 65 | @import "free/treeview"; 66 | 67 | // Your custom styles 68 | @import "custom-styles"; 69 | -------------------------------------------------------------------------------- /scss/mdb.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Material Design for Bootstrap 4 3 | * Version: MDB FREE 4.8.11 4 | * 5 | * 6 | * Copyright: Material Design for Bootstrap 7 | * https://mdbootstrap.com/ 8 | * 9 | * Read the license: https://mdbootstrap.com/general/license/ 10 | * 11 | * 12 | * Documentation: https://mdbootstrap.com/ 13 | * 14 | * Getting started: https://mdbootstrap.com/docs/jquery/getting-started/download/ 15 | * 16 | * Tutorials: https://mdbootstrap.com/education/bootstrap/ 17 | * 18 | * Templates: https://mdbootstrap.com/templates/ 19 | * 20 | * Support: https://mdbootstrap.com/support/ 21 | * 22 | * Contact: office@mdbootstrap.com 23 | * 24 | * Attribution: Animate CSS, Twitter Bootstrap, Materialize CSS, Normalize CSS, Waves JS, WOW JS, Toastr, Chart.js 25 | * 26 | */ 27 | 28 | @charset "UTF-8"; 29 | 30 | // Bootstrap 31 | @import "core/bootstrap/functions"; 32 | @import "core/bootstrap/variables"; 33 | @import "core/bootstrap/rfs"; 34 | 35 | // CORE 36 | @import "core/mixins"; 37 | // Your custom variables 38 | @import "custom-variables"; 39 | @import "core/colors"; 40 | @import "core/variables"; 41 | @import "core/global"; 42 | @import "core/helpers"; 43 | @import "core/typography"; 44 | @import "core/masks"; 45 | @import "core/waves"; 46 | 47 | // FREE 48 | @import "free/animations-basic"; 49 | @import "free/modules/animations-extended/module"; 50 | @import "free/buttons"; 51 | @import "free/cards"; 52 | @import "free/dropdowns"; 53 | @import "free/input-group"; 54 | @import "free/navbars"; 55 | @import "free/pagination"; 56 | @import "free/badges"; 57 | @import "free/modals"; 58 | @import "free/carousels"; 59 | @import "free/forms"; 60 | @import "free/msc"; 61 | @import "free/footers"; 62 | @import "free/list-group"; 63 | @import "free/tables"; 64 | @import "free/depreciated"; 65 | @import "free/steppers"; 66 | @import "free/loader"; 67 | @import "free/treeview"; 68 | // Free addons 69 | // @import "addons/datatables"; 70 | // @import "addons/datatables-select"; 71 | // @import "addons/directives"; 72 | // @import "addons/hierarchical-display"; 73 | // @import "addons/flags"; 74 | // @import "addons/rating"; 75 | 76 | // Your custom styles 77 | @import "custom-styles"; 78 | -------------------------------------------------------------------------------- /scss/style.scss: -------------------------------------------------------------------------------- 1 | // Your custom styles 2 | 3 | /* Required height of parents of the Half Page Carousel for proper displaying carousel itself */ 4 | html, 5 | body, 6 | .view { 7 | height: 100%; } 8 | 9 | @media (max-width: 740px) { 10 | .full-page-intro { 11 | height: 1000px; } } 12 | 13 | /* Half Page Carousel itself*/ 14 | .carousel { 15 | height: 50%; } 16 | .carousel .carousel-inner { 17 | height: 100%; } 18 | .carousel .carousel-inner .carousel-item, 19 | .carousel .carousel-inner .active { 20 | height: 100%; } 21 | 22 | /* Adjustment for mobile devices*/ 23 | @media (max-width: 776px) { 24 | .carousel { 25 | height: 100%; } } 26 | 27 | /* Navbar animation */ 28 | .navbar { 29 | background-color: rgba(0, 0, 0, 0.3); } 30 | 31 | .top-nav-collapse { 32 | background-color: #1C2331; } 33 | 34 | /* Adding color to the Navbar on mobile */ 35 | @media only screen and (max-width: 768px) { 36 | .navbar { 37 | background-color: #1C2331; } } 38 | 39 | /* Footer color for sake of consistency with Navbar */ 40 | .page-footer { 41 | background-color: #1C2331; } 42 | --------------------------------------------------------------------------------