commit d7d0cab887474b5e9c8545e016279330b4e1eaac Author: arjun Date: Mon Jan 20 16:38:41 2025 +0530 fc diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..1e2e463 Binary files /dev/null and b/.DS_Store differ diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..d22d497 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,32 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "settings": { + "react": { + "version": "17.0.2" + } + }, + "extends": ["plugin:@wordpress/eslint-plugin/recommended"], + "rules": { + "react/prop-types": "off", + "jsdoc/check-tag-names": "off", + "jsx-a11y/label-has-associated-control": "off", + "jsx-a11y/click-events-have-key-events": "off", + "jsx-a11y/no-noninteractive-element-interactions": "off", + "jsx-a11y/no-noninteractive-element-to-interactive-role": "off", + "jsx-a11y/no-static-element-interactions": "off", + "jsx-a11y/anchor-has-content": "off", + "jsx-a11y/anchor-is-valid": "off", + "import/no-unresolved": "off", + "@wordpress/i18n-translator-comments": "off", + "no-nested-ternary": "off", + "prettier/prettier": [ + "error", + { + "endOfLine": "auto" + } + ] + } +} diff --git a/assets/backend/css/modal.css b/assets/backend/css/modal.css new file mode 100644 index 0000000..b26b497 --- /dev/null +++ b/assets/backend/css/modal.css @@ -0,0 +1,150 @@ +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; +} + +.fade.in { + opacity: 1; +} + +.modal-open { + overflow: hidden; +} +.modal { + display: none; + overflow: hidden; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} + +.modal.in .modal-dialog { + -webkit-transform: translate(0,25%); + -ms-transform: translate(0,25%); + -o-transform: translate(0,25%); + transform: translate(0,25%); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #ffffff; + border: 1px solid #999999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + -webkit-background-clip: padding-box; + background-clip: padding-box; + outline: 0; +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} +.modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} +.modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; + float: right; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.clearfix:before, +.clearfix:after, +.modal-header:before, +.modal-header:after, +.modal-footer:before, +.modal-footer:after { + content: " "; + display: table; +} +.clearfix:after, +.modal-header:after, +.modal-footer:after { + clear: both; +} \ No newline at end of file diff --git a/assets/backend/css/modal.min.css b/assets/backend/css/modal.min.css new file mode 100644 index 0000000..d66ebee --- /dev/null +++ b/assets/backend/css/modal.min.css @@ -0,0 +1,2 @@ + +.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,25%);-ms-transform:translate(0,25%);-o-transform:translate(0,25%);transform:translate(0,25%)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px;float:right}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media(min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media(min-width:992px){.modal-lg{width:900px}}.clearfix:before,.clearfix:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.modal-header:after,.modal-footer:after{clear:both} \ No newline at end of file diff --git a/assets/backend/img/ai-copilot.png b/assets/backend/img/ai-copilot.png new file mode 100644 index 0000000..e9422a4 Binary files /dev/null and b/assets/backend/img/ai-copilot.png differ diff --git a/assets/backend/img/carousel.jpg b/assets/backend/img/carousel.jpg new file mode 100644 index 0000000..2a358e5 Binary files /dev/null and b/assets/backend/img/carousel.jpg differ diff --git a/assets/backend/img/icon-18x18.png b/assets/backend/img/icon-18x18.png new file mode 100644 index 0000000..19f3de5 Binary files /dev/null and b/assets/backend/img/icon-18x18.png differ diff --git a/assets/backend/img/icon-256x256.jpg b/assets/backend/img/icon-256x256.jpg new file mode 100644 index 0000000..727cfb5 Binary files /dev/null and b/assets/backend/img/icon-256x256.jpg differ diff --git a/assets/backend/img/icon-dark-18x18.png b/assets/backend/img/icon-dark-18x18.png new file mode 100644 index 0000000..3806d14 Binary files /dev/null and b/assets/backend/img/icon-dark-18x18.png differ diff --git a/assets/backend/img/icon.png b/assets/backend/img/icon.png new file mode 100644 index 0000000..19f3de5 Binary files /dev/null and b/assets/backend/img/icon.png differ diff --git a/assets/backend/img/icond.png b/assets/backend/img/icond.png new file mode 100644 index 0000000..3806d14 Binary files /dev/null and b/assets/backend/img/icond.png differ diff --git a/assets/backend/img/layouts/acenter.png b/assets/backend/img/layouts/acenter.png new file mode 100644 index 0000000..72b740e Binary files /dev/null and b/assets/backend/img/layouts/acenter.png differ diff --git a/assets/backend/img/layouts/aleft.png b/assets/backend/img/layouts/aleft.png new file mode 100644 index 0000000..1fd9db5 Binary files /dev/null and b/assets/backend/img/layouts/aleft.png differ diff --git a/assets/backend/img/layouts/aright.png b/assets/backend/img/layouts/aright.png new file mode 100644 index 0000000..25a0852 Binary files /dev/null and b/assets/backend/img/layouts/aright.png differ diff --git a/assets/backend/img/layouts/collapse.png b/assets/backend/img/layouts/collapse.png new file mode 100644 index 0000000..1addb1b Binary files /dev/null and b/assets/backend/img/layouts/collapse.png differ diff --git a/assets/backend/img/layouts/embed.png b/assets/backend/img/layouts/embed.png new file mode 100644 index 0000000..f6f3b87 Binary files /dev/null and b/assets/backend/img/layouts/embed.png differ diff --git a/assets/backend/img/layouts/fleft.png b/assets/backend/img/layouts/fleft.png new file mode 100644 index 0000000..f2163c0 Binary files /dev/null and b/assets/backend/img/layouts/fleft.png differ diff --git a/assets/backend/img/layouts/fright.png b/assets/backend/img/layouts/fright.png new file mode 100644 index 0000000..da398eb Binary files /dev/null and b/assets/backend/img/layouts/fright.png differ diff --git a/assets/backend/img/layouts/inherit.png b/assets/backend/img/layouts/inherit.png new file mode 100644 index 0000000..f55befa Binary files /dev/null and b/assets/backend/img/layouts/inherit.png differ diff --git a/assets/backend/img/layouts/offcanvas.png b/assets/backend/img/layouts/offcanvas.png new file mode 100644 index 0000000..81e282e Binary files /dev/null and b/assets/backend/img/layouts/offcanvas.png differ diff --git a/assets/backend/img/layouts/panels.png b/assets/backend/img/layouts/panels.png new file mode 100644 index 0000000..62276f7 Binary files /dev/null and b/assets/backend/img/layouts/panels.png differ diff --git a/assets/backend/img/layouts/vertical.png b/assets/backend/img/layouts/vertical.png new file mode 100644 index 0000000..c1a7449 Binary files /dev/null and b/assets/backend/img/layouts/vertical.png differ diff --git a/assets/backend/img/login.jpg b/assets/backend/img/login.jpg new file mode 100644 index 0000000..8a85943 Binary files /dev/null and b/assets/backend/img/login.jpg differ diff --git a/assets/backend/img/logo.jpg b/assets/backend/img/logo.jpg new file mode 100644 index 0000000..86fd508 Binary files /dev/null and b/assets/backend/img/logo.jpg differ diff --git a/assets/backend/img/offset.png b/assets/backend/img/offset.png new file mode 100644 index 0000000..ec6849b Binary files /dev/null and b/assets/backend/img/offset.png differ diff --git a/assets/backend/img/placeholder.jpg b/assets/backend/img/placeholder.jpg new file mode 100644 index 0000000..b03fbb7 Binary files /dev/null and b/assets/backend/img/placeholder.jpg differ diff --git a/assets/backend/img/quadlayers.jpg b/assets/backend/img/quadlayers.jpg new file mode 100644 index 0000000..0bbd67e Binary files /dev/null and b/assets/backend/img/quadlayers.jpg differ diff --git a/assets/backend/img/screenshot.png b/assets/backend/img/screenshot.png new file mode 100644 index 0000000..2a3222d Binary files /dev/null and b/assets/backend/img/screenshot.png differ diff --git a/assets/backend/img/social.jpg b/assets/backend/img/social.jpg new file mode 100644 index 0000000..3dad442 Binary files /dev/null and b/assets/backend/img/social.jpg differ diff --git a/assets/backend/img/tabs.jpg b/assets/backend/img/tabs.jpg new file mode 100644 index 0000000..2080e53 Binary files /dev/null and b/assets/backend/img/tabs.jpg differ diff --git a/assets/backend/img/wp-whatsapp-chat.jpeg b/assets/backend/img/wp-whatsapp-chat.jpeg new file mode 100644 index 0000000..fb4c8b8 Binary files /dev/null and b/assets/backend/img/wp-whatsapp-chat.jpeg differ diff --git a/assets/frontend/css/quadmenu-locations.css b/assets/frontend/css/quadmenu-locations.css new file mode 100644 index 0000000..ed91f4d --- /dev/null +++ b/assets/frontend/css/quadmenu-locations.css @@ -0,0 +1,1148 @@ +#quadmenu .quadmenu-navbar-toggle { + margin-left: 15px; + margin-right: 15px; +} +#quadmenu .quadmenu-alert + .quadmenu-alert { + margin-top: 15px; +} +#quadmenu .quadmenu-navbar-header .quadmenu-navbar-brand { + padding: 0 15px; +} +#quadmenu .quadmenu-navbar-collapse { + padding-right: 15px; + padding-left: 15px; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-login > .quadmenu-dropdown-menu, +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-cart > .quadmenu-dropdown-menu { + padding: 15px; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-search > form > .quadmenu-item-content > .quadmenu-icon { + right: 30px; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-social > .quadmenu-toggle-container > a { + padding-left: 15px; + padding-right: 15px; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-carousel .owl-nav { + padding-left: 15px; + padding-right: 15px; +} +#quadmenu .quadmenu-navbar-nav li.quadmenu-item-type-column > div > ul { + padding-top: 15px; + padding-bottom: 15px; +} +#quadmenu .quadmenu-navbar-nav li.quadmenu-dropdown form .quadmenu-item-content + .quadmenu-item-content { + margin-top: 15px; +} +#quadmenu .quadmenu-row { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex!important; + -webkit-flex-wrap: wrap!important; + -ms-flex-wrap: wrap!important; + flex-wrap: wrap!important; +} +#quadmenu .col-1, +#quadmenu .col-2, +#quadmenu .col-3, +#quadmenu .col-4, +#quadmenu .col-5, +#quadmenu .col-6, +#quadmenu .col-7, +#quadmenu .col-8, +#quadmenu .col-9, +#quadmenu .col-10, +#quadmenu .col-11, +#quadmenu .col-12, +#quadmenu .col, +#quadmenu .col-sm-1, +#quadmenu .col-sm-2, +#quadmenu .col-sm-3, +#quadmenu .col-sm-4, +#quadmenu .col-sm-5, +#quadmenu .col-sm-6, +#quadmenu .col-sm-7, +#quadmenu .col-sm-8, +#quadmenu .col-sm-9, +#quadmenu .col-sm-10, +#quadmenu .col-sm-11, +#quadmenu .col-sm-12, +#quadmenu .col-sm, +#quadmenu .col-md-1, +#quadmenu .col-md-2, +#quadmenu .col-md-3, +#quadmenu .col-md-4, +#quadmenu .col-md-5, +#quadmenu .col-md-6, +#quadmenu .col-md-7, +#quadmenu .col-md-8, +#quadmenu .col-md-9, +#quadmenu .col-md-10, +#quadmenu .col-md-11, +#quadmenu .col-md-12, +#quadmenu .col-md, +#quadmenu .col-lg-1, +#quadmenu .col-lg-2, +#quadmenu .col-lg-3, +#quadmenu .col-lg-4, +#quadmenu .col-lg-5, +#quadmenu .col-lg-6, +#quadmenu .col-lg-7, +#quadmenu .col-lg-8, +#quadmenu .col-lg-9, +#quadmenu .col-lg-10, +#quadmenu .col-lg-11, +#quadmenu .col-lg-12, +#quadmenu .col-lg, +#quadmenu .col-xl-1, +#quadmenu .col-xl-2, +#quadmenu .col-xl-3, +#quadmenu .col-xl-4, +#quadmenu .col-xl-5, +#quadmenu .col-xl-6, +#quadmenu .col-xl-7, +#quadmenu .col-xl-8, +#quadmenu .col-xl-9, +#quadmenu .col-xl-10, +#quadmenu .col-xl-11, +#quadmenu .col-xl-12, +#quadmenu .col-xl { + position: relative; + width: 100%; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +#quadmenu .col { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; +} +#quadmenu .col-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; +} +#quadmenu .col-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; +} +#quadmenu .col-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; +} +#quadmenu .col-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; +} +#quadmenu .col-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; +} +#quadmenu .col-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; +} +#quadmenu .col-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; +} +#quadmenu .col-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; +} +#quadmenu .col-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; +} +#quadmenu .col-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; +} +#quadmenu .col-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; +} +#quadmenu .col-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; +} +#quadmenu .col-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; +} +#quadmenu .offset-1 { + margin-left: 8.333333%; +} +#quadmenu .offset-2 { + margin-left: 16.666667%; +} +#quadmenu .offset-3 { + margin-left: 25%; +} +#quadmenu .offset-4 { + margin-left: 33.333333%; +} +#quadmenu .offset-5 { + margin-left: 41.666667%; +} +#quadmenu .offset-6 { + margin-left: 50%; +} +#quadmenu .offset-7 { + margin-left: 58.333333%; +} +#quadmenu .offset-8 { + margin-left: 66.666667%; +} +#quadmenu .offset-9 { + margin-left: 75%; +} +#quadmenu .offset-10 { + margin-left: 83.333333%; +} +#quadmenu .offset-11 { + margin-left: 91.666667%; +} +@media (min-width: 576px) { + #quadmenu .col-sm { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + #quadmenu .col-sm-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + #quadmenu .col-sm-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + #quadmenu .col-sm-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + #quadmenu .col-sm-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + #quadmenu .col-sm-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + #quadmenu .col-sm-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + #quadmenu .col-sm-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + #quadmenu .col-sm-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + #quadmenu .col-sm-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + #quadmenu .col-sm-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + #quadmenu .col-sm-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + #quadmenu .col-sm-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + #quadmenu .col-sm-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } +} +@media (min-width: 768px) { + #quadmenu .col-md { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + #quadmenu .col-md-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + #quadmenu .col-md-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + #quadmenu .col-md-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + #quadmenu .col-md-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + #quadmenu .col-md-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + #quadmenu .col-md-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + #quadmenu .col-md-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + #quadmenu .col-md-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + #quadmenu .col-md-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + #quadmenu .col-md-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + #quadmenu .col-md-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + #quadmenu .col-md-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + #quadmenu .col-md-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + #quadmenu .offset-md-0 { + margin-left: 0%; + } + #quadmenu .offset-md-1 { + margin-left: 8.333333%; + } + #quadmenu .offset-md-2 { + margin-left: 16.666667%; + } + #quadmenu .offset-md-3 { + margin-left: 25%; + } + #quadmenu .offset-md-4 { + margin-left: 33.333333%; + } + #quadmenu .offset-md-5 { + margin-left: 41.666667%; + } + #quadmenu .offset-md-6 { + margin-left: 50%; + } + #quadmenu .offset-md-7 { + margin-left: 58.333333%; + } + #quadmenu .offset-md-8 { + margin-left: 66.666667%; + } + #quadmenu .offset-md-9 { + margin-left: 75%; + } + #quadmenu .offset-md-10 { + margin-left: 83.333333%; + } + #quadmenu .offset-md-11 { + margin-left: 91.666667%; + } +} +@media (min-width: 992px) { + #quadmenu .col-lg { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + #quadmenu .col-lg-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + #quadmenu .col-lg-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + #quadmenu .col-lg-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + #quadmenu .col-lg-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + #quadmenu .col-lg-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + #quadmenu .col-lg-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + #quadmenu .col-lg-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + #quadmenu .col-lg-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + #quadmenu .col-lg-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + #quadmenu .col-lg-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + #quadmenu .col-lg-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + #quadmenu .col-lg-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + #quadmenu .col-lg-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + #quadmenu .offset-lg-0 { + margin-left: 0%; + } + #quadmenu .offset-lg-1 { + margin-left: 8.333333%; + } + #quadmenu .offset-lg-2 { + margin-left: 16.666667%; + } + #quadmenu .offset-lg-3 { + margin-left: 25%; + } + #quadmenu .offset-lg-4 { + margin-left: 33.333333%; + } + #quadmenu .offset-lg-5 { + margin-left: 41.666667%; + } + #quadmenu .offset-lg-6 { + margin-left: 50%; + } + #quadmenu .offset-lg-7 { + margin-left: 58.333333%; + } + #quadmenu .offset-lg-8 { + margin-left: 66.666667%; + } + #quadmenu .offset-lg-9 { + margin-left: 75%; + } + #quadmenu .offset-lg-10 { + margin-left: 83.333333%; + } + #quadmenu .offset-lg-11 { + margin-left: 91.666667%; + } +} +@media (min-width: 1200px) { + #quadmenu .col-xl { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + #quadmenu .col-xl-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + #quadmenu .col-xl-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + #quadmenu .col-xl-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + #quadmenu .col-xl-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + #quadmenu .col-xl-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + #quadmenu .col-xl-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + #quadmenu .col-xl-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + #quadmenu .col-xl-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + #quadmenu .col-xl-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + #quadmenu .col-xl-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + #quadmenu .col-xl-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + #quadmenu .col-xl-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + #quadmenu .col-xl-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + #quadmenu .offset-xl-0 { + margin-left: 0%; + } + #quadmenu .offset-xl-1 { + margin-left: 8.333333%; + } + #quadmenu .offset-xl-2 { + margin-left: 16.666667%; + } + #quadmenu .offset-xl-3 { + margin-left: 25%; + } + #quadmenu .offset-xl-4 { + margin-left: 33.333333%; + } + #quadmenu .offset-xl-5 { + margin-left: 41.666667%; + } + #quadmenu .offset-xl-6 { + margin-left: 50%; + } + #quadmenu .offset-xl-7 { + margin-left: 58.333333%; + } + #quadmenu .offset-xl-8 { + margin-left: 66.666667%; + } + #quadmenu .offset-xl-9 { + margin-left: 75%; + } + #quadmenu .offset-xl-10 { + margin-left: 83.333333%; + } + #quadmenu .offset-xl-11 { + margin-left: 91.666667%; + } +} +#quadmenu .hidden { + display: none !important; +} +@media (max-width: 768px) { + #quadmenu .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + #quadmenu .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + #quadmenu .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + #quadmenu .hidden-lg { + display: none !important; + } +} +.quadmenu-sticky-wrapper { + background-color: #333333; +} +#quadmenu { + background-color: #333333; + color: #aaaaaa; + font-family: Verdana, Geneva, sans-serif; + font-weight: 400; + font-size: 11px; + font-style: normal; + letter-spacing: inherit; +} +#quadmenu.quadmenu-background-gradient { + background: -webkit-linear-gradient(17deg, #333333 0, #000000 90%); + /*Safari 5.1-6*/ + background: -o-linear-gradient(17deg, #333333 0, #000000 90%); + /*Opera 11.1-12*/ + background: -moz-linear-gradient(17deg, #333333 0, #000000 90%); + /*Fx 3.6-15*/ + background: linear-gradient(17deg, #333333 0, #000000 90%); + /*Standard*/ +} +#quadmenu.quadmenu-divider-show .quadmenu-navbar-nav > li > a:after, +#quadmenu.quadmenu-divider-show .quadmenu-navbar-nav > li.quadmenu-item-type-search > form:after { + margin-left: 0px; + background-color: rgba(255, 255, 255, 0.5); +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item > a, +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item > form { + font-family: Verdana, Geneva, sans-serif; + font-size: 11px; + font-weight: 400; + font-style: normal; + letter-spacing: inherit; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item > form.quadmenu-has-icon:not(.quadmenu-item-type-icon) > a > .quadmenu-item-content { + padding-left: 41px; +} +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu .quadmenu-title { + font-family: Verdana, Geneva, sans-serif; + font-size: 11px; +} +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item > a { + font-family: Verdana, Geneva, sans-serif; + font-size: 11px; + font-weight: 400; + font-style: normal; + letter-spacing: inherit; +} +#quadmenu.quadmenu-is-horizontal .quadmenu-navbar-header .quadmenu-navbar-brand { + height: 60px; + line-height: 60px; +} +#quadmenu.quadmenu-is-horizontal .quadmenu-navbar-nav > li { + height: 60px; +} +#quadmenu.quadmenu-is-horizontal .quadmenu-navbar-nav li.quadmenu-item-type-social > .quadmenu-toggle-container { + height: 60px; +} +#quadmenu .quadmenu-navbar-header .quadmenu-navbar-brand { + margin-top: 0px; + margin-bottom: 0px; +} +#quadmenu.quadmenu-is-horizontal .quadmenu-navbar-nav > li > .quadmenu-dropdown-menu { + margin-top: 0px; +} +#quadmenu.quadmenu-is-horizontal .quadmenu-navbar-nav .quadmenu-dropdown-menu { + border-top-left-radius: 0px; + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; + border-top-width: 0px; + border-right-width: 0px; + border-bottom-width: 0px; + border-left-width: 0px; + border-color: #000000; + border-style: solid; + background-color: #ffffff; +} +#quadmenu.quadmenu-is-horizontal .quadmenu-navbar-nav .quadmenu-dropdown-menu > ul > li:first-child, +#quadmenu.quadmenu-is-horizontal .quadmenu-navbar-nav .quadmenu-dropdown-menu > ul > li:first-child > a { + border-radius: 0px 0px 0 0; +} +#quadmenu.quadmenu-is-horizontal .quadmenu-navbar-nav .quadmenu-dropdown-menu > ul > li:last-child, +#quadmenu.quadmenu-is-horizontal .quadmenu-navbar-nav .quadmenu-dropdown-menu > ul > li:last-child > a { + border-radius: 0 0 0px 0px; +} +#quadmenu.quadmenu-is-horizontal .quadmenu-navbar-nav .quadmenu-dropdown-menu > ul > li:only-child, +#quadmenu.quadmenu-is-horizontal .quadmenu-navbar-nav .quadmenu-dropdown-menu > ul > li:only-child > a { + border-radius: 0px 0px 0px 0px; +} +#quadmenu.quadmenu-is-horizontal .quadmenu-navbar-nav .quadmenu-dropdown-submenu:not(.quadmenu-item-type-tab) > .quadmenu-dropdown-menu { + margin: 0px 0px 0 0px; +} +#quadmenu.quadmenu-sticky-top { + background-color: rgba(0, 0, 0, 0.5); +} +#quadmenu.quadmenu-sticky-top.quadmenu-is-horizontal .quadmenu-navbar-header .quadmenu-navbar-brand { + height: 60px; + line-height: 60px; +} +#quadmenu.quadmenu-sticky-top.quadmenu-is-horizontal .quadmenu-navbar-nav > li { + height: 60px; +} +#quadmenu.quadmenu-sticky-top.quadmenu-is-horizontal .quadmenu-navbar-nav li.quadmenu-item-type-social > .quadmenu-toggle-container { + height: 60px; +} +#quadmenu.quadmenu-sticky-top .quadmenu-navbar-brand > img { + height: 25px; +} +#quadmenu .quadmenu-navbar-brand { + color: #f1f1f1; +} +#quadmenu .quadmenu-navbar-brand:hover, +#quadmenu .quadmenu-navbar-brand:focus { + color: #ffffff; +} +#quadmenu .quadmenu-navbar-brand.img { + background-color: transparent; +} +#quadmenu .quadmenu-navbar-brand > img { + height: 25px; +} +#quadmenu .quadmenu-navbar-toggle.collapsed .icon-bar { + background-color: #ffffff; +} +#quadmenu .quadmenu-navbar-toggle .icon-bar { + background-color: #fb88dd; +} +#quadmenu .ps-container > .ps-scrollbar-y-rail { + background-color: #ffffff; +} +#quadmenu .ps-container > .ps-scrollbar-y-rail > .ps-scrollbar-y { + background-color: #fb88dd; +} +#quadmenu .ps-container > .ps-scrollbar-y-rail:hover > .ps-scrollbar-y, +#quadmenu .ps-container > .ps-scrollbar-y-rail:active > .ps-scrollbar-y { + background-color: #fb88dd; +} +#quadmenu .quadmenu-dropdown-menu .ps-container > .ps-scrollbar-y-rail > .ps-scrollbar-y { + background-color: #fb88dd; +} +#quadmenu .quadmenu-dropdown-menu .ps-container > .ps-scrollbar-y-rail:hover > .ps-scrollbar-y, +#quadmenu .quadmenu-dropdown-menu .ps-container > .ps-scrollbar-y-rail:active > .ps-scrollbar-y { + background-color: #fb88dd; +} +#quadmenu:not(.quadmenu-is-horizontal) .quadmenu-navbar-collapse.collapsing, +#quadmenu:not(.quadmenu-is-horizontal) .quadmenu-navbar-collapse.in { + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); +} +#quadmenu:not(.quadmenu-is-horizontal) .quadmenu-navbar-nav li.quadmenu-item.open > a > .quadmenu-item-content > .quadmenu-caret { + color: #444444; + background-color: #ffffff; +} +#quadmenu:not(.quadmenu-is-horizontal) .navbar-offcanvas { + background-color: #333333; +} +#quadmenu:not(.quadmenu-is-horizontal).quadmenu-background-gradient .navbar-offcanvas { + background: -webkit-linear-gradient(17deg, #333333 0, #000000 90%); + /*Safari 5.1-6*/ + background: -o-linear-gradient(17deg, #333333 0, #000000 90%); + /*Opera 11.1-12*/ + background: -moz-linear-gradient(17deg, #333333 0, #000000 90%); + /*Fx 3.6-15*/ + background: linear-gradient(17deg, #333333 0, #000000 90%); + /*Standard*/ +} +#quadmenu:not(.quadmenu-is-horizontal).quadmenu-offcanvas-left .navbar-offcanvas { + left: -260px; +} +#quadmenu:not(.quadmenu-is-horizontal).quadmenu-offcanvas-right .navbar-offcanvas { + right: -260px; +} +#quadmenu:not(.quadmenu-is-horizontal) .navbar-offcanvas { + width: 260px; +} +#quadmenu:not(.quadmenu-is-horizontal) .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item:last-child > a { + border-style: solid; + border-width: 0 0 1px 0; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-hover-slidebar > span.bar { + background-color: #fb88dd; +} +#quadmenu .quadmenu-navbar-nav > li { + margin: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; + /*.button { + color: ~"@{@{location}_navbar_button}"; + background-color: ~"@{@{location}_navbar_button_bg}"; + + &:active, + &:focus, + &:hover { + color: ~"@{@{location}_navbar_button_hover}"; + background-color: ~"@{@{location}_navbar_button_bg_hover}"; + } + }*/ +} +#quadmenu .quadmenu-navbar-nav > li > a > .quadmenu-item-content { + color: #f1f1f1; + text-transform: uppercase; +} +#quadmenu .quadmenu-navbar-nav > li > a > .quadmenu-item-content > .quadmenu-icon { + color: #eeeeee; +} +#quadmenu .quadmenu-navbar-nav > li > a > .quadmenu-item-content > .quadmenu-subtitle { + color: #eeeeee; +} +#quadmenu .quadmenu-navbar-nav > li > a > .quadmenu-item-content > .quadmenu-badge > .quadmenu-badge-bubble { + background-color: #fb88dd; + color: #ffffff; +} +#quadmenu .quadmenu-navbar-nav > li:hover > a > .quadmenu-item-content, +#quadmenu .quadmenu-navbar-nav > li.open > a > .quadmenu-item-content { + color: #ffffff; +} +#quadmenu .quadmenu-navbar-nav > li:hover > a > .quadmenu-item-content > .quadmenu-icon, +#quadmenu .quadmenu-navbar-nav > li.open > a > .quadmenu-item-content > .quadmenu-icon { + color: #ffffff; +} +#quadmenu .quadmenu-navbar-nav > li:hover > a > .quadmenu-item-content > .quadmenu-subtitle, +#quadmenu .quadmenu-navbar-nav > li.open > a > .quadmenu-item-content > .quadmenu-subtitle { + color: #ffffff !important; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-has-link { + background-color: transparent; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-has-link:hover, +#quadmenu .quadmenu-navbar-nav > li.quadmenu-has-link.open { + background-color: #111111; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-tabs > .quadmenu-dropdown-menu > ul > li > ul.quadmenu-tabs > li.quadmenu-item-type-tab { + background-color: rgba(0, 0, 0, 0.05); +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-tabs > .quadmenu-dropdown-menu > ul > li > ul.quadmenu-tabs > li.quadmenu-item-type-tab:hover, +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-tabs > .quadmenu-dropdown-menu > ul > li > ul.quadmenu-tabs > li.quadmenu-item-type-tab.open { + background-color: rgba(0, 0, 0, 0.1); +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-search > form ::placeholder { + color: #f1f1f1; + opacity: 0.6; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-search > form input { + color: #f1f1f1; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-search > form i { + color: #eeeeee; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-cart > a > .quadmenu-item-content > .quadmenu-cart-magic > .quadmenu-icon { + color: #eeeeee; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-cart > a > .quadmenu-item-content > .quadmenu-cart-magic > .quadmenu-cart-qty { + background-color: #fb88dd; + color: #ffffff; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-cart.open > a > .quadmenu-item-content > .quadmenu-cart-magic > .quadmenu-icon { + color: #ffffff; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-social > .quadmenu-toggle-container > a { + color: #f1f1f1; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-social > .quadmenu-toggle-container > a > .quadmenu-icon { + color: #eeeeee; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-social > .quadmenu-toggle-container > a:hover > .quadmenu-icon, +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-social > .quadmenu-toggle-container > a:focus > .quadmenu-icon { + color: #ffffff; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-carousel .owl-dots .owl-dot span { + background-color: #fb88dd; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-carousel .owl-nav .owl-prev, +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-carousel .owl-nav .owl-next { + color: #ffffff; + background-color: #fb88dd; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-carousel .owl-nav .owl-prev:active, +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-carousel .owl-nav .owl-next:active, +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-carousel .owl-nav .owl-prev:focus, +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-carousel .owl-nav .owl-next:focus, +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-carousel .owl-nav .owl-prev:hover, +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-carousel .owl-nav .owl-next:hover { + color: #ffffff; + background-color: #000000; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-login a { + color: #444444; +} +#quadmenu .quadmenu-navbar-nav > li.quadmenu-item-type-login a:hover { + color: #333333; +} +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu { + background-color: #ffffff; +} +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu .quadmenu-title { + color: #444444; + border-width: 0 0 1px 0; + border-style: solid; + border-color: #fb88dd; + margin-bottom: 15px; +} +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu form ::placeholder { + color: #444444; + opacity: 0.6; +} +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu .button { + color: #ffffff; + background-color: #fb88dd; +} +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu .button:active, +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu .button:focus, +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu .button:hover { + color: #ffffff; + background-color: #000000; +} +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item:not(:last-child):not(:only-child) > a { + border-style: solid; + border-width: 0 0 1px 0; +} +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item > a { + border-color: #f4f4f4; +} +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item > a > .quadmenu-item-content { + color: #444444; + text-transform: none; +} +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item > a > .quadmenu-item-content > .quadmenu-icon { + color: #fb88dd; +} +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item > a > .quadmenu-item-content > .quadmenu-subtitle, +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item > a > .quadmenu-item-content > .quadmenu-description { + color: #a0a0a0; +} +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item > a > .quadmenu-item-content > .quadmenu-badge > .quadmenu-badge-bubble { + background-color: #fb88dd; + color: #ffffff; +} +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item:hover > a > .quadmenu-item-content, +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item.open > a > .quadmenu-item-content { + color: #333333 !important; +} +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item:hover > a > .quadmenu-item-content > .quadmenu-icon, +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item.open > a > .quadmenu-item-content > .quadmenu-icon { + color: #a9a9a9; +} +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item:hover > a > .quadmenu-item-content > .quadmenu-description, +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item.open > a > .quadmenu-item-content > .quadmenu-description, +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item:hover > a > .quadmenu-item-content > .quadmenu-subtitle, +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item.open > a > .quadmenu-item-content > .quadmenu-subtitle { + color: #cccccc; +} +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item.quadmenu-has-link:hover, +#quadmenu .quadmenu-navbar-nav .quadmenu-dropdown-menu li.quadmenu-item.quadmenu-has-link.open { + background-color: #f4f4f4; +} diff --git a/assets/frontend/css/quadmenu-normalize.css b/assets/frontend/css/quadmenu-normalize.css new file mode 100644 index 0000000..91374f9 --- /dev/null +++ b/assets/frontend/css/quadmenu-normalize.css @@ -0,0 +1,266 @@ +#quadmenu .owl-carousel, +#quadmenu .owl-dots, +#quadmenu .owl-nav, +#quadmenu .quadmenu-container, +#quadmenu .quadmenu-navbar-nav, +#quadmenu .quadmenu-dropdown-toggle, +#quadmenu .quadmenu-dropdown-menu, +#quadmenu .quadmenu-dropdown-submenu, +#quadmenu ul, +#quadmenu ul li, +#quadmenu ul li ul, +#quadmenu ul li a { + margin: 0; + padding: 0; + left: auto; + right: auto; + top: auto; + bottom: auto; + text-indent: 0; + clip: auto; + position: static; + background: none; + text-transform: none; + overflow: visible; + -webkit-box-shadow: none; + -moz-box-shadow: none; + -o-box-shadow: none; + box-shadow: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + vertical-align: top; + border: none; + border-radius: 0; + text-align: left; + float: none; + height: auto; + width: auto; + transform: unset; + animation: unset; + opacity: unset; + visibility: visible; + pointer-events: all; +} + +#quadmenu article, +#quadmenu aside, +#quadmenu details, +#quadmenu figcaption, +#quadmenu figure, +#quadmenu footer, +#quadmenu header, +#quadmenu hgroup, +#quadmenu main, +#quadmenu menu, +#quadmenu nav, +#quadmenu section, +#quadmenu summary { + display: block; +} +#quadmenu audio, +#quadmenu canvas, +#quadmenu progress, +#quadmenu video { + display: inline-block; + vertical-align: baseline; +} +#quadmenu audio:not([controls]) { + display: none; + height: 0; +} +#quadmenu [hidden], +#quadmenu template { + display: none; +} +#quadmenu a { + background-color: transparent; +} +#quadmenu a:active, +#quadmenu a:hover { + outline: 0; +} +#quadmenu abbr[title] { + border-bottom: 1px dotted; +} +#quadmenu b, +#quadmenu strong { + font-weight: bold; +} +#quadmenu dfn { + font-style: italic; +} +#quadmenu h1 { + font-size: 2em; + margin: 0.67em 0; +} +#quadmenu mark { + background: #ff0; + color: #000; +} +#quadmenu small { + font-size: 80%; +} +#quadmenu sub, +#quadmenu sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +#quadmenu sub { + bottom: -0.25em; +} +#quadmenu img { + border: 0; +} +#quadmenu svg:not(:root) { + overflow: hidden; +} +#quadmenu figure { + margin: 1em 40px; +} +#quadmenu hr { + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} +#quadmenu pre { + overflow: auto; +} +#quadmenu code, +#quadmenu kbd, +#quadmenu pre, +#quadmenu samp { + font-family: monospace, monospace; + font-size: 1em; +} +#quadmenu button, +#quadmenu input, +#quadmenu optgroup, +#quadmenu select, +#quadmenu textarea { + color: inherit; + font: inherit; + margin: 0; +} +#quadmenu button { + overflow: visible; +} +#quadmenu button, +#quadmenu select { + text-transform: none; +} +#quadmenu button, +#quadmenu html input[type="button"], +#quadmenu input[type="reset"], +#quadmenu input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +#quadmenu button[disabled], +#quadmenu html input[disabled] { + cursor: default; +} +#quadmenu button::-moz-focus-inner, +#quadmenu input::-moz-focus-inner { + border: 0; + padding: 0; +} +#quadmenu input { + line-height: normal; +} +#quadmenu input[type="checkbox"], +#quadmenu input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +#quadmenu input[type="number"]::-webkit-inner-spin-button, +#quadmenu input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +#quadmenu input[type="search"] { + -webkit-appearance: textfield; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +#quadmenu input[type="search"]::-webkit-search-cancel-button, +#quadmenu input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +#quadmenu fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +#quadmenu legend { + border: 0; + padding: 0; +} +#quadmenu textarea { + overflow: auto; +} +#quadmenu optgroup { + font-weight: bold; +} +#quadmenu table { + border-collapse: collapse; + border-spacing: 0; +} +#quadmenu td, +#quadmenu th { + padding: 0; +} +#quadmenu * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + transition: none; + animation: none; +} +#quadmenu *:before, +#quadmenu *:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +#quadmenu input, +#quadmenu #quadmenu button, +#quadmenu select, +#quadmenu textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +#quadmenu a { + text-decoration: none; +} +#quadmenu a:hover, +#quadmenu a:focus { + text-decoration: none; +} +#quadmenu a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +#quadmenu a:focus, #quadmenu a:active, +#quadmenu button::-moz-focus-inner, +#quadmenu input[type="reset"]::-moz-focus-inner, +#quadmenu input[type="button"]::-moz-focus-inner, +#quadmenu input[type="submit"]::-moz-focus-inner, +#quadmenu select::-moz-focus-inner, +#quadmenu input[type="file"] > input[type="button"]::-moz-focus-inner { + border: 0; + outline : 0; +} \ No newline at end of file diff --git a/assets/frontend/css/quadmenu-normalize.min.css b/assets/frontend/css/quadmenu-normalize.min.css new file mode 100644 index 0000000..840859c --- /dev/null +++ b/assets/frontend/css/quadmenu-normalize.min.css @@ -0,0 +1,2 @@ + +#quadmenu .owl-carousel,#quadmenu .owl-dots,#quadmenu .owl-nav,#quadmenu .quadmenu-container,#quadmenu .quadmenu-navbar-nav,#quadmenu .quadmenu-dropdown-toggle,#quadmenu .quadmenu-dropdown-menu,#quadmenu .quadmenu-dropdown-submenu,#quadmenu ul,#quadmenu ul li,#quadmenu ul li ul,#quadmenu ul li a{margin:0;padding:0;left:auto;right:auto;top:auto;bottom:auto;text-indent:0;clip:auto;position:static;background:0;text-transform:none;overflow:visible;-webkit-box-shadow:none;-moz-box-shadow:none;-o-box-shadow:none;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:top;border:0;border-radius:0;text-align:left;float:none;height:auto;width:auto;transform:unset;animation:unset;opacity:unset;visibility:visible;pointer-events:all}#quadmenu article,#quadmenu aside,#quadmenu details,#quadmenu figcaption,#quadmenu figure,#quadmenu footer,#quadmenu header,#quadmenu hgroup,#quadmenu main,#quadmenu menu,#quadmenu nav,#quadmenu section,#quadmenu summary{display:block}#quadmenu audio,#quadmenu canvas,#quadmenu progress,#quadmenu video{display:inline-block;vertical-align:baseline}#quadmenu audio:not([controls]){display:none;height:0}#quadmenu [hidden],#quadmenu template{display:none}#quadmenu a{background-color:transparent}#quadmenu a:active,#quadmenu a:hover{outline:0}#quadmenu abbr[title]{border-bottom:1px dotted}#quadmenu b,#quadmenu strong{font-weight:bold}#quadmenu dfn{font-style:italic}#quadmenu h1{font-size:2em;margin:.67em 0}#quadmenu mark{background:#ff0;color:#000}#quadmenu small{font-size:80%}#quadmenu sub,#quadmenu sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}#quadmenu sub{bottom:-0.25em}#quadmenu img{border:0}#quadmenu svg:not(:root){overflow:hidden}#quadmenu figure{margin:1em 40px}#quadmenu hr{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;height:0}#quadmenu pre{overflow:auto}#quadmenu code,#quadmenu kbd,#quadmenu pre,#quadmenu samp{font-family:monospace,monospace;font-size:1em}#quadmenu button,#quadmenu input,#quadmenu optgroup,#quadmenu select,#quadmenu textarea{color:inherit;font:inherit;margin:0}#quadmenu button{overflow:visible}#quadmenu button,#quadmenu select{text-transform:none}#quadmenu button,#quadmenu html input[type="button"],#quadmenu input[type="reset"],#quadmenu input[type="submit"]{-webkit-appearance:button;cursor:pointer}#quadmenu button[disabled],#quadmenu html input[disabled]{cursor:default}#quadmenu button::-moz-focus-inner,#quadmenu input::-moz-focus-inner{border:0;padding:0}#quadmenu input{line-height:normal}#quadmenu input[type="checkbox"],#quadmenu input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}#quadmenu input[type="number"]::-webkit-inner-spin-button,#quadmenu input[type="number"]::-webkit-outer-spin-button{height:auto}#quadmenu input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}#quadmenu input[type="search"]::-webkit-search-cancel-button,#quadmenu input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}#quadmenu fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}#quadmenu legend{border:0;padding:0}#quadmenu textarea{overflow:auto}#quadmenu optgroup{font-weight:bold}#quadmenu table{border-collapse:collapse;border-spacing:0}#quadmenu td,#quadmenu th{padding:0}#quadmenu *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;transition:none;animation:none}#quadmenu *:before,#quadmenu *:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#quadmenu input,#quadmenu #quadmenu button,#quadmenu select,#quadmenu textarea{font-family:inherit;font-size:inherit;line-height:inherit}#quadmenu a{text-decoration:none}#quadmenu a:hover,#quadmenu a:focus{text-decoration:none}#quadmenu a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#quadmenu a:focus,#quadmenu a:active,#quadmenu button::-moz-focus-inner,#quadmenu input[type="reset"]::-moz-focus-inner,#quadmenu input[type="button"]::-moz-focus-inner,#quadmenu input[type="submit"]::-moz-focus-inner,#quadmenu select::-moz-focus-inner,#quadmenu input[type="file"]>input[type="button"]::-moz-focus-inner{border:0;outline:0} \ No newline at end of file diff --git a/assets/frontend/css/quadmenu-widgets.css b/assets/frontend/css/quadmenu-widgets.css new file mode 100644 index 0000000..040c30a --- /dev/null +++ b/assets/frontend/css/quadmenu-widgets.css @@ -0,0 +1,455 @@ +#quadmenu .wpcf7 form { + margin: 0; + padding: 0; +} +#quadmenu .wpcf7 form > p { + margin: 0 0 1.5em 0; +} +#quadmenu .wpcf7 br { + display: none; +} +#quadmenu .wpcf7 .ajax-loader { + display: none; +} +#quadmenu .wpcf7 .wpcf7-not-valid { + border: 1px solid #ff0000; +} +#quadmenu .wpcf7 span.wpcf7-not-valid-tip { + display: none; +} +#quadmenu .wpcf7 div.wpcf7-response-output { + margin: 0; + padding: 15px; +} +#quadmenu .wpcf7 div.wpcf7-validation-errors { + border-radius: 4px; +} +#quadmenu .wpcf7 div.wpcf7-validation-errors { + margin-bottom: 20px; +} +#quadmenu .wpcf7 .wpcf7-checkbox { + text-align: center; +} +#quadmenu .widget { + padding: 0; +} +#quadmenu .widget a, +#quadmenu .widget ul li { + line-height: inherit; +} +#quadmenu .widget ul { + list-style: none; + margin: 0; +} +#quadmenu .widget ul li { + position: relative; + display: block; + padding: 10px 0; + width: 100%; +} +#quadmenu .widget ul li:last-child { + border-bottom: 0; + padding-bottom: 0; +} +#quadmenu .widget ul li img, +#quadmenu .widget ul li h5, +#quadmenu .widget ul li i, +#quadmenu .widget ul li span { + -webkit-transition: color 0.4s; + -moz-transition: color 0.4s; + -ms-transition: color 0.4s; + -o-transition: color 0.4s; + transition: color 0.4s; +} +#quadmenu .widget ul ul { + margin-top: 10px; + margin-bottom: 0.1em; +} +#quadmenu .widget ul ul li:first-child { + border-top: 1px solid; +} +#quadmenu .widget > ul, +#quadmenu .widget > div > ul { + padding: 0; + margin-top: 0; + margin-bottom: 0; +} +#quadmenu .widget > ul > li:first-child, +#quadmenu .widget > div > ul > li:first-child { + border-top: 0; + padding-top: 0; +} +#quadmenu .widget.widget_text p { + line-height: 1.45; + margin-bottom: 10px; +} +#quadmenu .widget.widget_text input, +#quadmenu .widget.widget_text select { + max-width: 100%; +} +#quadmenu .widget.widget_rss h4 a.rsswidget { + text-transform: uppercase; +} +#quadmenu .widget.widget_rss h4 a.rsswidget:first-child { + float: right; +} +#quadmenu .widget.widget_rss span.rss-date { + display: block; + text-align: right; + margin: 10px 0; +} +#quadmenu .widget.widget_rss div.rssSummary { + text-transform: none; +} +#quadmenu .widget.widget_rss cite { + margin-top: 5px; + text-align: right; + display: block; +} +#quadmenu .widget.widget_nav_menu ul ul, +#quadmenu .widget.widget_pages ul ul { + padding: 10px 0 0 10px; +} +#quadmenu .widget.widget_recent_comments ul > li > span.comment-author-link, +#quadmenu .widget.widget_recent_entries ul > li > span.comment-author-link, +#quadmenu .widget.widget_recent_comments ul > li > span.post-date, +#quadmenu .widget.widget_recent_entries ul > li > span.post-date { + display: block; + margin: 2px 0 0 0; + font-size: 0.8em; + text-transform: none; + line-height: 1.3em; +} +#quadmenu .widget.widget_product_search input.form-control, +#quadmenu .widget.widget_search input.form-control { + width: 100%; +} +#quadmenu .widget.widget_archive ul > li > span.count, +#quadmenu .widget.widget_categories ul > li > span.count, +#quadmenu .widget.widget_product_categories ul > li > span.count { + font-weight: 700; + float: right; +} +#quadmenu .widget.widget_calendar > .title { + display: none; +} +#quadmenu .widget.widget_calendar table > caption { + margin: 0px; + display: table-caption; +} +#quadmenu .widget.widget_calendar table > thead > tr > th { + border-bottom: 1px; + font-size: 0.8em; +} +#quadmenu .widget.widget_calendar table td, +#quadmenu .widget.widget_calendar table th { + text-align: center; + padding: 10px 0; +} +#quadmenu .widget.widget_tag_cloud a, +#quadmenu .widget.widget_product_tag_cloud a { + display: inline-block; + text-decoration: none; + margin: 0 0.5em 0 0; +} +#quadmenu .widget.widget_tag_cloud a:after, +#quadmenu .widget.widget_product_tag_cloud a:after, +#quadmenu .widget.widget_tag_cloud a:before, +#quadmenu .widget.widget_product_tag_cloud a:before { + display: none; +} +#quadmenu .widget.widget_products li:before, +#quadmenu .widget.widget_recent_reviews li:before, +#quadmenu .widget.widget_shopping_cart li:before, +#quadmenu .widget.widget_recently_viewed_products li:before, +#quadmenu .widget.widget_top_rated_products li:before, +#quadmenu .widget.widget_featured_posts li:before, +#quadmenu .widget.widget_products li:after, +#quadmenu .widget.widget_recent_reviews li:after, +#quadmenu .widget.widget_shopping_cart li:after, +#quadmenu .widget.widget_recently_viewed_products li:after, +#quadmenu .widget.widget_top_rated_products li:after, +#quadmenu .widget.widget_featured_posts li:after { + content: " "; + display: table; +} +#quadmenu .widget.widget_products li:after, +#quadmenu .widget.widget_recent_reviews li:after, +#quadmenu .widget.widget_shopping_cart li:after, +#quadmenu .widget.widget_recently_viewed_products li:after, +#quadmenu .widget.widget_top_rated_products li:after, +#quadmenu .widget.widget_featured_posts li:after { + clear: both; +} +#quadmenu .widget.widget_products li > a, +#quadmenu .widget.widget_recent_reviews li > a, +#quadmenu .widget.widget_shopping_cart li > a, +#quadmenu .widget.widget_recently_viewed_products li > a, +#quadmenu .widget.widget_top_rated_products li > a, +#quadmenu .widget.widget_featured_posts li > a, +#quadmenu .widget.widget_products li > a > span.product-title, +#quadmenu .widget.widget_recent_reviews li > a > span.product-title, +#quadmenu .widget.widget_shopping_cart li > a > span.product-title, +#quadmenu .widget.widget_recently_viewed_products li > a > span.product-title, +#quadmenu .widget.widget_top_rated_products li > a > span.product-title, +#quadmenu .widget.widget_featured_posts li > a > span.product-title { + margin: 5px 0; + font-weight: 400; + text-transform: uppercase; +} +#quadmenu .widget.widget_products li > a > img, +#quadmenu .widget.widget_recent_reviews li > a > img, +#quadmenu .widget.widget_shopping_cart li > a > img, +#quadmenu .widget.widget_recently_viewed_products li > a > img, +#quadmenu .widget.widget_top_rated_products li > a > img, +#quadmenu .widget.widget_featured_posts li > a > img { + margin: 0 15px 0 0; + float: left; + width: 70px; + height: auto; + max-width: 35%; +} +#quadmenu .widget.widget_products li > .date, +#quadmenu .widget.widget_recent_reviews li > .date, +#quadmenu .widget.widget_shopping_cart li > .date, +#quadmenu .widget.widget_recently_viewed_products li > .date, +#quadmenu .widget.widget_top_rated_products li > .date, +#quadmenu .widget.widget_featured_posts li > .date, +#quadmenu .widget.widget_products li > a > .date, +#quadmenu .widget.widget_recent_reviews li > a > .date, +#quadmenu .widget.widget_shopping_cart li > a > .date, +#quadmenu .widget.widget_recently_viewed_products li > a > .date, +#quadmenu .widget.widget_top_rated_products li > a > .date, +#quadmenu .widget.widget_featured_posts li > a > .date { + display: block; + text-transform: uppercase; +} +#quadmenu .widget.widget_products li > a:hover > img, +#quadmenu .widget.widget_recent_reviews li > a:hover > img, +#quadmenu .widget.widget_shopping_cart li > a:hover > img, +#quadmenu .widget.widget_recently_viewed_products li > a:hover > img, +#quadmenu .widget.widget_top_rated_products li > a:hover > img, +#quadmenu .widget.widget_featured_posts li > a:hover > img { + box-shadow: 0px 3px 7px -3px rgba(0, 0, 0, 0.2); +} +#quadmenu .widget.widget_products li > p, +#quadmenu .widget.widget_recent_reviews li > p, +#quadmenu .widget.widget_shopping_cart li > p, +#quadmenu .widget.widget_recently_viewed_products li > p, +#quadmenu .widget.widget_top_rated_products li > p, +#quadmenu .widget.widget_featured_posts li > p { + margin: 0; + overflow: hidden; +} +#quadmenu .widget.widget_products li > .reviewer, +#quadmenu .widget.widget_recent_reviews li > .reviewer, +#quadmenu .widget.widget_shopping_cart li > .reviewer, +#quadmenu .widget.widget_recently_viewed_products li > .reviewer, +#quadmenu .widget.widget_top_rated_products li > .reviewer, +#quadmenu .widget.widget_products li > .quantity, +#quadmenu .widget.widget_recent_reviews li > .quantity, +#quadmenu .widget.widget_shopping_cart li > .quantity, +#quadmenu .widget.widget_recently_viewed_products li > .quantity, +#quadmenu .widget.widget_top_rated_products li > .quantity, +#quadmenu .widget.widget_products li > .price, +#quadmenu .widget.widget_recent_reviews li > .price, +#quadmenu .widget.widget_shopping_cart li > .price, +#quadmenu .widget.widget_recently_viewed_products li > .price, +#quadmenu .widget.widget_top_rated_products li > .price, +#quadmenu .widget.widget_products li > .star-rating, +#quadmenu .widget.widget_recent_reviews li > .star-rating, +#quadmenu .widget.widget_shopping_cart li > .star-rating, +#quadmenu .widget.widget_recently_viewed_products li > .star-rating, +#quadmenu .widget.widget_top_rated_products li > .star-rating { + float: none; + display: block; + margin-top: 5px; +} +#quadmenu .widget.widget_shopping_cart ul.cart_list { + padding: 0; +} +#quadmenu .widget.widget_shopping_cart ul.cart_list li > a > img { + margin: 0 15px 0 9px; +} +#quadmenu .widget.widget_shopping_cart ul.cart_list li > a.remove { + position: absolute; + left: 0; + top: 0; + width: 20px; + height: 20px; + line-height: 20px; + text-align: center; + border-radius: 50%; +} +#quadmenu .widget.widget_shopping_cart .total { + padding: 15px 0 0 0; + margin: 15px 0; + border-top: 1px solid; +} +#quadmenu .widget.widget_shopping_cart .buttons { + padding: 0; + margin: 0; +} +#quadmenu .widget.widget_shopping_cart .buttons .button { + margin: 0; +} +#quadmenu .widget.widget_shopping_cart .buttons .button:first-child { + margin-right: 5px; +} +#quadmenu .widget.widget_product_search label.screen-reader-text { + display: none; +} +#quadmenu .widget.widget_price_filter h4 { + display: none; +} +#quadmenu .widget.widget_price_filter .price_slider { + margin-bottom: 15px; +} +#quadmenu .widget.widget_price_filter .price_slider_amount { + text-align: right; +} +#quadmenu .widget.widget_price_filter .price_slider_amount .button { + float: left; +} +#quadmenu .widget.widget_price_filter .ui-slider { + position: relative; + text-align: left; +} +#quadmenu .widget.widget_price_filter .ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 10px; + height: 10px; + cursor: pointer; + outline: none; + top: -4px; +} +#quadmenu .widget.widget_price_filter .ui-slider .ui-slider-handle:last-child { + margin-left: -1em; +} +#quadmenu .widget.widget_price_filter .ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + height: 15px; + display: block; + border: 0; +} +#quadmenu .widget.widget_price_filter .ui-slider-horizontal { + height: 2px; +} +#quadmenu .widget.widget_price_filter .ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} +#quadmenu .widget.widget_price_filter .ui-slider-horizontal .ui-slider-range-min { + left: -1px; +} +#quadmenu .widget.widget_price_filter .ui-slider-horizontal .ui-slider-range-max { + right: -1px; +} +#quadmenu .widget.widget_layered_nav ul li.chosen a { + text-decoration: none; +} +#quadmenu .widget.widget_edd_cart_widget .edd-cart-number-of-items { + padding: 9px 0; +} +#quadmenu .widget.widget_edd_cart_widget ul > li { + padding: 9px 0; +} +#quadmenu .widget.widget_edd_cart_widget ul > li.edd_subtotal { + margin: 0; +} +#quadmenu .widget.widget_sci_googlemaps_widget #sci-google-map { + max-width: 100%; +} +#quadmenu .widget a, +#quadmenu .widget ul li { + font-family: Verdana, Geneva, sans-serif; + font-weight: 400; + font-size: 11px; +} +#quadmenu .widget.widget_rss span.rss-date { + font-size: 9px; +} +#quadmenu .widget.widget_products li > a, +#quadmenu .widget.widget_recent_reviews li > a, +#quadmenu .widget.widget_shopping_cart li > a, +#quadmenu .widget.widget_recently_viewed_products li > a, +#quadmenu .widget.widget_top_rated_products li > a, +#quadmenu .widget.widget_featured_posts li > a, +#quadmenu .widget.widget_products li > a > span.product-title, +#quadmenu .widget.widget_recent_reviews li > a > span.product-title, +#quadmenu .widget.widget_shopping_cart li > a > span.product-title, +#quadmenu .widget.widget_recently_viewed_products li > a > span.product-title, +#quadmenu .widget.widget_top_rated_products li > a > span.product-title, +#quadmenu .widget.widget_featured_posts li > a > span.product-title { + font-size: 12px; +} +#quadmenu .widget.widget_products li > .date, +#quadmenu .widget.widget_recent_reviews li > .date, +#quadmenu .widget.widget_shopping_cart li > .date, +#quadmenu .widget.widget_recently_viewed_products li > .date, +#quadmenu .widget.widget_top_rated_products li > .date, +#quadmenu .widget.widget_featured_posts li > .date, +#quadmenu .widget.widget_products li > a > .date, +#quadmenu .widget.widget_recent_reviews li > a > .date, +#quadmenu .widget.widget_shopping_cart li > a > .date, +#quadmenu .widget.widget_recently_viewed_products li > a > .date, +#quadmenu .widget.widget_top_rated_products li > a > .date, +#quadmenu .widget.widget_featured_posts li > a > .date { + font-size: 11px; +} +#quadmenu .widget.widget_products li span.reviewer, +#quadmenu .widget.widget_recent_reviews li span.reviewer, +#quadmenu .widget.widget_shopping_cart li span.reviewer, +#quadmenu .widget.widget_recently_viewed_products li span.reviewer, +#quadmenu .widget.widget_top_rated_products li span.reviewer, +#quadmenu .widget.widget_products li span.amount, +#quadmenu .widget.widget_recent_reviews li span.amount, +#quadmenu .widget.widget_shopping_cart li span.amount, +#quadmenu .widget.widget_recently_viewed_products li span.amount, +#quadmenu .widget.widget_top_rated_products li span.amount { + font-size: 9px; +} +#quadmenu .widget.widget_price_filter .price_slider_amount { + font-size: 9px; +} +#quadmenu .widget ul { + list-style: none; + margin: 0; +} +#quadmenu .widget ul li a { + color: #444444; +} +#quadmenu .widget ul li a:hover { + color: #333333; +} +#quadmenu .widget ul li:last-child { + border-bottom: 0; + padding-bottom: 0; +} +#quadmenu .widget.widget_tag_cloud a, +#quadmenu .widget.widget_product_tag_cloud a { + color: #fb88dd; +} +#quadmenu .widget.widget_tag_cloud a:hover, +#quadmenu .widget.widget_product_tag_cloud a:hover { + color: #a9a9a9; +} +#quadmenu .widget.widget_categories ul > li > span.count, +#quadmenu .widget.widget_product_categories ul > li > span.count { + color: #fb88dd; +} +#quadmenu .widget.widget_recent_comments ul > li > span.comment-author-link, +#quadmenu .widget.widget_recent_entries ul > li > span.comment-author-link, +#quadmenu .widget.widget_recent_comments ul > li > span.post-date, +#quadmenu .widget.widget_recent_entries ul > li > span.post-date { + color: #eeeeee; +} +#quadmenu .widget.widget_shopping_cart ul.cart_list li > a.remove { + color: #fff!important; + background-color: #fb88dd; +} +#quadmenu .widget.widget_shopping_cart ul.cart_list li > a.remove:hover { + background-color: #a9a9a9; +} diff --git a/assets/frontend/icons/eleganticons/fonts/ElegantIcons.eot b/assets/frontend/icons/eleganticons/fonts/ElegantIcons.eot new file mode 100644 index 0000000..2fe8892 Binary files /dev/null and b/assets/frontend/icons/eleganticons/fonts/ElegantIcons.eot differ diff --git a/assets/frontend/icons/eleganticons/fonts/ElegantIcons.svg b/assets/frontend/icons/eleganticons/fonts/ElegantIcons.svg new file mode 100644 index 0000000..a43f91f --- /dev/null +++ b/assets/frontend/icons/eleganticons/fonts/ElegantIcons.svg @@ -0,0 +1,1834 @@ + + + + + This is a custom SVG font generated by IcoMoon. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/frontend/icons/eleganticons/fonts/ElegantIcons.ttf b/assets/frontend/icons/eleganticons/fonts/ElegantIcons.ttf new file mode 100644 index 0000000..12ff680 Binary files /dev/null and b/assets/frontend/icons/eleganticons/fonts/ElegantIcons.ttf differ diff --git a/assets/frontend/icons/eleganticons/fonts/ElegantIcons.woff b/assets/frontend/icons/eleganticons/fonts/ElegantIcons.woff new file mode 100644 index 0000000..3933052 Binary files /dev/null and b/assets/frontend/icons/eleganticons/fonts/ElegantIcons.woff differ diff --git a/assets/frontend/icons/eleganticons/style.css b/assets/frontend/icons/eleganticons/style.css new file mode 100644 index 0000000..312a997 --- /dev/null +++ b/assets/frontend/icons/eleganticons/style.css @@ -0,0 +1,1159 @@ +@font-face { + font-family: 'ElegantIcons'; + src:url('fonts/ElegantIcons.eot'); + src:url('fonts/ElegantIcons.eot?#iefix') format('embedded-opentype'), + url('fonts/ElegantIcons.woff') format('woff'), + url('fonts/ElegantIcons.ttf') format('truetype'), + url('fonts/ElegantIcons.svg#ElegantIcons') format('svg'); + font-weight: normal; + font-style: normal; +} + +/* Use the following CSS code if you want to use data attributes for inserting your icons */ +[data-icon]:before { + font-family: 'ElegantIcons'; + content: attr(data-icon); + speak: none; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* Use the following CSS code if you want to have a class per icon */ +/* +Instead of a list of all class selectors, +you can use the generic selector below, but it's slower: +[class*="your-class-prefix"] { +*/ +.arrow_up, .arrow_down, .arrow_left, .arrow_right, .arrow_left-up, .arrow_right-up, .arrow_right-down, .arrow_left-down, .arrow-up-down, .arrow_up-down_alt, .arrow_left-right_alt, .arrow_left-right, .arrow_expand_alt2, .arrow_expand_alt, .arrow_condense, .arrow_expand, .arrow_move, .arrow_carrot-up, .arrow_carrot-down, .arrow_carrot-left, .arrow_carrot-right, .arrow_carrot-2up, .arrow_carrot-2down, .arrow_carrot-2left, .arrow_carrot-2right, .arrow_carrot-up_alt2, .arrow_carrot-down_alt2, .arrow_carrot-left_alt2, .arrow_carrot-right_alt2, .arrow_carrot-2up_alt2, .arrow_carrot-2down_alt2, .arrow_carrot-2left_alt2, .arrow_carrot-2right_alt2, .arrow_triangle-up, .arrow_triangle-down, .arrow_triangle-left, .arrow_triangle-right, .arrow_triangle-up_alt2, .arrow_triangle-down_alt2, .arrow_triangle-left_alt2, .arrow_triangle-right_alt2, .arrow_back, .icon_minus-06, .icon_plus, .icon_close, .icon_check, .icon_minus_alt2, .icon_plus_alt2, .icon_close_alt2, .icon_check_alt2, .icon_zoom-out_alt, .icon_zoom-in_alt, .icon_search, .icon_box-empty, .icon_box-selected, .icon_minus-box, .icon_plus-box, .icon_box-checked, .icon_circle-empty, .icon_circle-slelected, .icon_stop_alt2, .icon_stop, .icon_pause_alt2, .icon_pause, .icon_menu, .icon_menu-square_alt2, .icon_menu-circle_alt2, .icon_ul, .icon_ol, .icon_adjust-horiz, .icon_adjust-vert, .icon_document_alt, .icon_documents_alt, .icon_pencil, .icon_pencil-edit_alt, .icon_pencil-edit, .icon_folder-alt, .icon_folder-open_alt, .icon_folder-add_alt, .icon_info_alt, .icon_error-oct_alt, .icon_error-circle_alt, .icon_error-triangle_alt, .icon_question_alt2, .icon_question, .icon_comment_alt, .icon_chat_alt, .icon_vol-mute_alt, .icon_volume-low_alt, .icon_volume-high_alt, .icon_quotations, .icon_quotations_alt2, .icon_clock_alt, .icon_lock_alt, .icon_lock-open_alt, .icon_key_alt, .icon_cloud_alt, .icon_cloud-upload_alt, .icon_cloud-download_alt, .icon_image, .icon_images, .icon_lightbulb_alt, .icon_gift_alt, .icon_house_alt, .icon_genius, .icon_mobile, .icon_tablet, .icon_laptop, .icon_desktop, .icon_camera_alt, .icon_mail_alt, .icon_cone_alt, .icon_ribbon_alt, .icon_bag_alt, .icon_creditcard, .icon_cart_alt, .icon_paperclip, .icon_tag_alt, .icon_tags_alt, .icon_trash_alt, .icon_cursor_alt, .icon_mic_alt, .icon_compass_alt, .icon_pin_alt, .icon_pushpin_alt, .icon_map_alt, .icon_drawer_alt, .icon_toolbox_alt, .icon_book_alt, .icon_calendar, .icon_film, .icon_table, .icon_contacts_alt, .icon_headphones, .icon_lifesaver, .icon_piechart, .icon_refresh, .icon_link_alt, .icon_link, .icon_loading, .icon_blocked, .icon_archive_alt, .icon_heart_alt, .icon_star_alt, .icon_star-half_alt, .icon_star, .icon_star-half, .icon_tools, .icon_tool, .icon_cog, .icon_cogs, .arrow_up_alt, .arrow_down_alt, .arrow_left_alt, .arrow_right_alt, .arrow_left-up_alt, .arrow_right-up_alt, .arrow_right-down_alt, .arrow_left-down_alt, .arrow_condense_alt, .arrow_expand_alt3, .arrow_carrot_up_alt, .arrow_carrot-down_alt, .arrow_carrot-left_alt, .arrow_carrot-right_alt, .arrow_carrot-2up_alt, .arrow_carrot-2dwnn_alt, .arrow_carrot-2left_alt, .arrow_carrot-2right_alt, .arrow_triangle-up_alt, .arrow_triangle-down_alt, .arrow_triangle-left_alt, .arrow_triangle-right_alt, .icon_minus_alt, .icon_plus_alt, .icon_close_alt, .icon_check_alt, .icon_zoom-out, .icon_zoom-in, .icon_stop_alt, .icon_menu-square_alt, .icon_menu-circle_alt, .icon_document, .icon_documents, .icon_pencil_alt, .icon_folder, .icon_folder-open, .icon_folder-add, .icon_folder_upload, .icon_folder_download, .icon_info, .icon_error-circle, .icon_error-oct, .icon_error-triangle, .icon_question_alt, .icon_comment, .icon_chat, .icon_vol-mute, .icon_volume-low, .icon_volume-high, .icon_quotations_alt, .icon_clock, .icon_lock, .icon_lock-open, .icon_key, .icon_cloud, .icon_cloud-upload, .icon_cloud-download, .icon_lightbulb, .icon_gift, .icon_house, .icon_camera, .icon_mail, .icon_cone, .icon_ribbon, .icon_bag, .icon_cart, .icon_tag, .icon_tags, .icon_trash, .icon_cursor, .icon_mic, .icon_compass, .icon_pin, .icon_pushpin, .icon_map, .icon_drawer, .icon_toolbox, .icon_book, .icon_contacts, .icon_archive, .icon_heart, .icon_profile, .icon_group, .icon_grid-2x2, .icon_grid-3x3, .icon_music, .icon_pause_alt, .icon_phone, .icon_upload, .icon_download, .social_facebook, .social_twitter, .social_pinterest, .social_googleplus, .social_tumblr, .social_tumbleupon, .social_wordpress, .social_instagram, .social_dribbble, .social_vimeo, .social_linkedin, .social_rss, .social_deviantart, .social_share, .social_myspace, .social_skype, .social_youtube, .social_picassa, .social_googledrive, .social_flickr, .social_blogger, .social_spotify, .social_delicious, .social_facebook_circle, .social_twitter_circle, .social_pinterest_circle, .social_googleplus_circle, .social_tumblr_circle, .social_stumbleupon_circle, .social_wordpress_circle, .social_instagram_circle, .social_dribbble_circle, .social_vimeo_circle, .social_linkedin_circle, .social_rss_circle, .social_deviantart_circle, .social_share_circle, .social_myspace_circle, .social_skype_circle, .social_youtube_circle, .social_picassa_circle, .social_googledrive_alt2, .social_flickr_circle, .social_blogger_circle, .social_spotify_circle, .social_delicious_circle, .social_facebook_square, .social_twitter_square, .social_pinterest_square, .social_googleplus_square, .social_tumblr_square, .social_stumbleupon_square, .social_wordpress_square, .social_instagram_square, .social_dribbble_square, .social_vimeo_square, .social_linkedin_square, .social_rss_square, .social_deviantart_square, .social_share_square, .social_myspace_square, .social_skype_square, .social_youtube_square, .social_picassa_square, .social_googledrive_square, .social_flickr_square, .social_blogger_square, .social_spotify_square, .social_delicious_square, .icon_printer, .icon_calulator, .icon_building, .icon_floppy, .icon_drive, .icon_search-2, .icon_id, .icon_id-2, .icon_puzzle, .icon_like, .icon_dislike, .icon_mug, .icon_currency, .icon_wallet, .icon_pens, .icon_easel, .icon_flowchart, .icon_datareport, .icon_briefcase, .icon_shield, .icon_percent, .icon_globe, .icon_globe-2, .icon_target, .icon_hourglass, .icon_balance, .icon_rook, .icon_printer-alt, .icon_calculator_alt, .icon_building_alt, .icon_floppy_alt, .icon_drive_alt, .icon_search_alt, .icon_id_alt, .icon_id-2_alt, .icon_puzzle_alt, .icon_like_alt, .icon_dislike_alt, .icon_mug_alt, .icon_currency_alt, .icon_wallet_alt, .icon_pens_alt, .icon_easel_alt, .icon_flowchart_alt, .icon_datareport_alt, .icon_briefcase_alt, .icon_shield_alt, .icon_percent_alt, .icon_globe_alt, .icon_clipboard { + font-family: 'ElegantIcons'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; +} +.arrow_up:before { + content: "\21"; +} +.arrow_down:before { + content: "\22"; +} +.arrow_left:before { + content: "\23"; +} +.arrow_right:before { + content: "\24"; +} +.arrow_left-up:before { + content: "\25"; +} +.arrow_right-up:before { + content: "\26"; +} +.arrow_right-down:before { + content: "\27"; +} +.arrow_left-down:before { + content: "\28"; +} +.arrow-up-down:before { + content: "\29"; +} +.arrow_up-down_alt:before { + content: "\2a"; +} +.arrow_left-right_alt:before { + content: "\2b"; +} +.arrow_left-right:before { + content: "\2c"; +} +.arrow_expand_alt2:before { + content: "\2d"; +} +.arrow_expand_alt:before { + content: "\2e"; +} +.arrow_condense:before { + content: "\2f"; +} +.arrow_expand:before { + content: "\30"; +} +.arrow_move:before { + content: "\31"; +} +.arrow_carrot-up:before { + content: "\32"; +} +.arrow_carrot-down:before { + content: "\33"; +} +.arrow_carrot-left:before { + content: "\34"; +} +.arrow_carrot-right:before { + content: "\35"; +} +.arrow_carrot-2up:before { + content: "\36"; +} +.arrow_carrot-2down:before { + content: "\37"; +} +.arrow_carrot-2left:before { + content: "\38"; +} +.arrow_carrot-2right:before { + content: "\39"; +} +.arrow_carrot-up_alt2:before { + content: "\3a"; +} +.arrow_carrot-down_alt2:before { + content: "\3b"; +} +.arrow_carrot-left_alt2:before { + content: "\3c"; +} +.arrow_carrot-right_alt2:before { + content: "\3d"; +} +.arrow_carrot-2up_alt2:before { + content: "\3e"; +} +.arrow_carrot-2down_alt2:before { + content: "\3f"; +} +.arrow_carrot-2left_alt2:before { + content: "\40"; +} +.arrow_carrot-2right_alt2:before { + content: "\41"; +} +.arrow_triangle-up:before { + content: "\42"; +} +.arrow_triangle-down:before { + content: "\43"; +} +.arrow_triangle-left:before { + content: "\44"; +} +.arrow_triangle-right:before { + content: "\45"; +} +.arrow_triangle-up_alt2:before { + content: "\46"; +} +.arrow_triangle-down_alt2:before { + content: "\47"; +} +.arrow_triangle-left_alt2:before { + content: "\48"; +} +.arrow_triangle-right_alt2:before { + content: "\49"; +} +.arrow_back:before { + content: "\4a"; +} +.icon_minus-06:before { + content: "\4b"; +} +.icon_plus:before { + content: "\4c"; +} +.icon_close:before { + content: "\4d"; +} +.icon_check:before { + content: "\4e"; +} +.icon_minus_alt2:before { + content: "\4f"; +} +.icon_plus_alt2:before { + content: "\50"; +} +.icon_close_alt2:before { + content: "\51"; +} +.icon_check_alt2:before { + content: "\52"; +} +.icon_zoom-out_alt:before { + content: "\53"; +} +.icon_zoom-in_alt:before { + content: "\54"; +} +.icon_search:before { + content: "\55"; +} +.icon_box-empty:before { + content: "\56"; +} +.icon_box-selected:before { + content: "\57"; +} +.icon_minus-box:before { + content: "\58"; +} +.icon_plus-box:before { + content: "\59"; +} +.icon_box-checked:before { + content: "\5a"; +} +.icon_circle-empty:before { + content: "\5b"; +} +.icon_circle-slelected:before { + content: "\5c"; +} +.icon_stop_alt2:before { + content: "\5d"; +} +.icon_stop:before { + content: "\5e"; +} +.icon_pause_alt2:before { + content: "\5f"; +} +.icon_pause:before { + content: "\60"; +} +.icon_menu:before { + content: "\61"; +} +.icon_menu-square_alt2:before { + content: "\62"; +} +.icon_menu-circle_alt2:before { + content: "\63"; +} +.icon_ul:before { + content: "\64"; +} +.icon_ol:before { + content: "\65"; +} +.icon_adjust-horiz:before { + content: "\66"; +} +.icon_adjust-vert:before { + content: "\67"; +} +.icon_document_alt:before { + content: "\68"; +} +.icon_documents_alt:before { + content: "\69"; +} +.icon_pencil:before { + content: "\6a"; +} +.icon_pencil-edit_alt:before { + content: "\6b"; +} +.icon_pencil-edit:before { + content: "\6c"; +} +.icon_folder-alt:before { + content: "\6d"; +} +.icon_folder-open_alt:before { + content: "\6e"; +} +.icon_folder-add_alt:before { + content: "\6f"; +} +.icon_info_alt:before { + content: "\70"; +} +.icon_error-oct_alt:before { + content: "\71"; +} +.icon_error-circle_alt:before { + content: "\72"; +} +.icon_error-triangle_alt:before { + content: "\73"; +} +.icon_question_alt2:before { + content: "\74"; +} +.icon_question:before { + content: "\75"; +} +.icon_comment_alt:before { + content: "\76"; +} +.icon_chat_alt:before { + content: "\77"; +} +.icon_vol-mute_alt:before { + content: "\78"; +} +.icon_volume-low_alt:before { + content: "\79"; +} +.icon_volume-high_alt:before { + content: "\7a"; +} +.icon_quotations:before { + content: "\7b"; +} +.icon_quotations_alt2:before { + content: "\7c"; +} +.icon_clock_alt:before { + content: "\7d"; +} +.icon_lock_alt:before { + content: "\7e"; +} +.icon_lock-open_alt:before { + content: "\e000"; +} +.icon_key_alt:before { + content: "\e001"; +} +.icon_cloud_alt:before { + content: "\e002"; +} +.icon_cloud-upload_alt:before { + content: "\e003"; +} +.icon_cloud-download_alt:before { + content: "\e004"; +} +.icon_image:before { + content: "\e005"; +} +.icon_images:before { + content: "\e006"; +} +.icon_lightbulb_alt:before { + content: "\e007"; +} +.icon_gift_alt:before { + content: "\e008"; +} +.icon_house_alt:before { + content: "\e009"; +} +.icon_genius:before { + content: "\e00a"; +} +.icon_mobile:before { + content: "\e00b"; +} +.icon_tablet:before { + content: "\e00c"; +} +.icon_laptop:before { + content: "\e00d"; +} +.icon_desktop:before { + content: "\e00e"; +} +.icon_camera_alt:before { + content: "\e00f"; +} +.icon_mail_alt:before { + content: "\e010"; +} +.icon_cone_alt:before { + content: "\e011"; +} +.icon_ribbon_alt:before { + content: "\e012"; +} +.icon_bag_alt:before { + content: "\e013"; +} +.icon_creditcard:before { + content: "\e014"; +} +.icon_cart_alt:before { + content: "\e015"; +} +.icon_paperclip:before { + content: "\e016"; +} +.icon_tag_alt:before { + content: "\e017"; +} +.icon_tags_alt:before { + content: "\e018"; +} +.icon_trash_alt:before { + content: "\e019"; +} +.icon_cursor_alt:before { + content: "\e01a"; +} +.icon_mic_alt:before { + content: "\e01b"; +} +.icon_compass_alt:before { + content: "\e01c"; +} +.icon_pin_alt:before { + content: "\e01d"; +} +.icon_pushpin_alt:before { + content: "\e01e"; +} +.icon_map_alt:before { + content: "\e01f"; +} +.icon_drawer_alt:before { + content: "\e020"; +} +.icon_toolbox_alt:before { + content: "\e021"; +} +.icon_book_alt:before { + content: "\e022"; +} +.icon_calendar:before { + content: "\e023"; +} +.icon_film:before { + content: "\e024"; +} +.icon_table:before { + content: "\e025"; +} +.icon_contacts_alt:before { + content: "\e026"; +} +.icon_headphones:before { + content: "\e027"; +} +.icon_lifesaver:before { + content: "\e028"; +} +.icon_piechart:before { + content: "\e029"; +} +.icon_refresh:before { + content: "\e02a"; +} +.icon_link_alt:before { + content: "\e02b"; +} +.icon_link:before { + content: "\e02c"; +} +.icon_loading:before { + content: "\e02d"; +} +.icon_blocked:before { + content: "\e02e"; +} +.icon_archive_alt:before { + content: "\e02f"; +} +.icon_heart_alt:before { + content: "\e030"; +} +.icon_star_alt:before { + content: "\e031"; +} +.icon_star-half_alt:before { + content: "\e032"; +} +.icon_star:before { + content: "\e033"; +} +.icon_star-half:before { + content: "\e034"; +} +.icon_tools:before { + content: "\e035"; +} +.icon_tool:before { + content: "\e036"; +} +.icon_cog:before { + content: "\e037"; +} +.icon_cogs:before { + content: "\e038"; +} +.arrow_up_alt:before { + content: "\e039"; +} +.arrow_down_alt:before { + content: "\e03a"; +} +.arrow_left_alt:before { + content: "\e03b"; +} +.arrow_right_alt:before { + content: "\e03c"; +} +.arrow_left-up_alt:before { + content: "\e03d"; +} +.arrow_right-up_alt:before { + content: "\e03e"; +} +.arrow_right-down_alt:before { + content: "\e03f"; +} +.arrow_left-down_alt:before { + content: "\e040"; +} +.arrow_condense_alt:before { + content: "\e041"; +} +.arrow_expand_alt3:before { + content: "\e042"; +} +.arrow_carrot_up_alt:before { + content: "\e043"; +} +.arrow_carrot-down_alt:before { + content: "\e044"; +} +.arrow_carrot-left_alt:before { + content: "\e045"; +} +.arrow_carrot-right_alt:before { + content: "\e046"; +} +.arrow_carrot-2up_alt:before { + content: "\e047"; +} +.arrow_carrot-2dwnn_alt:before { + content: "\e048"; +} +.arrow_carrot-2left_alt:before { + content: "\e049"; +} +.arrow_carrot-2right_alt:before { + content: "\e04a"; +} +.arrow_triangle-up_alt:before { + content: "\e04b"; +} +.arrow_triangle-down_alt:before { + content: "\e04c"; +} +.arrow_triangle-left_alt:before { + content: "\e04d"; +} +.arrow_triangle-right_alt:before { + content: "\e04e"; +} +.icon_minus_alt:before { + content: "\e04f"; +} +.icon_plus_alt:before { + content: "\e050"; +} +.icon_close_alt:before { + content: "\e051"; +} +.icon_check_alt:before { + content: "\e052"; +} +.icon_zoom-out:before { + content: "\e053"; +} +.icon_zoom-in:before { + content: "\e054"; +} +.icon_stop_alt:before { + content: "\e055"; +} +.icon_menu-square_alt:before { + content: "\e056"; +} +.icon_menu-circle_alt:before { + content: "\e057"; +} +.icon_document:before { + content: "\e058"; +} +.icon_documents:before { + content: "\e059"; +} +.icon_pencil_alt:before { + content: "\e05a"; +} +.icon_folder:before { + content: "\e05b"; +} +.icon_folder-open:before { + content: "\e05c"; +} +.icon_folder-add:before { + content: "\e05d"; +} +.icon_folder_upload:before { + content: "\e05e"; +} +.icon_folder_download:before { + content: "\e05f"; +} +.icon_info:before { + content: "\e060"; +} +.icon_error-circle:before { + content: "\e061"; +} +.icon_error-oct:before { + content: "\e062"; +} +.icon_error-triangle:before { + content: "\e063"; +} +.icon_question_alt:before { + content: "\e064"; +} +.icon_comment:before { + content: "\e065"; +} +.icon_chat:before { + content: "\e066"; +} +.icon_vol-mute:before { + content: "\e067"; +} +.icon_volume-low:before { + content: "\e068"; +} +.icon_volume-high:before { + content: "\e069"; +} +.icon_quotations_alt:before { + content: "\e06a"; +} +.icon_clock:before { + content: "\e06b"; +} +.icon_lock:before { + content: "\e06c"; +} +.icon_lock-open:before { + content: "\e06d"; +} +.icon_key:before { + content: "\e06e"; +} +.icon_cloud:before { + content: "\e06f"; +} +.icon_cloud-upload:before { + content: "\e070"; +} +.icon_cloud-download:before { + content: "\e071"; +} +.icon_lightbulb:before { + content: "\e072"; +} +.icon_gift:before { + content: "\e073"; +} +.icon_house:before { + content: "\e074"; +} +.icon_camera:before { + content: "\e075"; +} +.icon_mail:before { + content: "\e076"; +} +.icon_cone:before { + content: "\e077"; +} +.icon_ribbon:before { + content: "\e078"; +} +.icon_bag:before { + content: "\e079"; +} +.icon_cart:before { + content: "\e07a"; +} +.icon_tag:before { + content: "\e07b"; +} +.icon_tags:before { + content: "\e07c"; +} +.icon_trash:before { + content: "\e07d"; +} +.icon_cursor:before { + content: "\e07e"; +} +.icon_mic:before { + content: "\e07f"; +} +.icon_compass:before { + content: "\e080"; +} +.icon_pin:before { + content: "\e081"; +} +.icon_pushpin:before { + content: "\e082"; +} +.icon_map:before { + content: "\e083"; +} +.icon_drawer:before { + content: "\e084"; +} +.icon_toolbox:before { + content: "\e085"; +} +.icon_book:before { + content: "\e086"; +} +.icon_contacts:before { + content: "\e087"; +} +.icon_archive:before { + content: "\e088"; +} +.icon_heart:before { + content: "\e089"; +} +.icon_profile:before { + content: "\e08a"; +} +.icon_group:before { + content: "\e08b"; +} +.icon_grid-2x2:before { + content: "\e08c"; +} +.icon_grid-3x3:before { + content: "\e08d"; +} +.icon_music:before { + content: "\e08e"; +} +.icon_pause_alt:before { + content: "\e08f"; +} +.icon_phone:before { + content: "\e090"; +} +.icon_upload:before { + content: "\e091"; +} +.icon_download:before { + content: "\e092"; +} +.social_facebook:before { + content: "\e093"; +} +.social_twitter:before { + content: "\e094"; +} +.social_pinterest:before { + content: "\e095"; +} +.social_googleplus:before { + content: "\e096"; +} +.social_tumblr:before { + content: "\e097"; +} +.social_tumbleupon:before { + content: "\e098"; +} +.social_wordpress:before { + content: "\e099"; +} +.social_instagram:before { + content: "\e09a"; +} +.social_dribbble:before { + content: "\e09b"; +} +.social_vimeo:before { + content: "\e09c"; +} +.social_linkedin:before { + content: "\e09d"; +} +.social_rss:before { + content: "\e09e"; +} +.social_deviantart:before { + content: "\e09f"; +} +.social_share:before { + content: "\e0a0"; +} +.social_myspace:before { + content: "\e0a1"; +} +.social_skype:before { + content: "\e0a2"; +} +.social_youtube:before { + content: "\e0a3"; +} +.social_picassa:before { + content: "\e0a4"; +} +.social_googledrive:before { + content: "\e0a5"; +} +.social_flickr:before { + content: "\e0a6"; +} +.social_blogger:before { + content: "\e0a7"; +} +.social_spotify:before { + content: "\e0a8"; +} +.social_delicious:before { + content: "\e0a9"; +} +.social_facebook_circle:before { + content: "\e0aa"; +} +.social_twitter_circle:before { + content: "\e0ab"; +} +.social_pinterest_circle:before { + content: "\e0ac"; +} +.social_googleplus_circle:before { + content: "\e0ad"; +} +.social_tumblr_circle:before { + content: "\e0ae"; +} +.social_stumbleupon_circle:before { + content: "\e0af"; +} +.social_wordpress_circle:before { + content: "\e0b0"; +} +.social_instagram_circle:before { + content: "\e0b1"; +} +.social_dribbble_circle:before { + content: "\e0b2"; +} +.social_vimeo_circle:before { + content: "\e0b3"; +} +.social_linkedin_circle:before { + content: "\e0b4"; +} +.social_rss_circle:before { + content: "\e0b5"; +} +.social_deviantart_circle:before { + content: "\e0b6"; +} +.social_share_circle:before { + content: "\e0b7"; +} +.social_myspace_circle:before { + content: "\e0b8"; +} +.social_skype_circle:before { + content: "\e0b9"; +} +.social_youtube_circle:before { + content: "\e0ba"; +} +.social_picassa_circle:before { + content: "\e0bb"; +} +.social_googledrive_alt2:before { + content: "\e0bc"; +} +.social_flickr_circle:before { + content: "\e0bd"; +} +.social_blogger_circle:before { + content: "\e0be"; +} +.social_spotify_circle:before { + content: "\e0bf"; +} +.social_delicious_circle:before { + content: "\e0c0"; +} +.social_facebook_square:before { + content: "\e0c1"; +} +.social_twitter_square:before { + content: "\e0c2"; +} +.social_pinterest_square:before { + content: "\e0c3"; +} +.social_googleplus_square:before { + content: "\e0c4"; +} +.social_tumblr_square:before { + content: "\e0c5"; +} +.social_stumbleupon_square:before { + content: "\e0c6"; +} +.social_wordpress_square:before { + content: "\e0c7"; +} +.social_instagram_square:before { + content: "\e0c8"; +} +.social_dribbble_square:before { + content: "\e0c9"; +} +.social_vimeo_square:before { + content: "\e0ca"; +} +.social_linkedin_square:before { + content: "\e0cb"; +} +.social_rss_square:before { + content: "\e0cc"; +} +.social_deviantart_square:before { + content: "\e0cd"; +} +.social_share_square:before { + content: "\e0ce"; +} +.social_myspace_square:before { + content: "\e0cf"; +} +.social_skype_square:before { + content: "\e0d0"; +} +.social_youtube_square:before { + content: "\e0d1"; +} +.social_picassa_square:before { + content: "\e0d2"; +} +.social_googledrive_square:before { + content: "\e0d3"; +} +.social_flickr_square:before { + content: "\e0d4"; +} +.social_blogger_square:before { + content: "\e0d5"; +} +.social_spotify_square:before { + content: "\e0d6"; +} +.social_delicious_square:before { + content: "\e0d7"; +} +.icon_printer:before { + content: "\e103"; +} +.icon_calulator:before { + content: "\e0ee"; +} +.icon_building:before { + content: "\e0ef"; +} +.icon_floppy:before { + content: "\e0e8"; +} +.icon_drive:before { + content: "\e0ea"; +} +.icon_search-2:before { + content: "\e101"; +} +.icon_id:before { + content: "\e107"; +} +.icon_id-2:before { + content: "\e108"; +} +.icon_puzzle:before { + content: "\e102"; +} +.icon_like:before { + content: "\e106"; +} +.icon_dislike:before { + content: "\e0eb"; +} +.icon_mug:before { + content: "\e105"; +} +.icon_currency:before { + content: "\e0ed"; +} +.icon_wallet:before { + content: "\e100"; +} +.icon_pens:before { + content: "\e104"; +} +.icon_easel:before { + content: "\e0e9"; +} +.icon_flowchart:before { + content: "\e109"; +} +.icon_datareport:before { + content: "\e0ec"; +} +.icon_briefcase:before { + content: "\e0fe"; +} +.icon_shield:before { + content: "\e0f6"; +} +.icon_percent:before { + content: "\e0fb"; +} +.icon_globe:before { + content: "\e0e2"; +} +.icon_globe-2:before { + content: "\e0e3"; +} +.icon_target:before { + content: "\e0f5"; +} +.icon_hourglass:before { + content: "\e0e1"; +} +.icon_balance:before { + content: "\e0ff"; +} +.icon_rook:before { + content: "\e0f8"; +} +.icon_printer-alt:before { + content: "\e0fa"; +} +.icon_calculator_alt:before { + content: "\e0e7"; +} +.icon_building_alt:before { + content: "\e0fd"; +} +.icon_floppy_alt:before { + content: "\e0e4"; +} +.icon_drive_alt:before { + content: "\e0e5"; +} +.icon_search_alt:before { + content: "\e0f7"; +} +.icon_id_alt:before { + content: "\e0e0"; +} +.icon_id-2_alt:before { + content: "\e0fc"; +} +.icon_puzzle_alt:before { + content: "\e0f9"; +} +.icon_like_alt:before { + content: "\e0dd"; +} +.icon_dislike_alt:before { + content: "\e0f1"; +} +.icon_mug_alt:before { + content: "\e0dc"; +} +.icon_currency_alt:before { + content: "\e0f3"; +} +.icon_wallet_alt:before { + content: "\e0d8"; +} +.icon_pens_alt:before { + content: "\e0db"; +} +.icon_easel_alt:before { + content: "\e0f0"; +} +.icon_flowchart_alt:before { + content: "\e0df"; +} +.icon_datareport_alt:before { + content: "\e0f2"; +} +.icon_briefcase_alt:before { + content: "\e0f4"; +} +.icon_shield_alt:before { + content: "\e0d9"; +} +.icon_percent_alt:before { + content: "\e0da"; +} +.icon_globe_alt:before { + content: "\e0de"; +} +.icon_clipboard:before { + content: "\e0e6"; +} + + +.glyph { + float: left; + text-align: center; + padding: .75em; + margin: .4em 1.5em .75em 0; + width: 6em; + text-shadow: none; +} +.glyph_big { + font-size: 128px; + color: #59c5dc; + float: left; + margin-right: 20px; +} + +.glyph div { padding-bottom: 10px;} + +.glyph input { + font-family: consolas, monospace; + font-size: 12px; + width: 100%; + text-align: center; + border: 0; + box-shadow: 0 0 0 1px #ccc; + padding: .2em; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; +} +.centered { + margin-left: auto; + margin-right: auto; +} +.glyph .fs1 { + font-size: 2em; +} + + diff --git a/assets/frontend/icons/eleganticons/style.min.css b/assets/frontend/icons/eleganticons/style.min.css new file mode 100644 index 0000000..bfb50aa --- /dev/null +++ b/assets/frontend/icons/eleganticons/style.min.css @@ -0,0 +1,2 @@ + +@font-face{font-family:'ElegantIcons';src:url('fonts/ElegantIcons.eot');src:url('fonts/ElegantIcons.eot?#iefix') format('embedded-opentype'),url('fonts/ElegantIcons.woff') format('woff'),url('fonts/ElegantIcons.ttf') format('truetype'),url('fonts/ElegantIcons.svg#ElegantIcons') format('svg');font-weight:normal;font-style:normal}[data-icon]:before{font-family:'ElegantIcons';content:attr(data-icon);speak:none;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.arrow_up,.arrow_down,.arrow_left,.arrow_right,.arrow_left-up,.arrow_right-up,.arrow_right-down,.arrow_left-down,.arrow-up-down,.arrow_up-down_alt,.arrow_left-right_alt,.arrow_left-right,.arrow_expand_alt2,.arrow_expand_alt,.arrow_condense,.arrow_expand,.arrow_move,.arrow_carrot-up,.arrow_carrot-down,.arrow_carrot-left,.arrow_carrot-right,.arrow_carrot-2up,.arrow_carrot-2down,.arrow_carrot-2left,.arrow_carrot-2right,.arrow_carrot-up_alt2,.arrow_carrot-down_alt2,.arrow_carrot-left_alt2,.arrow_carrot-right_alt2,.arrow_carrot-2up_alt2,.arrow_carrot-2down_alt2,.arrow_carrot-2left_alt2,.arrow_carrot-2right_alt2,.arrow_triangle-up,.arrow_triangle-down,.arrow_triangle-left,.arrow_triangle-right,.arrow_triangle-up_alt2,.arrow_triangle-down_alt2,.arrow_triangle-left_alt2,.arrow_triangle-right_alt2,.arrow_back,.icon_minus-06,.icon_plus,.icon_close,.icon_check,.icon_minus_alt2,.icon_plus_alt2,.icon_close_alt2,.icon_check_alt2,.icon_zoom-out_alt,.icon_zoom-in_alt,.icon_search,.icon_box-empty,.icon_box-selected,.icon_minus-box,.icon_plus-box,.icon_box-checked,.icon_circle-empty,.icon_circle-slelected,.icon_stop_alt2,.icon_stop,.icon_pause_alt2,.icon_pause,.icon_menu,.icon_menu-square_alt2,.icon_menu-circle_alt2,.icon_ul,.icon_ol,.icon_adjust-horiz,.icon_adjust-vert,.icon_document_alt,.icon_documents_alt,.icon_pencil,.icon_pencil-edit_alt,.icon_pencil-edit,.icon_folder-alt,.icon_folder-open_alt,.icon_folder-add_alt,.icon_info_alt,.icon_error-oct_alt,.icon_error-circle_alt,.icon_error-triangle_alt,.icon_question_alt2,.icon_question,.icon_comment_alt,.icon_chat_alt,.icon_vol-mute_alt,.icon_volume-low_alt,.icon_volume-high_alt,.icon_quotations,.icon_quotations_alt2,.icon_clock_alt,.icon_lock_alt,.icon_lock-open_alt,.icon_key_alt,.icon_cloud_alt,.icon_cloud-upload_alt,.icon_cloud-download_alt,.icon_image,.icon_images,.icon_lightbulb_alt,.icon_gift_alt,.icon_house_alt,.icon_genius,.icon_mobile,.icon_tablet,.icon_laptop,.icon_desktop,.icon_camera_alt,.icon_mail_alt,.icon_cone_alt,.icon_ribbon_alt,.icon_bag_alt,.icon_creditcard,.icon_cart_alt,.icon_paperclip,.icon_tag_alt,.icon_tags_alt,.icon_trash_alt,.icon_cursor_alt,.icon_mic_alt,.icon_compass_alt,.icon_pin_alt,.icon_pushpin_alt,.icon_map_alt,.icon_drawer_alt,.icon_toolbox_alt,.icon_book_alt,.icon_calendar,.icon_film,.icon_table,.icon_contacts_alt,.icon_headphones,.icon_lifesaver,.icon_piechart,.icon_refresh,.icon_link_alt,.icon_link,.icon_loading,.icon_blocked,.icon_archive_alt,.icon_heart_alt,.icon_star_alt,.icon_star-half_alt,.icon_star,.icon_star-half,.icon_tools,.icon_tool,.icon_cog,.icon_cogs,.arrow_up_alt,.arrow_down_alt,.arrow_left_alt,.arrow_right_alt,.arrow_left-up_alt,.arrow_right-up_alt,.arrow_right-down_alt,.arrow_left-down_alt,.arrow_condense_alt,.arrow_expand_alt3,.arrow_carrot_up_alt,.arrow_carrot-down_alt,.arrow_carrot-left_alt,.arrow_carrot-right_alt,.arrow_carrot-2up_alt,.arrow_carrot-2dwnn_alt,.arrow_carrot-2left_alt,.arrow_carrot-2right_alt,.arrow_triangle-up_alt,.arrow_triangle-down_alt,.arrow_triangle-left_alt,.arrow_triangle-right_alt,.icon_minus_alt,.icon_plus_alt,.icon_close_alt,.icon_check_alt,.icon_zoom-out,.icon_zoom-in,.icon_stop_alt,.icon_menu-square_alt,.icon_menu-circle_alt,.icon_document,.icon_documents,.icon_pencil_alt,.icon_folder,.icon_folder-open,.icon_folder-add,.icon_folder_upload,.icon_folder_download,.icon_info,.icon_error-circle,.icon_error-oct,.icon_error-triangle,.icon_question_alt,.icon_comment,.icon_chat,.icon_vol-mute,.icon_volume-low,.icon_volume-high,.icon_quotations_alt,.icon_clock,.icon_lock,.icon_lock-open,.icon_key,.icon_cloud,.icon_cloud-upload,.icon_cloud-download,.icon_lightbulb,.icon_gift,.icon_house,.icon_camera,.icon_mail,.icon_cone,.icon_ribbon,.icon_bag,.icon_cart,.icon_tag,.icon_tags,.icon_trash,.icon_cursor,.icon_mic,.icon_compass,.icon_pin,.icon_pushpin,.icon_map,.icon_drawer,.icon_toolbox,.icon_book,.icon_contacts,.icon_archive,.icon_heart,.icon_profile,.icon_group,.icon_grid-2x2,.icon_grid-3x3,.icon_music,.icon_pause_alt,.icon_phone,.icon_upload,.icon_download,.social_facebook,.social_twitter,.social_pinterest,.social_googleplus,.social_tumblr,.social_tumbleupon,.social_wordpress,.social_instagram,.social_dribbble,.social_vimeo,.social_linkedin,.social_rss,.social_deviantart,.social_share,.social_myspace,.social_skype,.social_youtube,.social_picassa,.social_googledrive,.social_flickr,.social_blogger,.social_spotify,.social_delicious,.social_facebook_circle,.social_twitter_circle,.social_pinterest_circle,.social_googleplus_circle,.social_tumblr_circle,.social_stumbleupon_circle,.social_wordpress_circle,.social_instagram_circle,.social_dribbble_circle,.social_vimeo_circle,.social_linkedin_circle,.social_rss_circle,.social_deviantart_circle,.social_share_circle,.social_myspace_circle,.social_skype_circle,.social_youtube_circle,.social_picassa_circle,.social_googledrive_alt2,.social_flickr_circle,.social_blogger_circle,.social_spotify_circle,.social_delicious_circle,.social_facebook_square,.social_twitter_square,.social_pinterest_square,.social_googleplus_square,.social_tumblr_square,.social_stumbleupon_square,.social_wordpress_square,.social_instagram_square,.social_dribbble_square,.social_vimeo_square,.social_linkedin_square,.social_rss_square,.social_deviantart_square,.social_share_square,.social_myspace_square,.social_skype_square,.social_youtube_square,.social_picassa_square,.social_googledrive_square,.social_flickr_square,.social_blogger_square,.social_spotify_square,.social_delicious_square,.icon_printer,.icon_calulator,.icon_building,.icon_floppy,.icon_drive,.icon_search-2,.icon_id,.icon_id-2,.icon_puzzle,.icon_like,.icon_dislike,.icon_mug,.icon_currency,.icon_wallet,.icon_pens,.icon_easel,.icon_flowchart,.icon_datareport,.icon_briefcase,.icon_shield,.icon_percent,.icon_globe,.icon_globe-2,.icon_target,.icon_hourglass,.icon_balance,.icon_rook,.icon_printer-alt,.icon_calculator_alt,.icon_building_alt,.icon_floppy_alt,.icon_drive_alt,.icon_search_alt,.icon_id_alt,.icon_id-2_alt,.icon_puzzle_alt,.icon_like_alt,.icon_dislike_alt,.icon_mug_alt,.icon_currency_alt,.icon_wallet_alt,.icon_pens_alt,.icon_easel_alt,.icon_flowchart_alt,.icon_datareport_alt,.icon_briefcase_alt,.icon_shield_alt,.icon_percent_alt,.icon_globe_alt,.icon_clipboard{font-family:'ElegantIcons';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased}.arrow_up:before{content:"\21"}.arrow_down:before{content:"\22"}.arrow_left:before{content:"\23"}.arrow_right:before{content:"\24"}.arrow_left-up:before{content:"\25"}.arrow_right-up:before{content:"\26"}.arrow_right-down:before{content:"\27"}.arrow_left-down:before{content:"\28"}.arrow-up-down:before{content:"\29"}.arrow_up-down_alt:before{content:"\2a"}.arrow_left-right_alt:before{content:"\2b"}.arrow_left-right:before{content:"\2c"}.arrow_expand_alt2:before{content:"\2d"}.arrow_expand_alt:before{content:"\2e"}.arrow_condense:before{content:"\2f"}.arrow_expand:before{content:"\30"}.arrow_move:before{content:"\31"}.arrow_carrot-up:before{content:"\32"}.arrow_carrot-down:before{content:"\33"}.arrow_carrot-left:before{content:"\34"}.arrow_carrot-right:before{content:"\35"}.arrow_carrot-2up:before{content:"\36"}.arrow_carrot-2down:before{content:"\37"}.arrow_carrot-2left:before{content:"\38"}.arrow_carrot-2right:before{content:"\39"}.arrow_carrot-up_alt2:before{content:"\3a"}.arrow_carrot-down_alt2:before{content:"\3b"}.arrow_carrot-left_alt2:before{content:"\3c"}.arrow_carrot-right_alt2:before{content:"\3d"}.arrow_carrot-2up_alt2:before{content:"\3e"}.arrow_carrot-2down_alt2:before{content:"\3f"}.arrow_carrot-2left_alt2:before{content:"\40"}.arrow_carrot-2right_alt2:before{content:"\41"}.arrow_triangle-up:before{content:"\42"}.arrow_triangle-down:before{content:"\43"}.arrow_triangle-left:before{content:"\44"}.arrow_triangle-right:before{content:"\45"}.arrow_triangle-up_alt2:before{content:"\46"}.arrow_triangle-down_alt2:before{content:"\47"}.arrow_triangle-left_alt2:before{content:"\48"}.arrow_triangle-right_alt2:before{content:"\49"}.arrow_back:before{content:"\4a"}.icon_minus-06:before{content:"\4b"}.icon_plus:before{content:"\4c"}.icon_close:before{content:"\4d"}.icon_check:before{content:"\4e"}.icon_minus_alt2:before{content:"\4f"}.icon_plus_alt2:before{content:"\50"}.icon_close_alt2:before{content:"\51"}.icon_check_alt2:before{content:"\52"}.icon_zoom-out_alt:before{content:"\53"}.icon_zoom-in_alt:before{content:"\54"}.icon_search:before{content:"\55"}.icon_box-empty:before{content:"\56"}.icon_box-selected:before{content:"\57"}.icon_minus-box:before{content:"\58"}.icon_plus-box:before{content:"\59"}.icon_box-checked:before{content:"\5a"}.icon_circle-empty:before{content:"\5b"}.icon_circle-slelected:before{content:"\5c"}.icon_stop_alt2:before{content:"\5d"}.icon_stop:before{content:"\5e"}.icon_pause_alt2:before{content:"\5f"}.icon_pause:before{content:"\60"}.icon_menu:before{content:"\61"}.icon_menu-square_alt2:before{content:"\62"}.icon_menu-circle_alt2:before{content:"\63"}.icon_ul:before{content:"\64"}.icon_ol:before{content:"\65"}.icon_adjust-horiz:before{content:"\66"}.icon_adjust-vert:before{content:"\67"}.icon_document_alt:before{content:"\68"}.icon_documents_alt:before{content:"\69"}.icon_pencil:before{content:"\6a"}.icon_pencil-edit_alt:before{content:"\6b"}.icon_pencil-edit:before{content:"\6c"}.icon_folder-alt:before{content:"\6d"}.icon_folder-open_alt:before{content:"\6e"}.icon_folder-add_alt:before{content:"\6f"}.icon_info_alt:before{content:"\70"}.icon_error-oct_alt:before{content:"\71"}.icon_error-circle_alt:before{content:"\72"}.icon_error-triangle_alt:before{content:"\73"}.icon_question_alt2:before{content:"\74"}.icon_question:before{content:"\75"}.icon_comment_alt:before{content:"\76"}.icon_chat_alt:before{content:"\77"}.icon_vol-mute_alt:before{content:"\78"}.icon_volume-low_alt:before{content:"\79"}.icon_volume-high_alt:before{content:"\7a"}.icon_quotations:before{content:"\7b"}.icon_quotations_alt2:before{content:"\7c"}.icon_clock_alt:before{content:"\7d"}.icon_lock_alt:before{content:"\7e"}.icon_lock-open_alt:before{content:"\e000"}.icon_key_alt:before{content:"\e001"}.icon_cloud_alt:before{content:"\e002"}.icon_cloud-upload_alt:before{content:"\e003"}.icon_cloud-download_alt:before{content:"\e004"}.icon_image:before{content:"\e005"}.icon_images:before{content:"\e006"}.icon_lightbulb_alt:before{content:"\e007"}.icon_gift_alt:before{content:"\e008"}.icon_house_alt:before{content:"\e009"}.icon_genius:before{content:"\e00a"}.icon_mobile:before{content:"\e00b"}.icon_tablet:before{content:"\e00c"}.icon_laptop:before{content:"\e00d"}.icon_desktop:before{content:"\e00e"}.icon_camera_alt:before{content:"\e00f"}.icon_mail_alt:before{content:"\e010"}.icon_cone_alt:before{content:"\e011"}.icon_ribbon_alt:before{content:"\e012"}.icon_bag_alt:before{content:"\e013"}.icon_creditcard:before{content:"\e014"}.icon_cart_alt:before{content:"\e015"}.icon_paperclip:before{content:"\e016"}.icon_tag_alt:before{content:"\e017"}.icon_tags_alt:before{content:"\e018"}.icon_trash_alt:before{content:"\e019"}.icon_cursor_alt:before{content:"\e01a"}.icon_mic_alt:before{content:"\e01b"}.icon_compass_alt:before{content:"\e01c"}.icon_pin_alt:before{content:"\e01d"}.icon_pushpin_alt:before{content:"\e01e"}.icon_map_alt:before{content:"\e01f"}.icon_drawer_alt:before{content:"\e020"}.icon_toolbox_alt:before{content:"\e021"}.icon_book_alt:before{content:"\e022"}.icon_calendar:before{content:"\e023"}.icon_film:before{content:"\e024"}.icon_table:before{content:"\e025"}.icon_contacts_alt:before{content:"\e026"}.icon_headphones:before{content:"\e027"}.icon_lifesaver:before{content:"\e028"}.icon_piechart:before{content:"\e029"}.icon_refresh:before{content:"\e02a"}.icon_link_alt:before{content:"\e02b"}.icon_link:before{content:"\e02c"}.icon_loading:before{content:"\e02d"}.icon_blocked:before{content:"\e02e"}.icon_archive_alt:before{content:"\e02f"}.icon_heart_alt:before{content:"\e030"}.icon_star_alt:before{content:"\e031"}.icon_star-half_alt:before{content:"\e032"}.icon_star:before{content:"\e033"}.icon_star-half:before{content:"\e034"}.icon_tools:before{content:"\e035"}.icon_tool:before{content:"\e036"}.icon_cog:before{content:"\e037"}.icon_cogs:before{content:"\e038"}.arrow_up_alt:before{content:"\e039"}.arrow_down_alt:before{content:"\e03a"}.arrow_left_alt:before{content:"\e03b"}.arrow_right_alt:before{content:"\e03c"}.arrow_left-up_alt:before{content:"\e03d"}.arrow_right-up_alt:before{content:"\e03e"}.arrow_right-down_alt:before{content:"\e03f"}.arrow_left-down_alt:before{content:"\e040"}.arrow_condense_alt:before{content:"\e041"}.arrow_expand_alt3:before{content:"\e042"}.arrow_carrot_up_alt:before{content:"\e043"}.arrow_carrot-down_alt:before{content:"\e044"}.arrow_carrot-left_alt:before{content:"\e045"}.arrow_carrot-right_alt:before{content:"\e046"}.arrow_carrot-2up_alt:before{content:"\e047"}.arrow_carrot-2dwnn_alt:before{content:"\e048"}.arrow_carrot-2left_alt:before{content:"\e049"}.arrow_carrot-2right_alt:before{content:"\e04a"}.arrow_triangle-up_alt:before{content:"\e04b"}.arrow_triangle-down_alt:before{content:"\e04c"}.arrow_triangle-left_alt:before{content:"\e04d"}.arrow_triangle-right_alt:before{content:"\e04e"}.icon_minus_alt:before{content:"\e04f"}.icon_plus_alt:before{content:"\e050"}.icon_close_alt:before{content:"\e051"}.icon_check_alt:before{content:"\e052"}.icon_zoom-out:before{content:"\e053"}.icon_zoom-in:before{content:"\e054"}.icon_stop_alt:before{content:"\e055"}.icon_menu-square_alt:before{content:"\e056"}.icon_menu-circle_alt:before{content:"\e057"}.icon_document:before{content:"\e058"}.icon_documents:before{content:"\e059"}.icon_pencil_alt:before{content:"\e05a"}.icon_folder:before{content:"\e05b"}.icon_folder-open:before{content:"\e05c"}.icon_folder-add:before{content:"\e05d"}.icon_folder_upload:before{content:"\e05e"}.icon_folder_download:before{content:"\e05f"}.icon_info:before{content:"\e060"}.icon_error-circle:before{content:"\e061"}.icon_error-oct:before{content:"\e062"}.icon_error-triangle:before{content:"\e063"}.icon_question_alt:before{content:"\e064"}.icon_comment:before{content:"\e065"}.icon_chat:before{content:"\e066"}.icon_vol-mute:before{content:"\e067"}.icon_volume-low:before{content:"\e068"}.icon_volume-high:before{content:"\e069"}.icon_quotations_alt:before{content:"\e06a"}.icon_clock:before{content:"\e06b"}.icon_lock:before{content:"\e06c"}.icon_lock-open:before{content:"\e06d"}.icon_key:before{content:"\e06e"}.icon_cloud:before{content:"\e06f"}.icon_cloud-upload:before{content:"\e070"}.icon_cloud-download:before{content:"\e071"}.icon_lightbulb:before{content:"\e072"}.icon_gift:before{content:"\e073"}.icon_house:before{content:"\e074"}.icon_camera:before{content:"\e075"}.icon_mail:before{content:"\e076"}.icon_cone:before{content:"\e077"}.icon_ribbon:before{content:"\e078"}.icon_bag:before{content:"\e079"}.icon_cart:before{content:"\e07a"}.icon_tag:before{content:"\e07b"}.icon_tags:before{content:"\e07c"}.icon_trash:before{content:"\e07d"}.icon_cursor:before{content:"\e07e"}.icon_mic:before{content:"\e07f"}.icon_compass:before{content:"\e080"}.icon_pin:before{content:"\e081"}.icon_pushpin:before{content:"\e082"}.icon_map:before{content:"\e083"}.icon_drawer:before{content:"\e084"}.icon_toolbox:before{content:"\e085"}.icon_book:before{content:"\e086"}.icon_contacts:before{content:"\e087"}.icon_archive:before{content:"\e088"}.icon_heart:before{content:"\e089"}.icon_profile:before{content:"\e08a"}.icon_group:before{content:"\e08b"}.icon_grid-2x2:before{content:"\e08c"}.icon_grid-3x3:before{content:"\e08d"}.icon_music:before{content:"\e08e"}.icon_pause_alt:before{content:"\e08f"}.icon_phone:before{content:"\e090"}.icon_upload:before{content:"\e091"}.icon_download:before{content:"\e092"}.social_facebook:before{content:"\e093"}.social_twitter:before{content:"\e094"}.social_pinterest:before{content:"\e095"}.social_googleplus:before{content:"\e096"}.social_tumblr:before{content:"\e097"}.social_tumbleupon:before{content:"\e098"}.social_wordpress:before{content:"\e099"}.social_instagram:before{content:"\e09a"}.social_dribbble:before{content:"\e09b"}.social_vimeo:before{content:"\e09c"}.social_linkedin:before{content:"\e09d"}.social_rss:before{content:"\e09e"}.social_deviantart:before{content:"\e09f"}.social_share:before{content:"\e0a0"}.social_myspace:before{content:"\e0a1"}.social_skype:before{content:"\e0a2"}.social_youtube:before{content:"\e0a3"}.social_picassa:before{content:"\e0a4"}.social_googledrive:before{content:"\e0a5"}.social_flickr:before{content:"\e0a6"}.social_blogger:before{content:"\e0a7"}.social_spotify:before{content:"\e0a8"}.social_delicious:before{content:"\e0a9"}.social_facebook_circle:before{content:"\e0aa"}.social_twitter_circle:before{content:"\e0ab"}.social_pinterest_circle:before{content:"\e0ac"}.social_googleplus_circle:before{content:"\e0ad"}.social_tumblr_circle:before{content:"\e0ae"}.social_stumbleupon_circle:before{content:"\e0af"}.social_wordpress_circle:before{content:"\e0b0"}.social_instagram_circle:before{content:"\e0b1"}.social_dribbble_circle:before{content:"\e0b2"}.social_vimeo_circle:before{content:"\e0b3"}.social_linkedin_circle:before{content:"\e0b4"}.social_rss_circle:before{content:"\e0b5"}.social_deviantart_circle:before{content:"\e0b6"}.social_share_circle:before{content:"\e0b7"}.social_myspace_circle:before{content:"\e0b8"}.social_skype_circle:before{content:"\e0b9"}.social_youtube_circle:before{content:"\e0ba"}.social_picassa_circle:before{content:"\e0bb"}.social_googledrive_alt2:before{content:"\e0bc"}.social_flickr_circle:before{content:"\e0bd"}.social_blogger_circle:before{content:"\e0be"}.social_spotify_circle:before{content:"\e0bf"}.social_delicious_circle:before{content:"\e0c0"}.social_facebook_square:before{content:"\e0c1"}.social_twitter_square:before{content:"\e0c2"}.social_pinterest_square:before{content:"\e0c3"}.social_googleplus_square:before{content:"\e0c4"}.social_tumblr_square:before{content:"\e0c5"}.social_stumbleupon_square:before{content:"\e0c6"}.social_wordpress_square:before{content:"\e0c7"}.social_instagram_square:before{content:"\e0c8"}.social_dribbble_square:before{content:"\e0c9"}.social_vimeo_square:before{content:"\e0ca"}.social_linkedin_square:before{content:"\e0cb"}.social_rss_square:before{content:"\e0cc"}.social_deviantart_square:before{content:"\e0cd"}.social_share_square:before{content:"\e0ce"}.social_myspace_square:before{content:"\e0cf"}.social_skype_square:before{content:"\e0d0"}.social_youtube_square:before{content:"\e0d1"}.social_picassa_square:before{content:"\e0d2"}.social_googledrive_square:before{content:"\e0d3"}.social_flickr_square:before{content:"\e0d4"}.social_blogger_square:before{content:"\e0d5"}.social_spotify_square:before{content:"\e0d6"}.social_delicious_square:before{content:"\e0d7"}.icon_printer:before{content:"\e103"}.icon_calulator:before{content:"\e0ee"}.icon_building:before{content:"\e0ef"}.icon_floppy:before{content:"\e0e8"}.icon_drive:before{content:"\e0ea"}.icon_search-2:before{content:"\e101"}.icon_id:before{content:"\e107"}.icon_id-2:before{content:"\e108"}.icon_puzzle:before{content:"\e102"}.icon_like:before{content:"\e106"}.icon_dislike:before{content:"\e0eb"}.icon_mug:before{content:"\e105"}.icon_currency:before{content:"\e0ed"}.icon_wallet:before{content:"\e100"}.icon_pens:before{content:"\e104"}.icon_easel:before{content:"\e0e9"}.icon_flowchart:before{content:"\e109"}.icon_datareport:before{content:"\e0ec"}.icon_briefcase:before{content:"\e0fe"}.icon_shield:before{content:"\e0f6"}.icon_percent:before{content:"\e0fb"}.icon_globe:before{content:"\e0e2"}.icon_globe-2:before{content:"\e0e3"}.icon_target:before{content:"\e0f5"}.icon_hourglass:before{content:"\e0e1"}.icon_balance:before{content:"\e0ff"}.icon_rook:before{content:"\e0f8"}.icon_printer-alt:before{content:"\e0fa"}.icon_calculator_alt:before{content:"\e0e7"}.icon_building_alt:before{content:"\e0fd"}.icon_floppy_alt:before{content:"\e0e4"}.icon_drive_alt:before{content:"\e0e5"}.icon_search_alt:before{content:"\e0f7"}.icon_id_alt:before{content:"\e0e0"}.icon_id-2_alt:before{content:"\e0fc"}.icon_puzzle_alt:before{content:"\e0f9"}.icon_like_alt:before{content:"\e0dd"}.icon_dislike_alt:before{content:"\e0f1"}.icon_mug_alt:before{content:"\e0dc"}.icon_currency_alt:before{content:"\e0f3"}.icon_wallet_alt:before{content:"\e0d8"}.icon_pens_alt:before{content:"\e0db"}.icon_easel_alt:before{content:"\e0f0"}.icon_flowchart_alt:before{content:"\e0df"}.icon_datareport_alt:before{content:"\e0f2"}.icon_briefcase_alt:before{content:"\e0f4"}.icon_shield_alt:before{content:"\e0d9"}.icon_percent_alt:before{content:"\e0da"}.icon_globe_alt:before{content:"\e0de"}.icon_clipboard:before{content:"\e0e6"}.glyph{float:left;text-align:center;padding:.75em;margin:.4em 1.5em .75em 0;width:6em;text-shadow:none}.glyph_big{font-size:128px;color:#59c5dc;float:left;margin-right:20px}.glyph div{padding-bottom:10px}.glyph input{font-family:consolas,monospace;font-size:12px;width:100%;text-align:center;border:0;box-shadow:0 0 0 1px #ccc;padding:.2em;-moz-border-radius:5px;-webkit-border-radius:5px}.centered{margin-left:auto;margin-right:auto}.glyph .fs1{font-size:2em} \ No newline at end of file diff --git a/assets/frontend/icons/elusive/css/elusive-icons.css b/assets/frontend/icons/elusive/css/elusive-icons.css new file mode 100644 index 0000000..b6db7c2 --- /dev/null +++ b/assets/frontend/icons/elusive/css/elusive-icons.css @@ -0,0 +1,1082 @@ +/*! + * Elusive Icons 2.0.0 by @ReduxFramework - http://elusiveicons.com - @reduxframework + * License - http://elusiveicons.com/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'Elusive-Icons'; + src: url('../fonts/elusiveicons-webfont.eot?v=2.0.0'); + src: url('../fonts/elusiveicons-webfont.eot?#iefix&v=2.0.0') format('embedded-opentype'), url('../fonts/elusiveicons-webfont.woff?v=2.0.0') format('woff'), url('../fonts/elusiveicons-webfont.ttf?v=2.0.0') format('truetype'), url('../fonts/elusiveicons-webfont.svg?v=2.0.0#elusiveiconsregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.el { + display: inline-block; + font: normal normal normal 14px/1 'Elusive-Icons'; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); +} +/* makes the font 33% larger relative to the icon container */ +.el-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.el-2x { + font-size: 2em; +} +.el-3x { + font-size: 3em; +} +.el-4x { + font-size: 4em; +} +.el-5x { + font-size: 5em; +} +.el-fw { + width: 1.28571429em; + text-align: center; +} +.el-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.el-ul > li { + position: relative; +} +.el-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.el-li.el-lg { + left: -1.85714286em; +} +.el-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.el.pull-left { + margin-right: .3em; +} +.el.pull-right { + margin-left: .3em; +} +.el-spin { + -webkit-animation: el-spin 2s infinite linear; + animation: el-spin 2s infinite linear; +} +.el-pulse { + -webkit-animation: el-spin 1s infinite steps(8); + animation: el-spin 1s infinite steps(8); +} +@-webkit-keyframes el-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes el-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.el-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.el-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.el-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.el-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.el-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .el-rotate-90, +:root .el-rotate-180, +:root .el-rotate-270, +:root .el-flip-horizontal, +:root .el-flip-vertical { + filter: none; +} +.el-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.el-stack-1x, +.el-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.el-stack-1x { + line-height: inherit; +} +.el-stack-2x { + font-size: 2em; +} +.el-inverse { + color: #ffffff; +} +/* Elusive Icons uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.el-address-book-alt:before { + content: "\f101"; +} +.el-address-book:before { + content: "\f102"; +} +.el-adjust-alt:before { + content: "\f103"; +} +.el-adjust:before { + content: "\f104"; +} +.el-adult:before { + content: "\f105"; +} +.el-align-center:before { + content: "\f106"; +} +.el-align-justify:before { + content: "\f107"; +} +.el-align-left:before { + content: "\f108"; +} +.el-align-right:before { + content: "\f109"; +} +.el-arrow-down:before { + content: "\f10a"; +} +.el-arrow-left:before { + content: "\f10b"; +} +.el-arrow-right:before { + content: "\f10c"; +} +.el-arrow-up:before { + content: "\f10d"; +} +.el-asl:before { + content: "\f10e"; +} +.el-asterisk:before { + content: "\f10f"; +} +.el-backward:before { + content: "\f110"; +} +.el-ban-circle:before { + content: "\f111"; +} +.el-barcode:before { + content: "\f112"; +} +.el-behance:before { + content: "\f113"; +} +.el-bell:before { + content: "\f114"; +} +.el-blind:before { + content: "\f115"; +} +.el-blogger:before { + content: "\f116"; +} +.el-bold:before { + content: "\f117"; +} +.el-book:before { + content: "\f118"; +} +.el-bookmark-empty:before { + content: "\f119"; +} +.el-bookmark:before { + content: "\f11a"; +} +.el-braille:before { + content: "\f11b"; +} +.el-briefcase:before { + content: "\f11c"; +} +.el-broom:before { + content: "\f11d"; +} +.el-brush:before { + content: "\f11e"; +} +.el-bulb:before { + content: "\f11f"; +} +.el-bullhorn:before { + content: "\f120"; +} +.el-calendar-sign:before { + content: "\f121"; +} +.el-calendar:before { + content: "\f122"; +} +.el-camera:before { + content: "\f123"; +} +.el-car:before { + content: "\f124"; +} +.el-caret-down:before { + content: "\f125"; +} +.el-caret-left:before { + content: "\f126"; +} +.el-caret-right:before { + content: "\f127"; +} +.el-caret-up:before { + content: "\f128"; +} +.el-cc:before { + content: "\f129"; +} +.el-certificate:before { + content: "\f12a"; +} +.el-check-empty:before { + content: "\f12b"; +} +.el-check:before { + content: "\f12c"; +} +.el-chevron-down:before { + content: "\f12d"; +} +.el-chevron-left:before { + content: "\f12e"; +} +.el-chevron-right:before { + content: "\f12f"; +} +.el-chevron-up:before { + content: "\f130"; +} +.el-child:before { + content: "\f131"; +} +.el-circle-arrow-down:before { + content: "\f132"; +} +.el-circle-arrow-left:before { + content: "\f133"; +} +.el-circle-arrow-right:before { + content: "\f134"; +} +.el-circle-arrow-up:before { + content: "\f135"; +} +.el-cloud-alt:before { + content: "\f136"; +} +.el-cloud:before { + content: "\f137"; +} +.el-cog-alt:before { + content: "\f138"; +} +.el-cog:before { + content: "\f139"; +} +.el-cogs:before { + content: "\f13a"; +} +.el-comment-alt:before { + content: "\f13b"; +} +.el-comment:before { + content: "\f13c"; +} +.el-compass-alt:before { + content: "\f13d"; +} +.el-compass:before { + content: "\f13e"; +} +.el-credit-card:before { + content: "\f13f"; +} +.el-css:before { + content: "\f140"; +} +.el-dashboard:before { + content: "\f141"; +} +.el-delicious:before { + content: "\f142"; +} +.el-deviantart:before { + content: "\f143"; +} +.el-digg:before { + content: "\f144"; +} +.el-download-alt:before { + content: "\f145"; +} +.el-download:before { + content: "\f146"; +} +.el-dribbble:before { + content: "\f147"; +} +.el-edit:before { + content: "\f148"; +} +.el-eject:before { + content: "\f149"; +} +.el-envelope-alt:before { + content: "\f14a"; +} +.el-envelope:before { + content: "\f14b"; +} +.el-error-alt:before { + content: "\f14c"; +} +.el-error:before { + content: "\f14d"; +} +.el-eur:before { + content: "\f14e"; +} +.el-exclamation-sign:before { + content: "\f14f"; +} +.el-eye-close:before { + content: "\f150"; +} +.el-eye-open:before { + content: "\f151"; +} +.el-facebook:before { + content: "\f152"; +} +.el-facetime-video:before { + content: "\f153"; +} +.el-fast-backward:before { + content: "\f154"; +} +.el-fast-forward:before { + content: "\f155"; +} +.el-female:before { + content: "\f156"; +} +.el-file-alt:before { + content: "\f157"; +} +.el-file-edit-alt:before { + content: "\f158"; +} +.el-file-edit:before { + content: "\f159"; +} +.el-file-new-alt:before { + content: "\f15a"; +} +.el-file-new:before { + content: "\f15b"; +} +.el-file:before { + content: "\f15c"; +} +.el-film:before { + content: "\f15d"; +} +.el-filter:before { + content: "\f15e"; +} +.el-fire:before { + content: "\f15f"; +} +.el-flag-alt:before { + content: "\f160"; +} +.el-flag:before { + content: "\f161"; +} +.el-flickr:before { + content: "\f162"; +} +.el-folder-close:before { + content: "\f163"; +} +.el-folder-open:before { + content: "\f164"; +} +.el-folder-sign:before { + content: "\f165"; +} +.el-folder:before { + content: "\f166"; +} +.el-font:before { + content: "\f167"; +} +.el-fontsize:before { + content: "\f168"; +} +.el-fork:before { + content: "\f169"; +} +.el-forward-alt:before { + content: "\f16a"; +} +.el-forward:before { + content: "\f16b"; +} +.el-foursquare:before { + content: "\f16c"; +} +.el-friendfeed-rect:before { + content: "\f16d"; +} +.el-friendfeed:before { + content: "\f16e"; +} +.el-fullscreen:before { + content: "\f16f"; +} +.el-gbp:before { + content: "\f170"; +} +.el-gift:before { + content: "\f171"; +} +.el-github-text:before { + content: "\f172"; +} +.el-github:before { + content: "\f173"; +} +.el-glass:before { + content: "\f174"; +} +.el-glasses:before { + content: "\f175"; +} +.el-globe-alt:before { + content: "\f176"; +} +.el-globe:before { + content: "\f177"; +} +.el-googleplus:before { + content: "\f178"; +} +.el-graph-alt:before { + content: "\f179"; +} +.el-graph:before { + content: "\f17a"; +} +.el-group-alt:before { + content: "\f17b"; +} +.el-group:before { + content: "\f17c"; +} +.el-guidedog:before { + content: "\f17d"; +} +.el-hand-down:before { + content: "\f17e"; +} +.el-hand-left:before { + content: "\f17f"; +} +.el-hand-right:before { + content: "\f180"; +} +.el-hand-up:before { + content: "\f181"; +} +.el-hdd:before { + content: "\f182"; +} +.el-headphones:before { + content: "\f183"; +} +.el-hearing-impaired:before { + content: "\f184"; +} +.el-heart-alt:before { + content: "\f185"; +} +.el-heart-empty:before { + content: "\f186"; +} +.el-heart:before { + content: "\f187"; +} +.el-home-alt:before { + content: "\f188"; +} +.el-home:before { + content: "\f189"; +} +.el-hourglass:before { + content: "\f18a"; +} +.el-idea-alt:before { + content: "\f18b"; +} +.el-idea:before { + content: "\f18c"; +} +.el-inbox-alt:before { + content: "\f18d"; +} +.el-inbox-box:before { + content: "\f18e"; +} +.el-inbox:before { + content: "\f18f"; +} +.el-indent-left:before { + content: "\f190"; +} +.el-indent-right:before { + content: "\f191"; +} +.el-info-circle:before { + content: "\f192"; +} +.el-instagram:before { + content: "\f193"; +} +.el-iphone-home:before { + content: "\f194"; +} +.el-italic:before { + content: "\f195"; +} +.el-key:before { + content: "\f196"; +} +.el-laptop-alt:before { + content: "\f197"; +} +.el-laptop:before { + content: "\f198"; +} +.el-lastfm:before { + content: "\f199"; +} +.el-leaf:before { + content: "\f19a"; +} +.el-lines:before { + content: "\f19b"; +} +.el-link:before { + content: "\f19c"; +} +.el-linkedin:before { + content: "\f19d"; +} +.el-list-alt:before { + content: "\f19e"; +} +.el-list:before { + content: "\f19f"; +} +.el-livejournal:before { + content: "\f1a0"; +} +.el-lock-alt:before { + content: "\f1a1"; +} +.el-lock:before { + content: "\f1a2"; +} +.el-magic:before { + content: "\f1a3"; +} +.el-magnet:before { + content: "\f1a4"; +} +.el-male:before { + content: "\f1a5"; +} +.el-map-marker-alt:before { + content: "\f1a6"; +} +.el-map-marker:before { + content: "\f1a7"; +} +.el-mic-alt:before { + content: "\f1a8"; +} +.el-mic:before { + content: "\f1a9"; +} +.el-minus-sign:before { + content: "\f1aa"; +} +.el-minus:before { + content: "\f1ab"; +} +.el-move:before { + content: "\f1ac"; +} +.el-music:before { + content: "\f1ad"; +} +.el-myspace:before { + content: "\f1ae"; +} +.el-network:before { + content: "\f1af"; +} +.el-off:before { + content: "\f1b0"; +} +.el-ok-circle:before { + content: "\f1b1"; +} +.el-ok-sign:before { + content: "\f1b2"; +} +.el-ok:before { + content: "\f1b3"; +} +.el-opensource:before { + content: "\f1b4"; +} +.el-paper-clip-alt:before { + content: "\f1b5"; +} +.el-paper-clip:before { + content: "\f1b6"; +} +.el-path:before { + content: "\f1b7"; +} +.el-pause-alt:before { + content: "\f1b8"; +} +.el-pause:before { + content: "\f1b9"; +} +.el-pencil-alt:before { + content: "\f1ba"; +} +.el-pencil:before { + content: "\f1bb"; +} +.el-person:before { + content: "\f1bc"; +} +.el-phone-alt:before { + content: "\f1bd"; +} +.el-phone:before { + content: "\f1be"; +} +.el-photo-alt:before { + content: "\f1bf"; +} +.el-photo:before { + content: "\f1c0"; +} +.el-picasa:before { + content: "\f1c1"; +} +.el-picture:before { + content: "\f1c2"; +} +.el-pinterest:before { + content: "\f1c3"; +} +.el-plane:before { + content: "\f1c4"; +} +.el-play-alt:before { + content: "\f1c5"; +} +.el-play-circle:before { + content: "\f1c6"; +} +.el-play:before { + content: "\f1c7"; +} +.el-plurk-alt:before { + content: "\f1c8"; +} +.el-plurk:before { + content: "\f1c9"; +} +.el-plus-sign:before { + content: "\f1ca"; +} +.el-plus:before { + content: "\f1cb"; +} +.el-podcast:before { + content: "\f1cc"; +} +.el-print:before { + content: "\f1cd"; +} +.el-puzzle:before { + content: "\f1ce"; +} +.el-qrcode:before { + content: "\f1cf"; +} +.el-question-sign:before { + content: "\f1d0"; +} +.el-question:before { + content: "\f1d1"; +} +.el-quote-alt:before { + content: "\f1d2"; +} +.el-quote-right-alt:before { + content: "\f1d3"; +} +.el-quote-right:before { + content: "\f1d4"; +} +.el-quotes:before { + content: "\f1d5"; +} +.el-random:before { + content: "\f1d6"; +} +.el-record:before { + content: "\f1d7"; +} +.el-reddit:before { + content: "\f1d8"; +} +.el-redux:before { + content: "\f1d9"; +} +.el-refresh:before { + content: "\f1da"; +} +.el-remove-circle:before { + content: "\f1db"; +} +.el-remove-sign:before { + content: "\f1dc"; +} +.el-remove:before { + content: "\f1dd"; +} +.el-repeat-alt:before { + content: "\f1de"; +} +.el-repeat:before { + content: "\f1df"; +} +.el-resize-full:before { + content: "\f1e0"; +} +.el-resize-horizontal:before { + content: "\f1e1"; +} +.el-resize-small:before { + content: "\f1e2"; +} +.el-resize-vertical:before { + content: "\f1e3"; +} +.el-return-key:before { + content: "\f1e4"; +} +.el-retweet:before { + content: "\f1e5"; +} +.el-reverse-alt:before { + content: "\f1e6"; +} +.el-road:before { + content: "\f1e7"; +} +.el-rss:before { + content: "\f1e8"; +} +.el-scissors:before { + content: "\f1e9"; +} +.el-screen-alt:before { + content: "\f1ea"; +} +.el-screen:before { + content: "\f1eb"; +} +.el-screenshot:before { + content: "\f1ec"; +} +.el-search-alt:before { + content: "\f1ed"; +} +.el-search:before { + content: "\f1ee"; +} +.el-share-alt:before { + content: "\f1ef"; +} +.el-share:before { + content: "\f1f0"; +} +.el-shopping-cart-sign:before { + content: "\f1f1"; +} +.el-shopping-cart:before { + content: "\f1f2"; +} +.el-signal:before { + content: "\f1f3"; +} +.el-skype:before { + content: "\f1f4"; +} +.el-slideshare:before { + content: "\f1f5"; +} +.el-smiley-alt:before { + content: "\f1f6"; +} +.el-smiley:before { + content: "\f1f7"; +} +.el-soundcloud:before { + content: "\f1f8"; +} +.el-speaker:before { + content: "\f1f9"; +} +.el-spotify:before { + content: "\f1fa"; +} +.el-stackoverflow:before { + content: "\f1fb"; +} +.el-star-alt:before { + content: "\f1fc"; +} +.el-star-empty:before { + content: "\f1fd"; +} +.el-star:before { + content: "\f1fe"; +} +.el-step-backward:before { + content: "\f1ff"; +} +.el-step-forward:before { + content: "\f200"; +} +.el-stop-alt:before { + content: "\f201"; +} +.el-stop:before { + content: "\f202"; +} +.el-stumbleupon:before { + content: "\f203"; +} +.el-tag:before { + content: "\f204"; +} +.el-tags:before { + content: "\f205"; +} +.el-tasks:before { + content: "\f206"; +} +.el-text-height:before { + content: "\f207"; +} +.el-text-width:before { + content: "\f208"; +} +.el-th-large:before { + content: "\f209"; +} +.el-th-list:before { + content: "\f20a"; +} +.el-th:before { + content: "\f20b"; +} +.el-thumbs-down:before { + content: "\f20c"; +} +.el-thumbs-up:before { + content: "\f20d"; +} +.el-time-alt:before { + content: "\f20e"; +} +.el-time:before { + content: "\f20f"; +} +.el-tint:before { + content: "\f210"; +} +.el-torso:before { + content: "\f211"; +} +.el-trash-alt:before { + content: "\f212"; +} +.el-trash:before { + content: "\f213"; +} +.el-tumblr:before { + content: "\f214"; +} +.el-twitter:before { + content: "\f215"; +} +.el-universal-access:before { + content: "\f216"; +} +.el-unlock-alt:before { + content: "\f217"; +} +.el-unlock:before { + content: "\f218"; +} +.el-upload:before { + content: "\f219"; +} +.el-usd:before { + content: "\f21a"; +} +.el-user:before { + content: "\f21b"; +} +.el-viadeo:before { + content: "\f21c"; +} +.el-video-alt:before { + content: "\f21d"; +} +.el-video-chat:before { + content: "\f21e"; +} +.el-video:before { + content: "\f21f"; +} +.el-view-mode:before { + content: "\f220"; +} +.el-vimeo:before { + content: "\f221"; +} +.el-vkontakte:before { + content: "\f222"; +} +.el-volume-down:before { + content: "\f223"; +} +.el-volume-off:before { + content: "\f224"; +} +.el-volume-up:before { + content: "\f225"; +} +.el-w3c:before { + content: "\f226"; +} +.el-warning-sign:before { + content: "\f227"; +} +.el-website-alt:before { + content: "\f228"; +} +.el-website:before { + content: "\f229"; +} +.el-wheelchair:before { + content: "\f22a"; +} +.el-wordpress:before { + content: "\f22b"; +} +.el-wrench-alt:before { + content: "\f22c"; +} +.el-wrench:before { + content: "\f22d"; +} +.el-youtube:before { + content: "\f22e"; +} +.el-zoom-in:before { + content: "\f22f"; +} +.el-zoom-out:before { + content: "\f230"; +} diff --git a/assets/frontend/icons/elusive/css/elusive-icons.min.css b/assets/frontend/icons/elusive/css/elusive-icons.min.css new file mode 100644 index 0000000..1c4abbf --- /dev/null +++ b/assets/frontend/icons/elusive/css/elusive-icons.min.css @@ -0,0 +1,5 @@ + +/*! + * Elusive Icons 2.0.0 by @ReduxFramework - http://elusiveicons.com - @reduxframework + * License - http://elusiveicons.com/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'Elusive-Icons';src:url('../fonts/elusiveicons-webfont.eot?v=2.0.0');src:url('../fonts/elusiveicons-webfont.eot?#iefix&v=2.0.0') format('embedded-opentype'),url('../fonts/elusiveicons-webfont.woff?v=2.0.0') format('woff'),url('../fonts/elusiveicons-webfont.ttf?v=2.0.0') format('truetype'),url('../fonts/elusiveicons-webfont.svg?v=2.0.0#elusiveiconsregular') format('svg');font-weight:normal;font-style:normal}.el{display:inline-block;font:normal normal normal 14px/1 'Elusive-Icons';font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0,0)}.el-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.el-2x{font-size:2em}.el-3x{font-size:3em}.el-4x{font-size:4em}.el-5x{font-size:5em}.el-fw{width:1.28571429em;text-align:center}.el-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.el-ul>li{position:relative}.el-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.el-li.el-lg{left:-1.85714286em}.el-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.el.pull-left{margin-right:.3em}.el.pull-right{margin-left:.3em}.el-spin{-webkit-animation:el-spin 2s infinite linear;animation:el-spin 2s infinite linear}.el-pulse{-webkit-animation:el-spin 1s infinite steps(8);animation:el-spin 1s infinite steps(8)}@-webkit-keyframes el-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes el-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.el-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.el-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.el-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.el-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .el-rotate-90,:root .el-rotate-180,:root .el-rotate-270,:root .el-flip-horizontal,:root .el-flip-vertical{filter:none}.el-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.el-stack-1x,.el-stack-2x{position:absolute;left:0;width:100%;text-align:center}.el-stack-1x{line-height:inherit}.el-stack-2x{font-size:2em}.el-inverse{color:#fff}.el-address-book-alt:before{content:"\f101"}.el-address-book:before{content:"\f102"}.el-adjust-alt:before{content:"\f103"}.el-adjust:before{content:"\f104"}.el-adult:before{content:"\f105"}.el-align-center:before{content:"\f106"}.el-align-justify:before{content:"\f107"}.el-align-left:before{content:"\f108"}.el-align-right:before{content:"\f109"}.el-arrow-down:before{content:"\f10a"}.el-arrow-left:before{content:"\f10b"}.el-arrow-right:before{content:"\f10c"}.el-arrow-up:before{content:"\f10d"}.el-asl:before{content:"\f10e"}.el-asterisk:before{content:"\f10f"}.el-backward:before{content:"\f110"}.el-ban-circle:before{content:"\f111"}.el-barcode:before{content:"\f112"}.el-behance:before{content:"\f113"}.el-bell:before{content:"\f114"}.el-blind:before{content:"\f115"}.el-blogger:before{content:"\f116"}.el-bold:before{content:"\f117"}.el-book:before{content:"\f118"}.el-bookmark-empty:before{content:"\f119"}.el-bookmark:before{content:"\f11a"}.el-braille:before{content:"\f11b"}.el-briefcase:before{content:"\f11c"}.el-broom:before{content:"\f11d"}.el-brush:before{content:"\f11e"}.el-bulb:before{content:"\f11f"}.el-bullhorn:before{content:"\f120"}.el-calendar-sign:before{content:"\f121"}.el-calendar:before{content:"\f122"}.el-camera:before{content:"\f123"}.el-car:before{content:"\f124"}.el-caret-down:before{content:"\f125"}.el-caret-left:before{content:"\f126"}.el-caret-right:before{content:"\f127"}.el-caret-up:before{content:"\f128"}.el-cc:before{content:"\f129"}.el-certificate:before{content:"\f12a"}.el-check-empty:before{content:"\f12b"}.el-check:before{content:"\f12c"}.el-chevron-down:before{content:"\f12d"}.el-chevron-left:before{content:"\f12e"}.el-chevron-right:before{content:"\f12f"}.el-chevron-up:before{content:"\f130"}.el-child:before{content:"\f131"}.el-circle-arrow-down:before{content:"\f132"}.el-circle-arrow-left:before{content:"\f133"}.el-circle-arrow-right:before{content:"\f134"}.el-circle-arrow-up:before{content:"\f135"}.el-cloud-alt:before{content:"\f136"}.el-cloud:before{content:"\f137"}.el-cog-alt:before{content:"\f138"}.el-cog:before{content:"\f139"}.el-cogs:before{content:"\f13a"}.el-comment-alt:before{content:"\f13b"}.el-comment:before{content:"\f13c"}.el-compass-alt:before{content:"\f13d"}.el-compass:before{content:"\f13e"}.el-credit-card:before{content:"\f13f"}.el-css:before{content:"\f140"}.el-dashboard:before{content:"\f141"}.el-delicious:before{content:"\f142"}.el-deviantart:before{content:"\f143"}.el-digg:before{content:"\f144"}.el-download-alt:before{content:"\f145"}.el-download:before{content:"\f146"}.el-dribbble:before{content:"\f147"}.el-edit:before{content:"\f148"}.el-eject:before{content:"\f149"}.el-envelope-alt:before{content:"\f14a"}.el-envelope:before{content:"\f14b"}.el-error-alt:before{content:"\f14c"}.el-error:before{content:"\f14d"}.el-eur:before{content:"\f14e"}.el-exclamation-sign:before{content:"\f14f"}.el-eye-close:before{content:"\f150"}.el-eye-open:before{content:"\f151"}.el-facebook:before{content:"\f152"}.el-facetime-video:before{content:"\f153"}.el-fast-backward:before{content:"\f154"}.el-fast-forward:before{content:"\f155"}.el-female:before{content:"\f156"}.el-file-alt:before{content:"\f157"}.el-file-edit-alt:before{content:"\f158"}.el-file-edit:before{content:"\f159"}.el-file-new-alt:before{content:"\f15a"}.el-file-new:before{content:"\f15b"}.el-file:before{content:"\f15c"}.el-film:before{content:"\f15d"}.el-filter:before{content:"\f15e"}.el-fire:before{content:"\f15f"}.el-flag-alt:before{content:"\f160"}.el-flag:before{content:"\f161"}.el-flickr:before{content:"\f162"}.el-folder-close:before{content:"\f163"}.el-folder-open:before{content:"\f164"}.el-folder-sign:before{content:"\f165"}.el-folder:before{content:"\f166"}.el-font:before{content:"\f167"}.el-fontsize:before{content:"\f168"}.el-fork:before{content:"\f169"}.el-forward-alt:before{content:"\f16a"}.el-forward:before{content:"\f16b"}.el-foursquare:before{content:"\f16c"}.el-friendfeed-rect:before{content:"\f16d"}.el-friendfeed:before{content:"\f16e"}.el-fullscreen:before{content:"\f16f"}.el-gbp:before{content:"\f170"}.el-gift:before{content:"\f171"}.el-github-text:before{content:"\f172"}.el-github:before{content:"\f173"}.el-glass:before{content:"\f174"}.el-glasses:before{content:"\f175"}.el-globe-alt:before{content:"\f176"}.el-globe:before{content:"\f177"}.el-googleplus:before{content:"\f178"}.el-graph-alt:before{content:"\f179"}.el-graph:before{content:"\f17a"}.el-group-alt:before{content:"\f17b"}.el-group:before{content:"\f17c"}.el-guidedog:before{content:"\f17d"}.el-hand-down:before{content:"\f17e"}.el-hand-left:before{content:"\f17f"}.el-hand-right:before{content:"\f180"}.el-hand-up:before{content:"\f181"}.el-hdd:before{content:"\f182"}.el-headphones:before{content:"\f183"}.el-hearing-impaired:before{content:"\f184"}.el-heart-alt:before{content:"\f185"}.el-heart-empty:before{content:"\f186"}.el-heart:before{content:"\f187"}.el-home-alt:before{content:"\f188"}.el-home:before{content:"\f189"}.el-hourglass:before{content:"\f18a"}.el-idea-alt:before{content:"\f18b"}.el-idea:before{content:"\f18c"}.el-inbox-alt:before{content:"\f18d"}.el-inbox-box:before{content:"\f18e"}.el-inbox:before{content:"\f18f"}.el-indent-left:before{content:"\f190"}.el-indent-right:before{content:"\f191"}.el-info-circle:before{content:"\f192"}.el-instagram:before{content:"\f193"}.el-iphone-home:before{content:"\f194"}.el-italic:before{content:"\f195"}.el-key:before{content:"\f196"}.el-laptop-alt:before{content:"\f197"}.el-laptop:before{content:"\f198"}.el-lastfm:before{content:"\f199"}.el-leaf:before{content:"\f19a"}.el-lines:before{content:"\f19b"}.el-link:before{content:"\f19c"}.el-linkedin:before{content:"\f19d"}.el-list-alt:before{content:"\f19e"}.el-list:before{content:"\f19f"}.el-livejournal:before{content:"\f1a0"}.el-lock-alt:before{content:"\f1a1"}.el-lock:before{content:"\f1a2"}.el-magic:before{content:"\f1a3"}.el-magnet:before{content:"\f1a4"}.el-male:before{content:"\f1a5"}.el-map-marker-alt:before{content:"\f1a6"}.el-map-marker:before{content:"\f1a7"}.el-mic-alt:before{content:"\f1a8"}.el-mic:before{content:"\f1a9"}.el-minus-sign:before{content:"\f1aa"}.el-minus:before{content:"\f1ab"}.el-move:before{content:"\f1ac"}.el-music:before{content:"\f1ad"}.el-myspace:before{content:"\f1ae"}.el-network:before{content:"\f1af"}.el-off:before{content:"\f1b0"}.el-ok-circle:before{content:"\f1b1"}.el-ok-sign:before{content:"\f1b2"}.el-ok:before{content:"\f1b3"}.el-opensource:before{content:"\f1b4"}.el-paper-clip-alt:before{content:"\f1b5"}.el-paper-clip:before{content:"\f1b6"}.el-path:before{content:"\f1b7"}.el-pause-alt:before{content:"\f1b8"}.el-pause:before{content:"\f1b9"}.el-pencil-alt:before{content:"\f1ba"}.el-pencil:before{content:"\f1bb"}.el-person:before{content:"\f1bc"}.el-phone-alt:before{content:"\f1bd"}.el-phone:before{content:"\f1be"}.el-photo-alt:before{content:"\f1bf"}.el-photo:before{content:"\f1c0"}.el-picasa:before{content:"\f1c1"}.el-picture:before{content:"\f1c2"}.el-pinterest:before{content:"\f1c3"}.el-plane:before{content:"\f1c4"}.el-play-alt:before{content:"\f1c5"}.el-play-circle:before{content:"\f1c6"}.el-play:before{content:"\f1c7"}.el-plurk-alt:before{content:"\f1c8"}.el-plurk:before{content:"\f1c9"}.el-plus-sign:before{content:"\f1ca"}.el-plus:before{content:"\f1cb"}.el-podcast:before{content:"\f1cc"}.el-print:before{content:"\f1cd"}.el-puzzle:before{content:"\f1ce"}.el-qrcode:before{content:"\f1cf"}.el-question-sign:before{content:"\f1d0"}.el-question:before{content:"\f1d1"}.el-quote-alt:before{content:"\f1d2"}.el-quote-right-alt:before{content:"\f1d3"}.el-quote-right:before{content:"\f1d4"}.el-quotes:before{content:"\f1d5"}.el-random:before{content:"\f1d6"}.el-record:before{content:"\f1d7"}.el-reddit:before{content:"\f1d8"}.el-redux:before{content:"\f1d9"}.el-refresh:before{content:"\f1da"}.el-remove-circle:before{content:"\f1db"}.el-remove-sign:before{content:"\f1dc"}.el-remove:before{content:"\f1dd"}.el-repeat-alt:before{content:"\f1de"}.el-repeat:before{content:"\f1df"}.el-resize-full:before{content:"\f1e0"}.el-resize-horizontal:before{content:"\f1e1"}.el-resize-small:before{content:"\f1e2"}.el-resize-vertical:before{content:"\f1e3"}.el-return-key:before{content:"\f1e4"}.el-retweet:before{content:"\f1e5"}.el-reverse-alt:before{content:"\f1e6"}.el-road:before{content:"\f1e7"}.el-rss:before{content:"\f1e8"}.el-scissors:before{content:"\f1e9"}.el-screen-alt:before{content:"\f1ea"}.el-screen:before{content:"\f1eb"}.el-screenshot:before{content:"\f1ec"}.el-search-alt:before{content:"\f1ed"}.el-search:before{content:"\f1ee"}.el-share-alt:before{content:"\f1ef"}.el-share:before{content:"\f1f0"}.el-shopping-cart-sign:before{content:"\f1f1"}.el-shopping-cart:before{content:"\f1f2"}.el-signal:before{content:"\f1f3"}.el-skype:before{content:"\f1f4"}.el-slideshare:before{content:"\f1f5"}.el-smiley-alt:before{content:"\f1f6"}.el-smiley:before{content:"\f1f7"}.el-soundcloud:before{content:"\f1f8"}.el-speaker:before{content:"\f1f9"}.el-spotify:before{content:"\f1fa"}.el-stackoverflow:before{content:"\f1fb"}.el-star-alt:before{content:"\f1fc"}.el-star-empty:before{content:"\f1fd"}.el-star:before{content:"\f1fe"}.el-step-backward:before{content:"\f1ff"}.el-step-forward:before{content:"\f200"}.el-stop-alt:before{content:"\f201"}.el-stop:before{content:"\f202"}.el-stumbleupon:before{content:"\f203"}.el-tag:before{content:"\f204"}.el-tags:before{content:"\f205"}.el-tasks:before{content:"\f206"}.el-text-height:before{content:"\f207"}.el-text-width:before{content:"\f208"}.el-th-large:before{content:"\f209"}.el-th-list:before{content:"\f20a"}.el-th:before{content:"\f20b"}.el-thumbs-down:before{content:"\f20c"}.el-thumbs-up:before{content:"\f20d"}.el-time-alt:before{content:"\f20e"}.el-time:before{content:"\f20f"}.el-tint:before{content:"\f210"}.el-torso:before{content:"\f211"}.el-trash-alt:before{content:"\f212"}.el-trash:before{content:"\f213"}.el-tumblr:before{content:"\f214"}.el-twitter:before{content:"\f215"}.el-universal-access:before{content:"\f216"}.el-unlock-alt:before{content:"\f217"}.el-unlock:before{content:"\f218"}.el-upload:before{content:"\f219"}.el-usd:before{content:"\f21a"}.el-user:before{content:"\f21b"}.el-viadeo:before{content:"\f21c"}.el-video-alt:before{content:"\f21d"}.el-video-chat:before{content:"\f21e"}.el-video:before{content:"\f21f"}.el-view-mode:before{content:"\f220"}.el-vimeo:before{content:"\f221"}.el-vkontakte:before{content:"\f222"}.el-volume-down:before{content:"\f223"}.el-volume-off:before{content:"\f224"}.el-volume-up:before{content:"\f225"}.el-w3c:before{content:"\f226"}.el-warning-sign:before{content:"\f227"}.el-website-alt:before{content:"\f228"}.el-website:before{content:"\f229"}.el-wheelchair:before{content:"\f22a"}.el-wordpress:before{content:"\f22b"}.el-wrench-alt:before{content:"\f22c"}.el-wrench:before{content:"\f22d"}.el-youtube:before{content:"\f22e"}.el-zoom-in:before{content:"\f22f"}.el-zoom-out:before{content:"\f230"} \ No newline at end of file diff --git a/assets/frontend/icons/elusive/fonts/elusiveicons-webfont.eot b/assets/frontend/icons/elusive/fonts/elusiveicons-webfont.eot new file mode 100644 index 0000000..f42a001 Binary files /dev/null and b/assets/frontend/icons/elusive/fonts/elusiveicons-webfont.eot differ diff --git a/assets/frontend/icons/elusive/fonts/elusiveicons-webfont.svg b/assets/frontend/icons/elusive/fonts/elusiveicons-webfont.svg new file mode 100644 index 0000000..7bc3513 --- /dev/null +++ b/assets/frontend/icons/elusive/fonts/elusiveicons-webfont.svg @@ -0,0 +1,932 @@ + + + + + Created by FontForge 20120731 at Thu Feb 19 13:35:54 2015 + By Dovy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/frontend/icons/elusive/fonts/elusiveicons-webfont.ttf b/assets/frontend/icons/elusive/fonts/elusiveicons-webfont.ttf new file mode 100644 index 0000000..b6fe85d Binary files /dev/null and b/assets/frontend/icons/elusive/fonts/elusiveicons-webfont.ttf differ diff --git a/assets/frontend/icons/elusive/fonts/elusiveicons-webfont.woff b/assets/frontend/icons/elusive/fonts/elusiveicons-webfont.woff new file mode 100644 index 0000000..1e0487d Binary files /dev/null and b/assets/frontend/icons/elusive/fonts/elusiveicons-webfont.woff differ diff --git a/assets/frontend/icons/fontawesome/css/font-awesome.css b/assets/frontend/icons/fontawesome/css/font-awesome.css new file mode 100644 index 0000000..b2a5fe2 --- /dev/null +++ b/assets/frontend/icons/fontawesome/css/font-awesome.css @@ -0,0 +1,2086 @@ +/*! + * Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.5.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.5.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.5.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.5.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.5.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.5.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} diff --git a/assets/frontend/icons/fontawesome/css/font-awesome.min.css b/assets/frontend/icons/fontawesome/css/font-awesome.min.css new file mode 100644 index 0000000..6ce315c --- /dev/null +++ b/assets/frontend/icons/fontawesome/css/font-awesome.min.css @@ -0,0 +1,5 @@ + +/*! + * Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.5.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.5.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.5.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.5.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.5.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.5.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"} \ No newline at end of file diff --git a/assets/frontend/icons/fontawesome/fonts/FontAwesome.otf b/assets/frontend/icons/fontawesome/fonts/FontAwesome.otf new file mode 100644 index 0000000..3ed7f8b Binary files /dev/null and b/assets/frontend/icons/fontawesome/fonts/FontAwesome.otf differ diff --git a/assets/frontend/icons/fontawesome/fonts/fontawesome-webfont.eot b/assets/frontend/icons/fontawesome/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..9b6afae Binary files /dev/null and b/assets/frontend/icons/fontawesome/fonts/fontawesome-webfont.eot differ diff --git a/assets/frontend/icons/fontawesome/fonts/fontawesome-webfont.svg b/assets/frontend/icons/fontawesome/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..5bfd2dd --- /dev/null +++ b/assets/frontend/icons/fontawesome/fonts/fontawesome-webfont.svg @@ -0,0 +1,656 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/frontend/icons/fontawesome/fonts/fontawesome-webfont.ttf b/assets/frontend/icons/fontawesome/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..26dea79 Binary files /dev/null and b/assets/frontend/icons/fontawesome/fonts/fontawesome-webfont.ttf differ diff --git a/assets/frontend/icons/fontawesome/fonts/fontawesome-webfont.woff b/assets/frontend/icons/fontawesome/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..dc35ce3 Binary files /dev/null and b/assets/frontend/icons/fontawesome/fonts/fontawesome-webfont.woff differ diff --git a/assets/frontend/icons/fontawesome/fonts/fontawesome-webfont.woff2 b/assets/frontend/icons/fontawesome/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..500e517 Binary files /dev/null and b/assets/frontend/icons/fontawesome/fonts/fontawesome-webfont.woff2 differ diff --git a/assets/frontend/icons/fontawesome5/css/all.css b/assets/frontend/icons/fontawesome5/css/all.css new file mode 100644 index 0000000..b05c845 --- /dev/null +++ b/assets/frontend/icons/fontawesome5/css/all.css @@ -0,0 +1,3809 @@ +/*! + * Font Awesome Free 5.3.1 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa, +.fas, +.far, +.fal, +.fab { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; } + +.fa-lg { + font-size: 1.33333em; + line-height: 0.75em; + vertical-align: -.0667em; } + +.fa-xs { + font-size: .75em; } + +.fa-sm { + font-size: .875em; } + +.fa-1x { + font-size: 1em; } + +.fa-2x { + font-size: 2em; } + +.fa-3x { + font-size: 3em; } + +.fa-4x { + font-size: 4em; } + +.fa-5x { + font-size: 5em; } + +.fa-6x { + font-size: 6em; } + +.fa-7x { + font-size: 7em; } + +.fa-8x { + font-size: 8em; } + +.fa-9x { + font-size: 9em; } + +.fa-10x { + font-size: 10em; } + +.fa-fw { + text-align: center; + width: 1.25em; } + +.fa-ul { + list-style-type: none; + margin-left: 2.5em; + padding-left: 0; } +.fa-ul > li { + position: relative; } + +.fa-li { + left: -2em; + position: absolute; + text-align: center; + width: 2em; + line-height: inherit; } + +.fa-border { + border: solid 0.08em #eee; + border-radius: .1em; + padding: .2em .25em .15em; } + +.fa-pull-left { + float: left; } + +.fa-pull-right { + float: right; } + +.fa.fa-pull-left, +.fas.fa-pull-left, +.far.fa-pull-left, +.fal.fa-pull-left, +.fab.fa-pull-left { + margin-right: .3em; } + +.fa.fa-pull-right, +.fas.fa-pull-right, +.far.fa-pull-right, +.fal.fa-pull-right, +.fab.fa-pull-right { + margin-left: .3em; } + +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; } + +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); } + +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); } + +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } + +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + transform: scale(1, -1); } + +.fa-flip-horizontal.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); } + +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + -webkit-filter: none; + filter: none; } + +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2em; } + +.fa-stack-1x, +.fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; } + +.fa-stack-1x { + line-height: inherit; } + +.fa-stack-2x { + font-size: 2em; } + +.fa-inverse { + color: #fff; } + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ +.fa-500px:before { + content: "\f26e"; } + +.fa-accessible-icon:before { + content: "\f368"; } + +.fa-accusoft:before { + content: "\f369"; } + +.fa-ad:before { + content: "\f641"; } + +.fa-address-book:before { + content: "\f2b9"; } + +.fa-address-card:before { + content: "\f2bb"; } + +.fa-adjust:before { + content: "\f042"; } + +.fa-adn:before { + content: "\f170"; } + +.fa-adversal:before { + content: "\f36a"; } + +.fa-affiliatetheme:before { + content: "\f36b"; } + +.fa-air-freshener:before { + content: "\f5d0"; } + +.fa-algolia:before { + content: "\f36c"; } + +.fa-align-center:before { + content: "\f037"; } + +.fa-align-justify:before { + content: "\f039"; } + +.fa-align-left:before { + content: "\f036"; } + +.fa-align-right:before { + content: "\f038"; } + +.fa-alipay:before { + content: "\f642"; } + +.fa-allergies:before { + content: "\f461"; } + +.fa-amazon:before { + content: "\f270"; } + +.fa-amazon-pay:before { + content: "\f42c"; } + +.fa-ambulance:before { + content: "\f0f9"; } + +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; } + +.fa-amilia:before { + content: "\f36d"; } + +.fa-anchor:before { + content: "\f13d"; } + +.fa-android:before { + content: "\f17b"; } + +.fa-angellist:before { + content: "\f209"; } + +.fa-angle-double-down:before { + content: "\f103"; } + +.fa-angle-double-left:before { + content: "\f100"; } + +.fa-angle-double-right:before { + content: "\f101"; } + +.fa-angle-double-up:before { + content: "\f102"; } + +.fa-angle-down:before { + content: "\f107"; } + +.fa-angle-left:before { + content: "\f104"; } + +.fa-angle-right:before { + content: "\f105"; } + +.fa-angle-up:before { + content: "\f106"; } + +.fa-angry:before { + content: "\f556"; } + +.fa-angrycreative:before { + content: "\f36e"; } + +.fa-angular:before { + content: "\f420"; } + +.fa-ankh:before { + content: "\f644"; } + +.fa-app-store:before { + content: "\f36f"; } + +.fa-app-store-ios:before { + content: "\f370"; } + +.fa-apper:before { + content: "\f371"; } + +.fa-apple:before { + content: "\f179"; } + +.fa-apple-alt:before { + content: "\f5d1"; } + +.fa-apple-pay:before { + content: "\f415"; } + +.fa-archive:before { + content: "\f187"; } + +.fa-archway:before { + content: "\f557"; } + +.fa-arrow-alt-circle-down:before { + content: "\f358"; } + +.fa-arrow-alt-circle-left:before { + content: "\f359"; } + +.fa-arrow-alt-circle-right:before { + content: "\f35a"; } + +.fa-arrow-alt-circle-up:before { + content: "\f35b"; } + +.fa-arrow-circle-down:before { + content: "\f0ab"; } + +.fa-arrow-circle-left:before { + content: "\f0a8"; } + +.fa-arrow-circle-right:before { + content: "\f0a9"; } + +.fa-arrow-circle-up:before { + content: "\f0aa"; } + +.fa-arrow-down:before { + content: "\f063"; } + +.fa-arrow-left:before { + content: "\f060"; } + +.fa-arrow-right:before { + content: "\f061"; } + +.fa-arrow-up:before { + content: "\f062"; } + +.fa-arrows-alt:before { + content: "\f0b2"; } + +.fa-arrows-alt-h:before { + content: "\f337"; } + +.fa-arrows-alt-v:before { + content: "\f338"; } + +.fa-assistive-listening-systems:before { + content: "\f2a2"; } + +.fa-asterisk:before { + content: "\f069"; } + +.fa-asymmetrik:before { + content: "\f372"; } + +.fa-at:before { + content: "\f1fa"; } + +.fa-atlas:before { + content: "\f558"; } + +.fa-atom:before { + content: "\f5d2"; } + +.fa-audible:before { + content: "\f373"; } + +.fa-audio-description:before { + content: "\f29e"; } + +.fa-autoprefixer:before { + content: "\f41c"; } + +.fa-avianex:before { + content: "\f374"; } + +.fa-aviato:before { + content: "\f421"; } + +.fa-award:before { + content: "\f559"; } + +.fa-aws:before { + content: "\f375"; } + +.fa-backspace:before { + content: "\f55a"; } + +.fa-backward:before { + content: "\f04a"; } + +.fa-balance-scale:before { + content: "\f24e"; } + +.fa-ban:before { + content: "\f05e"; } + +.fa-band-aid:before { + content: "\f462"; } + +.fa-bandcamp:before { + content: "\f2d5"; } + +.fa-barcode:before { + content: "\f02a"; } + +.fa-bars:before { + content: "\f0c9"; } + +.fa-baseball-ball:before { + content: "\f433"; } + +.fa-basketball-ball:before { + content: "\f434"; } + +.fa-bath:before { + content: "\f2cd"; } + +.fa-battery-empty:before { + content: "\f244"; } + +.fa-battery-full:before { + content: "\f240"; } + +.fa-battery-half:before { + content: "\f242"; } + +.fa-battery-quarter:before { + content: "\f243"; } + +.fa-battery-three-quarters:before { + content: "\f241"; } + +.fa-bed:before { + content: "\f236"; } + +.fa-beer:before { + content: "\f0fc"; } + +.fa-behance:before { + content: "\f1b4"; } + +.fa-behance-square:before { + content: "\f1b5"; } + +.fa-bell:before { + content: "\f0f3"; } + +.fa-bell-slash:before { + content: "\f1f6"; } + +.fa-bezier-curve:before { + content: "\f55b"; } + +.fa-bible:before { + content: "\f647"; } + +.fa-bicycle:before { + content: "\f206"; } + +.fa-bimobject:before { + content: "\f378"; } + +.fa-binoculars:before { + content: "\f1e5"; } + +.fa-birthday-cake:before { + content: "\f1fd"; } + +.fa-bitbucket:before { + content: "\f171"; } + +.fa-bitcoin:before { + content: "\f379"; } + +.fa-bity:before { + content: "\f37a"; } + +.fa-black-tie:before { + content: "\f27e"; } + +.fa-blackberry:before { + content: "\f37b"; } + +.fa-blender:before { + content: "\f517"; } + +.fa-blind:before { + content: "\f29d"; } + +.fa-blogger:before { + content: "\f37c"; } + +.fa-blogger-b:before { + content: "\f37d"; } + +.fa-bluetooth:before { + content: "\f293"; } + +.fa-bluetooth-b:before { + content: "\f294"; } + +.fa-bold:before { + content: "\f032"; } + +.fa-bolt:before { + content: "\f0e7"; } + +.fa-bomb:before { + content: "\f1e2"; } + +.fa-bone:before { + content: "\f5d7"; } + +.fa-bong:before { + content: "\f55c"; } + +.fa-book:before { + content: "\f02d"; } + +.fa-book-open:before { + content: "\f518"; } + +.fa-book-reader:before { + content: "\f5da"; } + +.fa-bookmark:before { + content: "\f02e"; } + +.fa-bowling-ball:before { + content: "\f436"; } + +.fa-box:before { + content: "\f466"; } + +.fa-box-open:before { + content: "\f49e"; } + +.fa-boxes:before { + content: "\f468"; } + +.fa-braille:before { + content: "\f2a1"; } + +.fa-brain:before { + content: "\f5dc"; } + +.fa-briefcase:before { + content: "\f0b1"; } + +.fa-briefcase-medical:before { + content: "\f469"; } + +.fa-broadcast-tower:before { + content: "\f519"; } + +.fa-broom:before { + content: "\f51a"; } + +.fa-brush:before { + content: "\f55d"; } + +.fa-btc:before { + content: "\f15a"; } + +.fa-bug:before { + content: "\f188"; } + +.fa-building:before { + content: "\f1ad"; } + +.fa-bullhorn:before { + content: "\f0a1"; } + +.fa-bullseye:before { + content: "\f140"; } + +.fa-burn:before { + content: "\f46a"; } + +.fa-buromobelexperte:before { + content: "\f37f"; } + +.fa-bus:before { + content: "\f207"; } + +.fa-bus-alt:before { + content: "\f55e"; } + +.fa-business-time:before { + content: "\f64a"; } + +.fa-buysellads:before { + content: "\f20d"; } + +.fa-calculator:before { + content: "\f1ec"; } + +.fa-calendar:before { + content: "\f133"; } + +.fa-calendar-alt:before { + content: "\f073"; } + +.fa-calendar-check:before { + content: "\f274"; } + +.fa-calendar-minus:before { + content: "\f272"; } + +.fa-calendar-plus:before { + content: "\f271"; } + +.fa-calendar-times:before { + content: "\f273"; } + +.fa-camera:before { + content: "\f030"; } + +.fa-camera-retro:before { + content: "\f083"; } + +.fa-cannabis:before { + content: "\f55f"; } + +.fa-capsules:before { + content: "\f46b"; } + +.fa-car:before { + content: "\f1b9"; } + +.fa-car-alt:before { + content: "\f5de"; } + +.fa-car-battery:before { + content: "\f5df"; } + +.fa-car-crash:before { + content: "\f5e1"; } + +.fa-car-side:before { + content: "\f5e4"; } + +.fa-caret-down:before { + content: "\f0d7"; } + +.fa-caret-left:before { + content: "\f0d9"; } + +.fa-caret-right:before { + content: "\f0da"; } + +.fa-caret-square-down:before { + content: "\f150"; } + +.fa-caret-square-left:before { + content: "\f191"; } + +.fa-caret-square-right:before { + content: "\f152"; } + +.fa-caret-square-up:before { + content: "\f151"; } + +.fa-caret-up:before { + content: "\f0d8"; } + +.fa-cart-arrow-down:before { + content: "\f218"; } + +.fa-cart-plus:before { + content: "\f217"; } + +.fa-cc-amazon-pay:before { + content: "\f42d"; } + +.fa-cc-amex:before { + content: "\f1f3"; } + +.fa-cc-apple-pay:before { + content: "\f416"; } + +.fa-cc-diners-club:before { + content: "\f24c"; } + +.fa-cc-discover:before { + content: "\f1f2"; } + +.fa-cc-jcb:before { + content: "\f24b"; } + +.fa-cc-mastercard:before { + content: "\f1f1"; } + +.fa-cc-paypal:before { + content: "\f1f4"; } + +.fa-cc-stripe:before { + content: "\f1f5"; } + +.fa-cc-visa:before { + content: "\f1f0"; } + +.fa-centercode:before { + content: "\f380"; } + +.fa-certificate:before { + content: "\f0a3"; } + +.fa-chalkboard:before { + content: "\f51b"; } + +.fa-chalkboard-teacher:before { + content: "\f51c"; } + +.fa-charging-station:before { + content: "\f5e7"; } + +.fa-chart-area:before { + content: "\f1fe"; } + +.fa-chart-bar:before { + content: "\f080"; } + +.fa-chart-line:before { + content: "\f201"; } + +.fa-chart-pie:before { + content: "\f200"; } + +.fa-check:before { + content: "\f00c"; } + +.fa-check-circle:before { + content: "\f058"; } + +.fa-check-double:before { + content: "\f560"; } + +.fa-check-square:before { + content: "\f14a"; } + +.fa-chess:before { + content: "\f439"; } + +.fa-chess-bishop:before { + content: "\f43a"; } + +.fa-chess-board:before { + content: "\f43c"; } + +.fa-chess-king:before { + content: "\f43f"; } + +.fa-chess-knight:before { + content: "\f441"; } + +.fa-chess-pawn:before { + content: "\f443"; } + +.fa-chess-queen:before { + content: "\f445"; } + +.fa-chess-rook:before { + content: "\f447"; } + +.fa-chevron-circle-down:before { + content: "\f13a"; } + +.fa-chevron-circle-left:before { + content: "\f137"; } + +.fa-chevron-circle-right:before { + content: "\f138"; } + +.fa-chevron-circle-up:before { + content: "\f139"; } + +.fa-chevron-down:before { + content: "\f078"; } + +.fa-chevron-left:before { + content: "\f053"; } + +.fa-chevron-right:before { + content: "\f054"; } + +.fa-chevron-up:before { + content: "\f077"; } + +.fa-child:before { + content: "\f1ae"; } + +.fa-chrome:before { + content: "\f268"; } + +.fa-church:before { + content: "\f51d"; } + +.fa-circle:before { + content: "\f111"; } + +.fa-circle-notch:before { + content: "\f1ce"; } + +.fa-city:before { + content: "\f64f"; } + +.fa-clipboard:before { + content: "\f328"; } + +.fa-clipboard-check:before { + content: "\f46c"; } + +.fa-clipboard-list:before { + content: "\f46d"; } + +.fa-clock:before { + content: "\f017"; } + +.fa-clone:before { + content: "\f24d"; } + +.fa-closed-captioning:before { + content: "\f20a"; } + +.fa-cloud:before { + content: "\f0c2"; } + +.fa-cloud-download-alt:before { + content: "\f381"; } + +.fa-cloud-upload-alt:before { + content: "\f382"; } + +.fa-cloudscale:before { + content: "\f383"; } + +.fa-cloudsmith:before { + content: "\f384"; } + +.fa-cloudversify:before { + content: "\f385"; } + +.fa-cocktail:before { + content: "\f561"; } + +.fa-code:before { + content: "\f121"; } + +.fa-code-branch:before { + content: "\f126"; } + +.fa-codepen:before { + content: "\f1cb"; } + +.fa-codiepie:before { + content: "\f284"; } + +.fa-coffee:before { + content: "\f0f4"; } + +.fa-cog:before { + content: "\f013"; } + +.fa-cogs:before { + content: "\f085"; } + +.fa-coins:before { + content: "\f51e"; } + +.fa-columns:before { + content: "\f0db"; } + +.fa-comment:before { + content: "\f075"; } + +.fa-comment-alt:before { + content: "\f27a"; } + +.fa-comment-dollar:before { + content: "\f651"; } + +.fa-comment-dots:before { + content: "\f4ad"; } + +.fa-comment-slash:before { + content: "\f4b3"; } + +.fa-comments:before { + content: "\f086"; } + +.fa-comments-dollar:before { + content: "\f653"; } + +.fa-compact-disc:before { + content: "\f51f"; } + +.fa-compass:before { + content: "\f14e"; } + +.fa-compress:before { + content: "\f066"; } + +.fa-concierge-bell:before { + content: "\f562"; } + +.fa-connectdevelop:before { + content: "\f20e"; } + +.fa-contao:before { + content: "\f26d"; } + +.fa-cookie:before { + content: "\f563"; } + +.fa-cookie-bite:before { + content: "\f564"; } + +.fa-copy:before { + content: "\f0c5"; } + +.fa-copyright:before { + content: "\f1f9"; } + +.fa-couch:before { + content: "\f4b8"; } + +.fa-cpanel:before { + content: "\f388"; } + +.fa-creative-commons:before { + content: "\f25e"; } + +.fa-creative-commons-by:before { + content: "\f4e7"; } + +.fa-creative-commons-nc:before { + content: "\f4e8"; } + +.fa-creative-commons-nc-eu:before { + content: "\f4e9"; } + +.fa-creative-commons-nc-jp:before { + content: "\f4ea"; } + +.fa-creative-commons-nd:before { + content: "\f4eb"; } + +.fa-creative-commons-pd:before { + content: "\f4ec"; } + +.fa-creative-commons-pd-alt:before { + content: "\f4ed"; } + +.fa-creative-commons-remix:before { + content: "\f4ee"; } + +.fa-creative-commons-sa:before { + content: "\f4ef"; } + +.fa-creative-commons-sampling:before { + content: "\f4f0"; } + +.fa-creative-commons-sampling-plus:before { + content: "\f4f1"; } + +.fa-creative-commons-share:before { + content: "\f4f2"; } + +.fa-credit-card:before { + content: "\f09d"; } + +.fa-crop:before { + content: "\f125"; } + +.fa-crop-alt:before { + content: "\f565"; } + +.fa-cross:before { + content: "\f654"; } + +.fa-crosshairs:before { + content: "\f05b"; } + +.fa-crow:before { + content: "\f520"; } + +.fa-crown:before { + content: "\f521"; } + +.fa-css3:before { + content: "\f13c"; } + +.fa-css3-alt:before { + content: "\f38b"; } + +.fa-cube:before { + content: "\f1b2"; } + +.fa-cubes:before { + content: "\f1b3"; } + +.fa-cut:before { + content: "\f0c4"; } + +.fa-cuttlefish:before { + content: "\f38c"; } + +.fa-d-and-d:before { + content: "\f38d"; } + +.fa-dashcube:before { + content: "\f210"; } + +.fa-database:before { + content: "\f1c0"; } + +.fa-deaf:before { + content: "\f2a4"; } + +.fa-delicious:before { + content: "\f1a5"; } + +.fa-deploydog:before { + content: "\f38e"; } + +.fa-deskpro:before { + content: "\f38f"; } + +.fa-desktop:before { + content: "\f108"; } + +.fa-deviantart:before { + content: "\f1bd"; } + +.fa-dharmachakra:before { + content: "\f655"; } + +.fa-diagnoses:before { + content: "\f470"; } + +.fa-dice:before { + content: "\f522"; } + +.fa-dice-five:before { + content: "\f523"; } + +.fa-dice-four:before { + content: "\f524"; } + +.fa-dice-one:before { + content: "\f525"; } + +.fa-dice-six:before { + content: "\f526"; } + +.fa-dice-three:before { + content: "\f527"; } + +.fa-dice-two:before { + content: "\f528"; } + +.fa-digg:before { + content: "\f1a6"; } + +.fa-digital-ocean:before { + content: "\f391"; } + +.fa-digital-tachograph:before { + content: "\f566"; } + +.fa-directions:before { + content: "\f5eb"; } + +.fa-discord:before { + content: "\f392"; } + +.fa-discourse:before { + content: "\f393"; } + +.fa-divide:before { + content: "\f529"; } + +.fa-dizzy:before { + content: "\f567"; } + +.fa-dna:before { + content: "\f471"; } + +.fa-dochub:before { + content: "\f394"; } + +.fa-docker:before { + content: "\f395"; } + +.fa-dollar-sign:before { + content: "\f155"; } + +.fa-dolly:before { + content: "\f472"; } + +.fa-dolly-flatbed:before { + content: "\f474"; } + +.fa-donate:before { + content: "\f4b9"; } + +.fa-door-closed:before { + content: "\f52a"; } + +.fa-door-open:before { + content: "\f52b"; } + +.fa-dot-circle:before { + content: "\f192"; } + +.fa-dove:before { + content: "\f4ba"; } + +.fa-download:before { + content: "\f019"; } + +.fa-draft2digital:before { + content: "\f396"; } + +.fa-drafting-compass:before { + content: "\f568"; } + +.fa-draw-polygon:before { + content: "\f5ee"; } + +.fa-dribbble:before { + content: "\f17d"; } + +.fa-dribbble-square:before { + content: "\f397"; } + +.fa-dropbox:before { + content: "\f16b"; } + +.fa-drum:before { + content: "\f569"; } + +.fa-drum-steelpan:before { + content: "\f56a"; } + +.fa-drupal:before { + content: "\f1a9"; } + +.fa-dumbbell:before { + content: "\f44b"; } + +.fa-dyalog:before { + content: "\f399"; } + +.fa-earlybirds:before { + content: "\f39a"; } + +.fa-ebay:before { + content: "\f4f4"; } + +.fa-edge:before { + content: "\f282"; } + +.fa-edit:before { + content: "\f044"; } + +.fa-eject:before { + content: "\f052"; } + +.fa-elementor:before { + content: "\f430"; } + +.fa-ellipsis-h:before { + content: "\f141"; } + +.fa-ellipsis-v:before { + content: "\f142"; } + +.fa-ello:before { + content: "\f5f1"; } + +.fa-ember:before { + content: "\f423"; } + +.fa-empire:before { + content: "\f1d1"; } + +.fa-envelope:before { + content: "\f0e0"; } + +.fa-envelope-open:before { + content: "\f2b6"; } + +.fa-envelope-open-text:before { + content: "\f658"; } + +.fa-envelope-square:before { + content: "\f199"; } + +.fa-envira:before { + content: "\f299"; } + +.fa-equals:before { + content: "\f52c"; } + +.fa-eraser:before { + content: "\f12d"; } + +.fa-erlang:before { + content: "\f39d"; } + +.fa-ethereum:before { + content: "\f42e"; } + +.fa-etsy:before { + content: "\f2d7"; } + +.fa-euro-sign:before { + content: "\f153"; } + +.fa-exchange-alt:before { + content: "\f362"; } + +.fa-exclamation:before { + content: "\f12a"; } + +.fa-exclamation-circle:before { + content: "\f06a"; } + +.fa-exclamation-triangle:before { + content: "\f071"; } + +.fa-expand:before { + content: "\f065"; } + +.fa-expand-arrows-alt:before { + content: "\f31e"; } + +.fa-expeditedssl:before { + content: "\f23e"; } + +.fa-external-link-alt:before { + content: "\f35d"; } + +.fa-external-link-square-alt:before { + content: "\f360"; } + +.fa-eye:before { + content: "\f06e"; } + +.fa-eye-dropper:before { + content: "\f1fb"; } + +.fa-eye-slash:before { + content: "\f070"; } + +.fa-facebook:before { + content: "\f09a"; } + +.fa-facebook-f:before { + content: "\f39e"; } + +.fa-facebook-messenger:before { + content: "\f39f"; } + +.fa-facebook-square:before { + content: "\f082"; } + +.fa-fast-backward:before { + content: "\f049"; } + +.fa-fast-forward:before { + content: "\f050"; } + +.fa-fax:before { + content: "\f1ac"; } + +.fa-feather:before { + content: "\f52d"; } + +.fa-feather-alt:before { + content: "\f56b"; } + +.fa-female:before { + content: "\f182"; } + +.fa-fighter-jet:before { + content: "\f0fb"; } + +.fa-file:before { + content: "\f15b"; } + +.fa-file-alt:before { + content: "\f15c"; } + +.fa-file-archive:before { + content: "\f1c6"; } + +.fa-file-audio:before { + content: "\f1c7"; } + +.fa-file-code:before { + content: "\f1c9"; } + +.fa-file-contract:before { + content: "\f56c"; } + +.fa-file-download:before { + content: "\f56d"; } + +.fa-file-excel:before { + content: "\f1c3"; } + +.fa-file-export:before { + content: "\f56e"; } + +.fa-file-image:before { + content: "\f1c5"; } + +.fa-file-import:before { + content: "\f56f"; } + +.fa-file-invoice:before { + content: "\f570"; } + +.fa-file-invoice-dollar:before { + content: "\f571"; } + +.fa-file-medical:before { + content: "\f477"; } + +.fa-file-medical-alt:before { + content: "\f478"; } + +.fa-file-pdf:before { + content: "\f1c1"; } + +.fa-file-powerpoint:before { + content: "\f1c4"; } + +.fa-file-prescription:before { + content: "\f572"; } + +.fa-file-signature:before { + content: "\f573"; } + +.fa-file-upload:before { + content: "\f574"; } + +.fa-file-video:before { + content: "\f1c8"; } + +.fa-file-word:before { + content: "\f1c2"; } + +.fa-fill:before { + content: "\f575"; } + +.fa-fill-drip:before { + content: "\f576"; } + +.fa-film:before { + content: "\f008"; } + +.fa-filter:before { + content: "\f0b0"; } + +.fa-fingerprint:before { + content: "\f577"; } + +.fa-fire:before { + content: "\f06d"; } + +.fa-fire-extinguisher:before { + content: "\f134"; } + +.fa-firefox:before { + content: "\f269"; } + +.fa-first-aid:before { + content: "\f479"; } + +.fa-first-order:before { + content: "\f2b0"; } + +.fa-first-order-alt:before { + content: "\f50a"; } + +.fa-firstdraft:before { + content: "\f3a1"; } + +.fa-fish:before { + content: "\f578"; } + +.fa-flag:before { + content: "\f024"; } + +.fa-flag-checkered:before { + content: "\f11e"; } + +.fa-flask:before { + content: "\f0c3"; } + +.fa-flickr:before { + content: "\f16e"; } + +.fa-flipboard:before { + content: "\f44d"; } + +.fa-flushed:before { + content: "\f579"; } + +.fa-fly:before { + content: "\f417"; } + +.fa-folder:before { + content: "\f07b"; } + +.fa-folder-minus:before { + content: "\f65d"; } + +.fa-folder-open:before { + content: "\f07c"; } + +.fa-folder-plus:before { + content: "\f65e"; } + +.fa-font:before { + content: "\f031"; } + +.fa-font-awesome:before { + content: "\f2b4"; } + +.fa-font-awesome-alt:before { + content: "\f35c"; } + +.fa-font-awesome-flag:before { + content: "\f425"; } + +.fa-font-awesome-logo-full:before { + content: "\f4e6"; } + +.fa-fonticons:before { + content: "\f280"; } + +.fa-fonticons-fi:before { + content: "\f3a2"; } + +.fa-football-ball:before { + content: "\f44e"; } + +.fa-fort-awesome:before { + content: "\f286"; } + +.fa-fort-awesome-alt:before { + content: "\f3a3"; } + +.fa-forumbee:before { + content: "\f211"; } + +.fa-forward:before { + content: "\f04e"; } + +.fa-foursquare:before { + content: "\f180"; } + +.fa-free-code-camp:before { + content: "\f2c5"; } + +.fa-freebsd:before { + content: "\f3a4"; } + +.fa-frog:before { + content: "\f52e"; } + +.fa-frown:before { + content: "\f119"; } + +.fa-frown-open:before { + content: "\f57a"; } + +.fa-fulcrum:before { + content: "\f50b"; } + +.fa-funnel-dollar:before { + content: "\f662"; } + +.fa-futbol:before { + content: "\f1e3"; } + +.fa-galactic-republic:before { + content: "\f50c"; } + +.fa-galactic-senate:before { + content: "\f50d"; } + +.fa-gamepad:before { + content: "\f11b"; } + +.fa-gas-pump:before { + content: "\f52f"; } + +.fa-gavel:before { + content: "\f0e3"; } + +.fa-gem:before { + content: "\f3a5"; } + +.fa-genderless:before { + content: "\f22d"; } + +.fa-get-pocket:before { + content: "\f265"; } + +.fa-gg:before { + content: "\f260"; } + +.fa-gg-circle:before { + content: "\f261"; } + +.fa-gift:before { + content: "\f06b"; } + +.fa-git:before { + content: "\f1d3"; } + +.fa-git-square:before { + content: "\f1d2"; } + +.fa-github:before { + content: "\f09b"; } + +.fa-github-alt:before { + content: "\f113"; } + +.fa-github-square:before { + content: "\f092"; } + +.fa-gitkraken:before { + content: "\f3a6"; } + +.fa-gitlab:before { + content: "\f296"; } + +.fa-gitter:before { + content: "\f426"; } + +.fa-glass-martini:before { + content: "\f000"; } + +.fa-glass-martini-alt:before { + content: "\f57b"; } + +.fa-glasses:before { + content: "\f530"; } + +.fa-glide:before { + content: "\f2a5"; } + +.fa-glide-g:before { + content: "\f2a6"; } + +.fa-globe:before { + content: "\f0ac"; } + +.fa-globe-africa:before { + content: "\f57c"; } + +.fa-globe-americas:before { + content: "\f57d"; } + +.fa-globe-asia:before { + content: "\f57e"; } + +.fa-gofore:before { + content: "\f3a7"; } + +.fa-golf-ball:before { + content: "\f450"; } + +.fa-goodreads:before { + content: "\f3a8"; } + +.fa-goodreads-g:before { + content: "\f3a9"; } + +.fa-google:before { + content: "\f1a0"; } + +.fa-google-drive:before { + content: "\f3aa"; } + +.fa-google-play:before { + content: "\f3ab"; } + +.fa-google-plus:before { + content: "\f2b3"; } + +.fa-google-plus-g:before { + content: "\f0d5"; } + +.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa-google-wallet:before { + content: "\f1ee"; } + +.fa-gopuram:before { + content: "\f664"; } + +.fa-graduation-cap:before { + content: "\f19d"; } + +.fa-gratipay:before { + content: "\f184"; } + +.fa-grav:before { + content: "\f2d6"; } + +.fa-greater-than:before { + content: "\f531"; } + +.fa-greater-than-equal:before { + content: "\f532"; } + +.fa-grimace:before { + content: "\f57f"; } + +.fa-grin:before { + content: "\f580"; } + +.fa-grin-alt:before { + content: "\f581"; } + +.fa-grin-beam:before { + content: "\f582"; } + +.fa-grin-beam-sweat:before { + content: "\f583"; } + +.fa-grin-hearts:before { + content: "\f584"; } + +.fa-grin-squint:before { + content: "\f585"; } + +.fa-grin-squint-tears:before { + content: "\f586"; } + +.fa-grin-stars:before { + content: "\f587"; } + +.fa-grin-tears:before { + content: "\f588"; } + +.fa-grin-tongue:before { + content: "\f589"; } + +.fa-grin-tongue-squint:before { + content: "\f58a"; } + +.fa-grin-tongue-wink:before { + content: "\f58b"; } + +.fa-grin-wink:before { + content: "\f58c"; } + +.fa-grip-horizontal:before { + content: "\f58d"; } + +.fa-grip-vertical:before { + content: "\f58e"; } + +.fa-gripfire:before { + content: "\f3ac"; } + +.fa-grunt:before { + content: "\f3ad"; } + +.fa-gulp:before { + content: "\f3ae"; } + +.fa-h-square:before { + content: "\f0fd"; } + +.fa-hacker-news:before { + content: "\f1d4"; } + +.fa-hacker-news-square:before { + content: "\f3af"; } + +.fa-hackerrank:before { + content: "\f5f7"; } + +.fa-hamsa:before { + content: "\f665"; } + +.fa-hand-holding:before { + content: "\f4bd"; } + +.fa-hand-holding-heart:before { + content: "\f4be"; } + +.fa-hand-holding-usd:before { + content: "\f4c0"; } + +.fa-hand-lizard:before { + content: "\f258"; } + +.fa-hand-paper:before { + content: "\f256"; } + +.fa-hand-peace:before { + content: "\f25b"; } + +.fa-hand-point-down:before { + content: "\f0a7"; } + +.fa-hand-point-left:before { + content: "\f0a5"; } + +.fa-hand-point-right:before { + content: "\f0a4"; } + +.fa-hand-point-up:before { + content: "\f0a6"; } + +.fa-hand-pointer:before { + content: "\f25a"; } + +.fa-hand-rock:before { + content: "\f255"; } + +.fa-hand-scissors:before { + content: "\f257"; } + +.fa-hand-spock:before { + content: "\f259"; } + +.fa-hands:before { + content: "\f4c2"; } + +.fa-hands-helping:before { + content: "\f4c4"; } + +.fa-handshake:before { + content: "\f2b5"; } + +.fa-hashtag:before { + content: "\f292"; } + +.fa-haykal:before { + content: "\f666"; } + +.fa-hdd:before { + content: "\f0a0"; } + +.fa-heading:before { + content: "\f1dc"; } + +.fa-headphones:before { + content: "\f025"; } + +.fa-headphones-alt:before { + content: "\f58f"; } + +.fa-headset:before { + content: "\f590"; } + +.fa-heart:before { + content: "\f004"; } + +.fa-heartbeat:before { + content: "\f21e"; } + +.fa-helicopter:before { + content: "\f533"; } + +.fa-highlighter:before { + content: "\f591"; } + +.fa-hips:before { + content: "\f452"; } + +.fa-hire-a-helper:before { + content: "\f3b0"; } + +.fa-history:before { + content: "\f1da"; } + +.fa-hockey-puck:before { + content: "\f453"; } + +.fa-home:before { + content: "\f015"; } + +.fa-hooli:before { + content: "\f427"; } + +.fa-hornbill:before { + content: "\f592"; } + +.fa-hospital:before { + content: "\f0f8"; } + +.fa-hospital-alt:before { + content: "\f47d"; } + +.fa-hospital-symbol:before { + content: "\f47e"; } + +.fa-hot-tub:before { + content: "\f593"; } + +.fa-hotel:before { + content: "\f594"; } + +.fa-hotjar:before { + content: "\f3b1"; } + +.fa-hourglass:before { + content: "\f254"; } + +.fa-hourglass-end:before { + content: "\f253"; } + +.fa-hourglass-half:before { + content: "\f252"; } + +.fa-hourglass-start:before { + content: "\f251"; } + +.fa-houzz:before { + content: "\f27c"; } + +.fa-html5:before { + content: "\f13b"; } + +.fa-hubspot:before { + content: "\f3b2"; } + +.fa-i-cursor:before { + content: "\f246"; } + +.fa-id-badge:before { + content: "\f2c1"; } + +.fa-id-card:before { + content: "\f2c2"; } + +.fa-id-card-alt:before { + content: "\f47f"; } + +.fa-image:before { + content: "\f03e"; } + +.fa-images:before { + content: "\f302"; } + +.fa-imdb:before { + content: "\f2d8"; } + +.fa-inbox:before { + content: "\f01c"; } + +.fa-indent:before { + content: "\f03c"; } + +.fa-industry:before { + content: "\f275"; } + +.fa-infinity:before { + content: "\f534"; } + +.fa-info:before { + content: "\f129"; } + +.fa-info-circle:before { + content: "\f05a"; } + +.fa-instagram:before { + content: "\f16d"; } + +.fa-internet-explorer:before { + content: "\f26b"; } + +.fa-ioxhost:before { + content: "\f208"; } + +.fa-italic:before { + content: "\f033"; } + +.fa-itunes:before { + content: "\f3b4"; } + +.fa-itunes-note:before { + content: "\f3b5"; } + +.fa-java:before { + content: "\f4e4"; } + +.fa-jedi:before { + content: "\f669"; } + +.fa-jedi-order:before { + content: "\f50e"; } + +.fa-jenkins:before { + content: "\f3b6"; } + +.fa-joget:before { + content: "\f3b7"; } + +.fa-joint:before { + content: "\f595"; } + +.fa-joomla:before { + content: "\f1aa"; } + +.fa-journal-whills:before { + content: "\f66a"; } + +.fa-js:before { + content: "\f3b8"; } + +.fa-js-square:before { + content: "\f3b9"; } + +.fa-jsfiddle:before { + content: "\f1cc"; } + +.fa-kaaba:before { + content: "\f66b"; } + +.fa-kaggle:before { + content: "\f5fa"; } + +.fa-key:before { + content: "\f084"; } + +.fa-keybase:before { + content: "\f4f5"; } + +.fa-keyboard:before { + content: "\f11c"; } + +.fa-keycdn:before { + content: "\f3ba"; } + +.fa-khanda:before { + content: "\f66d"; } + +.fa-kickstarter:before { + content: "\f3bb"; } + +.fa-kickstarter-k:before { + content: "\f3bc"; } + +.fa-kiss:before { + content: "\f596"; } + +.fa-kiss-beam:before { + content: "\f597"; } + +.fa-kiss-wink-heart:before { + content: "\f598"; } + +.fa-kiwi-bird:before { + content: "\f535"; } + +.fa-korvue:before { + content: "\f42f"; } + +.fa-landmark:before { + content: "\f66f"; } + +.fa-language:before { + content: "\f1ab"; } + +.fa-laptop:before { + content: "\f109"; } + +.fa-laptop-code:before { + content: "\f5fc"; } + +.fa-laravel:before { + content: "\f3bd"; } + +.fa-lastfm:before { + content: "\f202"; } + +.fa-lastfm-square:before { + content: "\f203"; } + +.fa-laugh:before { + content: "\f599"; } + +.fa-laugh-beam:before { + content: "\f59a"; } + +.fa-laugh-squint:before { + content: "\f59b"; } + +.fa-laugh-wink:before { + content: "\f59c"; } + +.fa-layer-group:before { + content: "\f5fd"; } + +.fa-leaf:before { + content: "\f06c"; } + +.fa-leanpub:before { + content: "\f212"; } + +.fa-lemon:before { + content: "\f094"; } + +.fa-less:before { + content: "\f41d"; } + +.fa-less-than:before { + content: "\f536"; } + +.fa-less-than-equal:before { + content: "\f537"; } + +.fa-level-down-alt:before { + content: "\f3be"; } + +.fa-level-up-alt:before { + content: "\f3bf"; } + +.fa-life-ring:before { + content: "\f1cd"; } + +.fa-lightbulb:before { + content: "\f0eb"; } + +.fa-line:before { + content: "\f3c0"; } + +.fa-link:before { + content: "\f0c1"; } + +.fa-linkedin:before { + content: "\f08c"; } + +.fa-linkedin-in:before { + content: "\f0e1"; } + +.fa-linode:before { + content: "\f2b8"; } + +.fa-linux:before { + content: "\f17c"; } + +.fa-lira-sign:before { + content: "\f195"; } + +.fa-list:before { + content: "\f03a"; } + +.fa-list-alt:before { + content: "\f022"; } + +.fa-list-ol:before { + content: "\f0cb"; } + +.fa-list-ul:before { + content: "\f0ca"; } + +.fa-location-arrow:before { + content: "\f124"; } + +.fa-lock:before { + content: "\f023"; } + +.fa-lock-open:before { + content: "\f3c1"; } + +.fa-long-arrow-alt-down:before { + content: "\f309"; } + +.fa-long-arrow-alt-left:before { + content: "\f30a"; } + +.fa-long-arrow-alt-right:before { + content: "\f30b"; } + +.fa-long-arrow-alt-up:before { + content: "\f30c"; } + +.fa-low-vision:before { + content: "\f2a8"; } + +.fa-luggage-cart:before { + content: "\f59d"; } + +.fa-lyft:before { + content: "\f3c3"; } + +.fa-magento:before { + content: "\f3c4"; } + +.fa-magic:before { + content: "\f0d0"; } + +.fa-magnet:before { + content: "\f076"; } + +.fa-mail-bulk:before { + content: "\f674"; } + +.fa-mailchimp:before { + content: "\f59e"; } + +.fa-male:before { + content: "\f183"; } + +.fa-mandalorian:before { + content: "\f50f"; } + +.fa-map:before { + content: "\f279"; } + +.fa-map-marked:before { + content: "\f59f"; } + +.fa-map-marked-alt:before { + content: "\f5a0"; } + +.fa-map-marker:before { + content: "\f041"; } + +.fa-map-marker-alt:before { + content: "\f3c5"; } + +.fa-map-pin:before { + content: "\f276"; } + +.fa-map-signs:before { + content: "\f277"; } + +.fa-markdown:before { + content: "\f60f"; } + +.fa-marker:before { + content: "\f5a1"; } + +.fa-mars:before { + content: "\f222"; } + +.fa-mars-double:before { + content: "\f227"; } + +.fa-mars-stroke:before { + content: "\f229"; } + +.fa-mars-stroke-h:before { + content: "\f22b"; } + +.fa-mars-stroke-v:before { + content: "\f22a"; } + +.fa-mastodon:before { + content: "\f4f6"; } + +.fa-maxcdn:before { + content: "\f136"; } + +.fa-medal:before { + content: "\f5a2"; } + +.fa-medapps:before { + content: "\f3c6"; } + +.fa-medium:before { + content: "\f23a"; } + +.fa-medium-m:before { + content: "\f3c7"; } + +.fa-medkit:before { + content: "\f0fa"; } + +.fa-medrt:before { + content: "\f3c8"; } + +.fa-meetup:before { + content: "\f2e0"; } + +.fa-megaport:before { + content: "\f5a3"; } + +.fa-meh:before { + content: "\f11a"; } + +.fa-meh-blank:before { + content: "\f5a4"; } + +.fa-meh-rolling-eyes:before { + content: "\f5a5"; } + +.fa-memory:before { + content: "\f538"; } + +.fa-menorah:before { + content: "\f676"; } + +.fa-mercury:before { + content: "\f223"; } + +.fa-microchip:before { + content: "\f2db"; } + +.fa-microphone:before { + content: "\f130"; } + +.fa-microphone-alt:before { + content: "\f3c9"; } + +.fa-microphone-alt-slash:before { + content: "\f539"; } + +.fa-microphone-slash:before { + content: "\f131"; } + +.fa-microscope:before { + content: "\f610"; } + +.fa-microsoft:before { + content: "\f3ca"; } + +.fa-minus:before { + content: "\f068"; } + +.fa-minus-circle:before { + content: "\f056"; } + +.fa-minus-square:before { + content: "\f146"; } + +.fa-mix:before { + content: "\f3cb"; } + +.fa-mixcloud:before { + content: "\f289"; } + +.fa-mizuni:before { + content: "\f3cc"; } + +.fa-mobile:before { + content: "\f10b"; } + +.fa-mobile-alt:before { + content: "\f3cd"; } + +.fa-modx:before { + content: "\f285"; } + +.fa-monero:before { + content: "\f3d0"; } + +.fa-money-bill:before { + content: "\f0d6"; } + +.fa-money-bill-alt:before { + content: "\f3d1"; } + +.fa-money-bill-wave:before { + content: "\f53a"; } + +.fa-money-bill-wave-alt:before { + content: "\f53b"; } + +.fa-money-check:before { + content: "\f53c"; } + +.fa-money-check-alt:before { + content: "\f53d"; } + +.fa-monument:before { + content: "\f5a6"; } + +.fa-moon:before { + content: "\f186"; } + +.fa-mortar-pestle:before { + content: "\f5a7"; } + +.fa-mosque:before { + content: "\f678"; } + +.fa-motorcycle:before { + content: "\f21c"; } + +.fa-mouse-pointer:before { + content: "\f245"; } + +.fa-music:before { + content: "\f001"; } + +.fa-napster:before { + content: "\f3d2"; } + +.fa-neos:before { + content: "\f612"; } + +.fa-neuter:before { + content: "\f22c"; } + +.fa-newspaper:before { + content: "\f1ea"; } + +.fa-nimblr:before { + content: "\f5a8"; } + +.fa-nintendo-switch:before { + content: "\f418"; } + +.fa-node:before { + content: "\f419"; } + +.fa-node-js:before { + content: "\f3d3"; } + +.fa-not-equal:before { + content: "\f53e"; } + +.fa-notes-medical:before { + content: "\f481"; } + +.fa-npm:before { + content: "\f3d4"; } + +.fa-ns8:before { + content: "\f3d5"; } + +.fa-nutritionix:before { + content: "\f3d6"; } + +.fa-object-group:before { + content: "\f247"; } + +.fa-object-ungroup:before { + content: "\f248"; } + +.fa-odnoklassniki:before { + content: "\f263"; } + +.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa-oil-can:before { + content: "\f613"; } + +.fa-old-republic:before { + content: "\f510"; } + +.fa-om:before { + content: "\f679"; } + +.fa-opencart:before { + content: "\f23d"; } + +.fa-openid:before { + content: "\f19b"; } + +.fa-opera:before { + content: "\f26a"; } + +.fa-optin-monster:before { + content: "\f23c"; } + +.fa-osi:before { + content: "\f41a"; } + +.fa-outdent:before { + content: "\f03b"; } + +.fa-page4:before { + content: "\f3d7"; } + +.fa-pagelines:before { + content: "\f18c"; } + +.fa-paint-brush:before { + content: "\f1fc"; } + +.fa-paint-roller:before { + content: "\f5aa"; } + +.fa-palette:before { + content: "\f53f"; } + +.fa-palfed:before { + content: "\f3d8"; } + +.fa-pallet:before { + content: "\f482"; } + +.fa-paper-plane:before { + content: "\f1d8"; } + +.fa-paperclip:before { + content: "\f0c6"; } + +.fa-parachute-box:before { + content: "\f4cd"; } + +.fa-paragraph:before { + content: "\f1dd"; } + +.fa-parking:before { + content: "\f540"; } + +.fa-passport:before { + content: "\f5ab"; } + +.fa-pastafarianism:before { + content: "\f67b"; } + +.fa-paste:before { + content: "\f0ea"; } + +.fa-patreon:before { + content: "\f3d9"; } + +.fa-pause:before { + content: "\f04c"; } + +.fa-pause-circle:before { + content: "\f28b"; } + +.fa-paw:before { + content: "\f1b0"; } + +.fa-paypal:before { + content: "\f1ed"; } + +.fa-peace:before { + content: "\f67c"; } + +.fa-pen:before { + content: "\f304"; } + +.fa-pen-alt:before { + content: "\f305"; } + +.fa-pen-fancy:before { + content: "\f5ac"; } + +.fa-pen-nib:before { + content: "\f5ad"; } + +.fa-pen-square:before { + content: "\f14b"; } + +.fa-pencil-alt:before { + content: "\f303"; } + +.fa-pencil-ruler:before { + content: "\f5ae"; } + +.fa-people-carry:before { + content: "\f4ce"; } + +.fa-percent:before { + content: "\f295"; } + +.fa-percentage:before { + content: "\f541"; } + +.fa-periscope:before { + content: "\f3da"; } + +.fa-phabricator:before { + content: "\f3db"; } + +.fa-phoenix-framework:before { + content: "\f3dc"; } + +.fa-phoenix-squadron:before { + content: "\f511"; } + +.fa-phone:before { + content: "\f095"; } + +.fa-phone-slash:before { + content: "\f3dd"; } + +.fa-phone-square:before { + content: "\f098"; } + +.fa-phone-volume:before { + content: "\f2a0"; } + +.fa-php:before { + content: "\f457"; } + +.fa-pied-piper:before { + content: "\f2ae"; } + +.fa-pied-piper-alt:before { + content: "\f1a8"; } + +.fa-pied-piper-hat:before { + content: "\f4e5"; } + +.fa-pied-piper-pp:before { + content: "\f1a7"; } + +.fa-piggy-bank:before { + content: "\f4d3"; } + +.fa-pills:before { + content: "\f484"; } + +.fa-pinterest:before { + content: "\f0d2"; } + +.fa-pinterest-p:before { + content: "\f231"; } + +.fa-pinterest-square:before { + content: "\f0d3"; } + +.fa-place-of-worship:before { + content: "\f67f"; } + +.fa-plane:before { + content: "\f072"; } + +.fa-plane-arrival:before { + content: "\f5af"; } + +.fa-plane-departure:before { + content: "\f5b0"; } + +.fa-play:before { + content: "\f04b"; } + +.fa-play-circle:before { + content: "\f144"; } + +.fa-playstation:before { + content: "\f3df"; } + +.fa-plug:before { + content: "\f1e6"; } + +.fa-plus:before { + content: "\f067"; } + +.fa-plus-circle:before { + content: "\f055"; } + +.fa-plus-square:before { + content: "\f0fe"; } + +.fa-podcast:before { + content: "\f2ce"; } + +.fa-poll:before { + content: "\f681"; } + +.fa-poll-h:before { + content: "\f682"; } + +.fa-poo:before { + content: "\f2fe"; } + +.fa-poop:before { + content: "\f619"; } + +.fa-portrait:before { + content: "\f3e0"; } + +.fa-pound-sign:before { + content: "\f154"; } + +.fa-power-off:before { + content: "\f011"; } + +.fa-pray:before { + content: "\f683"; } + +.fa-praying-hands:before { + content: "\f684"; } + +.fa-prescription:before { + content: "\f5b1"; } + +.fa-prescription-bottle:before { + content: "\f485"; } + +.fa-prescription-bottle-alt:before { + content: "\f486"; } + +.fa-print:before { + content: "\f02f"; } + +.fa-procedures:before { + content: "\f487"; } + +.fa-product-hunt:before { + content: "\f288"; } + +.fa-project-diagram:before { + content: "\f542"; } + +.fa-pushed:before { + content: "\f3e1"; } + +.fa-puzzle-piece:before { + content: "\f12e"; } + +.fa-python:before { + content: "\f3e2"; } + +.fa-qq:before { + content: "\f1d6"; } + +.fa-qrcode:before { + content: "\f029"; } + +.fa-question:before { + content: "\f128"; } + +.fa-question-circle:before { + content: "\f059"; } + +.fa-quidditch:before { + content: "\f458"; } + +.fa-quinscape:before { + content: "\f459"; } + +.fa-quora:before { + content: "\f2c4"; } + +.fa-quote-left:before { + content: "\f10d"; } + +.fa-quote-right:before { + content: "\f10e"; } + +.fa-quran:before { + content: "\f687"; } + +.fa-r-project:before { + content: "\f4f7"; } + +.fa-random:before { + content: "\f074"; } + +.fa-ravelry:before { + content: "\f2d9"; } + +.fa-react:before { + content: "\f41b"; } + +.fa-readme:before { + content: "\f4d5"; } + +.fa-rebel:before { + content: "\f1d0"; } + +.fa-receipt:before { + content: "\f543"; } + +.fa-recycle:before { + content: "\f1b8"; } + +.fa-red-river:before { + content: "\f3e3"; } + +.fa-reddit:before { + content: "\f1a1"; } + +.fa-reddit-alien:before { + content: "\f281"; } + +.fa-reddit-square:before { + content: "\f1a2"; } + +.fa-redo:before { + content: "\f01e"; } + +.fa-redo-alt:before { + content: "\f2f9"; } + +.fa-registered:before { + content: "\f25d"; } + +.fa-rendact:before { + content: "\f3e4"; } + +.fa-renren:before { + content: "\f18b"; } + +.fa-reply:before { + content: "\f3e5"; } + +.fa-reply-all:before { + content: "\f122"; } + +.fa-replyd:before { + content: "\f3e6"; } + +.fa-researchgate:before { + content: "\f4f8"; } + +.fa-resolving:before { + content: "\f3e7"; } + +.fa-retweet:before { + content: "\f079"; } + +.fa-rev:before { + content: "\f5b2"; } + +.fa-ribbon:before { + content: "\f4d6"; } + +.fa-road:before { + content: "\f018"; } + +.fa-robot:before { + content: "\f544"; } + +.fa-rocket:before { + content: "\f135"; } + +.fa-rocketchat:before { + content: "\f3e8"; } + +.fa-rockrms:before { + content: "\f3e9"; } + +.fa-route:before { + content: "\f4d7"; } + +.fa-rss:before { + content: "\f09e"; } + +.fa-rss-square:before { + content: "\f143"; } + +.fa-ruble-sign:before { + content: "\f158"; } + +.fa-ruler:before { + content: "\f545"; } + +.fa-ruler-combined:before { + content: "\f546"; } + +.fa-ruler-horizontal:before { + content: "\f547"; } + +.fa-ruler-vertical:before { + content: "\f548"; } + +.fa-rupee-sign:before { + content: "\f156"; } + +.fa-sad-cry:before { + content: "\f5b3"; } + +.fa-sad-tear:before { + content: "\f5b4"; } + +.fa-safari:before { + content: "\f267"; } + +.fa-sass:before { + content: "\f41e"; } + +.fa-save:before { + content: "\f0c7"; } + +.fa-schlix:before { + content: "\f3ea"; } + +.fa-school:before { + content: "\f549"; } + +.fa-screwdriver:before { + content: "\f54a"; } + +.fa-scribd:before { + content: "\f28a"; } + +.fa-search:before { + content: "\f002"; } + +.fa-search-dollar:before { + content: "\f688"; } + +.fa-search-location:before { + content: "\f689"; } + +.fa-search-minus:before { + content: "\f010"; } + +.fa-search-plus:before { + content: "\f00e"; } + +.fa-searchengin:before { + content: "\f3eb"; } + +.fa-seedling:before { + content: "\f4d8"; } + +.fa-sellcast:before { + content: "\f2da"; } + +.fa-sellsy:before { + content: "\f213"; } + +.fa-server:before { + content: "\f233"; } + +.fa-servicestack:before { + content: "\f3ec"; } + +.fa-shapes:before { + content: "\f61f"; } + +.fa-share:before { + content: "\f064"; } + +.fa-share-alt:before { + content: "\f1e0"; } + +.fa-share-alt-square:before { + content: "\f1e1"; } + +.fa-share-square:before { + content: "\f14d"; } + +.fa-shekel-sign:before { + content: "\f20b"; } + +.fa-shield-alt:before { + content: "\f3ed"; } + +.fa-ship:before { + content: "\f21a"; } + +.fa-shipping-fast:before { + content: "\f48b"; } + +.fa-shirtsinbulk:before { + content: "\f214"; } + +.fa-shoe-prints:before { + content: "\f54b"; } + +.fa-shopping-bag:before { + content: "\f290"; } + +.fa-shopping-basket:before { + content: "\f291"; } + +.fa-shopping-cart:before { + content: "\f07a"; } + +.fa-shopware:before { + content: "\f5b5"; } + +.fa-shower:before { + content: "\f2cc"; } + +.fa-shuttle-van:before { + content: "\f5b6"; } + +.fa-sign:before { + content: "\f4d9"; } + +.fa-sign-in-alt:before { + content: "\f2f6"; } + +.fa-sign-language:before { + content: "\f2a7"; } + +.fa-sign-out-alt:before { + content: "\f2f5"; } + +.fa-signal:before { + content: "\f012"; } + +.fa-signature:before { + content: "\f5b7"; } + +.fa-simplybuilt:before { + content: "\f215"; } + +.fa-sistrix:before { + content: "\f3ee"; } + +.fa-sitemap:before { + content: "\f0e8"; } + +.fa-sith:before { + content: "\f512"; } + +.fa-skull:before { + content: "\f54c"; } + +.fa-skyatlas:before { + content: "\f216"; } + +.fa-skype:before { + content: "\f17e"; } + +.fa-slack:before { + content: "\f198"; } + +.fa-slack-hash:before { + content: "\f3ef"; } + +.fa-sliders-h:before { + content: "\f1de"; } + +.fa-slideshare:before { + content: "\f1e7"; } + +.fa-smile:before { + content: "\f118"; } + +.fa-smile-beam:before { + content: "\f5b8"; } + +.fa-smile-wink:before { + content: "\f4da"; } + +.fa-smoking:before { + content: "\f48d"; } + +.fa-smoking-ban:before { + content: "\f54d"; } + +.fa-snapchat:before { + content: "\f2ab"; } + +.fa-snapchat-ghost:before { + content: "\f2ac"; } + +.fa-snapchat-square:before { + content: "\f2ad"; } + +.fa-snowflake:before { + content: "\f2dc"; } + +.fa-socks:before { + content: "\f696"; } + +.fa-solar-panel:before { + content: "\f5ba"; } + +.fa-sort:before { + content: "\f0dc"; } + +.fa-sort-alpha-down:before { + content: "\f15d"; } + +.fa-sort-alpha-up:before { + content: "\f15e"; } + +.fa-sort-amount-down:before { + content: "\f160"; } + +.fa-sort-amount-up:before { + content: "\f161"; } + +.fa-sort-down:before { + content: "\f0dd"; } + +.fa-sort-numeric-down:before { + content: "\f162"; } + +.fa-sort-numeric-up:before { + content: "\f163"; } + +.fa-sort-up:before { + content: "\f0de"; } + +.fa-soundcloud:before { + content: "\f1be"; } + +.fa-spa:before { + content: "\f5bb"; } + +.fa-space-shuttle:before { + content: "\f197"; } + +.fa-speakap:before { + content: "\f3f3"; } + +.fa-spinner:before { + content: "\f110"; } + +.fa-splotch:before { + content: "\f5bc"; } + +.fa-spotify:before { + content: "\f1bc"; } + +.fa-spray-can:before { + content: "\f5bd"; } + +.fa-square:before { + content: "\f0c8"; } + +.fa-square-full:before { + content: "\f45c"; } + +.fa-square-root-alt:before { + content: "\f698"; } + +.fa-squarespace:before { + content: "\f5be"; } + +.fa-stack-exchange:before { + content: "\f18d"; } + +.fa-stack-overflow:before { + content: "\f16c"; } + +.fa-stamp:before { + content: "\f5bf"; } + +.fa-star:before { + content: "\f005"; } + +.fa-star-and-crescent:before { + content: "\f699"; } + +.fa-star-half:before { + content: "\f089"; } + +.fa-star-half-alt:before { + content: "\f5c0"; } + +.fa-star-of-david:before { + content: "\f69a"; } + +.fa-star-of-life:before { + content: "\f621"; } + +.fa-staylinked:before { + content: "\f3f5"; } + +.fa-steam:before { + content: "\f1b6"; } + +.fa-steam-square:before { + content: "\f1b7"; } + +.fa-steam-symbol:before { + content: "\f3f6"; } + +.fa-step-backward:before { + content: "\f048"; } + +.fa-step-forward:before { + content: "\f051"; } + +.fa-stethoscope:before { + content: "\f0f1"; } + +.fa-sticker-mule:before { + content: "\f3f7"; } + +.fa-sticky-note:before { + content: "\f249"; } + +.fa-stop:before { + content: "\f04d"; } + +.fa-stop-circle:before { + content: "\f28d"; } + +.fa-stopwatch:before { + content: "\f2f2"; } + +.fa-store:before { + content: "\f54e"; } + +.fa-store-alt:before { + content: "\f54f"; } + +.fa-strava:before { + content: "\f428"; } + +.fa-stream:before { + content: "\f550"; } + +.fa-street-view:before { + content: "\f21d"; } + +.fa-strikethrough:before { + content: "\f0cc"; } + +.fa-stripe:before { + content: "\f429"; } + +.fa-stripe-s:before { + content: "\f42a"; } + +.fa-stroopwafel:before { + content: "\f551"; } + +.fa-studiovinari:before { + content: "\f3f8"; } + +.fa-stumbleupon:before { + content: "\f1a4"; } + +.fa-stumbleupon-circle:before { + content: "\f1a3"; } + +.fa-subscript:before { + content: "\f12c"; } + +.fa-subway:before { + content: "\f239"; } + +.fa-suitcase:before { + content: "\f0f2"; } + +.fa-suitcase-rolling:before { + content: "\f5c1"; } + +.fa-sun:before { + content: "\f185"; } + +.fa-superpowers:before { + content: "\f2dd"; } + +.fa-superscript:before { + content: "\f12b"; } + +.fa-supple:before { + content: "\f3f9"; } + +.fa-surprise:before { + content: "\f5c2"; } + +.fa-swatchbook:before { + content: "\f5c3"; } + +.fa-swimmer:before { + content: "\f5c4"; } + +.fa-swimming-pool:before { + content: "\f5c5"; } + +.fa-synagogue:before { + content: "\f69b"; } + +.fa-sync:before { + content: "\f021"; } + +.fa-sync-alt:before { + content: "\f2f1"; } + +.fa-syringe:before { + content: "\f48e"; } + +.fa-table:before { + content: "\f0ce"; } + +.fa-table-tennis:before { + content: "\f45d"; } + +.fa-tablet:before { + content: "\f10a"; } + +.fa-tablet-alt:before { + content: "\f3fa"; } + +.fa-tablets:before { + content: "\f490"; } + +.fa-tachometer-alt:before { + content: "\f3fd"; } + +.fa-tag:before { + content: "\f02b"; } + +.fa-tags:before { + content: "\f02c"; } + +.fa-tape:before { + content: "\f4db"; } + +.fa-tasks:before { + content: "\f0ae"; } + +.fa-taxi:before { + content: "\f1ba"; } + +.fa-teamspeak:before { + content: "\f4f9"; } + +.fa-teeth:before { + content: "\f62e"; } + +.fa-teeth-open:before { + content: "\f62f"; } + +.fa-telegram:before { + content: "\f2c6"; } + +.fa-telegram-plane:before { + content: "\f3fe"; } + +.fa-tencent-weibo:before { + content: "\f1d5"; } + +.fa-terminal:before { + content: "\f120"; } + +.fa-text-height:before { + content: "\f034"; } + +.fa-text-width:before { + content: "\f035"; } + +.fa-th:before { + content: "\f00a"; } + +.fa-th-large:before { + content: "\f009"; } + +.fa-th-list:before { + content: "\f00b"; } + +.fa-the-red-yeti:before { + content: "\f69d"; } + +.fa-theater-masks:before { + content: "\f630"; } + +.fa-themeco:before { + content: "\f5c6"; } + +.fa-themeisle:before { + content: "\f2b2"; } + +.fa-thermometer:before { + content: "\f491"; } + +.fa-thermometer-empty:before { + content: "\f2cb"; } + +.fa-thermometer-full:before { + content: "\f2c7"; } + +.fa-thermometer-half:before { + content: "\f2c9"; } + +.fa-thermometer-quarter:before { + content: "\f2ca"; } + +.fa-thermometer-three-quarters:before { + content: "\f2c8"; } + +.fa-thumbs-down:before { + content: "\f165"; } + +.fa-thumbs-up:before { + content: "\f164"; } + +.fa-thumbtack:before { + content: "\f08d"; } + +.fa-ticket-alt:before { + content: "\f3ff"; } + +.fa-times:before { + content: "\f00d"; } + +.fa-times-circle:before { + content: "\f057"; } + +.fa-tint:before { + content: "\f043"; } + +.fa-tint-slash:before { + content: "\f5c7"; } + +.fa-tired:before { + content: "\f5c8"; } + +.fa-toggle-off:before { + content: "\f204"; } + +.fa-toggle-on:before { + content: "\f205"; } + +.fa-toolbox:before { + content: "\f552"; } + +.fa-tooth:before { + content: "\f5c9"; } + +.fa-torah:before { + content: "\f6a0"; } + +.fa-torii-gate:before { + content: "\f6a1"; } + +.fa-trade-federation:before { + content: "\f513"; } + +.fa-trademark:before { + content: "\f25c"; } + +.fa-traffic-light:before { + content: "\f637"; } + +.fa-train:before { + content: "\f238"; } + +.fa-transgender:before { + content: "\f224"; } + +.fa-transgender-alt:before { + content: "\f225"; } + +.fa-trash:before { + content: "\f1f8"; } + +.fa-trash-alt:before { + content: "\f2ed"; } + +.fa-tree:before { + content: "\f1bb"; } + +.fa-trello:before { + content: "\f181"; } + +.fa-tripadvisor:before { + content: "\f262"; } + +.fa-trophy:before { + content: "\f091"; } + +.fa-truck:before { + content: "\f0d1"; } + +.fa-truck-loading:before { + content: "\f4de"; } + +.fa-truck-monster:before { + content: "\f63b"; } + +.fa-truck-moving:before { + content: "\f4df"; } + +.fa-truck-pickup:before { + content: "\f63c"; } + +.fa-tshirt:before { + content: "\f553"; } + +.fa-tty:before { + content: "\f1e4"; } + +.fa-tumblr:before { + content: "\f173"; } + +.fa-tumblr-square:before { + content: "\f174"; } + +.fa-tv:before { + content: "\f26c"; } + +.fa-twitch:before { + content: "\f1e8"; } + +.fa-twitter:before { + content: "\f099"; } + +.fa-twitter-square:before { + content: "\f081"; } + +.fa-typo3:before { + content: "\f42b"; } + +.fa-uber:before { + content: "\f402"; } + +.fa-uikit:before { + content: "\f403"; } + +.fa-umbrella:before { + content: "\f0e9"; } + +.fa-umbrella-beach:before { + content: "\f5ca"; } + +.fa-underline:before { + content: "\f0cd"; } + +.fa-undo:before { + content: "\f0e2"; } + +.fa-undo-alt:before { + content: "\f2ea"; } + +.fa-uniregistry:before { + content: "\f404"; } + +.fa-universal-access:before { + content: "\f29a"; } + +.fa-university:before { + content: "\f19c"; } + +.fa-unlink:before { + content: "\f127"; } + +.fa-unlock:before { + content: "\f09c"; } + +.fa-unlock-alt:before { + content: "\f13e"; } + +.fa-untappd:before { + content: "\f405"; } + +.fa-upload:before { + content: "\f093"; } + +.fa-usb:before { + content: "\f287"; } + +.fa-user:before { + content: "\f007"; } + +.fa-user-alt:before { + content: "\f406"; } + +.fa-user-alt-slash:before { + content: "\f4fa"; } + +.fa-user-astronaut:before { + content: "\f4fb"; } + +.fa-user-check:before { + content: "\f4fc"; } + +.fa-user-circle:before { + content: "\f2bd"; } + +.fa-user-clock:before { + content: "\f4fd"; } + +.fa-user-cog:before { + content: "\f4fe"; } + +.fa-user-edit:before { + content: "\f4ff"; } + +.fa-user-friends:before { + content: "\f500"; } + +.fa-user-graduate:before { + content: "\f501"; } + +.fa-user-lock:before { + content: "\f502"; } + +.fa-user-md:before { + content: "\f0f0"; } + +.fa-user-minus:before { + content: "\f503"; } + +.fa-user-ninja:before { + content: "\f504"; } + +.fa-user-plus:before { + content: "\f234"; } + +.fa-user-secret:before { + content: "\f21b"; } + +.fa-user-shield:before { + content: "\f505"; } + +.fa-user-slash:before { + content: "\f506"; } + +.fa-user-tag:before { + content: "\f507"; } + +.fa-user-tie:before { + content: "\f508"; } + +.fa-user-times:before { + content: "\f235"; } + +.fa-users:before { + content: "\f0c0"; } + +.fa-users-cog:before { + content: "\f509"; } + +.fa-ussunnah:before { + content: "\f407"; } + +.fa-utensil-spoon:before { + content: "\f2e5"; } + +.fa-utensils:before { + content: "\f2e7"; } + +.fa-vaadin:before { + content: "\f408"; } + +.fa-vector-square:before { + content: "\f5cb"; } + +.fa-venus:before { + content: "\f221"; } + +.fa-venus-double:before { + content: "\f226"; } + +.fa-venus-mars:before { + content: "\f228"; } + +.fa-viacoin:before { + content: "\f237"; } + +.fa-viadeo:before { + content: "\f2a9"; } + +.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa-vial:before { + content: "\f492"; } + +.fa-vials:before { + content: "\f493"; } + +.fa-viber:before { + content: "\f409"; } + +.fa-video:before { + content: "\f03d"; } + +.fa-video-slash:before { + content: "\f4e2"; } + +.fa-vihara:before { + content: "\f6a7"; } + +.fa-vimeo:before { + content: "\f40a"; } + +.fa-vimeo-square:before { + content: "\f194"; } + +.fa-vimeo-v:before { + content: "\f27d"; } + +.fa-vine:before { + content: "\f1ca"; } + +.fa-vk:before { + content: "\f189"; } + +.fa-vnv:before { + content: "\f40b"; } + +.fa-volleyball-ball:before { + content: "\f45f"; } + +.fa-volume-down:before { + content: "\f027"; } + +.fa-volume-off:before { + content: "\f026"; } + +.fa-volume-up:before { + content: "\f028"; } + +.fa-vuejs:before { + content: "\f41f"; } + +.fa-walking:before { + content: "\f554"; } + +.fa-wallet:before { + content: "\f555"; } + +.fa-warehouse:before { + content: "\f494"; } + +.fa-weebly:before { + content: "\f5cc"; } + +.fa-weibo:before { + content: "\f18a"; } + +.fa-weight:before { + content: "\f496"; } + +.fa-weight-hanging:before { + content: "\f5cd"; } + +.fa-weixin:before { + content: "\f1d7"; } + +.fa-whatsapp:before { + content: "\f232"; } + +.fa-whatsapp-square:before { + content: "\f40c"; } + +.fa-wheelchair:before { + content: "\f193"; } + +.fa-whmcs:before { + content: "\f40d"; } + +.fa-wifi:before { + content: "\f1eb"; } + +.fa-wikipedia-w:before { + content: "\f266"; } + +.fa-window-close:before { + content: "\f410"; } + +.fa-window-maximize:before { + content: "\f2d0"; } + +.fa-window-minimize:before { + content: "\f2d1"; } + +.fa-window-restore:before { + content: "\f2d2"; } + +.fa-windows:before { + content: "\f17a"; } + +.fa-wine-glass:before { + content: "\f4e3"; } + +.fa-wine-glass-alt:before { + content: "\f5ce"; } + +.fa-wix:before { + content: "\f5cf"; } + +.fa-wolf-pack-battalion:before { + content: "\f514"; } + +.fa-won-sign:before { + content: "\f159"; } + +.fa-wordpress:before { + content: "\f19a"; } + +.fa-wordpress-simple:before { + content: "\f411"; } + +.fa-wpbeginner:before { + content: "\f297"; } + +.fa-wpexplorer:before { + content: "\f2de"; } + +.fa-wpforms:before { + content: "\f298"; } + +.fa-wrench:before { + content: "\f0ad"; } + +.fa-x-ray:before { + content: "\f497"; } + +.fa-xbox:before { + content: "\f412"; } + +.fa-xing:before { + content: "\f168"; } + +.fa-xing-square:before { + content: "\f169"; } + +.fa-y-combinator:before { + content: "\f23b"; } + +.fa-yahoo:before { + content: "\f19e"; } + +.fa-yandex:before { + content: "\f413"; } + +.fa-yandex-international:before { + content: "\f414"; } + +.fa-yelp:before { + content: "\f1e9"; } + +.fa-yen-sign:before { + content: "\f157"; } + +.fa-yin-yang:before { + content: "\f6ad"; } + +.fa-yoast:before { + content: "\f2b1"; } + +.fa-youtube:before { + content: "\f167"; } + +.fa-youtube-square:before { + content: "\f431"; } + +.fa-zhihu:before { + content: "\f63f"; } + +.sr-only { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; } + +.sr-only-focusable:active, .sr-only-focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; } +@font-face { + font-family: 'Font Awesome 5 Brands'; + font-style: normal; + font-weight: normal; + src: url("../webfonts/fa-brands-400.eot"); + src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); } + +.fab { + font-family: 'Font Awesome 5 Brands'; } +@font-face { + font-family: 'Font Awesome 5 Free'; + font-style: normal; + font-weight: 400; + src: url("../webfonts/fa-regular-400.eot"); + src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); } + +.far { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } +@font-face { + font-family: 'Font Awesome 5 Free'; + font-style: normal; + font-weight: 900; + src: url("../webfonts/fa-solid-900.eot"); + src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); } + +.fa, +.fas { + font-family: 'Font Awesome 5 Free'; + font-weight: 900; } diff --git a/assets/frontend/icons/fontawesome5/css/all.min.css b/assets/frontend/icons/fontawesome5/css/all.min.css new file mode 100644 index 0000000..03c0a79 --- /dev/null +++ b/assets/frontend/icons/fontawesome5/css/all.min.css @@ -0,0 +1,5 @@ +/*! + * Font Awesome Free 5.3.1 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-balance-scale:before{content:"\f24e"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blind:before{content:"\f29d"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-certificate:before{content:"\f0a3"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-concierge-bell:before{content:"\f562"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-credit-card:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-diagnoses:before{content:"\f470"}.fa-dice:before{content:"\f522"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-gift:before{content:"\f06b"}.fa-git:before{content:"\f1d3"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hashtag:before{content:"\f292"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-internet-explorer:before{content:"\f26b"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mouse-pointer:before{content:"\f245"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-nintendo-switch:before{content:"\f418"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-people-carry:before{content:"\f4ce"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-volume:before{content:"\f2a0"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-random:before{content:"\f074"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-rendact:before{content:"\f3e4"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-sass:before{content:"\f41e"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skull:before{content:"\f54c"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowflake:before{content:"\f2dc"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toolbox:before{content:"\f552"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} \ No newline at end of file diff --git a/assets/frontend/icons/fontawesome5/webfonts/fa-brands-400.eot b/assets/frontend/icons/fontawesome5/webfonts/fa-brands-400.eot new file mode 100644 index 0000000..086c4a7 Binary files /dev/null and b/assets/frontend/icons/fontawesome5/webfonts/fa-brands-400.eot differ diff --git a/assets/frontend/icons/fontawesome5/webfonts/fa-brands-400.svg b/assets/frontend/icons/fontawesome5/webfonts/fa-brands-400.svg new file mode 100644 index 0000000..f538195 --- /dev/null +++ b/assets/frontend/icons/fontawesome5/webfonts/fa-brands-400.svg @@ -0,0 +1,1154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/frontend/icons/fontawesome5/webfonts/fa-brands-400.ttf b/assets/frontend/icons/fontawesome5/webfonts/fa-brands-400.ttf new file mode 100644 index 0000000..ecbc761 Binary files /dev/null and b/assets/frontend/icons/fontawesome5/webfonts/fa-brands-400.ttf differ diff --git a/assets/frontend/icons/fontawesome5/webfonts/fa-brands-400.woff b/assets/frontend/icons/fontawesome5/webfonts/fa-brands-400.woff new file mode 100644 index 0000000..21c2dd3 Binary files /dev/null and b/assets/frontend/icons/fontawesome5/webfonts/fa-brands-400.woff differ diff --git a/assets/frontend/icons/fontawesome5/webfonts/fa-brands-400.woff2 b/assets/frontend/icons/fontawesome5/webfonts/fa-brands-400.woff2 new file mode 100644 index 0000000..8d8c89e Binary files /dev/null and b/assets/frontend/icons/fontawesome5/webfonts/fa-brands-400.woff2 differ diff --git a/assets/frontend/icons/fontawesome5/webfonts/fa-regular-400.eot b/assets/frontend/icons/fontawesome5/webfonts/fa-regular-400.eot new file mode 100644 index 0000000..656e9a0 Binary files /dev/null and b/assets/frontend/icons/fontawesome5/webfonts/fa-regular-400.eot differ diff --git a/assets/frontend/icons/fontawesome5/webfonts/fa-regular-400.svg b/assets/frontend/icons/fontawesome5/webfonts/fa-regular-400.svg new file mode 100644 index 0000000..593c903 --- /dev/null +++ b/assets/frontend/icons/fontawesome5/webfonts/fa-regular-400.svg @@ -0,0 +1,467 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/frontend/icons/fontawesome5/webfonts/fa-regular-400.ttf b/assets/frontend/icons/fontawesome5/webfonts/fa-regular-400.ttf new file mode 100644 index 0000000..36a7de3 Binary files /dev/null and b/assets/frontend/icons/fontawesome5/webfonts/fa-regular-400.ttf differ diff --git a/assets/frontend/icons/fontawesome5/webfonts/fa-regular-400.woff b/assets/frontend/icons/fontawesome5/webfonts/fa-regular-400.woff new file mode 100644 index 0000000..f7fab85 Binary files /dev/null and b/assets/frontend/icons/fontawesome5/webfonts/fa-regular-400.woff differ diff --git a/assets/frontend/icons/fontawesome5/webfonts/fa-regular-400.woff2 b/assets/frontend/icons/fontawesome5/webfonts/fa-regular-400.woff2 new file mode 100644 index 0000000..719a712 Binary files /dev/null and b/assets/frontend/icons/fontawesome5/webfonts/fa-regular-400.woff2 differ diff --git a/assets/frontend/icons/fontawesome5/webfonts/fa-solid-900.eot b/assets/frontend/icons/fontawesome5/webfonts/fa-solid-900.eot new file mode 100644 index 0000000..4e4cbb2 Binary files /dev/null and b/assets/frontend/icons/fontawesome5/webfonts/fa-solid-900.eot differ diff --git a/assets/frontend/icons/fontawesome5/webfonts/fa-solid-900.svg b/assets/frontend/icons/fontawesome5/webfonts/fa-solid-900.svg new file mode 100644 index 0000000..c40a020 --- /dev/null +++ b/assets/frontend/icons/fontawesome5/webfonts/fa-solid-900.svg @@ -0,0 +1,2444 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/frontend/icons/fontawesome5/webfonts/fa-solid-900.ttf b/assets/frontend/icons/fontawesome5/webfonts/fa-solid-900.ttf new file mode 100644 index 0000000..2a05512 Binary files /dev/null and b/assets/frontend/icons/fontawesome5/webfonts/fa-solid-900.ttf differ diff --git a/assets/frontend/icons/fontawesome5/webfonts/fa-solid-900.woff b/assets/frontend/icons/fontawesome5/webfonts/fa-solid-900.woff new file mode 100644 index 0000000..839528c Binary files /dev/null and b/assets/frontend/icons/fontawesome5/webfonts/fa-solid-900.woff differ diff --git a/assets/frontend/icons/fontawesome5/webfonts/fa-solid-900.woff2 b/assets/frontend/icons/fontawesome5/webfonts/fa-solid-900.woff2 new file mode 100644 index 0000000..3aae386 Binary files /dev/null and b/assets/frontend/icons/fontawesome5/webfonts/fa-solid-900.woff2 differ diff --git a/assets/frontend/icons/fontawesome6/css/all.css b/assets/frontend/icons/fontawesome6/css/all.css new file mode 100644 index 0000000..6330f89 --- /dev/null +++ b/assets/frontend/icons/fontawesome6/css/all.css @@ -0,0 +1,7937 @@ +/*! + * Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +.fa { + font-family: var(--fa-style-family, "Font Awesome 6 Free"); + font-weight: var(--fa-style, 900); } + +.fa, +.fa-classic, +.fa-sharp, +.fas, +.fa-solid, +.far, +.fa-regular, +.fab, +.fa-brands { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: var(--fa-display, inline-block); + font-style: normal; + font-variant: normal; + line-height: 1; + text-rendering: auto; } + +.fas, +.fa-classic, +.fa-solid, +.far, +.fa-regular { + font-family: 'Font Awesome 6 Free'; } + +.fab, +.fa-brands { + font-family: 'Font Awesome 6 Brands'; } + +.fa-1x { + font-size: 1em; } + +.fa-2x { + font-size: 2em; } + +.fa-3x { + font-size: 3em; } + +.fa-4x { + font-size: 4em; } + +.fa-5x { + font-size: 5em; } + +.fa-6x { + font-size: 6em; } + +.fa-7x { + font-size: 7em; } + +.fa-8x { + font-size: 8em; } + +.fa-9x { + font-size: 9em; } + +.fa-10x { + font-size: 10em; } + +.fa-2xs { + font-size: 0.625em; + line-height: 0.1em; + vertical-align: 0.225em; } + +.fa-xs { + font-size: 0.75em; + line-height: 0.08333em; + vertical-align: 0.125em; } + +.fa-sm { + font-size: 0.875em; + line-height: 0.07143em; + vertical-align: 0.05357em; } + +.fa-lg { + font-size: 1.25em; + line-height: 0.05em; + vertical-align: -0.075em; } + +.fa-xl { + font-size: 1.5em; + line-height: 0.04167em; + vertical-align: -0.125em; } + +.fa-2xl { + font-size: 2em; + line-height: 0.03125em; + vertical-align: -0.1875em; } + +.fa-fw { + text-align: center; + width: 1.25em; } + +.fa-ul { + list-style-type: none; + margin-left: var(--fa-li-margin, 2.5em); + padding-left: 0; } + .fa-ul > li { + position: relative; } + +.fa-li { + left: calc(var(--fa-li-width, 2em) * -1); + position: absolute; + text-align: center; + width: var(--fa-li-width, 2em); + line-height: inherit; } + +.fa-border { + border-color: var(--fa-border-color, #eee); + border-radius: var(--fa-border-radius, 0.1em); + border-style: var(--fa-border-style, solid); + border-width: var(--fa-border-width, 0.08em); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); } + +.fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); } + +.fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.3em); } + +.fa-beat { + -webkit-animation-name: fa-beat; + animation-name: fa-beat; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-bounce { + -webkit-animation-name: fa-bounce; + animation-name: fa-bounce; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } + +.fa-fade { + -webkit-animation-name: fa-fade; + animation-name: fa-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-beat-fade { + -webkit-animation-name: fa-beat-fade; + animation-name: fa-beat-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-flip { + -webkit-animation-name: fa-flip; + animation-name: fa-flip; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-shake { + -webkit-animation-name: fa-shake; + animation-name: fa-shake; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 2s); + animation-duration: var(--fa-animation-duration, 2s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin-reverse { + --fa-animation-direction: reverse; } + +.fa-pulse, +.fa-spin-pulse { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); + animation-timing-function: var(--fa-animation-timing, steps(8)); } + +@media (prefers-reduced-motion: reduce) { + .fa-beat, + .fa-bounce, + .fa-fade, + .fa-beat-fade, + .fa-flip, + .fa-pulse, + .fa-shake, + .fa-spin, + .fa-spin-pulse { + -webkit-animation-delay: -1ms; + animation-delay: -1ms; + -webkit-animation-duration: 1ms; + animation-duration: 1ms; + -webkit-animation-iteration-count: 1; + animation-iteration-count: 1; + transition-delay: 0s; + transition-duration: 0s; } } + +@-webkit-keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@-webkit-keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@-webkit-keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@-webkit-keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@-webkit-keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@-webkit-keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +.fa-rotate-90 { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); } + +.fa-rotate-180 { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); } + +.fa-rotate-270 { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } + +.fa-flip-horizontal { + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.fa-flip-vertical { + -webkit-transform: scale(1, -1); + transform: scale(1, -1); } + +.fa-flip-both, +.fa-flip-horizontal.fa-flip-vertical { + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); } + +.fa-rotate-by { + -webkit-transform: rotate(var(--fa-rotate-angle, none)); + transform: rotate(var(--fa-rotate-angle, none)); } + +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; } + +.fa-stack-1x, +.fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; + z-index: var(--fa-stack-z-index, auto); } + +.fa-stack-1x { + line-height: inherit; } + +.fa-stack-2x { + font-size: 2em; } + +.fa-inverse { + color: var(--fa-inverse, #fff); } + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ +.fa-0::before { + content: "\30"; } + +.fa-1::before { + content: "\31"; } + +.fa-2::before { + content: "\32"; } + +.fa-3::before { + content: "\33"; } + +.fa-4::before { + content: "\34"; } + +.fa-5::before { + content: "\35"; } + +.fa-6::before { + content: "\36"; } + +.fa-7::before { + content: "\37"; } + +.fa-8::before { + content: "\38"; } + +.fa-9::before { + content: "\39"; } + +.fa-fill-drip::before { + content: "\f576"; } + +.fa-arrows-to-circle::before { + content: "\e4bd"; } + +.fa-circle-chevron-right::before { + content: "\f138"; } + +.fa-chevron-circle-right::before { + content: "\f138"; } + +.fa-at::before { + content: "\40"; } + +.fa-trash-can::before { + content: "\f2ed"; } + +.fa-trash-alt::before { + content: "\f2ed"; } + +.fa-text-height::before { + content: "\f034"; } + +.fa-user-xmark::before { + content: "\f235"; } + +.fa-user-times::before { + content: "\f235"; } + +.fa-stethoscope::before { + content: "\f0f1"; } + +.fa-message::before { + content: "\f27a"; } + +.fa-comment-alt::before { + content: "\f27a"; } + +.fa-info::before { + content: "\f129"; } + +.fa-down-left-and-up-right-to-center::before { + content: "\f422"; } + +.fa-compress-alt::before { + content: "\f422"; } + +.fa-explosion::before { + content: "\e4e9"; } + +.fa-file-lines::before { + content: "\f15c"; } + +.fa-file-alt::before { + content: "\f15c"; } + +.fa-file-text::before { + content: "\f15c"; } + +.fa-wave-square::before { + content: "\f83e"; } + +.fa-ring::before { + content: "\f70b"; } + +.fa-building-un::before { + content: "\e4d9"; } + +.fa-dice-three::before { + content: "\f527"; } + +.fa-calendar-days::before { + content: "\f073"; } + +.fa-calendar-alt::before { + content: "\f073"; } + +.fa-anchor-circle-check::before { + content: "\e4aa"; } + +.fa-building-circle-arrow-right::before { + content: "\e4d1"; } + +.fa-volleyball::before { + content: "\f45f"; } + +.fa-volleyball-ball::before { + content: "\f45f"; } + +.fa-arrows-up-to-line::before { + content: "\e4c2"; } + +.fa-sort-down::before { + content: "\f0dd"; } + +.fa-sort-desc::before { + content: "\f0dd"; } + +.fa-circle-minus::before { + content: "\f056"; } + +.fa-minus-circle::before { + content: "\f056"; } + +.fa-door-open::before { + content: "\f52b"; } + +.fa-right-from-bracket::before { + content: "\f2f5"; } + +.fa-sign-out-alt::before { + content: "\f2f5"; } + +.fa-atom::before { + content: "\f5d2"; } + +.fa-soap::before { + content: "\e06e"; } + +.fa-icons::before { + content: "\f86d"; } + +.fa-heart-music-camera-bolt::before { + content: "\f86d"; } + +.fa-microphone-lines-slash::before { + content: "\f539"; } + +.fa-microphone-alt-slash::before { + content: "\f539"; } + +.fa-bridge-circle-check::before { + content: "\e4c9"; } + +.fa-pump-medical::before { + content: "\e06a"; } + +.fa-fingerprint::before { + content: "\f577"; } + +.fa-hand-point-right::before { + content: "\f0a4"; } + +.fa-magnifying-glass-location::before { + content: "\f689"; } + +.fa-search-location::before { + content: "\f689"; } + +.fa-forward-step::before { + content: "\f051"; } + +.fa-step-forward::before { + content: "\f051"; } + +.fa-face-smile-beam::before { + content: "\f5b8"; } + +.fa-smile-beam::before { + content: "\f5b8"; } + +.fa-flag-checkered::before { + content: "\f11e"; } + +.fa-football::before { + content: "\f44e"; } + +.fa-football-ball::before { + content: "\f44e"; } + +.fa-school-circle-exclamation::before { + content: "\e56c"; } + +.fa-crop::before { + content: "\f125"; } + +.fa-angles-down::before { + content: "\f103"; } + +.fa-angle-double-down::before { + content: "\f103"; } + +.fa-users-rectangle::before { + content: "\e594"; } + +.fa-people-roof::before { + content: "\e537"; } + +.fa-people-line::before { + content: "\e534"; } + +.fa-beer-mug-empty::before { + content: "\f0fc"; } + +.fa-beer::before { + content: "\f0fc"; } + +.fa-diagram-predecessor::before { + content: "\e477"; } + +.fa-arrow-up-long::before { + content: "\f176"; } + +.fa-long-arrow-up::before { + content: "\f176"; } + +.fa-fire-flame-simple::before { + content: "\f46a"; } + +.fa-burn::before { + content: "\f46a"; } + +.fa-person::before { + content: "\f183"; } + +.fa-male::before { + content: "\f183"; } + +.fa-laptop::before { + content: "\f109"; } + +.fa-file-csv::before { + content: "\f6dd"; } + +.fa-menorah::before { + content: "\f676"; } + +.fa-truck-plane::before { + content: "\e58f"; } + +.fa-record-vinyl::before { + content: "\f8d9"; } + +.fa-face-grin-stars::before { + content: "\f587"; } + +.fa-grin-stars::before { + content: "\f587"; } + +.fa-bong::before { + content: "\f55c"; } + +.fa-spaghetti-monster-flying::before { + content: "\f67b"; } + +.fa-pastafarianism::before { + content: "\f67b"; } + +.fa-arrow-down-up-across-line::before { + content: "\e4af"; } + +.fa-spoon::before { + content: "\f2e5"; } + +.fa-utensil-spoon::before { + content: "\f2e5"; } + +.fa-jar-wheat::before { + content: "\e517"; } + +.fa-envelopes-bulk::before { + content: "\f674"; } + +.fa-mail-bulk::before { + content: "\f674"; } + +.fa-file-circle-exclamation::before { + content: "\e4eb"; } + +.fa-circle-h::before { + content: "\f47e"; } + +.fa-hospital-symbol::before { + content: "\f47e"; } + +.fa-pager::before { + content: "\f815"; } + +.fa-address-book::before { + content: "\f2b9"; } + +.fa-contact-book::before { + content: "\f2b9"; } + +.fa-strikethrough::before { + content: "\f0cc"; } + +.fa-k::before { + content: "\4b"; } + +.fa-landmark-flag::before { + content: "\e51c"; } + +.fa-pencil::before { + content: "\f303"; } + +.fa-pencil-alt::before { + content: "\f303"; } + +.fa-backward::before { + content: "\f04a"; } + +.fa-caret-right::before { + content: "\f0da"; } + +.fa-comments::before { + content: "\f086"; } + +.fa-paste::before { + content: "\f0ea"; } + +.fa-file-clipboard::before { + content: "\f0ea"; } + +.fa-code-pull-request::before { + content: "\e13c"; } + +.fa-clipboard-list::before { + content: "\f46d"; } + +.fa-truck-ramp-box::before { + content: "\f4de"; } + +.fa-truck-loading::before { + content: "\f4de"; } + +.fa-user-check::before { + content: "\f4fc"; } + +.fa-vial-virus::before { + content: "\e597"; } + +.fa-sheet-plastic::before { + content: "\e571"; } + +.fa-blog::before { + content: "\f781"; } + +.fa-user-ninja::before { + content: "\f504"; } + +.fa-person-arrow-up-from-line::before { + content: "\e539"; } + +.fa-scroll-torah::before { + content: "\f6a0"; } + +.fa-torah::before { + content: "\f6a0"; } + +.fa-broom-ball::before { + content: "\f458"; } + +.fa-quidditch::before { + content: "\f458"; } + +.fa-quidditch-broom-ball::before { + content: "\f458"; } + +.fa-toggle-off::before { + content: "\f204"; } + +.fa-box-archive::before { + content: "\f187"; } + +.fa-archive::before { + content: "\f187"; } + +.fa-person-drowning::before { + content: "\e545"; } + +.fa-arrow-down-9-1::before { + content: "\f886"; } + +.fa-sort-numeric-desc::before { + content: "\f886"; } + +.fa-sort-numeric-down-alt::before { + content: "\f886"; } + +.fa-face-grin-tongue-squint::before { + content: "\f58a"; } + +.fa-grin-tongue-squint::before { + content: "\f58a"; } + +.fa-spray-can::before { + content: "\f5bd"; } + +.fa-truck-monster::before { + content: "\f63b"; } + +.fa-w::before { + content: "\57"; } + +.fa-earth-africa::before { + content: "\f57c"; } + +.fa-globe-africa::before { + content: "\f57c"; } + +.fa-rainbow::before { + content: "\f75b"; } + +.fa-circle-notch::before { + content: "\f1ce"; } + +.fa-tablet-screen-button::before { + content: "\f3fa"; } + +.fa-tablet-alt::before { + content: "\f3fa"; } + +.fa-paw::before { + content: "\f1b0"; } + +.fa-cloud::before { + content: "\f0c2"; } + +.fa-trowel-bricks::before { + content: "\e58a"; } + +.fa-face-flushed::before { + content: "\f579"; } + +.fa-flushed::before { + content: "\f579"; } + +.fa-hospital-user::before { + content: "\f80d"; } + +.fa-tent-arrow-left-right::before { + content: "\e57f"; } + +.fa-gavel::before { + content: "\f0e3"; } + +.fa-legal::before { + content: "\f0e3"; } + +.fa-binoculars::before { + content: "\f1e5"; } + +.fa-microphone-slash::before { + content: "\f131"; } + +.fa-box-tissue::before { + content: "\e05b"; } + +.fa-motorcycle::before { + content: "\f21c"; } + +.fa-bell-concierge::before { + content: "\f562"; } + +.fa-concierge-bell::before { + content: "\f562"; } + +.fa-pen-ruler::before { + content: "\f5ae"; } + +.fa-pencil-ruler::before { + content: "\f5ae"; } + +.fa-people-arrows::before { + content: "\e068"; } + +.fa-people-arrows-left-right::before { + content: "\e068"; } + +.fa-mars-and-venus-burst::before { + content: "\e523"; } + +.fa-square-caret-right::before { + content: "\f152"; } + +.fa-caret-square-right::before { + content: "\f152"; } + +.fa-scissors::before { + content: "\f0c4"; } + +.fa-cut::before { + content: "\f0c4"; } + +.fa-sun-plant-wilt::before { + content: "\e57a"; } + +.fa-toilets-portable::before { + content: "\e584"; } + +.fa-hockey-puck::before { + content: "\f453"; } + +.fa-table::before { + content: "\f0ce"; } + +.fa-magnifying-glass-arrow-right::before { + content: "\e521"; } + +.fa-tachograph-digital::before { + content: "\f566"; } + +.fa-digital-tachograph::before { + content: "\f566"; } + +.fa-users-slash::before { + content: "\e073"; } + +.fa-clover::before { + content: "\e139"; } + +.fa-reply::before { + content: "\f3e5"; } + +.fa-mail-reply::before { + content: "\f3e5"; } + +.fa-star-and-crescent::before { + content: "\f699"; } + +.fa-house-fire::before { + content: "\e50c"; } + +.fa-square-minus::before { + content: "\f146"; } + +.fa-minus-square::before { + content: "\f146"; } + +.fa-helicopter::before { + content: "\f533"; } + +.fa-compass::before { + content: "\f14e"; } + +.fa-square-caret-down::before { + content: "\f150"; } + +.fa-caret-square-down::before { + content: "\f150"; } + +.fa-file-circle-question::before { + content: "\e4ef"; } + +.fa-laptop-code::before { + content: "\f5fc"; } + +.fa-swatchbook::before { + content: "\f5c3"; } + +.fa-prescription-bottle::before { + content: "\f485"; } + +.fa-bars::before { + content: "\f0c9"; } + +.fa-navicon::before { + content: "\f0c9"; } + +.fa-people-group::before { + content: "\e533"; } + +.fa-hourglass-end::before { + content: "\f253"; } + +.fa-hourglass-3::before { + content: "\f253"; } + +.fa-heart-crack::before { + content: "\f7a9"; } + +.fa-heart-broken::before { + content: "\f7a9"; } + +.fa-square-up-right::before { + content: "\f360"; } + +.fa-external-link-square-alt::before { + content: "\f360"; } + +.fa-face-kiss-beam::before { + content: "\f597"; } + +.fa-kiss-beam::before { + content: "\f597"; } + +.fa-film::before { + content: "\f008"; } + +.fa-ruler-horizontal::before { + content: "\f547"; } + +.fa-people-robbery::before { + content: "\e536"; } + +.fa-lightbulb::before { + content: "\f0eb"; } + +.fa-caret-left::before { + content: "\f0d9"; } + +.fa-circle-exclamation::before { + content: "\f06a"; } + +.fa-exclamation-circle::before { + content: "\f06a"; } + +.fa-school-circle-xmark::before { + content: "\e56d"; } + +.fa-arrow-right-from-bracket::before { + content: "\f08b"; } + +.fa-sign-out::before { + content: "\f08b"; } + +.fa-circle-chevron-down::before { + content: "\f13a"; } + +.fa-chevron-circle-down::before { + content: "\f13a"; } + +.fa-unlock-keyhole::before { + content: "\f13e"; } + +.fa-unlock-alt::before { + content: "\f13e"; } + +.fa-cloud-showers-heavy::before { + content: "\f740"; } + +.fa-headphones-simple::before { + content: "\f58f"; } + +.fa-headphones-alt::before { + content: "\f58f"; } + +.fa-sitemap::before { + content: "\f0e8"; } + +.fa-circle-dollar-to-slot::before { + content: "\f4b9"; } + +.fa-donate::before { + content: "\f4b9"; } + +.fa-memory::before { + content: "\f538"; } + +.fa-road-spikes::before { + content: "\e568"; } + +.fa-fire-burner::before { + content: "\e4f1"; } + +.fa-flag::before { + content: "\f024"; } + +.fa-hanukiah::before { + content: "\f6e6"; } + +.fa-feather::before { + content: "\f52d"; } + +.fa-volume-low::before { + content: "\f027"; } + +.fa-volume-down::before { + content: "\f027"; } + +.fa-comment-slash::before { + content: "\f4b3"; } + +.fa-cloud-sun-rain::before { + content: "\f743"; } + +.fa-compress::before { + content: "\f066"; } + +.fa-wheat-awn::before { + content: "\e2cd"; } + +.fa-wheat-alt::before { + content: "\e2cd"; } + +.fa-ankh::before { + content: "\f644"; } + +.fa-hands-holding-child::before { + content: "\e4fa"; } + +.fa-asterisk::before { + content: "\2a"; } + +.fa-square-check::before { + content: "\f14a"; } + +.fa-check-square::before { + content: "\f14a"; } + +.fa-peseta-sign::before { + content: "\e221"; } + +.fa-heading::before { + content: "\f1dc"; } + +.fa-header::before { + content: "\f1dc"; } + +.fa-ghost::before { + content: "\f6e2"; } + +.fa-list::before { + content: "\f03a"; } + +.fa-list-squares::before { + content: "\f03a"; } + +.fa-square-phone-flip::before { + content: "\f87b"; } + +.fa-phone-square-alt::before { + content: "\f87b"; } + +.fa-cart-plus::before { + content: "\f217"; } + +.fa-gamepad::before { + content: "\f11b"; } + +.fa-circle-dot::before { + content: "\f192"; } + +.fa-dot-circle::before { + content: "\f192"; } + +.fa-face-dizzy::before { + content: "\f567"; } + +.fa-dizzy::before { + content: "\f567"; } + +.fa-egg::before { + content: "\f7fb"; } + +.fa-house-medical-circle-xmark::before { + content: "\e513"; } + +.fa-campground::before { + content: "\f6bb"; } + +.fa-folder-plus::before { + content: "\f65e"; } + +.fa-futbol::before { + content: "\f1e3"; } + +.fa-futbol-ball::before { + content: "\f1e3"; } + +.fa-soccer-ball::before { + content: "\f1e3"; } + +.fa-paintbrush::before { + content: "\f1fc"; } + +.fa-paint-brush::before { + content: "\f1fc"; } + +.fa-lock::before { + content: "\f023"; } + +.fa-gas-pump::before { + content: "\f52f"; } + +.fa-hot-tub-person::before { + content: "\f593"; } + +.fa-hot-tub::before { + content: "\f593"; } + +.fa-map-location::before { + content: "\f59f"; } + +.fa-map-marked::before { + content: "\f59f"; } + +.fa-house-flood-water::before { + content: "\e50e"; } + +.fa-tree::before { + content: "\f1bb"; } + +.fa-bridge-lock::before { + content: "\e4cc"; } + +.fa-sack-dollar::before { + content: "\f81d"; } + +.fa-pen-to-square::before { + content: "\f044"; } + +.fa-edit::before { + content: "\f044"; } + +.fa-car-side::before { + content: "\f5e4"; } + +.fa-share-nodes::before { + content: "\f1e0"; } + +.fa-share-alt::before { + content: "\f1e0"; } + +.fa-heart-circle-minus::before { + content: "\e4ff"; } + +.fa-hourglass-half::before { + content: "\f252"; } + +.fa-hourglass-2::before { + content: "\f252"; } + +.fa-microscope::before { + content: "\f610"; } + +.fa-sink::before { + content: "\e06d"; } + +.fa-bag-shopping::before { + content: "\f290"; } + +.fa-shopping-bag::before { + content: "\f290"; } + +.fa-arrow-down-z-a::before { + content: "\f881"; } + +.fa-sort-alpha-desc::before { + content: "\f881"; } + +.fa-sort-alpha-down-alt::before { + content: "\f881"; } + +.fa-mitten::before { + content: "\f7b5"; } + +.fa-person-rays::before { + content: "\e54d"; } + +.fa-users::before { + content: "\f0c0"; } + +.fa-eye-slash::before { + content: "\f070"; } + +.fa-flask-vial::before { + content: "\e4f3"; } + +.fa-hand::before { + content: "\f256"; } + +.fa-hand-paper::before { + content: "\f256"; } + +.fa-om::before { + content: "\f679"; } + +.fa-worm::before { + content: "\e599"; } + +.fa-house-circle-xmark::before { + content: "\e50b"; } + +.fa-plug::before { + content: "\f1e6"; } + +.fa-chevron-up::before { + content: "\f077"; } + +.fa-hand-spock::before { + content: "\f259"; } + +.fa-stopwatch::before { + content: "\f2f2"; } + +.fa-face-kiss::before { + content: "\f596"; } + +.fa-kiss::before { + content: "\f596"; } + +.fa-bridge-circle-xmark::before { + content: "\e4cb"; } + +.fa-face-grin-tongue::before { + content: "\f589"; } + +.fa-grin-tongue::before { + content: "\f589"; } + +.fa-chess-bishop::before { + content: "\f43a"; } + +.fa-face-grin-wink::before { + content: "\f58c"; } + +.fa-grin-wink::before { + content: "\f58c"; } + +.fa-ear-deaf::before { + content: "\f2a4"; } + +.fa-deaf::before { + content: "\f2a4"; } + +.fa-deafness::before { + content: "\f2a4"; } + +.fa-hard-of-hearing::before { + content: "\f2a4"; } + +.fa-road-circle-check::before { + content: "\e564"; } + +.fa-dice-five::before { + content: "\f523"; } + +.fa-square-rss::before { + content: "\f143"; } + +.fa-rss-square::before { + content: "\f143"; } + +.fa-land-mine-on::before { + content: "\e51b"; } + +.fa-i-cursor::before { + content: "\f246"; } + +.fa-stamp::before { + content: "\f5bf"; } + +.fa-stairs::before { + content: "\e289"; } + +.fa-i::before { + content: "\49"; } + +.fa-hryvnia-sign::before { + content: "\f6f2"; } + +.fa-hryvnia::before { + content: "\f6f2"; } + +.fa-pills::before { + content: "\f484"; } + +.fa-face-grin-wide::before { + content: "\f581"; } + +.fa-grin-alt::before { + content: "\f581"; } + +.fa-tooth::before { + content: "\f5c9"; } + +.fa-v::before { + content: "\56"; } + +.fa-bicycle::before { + content: "\f206"; } + +.fa-staff-snake::before { + content: "\e579"; } + +.fa-rod-asclepius::before { + content: "\e579"; } + +.fa-rod-snake::before { + content: "\e579"; } + +.fa-staff-aesculapius::before { + content: "\e579"; } + +.fa-head-side-cough-slash::before { + content: "\e062"; } + +.fa-truck-medical::before { + content: "\f0f9"; } + +.fa-ambulance::before { + content: "\f0f9"; } + +.fa-wheat-awn-circle-exclamation::before { + content: "\e598"; } + +.fa-snowman::before { + content: "\f7d0"; } + +.fa-mortar-pestle::before { + content: "\f5a7"; } + +.fa-road-barrier::before { + content: "\e562"; } + +.fa-school::before { + content: "\f549"; } + +.fa-igloo::before { + content: "\f7ae"; } + +.fa-joint::before { + content: "\f595"; } + +.fa-angle-right::before { + content: "\f105"; } + +.fa-horse::before { + content: "\f6f0"; } + +.fa-q::before { + content: "\51"; } + +.fa-g::before { + content: "\47"; } + +.fa-notes-medical::before { + content: "\f481"; } + +.fa-temperature-half::before { + content: "\f2c9"; } + +.fa-temperature-2::before { + content: "\f2c9"; } + +.fa-thermometer-2::before { + content: "\f2c9"; } + +.fa-thermometer-half::before { + content: "\f2c9"; } + +.fa-dong-sign::before { + content: "\e169"; } + +.fa-capsules::before { + content: "\f46b"; } + +.fa-poo-storm::before { + content: "\f75a"; } + +.fa-poo-bolt::before { + content: "\f75a"; } + +.fa-face-frown-open::before { + content: "\f57a"; } + +.fa-frown-open::before { + content: "\f57a"; } + +.fa-hand-point-up::before { + content: "\f0a6"; } + +.fa-money-bill::before { + content: "\f0d6"; } + +.fa-bookmark::before { + content: "\f02e"; } + +.fa-align-justify::before { + content: "\f039"; } + +.fa-umbrella-beach::before { + content: "\f5ca"; } + +.fa-helmet-un::before { + content: "\e503"; } + +.fa-bullseye::before { + content: "\f140"; } + +.fa-bacon::before { + content: "\f7e5"; } + +.fa-hand-point-down::before { + content: "\f0a7"; } + +.fa-arrow-up-from-bracket::before { + content: "\e09a"; } + +.fa-folder::before { + content: "\f07b"; } + +.fa-folder-blank::before { + content: "\f07b"; } + +.fa-file-waveform::before { + content: "\f478"; } + +.fa-file-medical-alt::before { + content: "\f478"; } + +.fa-radiation::before { + content: "\f7b9"; } + +.fa-chart-simple::before { + content: "\e473"; } + +.fa-mars-stroke::before { + content: "\f229"; } + +.fa-vial::before { + content: "\f492"; } + +.fa-gauge::before { + content: "\f624"; } + +.fa-dashboard::before { + content: "\f624"; } + +.fa-gauge-med::before { + content: "\f624"; } + +.fa-tachometer-alt-average::before { + content: "\f624"; } + +.fa-wand-magic-sparkles::before { + content: "\e2ca"; } + +.fa-magic-wand-sparkles::before { + content: "\e2ca"; } + +.fa-e::before { + content: "\45"; } + +.fa-pen-clip::before { + content: "\f305"; } + +.fa-pen-alt::before { + content: "\f305"; } + +.fa-bridge-circle-exclamation::before { + content: "\e4ca"; } + +.fa-user::before { + content: "\f007"; } + +.fa-school-circle-check::before { + content: "\e56b"; } + +.fa-dumpster::before { + content: "\f793"; } + +.fa-van-shuttle::before { + content: "\f5b6"; } + +.fa-shuttle-van::before { + content: "\f5b6"; } + +.fa-building-user::before { + content: "\e4da"; } + +.fa-square-caret-left::before { + content: "\f191"; } + +.fa-caret-square-left::before { + content: "\f191"; } + +.fa-highlighter::before { + content: "\f591"; } + +.fa-key::before { + content: "\f084"; } + +.fa-bullhorn::before { + content: "\f0a1"; } + +.fa-globe::before { + content: "\f0ac"; } + +.fa-synagogue::before { + content: "\f69b"; } + +.fa-person-half-dress::before { + content: "\e548"; } + +.fa-road-bridge::before { + content: "\e563"; } + +.fa-location-arrow::before { + content: "\f124"; } + +.fa-c::before { + content: "\43"; } + +.fa-tablet-button::before { + content: "\f10a"; } + +.fa-building-lock::before { + content: "\e4d6"; } + +.fa-pizza-slice::before { + content: "\f818"; } + +.fa-money-bill-wave::before { + content: "\f53a"; } + +.fa-chart-area::before { + content: "\f1fe"; } + +.fa-area-chart::before { + content: "\f1fe"; } + +.fa-house-flag::before { + content: "\e50d"; } + +.fa-person-circle-minus::before { + content: "\e540"; } + +.fa-ban::before { + content: "\f05e"; } + +.fa-cancel::before { + content: "\f05e"; } + +.fa-camera-rotate::before { + content: "\e0d8"; } + +.fa-spray-can-sparkles::before { + content: "\f5d0"; } + +.fa-air-freshener::before { + content: "\f5d0"; } + +.fa-star::before { + content: "\f005"; } + +.fa-repeat::before { + content: "\f363"; } + +.fa-cross::before { + content: "\f654"; } + +.fa-box::before { + content: "\f466"; } + +.fa-venus-mars::before { + content: "\f228"; } + +.fa-arrow-pointer::before { + content: "\f245"; } + +.fa-mouse-pointer::before { + content: "\f245"; } + +.fa-maximize::before { + content: "\f31e"; } + +.fa-expand-arrows-alt::before { + content: "\f31e"; } + +.fa-charging-station::before { + content: "\f5e7"; } + +.fa-shapes::before { + content: "\f61f"; } + +.fa-triangle-circle-square::before { + content: "\f61f"; } + +.fa-shuffle::before { + content: "\f074"; } + +.fa-random::before { + content: "\f074"; } + +.fa-person-running::before { + content: "\f70c"; } + +.fa-running::before { + content: "\f70c"; } + +.fa-mobile-retro::before { + content: "\e527"; } + +.fa-grip-lines-vertical::before { + content: "\f7a5"; } + +.fa-spider::before { + content: "\f717"; } + +.fa-hands-bound::before { + content: "\e4f9"; } + +.fa-file-invoice-dollar::before { + content: "\f571"; } + +.fa-plane-circle-exclamation::before { + content: "\e556"; } + +.fa-x-ray::before { + content: "\f497"; } + +.fa-spell-check::before { + content: "\f891"; } + +.fa-slash::before { + content: "\f715"; } + +.fa-computer-mouse::before { + content: "\f8cc"; } + +.fa-mouse::before { + content: "\f8cc"; } + +.fa-arrow-right-to-bracket::before { + content: "\f090"; } + +.fa-sign-in::before { + content: "\f090"; } + +.fa-shop-slash::before { + content: "\e070"; } + +.fa-store-alt-slash::before { + content: "\e070"; } + +.fa-server::before { + content: "\f233"; } + +.fa-virus-covid-slash::before { + content: "\e4a9"; } + +.fa-shop-lock::before { + content: "\e4a5"; } + +.fa-hourglass-start::before { + content: "\f251"; } + +.fa-hourglass-1::before { + content: "\f251"; } + +.fa-blender-phone::before { + content: "\f6b6"; } + +.fa-building-wheat::before { + content: "\e4db"; } + +.fa-person-breastfeeding::before { + content: "\e53a"; } + +.fa-right-to-bracket::before { + content: "\f2f6"; } + +.fa-sign-in-alt::before { + content: "\f2f6"; } + +.fa-venus::before { + content: "\f221"; } + +.fa-passport::before { + content: "\f5ab"; } + +.fa-heart-pulse::before { + content: "\f21e"; } + +.fa-heartbeat::before { + content: "\f21e"; } + +.fa-people-carry-box::before { + content: "\f4ce"; } + +.fa-people-carry::before { + content: "\f4ce"; } + +.fa-temperature-high::before { + content: "\f769"; } + +.fa-microchip::before { + content: "\f2db"; } + +.fa-crown::before { + content: "\f521"; } + +.fa-weight-hanging::before { + content: "\f5cd"; } + +.fa-xmarks-lines::before { + content: "\e59a"; } + +.fa-file-prescription::before { + content: "\f572"; } + +.fa-weight-scale::before { + content: "\f496"; } + +.fa-weight::before { + content: "\f496"; } + +.fa-user-group::before { + content: "\f500"; } + +.fa-user-friends::before { + content: "\f500"; } + +.fa-arrow-up-a-z::before { + content: "\f15e"; } + +.fa-sort-alpha-up::before { + content: "\f15e"; } + +.fa-chess-knight::before { + content: "\f441"; } + +.fa-face-laugh-squint::before { + content: "\f59b"; } + +.fa-laugh-squint::before { + content: "\f59b"; } + +.fa-wheelchair::before { + content: "\f193"; } + +.fa-circle-arrow-up::before { + content: "\f0aa"; } + +.fa-arrow-circle-up::before { + content: "\f0aa"; } + +.fa-toggle-on::before { + content: "\f205"; } + +.fa-person-walking::before { + content: "\f554"; } + +.fa-walking::before { + content: "\f554"; } + +.fa-l::before { + content: "\4c"; } + +.fa-fire::before { + content: "\f06d"; } + +.fa-bed-pulse::before { + content: "\f487"; } + +.fa-procedures::before { + content: "\f487"; } + +.fa-shuttle-space::before { + content: "\f197"; } + +.fa-space-shuttle::before { + content: "\f197"; } + +.fa-face-laugh::before { + content: "\f599"; } + +.fa-laugh::before { + content: "\f599"; } + +.fa-folder-open::before { + content: "\f07c"; } + +.fa-heart-circle-plus::before { + content: "\e500"; } + +.fa-code-fork::before { + content: "\e13b"; } + +.fa-city::before { + content: "\f64f"; } + +.fa-microphone-lines::before { + content: "\f3c9"; } + +.fa-microphone-alt::before { + content: "\f3c9"; } + +.fa-pepper-hot::before { + content: "\f816"; } + +.fa-unlock::before { + content: "\f09c"; } + +.fa-colon-sign::before { + content: "\e140"; } + +.fa-headset::before { + content: "\f590"; } + +.fa-store-slash::before { + content: "\e071"; } + +.fa-road-circle-xmark::before { + content: "\e566"; } + +.fa-user-minus::before { + content: "\f503"; } + +.fa-mars-stroke-up::before { + content: "\f22a"; } + +.fa-mars-stroke-v::before { + content: "\f22a"; } + +.fa-champagne-glasses::before { + content: "\f79f"; } + +.fa-glass-cheers::before { + content: "\f79f"; } + +.fa-clipboard::before { + content: "\f328"; } + +.fa-house-circle-exclamation::before { + content: "\e50a"; } + +.fa-file-arrow-up::before { + content: "\f574"; } + +.fa-file-upload::before { + content: "\f574"; } + +.fa-wifi::before { + content: "\f1eb"; } + +.fa-wifi-3::before { + content: "\f1eb"; } + +.fa-wifi-strong::before { + content: "\f1eb"; } + +.fa-bath::before { + content: "\f2cd"; } + +.fa-bathtub::before { + content: "\f2cd"; } + +.fa-underline::before { + content: "\f0cd"; } + +.fa-user-pen::before { + content: "\f4ff"; } + +.fa-user-edit::before { + content: "\f4ff"; } + +.fa-signature::before { + content: "\f5b7"; } + +.fa-stroopwafel::before { + content: "\f551"; } + +.fa-bold::before { + content: "\f032"; } + +.fa-anchor-lock::before { + content: "\e4ad"; } + +.fa-building-ngo::before { + content: "\e4d7"; } + +.fa-manat-sign::before { + content: "\e1d5"; } + +.fa-not-equal::before { + content: "\f53e"; } + +.fa-border-top-left::before { + content: "\f853"; } + +.fa-border-style::before { + content: "\f853"; } + +.fa-map-location-dot::before { + content: "\f5a0"; } + +.fa-map-marked-alt::before { + content: "\f5a0"; } + +.fa-jedi::before { + content: "\f669"; } + +.fa-square-poll-vertical::before { + content: "\f681"; } + +.fa-poll::before { + content: "\f681"; } + +.fa-mug-hot::before { + content: "\f7b6"; } + +.fa-car-battery::before { + content: "\f5df"; } + +.fa-battery-car::before { + content: "\f5df"; } + +.fa-gift::before { + content: "\f06b"; } + +.fa-dice-two::before { + content: "\f528"; } + +.fa-chess-queen::before { + content: "\f445"; } + +.fa-glasses::before { + content: "\f530"; } + +.fa-chess-board::before { + content: "\f43c"; } + +.fa-building-circle-check::before { + content: "\e4d2"; } + +.fa-person-chalkboard::before { + content: "\e53d"; } + +.fa-mars-stroke-right::before { + content: "\f22b"; } + +.fa-mars-stroke-h::before { + content: "\f22b"; } + +.fa-hand-back-fist::before { + content: "\f255"; } + +.fa-hand-rock::before { + content: "\f255"; } + +.fa-square-caret-up::before { + content: "\f151"; } + +.fa-caret-square-up::before { + content: "\f151"; } + +.fa-cloud-showers-water::before { + content: "\e4e4"; } + +.fa-chart-bar::before { + content: "\f080"; } + +.fa-bar-chart::before { + content: "\f080"; } + +.fa-hands-bubbles::before { + content: "\e05e"; } + +.fa-hands-wash::before { + content: "\e05e"; } + +.fa-less-than-equal::before { + content: "\f537"; } + +.fa-train::before { + content: "\f238"; } + +.fa-eye-low-vision::before { + content: "\f2a8"; } + +.fa-low-vision::before { + content: "\f2a8"; } + +.fa-crow::before { + content: "\f520"; } + +.fa-sailboat::before { + content: "\e445"; } + +.fa-window-restore::before { + content: "\f2d2"; } + +.fa-square-plus::before { + content: "\f0fe"; } + +.fa-plus-square::before { + content: "\f0fe"; } + +.fa-torii-gate::before { + content: "\f6a1"; } + +.fa-frog::before { + content: "\f52e"; } + +.fa-bucket::before { + content: "\e4cf"; } + +.fa-image::before { + content: "\f03e"; } + +.fa-microphone::before { + content: "\f130"; } + +.fa-cow::before { + content: "\f6c8"; } + +.fa-caret-up::before { + content: "\f0d8"; } + +.fa-screwdriver::before { + content: "\f54a"; } + +.fa-folder-closed::before { + content: "\e185"; } + +.fa-house-tsunami::before { + content: "\e515"; } + +.fa-square-nfi::before { + content: "\e576"; } + +.fa-arrow-up-from-ground-water::before { + content: "\e4b5"; } + +.fa-martini-glass::before { + content: "\f57b"; } + +.fa-glass-martini-alt::before { + content: "\f57b"; } + +.fa-rotate-left::before { + content: "\f2ea"; } + +.fa-rotate-back::before { + content: "\f2ea"; } + +.fa-rotate-backward::before { + content: "\f2ea"; } + +.fa-undo-alt::before { + content: "\f2ea"; } + +.fa-table-columns::before { + content: "\f0db"; } + +.fa-columns::before { + content: "\f0db"; } + +.fa-lemon::before { + content: "\f094"; } + +.fa-head-side-mask::before { + content: "\e063"; } + +.fa-handshake::before { + content: "\f2b5"; } + +.fa-gem::before { + content: "\f3a5"; } + +.fa-dolly::before { + content: "\f472"; } + +.fa-dolly-box::before { + content: "\f472"; } + +.fa-smoking::before { + content: "\f48d"; } + +.fa-minimize::before { + content: "\f78c"; } + +.fa-compress-arrows-alt::before { + content: "\f78c"; } + +.fa-monument::before { + content: "\f5a6"; } + +.fa-snowplow::before { + content: "\f7d2"; } + +.fa-angles-right::before { + content: "\f101"; } + +.fa-angle-double-right::before { + content: "\f101"; } + +.fa-cannabis::before { + content: "\f55f"; } + +.fa-circle-play::before { + content: "\f144"; } + +.fa-play-circle::before { + content: "\f144"; } + +.fa-tablets::before { + content: "\f490"; } + +.fa-ethernet::before { + content: "\f796"; } + +.fa-euro-sign::before { + content: "\f153"; } + +.fa-eur::before { + content: "\f153"; } + +.fa-euro::before { + content: "\f153"; } + +.fa-chair::before { + content: "\f6c0"; } + +.fa-circle-check::before { + content: "\f058"; } + +.fa-check-circle::before { + content: "\f058"; } + +.fa-circle-stop::before { + content: "\f28d"; } + +.fa-stop-circle::before { + content: "\f28d"; } + +.fa-compass-drafting::before { + content: "\f568"; } + +.fa-drafting-compass::before { + content: "\f568"; } + +.fa-plate-wheat::before { + content: "\e55a"; } + +.fa-icicles::before { + content: "\f7ad"; } + +.fa-person-shelter::before { + content: "\e54f"; } + +.fa-neuter::before { + content: "\f22c"; } + +.fa-id-badge::before { + content: "\f2c1"; } + +.fa-marker::before { + content: "\f5a1"; } + +.fa-face-laugh-beam::before { + content: "\f59a"; } + +.fa-laugh-beam::before { + content: "\f59a"; } + +.fa-helicopter-symbol::before { + content: "\e502"; } + +.fa-universal-access::before { + content: "\f29a"; } + +.fa-circle-chevron-up::before { + content: "\f139"; } + +.fa-chevron-circle-up::before { + content: "\f139"; } + +.fa-lari-sign::before { + content: "\e1c8"; } + +.fa-volcano::before { + content: "\f770"; } + +.fa-person-walking-dashed-line-arrow-right::before { + content: "\e553"; } + +.fa-sterling-sign::before { + content: "\f154"; } + +.fa-gbp::before { + content: "\f154"; } + +.fa-pound-sign::before { + content: "\f154"; } + +.fa-viruses::before { + content: "\e076"; } + +.fa-square-person-confined::before { + content: "\e577"; } + +.fa-user-tie::before { + content: "\f508"; } + +.fa-arrow-down-long::before { + content: "\f175"; } + +.fa-long-arrow-down::before { + content: "\f175"; } + +.fa-tent-arrow-down-to-line::before { + content: "\e57e"; } + +.fa-certificate::before { + content: "\f0a3"; } + +.fa-reply-all::before { + content: "\f122"; } + +.fa-mail-reply-all::before { + content: "\f122"; } + +.fa-suitcase::before { + content: "\f0f2"; } + +.fa-person-skating::before { + content: "\f7c5"; } + +.fa-skating::before { + content: "\f7c5"; } + +.fa-filter-circle-dollar::before { + content: "\f662"; } + +.fa-funnel-dollar::before { + content: "\f662"; } + +.fa-camera-retro::before { + content: "\f083"; } + +.fa-circle-arrow-down::before { + content: "\f0ab"; } + +.fa-arrow-circle-down::before { + content: "\f0ab"; } + +.fa-file-import::before { + content: "\f56f"; } + +.fa-arrow-right-to-file::before { + content: "\f56f"; } + +.fa-square-arrow-up-right::before { + content: "\f14c"; } + +.fa-external-link-square::before { + content: "\f14c"; } + +.fa-box-open::before { + content: "\f49e"; } + +.fa-scroll::before { + content: "\f70e"; } + +.fa-spa::before { + content: "\f5bb"; } + +.fa-location-pin-lock::before { + content: "\e51f"; } + +.fa-pause::before { + content: "\f04c"; } + +.fa-hill-avalanche::before { + content: "\e507"; } + +.fa-temperature-empty::before { + content: "\f2cb"; } + +.fa-temperature-0::before { + content: "\f2cb"; } + +.fa-thermometer-0::before { + content: "\f2cb"; } + +.fa-thermometer-empty::before { + content: "\f2cb"; } + +.fa-bomb::before { + content: "\f1e2"; } + +.fa-registered::before { + content: "\f25d"; } + +.fa-address-card::before { + content: "\f2bb"; } + +.fa-contact-card::before { + content: "\f2bb"; } + +.fa-vcard::before { + content: "\f2bb"; } + +.fa-scale-unbalanced-flip::before { + content: "\f516"; } + +.fa-balance-scale-right::before { + content: "\f516"; } + +.fa-subscript::before { + content: "\f12c"; } + +.fa-diamond-turn-right::before { + content: "\f5eb"; } + +.fa-directions::before { + content: "\f5eb"; } + +.fa-burst::before { + content: "\e4dc"; } + +.fa-house-laptop::before { + content: "\e066"; } + +.fa-laptop-house::before { + content: "\e066"; } + +.fa-face-tired::before { + content: "\f5c8"; } + +.fa-tired::before { + content: "\f5c8"; } + +.fa-money-bills::before { + content: "\e1f3"; } + +.fa-smog::before { + content: "\f75f"; } + +.fa-crutch::before { + content: "\f7f7"; } + +.fa-cloud-arrow-up::before { + content: "\f0ee"; } + +.fa-cloud-upload::before { + content: "\f0ee"; } + +.fa-cloud-upload-alt::before { + content: "\f0ee"; } + +.fa-palette::before { + content: "\f53f"; } + +.fa-arrows-turn-right::before { + content: "\e4c0"; } + +.fa-vest::before { + content: "\e085"; } + +.fa-ferry::before { + content: "\e4ea"; } + +.fa-arrows-down-to-people::before { + content: "\e4b9"; } + +.fa-seedling::before { + content: "\f4d8"; } + +.fa-sprout::before { + content: "\f4d8"; } + +.fa-left-right::before { + content: "\f337"; } + +.fa-arrows-alt-h::before { + content: "\f337"; } + +.fa-boxes-packing::before { + content: "\e4c7"; } + +.fa-circle-arrow-left::before { + content: "\f0a8"; } + +.fa-arrow-circle-left::before { + content: "\f0a8"; } + +.fa-group-arrows-rotate::before { + content: "\e4f6"; } + +.fa-bowl-food::before { + content: "\e4c6"; } + +.fa-candy-cane::before { + content: "\f786"; } + +.fa-arrow-down-wide-short::before { + content: "\f160"; } + +.fa-sort-amount-asc::before { + content: "\f160"; } + +.fa-sort-amount-down::before { + content: "\f160"; } + +.fa-cloud-bolt::before { + content: "\f76c"; } + +.fa-thunderstorm::before { + content: "\f76c"; } + +.fa-text-slash::before { + content: "\f87d"; } + +.fa-remove-format::before { + content: "\f87d"; } + +.fa-face-smile-wink::before { + content: "\f4da"; } + +.fa-smile-wink::before { + content: "\f4da"; } + +.fa-file-word::before { + content: "\f1c2"; } + +.fa-file-powerpoint::before { + content: "\f1c4"; } + +.fa-arrows-left-right::before { + content: "\f07e"; } + +.fa-arrows-h::before { + content: "\f07e"; } + +.fa-house-lock::before { + content: "\e510"; } + +.fa-cloud-arrow-down::before { + content: "\f0ed"; } + +.fa-cloud-download::before { + content: "\f0ed"; } + +.fa-cloud-download-alt::before { + content: "\f0ed"; } + +.fa-children::before { + content: "\e4e1"; } + +.fa-chalkboard::before { + content: "\f51b"; } + +.fa-blackboard::before { + content: "\f51b"; } + +.fa-user-large-slash::before { + content: "\f4fa"; } + +.fa-user-alt-slash::before { + content: "\f4fa"; } + +.fa-envelope-open::before { + content: "\f2b6"; } + +.fa-handshake-simple-slash::before { + content: "\e05f"; } + +.fa-handshake-alt-slash::before { + content: "\e05f"; } + +.fa-mattress-pillow::before { + content: "\e525"; } + +.fa-guarani-sign::before { + content: "\e19a"; } + +.fa-arrows-rotate::before { + content: "\f021"; } + +.fa-refresh::before { + content: "\f021"; } + +.fa-sync::before { + content: "\f021"; } + +.fa-fire-extinguisher::before { + content: "\f134"; } + +.fa-cruzeiro-sign::before { + content: "\e152"; } + +.fa-greater-than-equal::before { + content: "\f532"; } + +.fa-shield-halved::before { + content: "\f3ed"; } + +.fa-shield-alt::before { + content: "\f3ed"; } + +.fa-book-atlas::before { + content: "\f558"; } + +.fa-atlas::before { + content: "\f558"; } + +.fa-virus::before { + content: "\e074"; } + +.fa-envelope-circle-check::before { + content: "\e4e8"; } + +.fa-layer-group::before { + content: "\f5fd"; } + +.fa-arrows-to-dot::before { + content: "\e4be"; } + +.fa-archway::before { + content: "\f557"; } + +.fa-heart-circle-check::before { + content: "\e4fd"; } + +.fa-house-chimney-crack::before { + content: "\f6f1"; } + +.fa-house-damage::before { + content: "\f6f1"; } + +.fa-file-zipper::before { + content: "\f1c6"; } + +.fa-file-archive::before { + content: "\f1c6"; } + +.fa-square::before { + content: "\f0c8"; } + +.fa-martini-glass-empty::before { + content: "\f000"; } + +.fa-glass-martini::before { + content: "\f000"; } + +.fa-couch::before { + content: "\f4b8"; } + +.fa-cedi-sign::before { + content: "\e0df"; } + +.fa-italic::before { + content: "\f033"; } + +.fa-church::before { + content: "\f51d"; } + +.fa-comments-dollar::before { + content: "\f653"; } + +.fa-democrat::before { + content: "\f747"; } + +.fa-z::before { + content: "\5a"; } + +.fa-person-skiing::before { + content: "\f7c9"; } + +.fa-skiing::before { + content: "\f7c9"; } + +.fa-road-lock::before { + content: "\e567"; } + +.fa-a::before { + content: "\41"; } + +.fa-temperature-arrow-down::before { + content: "\e03f"; } + +.fa-temperature-down::before { + content: "\e03f"; } + +.fa-feather-pointed::before { + content: "\f56b"; } + +.fa-feather-alt::before { + content: "\f56b"; } + +.fa-p::before { + content: "\50"; } + +.fa-snowflake::before { + content: "\f2dc"; } + +.fa-newspaper::before { + content: "\f1ea"; } + +.fa-rectangle-ad::before { + content: "\f641"; } + +.fa-ad::before { + content: "\f641"; } + +.fa-circle-arrow-right::before { + content: "\f0a9"; } + +.fa-arrow-circle-right::before { + content: "\f0a9"; } + +.fa-filter-circle-xmark::before { + content: "\e17b"; } + +.fa-locust::before { + content: "\e520"; } + +.fa-sort::before { + content: "\f0dc"; } + +.fa-unsorted::before { + content: "\f0dc"; } + +.fa-list-ol::before { + content: "\f0cb"; } + +.fa-list-1-2::before { + content: "\f0cb"; } + +.fa-list-numeric::before { + content: "\f0cb"; } + +.fa-person-dress-burst::before { + content: "\e544"; } + +.fa-money-check-dollar::before { + content: "\f53d"; } + +.fa-money-check-alt::before { + content: "\f53d"; } + +.fa-vector-square::before { + content: "\f5cb"; } + +.fa-bread-slice::before { + content: "\f7ec"; } + +.fa-language::before { + content: "\f1ab"; } + +.fa-face-kiss-wink-heart::before { + content: "\f598"; } + +.fa-kiss-wink-heart::before { + content: "\f598"; } + +.fa-filter::before { + content: "\f0b0"; } + +.fa-question::before { + content: "\3f"; } + +.fa-file-signature::before { + content: "\f573"; } + +.fa-up-down-left-right::before { + content: "\f0b2"; } + +.fa-arrows-alt::before { + content: "\f0b2"; } + +.fa-house-chimney-user::before { + content: "\e065"; } + +.fa-hand-holding-heart::before { + content: "\f4be"; } + +.fa-puzzle-piece::before { + content: "\f12e"; } + +.fa-money-check::before { + content: "\f53c"; } + +.fa-star-half-stroke::before { + content: "\f5c0"; } + +.fa-star-half-alt::before { + content: "\f5c0"; } + +.fa-code::before { + content: "\f121"; } + +.fa-whiskey-glass::before { + content: "\f7a0"; } + +.fa-glass-whiskey::before { + content: "\f7a0"; } + +.fa-building-circle-exclamation::before { + content: "\e4d3"; } + +.fa-magnifying-glass-chart::before { + content: "\e522"; } + +.fa-arrow-up-right-from-square::before { + content: "\f08e"; } + +.fa-external-link::before { + content: "\f08e"; } + +.fa-cubes-stacked::before { + content: "\e4e6"; } + +.fa-won-sign::before { + content: "\f159"; } + +.fa-krw::before { + content: "\f159"; } + +.fa-won::before { + content: "\f159"; } + +.fa-virus-covid::before { + content: "\e4a8"; } + +.fa-austral-sign::before { + content: "\e0a9"; } + +.fa-f::before { + content: "\46"; } + +.fa-leaf::before { + content: "\f06c"; } + +.fa-road::before { + content: "\f018"; } + +.fa-taxi::before { + content: "\f1ba"; } + +.fa-cab::before { + content: "\f1ba"; } + +.fa-person-circle-plus::before { + content: "\e541"; } + +.fa-chart-pie::before { + content: "\f200"; } + +.fa-pie-chart::before { + content: "\f200"; } + +.fa-bolt-lightning::before { + content: "\e0b7"; } + +.fa-sack-xmark::before { + content: "\e56a"; } + +.fa-file-excel::before { + content: "\f1c3"; } + +.fa-file-contract::before { + content: "\f56c"; } + +.fa-fish-fins::before { + content: "\e4f2"; } + +.fa-building-flag::before { + content: "\e4d5"; } + +.fa-face-grin-beam::before { + content: "\f582"; } + +.fa-grin-beam::before { + content: "\f582"; } + +.fa-object-ungroup::before { + content: "\f248"; } + +.fa-poop::before { + content: "\f619"; } + +.fa-location-pin::before { + content: "\f041"; } + +.fa-map-marker::before { + content: "\f041"; } + +.fa-kaaba::before { + content: "\f66b"; } + +.fa-toilet-paper::before { + content: "\f71e"; } + +.fa-helmet-safety::before { + content: "\f807"; } + +.fa-hard-hat::before { + content: "\f807"; } + +.fa-hat-hard::before { + content: "\f807"; } + +.fa-eject::before { + content: "\f052"; } + +.fa-circle-right::before { + content: "\f35a"; } + +.fa-arrow-alt-circle-right::before { + content: "\f35a"; } + +.fa-plane-circle-check::before { + content: "\e555"; } + +.fa-face-rolling-eyes::before { + content: "\f5a5"; } + +.fa-meh-rolling-eyes::before { + content: "\f5a5"; } + +.fa-object-group::before { + content: "\f247"; } + +.fa-chart-line::before { + content: "\f201"; } + +.fa-line-chart::before { + content: "\f201"; } + +.fa-mask-ventilator::before { + content: "\e524"; } + +.fa-arrow-right::before { + content: "\f061"; } + +.fa-signs-post::before { + content: "\f277"; } + +.fa-map-signs::before { + content: "\f277"; } + +.fa-cash-register::before { + content: "\f788"; } + +.fa-person-circle-question::before { + content: "\e542"; } + +.fa-h::before { + content: "\48"; } + +.fa-tarp::before { + content: "\e57b"; } + +.fa-screwdriver-wrench::before { + content: "\f7d9"; } + +.fa-tools::before { + content: "\f7d9"; } + +.fa-arrows-to-eye::before { + content: "\e4bf"; } + +.fa-plug-circle-bolt::before { + content: "\e55b"; } + +.fa-heart::before { + content: "\f004"; } + +.fa-mars-and-venus::before { + content: "\f224"; } + +.fa-house-user::before { + content: "\e1b0"; } + +.fa-home-user::before { + content: "\e1b0"; } + +.fa-dumpster-fire::before { + content: "\f794"; } + +.fa-house-crack::before { + content: "\e3b1"; } + +.fa-martini-glass-citrus::before { + content: "\f561"; } + +.fa-cocktail::before { + content: "\f561"; } + +.fa-face-surprise::before { + content: "\f5c2"; } + +.fa-surprise::before { + content: "\f5c2"; } + +.fa-bottle-water::before { + content: "\e4c5"; } + +.fa-circle-pause::before { + content: "\f28b"; } + +.fa-pause-circle::before { + content: "\f28b"; } + +.fa-toilet-paper-slash::before { + content: "\e072"; } + +.fa-apple-whole::before { + content: "\f5d1"; } + +.fa-apple-alt::before { + content: "\f5d1"; } + +.fa-kitchen-set::before { + content: "\e51a"; } + +.fa-r::before { + content: "\52"; } + +.fa-temperature-quarter::before { + content: "\f2ca"; } + +.fa-temperature-1::before { + content: "\f2ca"; } + +.fa-thermometer-1::before { + content: "\f2ca"; } + +.fa-thermometer-quarter::before { + content: "\f2ca"; } + +.fa-cube::before { + content: "\f1b2"; } + +.fa-bitcoin-sign::before { + content: "\e0b4"; } + +.fa-shield-dog::before { + content: "\e573"; } + +.fa-solar-panel::before { + content: "\f5ba"; } + +.fa-lock-open::before { + content: "\f3c1"; } + +.fa-elevator::before { + content: "\e16d"; } + +.fa-money-bill-transfer::before { + content: "\e528"; } + +.fa-money-bill-trend-up::before { + content: "\e529"; } + +.fa-house-flood-water-circle-arrow-right::before { + content: "\e50f"; } + +.fa-square-poll-horizontal::before { + content: "\f682"; } + +.fa-poll-h::before { + content: "\f682"; } + +.fa-circle::before { + content: "\f111"; } + +.fa-backward-fast::before { + content: "\f049"; } + +.fa-fast-backward::before { + content: "\f049"; } + +.fa-recycle::before { + content: "\f1b8"; } + +.fa-user-astronaut::before { + content: "\f4fb"; } + +.fa-plane-slash::before { + content: "\e069"; } + +.fa-trademark::before { + content: "\f25c"; } + +.fa-basketball::before { + content: "\f434"; } + +.fa-basketball-ball::before { + content: "\f434"; } + +.fa-satellite-dish::before { + content: "\f7c0"; } + +.fa-circle-up::before { + content: "\f35b"; } + +.fa-arrow-alt-circle-up::before { + content: "\f35b"; } + +.fa-mobile-screen-button::before { + content: "\f3cd"; } + +.fa-mobile-alt::before { + content: "\f3cd"; } + +.fa-volume-high::before { + content: "\f028"; } + +.fa-volume-up::before { + content: "\f028"; } + +.fa-users-rays::before { + content: "\e593"; } + +.fa-wallet::before { + content: "\f555"; } + +.fa-clipboard-check::before { + content: "\f46c"; } + +.fa-file-audio::before { + content: "\f1c7"; } + +.fa-burger::before { + content: "\f805"; } + +.fa-hamburger::before { + content: "\f805"; } + +.fa-wrench::before { + content: "\f0ad"; } + +.fa-bugs::before { + content: "\e4d0"; } + +.fa-rupee-sign::before { + content: "\f156"; } + +.fa-rupee::before { + content: "\f156"; } + +.fa-file-image::before { + content: "\f1c5"; } + +.fa-circle-question::before { + content: "\f059"; } + +.fa-question-circle::before { + content: "\f059"; } + +.fa-plane-departure::before { + content: "\f5b0"; } + +.fa-handshake-slash::before { + content: "\e060"; } + +.fa-book-bookmark::before { + content: "\e0bb"; } + +.fa-code-branch::before { + content: "\f126"; } + +.fa-hat-cowboy::before { + content: "\f8c0"; } + +.fa-bridge::before { + content: "\e4c8"; } + +.fa-phone-flip::before { + content: "\f879"; } + +.fa-phone-alt::before { + content: "\f879"; } + +.fa-truck-front::before { + content: "\e2b7"; } + +.fa-cat::before { + content: "\f6be"; } + +.fa-anchor-circle-exclamation::before { + content: "\e4ab"; } + +.fa-truck-field::before { + content: "\e58d"; } + +.fa-route::before { + content: "\f4d7"; } + +.fa-clipboard-question::before { + content: "\e4e3"; } + +.fa-panorama::before { + content: "\e209"; } + +.fa-comment-medical::before { + content: "\f7f5"; } + +.fa-teeth-open::before { + content: "\f62f"; } + +.fa-file-circle-minus::before { + content: "\e4ed"; } + +.fa-tags::before { + content: "\f02c"; } + +.fa-wine-glass::before { + content: "\f4e3"; } + +.fa-forward-fast::before { + content: "\f050"; } + +.fa-fast-forward::before { + content: "\f050"; } + +.fa-face-meh-blank::before { + content: "\f5a4"; } + +.fa-meh-blank::before { + content: "\f5a4"; } + +.fa-square-parking::before { + content: "\f540"; } + +.fa-parking::before { + content: "\f540"; } + +.fa-house-signal::before { + content: "\e012"; } + +.fa-bars-progress::before { + content: "\f828"; } + +.fa-tasks-alt::before { + content: "\f828"; } + +.fa-faucet-drip::before { + content: "\e006"; } + +.fa-cart-flatbed::before { + content: "\f474"; } + +.fa-dolly-flatbed::before { + content: "\f474"; } + +.fa-ban-smoking::before { + content: "\f54d"; } + +.fa-smoking-ban::before { + content: "\f54d"; } + +.fa-terminal::before { + content: "\f120"; } + +.fa-mobile-button::before { + content: "\f10b"; } + +.fa-house-medical-flag::before { + content: "\e514"; } + +.fa-basket-shopping::before { + content: "\f291"; } + +.fa-shopping-basket::before { + content: "\f291"; } + +.fa-tape::before { + content: "\f4db"; } + +.fa-bus-simple::before { + content: "\f55e"; } + +.fa-bus-alt::before { + content: "\f55e"; } + +.fa-eye::before { + content: "\f06e"; } + +.fa-face-sad-cry::before { + content: "\f5b3"; } + +.fa-sad-cry::before { + content: "\f5b3"; } + +.fa-audio-description::before { + content: "\f29e"; } + +.fa-person-military-to-person::before { + content: "\e54c"; } + +.fa-file-shield::before { + content: "\e4f0"; } + +.fa-user-slash::before { + content: "\f506"; } + +.fa-pen::before { + content: "\f304"; } + +.fa-tower-observation::before { + content: "\e586"; } + +.fa-file-code::before { + content: "\f1c9"; } + +.fa-signal::before { + content: "\f012"; } + +.fa-signal-5::before { + content: "\f012"; } + +.fa-signal-perfect::before { + content: "\f012"; } + +.fa-bus::before { + content: "\f207"; } + +.fa-heart-circle-xmark::before { + content: "\e501"; } + +.fa-house-chimney::before { + content: "\e3af"; } + +.fa-home-lg::before { + content: "\e3af"; } + +.fa-window-maximize::before { + content: "\f2d0"; } + +.fa-face-frown::before { + content: "\f119"; } + +.fa-frown::before { + content: "\f119"; } + +.fa-prescription::before { + content: "\f5b1"; } + +.fa-shop::before { + content: "\f54f"; } + +.fa-store-alt::before { + content: "\f54f"; } + +.fa-floppy-disk::before { + content: "\f0c7"; } + +.fa-save::before { + content: "\f0c7"; } + +.fa-vihara::before { + content: "\f6a7"; } + +.fa-scale-unbalanced::before { + content: "\f515"; } + +.fa-balance-scale-left::before { + content: "\f515"; } + +.fa-sort-up::before { + content: "\f0de"; } + +.fa-sort-asc::before { + content: "\f0de"; } + +.fa-comment-dots::before { + content: "\f4ad"; } + +.fa-commenting::before { + content: "\f4ad"; } + +.fa-plant-wilt::before { + content: "\e5aa"; } + +.fa-diamond::before { + content: "\f219"; } + +.fa-face-grin-squint::before { + content: "\f585"; } + +.fa-grin-squint::before { + content: "\f585"; } + +.fa-hand-holding-dollar::before { + content: "\f4c0"; } + +.fa-hand-holding-usd::before { + content: "\f4c0"; } + +.fa-bacterium::before { + content: "\e05a"; } + +.fa-hand-pointer::before { + content: "\f25a"; } + +.fa-drum-steelpan::before { + content: "\f56a"; } + +.fa-hand-scissors::before { + content: "\f257"; } + +.fa-hands-praying::before { + content: "\f684"; } + +.fa-praying-hands::before { + content: "\f684"; } + +.fa-arrow-rotate-right::before { + content: "\f01e"; } + +.fa-arrow-right-rotate::before { + content: "\f01e"; } + +.fa-arrow-rotate-forward::before { + content: "\f01e"; } + +.fa-redo::before { + content: "\f01e"; } + +.fa-biohazard::before { + content: "\f780"; } + +.fa-location-crosshairs::before { + content: "\f601"; } + +.fa-location::before { + content: "\f601"; } + +.fa-mars-double::before { + content: "\f227"; } + +.fa-child-dress::before { + content: "\e59c"; } + +.fa-users-between-lines::before { + content: "\e591"; } + +.fa-lungs-virus::before { + content: "\e067"; } + +.fa-face-grin-tears::before { + content: "\f588"; } + +.fa-grin-tears::before { + content: "\f588"; } + +.fa-phone::before { + content: "\f095"; } + +.fa-calendar-xmark::before { + content: "\f273"; } + +.fa-calendar-times::before { + content: "\f273"; } + +.fa-child-reaching::before { + content: "\e59d"; } + +.fa-head-side-virus::before { + content: "\e064"; } + +.fa-user-gear::before { + content: "\f4fe"; } + +.fa-user-cog::before { + content: "\f4fe"; } + +.fa-arrow-up-1-9::before { + content: "\f163"; } + +.fa-sort-numeric-up::before { + content: "\f163"; } + +.fa-door-closed::before { + content: "\f52a"; } + +.fa-shield-virus::before { + content: "\e06c"; } + +.fa-dice-six::before { + content: "\f526"; } + +.fa-mosquito-net::before { + content: "\e52c"; } + +.fa-bridge-water::before { + content: "\e4ce"; } + +.fa-person-booth::before { + content: "\f756"; } + +.fa-text-width::before { + content: "\f035"; } + +.fa-hat-wizard::before { + content: "\f6e8"; } + +.fa-pen-fancy::before { + content: "\f5ac"; } + +.fa-person-digging::before { + content: "\f85e"; } + +.fa-digging::before { + content: "\f85e"; } + +.fa-trash::before { + content: "\f1f8"; } + +.fa-gauge-simple::before { + content: "\f629"; } + +.fa-gauge-simple-med::before { + content: "\f629"; } + +.fa-tachometer-average::before { + content: "\f629"; } + +.fa-book-medical::before { + content: "\f7e6"; } + +.fa-poo::before { + content: "\f2fe"; } + +.fa-quote-right::before { + content: "\f10e"; } + +.fa-quote-right-alt::before { + content: "\f10e"; } + +.fa-shirt::before { + content: "\f553"; } + +.fa-t-shirt::before { + content: "\f553"; } + +.fa-tshirt::before { + content: "\f553"; } + +.fa-cubes::before { + content: "\f1b3"; } + +.fa-divide::before { + content: "\f529"; } + +.fa-tenge-sign::before { + content: "\f7d7"; } + +.fa-tenge::before { + content: "\f7d7"; } + +.fa-headphones::before { + content: "\f025"; } + +.fa-hands-holding::before { + content: "\f4c2"; } + +.fa-hands-clapping::before { + content: "\e1a8"; } + +.fa-republican::before { + content: "\f75e"; } + +.fa-arrow-left::before { + content: "\f060"; } + +.fa-person-circle-xmark::before { + content: "\e543"; } + +.fa-ruler::before { + content: "\f545"; } + +.fa-align-left::before { + content: "\f036"; } + +.fa-dice-d6::before { + content: "\f6d1"; } + +.fa-restroom::before { + content: "\f7bd"; } + +.fa-j::before { + content: "\4a"; } + +.fa-users-viewfinder::before { + content: "\e595"; } + +.fa-file-video::before { + content: "\f1c8"; } + +.fa-up-right-from-square::before { + content: "\f35d"; } + +.fa-external-link-alt::before { + content: "\f35d"; } + +.fa-table-cells::before { + content: "\f00a"; } + +.fa-th::before { + content: "\f00a"; } + +.fa-file-pdf::before { + content: "\f1c1"; } + +.fa-book-bible::before { + content: "\f647"; } + +.fa-bible::before { + content: "\f647"; } + +.fa-o::before { + content: "\4f"; } + +.fa-suitcase-medical::before { + content: "\f0fa"; } + +.fa-medkit::before { + content: "\f0fa"; } + +.fa-user-secret::before { + content: "\f21b"; } + +.fa-otter::before { + content: "\f700"; } + +.fa-person-dress::before { + content: "\f182"; } + +.fa-female::before { + content: "\f182"; } + +.fa-comment-dollar::before { + content: "\f651"; } + +.fa-business-time::before { + content: "\f64a"; } + +.fa-briefcase-clock::before { + content: "\f64a"; } + +.fa-table-cells-large::before { + content: "\f009"; } + +.fa-th-large::before { + content: "\f009"; } + +.fa-book-tanakh::before { + content: "\f827"; } + +.fa-tanakh::before { + content: "\f827"; } + +.fa-phone-volume::before { + content: "\f2a0"; } + +.fa-volume-control-phone::before { + content: "\f2a0"; } + +.fa-hat-cowboy-side::before { + content: "\f8c1"; } + +.fa-clipboard-user::before { + content: "\f7f3"; } + +.fa-child::before { + content: "\f1ae"; } + +.fa-lira-sign::before { + content: "\f195"; } + +.fa-satellite::before { + content: "\f7bf"; } + +.fa-plane-lock::before { + content: "\e558"; } + +.fa-tag::before { + content: "\f02b"; } + +.fa-comment::before { + content: "\f075"; } + +.fa-cake-candles::before { + content: "\f1fd"; } + +.fa-birthday-cake::before { + content: "\f1fd"; } + +.fa-cake::before { + content: "\f1fd"; } + +.fa-envelope::before { + content: "\f0e0"; } + +.fa-angles-up::before { + content: "\f102"; } + +.fa-angle-double-up::before { + content: "\f102"; } + +.fa-paperclip::before { + content: "\f0c6"; } + +.fa-arrow-right-to-city::before { + content: "\e4b3"; } + +.fa-ribbon::before { + content: "\f4d6"; } + +.fa-lungs::before { + content: "\f604"; } + +.fa-arrow-up-9-1::before { + content: "\f887"; } + +.fa-sort-numeric-up-alt::before { + content: "\f887"; } + +.fa-litecoin-sign::before { + content: "\e1d3"; } + +.fa-border-none::before { + content: "\f850"; } + +.fa-circle-nodes::before { + content: "\e4e2"; } + +.fa-parachute-box::before { + content: "\f4cd"; } + +.fa-indent::before { + content: "\f03c"; } + +.fa-truck-field-un::before { + content: "\e58e"; } + +.fa-hourglass::before { + content: "\f254"; } + +.fa-hourglass-empty::before { + content: "\f254"; } + +.fa-mountain::before { + content: "\f6fc"; } + +.fa-user-doctor::before { + content: "\f0f0"; } + +.fa-user-md::before { + content: "\f0f0"; } + +.fa-circle-info::before { + content: "\f05a"; } + +.fa-info-circle::before { + content: "\f05a"; } + +.fa-cloud-meatball::before { + content: "\f73b"; } + +.fa-camera::before { + content: "\f030"; } + +.fa-camera-alt::before { + content: "\f030"; } + +.fa-square-virus::before { + content: "\e578"; } + +.fa-meteor::before { + content: "\f753"; } + +.fa-car-on::before { + content: "\e4dd"; } + +.fa-sleigh::before { + content: "\f7cc"; } + +.fa-arrow-down-1-9::before { + content: "\f162"; } + +.fa-sort-numeric-asc::before { + content: "\f162"; } + +.fa-sort-numeric-down::before { + content: "\f162"; } + +.fa-hand-holding-droplet::before { + content: "\f4c1"; } + +.fa-hand-holding-water::before { + content: "\f4c1"; } + +.fa-water::before { + content: "\f773"; } + +.fa-calendar-check::before { + content: "\f274"; } + +.fa-braille::before { + content: "\f2a1"; } + +.fa-prescription-bottle-medical::before { + content: "\f486"; } + +.fa-prescription-bottle-alt::before { + content: "\f486"; } + +.fa-landmark::before { + content: "\f66f"; } + +.fa-truck::before { + content: "\f0d1"; } + +.fa-crosshairs::before { + content: "\f05b"; } + +.fa-person-cane::before { + content: "\e53c"; } + +.fa-tent::before { + content: "\e57d"; } + +.fa-vest-patches::before { + content: "\e086"; } + +.fa-check-double::before { + content: "\f560"; } + +.fa-arrow-down-a-z::before { + content: "\f15d"; } + +.fa-sort-alpha-asc::before { + content: "\f15d"; } + +.fa-sort-alpha-down::before { + content: "\f15d"; } + +.fa-money-bill-wheat::before { + content: "\e52a"; } + +.fa-cookie::before { + content: "\f563"; } + +.fa-arrow-rotate-left::before { + content: "\f0e2"; } + +.fa-arrow-left-rotate::before { + content: "\f0e2"; } + +.fa-arrow-rotate-back::before { + content: "\f0e2"; } + +.fa-arrow-rotate-backward::before { + content: "\f0e2"; } + +.fa-undo::before { + content: "\f0e2"; } + +.fa-hard-drive::before { + content: "\f0a0"; } + +.fa-hdd::before { + content: "\f0a0"; } + +.fa-face-grin-squint-tears::before { + content: "\f586"; } + +.fa-grin-squint-tears::before { + content: "\f586"; } + +.fa-dumbbell::before { + content: "\f44b"; } + +.fa-rectangle-list::before { + content: "\f022"; } + +.fa-list-alt::before { + content: "\f022"; } + +.fa-tarp-droplet::before { + content: "\e57c"; } + +.fa-house-medical-circle-check::before { + content: "\e511"; } + +.fa-person-skiing-nordic::before { + content: "\f7ca"; } + +.fa-skiing-nordic::before { + content: "\f7ca"; } + +.fa-calendar-plus::before { + content: "\f271"; } + +.fa-plane-arrival::before { + content: "\f5af"; } + +.fa-circle-left::before { + content: "\f359"; } + +.fa-arrow-alt-circle-left::before { + content: "\f359"; } + +.fa-train-subway::before { + content: "\f239"; } + +.fa-subway::before { + content: "\f239"; } + +.fa-chart-gantt::before { + content: "\e0e4"; } + +.fa-indian-rupee-sign::before { + content: "\e1bc"; } + +.fa-indian-rupee::before { + content: "\e1bc"; } + +.fa-inr::before { + content: "\e1bc"; } + +.fa-crop-simple::before { + content: "\f565"; } + +.fa-crop-alt::before { + content: "\f565"; } + +.fa-money-bill-1::before { + content: "\f3d1"; } + +.fa-money-bill-alt::before { + content: "\f3d1"; } + +.fa-left-long::before { + content: "\f30a"; } + +.fa-long-arrow-alt-left::before { + content: "\f30a"; } + +.fa-dna::before { + content: "\f471"; } + +.fa-virus-slash::before { + content: "\e075"; } + +.fa-minus::before { + content: "\f068"; } + +.fa-subtract::before { + content: "\f068"; } + +.fa-child-rifle::before { + content: "\e4e0"; } + +.fa-chess::before { + content: "\f439"; } + +.fa-arrow-left-long::before { + content: "\f177"; } + +.fa-long-arrow-left::before { + content: "\f177"; } + +.fa-plug-circle-check::before { + content: "\e55c"; } + +.fa-street-view::before { + content: "\f21d"; } + +.fa-franc-sign::before { + content: "\e18f"; } + +.fa-volume-off::before { + content: "\f026"; } + +.fa-hands-asl-interpreting::before { + content: "\f2a3"; } + +.fa-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-asl-interpreting::before { + content: "\f2a3"; } + +.fa-hands-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-gear::before { + content: "\f013"; } + +.fa-cog::before { + content: "\f013"; } + +.fa-droplet-slash::before { + content: "\f5c7"; } + +.fa-tint-slash::before { + content: "\f5c7"; } + +.fa-mosque::before { + content: "\f678"; } + +.fa-mosquito::before { + content: "\e52b"; } + +.fa-star-of-david::before { + content: "\f69a"; } + +.fa-person-military-rifle::before { + content: "\e54b"; } + +.fa-cart-shopping::before { + content: "\f07a"; } + +.fa-shopping-cart::before { + content: "\f07a"; } + +.fa-vials::before { + content: "\f493"; } + +.fa-plug-circle-plus::before { + content: "\e55f"; } + +.fa-place-of-worship::before { + content: "\f67f"; } + +.fa-grip-vertical::before { + content: "\f58e"; } + +.fa-arrow-turn-up::before { + content: "\f148"; } + +.fa-level-up::before { + content: "\f148"; } + +.fa-u::before { + content: "\55"; } + +.fa-square-root-variable::before { + content: "\f698"; } + +.fa-square-root-alt::before { + content: "\f698"; } + +.fa-clock::before { + content: "\f017"; } + +.fa-clock-four::before { + content: "\f017"; } + +.fa-backward-step::before { + content: "\f048"; } + +.fa-step-backward::before { + content: "\f048"; } + +.fa-pallet::before { + content: "\f482"; } + +.fa-faucet::before { + content: "\e005"; } + +.fa-baseball-bat-ball::before { + content: "\f432"; } + +.fa-s::before { + content: "\53"; } + +.fa-timeline::before { + content: "\e29c"; } + +.fa-keyboard::before { + content: "\f11c"; } + +.fa-caret-down::before { + content: "\f0d7"; } + +.fa-house-chimney-medical::before { + content: "\f7f2"; } + +.fa-clinic-medical::before { + content: "\f7f2"; } + +.fa-temperature-three-quarters::before { + content: "\f2c8"; } + +.fa-temperature-3::before { + content: "\f2c8"; } + +.fa-thermometer-3::before { + content: "\f2c8"; } + +.fa-thermometer-three-quarters::before { + content: "\f2c8"; } + +.fa-mobile-screen::before { + content: "\f3cf"; } + +.fa-mobile-android-alt::before { + content: "\f3cf"; } + +.fa-plane-up::before { + content: "\e22d"; } + +.fa-piggy-bank::before { + content: "\f4d3"; } + +.fa-battery-half::before { + content: "\f242"; } + +.fa-battery-3::before { + content: "\f242"; } + +.fa-mountain-city::before { + content: "\e52e"; } + +.fa-coins::before { + content: "\f51e"; } + +.fa-khanda::before { + content: "\f66d"; } + +.fa-sliders::before { + content: "\f1de"; } + +.fa-sliders-h::before { + content: "\f1de"; } + +.fa-folder-tree::before { + content: "\f802"; } + +.fa-network-wired::before { + content: "\f6ff"; } + +.fa-map-pin::before { + content: "\f276"; } + +.fa-hamsa::before { + content: "\f665"; } + +.fa-cent-sign::before { + content: "\e3f5"; } + +.fa-flask::before { + content: "\f0c3"; } + +.fa-person-pregnant::before { + content: "\e31e"; } + +.fa-wand-sparkles::before { + content: "\f72b"; } + +.fa-ellipsis-vertical::before { + content: "\f142"; } + +.fa-ellipsis-v::before { + content: "\f142"; } + +.fa-ticket::before { + content: "\f145"; } + +.fa-power-off::before { + content: "\f011"; } + +.fa-right-long::before { + content: "\f30b"; } + +.fa-long-arrow-alt-right::before { + content: "\f30b"; } + +.fa-flag-usa::before { + content: "\f74d"; } + +.fa-laptop-file::before { + content: "\e51d"; } + +.fa-tty::before { + content: "\f1e4"; } + +.fa-teletype::before { + content: "\f1e4"; } + +.fa-diagram-next::before { + content: "\e476"; } + +.fa-person-rifle::before { + content: "\e54e"; } + +.fa-house-medical-circle-exclamation::before { + content: "\e512"; } + +.fa-closed-captioning::before { + content: "\f20a"; } + +.fa-person-hiking::before { + content: "\f6ec"; } + +.fa-hiking::before { + content: "\f6ec"; } + +.fa-venus-double::before { + content: "\f226"; } + +.fa-images::before { + content: "\f302"; } + +.fa-calculator::before { + content: "\f1ec"; } + +.fa-people-pulling::before { + content: "\e535"; } + +.fa-n::before { + content: "\4e"; } + +.fa-cable-car::before { + content: "\f7da"; } + +.fa-tram::before { + content: "\f7da"; } + +.fa-cloud-rain::before { + content: "\f73d"; } + +.fa-building-circle-xmark::before { + content: "\e4d4"; } + +.fa-ship::before { + content: "\f21a"; } + +.fa-arrows-down-to-line::before { + content: "\e4b8"; } + +.fa-download::before { + content: "\f019"; } + +.fa-face-grin::before { + content: "\f580"; } + +.fa-grin::before { + content: "\f580"; } + +.fa-delete-left::before { + content: "\f55a"; } + +.fa-backspace::before { + content: "\f55a"; } + +.fa-eye-dropper::before { + content: "\f1fb"; } + +.fa-eye-dropper-empty::before { + content: "\f1fb"; } + +.fa-eyedropper::before { + content: "\f1fb"; } + +.fa-file-circle-check::before { + content: "\e5a0"; } + +.fa-forward::before { + content: "\f04e"; } + +.fa-mobile::before { + content: "\f3ce"; } + +.fa-mobile-android::before { + content: "\f3ce"; } + +.fa-mobile-phone::before { + content: "\f3ce"; } + +.fa-face-meh::before { + content: "\f11a"; } + +.fa-meh::before { + content: "\f11a"; } + +.fa-align-center::before { + content: "\f037"; } + +.fa-book-skull::before { + content: "\f6b7"; } + +.fa-book-dead::before { + content: "\f6b7"; } + +.fa-id-card::before { + content: "\f2c2"; } + +.fa-drivers-license::before { + content: "\f2c2"; } + +.fa-outdent::before { + content: "\f03b"; } + +.fa-dedent::before { + content: "\f03b"; } + +.fa-heart-circle-exclamation::before { + content: "\e4fe"; } + +.fa-house::before { + content: "\f015"; } + +.fa-home::before { + content: "\f015"; } + +.fa-home-alt::before { + content: "\f015"; } + +.fa-home-lg-alt::before { + content: "\f015"; } + +.fa-calendar-week::before { + content: "\f784"; } + +.fa-laptop-medical::before { + content: "\f812"; } + +.fa-b::before { + content: "\42"; } + +.fa-file-medical::before { + content: "\f477"; } + +.fa-dice-one::before { + content: "\f525"; } + +.fa-kiwi-bird::before { + content: "\f535"; } + +.fa-arrow-right-arrow-left::before { + content: "\f0ec"; } + +.fa-exchange::before { + content: "\f0ec"; } + +.fa-rotate-right::before { + content: "\f2f9"; } + +.fa-redo-alt::before { + content: "\f2f9"; } + +.fa-rotate-forward::before { + content: "\f2f9"; } + +.fa-utensils::before { + content: "\f2e7"; } + +.fa-cutlery::before { + content: "\f2e7"; } + +.fa-arrow-up-wide-short::before { + content: "\f161"; } + +.fa-sort-amount-up::before { + content: "\f161"; } + +.fa-mill-sign::before { + content: "\e1ed"; } + +.fa-bowl-rice::before { + content: "\e2eb"; } + +.fa-skull::before { + content: "\f54c"; } + +.fa-tower-broadcast::before { + content: "\f519"; } + +.fa-broadcast-tower::before { + content: "\f519"; } + +.fa-truck-pickup::before { + content: "\f63c"; } + +.fa-up-long::before { + content: "\f30c"; } + +.fa-long-arrow-alt-up::before { + content: "\f30c"; } + +.fa-stop::before { + content: "\f04d"; } + +.fa-code-merge::before { + content: "\f387"; } + +.fa-upload::before { + content: "\f093"; } + +.fa-hurricane::before { + content: "\f751"; } + +.fa-mound::before { + content: "\e52d"; } + +.fa-toilet-portable::before { + content: "\e583"; } + +.fa-compact-disc::before { + content: "\f51f"; } + +.fa-file-arrow-down::before { + content: "\f56d"; } + +.fa-file-download::before { + content: "\f56d"; } + +.fa-caravan::before { + content: "\f8ff"; } + +.fa-shield-cat::before { + content: "\e572"; } + +.fa-bolt::before { + content: "\f0e7"; } + +.fa-zap::before { + content: "\f0e7"; } + +.fa-glass-water::before { + content: "\e4f4"; } + +.fa-oil-well::before { + content: "\e532"; } + +.fa-vault::before { + content: "\e2c5"; } + +.fa-mars::before { + content: "\f222"; } + +.fa-toilet::before { + content: "\f7d8"; } + +.fa-plane-circle-xmark::before { + content: "\e557"; } + +.fa-yen-sign::before { + content: "\f157"; } + +.fa-cny::before { + content: "\f157"; } + +.fa-jpy::before { + content: "\f157"; } + +.fa-rmb::before { + content: "\f157"; } + +.fa-yen::before { + content: "\f157"; } + +.fa-ruble-sign::before { + content: "\f158"; } + +.fa-rouble::before { + content: "\f158"; } + +.fa-rub::before { + content: "\f158"; } + +.fa-ruble::before { + content: "\f158"; } + +.fa-sun::before { + content: "\f185"; } + +.fa-guitar::before { + content: "\f7a6"; } + +.fa-face-laugh-wink::before { + content: "\f59c"; } + +.fa-laugh-wink::before { + content: "\f59c"; } + +.fa-horse-head::before { + content: "\f7ab"; } + +.fa-bore-hole::before { + content: "\e4c3"; } + +.fa-industry::before { + content: "\f275"; } + +.fa-circle-down::before { + content: "\f358"; } + +.fa-arrow-alt-circle-down::before { + content: "\f358"; } + +.fa-arrows-turn-to-dots::before { + content: "\e4c1"; } + +.fa-florin-sign::before { + content: "\e184"; } + +.fa-arrow-down-short-wide::before { + content: "\f884"; } + +.fa-sort-amount-desc::before { + content: "\f884"; } + +.fa-sort-amount-down-alt::before { + content: "\f884"; } + +.fa-less-than::before { + content: "\3c"; } + +.fa-angle-down::before { + content: "\f107"; } + +.fa-car-tunnel::before { + content: "\e4de"; } + +.fa-head-side-cough::before { + content: "\e061"; } + +.fa-grip-lines::before { + content: "\f7a4"; } + +.fa-thumbs-down::before { + content: "\f165"; } + +.fa-user-lock::before { + content: "\f502"; } + +.fa-arrow-right-long::before { + content: "\f178"; } + +.fa-long-arrow-right::before { + content: "\f178"; } + +.fa-anchor-circle-xmark::before { + content: "\e4ac"; } + +.fa-ellipsis::before { + content: "\f141"; } + +.fa-ellipsis-h::before { + content: "\f141"; } + +.fa-chess-pawn::before { + content: "\f443"; } + +.fa-kit-medical::before { + content: "\f479"; } + +.fa-first-aid::before { + content: "\f479"; } + +.fa-person-through-window::before { + content: "\e5a9"; } + +.fa-toolbox::before { + content: "\f552"; } + +.fa-hands-holding-circle::before { + content: "\e4fb"; } + +.fa-bug::before { + content: "\f188"; } + +.fa-credit-card::before { + content: "\f09d"; } + +.fa-credit-card-alt::before { + content: "\f09d"; } + +.fa-car::before { + content: "\f1b9"; } + +.fa-automobile::before { + content: "\f1b9"; } + +.fa-hand-holding-hand::before { + content: "\e4f7"; } + +.fa-book-open-reader::before { + content: "\f5da"; } + +.fa-book-reader::before { + content: "\f5da"; } + +.fa-mountain-sun::before { + content: "\e52f"; } + +.fa-arrows-left-right-to-line::before { + content: "\e4ba"; } + +.fa-dice-d20::before { + content: "\f6cf"; } + +.fa-truck-droplet::before { + content: "\e58c"; } + +.fa-file-circle-xmark::before { + content: "\e5a1"; } + +.fa-temperature-arrow-up::before { + content: "\e040"; } + +.fa-temperature-up::before { + content: "\e040"; } + +.fa-medal::before { + content: "\f5a2"; } + +.fa-bed::before { + content: "\f236"; } + +.fa-square-h::before { + content: "\f0fd"; } + +.fa-h-square::before { + content: "\f0fd"; } + +.fa-podcast::before { + content: "\f2ce"; } + +.fa-temperature-full::before { + content: "\f2c7"; } + +.fa-temperature-4::before { + content: "\f2c7"; } + +.fa-thermometer-4::before { + content: "\f2c7"; } + +.fa-thermometer-full::before { + content: "\f2c7"; } + +.fa-bell::before { + content: "\f0f3"; } + +.fa-superscript::before { + content: "\f12b"; } + +.fa-plug-circle-xmark::before { + content: "\e560"; } + +.fa-star-of-life::before { + content: "\f621"; } + +.fa-phone-slash::before { + content: "\f3dd"; } + +.fa-paint-roller::before { + content: "\f5aa"; } + +.fa-handshake-angle::before { + content: "\f4c4"; } + +.fa-hands-helping::before { + content: "\f4c4"; } + +.fa-location-dot::before { + content: "\f3c5"; } + +.fa-map-marker-alt::before { + content: "\f3c5"; } + +.fa-file::before { + content: "\f15b"; } + +.fa-greater-than::before { + content: "\3e"; } + +.fa-person-swimming::before { + content: "\f5c4"; } + +.fa-swimmer::before { + content: "\f5c4"; } + +.fa-arrow-down::before { + content: "\f063"; } + +.fa-droplet::before { + content: "\f043"; } + +.fa-tint::before { + content: "\f043"; } + +.fa-eraser::before { + content: "\f12d"; } + +.fa-earth-americas::before { + content: "\f57d"; } + +.fa-earth::before { + content: "\f57d"; } + +.fa-earth-america::before { + content: "\f57d"; } + +.fa-globe-americas::before { + content: "\f57d"; } + +.fa-person-burst::before { + content: "\e53b"; } + +.fa-dove::before { + content: "\f4ba"; } + +.fa-battery-empty::before { + content: "\f244"; } + +.fa-battery-0::before { + content: "\f244"; } + +.fa-socks::before { + content: "\f696"; } + +.fa-inbox::before { + content: "\f01c"; } + +.fa-section::before { + content: "\e447"; } + +.fa-gauge-high::before { + content: "\f625"; } + +.fa-tachometer-alt::before { + content: "\f625"; } + +.fa-tachometer-alt-fast::before { + content: "\f625"; } + +.fa-envelope-open-text::before { + content: "\f658"; } + +.fa-hospital::before { + content: "\f0f8"; } + +.fa-hospital-alt::before { + content: "\f0f8"; } + +.fa-hospital-wide::before { + content: "\f0f8"; } + +.fa-wine-bottle::before { + content: "\f72f"; } + +.fa-chess-rook::before { + content: "\f447"; } + +.fa-bars-staggered::before { + content: "\f550"; } + +.fa-reorder::before { + content: "\f550"; } + +.fa-stream::before { + content: "\f550"; } + +.fa-dharmachakra::before { + content: "\f655"; } + +.fa-hotdog::before { + content: "\f80f"; } + +.fa-person-walking-with-cane::before { + content: "\f29d"; } + +.fa-blind::before { + content: "\f29d"; } + +.fa-drum::before { + content: "\f569"; } + +.fa-ice-cream::before { + content: "\f810"; } + +.fa-heart-circle-bolt::before { + content: "\e4fc"; } + +.fa-fax::before { + content: "\f1ac"; } + +.fa-paragraph::before { + content: "\f1dd"; } + +.fa-check-to-slot::before { + content: "\f772"; } + +.fa-vote-yea::before { + content: "\f772"; } + +.fa-star-half::before { + content: "\f089"; } + +.fa-boxes-stacked::before { + content: "\f468"; } + +.fa-boxes::before { + content: "\f468"; } + +.fa-boxes-alt::before { + content: "\f468"; } + +.fa-link::before { + content: "\f0c1"; } + +.fa-chain::before { + content: "\f0c1"; } + +.fa-ear-listen::before { + content: "\f2a2"; } + +.fa-assistive-listening-systems::before { + content: "\f2a2"; } + +.fa-tree-city::before { + content: "\e587"; } + +.fa-play::before { + content: "\f04b"; } + +.fa-font::before { + content: "\f031"; } + +.fa-rupiah-sign::before { + content: "\e23d"; } + +.fa-magnifying-glass::before { + content: "\f002"; } + +.fa-search::before { + content: "\f002"; } + +.fa-table-tennis-paddle-ball::before { + content: "\f45d"; } + +.fa-ping-pong-paddle-ball::before { + content: "\f45d"; } + +.fa-table-tennis::before { + content: "\f45d"; } + +.fa-person-dots-from-line::before { + content: "\f470"; } + +.fa-diagnoses::before { + content: "\f470"; } + +.fa-trash-can-arrow-up::before { + content: "\f82a"; } + +.fa-trash-restore-alt::before { + content: "\f82a"; } + +.fa-naira-sign::before { + content: "\e1f6"; } + +.fa-cart-arrow-down::before { + content: "\f218"; } + +.fa-walkie-talkie::before { + content: "\f8ef"; } + +.fa-file-pen::before { + content: "\f31c"; } + +.fa-file-edit::before { + content: "\f31c"; } + +.fa-receipt::before { + content: "\f543"; } + +.fa-square-pen::before { + content: "\f14b"; } + +.fa-pen-square::before { + content: "\f14b"; } + +.fa-pencil-square::before { + content: "\f14b"; } + +.fa-suitcase-rolling::before { + content: "\f5c1"; } + +.fa-person-circle-exclamation::before { + content: "\e53f"; } + +.fa-chevron-down::before { + content: "\f078"; } + +.fa-battery-full::before { + content: "\f240"; } + +.fa-battery::before { + content: "\f240"; } + +.fa-battery-5::before { + content: "\f240"; } + +.fa-skull-crossbones::before { + content: "\f714"; } + +.fa-code-compare::before { + content: "\e13a"; } + +.fa-list-ul::before { + content: "\f0ca"; } + +.fa-list-dots::before { + content: "\f0ca"; } + +.fa-school-lock::before { + content: "\e56f"; } + +.fa-tower-cell::before { + content: "\e585"; } + +.fa-down-long::before { + content: "\f309"; } + +.fa-long-arrow-alt-down::before { + content: "\f309"; } + +.fa-ranking-star::before { + content: "\e561"; } + +.fa-chess-king::before { + content: "\f43f"; } + +.fa-person-harassing::before { + content: "\e549"; } + +.fa-brazilian-real-sign::before { + content: "\e46c"; } + +.fa-landmark-dome::before { + content: "\f752"; } + +.fa-landmark-alt::before { + content: "\f752"; } + +.fa-arrow-up::before { + content: "\f062"; } + +.fa-tv::before { + content: "\f26c"; } + +.fa-television::before { + content: "\f26c"; } + +.fa-tv-alt::before { + content: "\f26c"; } + +.fa-shrimp::before { + content: "\e448"; } + +.fa-list-check::before { + content: "\f0ae"; } + +.fa-tasks::before { + content: "\f0ae"; } + +.fa-jug-detergent::before { + content: "\e519"; } + +.fa-circle-user::before { + content: "\f2bd"; } + +.fa-user-circle::before { + content: "\f2bd"; } + +.fa-user-shield::before { + content: "\f505"; } + +.fa-wind::before { + content: "\f72e"; } + +.fa-car-burst::before { + content: "\f5e1"; } + +.fa-car-crash::before { + content: "\f5e1"; } + +.fa-y::before { + content: "\59"; } + +.fa-person-snowboarding::before { + content: "\f7ce"; } + +.fa-snowboarding::before { + content: "\f7ce"; } + +.fa-truck-fast::before { + content: "\f48b"; } + +.fa-shipping-fast::before { + content: "\f48b"; } + +.fa-fish::before { + content: "\f578"; } + +.fa-user-graduate::before { + content: "\f501"; } + +.fa-circle-half-stroke::before { + content: "\f042"; } + +.fa-adjust::before { + content: "\f042"; } + +.fa-clapperboard::before { + content: "\e131"; } + +.fa-circle-radiation::before { + content: "\f7ba"; } + +.fa-radiation-alt::before { + content: "\f7ba"; } + +.fa-baseball::before { + content: "\f433"; } + +.fa-baseball-ball::before { + content: "\f433"; } + +.fa-jet-fighter-up::before { + content: "\e518"; } + +.fa-diagram-project::before { + content: "\f542"; } + +.fa-project-diagram::before { + content: "\f542"; } + +.fa-copy::before { + content: "\f0c5"; } + +.fa-volume-xmark::before { + content: "\f6a9"; } + +.fa-volume-mute::before { + content: "\f6a9"; } + +.fa-volume-times::before { + content: "\f6a9"; } + +.fa-hand-sparkles::before { + content: "\e05d"; } + +.fa-grip::before { + content: "\f58d"; } + +.fa-grip-horizontal::before { + content: "\f58d"; } + +.fa-share-from-square::before { + content: "\f14d"; } + +.fa-share-square::before { + content: "\f14d"; } + +.fa-gun::before { + content: "\e19b"; } + +.fa-square-phone::before { + content: "\f098"; } + +.fa-phone-square::before { + content: "\f098"; } + +.fa-plus::before { + content: "\2b"; } + +.fa-add::before { + content: "\2b"; } + +.fa-expand::before { + content: "\f065"; } + +.fa-computer::before { + content: "\e4e5"; } + +.fa-xmark::before { + content: "\f00d"; } + +.fa-close::before { + content: "\f00d"; } + +.fa-multiply::before { + content: "\f00d"; } + +.fa-remove::before { + content: "\f00d"; } + +.fa-times::before { + content: "\f00d"; } + +.fa-arrows-up-down-left-right::before { + content: "\f047"; } + +.fa-arrows::before { + content: "\f047"; } + +.fa-chalkboard-user::before { + content: "\f51c"; } + +.fa-chalkboard-teacher::before { + content: "\f51c"; } + +.fa-peso-sign::before { + content: "\e222"; } + +.fa-building-shield::before { + content: "\e4d8"; } + +.fa-baby::before { + content: "\f77c"; } + +.fa-users-line::before { + content: "\e592"; } + +.fa-quote-left::before { + content: "\f10d"; } + +.fa-quote-left-alt::before { + content: "\f10d"; } + +.fa-tractor::before { + content: "\f722"; } + +.fa-trash-arrow-up::before { + content: "\f829"; } + +.fa-trash-restore::before { + content: "\f829"; } + +.fa-arrow-down-up-lock::before { + content: "\e4b0"; } + +.fa-lines-leaning::before { + content: "\e51e"; } + +.fa-ruler-combined::before { + content: "\f546"; } + +.fa-copyright::before { + content: "\f1f9"; } + +.fa-equals::before { + content: "\3d"; } + +.fa-blender::before { + content: "\f517"; } + +.fa-teeth::before { + content: "\f62e"; } + +.fa-shekel-sign::before { + content: "\f20b"; } + +.fa-ils::before { + content: "\f20b"; } + +.fa-shekel::before { + content: "\f20b"; } + +.fa-sheqel::before { + content: "\f20b"; } + +.fa-sheqel-sign::before { + content: "\f20b"; } + +.fa-map::before { + content: "\f279"; } + +.fa-rocket::before { + content: "\f135"; } + +.fa-photo-film::before { + content: "\f87c"; } + +.fa-photo-video::before { + content: "\f87c"; } + +.fa-folder-minus::before { + content: "\f65d"; } + +.fa-store::before { + content: "\f54e"; } + +.fa-arrow-trend-up::before { + content: "\e098"; } + +.fa-plug-circle-minus::before { + content: "\e55e"; } + +.fa-sign-hanging::before { + content: "\f4d9"; } + +.fa-sign::before { + content: "\f4d9"; } + +.fa-bezier-curve::before { + content: "\f55b"; } + +.fa-bell-slash::before { + content: "\f1f6"; } + +.fa-tablet::before { + content: "\f3fb"; } + +.fa-tablet-android::before { + content: "\f3fb"; } + +.fa-school-flag::before { + content: "\e56e"; } + +.fa-fill::before { + content: "\f575"; } + +.fa-angle-up::before { + content: "\f106"; } + +.fa-drumstick-bite::before { + content: "\f6d7"; } + +.fa-holly-berry::before { + content: "\f7aa"; } + +.fa-chevron-left::before { + content: "\f053"; } + +.fa-bacteria::before { + content: "\e059"; } + +.fa-hand-lizard::before { + content: "\f258"; } + +.fa-disease::before { + content: "\f7fa"; } + +.fa-briefcase-medical::before { + content: "\f469"; } + +.fa-genderless::before { + content: "\f22d"; } + +.fa-chevron-right::before { + content: "\f054"; } + +.fa-retweet::before { + content: "\f079"; } + +.fa-car-rear::before { + content: "\f5de"; } + +.fa-car-alt::before { + content: "\f5de"; } + +.fa-pump-soap::before { + content: "\e06b"; } + +.fa-video-slash::before { + content: "\f4e2"; } + +.fa-battery-quarter::before { + content: "\f243"; } + +.fa-battery-2::before { + content: "\f243"; } + +.fa-radio::before { + content: "\f8d7"; } + +.fa-baby-carriage::before { + content: "\f77d"; } + +.fa-carriage-baby::before { + content: "\f77d"; } + +.fa-traffic-light::before { + content: "\f637"; } + +.fa-thermometer::before { + content: "\f491"; } + +.fa-vr-cardboard::before { + content: "\f729"; } + +.fa-hand-middle-finger::before { + content: "\f806"; } + +.fa-percent::before { + content: "\25"; } + +.fa-percentage::before { + content: "\25"; } + +.fa-truck-moving::before { + content: "\f4df"; } + +.fa-glass-water-droplet::before { + content: "\e4f5"; } + +.fa-display::before { + content: "\e163"; } + +.fa-face-smile::before { + content: "\f118"; } + +.fa-smile::before { + content: "\f118"; } + +.fa-thumbtack::before { + content: "\f08d"; } + +.fa-thumb-tack::before { + content: "\f08d"; } + +.fa-trophy::before { + content: "\f091"; } + +.fa-person-praying::before { + content: "\f683"; } + +.fa-pray::before { + content: "\f683"; } + +.fa-hammer::before { + content: "\f6e3"; } + +.fa-hand-peace::before { + content: "\f25b"; } + +.fa-rotate::before { + content: "\f2f1"; } + +.fa-sync-alt::before { + content: "\f2f1"; } + +.fa-spinner::before { + content: "\f110"; } + +.fa-robot::before { + content: "\f544"; } + +.fa-peace::before { + content: "\f67c"; } + +.fa-gears::before { + content: "\f085"; } + +.fa-cogs::before { + content: "\f085"; } + +.fa-warehouse::before { + content: "\f494"; } + +.fa-arrow-up-right-dots::before { + content: "\e4b7"; } + +.fa-splotch::before { + content: "\f5bc"; } + +.fa-face-grin-hearts::before { + content: "\f584"; } + +.fa-grin-hearts::before { + content: "\f584"; } + +.fa-dice-four::before { + content: "\f524"; } + +.fa-sim-card::before { + content: "\f7c4"; } + +.fa-transgender::before { + content: "\f225"; } + +.fa-transgender-alt::before { + content: "\f225"; } + +.fa-mercury::before { + content: "\f223"; } + +.fa-arrow-turn-down::before { + content: "\f149"; } + +.fa-level-down::before { + content: "\f149"; } + +.fa-person-falling-burst::before { + content: "\e547"; } + +.fa-award::before { + content: "\f559"; } + +.fa-ticket-simple::before { + content: "\f3ff"; } + +.fa-ticket-alt::before { + content: "\f3ff"; } + +.fa-building::before { + content: "\f1ad"; } + +.fa-angles-left::before { + content: "\f100"; } + +.fa-angle-double-left::before { + content: "\f100"; } + +.fa-qrcode::before { + content: "\f029"; } + +.fa-clock-rotate-left::before { + content: "\f1da"; } + +.fa-history::before { + content: "\f1da"; } + +.fa-face-grin-beam-sweat::before { + content: "\f583"; } + +.fa-grin-beam-sweat::before { + content: "\f583"; } + +.fa-file-export::before { + content: "\f56e"; } + +.fa-arrow-right-from-file::before { + content: "\f56e"; } + +.fa-shield::before { + content: "\f132"; } + +.fa-shield-blank::before { + content: "\f132"; } + +.fa-arrow-up-short-wide::before { + content: "\f885"; } + +.fa-sort-amount-up-alt::before { + content: "\f885"; } + +.fa-house-medical::before { + content: "\e3b2"; } + +.fa-golf-ball-tee::before { + content: "\f450"; } + +.fa-golf-ball::before { + content: "\f450"; } + +.fa-circle-chevron-left::before { + content: "\f137"; } + +.fa-chevron-circle-left::before { + content: "\f137"; } + +.fa-house-chimney-window::before { + content: "\e00d"; } + +.fa-pen-nib::before { + content: "\f5ad"; } + +.fa-tent-arrow-turn-left::before { + content: "\e580"; } + +.fa-tents::before { + content: "\e582"; } + +.fa-wand-magic::before { + content: "\f0d0"; } + +.fa-magic::before { + content: "\f0d0"; } + +.fa-dog::before { + content: "\f6d3"; } + +.fa-carrot::before { + content: "\f787"; } + +.fa-moon::before { + content: "\f186"; } + +.fa-wine-glass-empty::before { + content: "\f5ce"; } + +.fa-wine-glass-alt::before { + content: "\f5ce"; } + +.fa-cheese::before { + content: "\f7ef"; } + +.fa-yin-yang::before { + content: "\f6ad"; } + +.fa-music::before { + content: "\f001"; } + +.fa-code-commit::before { + content: "\f386"; } + +.fa-temperature-low::before { + content: "\f76b"; } + +.fa-person-biking::before { + content: "\f84a"; } + +.fa-biking::before { + content: "\f84a"; } + +.fa-broom::before { + content: "\f51a"; } + +.fa-shield-heart::before { + content: "\e574"; } + +.fa-gopuram::before { + content: "\f664"; } + +.fa-earth-oceania::before { + content: "\e47b"; } + +.fa-globe-oceania::before { + content: "\e47b"; } + +.fa-square-xmark::before { + content: "\f2d3"; } + +.fa-times-square::before { + content: "\f2d3"; } + +.fa-xmark-square::before { + content: "\f2d3"; } + +.fa-hashtag::before { + content: "\23"; } + +.fa-up-right-and-down-left-from-center::before { + content: "\f424"; } + +.fa-expand-alt::before { + content: "\f424"; } + +.fa-oil-can::before { + content: "\f613"; } + +.fa-t::before { + content: "\54"; } + +.fa-hippo::before { + content: "\f6ed"; } + +.fa-chart-column::before { + content: "\e0e3"; } + +.fa-infinity::before { + content: "\f534"; } + +.fa-vial-circle-check::before { + content: "\e596"; } + +.fa-person-arrow-down-to-line::before { + content: "\e538"; } + +.fa-voicemail::before { + content: "\f897"; } + +.fa-fan::before { + content: "\f863"; } + +.fa-person-walking-luggage::before { + content: "\e554"; } + +.fa-up-down::before { + content: "\f338"; } + +.fa-arrows-alt-v::before { + content: "\f338"; } + +.fa-cloud-moon-rain::before { + content: "\f73c"; } + +.fa-calendar::before { + content: "\f133"; } + +.fa-trailer::before { + content: "\e041"; } + +.fa-bahai::before { + content: "\f666"; } + +.fa-haykal::before { + content: "\f666"; } + +.fa-sd-card::before { + content: "\f7c2"; } + +.fa-dragon::before { + content: "\f6d5"; } + +.fa-shoe-prints::before { + content: "\f54b"; } + +.fa-circle-plus::before { + content: "\f055"; } + +.fa-plus-circle::before { + content: "\f055"; } + +.fa-face-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-hand-holding::before { + content: "\f4bd"; } + +.fa-plug-circle-exclamation::before { + content: "\e55d"; } + +.fa-link-slash::before { + content: "\f127"; } + +.fa-chain-broken::before { + content: "\f127"; } + +.fa-chain-slash::before { + content: "\f127"; } + +.fa-unlink::before { + content: "\f127"; } + +.fa-clone::before { + content: "\f24d"; } + +.fa-person-walking-arrow-loop-left::before { + content: "\e551"; } + +.fa-arrow-up-z-a::before { + content: "\f882"; } + +.fa-sort-alpha-up-alt::before { + content: "\f882"; } + +.fa-fire-flame-curved::before { + content: "\f7e4"; } + +.fa-fire-alt::before { + content: "\f7e4"; } + +.fa-tornado::before { + content: "\f76f"; } + +.fa-file-circle-plus::before { + content: "\e494"; } + +.fa-book-quran::before { + content: "\f687"; } + +.fa-quran::before { + content: "\f687"; } + +.fa-anchor::before { + content: "\f13d"; } + +.fa-border-all::before { + content: "\f84c"; } + +.fa-face-angry::before { + content: "\f556"; } + +.fa-angry::before { + content: "\f556"; } + +.fa-cookie-bite::before { + content: "\f564"; } + +.fa-arrow-trend-down::before { + content: "\e097"; } + +.fa-rss::before { + content: "\f09e"; } + +.fa-feed::before { + content: "\f09e"; } + +.fa-draw-polygon::before { + content: "\f5ee"; } + +.fa-scale-balanced::before { + content: "\f24e"; } + +.fa-balance-scale::before { + content: "\f24e"; } + +.fa-gauge-simple-high::before { + content: "\f62a"; } + +.fa-tachometer::before { + content: "\f62a"; } + +.fa-tachometer-fast::before { + content: "\f62a"; } + +.fa-shower::before { + content: "\f2cc"; } + +.fa-desktop::before { + content: "\f390"; } + +.fa-desktop-alt::before { + content: "\f390"; } + +.fa-m::before { + content: "\4d"; } + +.fa-table-list::before { + content: "\f00b"; } + +.fa-th-list::before { + content: "\f00b"; } + +.fa-comment-sms::before { + content: "\f7cd"; } + +.fa-sms::before { + content: "\f7cd"; } + +.fa-book::before { + content: "\f02d"; } + +.fa-user-plus::before { + content: "\f234"; } + +.fa-check::before { + content: "\f00c"; } + +.fa-battery-three-quarters::before { + content: "\f241"; } + +.fa-battery-4::before { + content: "\f241"; } + +.fa-house-circle-check::before { + content: "\e509"; } + +.fa-angle-left::before { + content: "\f104"; } + +.fa-diagram-successor::before { + content: "\e47a"; } + +.fa-truck-arrow-right::before { + content: "\e58b"; } + +.fa-arrows-split-up-and-left::before { + content: "\e4bc"; } + +.fa-hand-fist::before { + content: "\f6de"; } + +.fa-fist-raised::before { + content: "\f6de"; } + +.fa-cloud-moon::before { + content: "\f6c3"; } + +.fa-briefcase::before { + content: "\f0b1"; } + +.fa-person-falling::before { + content: "\e546"; } + +.fa-image-portrait::before { + content: "\f3e0"; } + +.fa-portrait::before { + content: "\f3e0"; } + +.fa-user-tag::before { + content: "\f507"; } + +.fa-rug::before { + content: "\e569"; } + +.fa-earth-europe::before { + content: "\f7a2"; } + +.fa-globe-europe::before { + content: "\f7a2"; } + +.fa-cart-flatbed-suitcase::before { + content: "\f59d"; } + +.fa-luggage-cart::before { + content: "\f59d"; } + +.fa-rectangle-xmark::before { + content: "\f410"; } + +.fa-rectangle-times::before { + content: "\f410"; } + +.fa-times-rectangle::before { + content: "\f410"; } + +.fa-window-close::before { + content: "\f410"; } + +.fa-baht-sign::before { + content: "\e0ac"; } + +.fa-book-open::before { + content: "\f518"; } + +.fa-book-journal-whills::before { + content: "\f66a"; } + +.fa-journal-whills::before { + content: "\f66a"; } + +.fa-handcuffs::before { + content: "\e4f8"; } + +.fa-triangle-exclamation::before { + content: "\f071"; } + +.fa-exclamation-triangle::before { + content: "\f071"; } + +.fa-warning::before { + content: "\f071"; } + +.fa-database::before { + content: "\f1c0"; } + +.fa-share::before { + content: "\f064"; } + +.fa-arrow-turn-right::before { + content: "\f064"; } + +.fa-mail-forward::before { + content: "\f064"; } + +.fa-bottle-droplet::before { + content: "\e4c4"; } + +.fa-mask-face::before { + content: "\e1d7"; } + +.fa-hill-rockslide::before { + content: "\e508"; } + +.fa-right-left::before { + content: "\f362"; } + +.fa-exchange-alt::before { + content: "\f362"; } + +.fa-paper-plane::before { + content: "\f1d8"; } + +.fa-road-circle-exclamation::before { + content: "\e565"; } + +.fa-dungeon::before { + content: "\f6d9"; } + +.fa-align-right::before { + content: "\f038"; } + +.fa-money-bill-1-wave::before { + content: "\f53b"; } + +.fa-money-bill-wave-alt::before { + content: "\f53b"; } + +.fa-life-ring::before { + content: "\f1cd"; } + +.fa-hands::before { + content: "\f2a7"; } + +.fa-sign-language::before { + content: "\f2a7"; } + +.fa-signing::before { + content: "\f2a7"; } + +.fa-calendar-day::before { + content: "\f783"; } + +.fa-water-ladder::before { + content: "\f5c5"; } + +.fa-ladder-water::before { + content: "\f5c5"; } + +.fa-swimming-pool::before { + content: "\f5c5"; } + +.fa-arrows-up-down::before { + content: "\f07d"; } + +.fa-arrows-v::before { + content: "\f07d"; } + +.fa-face-grimace::before { + content: "\f57f"; } + +.fa-grimace::before { + content: "\f57f"; } + +.fa-wheelchair-move::before { + content: "\e2ce"; } + +.fa-wheelchair-alt::before { + content: "\e2ce"; } + +.fa-turn-down::before { + content: "\f3be"; } + +.fa-level-down-alt::before { + content: "\f3be"; } + +.fa-person-walking-arrow-right::before { + content: "\e552"; } + +.fa-square-envelope::before { + content: "\f199"; } + +.fa-envelope-square::before { + content: "\f199"; } + +.fa-dice::before { + content: "\f522"; } + +.fa-bowling-ball::before { + content: "\f436"; } + +.fa-brain::before { + content: "\f5dc"; } + +.fa-bandage::before { + content: "\f462"; } + +.fa-band-aid::before { + content: "\f462"; } + +.fa-calendar-minus::before { + content: "\f272"; } + +.fa-circle-xmark::before { + content: "\f057"; } + +.fa-times-circle::before { + content: "\f057"; } + +.fa-xmark-circle::before { + content: "\f057"; } + +.fa-gifts::before { + content: "\f79c"; } + +.fa-hotel::before { + content: "\f594"; } + +.fa-earth-asia::before { + content: "\f57e"; } + +.fa-globe-asia::before { + content: "\f57e"; } + +.fa-id-card-clip::before { + content: "\f47f"; } + +.fa-id-card-alt::before { + content: "\f47f"; } + +.fa-magnifying-glass-plus::before { + content: "\f00e"; } + +.fa-search-plus::before { + content: "\f00e"; } + +.fa-thumbs-up::before { + content: "\f164"; } + +.fa-user-clock::before { + content: "\f4fd"; } + +.fa-hand-dots::before { + content: "\f461"; } + +.fa-allergies::before { + content: "\f461"; } + +.fa-file-invoice::before { + content: "\f570"; } + +.fa-window-minimize::before { + content: "\f2d1"; } + +.fa-mug-saucer::before { + content: "\f0f4"; } + +.fa-coffee::before { + content: "\f0f4"; } + +.fa-brush::before { + content: "\f55d"; } + +.fa-mask::before { + content: "\f6fa"; } + +.fa-magnifying-glass-minus::before { + content: "\f010"; } + +.fa-search-minus::before { + content: "\f010"; } + +.fa-ruler-vertical::before { + content: "\f548"; } + +.fa-user-large::before { + content: "\f406"; } + +.fa-user-alt::before { + content: "\f406"; } + +.fa-train-tram::before { + content: "\e5b4"; } + +.fa-user-nurse::before { + content: "\f82f"; } + +.fa-syringe::before { + content: "\f48e"; } + +.fa-cloud-sun::before { + content: "\f6c4"; } + +.fa-stopwatch-20::before { + content: "\e06f"; } + +.fa-square-full::before { + content: "\f45c"; } + +.fa-magnet::before { + content: "\f076"; } + +.fa-jar::before { + content: "\e516"; } + +.fa-note-sticky::before { + content: "\f249"; } + +.fa-sticky-note::before { + content: "\f249"; } + +.fa-bug-slash::before { + content: "\e490"; } + +.fa-arrow-up-from-water-pump::before { + content: "\e4b6"; } + +.fa-bone::before { + content: "\f5d7"; } + +.fa-user-injured::before { + content: "\f728"; } + +.fa-face-sad-tear::before { + content: "\f5b4"; } + +.fa-sad-tear::before { + content: "\f5b4"; } + +.fa-plane::before { + content: "\f072"; } + +.fa-tent-arrows-down::before { + content: "\e581"; } + +.fa-exclamation::before { + content: "\21"; } + +.fa-arrows-spin::before { + content: "\e4bb"; } + +.fa-print::before { + content: "\f02f"; } + +.fa-turkish-lira-sign::before { + content: "\e2bb"; } + +.fa-try::before { + content: "\e2bb"; } + +.fa-turkish-lira::before { + content: "\e2bb"; } + +.fa-dollar-sign::before { + content: "\24"; } + +.fa-dollar::before { + content: "\24"; } + +.fa-usd::before { + content: "\24"; } + +.fa-x::before { + content: "\58"; } + +.fa-magnifying-glass-dollar::before { + content: "\f688"; } + +.fa-search-dollar::before { + content: "\f688"; } + +.fa-users-gear::before { + content: "\f509"; } + +.fa-users-cog::before { + content: "\f509"; } + +.fa-person-military-pointing::before { + content: "\e54a"; } + +.fa-building-columns::before { + content: "\f19c"; } + +.fa-bank::before { + content: "\f19c"; } + +.fa-institution::before { + content: "\f19c"; } + +.fa-museum::before { + content: "\f19c"; } + +.fa-university::before { + content: "\f19c"; } + +.fa-umbrella::before { + content: "\f0e9"; } + +.fa-trowel::before { + content: "\e589"; } + +.fa-d::before { + content: "\44"; } + +.fa-stapler::before { + content: "\e5af"; } + +.fa-masks-theater::before { + content: "\f630"; } + +.fa-theater-masks::before { + content: "\f630"; } + +.fa-kip-sign::before { + content: "\e1c4"; } + +.fa-hand-point-left::before { + content: "\f0a5"; } + +.fa-handshake-simple::before { + content: "\f4c6"; } + +.fa-handshake-alt::before { + content: "\f4c6"; } + +.fa-jet-fighter::before { + content: "\f0fb"; } + +.fa-fighter-jet::before { + content: "\f0fb"; } + +.fa-square-share-nodes::before { + content: "\f1e1"; } + +.fa-share-alt-square::before { + content: "\f1e1"; } + +.fa-barcode::before { + content: "\f02a"; } + +.fa-plus-minus::before { + content: "\e43c"; } + +.fa-video::before { + content: "\f03d"; } + +.fa-video-camera::before { + content: "\f03d"; } + +.fa-graduation-cap::before { + content: "\f19d"; } + +.fa-mortar-board::before { + content: "\f19d"; } + +.fa-hand-holding-medical::before { + content: "\e05c"; } + +.fa-person-circle-check::before { + content: "\e53e"; } + +.fa-turn-up::before { + content: "\f3bf"; } + +.fa-level-up-alt::before { + content: "\f3bf"; } + +.sr-only, +.fa-sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } + +.sr-only-focusable:not(:focus), +.fa-sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } +:root, :host { + --fa-style-family-brands: 'Font Awesome 6 Brands'; + --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; } + +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } + +.fab, +.fa-brands { + font-weight: 400; } + +.fa-monero:before { + content: "\f3d0"; } + +.fa-hooli:before { + content: "\f427"; } + +.fa-yelp:before { + content: "\f1e9"; } + +.fa-cc-visa:before { + content: "\f1f0"; } + +.fa-lastfm:before { + content: "\f202"; } + +.fa-shopware:before { + content: "\f5b5"; } + +.fa-creative-commons-nc:before { + content: "\f4e8"; } + +.fa-aws:before { + content: "\f375"; } + +.fa-redhat:before { + content: "\f7bc"; } + +.fa-yoast:before { + content: "\f2b1"; } + +.fa-cloudflare:before { + content: "\e07d"; } + +.fa-ups:before { + content: "\f7e0"; } + +.fa-wpexplorer:before { + content: "\f2de"; } + +.fa-dyalog:before { + content: "\f399"; } + +.fa-bity:before { + content: "\f37a"; } + +.fa-stackpath:before { + content: "\f842"; } + +.fa-buysellads:before { + content: "\f20d"; } + +.fa-first-order:before { + content: "\f2b0"; } + +.fa-modx:before { + content: "\f285"; } + +.fa-guilded:before { + content: "\e07e"; } + +.fa-vnv:before { + content: "\f40b"; } + +.fa-square-js:before { + content: "\f3b9"; } + +.fa-js-square:before { + content: "\f3b9"; } + +.fa-microsoft:before { + content: "\f3ca"; } + +.fa-qq:before { + content: "\f1d6"; } + +.fa-orcid:before { + content: "\f8d2"; } + +.fa-java:before { + content: "\f4e4"; } + +.fa-invision:before { + content: "\f7b0"; } + +.fa-creative-commons-pd-alt:before { + content: "\f4ed"; } + +.fa-centercode:before { + content: "\f380"; } + +.fa-glide-g:before { + content: "\f2a6"; } + +.fa-drupal:before { + content: "\f1a9"; } + +.fa-hire-a-helper:before { + content: "\f3b0"; } + +.fa-creative-commons-by:before { + content: "\f4e7"; } + +.fa-unity:before { + content: "\e049"; } + +.fa-whmcs:before { + content: "\f40d"; } + +.fa-rocketchat:before { + content: "\f3e8"; } + +.fa-vk:before { + content: "\f189"; } + +.fa-untappd:before { + content: "\f405"; } + +.fa-mailchimp:before { + content: "\f59e"; } + +.fa-css3-alt:before { + content: "\f38b"; } + +.fa-square-reddit:before { + content: "\f1a2"; } + +.fa-reddit-square:before { + content: "\f1a2"; } + +.fa-vimeo-v:before { + content: "\f27d"; } + +.fa-contao:before { + content: "\f26d"; } + +.fa-square-font-awesome:before { + content: "\e5ad"; } + +.fa-deskpro:before { + content: "\f38f"; } + +.fa-sistrix:before { + content: "\f3ee"; } + +.fa-square-instagram:before { + content: "\e055"; } + +.fa-instagram-square:before { + content: "\e055"; } + +.fa-battle-net:before { + content: "\f835"; } + +.fa-the-red-yeti:before { + content: "\f69d"; } + +.fa-square-hacker-news:before { + content: "\f3af"; } + +.fa-hacker-news-square:before { + content: "\f3af"; } + +.fa-edge:before { + content: "\f282"; } + +.fa-napster:before { + content: "\f3d2"; } + +.fa-square-snapchat:before { + content: "\f2ad"; } + +.fa-snapchat-square:before { + content: "\f2ad"; } + +.fa-google-plus-g:before { + content: "\f0d5"; } + +.fa-artstation:before { + content: "\f77a"; } + +.fa-markdown:before { + content: "\f60f"; } + +.fa-sourcetree:before { + content: "\f7d3"; } + +.fa-google-plus:before { + content: "\f2b3"; } + +.fa-diaspora:before { + content: "\f791"; } + +.fa-foursquare:before { + content: "\f180"; } + +.fa-stack-overflow:before { + content: "\f16c"; } + +.fa-github-alt:before { + content: "\f113"; } + +.fa-phoenix-squadron:before { + content: "\f511"; } + +.fa-pagelines:before { + content: "\f18c"; } + +.fa-algolia:before { + content: "\f36c"; } + +.fa-red-river:before { + content: "\f3e3"; } + +.fa-creative-commons-sa:before { + content: "\f4ef"; } + +.fa-safari:before { + content: "\f267"; } + +.fa-google:before { + content: "\f1a0"; } + +.fa-square-font-awesome-stroke:before { + content: "\f35c"; } + +.fa-font-awesome-alt:before { + content: "\f35c"; } + +.fa-atlassian:before { + content: "\f77b"; } + +.fa-linkedin-in:before { + content: "\f0e1"; } + +.fa-digital-ocean:before { + content: "\f391"; } + +.fa-nimblr:before { + content: "\f5a8"; } + +.fa-chromecast:before { + content: "\f838"; } + +.fa-evernote:before { + content: "\f839"; } + +.fa-hacker-news:before { + content: "\f1d4"; } + +.fa-creative-commons-sampling:before { + content: "\f4f0"; } + +.fa-adversal:before { + content: "\f36a"; } + +.fa-creative-commons:before { + content: "\f25e"; } + +.fa-watchman-monitoring:before { + content: "\e087"; } + +.fa-fonticons:before { + content: "\f280"; } + +.fa-weixin:before { + content: "\f1d7"; } + +.fa-shirtsinbulk:before { + content: "\f214"; } + +.fa-codepen:before { + content: "\f1cb"; } + +.fa-git-alt:before { + content: "\f841"; } + +.fa-lyft:before { + content: "\f3c3"; } + +.fa-rev:before { + content: "\f5b2"; } + +.fa-windows:before { + content: "\f17a"; } + +.fa-wizards-of-the-coast:before { + content: "\f730"; } + +.fa-square-viadeo:before { + content: "\f2aa"; } + +.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa-meetup:before { + content: "\f2e0"; } + +.fa-centos:before { + content: "\f789"; } + +.fa-adn:before { + content: "\f170"; } + +.fa-cloudsmith:before { + content: "\f384"; } + +.fa-pied-piper-alt:before { + content: "\f1a8"; } + +.fa-square-dribbble:before { + content: "\f397"; } + +.fa-dribbble-square:before { + content: "\f397"; } + +.fa-codiepie:before { + content: "\f284"; } + +.fa-node:before { + content: "\f419"; } + +.fa-mix:before { + content: "\f3cb"; } + +.fa-steam:before { + content: "\f1b6"; } + +.fa-cc-apple-pay:before { + content: "\f416"; } + +.fa-scribd:before { + content: "\f28a"; } + +.fa-openid:before { + content: "\f19b"; } + +.fa-instalod:before { + content: "\e081"; } + +.fa-expeditedssl:before { + content: "\f23e"; } + +.fa-sellcast:before { + content: "\f2da"; } + +.fa-square-twitter:before { + content: "\f081"; } + +.fa-twitter-square:before { + content: "\f081"; } + +.fa-r-project:before { + content: "\f4f7"; } + +.fa-delicious:before { + content: "\f1a5"; } + +.fa-freebsd:before { + content: "\f3a4"; } + +.fa-vuejs:before { + content: "\f41f"; } + +.fa-accusoft:before { + content: "\f369"; } + +.fa-ioxhost:before { + content: "\f208"; } + +.fa-fonticons-fi:before { + content: "\f3a2"; } + +.fa-app-store:before { + content: "\f36f"; } + +.fa-cc-mastercard:before { + content: "\f1f1"; } + +.fa-itunes-note:before { + content: "\f3b5"; } + +.fa-golang:before { + content: "\e40f"; } + +.fa-kickstarter:before { + content: "\f3bb"; } + +.fa-grav:before { + content: "\f2d6"; } + +.fa-weibo:before { + content: "\f18a"; } + +.fa-uncharted:before { + content: "\e084"; } + +.fa-firstdraft:before { + content: "\f3a1"; } + +.fa-square-youtube:before { + content: "\f431"; } + +.fa-youtube-square:before { + content: "\f431"; } + +.fa-wikipedia-w:before { + content: "\f266"; } + +.fa-wpressr:before { + content: "\f3e4"; } + +.fa-rendact:before { + content: "\f3e4"; } + +.fa-angellist:before { + content: "\f209"; } + +.fa-galactic-republic:before { + content: "\f50c"; } + +.fa-nfc-directional:before { + content: "\e530"; } + +.fa-skype:before { + content: "\f17e"; } + +.fa-joget:before { + content: "\f3b7"; } + +.fa-fedora:before { + content: "\f798"; } + +.fa-stripe-s:before { + content: "\f42a"; } + +.fa-meta:before { + content: "\e49b"; } + +.fa-laravel:before { + content: "\f3bd"; } + +.fa-hotjar:before { + content: "\f3b1"; } + +.fa-bluetooth-b:before { + content: "\f294"; } + +.fa-sticker-mule:before { + content: "\f3f7"; } + +.fa-creative-commons-zero:before { + content: "\f4f3"; } + +.fa-hips:before { + content: "\f452"; } + +.fa-behance:before { + content: "\f1b4"; } + +.fa-reddit:before { + content: "\f1a1"; } + +.fa-discord:before { + content: "\f392"; } + +.fa-chrome:before { + content: "\f268"; } + +.fa-app-store-ios:before { + content: "\f370"; } + +.fa-cc-discover:before { + content: "\f1f2"; } + +.fa-wpbeginner:before { + content: "\f297"; } + +.fa-confluence:before { + content: "\f78d"; } + +.fa-mdb:before { + content: "\f8ca"; } + +.fa-dochub:before { + content: "\f394"; } + +.fa-accessible-icon:before { + content: "\f368"; } + +.fa-ebay:before { + content: "\f4f4"; } + +.fa-amazon:before { + content: "\f270"; } + +.fa-unsplash:before { + content: "\e07c"; } + +.fa-yarn:before { + content: "\f7e3"; } + +.fa-square-steam:before { + content: "\f1b7"; } + +.fa-steam-square:before { + content: "\f1b7"; } + +.fa-500px:before { + content: "\f26e"; } + +.fa-square-vimeo:before { + content: "\f194"; } + +.fa-vimeo-square:before { + content: "\f194"; } + +.fa-asymmetrik:before { + content: "\f372"; } + +.fa-font-awesome:before { + content: "\f2b4"; } + +.fa-font-awesome-flag:before { + content: "\f2b4"; } + +.fa-font-awesome-logo-full:before { + content: "\f2b4"; } + +.fa-gratipay:before { + content: "\f184"; } + +.fa-apple:before { + content: "\f179"; } + +.fa-hive:before { + content: "\e07f"; } + +.fa-gitkraken:before { + content: "\f3a6"; } + +.fa-keybase:before { + content: "\f4f5"; } + +.fa-apple-pay:before { + content: "\f415"; } + +.fa-padlet:before { + content: "\e4a0"; } + +.fa-amazon-pay:before { + content: "\f42c"; } + +.fa-square-github:before { + content: "\f092"; } + +.fa-github-square:before { + content: "\f092"; } + +.fa-stumbleupon:before { + content: "\f1a4"; } + +.fa-fedex:before { + content: "\f797"; } + +.fa-phoenix-framework:before { + content: "\f3dc"; } + +.fa-shopify:before { + content: "\e057"; } + +.fa-neos:before { + content: "\f612"; } + +.fa-hackerrank:before { + content: "\f5f7"; } + +.fa-researchgate:before { + content: "\f4f8"; } + +.fa-swift:before { + content: "\f8e1"; } + +.fa-angular:before { + content: "\f420"; } + +.fa-speakap:before { + content: "\f3f3"; } + +.fa-angrycreative:before { + content: "\f36e"; } + +.fa-y-combinator:before { + content: "\f23b"; } + +.fa-empire:before { + content: "\f1d1"; } + +.fa-envira:before { + content: "\f299"; } + +.fa-square-gitlab:before { + content: "\e5ae"; } + +.fa-gitlab-square:before { + content: "\e5ae"; } + +.fa-studiovinari:before { + content: "\f3f8"; } + +.fa-pied-piper:before { + content: "\f2ae"; } + +.fa-wordpress:before { + content: "\f19a"; } + +.fa-product-hunt:before { + content: "\f288"; } + +.fa-firefox:before { + content: "\f269"; } + +.fa-linode:before { + content: "\f2b8"; } + +.fa-goodreads:before { + content: "\f3a8"; } + +.fa-square-odnoklassniki:before { + content: "\f264"; } + +.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa-jsfiddle:before { + content: "\f1cc"; } + +.fa-sith:before { + content: "\f512"; } + +.fa-themeisle:before { + content: "\f2b2"; } + +.fa-page4:before { + content: "\f3d7"; } + +.fa-hashnode:before { + content: "\e499"; } + +.fa-react:before { + content: "\f41b"; } + +.fa-cc-paypal:before { + content: "\f1f4"; } + +.fa-squarespace:before { + content: "\f5be"; } + +.fa-cc-stripe:before { + content: "\f1f5"; } + +.fa-creative-commons-share:before { + content: "\f4f2"; } + +.fa-bitcoin:before { + content: "\f379"; } + +.fa-keycdn:before { + content: "\f3ba"; } + +.fa-opera:before { + content: "\f26a"; } + +.fa-itch-io:before { + content: "\f83a"; } + +.fa-umbraco:before { + content: "\f8e8"; } + +.fa-galactic-senate:before { + content: "\f50d"; } + +.fa-ubuntu:before { + content: "\f7df"; } + +.fa-draft2digital:before { + content: "\f396"; } + +.fa-stripe:before { + content: "\f429"; } + +.fa-houzz:before { + content: "\f27c"; } + +.fa-gg:before { + content: "\f260"; } + +.fa-dhl:before { + content: "\f790"; } + +.fa-square-pinterest:before { + content: "\f0d3"; } + +.fa-pinterest-square:before { + content: "\f0d3"; } + +.fa-xing:before { + content: "\f168"; } + +.fa-blackberry:before { + content: "\f37b"; } + +.fa-creative-commons-pd:before { + content: "\f4ec"; } + +.fa-playstation:before { + content: "\f3df"; } + +.fa-quinscape:before { + content: "\f459"; } + +.fa-less:before { + content: "\f41d"; } + +.fa-blogger-b:before { + content: "\f37d"; } + +.fa-opencart:before { + content: "\f23d"; } + +.fa-vine:before { + content: "\f1ca"; } + +.fa-paypal:before { + content: "\f1ed"; } + +.fa-gitlab:before { + content: "\f296"; } + +.fa-typo3:before { + content: "\f42b"; } + +.fa-reddit-alien:before { + content: "\f281"; } + +.fa-yahoo:before { + content: "\f19e"; } + +.fa-dailymotion:before { + content: "\e052"; } + +.fa-affiliatetheme:before { + content: "\f36b"; } + +.fa-pied-piper-pp:before { + content: "\f1a7"; } + +.fa-bootstrap:before { + content: "\f836"; } + +.fa-odnoklassniki:before { + content: "\f263"; } + +.fa-nfc-symbol:before { + content: "\e531"; } + +.fa-ethereum:before { + content: "\f42e"; } + +.fa-speaker-deck:before { + content: "\f83c"; } + +.fa-creative-commons-nc-eu:before { + content: "\f4e9"; } + +.fa-patreon:before { + content: "\f3d9"; } + +.fa-avianex:before { + content: "\f374"; } + +.fa-ello:before { + content: "\f5f1"; } + +.fa-gofore:before { + content: "\f3a7"; } + +.fa-bimobject:before { + content: "\f378"; } + +.fa-facebook-f:before { + content: "\f39e"; } + +.fa-square-google-plus:before { + content: "\f0d4"; } + +.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa-mandalorian:before { + content: "\f50f"; } + +.fa-first-order-alt:before { + content: "\f50a"; } + +.fa-osi:before { + content: "\f41a"; } + +.fa-google-wallet:before { + content: "\f1ee"; } + +.fa-d-and-d-beyond:before { + content: "\f6ca"; } + +.fa-periscope:before { + content: "\f3da"; } + +.fa-fulcrum:before { + content: "\f50b"; } + +.fa-cloudscale:before { + content: "\f383"; } + +.fa-forumbee:before { + content: "\f211"; } + +.fa-mizuni:before { + content: "\f3cc"; } + +.fa-schlix:before { + content: "\f3ea"; } + +.fa-square-xing:before { + content: "\f169"; } + +.fa-xing-square:before { + content: "\f169"; } + +.fa-bandcamp:before { + content: "\f2d5"; } + +.fa-wpforms:before { + content: "\f298"; } + +.fa-cloudversify:before { + content: "\f385"; } + +.fa-usps:before { + content: "\f7e1"; } + +.fa-megaport:before { + content: "\f5a3"; } + +.fa-magento:before { + content: "\f3c4"; } + +.fa-spotify:before { + content: "\f1bc"; } + +.fa-optin-monster:before { + content: "\f23c"; } + +.fa-fly:before { + content: "\f417"; } + +.fa-aviato:before { + content: "\f421"; } + +.fa-itunes:before { + content: "\f3b4"; } + +.fa-cuttlefish:before { + content: "\f38c"; } + +.fa-blogger:before { + content: "\f37c"; } + +.fa-flickr:before { + content: "\f16e"; } + +.fa-viber:before { + content: "\f409"; } + +.fa-soundcloud:before { + content: "\f1be"; } + +.fa-digg:before { + content: "\f1a6"; } + +.fa-tencent-weibo:before { + content: "\f1d5"; } + +.fa-symfony:before { + content: "\f83d"; } + +.fa-maxcdn:before { + content: "\f136"; } + +.fa-etsy:before { + content: "\f2d7"; } + +.fa-facebook-messenger:before { + content: "\f39f"; } + +.fa-audible:before { + content: "\f373"; } + +.fa-think-peaks:before { + content: "\f731"; } + +.fa-bilibili:before { + content: "\e3d9"; } + +.fa-erlang:before { + content: "\f39d"; } + +.fa-cotton-bureau:before { + content: "\f89e"; } + +.fa-dashcube:before { + content: "\f210"; } + +.fa-42-group:before { + content: "\e080"; } + +.fa-innosoft:before { + content: "\e080"; } + +.fa-stack-exchange:before { + content: "\f18d"; } + +.fa-elementor:before { + content: "\f430"; } + +.fa-square-pied-piper:before { + content: "\e01e"; } + +.fa-pied-piper-square:before { + content: "\e01e"; } + +.fa-creative-commons-nd:before { + content: "\f4eb"; } + +.fa-palfed:before { + content: "\f3d8"; } + +.fa-superpowers:before { + content: "\f2dd"; } + +.fa-resolving:before { + content: "\f3e7"; } + +.fa-xbox:before { + content: "\f412"; } + +.fa-searchengin:before { + content: "\f3eb"; } + +.fa-tiktok:before { + content: "\e07b"; } + +.fa-square-facebook:before { + content: "\f082"; } + +.fa-facebook-square:before { + content: "\f082"; } + +.fa-renren:before { + content: "\f18b"; } + +.fa-linux:before { + content: "\f17c"; } + +.fa-glide:before { + content: "\f2a5"; } + +.fa-linkedin:before { + content: "\f08c"; } + +.fa-hubspot:before { + content: "\f3b2"; } + +.fa-deploydog:before { + content: "\f38e"; } + +.fa-twitch:before { + content: "\f1e8"; } + +.fa-ravelry:before { + content: "\f2d9"; } + +.fa-mixer:before { + content: "\e056"; } + +.fa-square-lastfm:before { + content: "\f203"; } + +.fa-lastfm-square:before { + content: "\f203"; } + +.fa-vimeo:before { + content: "\f40a"; } + +.fa-mendeley:before { + content: "\f7b3"; } + +.fa-uniregistry:before { + content: "\f404"; } + +.fa-figma:before { + content: "\f799"; } + +.fa-creative-commons-remix:before { + content: "\f4ee"; } + +.fa-cc-amazon-pay:before { + content: "\f42d"; } + +.fa-dropbox:before { + content: "\f16b"; } + +.fa-instagram:before { + content: "\f16d"; } + +.fa-cmplid:before { + content: "\e360"; } + +.fa-facebook:before { + content: "\f09a"; } + +.fa-gripfire:before { + content: "\f3ac"; } + +.fa-jedi-order:before { + content: "\f50e"; } + +.fa-uikit:before { + content: "\f403"; } + +.fa-fort-awesome-alt:before { + content: "\f3a3"; } + +.fa-phabricator:before { + content: "\f3db"; } + +.fa-ussunnah:before { + content: "\f407"; } + +.fa-earlybirds:before { + content: "\f39a"; } + +.fa-trade-federation:before { + content: "\f513"; } + +.fa-autoprefixer:before { + content: "\f41c"; } + +.fa-whatsapp:before { + content: "\f232"; } + +.fa-slideshare:before { + content: "\f1e7"; } + +.fa-google-play:before { + content: "\f3ab"; } + +.fa-viadeo:before { + content: "\f2a9"; } + +.fa-line:before { + content: "\f3c0"; } + +.fa-google-drive:before { + content: "\f3aa"; } + +.fa-servicestack:before { + content: "\f3ec"; } + +.fa-simplybuilt:before { + content: "\f215"; } + +.fa-bitbucket:before { + content: "\f171"; } + +.fa-imdb:before { + content: "\f2d8"; } + +.fa-deezer:before { + content: "\e077"; } + +.fa-raspberry-pi:before { + content: "\f7bb"; } + +.fa-jira:before { + content: "\f7b1"; } + +.fa-docker:before { + content: "\f395"; } + +.fa-screenpal:before { + content: "\e570"; } + +.fa-bluetooth:before { + content: "\f293"; } + +.fa-gitter:before { + content: "\f426"; } + +.fa-d-and-d:before { + content: "\f38d"; } + +.fa-microblog:before { + content: "\e01a"; } + +.fa-cc-diners-club:before { + content: "\f24c"; } + +.fa-gg-circle:before { + content: "\f261"; } + +.fa-pied-piper-hat:before { + content: "\f4e5"; } + +.fa-kickstarter-k:before { + content: "\f3bc"; } + +.fa-yandex:before { + content: "\f413"; } + +.fa-readme:before { + content: "\f4d5"; } + +.fa-html5:before { + content: "\f13b"; } + +.fa-sellsy:before { + content: "\f213"; } + +.fa-sass:before { + content: "\f41e"; } + +.fa-wirsindhandwerk:before { + content: "\e2d0"; } + +.fa-wsh:before { + content: "\e2d0"; } + +.fa-buromobelexperte:before { + content: "\f37f"; } + +.fa-salesforce:before { + content: "\f83b"; } + +.fa-octopus-deploy:before { + content: "\e082"; } + +.fa-medapps:before { + content: "\f3c6"; } + +.fa-ns8:before { + content: "\f3d5"; } + +.fa-pinterest-p:before { + content: "\f231"; } + +.fa-apper:before { + content: "\f371"; } + +.fa-fort-awesome:before { + content: "\f286"; } + +.fa-waze:before { + content: "\f83f"; } + +.fa-cc-jcb:before { + content: "\f24b"; } + +.fa-snapchat:before { + content: "\f2ab"; } + +.fa-snapchat-ghost:before { + content: "\f2ab"; } + +.fa-fantasy-flight-games:before { + content: "\f6dc"; } + +.fa-rust:before { + content: "\e07a"; } + +.fa-wix:before { + content: "\f5cf"; } + +.fa-square-behance:before { + content: "\f1b5"; } + +.fa-behance-square:before { + content: "\f1b5"; } + +.fa-supple:before { + content: "\f3f9"; } + +.fa-rebel:before { + content: "\f1d0"; } + +.fa-css3:before { + content: "\f13c"; } + +.fa-staylinked:before { + content: "\f3f5"; } + +.fa-kaggle:before { + content: "\f5fa"; } + +.fa-space-awesome:before { + content: "\e5ac"; } + +.fa-deviantart:before { + content: "\f1bd"; } + +.fa-cpanel:before { + content: "\f388"; } + +.fa-goodreads-g:before { + content: "\f3a9"; } + +.fa-square-git:before { + content: "\f1d2"; } + +.fa-git-square:before { + content: "\f1d2"; } + +.fa-square-tumblr:before { + content: "\f174"; } + +.fa-tumblr-square:before { + content: "\f174"; } + +.fa-trello:before { + content: "\f181"; } + +.fa-creative-commons-nc-jp:before { + content: "\f4ea"; } + +.fa-get-pocket:before { + content: "\f265"; } + +.fa-perbyte:before { + content: "\e083"; } + +.fa-grunt:before { + content: "\f3ad"; } + +.fa-weebly:before { + content: "\f5cc"; } + +.fa-connectdevelop:before { + content: "\f20e"; } + +.fa-leanpub:before { + content: "\f212"; } + +.fa-black-tie:before { + content: "\f27e"; } + +.fa-themeco:before { + content: "\f5c6"; } + +.fa-python:before { + content: "\f3e2"; } + +.fa-android:before { + content: "\f17b"; } + +.fa-bots:before { + content: "\e340"; } + +.fa-free-code-camp:before { + content: "\f2c5"; } + +.fa-hornbill:before { + content: "\f592"; } + +.fa-js:before { + content: "\f3b8"; } + +.fa-ideal:before { + content: "\e013"; } + +.fa-git:before { + content: "\f1d3"; } + +.fa-dev:before { + content: "\f6cc"; } + +.fa-sketch:before { + content: "\f7c6"; } + +.fa-yandex-international:before { + content: "\f414"; } + +.fa-cc-amex:before { + content: "\f1f3"; } + +.fa-uber:before { + content: "\f402"; } + +.fa-github:before { + content: "\f09b"; } + +.fa-php:before { + content: "\f457"; } + +.fa-alipay:before { + content: "\f642"; } + +.fa-youtube:before { + content: "\f167"; } + +.fa-skyatlas:before { + content: "\f216"; } + +.fa-firefox-browser:before { + content: "\e007"; } + +.fa-replyd:before { + content: "\f3e6"; } + +.fa-suse:before { + content: "\f7d6"; } + +.fa-jenkins:before { + content: "\f3b6"; } + +.fa-twitter:before { + content: "\f099"; } + +.fa-rockrms:before { + content: "\f3e9"; } + +.fa-pinterest:before { + content: "\f0d2"; } + +.fa-buffer:before { + content: "\f837"; } + +.fa-npm:before { + content: "\f3d4"; } + +.fa-yammer:before { + content: "\f840"; } + +.fa-btc:before { + content: "\f15a"; } + +.fa-dribbble:before { + content: "\f17d"; } + +.fa-stumbleupon-circle:before { + content: "\f1a3"; } + +.fa-internet-explorer:before { + content: "\f26b"; } + +.fa-telegram:before { + content: "\f2c6"; } + +.fa-telegram-plane:before { + content: "\f2c6"; } + +.fa-old-republic:before { + content: "\f510"; } + +.fa-square-whatsapp:before { + content: "\f40c"; } + +.fa-whatsapp-square:before { + content: "\f40c"; } + +.fa-node-js:before { + content: "\f3d3"; } + +.fa-edge-legacy:before { + content: "\e078"; } + +.fa-slack:before { + content: "\f198"; } + +.fa-slack-hash:before { + content: "\f198"; } + +.fa-medrt:before { + content: "\f3c8"; } + +.fa-usb:before { + content: "\f287"; } + +.fa-tumblr:before { + content: "\f173"; } + +.fa-vaadin:before { + content: "\f408"; } + +.fa-quora:before { + content: "\f2c4"; } + +.fa-reacteurope:before { + content: "\f75d"; } + +.fa-medium:before { + content: "\f23a"; } + +.fa-medium-m:before { + content: "\f23a"; } + +.fa-amilia:before { + content: "\f36d"; } + +.fa-mixcloud:before { + content: "\f289"; } + +.fa-flipboard:before { + content: "\f44d"; } + +.fa-viacoin:before { + content: "\f237"; } + +.fa-critical-role:before { + content: "\f6c9"; } + +.fa-sitrox:before { + content: "\e44a"; } + +.fa-discourse:before { + content: "\f393"; } + +.fa-joomla:before { + content: "\f1aa"; } + +.fa-mastodon:before { + content: "\f4f6"; } + +.fa-airbnb:before { + content: "\f834"; } + +.fa-wolf-pack-battalion:before { + content: "\f514"; } + +.fa-buy-n-large:before { + content: "\f8a6"; } + +.fa-gulp:before { + content: "\f3ae"; } + +.fa-creative-commons-sampling-plus:before { + content: "\f4f1"; } + +.fa-strava:before { + content: "\f428"; } + +.fa-ember:before { + content: "\f423"; } + +.fa-canadian-maple-leaf:before { + content: "\f785"; } + +.fa-teamspeak:before { + content: "\f4f9"; } + +.fa-pushed:before { + content: "\f3e1"; } + +.fa-wordpress-simple:before { + content: "\f411"; } + +.fa-nutritionix:before { + content: "\f3d6"; } + +.fa-wodu:before { + content: "\e088"; } + +.fa-google-pay:before { + content: "\e079"; } + +.fa-intercom:before { + content: "\f7af"; } + +.fa-zhihu:before { + content: "\f63f"; } + +.fa-korvue:before { + content: "\f42f"; } + +.fa-pix:before { + content: "\e43a"; } + +.fa-steam-symbol:before { + content: "\f3f6"; } +:root, :host { + --fa-style-family-classic: 'Font Awesome 6 Free'; + --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); } + +.far, +.fa-regular { + font-weight: 400; } +:root, :host { + --fa-style-family-classic: 'Font Awesome 6 Free'; + --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 900; + font-display: block; + src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } + +.fas, +.fa-solid { + font-weight: 900; } +@font-face { + font-family: 'Font Awesome 5 Brands'; + font-display: block; + font-weight: 400; + src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 5 Free'; + font-display: block; + font-weight: 900; + src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 5 Free'; + font-display: block; + font-weight: 400; + src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); } +@font-face { + font-family: 'FontAwesome'; + font-display: block; + src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } + +@font-face { + font-family: 'FontAwesome'; + font-display: block; + src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } + +@font-face { + font-family: 'FontAwesome'; + font-display: block; + src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); + unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; } + +@font-face { + font-family: 'FontAwesome'; + font-display: block; + src: url("../webfonts/fa-v4compatibility.woff2") format("woff2"), url("../webfonts/fa-v4compatibility.ttf") format("truetype"); + unicode-range: U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A; } diff --git a/assets/frontend/icons/fontawesome6/css/all.min.css b/assets/frontend/icons/fontawesome6/css/all.min.css new file mode 100644 index 0000000..5dddbd5 --- /dev/null +++ b/assets/frontend/icons/fontawesome6/css/all.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-classic,.fa-regular,.fa-sharp,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-fill-drip:before{content:"\f576"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-at:before{content:"\40"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-text-height:before{content:"\f034"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-stethoscope:before{content:"\f0f1"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-info:before{content:"\f129"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-explosion:before{content:"\e4e9"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-wave-square:before{content:"\f83e"}.fa-ring:before{content:"\f70b"}.fa-building-un:before{content:"\e4d9"}.fa-dice-three:before{content:"\f527"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-door-open:before{content:"\f52b"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-atom:before{content:"\f5d2"}.fa-soap:before{content:"\e06e"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-pump-medical:before{content:"\e06a"}.fa-fingerprint:before{content:"\f577"}.fa-hand-point-right:before{content:"\f0a4"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-flag-checkered:before{content:"\f11e"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-crop:before{content:"\f125"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-users-rectangle:before{content:"\e594"}.fa-people-roof:before{content:"\e537"}.fa-people-line:before{content:"\e534"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-diagram-predecessor:before{content:"\e477"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-laptop:before{content:"\f109"}.fa-file-csv:before{content:"\f6dd"}.fa-menorah:before{content:"\f676"}.fa-truck-plane:before{content:"\e58f"}.fa-record-vinyl:before{content:"\f8d9"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-bong:before{content:"\f55c"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-jar-wheat:before{content:"\e517"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-pager:before{content:"\f815"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-strikethrough:before{content:"\f0cc"}.fa-k:before{content:"\4b"}.fa-landmark-flag:before{content:"\e51c"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-backward:before{content:"\f04a"}.fa-caret-right:before{content:"\f0da"}.fa-comments:before{content:"\f086"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-code-pull-request:before{content:"\e13c"}.fa-clipboard-list:before{content:"\f46d"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-user-check:before{content:"\f4fc"}.fa-vial-virus:before{content:"\e597"}.fa-sheet-plastic:before{content:"\e571"}.fa-blog:before{content:"\f781"}.fa-user-ninja:before{content:"\f504"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-toggle-off:before{content:"\f204"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-person-drowning:before{content:"\e545"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-spray-can:before{content:"\f5bd"}.fa-truck-monster:before{content:"\f63b"}.fa-w:before{content:"\57"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-rainbow:before{content:"\f75b"}.fa-circle-notch:before{content:"\f1ce"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-paw:before{content:"\f1b0"}.fa-cloud:before{content:"\f0c2"}.fa-trowel-bricks:before{content:"\e58a"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-hospital-user:before{content:"\f80d"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-binoculars:before{content:"\f1e5"}.fa-microphone-slash:before{content:"\f131"}.fa-box-tissue:before{content:"\e05b"}.fa-motorcycle:before{content:"\f21c"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-toilets-portable:before{content:"\e584"}.fa-hockey-puck:before{content:"\f453"}.fa-table:before{content:"\f0ce"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-users-slash:before{content:"\e073"}.fa-clover:before{content:"\e139"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-star-and-crescent:before{content:"\f699"}.fa-house-fire:before{content:"\e50c"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-helicopter:before{content:"\f533"}.fa-compass:before{content:"\f14e"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-file-circle-question:before{content:"\e4ef"}.fa-laptop-code:before{content:"\f5fc"}.fa-swatchbook:before{content:"\f5c3"}.fa-prescription-bottle:before{content:"\f485"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-people-group:before{content:"\e533"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-film:before{content:"\f008"}.fa-ruler-horizontal:before{content:"\f547"}.fa-people-robbery:before{content:"\e536"}.fa-lightbulb:before{content:"\f0eb"}.fa-caret-left:before{content:"\f0d9"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-sitemap:before{content:"\f0e8"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-memory:before{content:"\f538"}.fa-road-spikes:before{content:"\e568"}.fa-fire-burner:before{content:"\e4f1"}.fa-flag:before{content:"\f024"}.fa-hanukiah:before{content:"\f6e6"}.fa-feather:before{content:"\f52d"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-comment-slash:before{content:"\f4b3"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-compress:before{content:"\f066"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-ankh:before{content:"\f644"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-asterisk:before{content:"\2a"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-peseta-sign:before{content:"\e221"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-ghost:before{content:"\f6e2"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-cart-plus:before{content:"\f217"}.fa-gamepad:before{content:"\f11b"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-egg:before{content:"\f7fb"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-campground:before{content:"\f6bb"}.fa-folder-plus:before{content:"\f65e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-lock:before{content:"\f023"}.fa-gas-pump:before{content:"\f52f"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-house-flood-water:before{content:"\e50e"}.fa-tree:before{content:"\f1bb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-sack-dollar:before{content:"\f81d"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-car-side:before{content:"\f5e4"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-microscope:before{content:"\f610"}.fa-sink:before{content:"\e06d"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-mitten:before{content:"\f7b5"}.fa-person-rays:before{content:"\e54d"}.fa-users:before{content:"\f0c0"}.fa-eye-slash:before{content:"\f070"}.fa-flask-vial:before{content:"\e4f3"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-om:before{content:"\f679"}.fa-worm:before{content:"\e599"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-plug:before{content:"\f1e6"}.fa-chevron-up:before{content:"\f077"}.fa-hand-spock:before{content:"\f259"}.fa-stopwatch:before{content:"\f2f2"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-chess-bishop:before{content:"\f43a"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-road-circle-check:before{content:"\e564"}.fa-dice-five:before{content:"\f523"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-land-mine-on:before{content:"\e51b"}.fa-i-cursor:before{content:"\f246"}.fa-stamp:before{content:"\f5bf"}.fa-stairs:before{content:"\e289"}.fa-i:before{content:"\49"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-pills:before{content:"\f484"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-tooth:before{content:"\f5c9"}.fa-v:before{content:"\56"}.fa-bicycle:before{content:"\f206"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-snowman:before{content:"\f7d0"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-road-barrier:before{content:"\e562"}.fa-school:before{content:"\f549"}.fa-igloo:before{content:"\f7ae"}.fa-joint:before{content:"\f595"}.fa-angle-right:before{content:"\f105"}.fa-horse:before{content:"\f6f0"}.fa-q:before{content:"\51"}.fa-g:before{content:"\47"}.fa-notes-medical:before{content:"\f481"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-dong-sign:before{content:"\e169"}.fa-capsules:before{content:"\f46b"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-hand-point-up:before{content:"\f0a6"}.fa-money-bill:before{content:"\f0d6"}.fa-bookmark:before{content:"\f02e"}.fa-align-justify:before{content:"\f039"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-helmet-un:before{content:"\e503"}.fa-bullseye:before{content:"\f140"}.fa-bacon:before{content:"\f7e5"}.fa-hand-point-down:before{content:"\f0a7"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-radiation:before{content:"\f7b9"}.fa-chart-simple:before{content:"\e473"}.fa-mars-stroke:before{content:"\f229"}.fa-vial:before{content:"\f492"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-e:before{content:"\45"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-user:before{content:"\f007"}.fa-school-circle-check:before{content:"\e56b"}.fa-dumpster:before{content:"\f793"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-building-user:before{content:"\e4da"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-highlighter:before{content:"\f591"}.fa-key:before{content:"\f084"}.fa-bullhorn:before{content:"\f0a1"}.fa-globe:before{content:"\f0ac"}.fa-synagogue:before{content:"\f69b"}.fa-person-half-dress:before{content:"\e548"}.fa-road-bridge:before{content:"\e563"}.fa-location-arrow:before{content:"\f124"}.fa-c:before{content:"\43"}.fa-tablet-button:before{content:"\f10a"}.fa-building-lock:before{content:"\e4d6"}.fa-pizza-slice:before{content:"\f818"}.fa-money-bill-wave:before{content:"\f53a"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-house-flag:before{content:"\e50d"}.fa-person-circle-minus:before{content:"\e540"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-camera-rotate:before{content:"\e0d8"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-star:before{content:"\f005"}.fa-repeat:before{content:"\f363"}.fa-cross:before{content:"\f654"}.fa-box:before{content:"\f466"}.fa-venus-mars:before{content:"\f228"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-charging-station:before{content:"\f5e7"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-mobile-retro:before{content:"\e527"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-spider:before{content:"\f717"}.fa-hands-bound:before{content:"\e4f9"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-x-ray:before{content:"\f497"}.fa-spell-check:before{content:"\f891"}.fa-slash:before{content:"\f715"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-server:before{content:"\f233"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-shop-lock:before{content:"\e4a5"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-blender-phone:before{content:"\f6b6"}.fa-building-wheat:before{content:"\e4db"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-venus:before{content:"\f221"}.fa-passport:before{content:"\f5ab"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-temperature-high:before{content:"\f769"}.fa-microchip:before{content:"\f2db"}.fa-crown:before{content:"\f521"}.fa-weight-hanging:before{content:"\f5cd"}.fa-xmarks-lines:before{content:"\e59a"}.fa-file-prescription:before{content:"\f572"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-chess-knight:before{content:"\f441"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-wheelchair:before{content:"\f193"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-toggle-on:before{content:"\f205"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-l:before{content:"\4c"}.fa-fire:before{content:"\f06d"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-folder-open:before{content:"\f07c"}.fa-heart-circle-plus:before{content:"\e500"}.fa-code-fork:before{content:"\e13b"}.fa-city:before{content:"\f64f"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-pepper-hot:before{content:"\f816"}.fa-unlock:before{content:"\f09c"}.fa-colon-sign:before{content:"\e140"}.fa-headset:before{content:"\f590"}.fa-store-slash:before{content:"\e071"}.fa-road-circle-xmark:before{content:"\e566"}.fa-user-minus:before{content:"\f503"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-clipboard:before{content:"\f328"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-underline:before{content:"\f0cd"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-signature:before{content:"\f5b7"}.fa-stroopwafel:before{content:"\f551"}.fa-bold:before{content:"\f032"}.fa-anchor-lock:before{content:"\e4ad"}.fa-building-ngo:before{content:"\e4d7"}.fa-manat-sign:before{content:"\e1d5"}.fa-not-equal:before{content:"\f53e"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-jedi:before{content:"\f669"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-mug-hot:before{content:"\f7b6"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-gift:before{content:"\f06b"}.fa-dice-two:before{content:"\f528"}.fa-chess-queen:before{content:"\f445"}.fa-glasses:before{content:"\f530"}.fa-chess-board:before{content:"\f43c"}.fa-building-circle-check:before{content:"\e4d2"}.fa-person-chalkboard:before{content:"\e53d"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-less-than-equal:before{content:"\f537"}.fa-train:before{content:"\f238"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-crow:before{content:"\f520"}.fa-sailboat:before{content:"\e445"}.fa-window-restore:before{content:"\f2d2"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-torii-gate:before{content:"\f6a1"}.fa-frog:before{content:"\f52e"}.fa-bucket:before{content:"\e4cf"}.fa-image:before{content:"\f03e"}.fa-microphone:before{content:"\f130"}.fa-cow:before{content:"\f6c8"}.fa-caret-up:before{content:"\f0d8"}.fa-screwdriver:before{content:"\f54a"}.fa-folder-closed:before{content:"\e185"}.fa-house-tsunami:before{content:"\e515"}.fa-square-nfi:before{content:"\e576"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-lemon:before{content:"\f094"}.fa-head-side-mask:before{content:"\e063"}.fa-handshake:before{content:"\f2b5"}.fa-gem:before{content:"\f3a5"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-smoking:before{content:"\f48d"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-monument:before{content:"\f5a6"}.fa-snowplow:before{content:"\f7d2"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-cannabis:before{content:"\f55f"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-tablets:before{content:"\f490"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-chair:before{content:"\f6c0"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-plate-wheat:before{content:"\e55a"}.fa-icicles:before{content:"\f7ad"}.fa-person-shelter:before{content:"\e54f"}.fa-neuter:before{content:"\f22c"}.fa-id-badge:before{content:"\f2c1"}.fa-marker:before{content:"\f5a1"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-helicopter-symbol:before{content:"\e502"}.fa-universal-access:before{content:"\f29a"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-lari-sign:before{content:"\e1c8"}.fa-volcano:before{content:"\f770"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-viruses:before{content:"\e076"}.fa-square-person-confined:before{content:"\e577"}.fa-user-tie:before{content:"\f508"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-certificate:before{content:"\f0a3"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-suitcase:before{content:"\f0f2"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-camera-retro:before{content:"\f083"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-box-open:before{content:"\f49e"}.fa-scroll:before{content:"\f70e"}.fa-spa:before{content:"\f5bb"}.fa-location-pin-lock:before{content:"\e51f"}.fa-pause:before{content:"\f04c"}.fa-hill-avalanche:before{content:"\e507"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-bomb:before{content:"\f1e2"}.fa-registered:before{content:"\f25d"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-subscript:before{content:"\f12c"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-burst:before{content:"\e4dc"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-money-bills:before{content:"\e1f3"}.fa-smog:before{content:"\f75f"}.fa-crutch:before{content:"\f7f7"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-palette:before{content:"\f53f"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-vest:before{content:"\e085"}.fa-ferry:before{content:"\e4ea"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-boxes-packing:before{content:"\e4c7"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-bowl-food:before{content:"\e4c6"}.fa-candy-cane:before{content:"\f786"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-file-word:before{content:"\f1c2"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-house-lock:before{content:"\e510"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-children:before{content:"\e4e1"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-envelope-open:before{content:"\f2b6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-mattress-pillow:before{content:"\e525"}.fa-guarani-sign:before{content:"\e19a"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-fire-extinguisher:before{content:"\f134"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-greater-than-equal:before{content:"\f532"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-virus:before{content:"\e074"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-layer-group:before{content:"\f5fd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-archway:before{content:"\f557"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-square:before{content:"\f0c8"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-couch:before{content:"\f4b8"}.fa-cedi-sign:before{content:"\e0df"}.fa-italic:before{content:"\f033"}.fa-church:before{content:"\f51d"}.fa-comments-dollar:before{content:"\f653"}.fa-democrat:before{content:"\f747"}.fa-z:before{content:"\5a"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-road-lock:before{content:"\e567"}.fa-a:before{content:"\41"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-p:before{content:"\50"}.fa-snowflake:before{content:"\f2dc"}.fa-newspaper:before{content:"\f1ea"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-locust:before{content:"\e520"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-person-dress-burst:before{content:"\e544"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-vector-square:before{content:"\f5cb"}.fa-bread-slice:before{content:"\f7ec"}.fa-language:before{content:"\f1ab"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-filter:before{content:"\f0b0"}.fa-question:before{content:"\3f"}.fa-file-signature:before{content:"\f573"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-house-chimney-user:before{content:"\e065"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-puzzle-piece:before{content:"\f12e"}.fa-money-check:before{content:"\f53c"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-code:before{content:"\f121"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-virus-covid:before{content:"\e4a8"}.fa-austral-sign:before{content:"\e0a9"}.fa-f:before{content:"\46"}.fa-leaf:before{content:"\f06c"}.fa-road:before{content:"\f018"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-person-circle-plus:before{content:"\e541"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-sack-xmark:before{content:"\e56a"}.fa-file-excel:before{content:"\f1c3"}.fa-file-contract:before{content:"\f56c"}.fa-fish-fins:before{content:"\e4f2"}.fa-building-flag:before{content:"\e4d5"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-object-ungroup:before{content:"\f248"}.fa-poop:before{content:"\f619"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-kaaba:before{content:"\f66b"}.fa-toilet-paper:before{content:"\f71e"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-eject:before{content:"\f052"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-plane-circle-check:before{content:"\e555"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-object-group:before{content:"\f247"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-mask-ventilator:before{content:"\e524"}.fa-arrow-right:before{content:"\f061"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-cash-register:before{content:"\f788"}.fa-person-circle-question:before{content:"\e542"}.fa-h:before{content:"\48"}.fa-tarp:before{content:"\e57b"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-heart:before{content:"\f004"}.fa-mars-and-venus:before{content:"\f224"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-dumpster-fire:before{content:"\f794"}.fa-house-crack:before{content:"\e3b1"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-bottle-water:before{content:"\e4c5"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-kitchen-set:before{content:"\e51a"}.fa-r:before{content:"\52"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-cube:before{content:"\f1b2"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-shield-dog:before{content:"\e573"}.fa-solar-panel:before{content:"\f5ba"}.fa-lock-open:before{content:"\f3c1"}.fa-elevator:before{content:"\e16d"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-circle:before{content:"\f111"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-recycle:before{content:"\f1b8"}.fa-user-astronaut:before{content:"\f4fb"}.fa-plane-slash:before{content:"\e069"}.fa-trademark:before{content:"\f25c"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-satellite-dish:before{content:"\f7c0"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-users-rays:before{content:"\e593"}.fa-wallet:before{content:"\f555"}.fa-clipboard-check:before{content:"\f46c"}.fa-file-audio:before{content:"\f1c7"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-wrench:before{content:"\f0ad"}.fa-bugs:before{content:"\e4d0"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-file-image:before{content:"\f1c5"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-plane-departure:before{content:"\f5b0"}.fa-handshake-slash:before{content:"\e060"}.fa-book-bookmark:before{content:"\e0bb"}.fa-code-branch:before{content:"\f126"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-bridge:before{content:"\e4c8"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-truck-front:before{content:"\e2b7"}.fa-cat:before{content:"\f6be"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-truck-field:before{content:"\e58d"}.fa-route:before{content:"\f4d7"}.fa-clipboard-question:before{content:"\e4e3"}.fa-panorama:before{content:"\e209"}.fa-comment-medical:before{content:"\f7f5"}.fa-teeth-open:before{content:"\f62f"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-tags:before{content:"\f02c"}.fa-wine-glass:before{content:"\f4e3"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-house-signal:before{content:"\e012"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-faucet-drip:before{content:"\e006"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-terminal:before{content:"\f120"}.fa-mobile-button:before{content:"\f10b"}.fa-house-medical-flag:before{content:"\e514"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-tape:before{content:"\f4db"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-eye:before{content:"\f06e"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-audio-description:before{content:"\f29e"}.fa-person-military-to-person:before{content:"\e54c"}.fa-file-shield:before{content:"\e4f0"}.fa-user-slash:before{content:"\f506"}.fa-pen:before{content:"\f304"}.fa-tower-observation:before{content:"\e586"}.fa-file-code:before{content:"\f1c9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-bus:before{content:"\f207"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-window-maximize:before{content:"\f2d0"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-prescription:before{content:"\f5b1"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-vihara:before{content:"\f6a7"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-plant-wilt:before{content:"\e5aa"}.fa-diamond:before{content:"\f219"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-bacterium:before{content:"\e05a"}.fa-hand-pointer:before{content:"\f25a"}.fa-drum-steelpan:before{content:"\f56a"}.fa-hand-scissors:before{content:"\f257"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-biohazard:before{content:"\f780"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-mars-double:before{content:"\f227"}.fa-child-dress:before{content:"\e59c"}.fa-users-between-lines:before{content:"\e591"}.fa-lungs-virus:before{content:"\e067"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-phone:before{content:"\f095"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-child-reaching:before{content:"\e59d"}.fa-head-side-virus:before{content:"\e064"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-door-closed:before{content:"\f52a"}.fa-shield-virus:before{content:"\e06c"}.fa-dice-six:before{content:"\f526"}.fa-mosquito-net:before{content:"\e52c"}.fa-bridge-water:before{content:"\e4ce"}.fa-person-booth:before{content:"\f756"}.fa-text-width:before{content:"\f035"}.fa-hat-wizard:before{content:"\f6e8"}.fa-pen-fancy:before{content:"\f5ac"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-trash:before{content:"\f1f8"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-book-medical:before{content:"\f7e6"}.fa-poo:before{content:"\f2fe"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-cubes:before{content:"\f1b3"}.fa-divide:before{content:"\f529"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-headphones:before{content:"\f025"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-clapping:before{content:"\e1a8"}.fa-republican:before{content:"\f75e"}.fa-arrow-left:before{content:"\f060"}.fa-person-circle-xmark:before{content:"\e543"}.fa-ruler:before{content:"\f545"}.fa-align-left:before{content:"\f036"}.fa-dice-d6:before{content:"\f6d1"}.fa-restroom:before{content:"\f7bd"}.fa-j:before{content:"\4a"}.fa-users-viewfinder:before{content:"\e595"}.fa-file-video:before{content:"\f1c8"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-file-pdf:before{content:"\f1c1"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-o:before{content:"\4f"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-user-secret:before{content:"\f21b"}.fa-otter:before{content:"\f700"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-comment-dollar:before{content:"\f651"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-clipboard-user:before{content:"\f7f3"}.fa-child:before{content:"\f1ae"}.fa-lira-sign:before{content:"\f195"}.fa-satellite:before{content:"\f7bf"}.fa-plane-lock:before{content:"\e558"}.fa-tag:before{content:"\f02b"}.fa-comment:before{content:"\f075"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-envelope:before{content:"\f0e0"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-paperclip:before{content:"\f0c6"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-ribbon:before{content:"\f4d6"}.fa-lungs:before{content:"\f604"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-border-none:before{content:"\f850"}.fa-circle-nodes:before{content:"\e4e2"}.fa-parachute-box:before{content:"\f4cd"}.fa-indent:before{content:"\f03c"}.fa-truck-field-un:before{content:"\e58e"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-mountain:before{content:"\f6fc"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-cloud-meatball:before{content:"\f73b"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-square-virus:before{content:"\e578"}.fa-meteor:before{content:"\f753"}.fa-car-on:before{content:"\e4dd"}.fa-sleigh:before{content:"\f7cc"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-water:before{content:"\f773"}.fa-calendar-check:before{content:"\f274"}.fa-braille:before{content:"\f2a1"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-landmark:before{content:"\f66f"}.fa-truck:before{content:"\f0d1"}.fa-crosshairs:before{content:"\f05b"}.fa-person-cane:before{content:"\e53c"}.fa-tent:before{content:"\e57d"}.fa-vest-patches:before{content:"\e086"}.fa-check-double:before{content:"\f560"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-cookie:before{content:"\f563"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-dumbbell:before{content:"\f44b"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-tarp-droplet:before{content:"\e57c"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-calendar-plus:before{content:"\f271"}.fa-plane-arrival:before{content:"\f5af"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-chart-gantt:before{content:"\e0e4"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-dna:before{content:"\f471"}.fa-virus-slash:before{content:"\e075"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-child-rifle:before{content:"\e4e0"}.fa-chess:before{content:"\f439"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-plug-circle-check:before{content:"\e55c"}.fa-street-view:before{content:"\f21d"}.fa-franc-sign:before{content:"\e18f"}.fa-volume-off:before{content:"\f026"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-star-of-david:before{content:"\f69a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-vials:before{content:"\f493"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-place-of-worship:before{content:"\f67f"}.fa-grip-vertical:before{content:"\f58e"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-u:before{content:"\55"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-pallet:before{content:"\f482"}.fa-faucet:before{content:"\e005"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-s:before{content:"\53"}.fa-timeline:before{content:"\e29c"}.fa-keyboard:before{content:"\f11c"}.fa-caret-down:before{content:"\f0d7"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-plane-up:before{content:"\e22d"}.fa-piggy-bank:before{content:"\f4d3"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-mountain-city:before{content:"\e52e"}.fa-coins:before{content:"\f51e"}.fa-khanda:before{content:"\f66d"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-folder-tree:before{content:"\f802"}.fa-network-wired:before{content:"\f6ff"}.fa-map-pin:before{content:"\f276"}.fa-hamsa:before{content:"\f665"}.fa-cent-sign:before{content:"\e3f5"}.fa-flask:before{content:"\f0c3"}.fa-person-pregnant:before{content:"\e31e"}.fa-wand-sparkles:before{content:"\f72b"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-ticket:before{content:"\f145"}.fa-power-off:before{content:"\f011"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-flag-usa:before{content:"\f74d"}.fa-laptop-file:before{content:"\e51d"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-diagram-next:before{content:"\e476"}.fa-person-rifle:before{content:"\e54e"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-closed-captioning:before{content:"\f20a"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-venus-double:before{content:"\f226"}.fa-images:before{content:"\f302"}.fa-calculator:before{content:"\f1ec"}.fa-people-pulling:before{content:"\e535"}.fa-n:before{content:"\4e"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-cloud-rain:before{content:"\f73d"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-ship:before{content:"\f21a"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-download:before{content:"\f019"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-file-circle-check:before{content:"\e5a0"}.fa-forward:before{content:"\f04e"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-align-center:before{content:"\f037"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-calendar-week:before{content:"\f784"}.fa-laptop-medical:before{content:"\f812"}.fa-b:before{content:"\42"}.fa-file-medical:before{content:"\f477"}.fa-dice-one:before{content:"\f525"}.fa-kiwi-bird:before{content:"\f535"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-mill-sign:before{content:"\e1ed"}.fa-bowl-rice:before{content:"\e2eb"}.fa-skull:before{content:"\f54c"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-truck-pickup:before{content:"\f63c"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-stop:before{content:"\f04d"}.fa-code-merge:before{content:"\f387"}.fa-upload:before{content:"\f093"}.fa-hurricane:before{content:"\f751"}.fa-mound:before{content:"\e52d"}.fa-toilet-portable:before{content:"\e583"}.fa-compact-disc:before{content:"\f51f"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-caravan:before{content:"\f8ff"}.fa-shield-cat:before{content:"\e572"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-glass-water:before{content:"\e4f4"}.fa-oil-well:before{content:"\e532"}.fa-vault:before{content:"\e2c5"}.fa-mars:before{content:"\f222"}.fa-toilet:before{content:"\f7d8"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-sun:before{content:"\f185"}.fa-guitar:before{content:"\f7a6"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-horse-head:before{content:"\f7ab"}.fa-bore-hole:before{content:"\e4c3"}.fa-industry:before{content:"\f275"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-florin-sign:before{content:"\e184"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-less-than:before{content:"\3c"}.fa-angle-down:before{content:"\f107"}.fa-car-tunnel:before{content:"\e4de"}.fa-head-side-cough:before{content:"\e061"}.fa-grip-lines:before{content:"\f7a4"}.fa-thumbs-down:before{content:"\f165"}.fa-user-lock:before{content:"\f502"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-chess-pawn:before{content:"\f443"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-person-through-window:before{content:"\e5a9"}.fa-toolbox:before{content:"\f552"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-bug:before{content:"\f188"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-mountain-sun:before{content:"\e52f"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-dice-d20:before{content:"\f6cf"}.fa-truck-droplet:before{content:"\e58c"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-medal:before{content:"\f5a2"}.fa-bed:before{content:"\f236"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-podcast:before{content:"\f2ce"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-bell:before{content:"\f0f3"}.fa-superscript:before{content:"\f12b"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-star-of-life:before{content:"\f621"}.fa-phone-slash:before{content:"\f3dd"}.fa-paint-roller:before{content:"\f5aa"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-file:before{content:"\f15b"}.fa-greater-than:before{content:"\3e"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-arrow-down:before{content:"\f063"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-eraser:before{content:"\f12d"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-person-burst:before{content:"\e53b"}.fa-dove:before{content:"\f4ba"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-socks:before{content:"\f696"}.fa-inbox:before{content:"\f01c"}.fa-section:before{content:"\e447"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-envelope-open-text:before{content:"\f658"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-wine-bottle:before{content:"\f72f"}.fa-chess-rook:before{content:"\f447"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-dharmachakra:before{content:"\f655"}.fa-hotdog:before{content:"\f80f"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-drum:before{content:"\f569"}.fa-ice-cream:before{content:"\f810"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-fax:before{content:"\f1ac"}.fa-paragraph:before{content:"\f1dd"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-star-half:before{content:"\f089"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-tree-city:before{content:"\e587"}.fa-play:before{content:"\f04b"}.fa-font:before{content:"\f031"}.fa-rupiah-sign:before{content:"\e23d"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-naira-sign:before{content:"\e1f6"}.fa-cart-arrow-down:before{content:"\f218"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-receipt:before{content:"\f543"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-chevron-down:before{content:"\f078"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-skull-crossbones:before{content:"\f714"}.fa-code-compare:before{content:"\e13a"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-school-lock:before{content:"\e56f"}.fa-tower-cell:before{content:"\e585"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-ranking-star:before{content:"\e561"}.fa-chess-king:before{content:"\f43f"}.fa-person-harassing:before{content:"\e549"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-arrow-up:before{content:"\f062"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-shrimp:before{content:"\e448"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-jug-detergent:before{content:"\e519"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-user-shield:before{content:"\f505"}.fa-wind:before{content:"\f72e"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-y:before{content:"\59"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-fish:before{content:"\f578"}.fa-user-graduate:before{content:"\f501"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-clapperboard:before{content:"\e131"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-jet-fighter-up:before{content:"\e518"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-copy:before{content:"\f0c5"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-hand-sparkles:before{content:"\e05d"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-gun:before{content:"\e19b"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-expand:before{content:"\f065"}.fa-computer:before{content:"\e4e5"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-peso-sign:before{content:"\e222"}.fa-building-shield:before{content:"\e4d8"}.fa-baby:before{content:"\f77c"}.fa-users-line:before{content:"\e592"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-tractor:before{content:"\f722"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-lines-leaning:before{content:"\e51e"}.fa-ruler-combined:before{content:"\f546"}.fa-copyright:before{content:"\f1f9"}.fa-equals:before{content:"\3d"}.fa-blender:before{content:"\f517"}.fa-teeth:before{content:"\f62e"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-map:before{content:"\f279"}.fa-rocket:before{content:"\f135"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-folder-minus:before{content:"\f65d"}.fa-store:before{content:"\f54e"}.fa-arrow-trend-up:before{content:"\e098"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-bezier-curve:before{content:"\f55b"}.fa-bell-slash:before{content:"\f1f6"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-school-flag:before{content:"\e56e"}.fa-fill:before{content:"\f575"}.fa-angle-up:before{content:"\f106"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-holly-berry:before{content:"\f7aa"}.fa-chevron-left:before{content:"\f053"}.fa-bacteria:before{content:"\e059"}.fa-hand-lizard:before{content:"\f258"}.fa-disease:before{content:"\f7fa"}.fa-briefcase-medical:before{content:"\f469"}.fa-genderless:before{content:"\f22d"}.fa-chevron-right:before{content:"\f054"}.fa-retweet:before{content:"\f079"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-pump-soap:before{content:"\e06b"}.fa-video-slash:before{content:"\f4e2"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-radio:before{content:"\f8d7"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-traffic-light:before{content:"\f637"}.fa-thermometer:before{content:"\f491"}.fa-vr-cardboard:before{content:"\f729"}.fa-hand-middle-finger:before{content:"\f806"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-truck-moving:before{content:"\f4df"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-display:before{content:"\e163"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-trophy:before{content:"\f091"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-hammer:before{content:"\f6e3"}.fa-hand-peace:before{content:"\f25b"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-spinner:before{content:"\f110"}.fa-robot:before{content:"\f544"}.fa-peace:before{content:"\f67c"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-warehouse:before{content:"\f494"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-splotch:before{content:"\f5bc"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-dice-four:before{content:"\f524"}.fa-sim-card:before{content:"\f7c4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-mercury:before{content:"\f223"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-person-falling-burst:before{content:"\e547"}.fa-award:before{content:"\f559"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-building:before{content:"\f1ad"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-qrcode:before{content:"\f029"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-house-medical:before{content:"\e3b2"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-house-chimney-window:before{content:"\e00d"}.fa-pen-nib:before{content:"\f5ad"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tents:before{content:"\e582"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-dog:before{content:"\f6d3"}.fa-carrot:before{content:"\f787"}.fa-moon:before{content:"\f186"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-cheese:before{content:"\f7ef"}.fa-yin-yang:before{content:"\f6ad"}.fa-music:before{content:"\f001"}.fa-code-commit:before{content:"\f386"}.fa-temperature-low:before{content:"\f76b"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-broom:before{content:"\f51a"}.fa-shield-heart:before{content:"\e574"}.fa-gopuram:before{content:"\f664"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-hashtag:before{content:"\23"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-oil-can:before{content:"\f613"}.fa-t:before{content:"\54"}.fa-hippo:before{content:"\f6ed"}.fa-chart-column:before{content:"\e0e3"}.fa-infinity:before{content:"\f534"}.fa-vial-circle-check:before{content:"\e596"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-voicemail:before{content:"\f897"}.fa-fan:before{content:"\f863"}.fa-person-walking-luggage:before{content:"\e554"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-calendar:before{content:"\f133"}.fa-trailer:before{content:"\e041"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-sd-card:before{content:"\f7c2"}.fa-dragon:before{content:"\f6d5"}.fa-shoe-prints:before{content:"\f54b"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-hand-holding:before{content:"\f4bd"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-clone:before{content:"\f24d"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-tornado:before{content:"\f76f"}.fa-file-circle-plus:before{content:"\e494"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-anchor:before{content:"\f13d"}.fa-border-all:before{content:"\f84c"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-cookie-bite:before{content:"\f564"}.fa-arrow-trend-down:before{content:"\e097"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-draw-polygon:before{content:"\f5ee"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-shower:before{content:"\f2cc"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-m:before{content:"\4d"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-book:before{content:"\f02d"}.fa-user-plus:before{content:"\f234"}.fa-check:before{content:"\f00c"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-house-circle-check:before{content:"\e509"}.fa-angle-left:before{content:"\f104"}.fa-diagram-successor:before{content:"\e47a"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-cloud-moon:before{content:"\f6c3"}.fa-briefcase:before{content:"\f0b1"}.fa-person-falling:before{content:"\e546"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-user-tag:before{content:"\f507"}.fa-rug:before{content:"\e569"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-baht-sign:before{content:"\e0ac"}.fa-book-open:before{content:"\f518"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-handcuffs:before{content:"\e4f8"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-database:before{content:"\f1c0"}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-mask-face:before{content:"\e1d7"}.fa-hill-rockslide:before{content:"\e508"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-paper-plane:before{content:"\f1d8"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-dungeon:before{content:"\f6d9"}.fa-align-right:before{content:"\f038"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-life-ring:before{content:"\f1cd"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-calendar-day:before{content:"\f783"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-dice:before{content:"\f522"}.fa-bowling-ball:before{content:"\f436"}.fa-brain:before{content:"\f5dc"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-calendar-minus:before{content:"\f272"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-gifts:before{content:"\f79c"}.fa-hotel:before{content:"\f594"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-thumbs-up:before{content:"\f164"}.fa-user-clock:before{content:"\f4fd"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-file-invoice:before{content:"\f570"}.fa-window-minimize:before{content:"\f2d1"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-brush:before{content:"\f55d"}.fa-mask:before{content:"\f6fa"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-ruler-vertical:before{content:"\f548"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-train-tram:before{content:"\e5b4"}.fa-user-nurse:before{content:"\f82f"}.fa-syringe:before{content:"\f48e"}.fa-cloud-sun:before{content:"\f6c4"}.fa-stopwatch-20:before{content:"\e06f"}.fa-square-full:before{content:"\f45c"}.fa-magnet:before{content:"\f076"}.fa-jar:before{content:"\e516"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-bug-slash:before{content:"\e490"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-bone:before{content:"\f5d7"}.fa-user-injured:before{content:"\f728"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-plane:before{content:"\f072"}.fa-tent-arrows-down:before{content:"\e581"}.fa-exclamation:before{content:"\21"}.fa-arrows-spin:before{content:"\e4bb"}.fa-print:before{content:"\f02f"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-x:before{content:"\58"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-person-military-pointing:before{content:"\e54a"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-umbrella:before{content:"\f0e9"}.fa-trowel:before{content:"\e589"}.fa-d:before{content:"\44"}.fa-stapler:before{content:"\e5af"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-kip-sign:before{content:"\e1c4"}.fa-hand-point-left:before{content:"\f0a5"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-barcode:before{content:"\f02a"}.fa-plus-minus:before{content:"\e43c"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-person-circle-check:before{content:"\e53e"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero:before{content:"\f3d0"}.fa-hooli:before{content:"\f427"}.fa-yelp:before{content:"\f1e9"}.fa-cc-visa:before{content:"\f1f0"}.fa-lastfm:before{content:"\f202"}.fa-shopware:before{content:"\f5b5"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-aws:before{content:"\f375"}.fa-redhat:before{content:"\f7bc"}.fa-yoast:before{content:"\f2b1"}.fa-cloudflare:before{content:"\e07d"}.fa-ups:before{content:"\f7e0"}.fa-wpexplorer:before{content:"\f2de"}.fa-dyalog:before{content:"\f399"}.fa-bity:before{content:"\f37a"}.fa-stackpath:before{content:"\f842"}.fa-buysellads:before{content:"\f20d"}.fa-first-order:before{content:"\f2b0"}.fa-modx:before{content:"\f285"}.fa-guilded:before{content:"\e07e"}.fa-vnv:before{content:"\f40b"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-microsoft:before{content:"\f3ca"}.fa-qq:before{content:"\f1d6"}.fa-orcid:before{content:"\f8d2"}.fa-java:before{content:"\f4e4"}.fa-invision:before{content:"\f7b0"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-centercode:before{content:"\f380"}.fa-glide-g:before{content:"\f2a6"}.fa-drupal:before{content:"\f1a9"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-unity:before{content:"\e049"}.fa-whmcs:before{content:"\f40d"}.fa-rocketchat:before{content:"\f3e8"}.fa-vk:before{content:"\f189"}.fa-untappd:before{content:"\f405"}.fa-mailchimp:before{content:"\f59e"}.fa-css3-alt:before{content:"\f38b"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-vimeo-v:before{content:"\f27d"}.fa-contao:before{content:"\f26d"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-deskpro:before{content:"\f38f"}.fa-sistrix:before{content:"\f3ee"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-battle-net:before{content:"\f835"}.fa-the-red-yeti:before{content:"\f69d"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-edge:before{content:"\f282"}.fa-napster:before{content:"\f3d2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-google-plus-g:before{content:"\f0d5"}.fa-artstation:before{content:"\f77a"}.fa-markdown:before{content:"\f60f"}.fa-sourcetree:before{content:"\f7d3"}.fa-google-plus:before{content:"\f2b3"}.fa-diaspora:before{content:"\f791"}.fa-foursquare:before{content:"\f180"}.fa-stack-overflow:before{content:"\f16c"}.fa-github-alt:before{content:"\f113"}.fa-phoenix-squadron:before{content:"\f511"}.fa-pagelines:before{content:"\f18c"}.fa-algolia:before{content:"\f36c"}.fa-red-river:before{content:"\f3e3"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-safari:before{content:"\f267"}.fa-google:before{content:"\f1a0"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-atlassian:before{content:"\f77b"}.fa-linkedin-in:before{content:"\f0e1"}.fa-digital-ocean:before{content:"\f391"}.fa-nimblr:before{content:"\f5a8"}.fa-chromecast:before{content:"\f838"}.fa-evernote:before{content:"\f839"}.fa-hacker-news:before{content:"\f1d4"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-adversal:before{content:"\f36a"}.fa-creative-commons:before{content:"\f25e"}.fa-watchman-monitoring:before{content:"\e087"}.fa-fonticons:before{content:"\f280"}.fa-weixin:before{content:"\f1d7"}.fa-shirtsinbulk:before{content:"\f214"}.fa-codepen:before{content:"\f1cb"}.fa-git-alt:before{content:"\f841"}.fa-lyft:before{content:"\f3c3"}.fa-rev:before{content:"\f5b2"}.fa-windows:before{content:"\f17a"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-meetup:before{content:"\f2e0"}.fa-centos:before{content:"\f789"}.fa-adn:before{content:"\f170"}.fa-cloudsmith:before{content:"\f384"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-codiepie:before{content:"\f284"}.fa-node:before{content:"\f419"}.fa-mix:before{content:"\f3cb"}.fa-steam:before{content:"\f1b6"}.fa-cc-apple-pay:before{content:"\f416"}.fa-scribd:before{content:"\f28a"}.fa-openid:before{content:"\f19b"}.fa-instalod:before{content:"\e081"}.fa-expeditedssl:before{content:"\f23e"}.fa-sellcast:before{content:"\f2da"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-r-project:before{content:"\f4f7"}.fa-delicious:before{content:"\f1a5"}.fa-freebsd:before{content:"\f3a4"}.fa-vuejs:before{content:"\f41f"}.fa-accusoft:before{content:"\f369"}.fa-ioxhost:before{content:"\f208"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-app-store:before{content:"\f36f"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-itunes-note:before{content:"\f3b5"}.fa-golang:before{content:"\e40f"}.fa-kickstarter:before{content:"\f3bb"}.fa-grav:before{content:"\f2d6"}.fa-weibo:before{content:"\f18a"}.fa-uncharted:before{content:"\e084"}.fa-firstdraft:before{content:"\f3a1"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-wikipedia-w:before{content:"\f266"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-angellist:before{content:"\f209"}.fa-galactic-republic:before{content:"\f50c"}.fa-nfc-directional:before{content:"\e530"}.fa-skype:before{content:"\f17e"}.fa-joget:before{content:"\f3b7"}.fa-fedora:before{content:"\f798"}.fa-stripe-s:before{content:"\f42a"}.fa-meta:before{content:"\e49b"}.fa-laravel:before{content:"\f3bd"}.fa-hotjar:before{content:"\f3b1"}.fa-bluetooth-b:before{content:"\f294"}.fa-sticker-mule:before{content:"\f3f7"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-hips:before{content:"\f452"}.fa-behance:before{content:"\f1b4"}.fa-reddit:before{content:"\f1a1"}.fa-discord:before{content:"\f392"}.fa-chrome:before{content:"\f268"}.fa-app-store-ios:before{content:"\f370"}.fa-cc-discover:before{content:"\f1f2"}.fa-wpbeginner:before{content:"\f297"}.fa-confluence:before{content:"\f78d"}.fa-mdb:before{content:"\f8ca"}.fa-dochub:before{content:"\f394"}.fa-accessible-icon:before{content:"\f368"}.fa-ebay:before{content:"\f4f4"}.fa-amazon:before{content:"\f270"}.fa-unsplash:before{content:"\e07c"}.fa-yarn:before{content:"\f7e3"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-500px:before{content:"\f26e"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-asymmetrik:before{content:"\f372"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-gratipay:before{content:"\f184"}.fa-apple:before{content:"\f179"}.fa-hive:before{content:"\e07f"}.fa-gitkraken:before{content:"\f3a6"}.fa-keybase:before{content:"\f4f5"}.fa-apple-pay:before{content:"\f415"}.fa-padlet:before{content:"\e4a0"}.fa-amazon-pay:before{content:"\f42c"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-stumbleupon:before{content:"\f1a4"}.fa-fedex:before{content:"\f797"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-shopify:before{content:"\e057"}.fa-neos:before{content:"\f612"}.fa-hackerrank:before{content:"\f5f7"}.fa-researchgate:before{content:"\f4f8"}.fa-swift:before{content:"\f8e1"}.fa-angular:before{content:"\f420"}.fa-speakap:before{content:"\f3f3"}.fa-angrycreative:before{content:"\f36e"}.fa-y-combinator:before{content:"\f23b"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-studiovinari:before{content:"\f3f8"}.fa-pied-piper:before{content:"\f2ae"}.fa-wordpress:before{content:"\f19a"}.fa-product-hunt:before{content:"\f288"}.fa-firefox:before{content:"\f269"}.fa-linode:before{content:"\f2b8"}.fa-goodreads:before{content:"\f3a8"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-jsfiddle:before{content:"\f1cc"}.fa-sith:before{content:"\f512"}.fa-themeisle:before{content:"\f2b2"}.fa-page4:before{content:"\f3d7"}.fa-hashnode:before{content:"\e499"}.fa-react:before{content:"\f41b"}.fa-cc-paypal:before{content:"\f1f4"}.fa-squarespace:before{content:"\f5be"}.fa-cc-stripe:before{content:"\f1f5"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-bitcoin:before{content:"\f379"}.fa-keycdn:before{content:"\f3ba"}.fa-opera:before{content:"\f26a"}.fa-itch-io:before{content:"\f83a"}.fa-umbraco:before{content:"\f8e8"}.fa-galactic-senate:before{content:"\f50d"}.fa-ubuntu:before{content:"\f7df"}.fa-draft2digital:before{content:"\f396"}.fa-stripe:before{content:"\f429"}.fa-houzz:before{content:"\f27c"}.fa-gg:before{content:"\f260"}.fa-dhl:before{content:"\f790"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-xing:before{content:"\f168"}.fa-blackberry:before{content:"\f37b"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-playstation:before{content:"\f3df"}.fa-quinscape:before{content:"\f459"}.fa-less:before{content:"\f41d"}.fa-blogger-b:before{content:"\f37d"}.fa-opencart:before{content:"\f23d"}.fa-vine:before{content:"\f1ca"}.fa-paypal:before{content:"\f1ed"}.fa-gitlab:before{content:"\f296"}.fa-typo3:before{content:"\f42b"}.fa-reddit-alien:before{content:"\f281"}.fa-yahoo:before{content:"\f19e"}.fa-dailymotion:before{content:"\e052"}.fa-affiliatetheme:before{content:"\f36b"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-bootstrap:before{content:"\f836"}.fa-odnoklassniki:before{content:"\f263"}.fa-nfc-symbol:before{content:"\e531"}.fa-ethereum:before{content:"\f42e"}.fa-speaker-deck:before{content:"\f83c"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-patreon:before{content:"\f3d9"}.fa-avianex:before{content:"\f374"}.fa-ello:before{content:"\f5f1"}.fa-gofore:before{content:"\f3a7"}.fa-bimobject:before{content:"\f378"}.fa-facebook-f:before{content:"\f39e"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-mandalorian:before{content:"\f50f"}.fa-first-order-alt:before{content:"\f50a"}.fa-osi:before{content:"\f41a"}.fa-google-wallet:before{content:"\f1ee"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-periscope:before{content:"\f3da"}.fa-fulcrum:before{content:"\f50b"}.fa-cloudscale:before{content:"\f383"}.fa-forumbee:before{content:"\f211"}.fa-mizuni:before{content:"\f3cc"}.fa-schlix:before{content:"\f3ea"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-bandcamp:before{content:"\f2d5"}.fa-wpforms:before{content:"\f298"}.fa-cloudversify:before{content:"\f385"}.fa-usps:before{content:"\f7e1"}.fa-megaport:before{content:"\f5a3"}.fa-magento:before{content:"\f3c4"}.fa-spotify:before{content:"\f1bc"}.fa-optin-monster:before{content:"\f23c"}.fa-fly:before{content:"\f417"}.fa-aviato:before{content:"\f421"}.fa-itunes:before{content:"\f3b4"}.fa-cuttlefish:before{content:"\f38c"}.fa-blogger:before{content:"\f37c"}.fa-flickr:before{content:"\f16e"}.fa-viber:before{content:"\f409"}.fa-soundcloud:before{content:"\f1be"}.fa-digg:before{content:"\f1a6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-symfony:before{content:"\f83d"}.fa-maxcdn:before{content:"\f136"}.fa-etsy:before{content:"\f2d7"}.fa-facebook-messenger:before{content:"\f39f"}.fa-audible:before{content:"\f373"}.fa-think-peaks:before{content:"\f731"}.fa-bilibili:before{content:"\e3d9"}.fa-erlang:before{content:"\f39d"}.fa-cotton-bureau:before{content:"\f89e"}.fa-dashcube:before{content:"\f210"}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-stack-exchange:before{content:"\f18d"}.fa-elementor:before{content:"\f430"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-palfed:before{content:"\f3d8"}.fa-superpowers:before{content:"\f2dd"}.fa-resolving:before{content:"\f3e7"}.fa-xbox:before{content:"\f412"}.fa-searchengin:before{content:"\f3eb"}.fa-tiktok:before{content:"\e07b"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-renren:before{content:"\f18b"}.fa-linux:before{content:"\f17c"}.fa-glide:before{content:"\f2a5"}.fa-linkedin:before{content:"\f08c"}.fa-hubspot:before{content:"\f3b2"}.fa-deploydog:before{content:"\f38e"}.fa-twitch:before{content:"\f1e8"}.fa-ravelry:before{content:"\f2d9"}.fa-mixer:before{content:"\e056"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-vimeo:before{content:"\f40a"}.fa-mendeley:before{content:"\f7b3"}.fa-uniregistry:before{content:"\f404"}.fa-figma:before{content:"\f799"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-dropbox:before{content:"\f16b"}.fa-instagram:before{content:"\f16d"}.fa-cmplid:before{content:"\e360"}.fa-facebook:before{content:"\f09a"}.fa-gripfire:before{content:"\f3ac"}.fa-jedi-order:before{content:"\f50e"}.fa-uikit:before{content:"\f403"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-phabricator:before{content:"\f3db"}.fa-ussunnah:before{content:"\f407"}.fa-earlybirds:before{content:"\f39a"}.fa-trade-federation:before{content:"\f513"}.fa-autoprefixer:before{content:"\f41c"}.fa-whatsapp:before{content:"\f232"}.fa-slideshare:before{content:"\f1e7"}.fa-google-play:before{content:"\f3ab"}.fa-viadeo:before{content:"\f2a9"}.fa-line:before{content:"\f3c0"}.fa-google-drive:before{content:"\f3aa"}.fa-servicestack:before{content:"\f3ec"}.fa-simplybuilt:before{content:"\f215"}.fa-bitbucket:before{content:"\f171"}.fa-imdb:before{content:"\f2d8"}.fa-deezer:before{content:"\e077"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-jira:before{content:"\f7b1"}.fa-docker:before{content:"\f395"}.fa-screenpal:before{content:"\e570"}.fa-bluetooth:before{content:"\f293"}.fa-gitter:before{content:"\f426"}.fa-d-and-d:before{content:"\f38d"}.fa-microblog:before{content:"\e01a"}.fa-cc-diners-club:before{content:"\f24c"}.fa-gg-circle:before{content:"\f261"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-yandex:before{content:"\f413"}.fa-readme:before{content:"\f4d5"}.fa-html5:before{content:"\f13b"}.fa-sellsy:before{content:"\f213"}.fa-sass:before{content:"\f41e"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-buromobelexperte:before{content:"\f37f"}.fa-salesforce:before{content:"\f83b"}.fa-octopus-deploy:before{content:"\e082"}.fa-medapps:before{content:"\f3c6"}.fa-ns8:before{content:"\f3d5"}.fa-pinterest-p:before{content:"\f231"}.fa-apper:before{content:"\f371"}.fa-fort-awesome:before{content:"\f286"}.fa-waze:before{content:"\f83f"}.fa-cc-jcb:before{content:"\f24b"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-rust:before{content:"\e07a"}.fa-wix:before{content:"\f5cf"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-supple:before{content:"\f3f9"}.fa-rebel:before{content:"\f1d0"}.fa-css3:before{content:"\f13c"}.fa-staylinked:before{content:"\f3f5"}.fa-kaggle:before{content:"\f5fa"}.fa-space-awesome:before{content:"\e5ac"}.fa-deviantart:before{content:"\f1bd"}.fa-cpanel:before{content:"\f388"}.fa-goodreads-g:before{content:"\f3a9"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-trello:before{content:"\f181"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-get-pocket:before{content:"\f265"}.fa-perbyte:before{content:"\e083"}.fa-grunt:before{content:"\f3ad"}.fa-weebly:before{content:"\f5cc"}.fa-connectdevelop:before{content:"\f20e"}.fa-leanpub:before{content:"\f212"}.fa-black-tie:before{content:"\f27e"}.fa-themeco:before{content:"\f5c6"}.fa-python:before{content:"\f3e2"}.fa-android:before{content:"\f17b"}.fa-bots:before{content:"\e340"}.fa-free-code-camp:before{content:"\f2c5"}.fa-hornbill:before{content:"\f592"}.fa-js:before{content:"\f3b8"}.fa-ideal:before{content:"\e013"}.fa-git:before{content:"\f1d3"}.fa-dev:before{content:"\f6cc"}.fa-sketch:before{content:"\f7c6"}.fa-yandex-international:before{content:"\f414"}.fa-cc-amex:before{content:"\f1f3"}.fa-uber:before{content:"\f402"}.fa-github:before{content:"\f09b"}.fa-php:before{content:"\f457"}.fa-alipay:before{content:"\f642"}.fa-youtube:before{content:"\f167"}.fa-skyatlas:before{content:"\f216"}.fa-firefox-browser:before{content:"\e007"}.fa-replyd:before{content:"\f3e6"}.fa-suse:before{content:"\f7d6"}.fa-jenkins:before{content:"\f3b6"}.fa-twitter:before{content:"\f099"}.fa-rockrms:before{content:"\f3e9"}.fa-pinterest:before{content:"\f0d2"}.fa-buffer:before{content:"\f837"}.fa-npm:before{content:"\f3d4"}.fa-yammer:before{content:"\f840"}.fa-btc:before{content:"\f15a"}.fa-dribbble:before{content:"\f17d"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-internet-explorer:before{content:"\f26b"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-old-republic:before{content:"\f510"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-node-js:before{content:"\f3d3"}.fa-edge-legacy:before{content:"\e078"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-medrt:before{content:"\f3c8"}.fa-usb:before{content:"\f287"}.fa-tumblr:before{content:"\f173"}.fa-vaadin:before{content:"\f408"}.fa-quora:before{content:"\f2c4"}.fa-reacteurope:before{content:"\f75d"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-amilia:before{content:"\f36d"}.fa-mixcloud:before{content:"\f289"}.fa-flipboard:before{content:"\f44d"}.fa-viacoin:before{content:"\f237"}.fa-critical-role:before{content:"\f6c9"}.fa-sitrox:before{content:"\e44a"}.fa-discourse:before{content:"\f393"}.fa-joomla:before{content:"\f1aa"}.fa-mastodon:before{content:"\f4f6"}.fa-airbnb:before{content:"\f834"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-buy-n-large:before{content:"\f8a6"}.fa-gulp:before{content:"\f3ae"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-strava:before{content:"\f428"}.fa-ember:before{content:"\f423"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-teamspeak:before{content:"\f4f9"}.fa-pushed:before{content:"\f3e1"}.fa-wordpress-simple:before{content:"\f411"}.fa-nutritionix:before{content:"\f3d6"}.fa-wodu:before{content:"\e088"}.fa-google-pay:before{content:"\e079"}.fa-intercom:before{content:"\f7af"}.fa-zhihu:before{content:"\f63f"}.fa-korvue:before{content:"\f42f"}.fa-pix:before{content:"\e43a"}.fa-steam-symbol:before{content:"\f3f6"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a} \ No newline at end of file diff --git a/assets/frontend/icons/fontawesome6/css/test.json b/assets/frontend/icons/fontawesome6/css/test.json new file mode 100644 index 0000000..24e6400 --- /dev/null +++ b/assets/frontend/icons/fontawesome6/css/test.json @@ -0,0 +1 @@ +fa-0,fa-1,fa-2,fa-3,fa-4,fa-5,fa-6,fa-7,fa-8,fa-9,fa-fill-drip,fa-arrows-to-circle,fa-circle-chevron-right,fa-chevron-circle-right,fa-at,fa-trash-can,fa-trash-alt,fa-text-height,fa-user-xmark,fa-user-times,fa-stethoscope,fa-message,fa-comment-alt,fa-info,fa-down-left-and-up-right-to-center,fa-compress-alt,fa-explosion,fa-file-lines,fa-file-alt,fa-file-text,fa-wave-square,fa-ring,fa-building-un,fa-dice-three,fa-calendar-days,fa-calendar-alt,fa-anchor-circle-check,fa-building-circle-arrow-right,fa-volleyball,fa-volleyball-ball,fa-arrows-up-to-line,fa-sort-down,fa-sort-desc,fa-circle-minus,fa-minus-circle,fa-door-open,fa-right-from-bracket,fa-sign-out-alt,fa-atom,fa-soap,fa-icons,fa-heart-music-camera-bolt,fa-microphone-lines-slash,fa-microphone-alt-slash,fa-bridge-circle-check,fa-pump-medical,fa-fingerprint,fa-hand-point-right,fa-magnifying-glass-location,fa-search-location,fa-forward-step,fa-step-forward,fa-face-smile-beam,fa-smile-beam,fa-flag-checkered,fa-football,fa-football-ball,fa-school-circle-exclamation,fa-crop,fa-angles-down,fa-angle-double-down,fa-users-rectangle,fa-people-roof,fa-people-line,fa-beer-mug-empty,fa-beer,fa-diagram-predecessor,fa-arrow-up-long,fa-long-arrow-up,fa-fire-flame-simple,fa-burn,fa-person,fa-male,fa-laptop,fa-file-csv,fa-menorah,fa-truck-plane,fa-record-vinyl,fa-face-grin-stars,fa-grin-stars,fa-bong,fa-spaghetti-monster-flying,fa-pastafarianism,fa-arrow-down-up-across-line,fa-spoon,fa-utensil-spoon,fa-jar-wheat,fa-envelopes-bulk,fa-mail-bulk,fa-file-circle-exclamation,fa-circle-h,fa-hospital-symbol,fa-pager,fa-address-book,fa-contact-book,fa-strikethrough,fa-k,fa-landmark-flag,fa-pencil,fa-pencil-alt,fa-backward,fa-caret-right,fa-comments,fa-paste,fa-file-clipboard,fa-code-pull-request,fa-clipboard-list,fa-truck-ramp-box,fa-truck-loading,fa-user-check,fa-vial-virus,fa-sheet-plastic,fa-blog,fa-user-ninja,fa-person-arrow-up-from-line,fa-scroll-torah,fa-torah,fa-broom-ball,fa-quidditch,fa-quidditch-broom-ball,fa-toggle-off,fa-box-archive,fa-archive,fa-person-drowning,fa-arrow-down-9-1,fa-sort-numeric-desc,fa-sort-numeric-down-alt,fa-face-grin-tongue-squint,fa-grin-tongue-squint,fa-spray-can,fa-truck-monster,fa-w,fa-earth-africa,fa-globe-africa,fa-rainbow,fa-circle-notch,fa-tablet-screen-button,fa-tablet-alt,fa-paw,fa-cloud,fa-trowel-bricks,fa-face-flushed,fa-flushed,fa-hospital-user,fa-tent-arrow-left-right,fa-gavel,fa-legal,fa-binoculars,fa-microphone-slash,fa-box-tissue,fa-motorcycle,fa-bell-concierge,fa-concierge-bell,fa-pen-ruler,fa-pencil-ruler,fa-people-arrows,fa-people-arrows-left-right,fa-mars-and-venus-burst,fa-square-caret-right,fa-caret-square-right,fa-scissors,fa-cut,fa-sun-plant-wilt,fa-toilets-portable,fa-hockey-puck,fa-table,fa-magnifying-glass-arrow-right,fa-tachograph-digital,fa-digital-tachograph,fa-users-slash,fa-clover,fa-reply,fa-mail-reply,fa-star-and-crescent,fa-house-fire,fa-square-minus,fa-minus-square,fa-helicopter,fa-compass,fa-square-caret-down,fa-caret-square-down,fa-file-circle-question,fa-laptop-code,fa-swatchbook,fa-prescription-bottle,fa-bars,fa-navicon,fa-people-group,fa-hourglass-end,fa-hourglass-3,fa-heart-crack,fa-heart-broken,fa-square-up-right,fa-external-link-square-alt,fa-face-kiss-beam,fa-kiss-beam,fa-film,fa-ruler-horizontal,fa-people-robbery,fa-lightbulb,fa-caret-left,fa-circle-exclamation,fa-exclamation-circle,fa-school-circle-xmark,fa-arrow-right-from-bracket,fa-sign-out,fa-circle-chevron-down,fa-chevron-circle-down,fa-unlock-keyhole,fa-unlock-alt,fa-cloud-showers-heavy,fa-headphones-simple,fa-headphones-alt,fa-sitemap,fa-circle-dollar-to-slot,fa-donate,fa-memory,fa-road-spikes,fa-fire-burner,fa-flag,fa-hanukiah,fa-feather,fa-volume-low,fa-volume-down,fa-comment-slash,fa-cloud-sun-rain,fa-compress,fa-wheat-awn,fa-wheat-alt,fa-ankh,fa-hands-holding-child,fa-asterisk,fa-square-check,fa-check-square,fa-peseta-sign,fa-heading,fa-header,fa-ghost,fa-list,fa-list-squares,fa-square-phone-flip,fa-phone-square-alt,fa-cart-plus,fa-gamepad,fa-circle-dot,fa-dot-circle,fa-face-dizzy,fa-dizzy,fa-egg,fa-house-medical-circle-xmark,fa-campground,fa-folder-plus,fa-futbol,fa-futbol-ball,fa-soccer-ball,fa-paintbrush,fa-paint-brush,fa-lock,fa-gas-pump,fa-hot-tub-person,fa-hot-tub,fa-map-location,fa-map-marked,fa-house-flood-water,fa-tree,fa-bridge-lock,fa-sack-dollar,fa-pen-to-square,fa-edit,fa-car-side,fa-share-nodes,fa-share-alt,fa-heart-circle-minus,fa-hourglass-half,fa-hourglass-2,fa-microscope,fa-sink,fa-bag-shopping,fa-shopping-bag,fa-arrow-down-z-a,fa-sort-alpha-desc,fa-sort-alpha-down-alt,fa-mitten,fa-person-rays,fa-users,fa-eye-slash,fa-flask-vial,fa-hand,fa-hand-paper,fa-om,fa-worm,fa-house-circle-xmark,fa-plug,fa-chevron-up,fa-hand-spock,fa-stopwatch,fa-face-kiss,fa-kiss,fa-bridge-circle-xmark,fa-face-grin-tongue,fa-grin-tongue,fa-chess-bishop,fa-face-grin-wink,fa-grin-wink,fa-ear-deaf,fa-deaf,fa-deafness,fa-hard-of-hearing,fa-road-circle-check,fa-dice-five,fa-square-rss,fa-rss-square,fa-land-mine-on,fa-i-cursor,fa-stamp,fa-stairs,fa-i,fa-hryvnia-sign,fa-hryvnia,fa-pills,fa-face-grin-wide,fa-grin-alt,fa-tooth,fa-v,fa-bicycle,fa-staff-snake,fa-rod-asclepius,fa-rod-snake,fa-staff-aesculapius,fa-head-side-cough-slash,fa-truck-medical,fa-ambulance,fa-wheat-awn-circle-exclamation,fa-snowman,fa-mortar-pestle,fa-road-barrier,fa-school,fa-igloo,fa-joint,fa-angle-right,fa-horse,fa-q,fa-g,fa-notes-medical,fa-temperature-half,fa-temperature-2,fa-thermometer-2,fa-thermometer-half,fa-dong-sign,fa-capsules,fa-poo-storm,fa-poo-bolt,fa-face-frown-open,fa-frown-open,fa-hand-point-up,fa-money-bill,fa-bookmark,fa-align-justify,fa-umbrella-beach,fa-helmet-un,fa-bullseye,fa-bacon,fa-hand-point-down,fa-arrow-up-from-bracket,fa-folder,fa-folder-blank,fa-file-waveform,fa-file-medical-alt,fa-radiation,fa-chart-simple,fa-mars-stroke,fa-vial,fa-gauge,fa-dashboard,fa-gauge-med,fa-tachometer-alt-average,fa-wand-magic-sparkles,fa-magic-wand-sparkles,fa-e,fa-pen-clip,fa-pen-alt,fa-bridge-circle-exclamation,fa-user,fa-school-circle-check,fa-dumpster,fa-van-shuttle,fa-shuttle-van,fa-building-user,fa-square-caret-left,fa-caret-square-left,fa-highlighter,fa-key,fa-bullhorn,fa-globe,fa-synagogue,fa-person-half-dress,fa-road-bridge,fa-location-arrow,fa-c,fa-tablet-button,fa-building-lock,fa-pizza-slice,fa-money-bill-wave,fa-chart-area,fa-area-chart,fa-house-flag,fa-person-circle-minus,fa-ban,fa-cancel,fa-camera-rotate,fa-spray-can-sparkles,fa-air-freshener,fa-star,fa-repeat,fa-cross,fa-box,fa-venus-mars,fa-arrow-pointer,fa-mouse-pointer,fa-maximize,fa-expand-arrows-alt,fa-charging-station,fa-shapes,fa-triangle-circle-square,fa-shuffle,fa-random,fa-person-running,fa-running,fa-mobile-retro,fa-grip-lines-vertical,fa-spider,fa-hands-bound,fa-file-invoice-dollar,fa-plane-circle-exclamation,fa-x-ray,fa-spell-check,fa-slash,fa-computer-mouse,fa-mouse,fa-arrow-right-to-bracket,fa-sign-in,fa-shop-slash,fa-store-alt-slash,fa-server,fa-virus-covid-slash,fa-shop-lock,fa-hourglass-start,fa-hourglass-1,fa-blender-phone,fa-building-wheat,fa-person-breastfeeding,fa-right-to-bracket,fa-sign-in-alt,fa-venus,fa-passport,fa-heart-pulse,fa-heartbeat,fa-people-carry-box,fa-people-carry,fa-temperature-high,fa-microchip,fa-crown,fa-weight-hanging,fa-xmarks-lines,fa-file-prescription,fa-weight-scale,fa-weight,fa-user-group,fa-user-friends,fa-arrow-up-a-z,fa-sort-alpha-up,fa-chess-knight,fa-face-laugh-squint,fa-laugh-squint,fa-wheelchair,fa-circle-arrow-up,fa-arrow-circle-up,fa-toggle-on,fa-person-walking,fa-walking,fa-l,fa-fire,fa-bed-pulse,fa-procedures,fa-shuttle-space,fa-space-shuttle,fa-face-laugh,fa-laugh,fa-folder-open,fa-heart-circle-plus,fa-code-fork,fa-city,fa-microphone-lines,fa-microphone-alt,fa-pepper-hot,fa-unlock,fa-colon-sign,fa-headset,fa-store-slash,fa-road-circle-xmark,fa-user-minus,fa-mars-stroke-up,fa-mars-stroke-v,fa-champagne-glasses,fa-glass-cheers,fa-clipboard,fa-house-circle-exclamation,fa-file-arrow-up,fa-file-upload,fa-wifi,fa-wifi-3,fa-wifi-strong,fa-bath,fa-bathtub,fa-underline,fa-user-pen,fa-user-edit,fa-signature,fa-stroopwafel,fa-bold,fa-anchor-lock,fa-building-ngo,fa-manat-sign,fa-not-equal,fa-border-top-left,fa-border-style,fa-map-location-dot,fa-map-marked-alt,fa-jedi,fa-square-poll-vertical,fa-poll,fa-mug-hot,fa-car-battery,fa-battery-car,fa-gift,fa-dice-two,fa-chess-queen,fa-glasses,fa-chess-board,fa-building-circle-check,fa-person-chalkboard,fa-mars-stroke-right,fa-mars-stroke-h,fa-hand-back-fist,fa-hand-rock,fa-square-caret-up,fa-caret-square-up,fa-cloud-showers-water,fa-chart-bar,fa-bar-chart,fa-hands-bubbles,fa-hands-wash,fa-less-than-equal,fa-train,fa-eye-low-vision,fa-low-vision,fa-crow,fa-sailboat,fa-window-restore,fa-square-plus,fa-plus-square,fa-torii-gate,fa-frog,fa-bucket,fa-image,fa-microphone,fa-cow,fa-caret-up,fa-screwdriver,fa-folder-closed,fa-house-tsunami,fa-square-nfi,fa-arrow-up-from-ground-water,fa-martini-glass,fa-glass-martini-alt,fa-rotate-left,fa-rotate-back,fa-rotate-backward,fa-undo-alt,fa-table-columns,fa-columns,fa-lemon,fa-head-side-mask,fa-handshake,fa-gem,fa-dolly,fa-dolly-box,fa-smoking,fa-minimize,fa-compress-arrows-alt,fa-monument,fa-snowplow,fa-angles-right,fa-angle-double-right,fa-cannabis,fa-circle-play,fa-play-circle,fa-tablets,fa-ethernet,fa-euro-sign,fa-eur,fa-euro,fa-chair,fa-circle-check,fa-check-circle,fa-circle-stop,fa-stop-circle,fa-compass-drafting,fa-drafting-compass,fa-plate-wheat,fa-icicles,fa-person-shelter,fa-neuter,fa-id-badge,fa-marker,fa-face-laugh-beam,fa-laugh-beam,fa-helicopter-symbol,fa-universal-access,fa-circle-chevron-up,fa-chevron-circle-up,fa-lari-sign,fa-volcano,fa-person-walking-dashed-line-arrow-right,fa-sterling-sign,fa-gbp,fa-pound-sign,fa-viruses,fa-square-person-confined,fa-user-tie,fa-arrow-down-long,fa-long-arrow-down,fa-tent-arrow-down-to-line,fa-certificate,fa-reply-all,fa-mail-reply-all,fa-suitcase,fa-person-skating,fa-skating,fa-filter-circle-dollar,fa-funnel-dollar,fa-camera-retro,fa-circle-arrow-down,fa-arrow-circle-down,fa-file-import,fa-arrow-right-to-file,fa-square-arrow-up-right,fa-external-link-square,fa-box-open,fa-scroll,fa-spa,fa-location-pin-lock,fa-pause,fa-hill-avalanche,fa-temperature-empty,fa-temperature-0,fa-thermometer-0,fa-thermometer-empty,fa-bomb,fa-registered,fa-address-card,fa-contact-card,fa-vcard,fa-scale-unbalanced-flip,fa-balance-scale-right,fa-subscript,fa-diamond-turn-right,fa-directions,fa-burst,fa-house-laptop,fa-laptop-house,fa-face-tired,fa-tired,fa-money-bills,fa-smog,fa-crutch,fa-cloud-arrow-up,fa-cloud-upload,fa-cloud-upload-alt,fa-palette,fa-arrows-turn-right,fa-vest,fa-ferry,fa-arrows-down-to-people,fa-seedling,fa-sprout,fa-left-right,fa-arrows-alt-h,fa-boxes-packing,fa-circle-arrow-left,fa-arrow-circle-left,fa-group-arrows-rotate,fa-bowl-food,fa-candy-cane,fa-arrow-down-wide-short,fa-sort-amount-asc,fa-sort-amount-down,fa-cloud-bolt,fa-thunderstorm,fa-text-slash,fa-remove-format,fa-face-smile-wink,fa-smile-wink,fa-file-word,fa-file-powerpoint,fa-arrows-left-right,fa-arrows-h,fa-house-lock,fa-cloud-arrow-down,fa-cloud-download,fa-cloud-download-alt,fa-children,fa-chalkboard,fa-blackboard,fa-user-large-slash,fa-user-alt-slash,fa-envelope-open,fa-handshake-simple-slash,fa-handshake-alt-slash,fa-mattress-pillow,fa-guarani-sign,fa-arrows-rotate,fa-refresh,fa-sync,fa-fire-extinguisher,fa-cruzeiro-sign,fa-greater-than-equal,fa-shield-halved,fa-shield-alt,fa-book-atlas,fa-atlas,fa-virus,fa-envelope-circle-check,fa-layer-group,fa-arrows-to-dot,fa-archway,fa-heart-circle-check,fa-house-chimney-crack,fa-house-damage,fa-file-zipper,fa-file-archive,fa-square,fa-martini-glass-empty,fa-glass-martini,fa-couch,fa-cedi-sign,fa-italic,fa-church,fa-comments-dollar,fa-democrat,fa-z,fa-person-skiing,fa-skiing,fa-road-lock,fa-a,fa-temperature-arrow-down,fa-temperature-down,fa-feather-pointed,fa-feather-alt,fa-p,fa-snowflake,fa-newspaper,fa-rectangle-ad,fa-ad,fa-circle-arrow-right,fa-arrow-circle-right,fa-filter-circle-xmark,fa-locust,fa-sort,fa-unsorted,fa-list-ol,fa-list-1-2,fa-list-numeric,fa-person-dress-burst,fa-money-check-dollar,fa-money-check-alt,fa-vector-square,fa-bread-slice,fa-language,fa-face-kiss-wink-heart,fa-kiss-wink-heart,fa-filter,fa-question,fa-file-signature,fa-up-down-left-right,fa-arrows-alt,fa-house-chimney-user,fa-hand-holding-heart,fa-puzzle-piece,fa-money-check,fa-star-half-stroke,fa-star-half-alt,fa-code,fa-whiskey-glass,fa-glass-whiskey,fa-building-circle-exclamation,fa-magnifying-glass-chart,fa-arrow-up-right-from-square,fa-external-link,fa-cubes-stacked,fa-won-sign,fa-krw,fa-won,fa-virus-covid,fa-austral-sign,fa-f,fa-leaf,fa-road,fa-taxi,fa-cab,fa-person-circle-plus,fa-chart-pie,fa-pie-chart,fa-bolt-lightning,fa-sack-xmark,fa-file-excel,fa-file-contract,fa-fish-fins,fa-building-flag,fa-face-grin-beam,fa-grin-beam,fa-object-ungroup,fa-poop,fa-location-pin,fa-map-marker,fa-kaaba,fa-toilet-paper,fa-helmet-safety,fa-hard-hat,fa-hat-hard,fa-eject,fa-circle-right,fa-arrow-alt-circle-right,fa-plane-circle-check,fa-face-rolling-eyes,fa-meh-rolling-eyes,fa-object-group,fa-chart-line,fa-line-chart,fa-mask-ventilator,fa-arrow-right,fa-signs-post,fa-map-signs,fa-cash-register,fa-person-circle-question,fa-h,fa-tarp,fa-screwdriver-wrench,fa-tools,fa-arrows-to-eye,fa-plug-circle-bolt,fa-heart,fa-mars-and-venus,fa-house-user,fa-home-user,fa-dumpster-fire,fa-house-crack,fa-martini-glass-citrus,fa-cocktail,fa-face-surprise,fa-surprise,fa-bottle-water,fa-circle-pause,fa-pause-circle,fa-toilet-paper-slash,fa-apple-whole,fa-apple-alt,fa-kitchen-set,fa-r,fa-temperature-quarter,fa-temperature-1,fa-thermometer-1,fa-thermometer-quarter,fa-cube,fa-bitcoin-sign,fa-shield-dog,fa-solar-panel,fa-lock-open,fa-elevator,fa-money-bill-transfer,fa-money-bill-trend-up,fa-house-flood-water-circle-arrow-right,fa-square-poll-horizontal,fa-poll-h,fa-circle,fa-backward-fast,fa-fast-backward,fa-recycle,fa-user-astronaut,fa-plane-slash,fa-trademark,fa-basketball,fa-basketball-ball,fa-satellite-dish,fa-circle-up,fa-arrow-alt-circle-up,fa-mobile-screen-button,fa-mobile-alt,fa-volume-high,fa-volume-up,fa-users-rays,fa-wallet,fa-clipboard-check,fa-file-audio,fa-burger,fa-hamburger,fa-wrench,fa-bugs,fa-rupee-sign,fa-rupee,fa-file-image,fa-circle-question,fa-question-circle,fa-plane-departure,fa-handshake-slash,fa-book-bookmark,fa-code-branch,fa-hat-cowboy,fa-bridge,fa-phone-flip,fa-phone-alt,fa-truck-front,fa-cat,fa-anchor-circle-exclamation,fa-truck-field,fa-route,fa-clipboard-question,fa-panorama,fa-comment-medical,fa-teeth-open,fa-file-circle-minus,fa-tags,fa-wine-glass,fa-forward-fast,fa-fast-forward,fa-face-meh-blank,fa-meh-blank,fa-square-parking,fa-parking,fa-house-signal,fa-bars-progress,fa-tasks-alt,fa-faucet-drip,fa-cart-flatbed,fa-dolly-flatbed,fa-ban-smoking,fa-smoking-ban,fa-terminal,fa-mobile-button,fa-house-medical-flag,fa-basket-shopping,fa-shopping-basket,fa-tape,fa-bus-simple,fa-bus-alt,fa-eye,fa-face-sad-cry,fa-sad-cry,fa-audio-description,fa-person-military-to-person,fa-file-shield,fa-user-slash,fa-pen,fa-tower-observation,fa-file-code,fa-signal,fa-signal-5,fa-signal-perfect,fa-bus,fa-heart-circle-xmark,fa-house-chimney,fa-home-lg,fa-window-maximize,fa-face-frown,fa-frown,fa-prescription,fa-shop,fa-store-alt,fa-floppy-disk,fa-save,fa-vihara,fa-scale-unbalanced,fa-balance-scale-left,fa-sort-up,fa-sort-asc,fa-comment-dots,fa-commenting,fa-plant-wilt,fa-diamond,fa-face-grin-squint,fa-grin-squint,fa-hand-holding-dollar,fa-hand-holding-usd,fa-bacterium,fa-hand-pointer,fa-drum-steelpan,fa-hand-scissors,fa-hands-praying,fa-praying-hands,fa-arrow-rotate-right,fa-arrow-right-rotate,fa-arrow-rotate-forward,fa-redo,fa-biohazard,fa-location-crosshairs,fa-location,fa-mars-double,fa-child-dress,fa-users-between-lines,fa-lungs-virus,fa-face-grin-tears,fa-grin-tears,fa-phone,fa-calendar-xmark,fa-calendar-times,fa-child-reaching,fa-head-side-virus,fa-user-gear,fa-user-cog,fa-arrow-up-1-9,fa-sort-numeric-up,fa-door-closed,fa-shield-virus,fa-dice-six,fa-mosquito-net,fa-bridge-water,fa-person-booth,fa-text-width,fa-hat-wizard,fa-pen-fancy,fa-person-digging,fa-digging,fa-trash,fa-gauge-simple,fa-gauge-simple-med,fa-tachometer-average,fa-book-medical,fa-poo,fa-quote-right,fa-quote-right-alt,fa-shirt,fa-t-shirt,fa-tshirt,fa-cubes,fa-divide,fa-tenge-sign,fa-tenge,fa-headphones,fa-hands-holding,fa-hands-clapping,fa-republican,fa-arrow-left,fa-person-circle-xmark,fa-ruler,fa-align-left,fa-dice-d6,fa-restroom,fa-j,fa-users-viewfinder,fa-file-video,fa-up-right-from-square,fa-external-link-alt,fa-table-cells,fa-th,fa-file-pdf,fa-book-bible,fa-bible,fa-o,fa-suitcase-medical,fa-medkit,fa-user-secret,fa-otter,fa-person-dress,fa-female,fa-comment-dollar,fa-business-time,fa-briefcase-clock,fa-table-cells-large,fa-th-large,fa-book-tanakh,fa-tanakh,fa-phone-volume,fa-volume-control-phone,fa-hat-cowboy-side,fa-clipboard-user,fa-child,fa-lira-sign,fa-satellite,fa-plane-lock,fa-tag,fa-comment,fa-cake-candles,fa-birthday-cake,fa-cake,fa-envelope,fa-angles-up,fa-angle-double-up,fa-paperclip,fa-arrow-right-to-city,fa-ribbon,fa-lungs,fa-arrow-up-9-1,fa-sort-numeric-up-alt,fa-litecoin-sign,fa-border-none,fa-circle-nodes,fa-parachute-box,fa-indent,fa-truck-field-un,fa-hourglass,fa-hourglass-empty,fa-mountain,fa-user-doctor,fa-user-md,fa-circle-info,fa-info-circle,fa-cloud-meatball,fa-camera,fa-camera-alt,fa-square-virus,fa-meteor,fa-car-on,fa-sleigh,fa-arrow-down-1-9,fa-sort-numeric-asc,fa-sort-numeric-down,fa-hand-holding-droplet,fa-hand-holding-water,fa-water,fa-calendar-check,fa-braille,fa-prescription-bottle-medical,fa-prescription-bottle-alt,fa-landmark,fa-truck,fa-crosshairs,fa-person-cane,fa-tent,fa-vest-patches,fa-check-double,fa-arrow-down-a-z,fa-sort-alpha-asc,fa-sort-alpha-down,fa-money-bill-wheat,fa-cookie,fa-arrow-rotate-left,fa-arrow-left-rotate,fa-arrow-rotate-back,fa-arrow-rotate-backward,fa-undo,fa-hard-drive,fa-hdd,fa-face-grin-squint-tears,fa-grin-squint-tears,fa-dumbbell,fa-rectangle-list,fa-list-alt,fa-tarp-droplet,fa-house-medical-circle-check,fa-person-skiing-nordic,fa-skiing-nordic,fa-calendar-plus,fa-plane-arrival,fa-circle-left,fa-arrow-alt-circle-left,fa-train-subway,fa-subway,fa-chart-gantt,fa-indian-rupee-sign,fa-indian-rupee,fa-inr,fa-crop-simple,fa-crop-alt,fa-money-bill-1,fa-money-bill-alt,fa-left-long,fa-long-arrow-alt-left,fa-dna,fa-virus-slash,fa-minus,fa-subtract,fa-child-rifle,fa-chess,fa-arrow-left-long,fa-long-arrow-left,fa-plug-circle-check,fa-street-view,fa-franc-sign,fa-volume-off,fa-hands-asl-interpreting,fa-american-sign-language-interpreting,fa-asl-interpreting,fa-hands-american-sign-language-interpreting,fa-gear,fa-cog,fa-droplet-slash,fa-tint-slash,fa-mosque,fa-mosquito,fa-star-of-david,fa-person-military-rifle,fa-cart-shopping,fa-shopping-cart,fa-vials,fa-plug-circle-plus,fa-place-of-worship,fa-grip-vertical,fa-arrow-turn-up,fa-level-up,fa-u,fa-square-root-variable,fa-square-root-alt,fa-clock,fa-clock-four,fa-backward-step,fa-step-backward,fa-pallet,fa-faucet,fa-baseball-bat-ball,fa-s,fa-timeline,fa-keyboard,fa-caret-down,fa-house-chimney-medical,fa-clinic-medical,fa-temperature-three-quarters,fa-temperature-3,fa-thermometer-3,fa-thermometer-three-quarters,fa-mobile-screen,fa-mobile-android-alt,fa-plane-up,fa-piggy-bank,fa-battery-half,fa-battery-3,fa-mountain-city,fa-coins,fa-khanda,fa-sliders,fa-sliders-h,fa-folder-tree,fa-network-wired,fa-map-pin,fa-hamsa,fa-cent-sign,fa-flask,fa-person-pregnant,fa-wand-sparkles,fa-ellipsis-vertical,fa-ellipsis-v,fa-ticket,fa-power-off,fa-right-long,fa-long-arrow-alt-right,fa-flag-usa,fa-laptop-file,fa-tty,fa-teletype,fa-diagram-next,fa-person-rifle,fa-house-medical-circle-exclamation,fa-closed-captioning,fa-person-hiking,fa-hiking,fa-venus-double,fa-images,fa-calculator,fa-people-pulling,fa-n,fa-cable-car,fa-tram,fa-cloud-rain,fa-building-circle-xmark,fa-ship,fa-arrows-down-to-line,fa-download,fa-face-grin,fa-grin,fa-delete-left,fa-backspace,fa-eye-dropper,fa-eye-dropper-empty,fa-eyedropper,fa-file-circle-check,fa-forward,fa-mobile,fa-mobile-android,fa-mobile-phone,fa-face-meh,fa-meh,fa-align-center,fa-book-skull,fa-book-dead,fa-id-card,fa-drivers-license,fa-outdent,fa-dedent,fa-heart-circle-exclamation,fa-house,fa-home,fa-home-alt,fa-home-lg-alt,fa-calendar-week,fa-laptop-medical,fa-b,fa-file-medical,fa-dice-one,fa-kiwi-bird,fa-arrow-right-arrow-left,fa-exchange,fa-rotate-right,fa-redo-alt,fa-rotate-forward,fa-utensils,fa-cutlery,fa-arrow-up-wide-short,fa-sort-amount-up,fa-mill-sign,fa-bowl-rice,fa-skull,fa-tower-broadcast,fa-broadcast-tower,fa-truck-pickup,fa-up-long,fa-long-arrow-alt-up,fa-stop,fa-code-merge,fa-upload,fa-hurricane,fa-mound,fa-toilet-portable,fa-compact-disc,fa-file-arrow-down,fa-file-download,fa-caravan,fa-shield-cat,fa-bolt,fa-zap,fa-glass-water,fa-oil-well,fa-vault,fa-mars,fa-toilet,fa-plane-circle-xmark,fa-yen-sign,fa-cny,fa-jpy,fa-rmb,fa-yen,fa-ruble-sign,fa-rouble,fa-rub,fa-ruble,fa-sun,fa-guitar,fa-face-laugh-wink,fa-laugh-wink,fa-horse-head,fa-bore-hole,fa-industry,fa-circle-down,fa-arrow-alt-circle-down,fa-arrows-turn-to-dots,fa-florin-sign,fa-arrow-down-short-wide,fa-sort-amount-desc,fa-sort-amount-down-alt,fa-less-than,fa-angle-down,fa-car-tunnel,fa-head-side-cough,fa-grip-lines,fa-thumbs-down,fa-user-lock,fa-arrow-right-long,fa-long-arrow-right,fa-anchor-circle-xmark,fa-ellipsis,fa-ellipsis-h,fa-chess-pawn,fa-kit-medical,fa-first-aid,fa-person-through-window,fa-toolbox,fa-hands-holding-circle,fa-bug,fa-credit-card,fa-credit-card-alt,fa-car,fa-automobile,fa-hand-holding-hand,fa-book-open-reader,fa-book-reader,fa-mountain-sun,fa-arrows-left-right-to-line,fa-dice-d20,fa-truck-droplet,fa-file-circle-xmark,fa-temperature-arrow-up,fa-temperature-up,fa-medal,fa-bed,fa-square-h,fa-h-square,fa-podcast,fa-temperature-full,fa-temperature-4,fa-thermometer-4,fa-thermometer-full,fa-bell,fa-superscript,fa-plug-circle-xmark,fa-star-of-life,fa-phone-slash,fa-paint-roller,fa-handshake-angle,fa-hands-helping,fa-location-dot,fa-map-marker-alt,fa-file,fa-greater-than,fa-person-swimming,fa-swimmer,fa-arrow-down,fa-droplet,fa-tint,fa-eraser,fa-earth-americas,fa-earth,fa-earth-america,fa-globe-americas,fa-person-burst,fa-dove,fa-battery-empty,fa-battery-0,fa-socks,fa-inbox,fa-section,fa-gauge-high,fa-tachometer-alt,fa-tachometer-alt-fast,fa-envelope-open-text,fa-hospital,fa-hospital-alt,fa-hospital-wide,fa-wine-bottle,fa-chess-rook,fa-bars-staggered,fa-reorder,fa-stream,fa-dharmachakra,fa-hotdog,fa-person-walking-with-cane,fa-blind,fa-drum,fa-ice-cream,fa-heart-circle-bolt,fa-fax,fa-paragraph,fa-check-to-slot,fa-vote-yea,fa-star-half,fa-boxes-stacked,fa-boxes,fa-boxes-alt,fa-link,fa-chain,fa-ear-listen,fa-assistive-listening-systems,fa-tree-city,fa-play,fa-font,fa-rupiah-sign,fa-magnifying-glass,fa-search,fa-table-tennis-paddle-ball,fa-ping-pong-paddle-ball,fa-table-tennis,fa-person-dots-from-line,fa-diagnoses,fa-trash-can-arrow-up,fa-trash-restore-alt,fa-naira-sign,fa-cart-arrow-down,fa-walkie-talkie,fa-file-pen,fa-file-edit,fa-receipt,fa-square-pen,fa-pen-square,fa-pencil-square,fa-suitcase-rolling,fa-person-circle-exclamation,fa-chevron-down,fa-battery-full,fa-battery,fa-battery-5,fa-skull-crossbones,fa-code-compare,fa-list-ul,fa-list-dots,fa-school-lock,fa-tower-cell,fa-down-long,fa-long-arrow-alt-down,fa-ranking-star,fa-chess-king,fa-person-harassing,fa-brazilian-real-sign,fa-landmark-dome,fa-landmark-alt,fa-arrow-up,fa-tv,fa-television,fa-tv-alt,fa-shrimp,fa-list-check,fa-tasks,fa-jug-detergent,fa-circle-user,fa-user-circle,fa-user-shield,fa-wind,fa-car-burst,fa-car-crash,fa-y,fa-person-snowboarding,fa-snowboarding,fa-truck-fast,fa-shipping-fast,fa-fish,fa-user-graduate,fa-circle-half-stroke,fa-adjust,fa-clapperboard,fa-circle-radiation,fa-radiation-alt,fa-baseball,fa-baseball-ball,fa-jet-fighter-up,fa-diagram-project,fa-project-diagram,fa-copy,fa-volume-xmark,fa-volume-mute,fa-volume-times,fa-hand-sparkles,fa-grip,fa-grip-horizontal,fa-share-from-square,fa-share-square,fa-gun,fa-square-phone,fa-phone-square,fa-plus,fa-add,fa-expand,fa-computer,fa-xmark,fa-close,fa-multiply,fa-remove,fa-times,fa-arrows-up-down-left-right,fa-arrows,fa-chalkboard-user,fa-chalkboard-teacher,fa-peso-sign,fa-building-shield,fa-baby,fa-users-line,fa-quote-left,fa-quote-left-alt,fa-tractor,fa-trash-arrow-up,fa-trash-restore,fa-arrow-down-up-lock,fa-lines-leaning,fa-ruler-combined,fa-copyright,fa-equals,fa-blender,fa-teeth,fa-shekel-sign,fa-ils,fa-shekel,fa-sheqel,fa-sheqel-sign,fa-map,fa-rocket,fa-photo-film,fa-photo-video,fa-folder-minus,fa-store,fa-arrow-trend-up,fa-plug-circle-minus,fa-sign-hanging,fa-sign,fa-bezier-curve,fa-bell-slash,fa-tablet,fa-tablet-android,fa-school-flag,fa-fill,fa-angle-up,fa-drumstick-bite,fa-holly-berry,fa-chevron-left,fa-bacteria,fa-hand-lizard,fa-disease,fa-briefcase-medical,fa-genderless,fa-chevron-right,fa-retweet,fa-car-rear,fa-car-alt,fa-pump-soap,fa-video-slash,fa-battery-quarter,fa-battery-2,fa-radio,fa-baby-carriage,fa-carriage-baby,fa-traffic-light,fa-thermometer,fa-vr-cardboard,fa-hand-middle-finger,fa-percent,fa-percentage,fa-truck-moving,fa-glass-water-droplet,fa-display,fa-face-smile,fa-smile,fa-thumbtack,fa-thumb-tack,fa-trophy,fa-person-praying,fa-pray,fa-hammer,fa-hand-peace,fa-rotate,fa-sync-alt,fa-spinner,fa-robot,fa-peace,fa-gears,fa-cogs,fa-warehouse,fa-arrow-up-right-dots,fa-splotch,fa-face-grin-hearts,fa-grin-hearts,fa-dice-four,fa-sim-card,fa-transgender,fa-transgender-alt,fa-mercury,fa-arrow-turn-down,fa-level-down,fa-person-falling-burst,fa-award,fa-ticket-simple,fa-ticket-alt,fa-building,fa-angles-left,fa-angle-double-left,fa-qrcode,fa-clock-rotate-left,fa-history,fa-face-grin-beam-sweat,fa-grin-beam-sweat,fa-file-export,fa-arrow-right-from-file,fa-shield,fa-shield-blank,fa-arrow-up-short-wide,fa-sort-amount-up-alt,fa-house-medical,fa-golf-ball-tee,fa-golf-ball,fa-circle-chevron-left,fa-chevron-circle-left,fa-house-chimney-window,fa-pen-nib,fa-tent-arrow-turn-left,fa-tents,fa-wand-magic,fa-magic,fa-dog,fa-carrot,fa-moon,fa-wine-glass-empty,fa-wine-glass-alt,fa-cheese,fa-yin-yang,fa-music,fa-code-commit,fa-temperature-low,fa-person-biking,fa-biking,fa-broom,fa-shield-heart,fa-gopuram,fa-earth-oceania,fa-globe-oceania,fa-square-xmark,fa-times-square,fa-xmark-square,fa-hashtag,fa-up-right-and-down-left-from-center,fa-expand-alt,fa-oil-can,fa-t,fa-hippo,fa-chart-column,fa-infinity,fa-vial-circle-check,fa-person-arrow-down-to-line,fa-voicemail,fa-fan,fa-person-walking-luggage,fa-up-down,fa-arrows-alt-v,fa-cloud-moon-rain,fa-calendar,fa-trailer,fa-bahai,fa-haykal,fa-sd-card,fa-dragon,fa-shoe-prints,fa-circle-plus,fa-plus-circle,fa-face-grin-tongue-wink,fa-grin-tongue-wink,fa-hand-holding,fa-plug-circle-exclamation,fa-link-slash,fa-chain-broken,fa-chain-slash,fa-unlink,fa-clone,fa-person-walking-arrow-loop-left,fa-arrow-up-z-a,fa-sort-alpha-up-alt,fa-fire-flame-curved,fa-fire-alt,fa-tornado,fa-file-circle-plus,fa-book-quran,fa-quran,fa-anchor,fa-border-all,fa-face-angry,fa-angry,fa-cookie-bite,fa-arrow-trend-down,fa-rss,fa-feed,fa-draw-polygon,fa-scale-balanced,fa-balance-scale,fa-gauge-simple-high,fa-tachometer,fa-tachometer-fast,fa-shower,fa-desktop,fa-desktop-alt,fa-m,fa-table-list,fa-th-list,fa-comment-sms,fa-sms,fa-book,fa-user-plus,fa-check,fa-battery-three-quarters,fa-battery-4,fa-house-circle-check,fa-angle-left,fa-diagram-successor,fa-truck-arrow-right,fa-arrows-split-up-and-left,fa-hand-fist,fa-fist-raised,fa-cloud-moon,fa-briefcase,fa-person-falling,fa-image-portrait,fa-portrait,fa-user-tag,fa-rug,fa-earth-europe,fa-globe-europe,fa-cart-flatbed-suitcase,fa-luggage-cart,fa-rectangle-xmark,fa-rectangle-times,fa-times-rectangle,fa-window-close,fa-baht-sign,fa-book-open,fa-book-journal-whills,fa-journal-whills,fa-handcuffs,fa-triangle-exclamation,fa-exclamation-triangle,fa-warning,fa-database,fa-share,fa-arrow-turn-right,fa-mail-forward,fa-bottle-droplet,fa-mask-face,fa-hill-rockslide,fa-right-left,fa-exchange-alt,fa-paper-plane,fa-road-circle-exclamation,fa-dungeon,fa-align-right,fa-money-bill-1-wave,fa-money-bill-wave-alt,fa-life-ring,fa-hands,fa-sign-language,fa-signing,fa-calendar-day,fa-water-ladder,fa-ladder-water,fa-swimming-pool,fa-arrows-up-down,fa-arrows-v,fa-face-grimace,fa-grimace,fa-wheelchair-move,fa-wheelchair-alt,fa-turn-down,fa-level-down-alt,fa-person-walking-arrow-right,fa-square-envelope,fa-envelope-square,fa-dice,fa-bowling-ball,fa-brain,fa-bandage,fa-band-aid,fa-calendar-minus,fa-circle-xmark,fa-times-circle,fa-xmark-circle,fa-gifts,fa-hotel,fa-earth-asia,fa-globe-asia,fa-id-card-clip,fa-id-card-alt,fa-magnifying-glass-plus,fa-search-plus,fa-thumbs-up,fa-user-clock,fa-hand-dots,fa-allergies,fa-file-invoice,fa-window-minimize,fa-mug-saucer,fa-coffee,fa-brush,fa-mask,fa-magnifying-glass-minus,fa-search-minus,fa-ruler-vertical,fa-user-large,fa-user-alt,fa-train-tram,fa-user-nurse,fa-syringe,fa-cloud-sun,fa-stopwatch-20,fa-square-full,fa-magnet,fa-jar,fa-note-sticky,fa-sticky-note,fa-bug-slash,fa-arrow-up-from-water-pump,fa-bone,fa-user-injured,fa-face-sad-tear,fa-sad-tear,fa-plane,fa-tent-arrows-down,fa-exclamation,fa-arrows-spin,fa-print,fa-turkish-lira-sign,fa-try,fa-turkish-lira,fa-dollar-sign,fa-dollar,fa-usd,fa-x,fa-magnifying-glass-dollar,fa-search-dollar,fa-users-gear,fa-users-cog,fa-person-military-pointing,fa-building-columns,fa-bank,fa-institution,fa-museum,fa-university,fa-umbrella,fa-trowel,fa-d,fa-stapler,fa-masks-theater,fa-theater-masks,fa-kip-sign,fa-hand-point-left,fa-handshake-simple,fa-handshake-alt,fa-jet-fighter,fa-fighter-jet,fa-square-share-nodes,fa-share-alt-square,fa-barcode,fa-plus-minus,fa-video,fa-video-camera,fa-graduation-cap,fa-mortar-board,fa-hand-holding-medical,fa-person-circle-check,fa-turn-up,fa-level-up-alt,fa-monero,fa-hooli,fa-yelp,fa-cc-visa,fa-lastfm,fa-shopware,fa-creative-commons-nc,fa-aws,fa-redhat,fa-yoast,fa-cloudflare,fa-ups,fa-wpexplorer,fa-dyalog,fa-bity,fa-stackpath,fa-buysellads,fa-first-order,fa-modx,fa-guilded,fa-vnv,fa-square-js,fa-js-square,fa-microsoft,fa-qq,fa-orcid,fa-java,fa-invision,fa-creative-commons-pd-alt,fa-centercode,fa-glide-g,fa-drupal,fa-hire-a-helper,fa-creative-commons-by,fa-unity,fa-whmcs,fa-rocketchat,fa-vk,fa-untappd,fa-mailchimp,fa-css3-alt,fa-square-reddit,fa-reddit-square,fa-vimeo-v,fa-contao,fa-square-font-awesome,fa-deskpro,fa-sistrix,fa-square-instagram,fa-instagram-square,fa-battle-net,fa-the-red-yeti,fa-square-hacker-news,fa-hacker-news-square,fa-edge,fa-napster,fa-square-snapchat,fa-snapchat-square,fa-google-plus-g,fa-artstation,fa-markdown,fa-sourcetree,fa-google-plus,fa-diaspora,fa-foursquare,fa-stack-overflow,fa-github-alt,fa-phoenix-squadron,fa-pagelines,fa-algolia,fa-red-river,fa-creative-commons-sa,fa-safari,fa-google,fa-square-font-awesome-stroke,fa-font-awesome-alt,fa-atlassian,fa-linkedin-in,fa-digital-ocean,fa-nimblr,fa-chromecast,fa-evernote,fa-hacker-news,fa-creative-commons-sampling,fa-adversal,fa-creative-commons,fa-watchman-monitoring,fa-fonticons,fa-weixin,fa-shirtsinbulk,fa-codepen,fa-git-alt,fa-lyft,fa-rev,fa-windows,fa-wizards-of-the-coast,fa-square-viadeo,fa-viadeo-square,fa-meetup,fa-centos,fa-adn,fa-cloudsmith,fa-pied-piper-alt,fa-square-dribbble,fa-dribbble-square,fa-codiepie,fa-node,fa-mix,fa-steam,fa-cc-apple-pay,fa-scribd,fa-openid,fa-instalod,fa-expeditedssl,fa-sellcast,fa-square-twitter,fa-twitter-square,fa-r-project,fa-delicious,fa-freebsd,fa-vuejs,fa-accusoft,fa-ioxhost,fa-fonticons-fi,fa-app-store,fa-cc-mastercard,fa-itunes-note,fa-golang,fa-kickstarter,fa-grav,fa-weibo,fa-uncharted,fa-firstdraft,fa-square-youtube,fa-youtube-square,fa-wikipedia-w,fa-wpressr,fa-rendact,fa-angellist,fa-galactic-republic,fa-nfc-directional,fa-skype,fa-joget,fa-fedora,fa-stripe-s,fa-meta,fa-laravel,fa-hotjar,fa-bluetooth-b,fa-sticker-mule,fa-creative-commons-zero,fa-hips,fa-behance,fa-reddit,fa-discord,fa-chrome,fa-app-store-ios,fa-cc-discover,fa-wpbeginner,fa-confluence,fa-mdb,fa-dochub,fa-accessible-icon,fa-ebay,fa-amazon,fa-unsplash,fa-yarn,fa-square-steam,fa-steam-square,fa-500px,fa-square-vimeo,fa-vimeo-square,fa-asymmetrik,fa-font-awesome,fa-font-awesome-flag,fa-font-awesome-logo-full,fa-gratipay,fa-apple,fa-hive,fa-gitkraken,fa-keybase,fa-apple-pay,fa-padlet,fa-amazon-pay,fa-square-github,fa-github-square,fa-stumbleupon,fa-fedex,fa-phoenix-framework,fa-shopify,fa-neos,fa-hackerrank,fa-researchgate,fa-swift,fa-angular,fa-speakap,fa-angrycreative,fa-y-combinator,fa-empire,fa-envira,fa-square-gitlab,fa-gitlab-square,fa-studiovinari,fa-pied-piper,fa-wordpress,fa-product-hunt,fa-firefox,fa-linode,fa-goodreads,fa-square-odnoklassniki,fa-odnoklassniki-square,fa-jsfiddle,fa-sith,fa-themeisle,fa-page4,fa-hashnode,fa-react,fa-cc-paypal,fa-squarespace,fa-cc-stripe,fa-creative-commons-share,fa-bitcoin,fa-keycdn,fa-opera,fa-itch-io,fa-umbraco,fa-galactic-senate,fa-ubuntu,fa-draft2digital,fa-stripe,fa-houzz,fa-gg,fa-dhl,fa-square-pinterest,fa-pinterest-square,fa-xing,fa-blackberry,fa-creative-commons-pd,fa-playstation,fa-quinscape,fa-less,fa-blogger-b,fa-opencart,fa-vine,fa-paypal,fa-gitlab,fa-typo3,fa-reddit-alien,fa-yahoo,fa-dailymotion,fa-affiliatetheme,fa-pied-piper-pp,fa-bootstrap,fa-odnoklassniki,fa-nfc-symbol,fa-ethereum,fa-speaker-deck,fa-creative-commons-nc-eu,fa-patreon,fa-avianex,fa-ello,fa-gofore,fa-bimobject,fa-facebook-f,fa-square-google-plus,fa-google-plus-square,fa-mandalorian,fa-first-order-alt,fa-osi,fa-google-wallet,fa-d-and-d-beyond,fa-periscope,fa-fulcrum,fa-cloudscale,fa-forumbee,fa-mizuni,fa-schlix,fa-square-xing,fa-xing-square,fa-bandcamp,fa-wpforms,fa-cloudversify,fa-usps,fa-megaport,fa-magento,fa-spotify,fa-optin-monster,fa-fly,fa-aviato,fa-itunes,fa-cuttlefish,fa-blogger,fa-flickr,fa-viber,fa-soundcloud,fa-digg,fa-tencent-weibo,fa-symfony,fa-maxcdn,fa-etsy,fa-facebook-messenger,fa-audible,fa-think-peaks,fa-bilibili,fa-erlang,fa-cotton-bureau,fa-dashcube,fa-42-group,fa-innosoft,fa-stack-exchange,fa-elementor,fa-square-pied-piper,fa-pied-piper-square,fa-creative-commons-nd,fa-palfed,fa-superpowers,fa-resolving,fa-xbox,fa-searchengin,fa-tiktok,fa-square-facebook,fa-facebook-square,fa-renren,fa-linux,fa-glide,fa-linkedin,fa-hubspot,fa-deploydog,fa-twitch,fa-ravelry,fa-mixer,fa-square-lastfm,fa-lastfm-square,fa-vimeo,fa-mendeley,fa-uniregistry,fa-figma,fa-creative-commons-remix,fa-cc-amazon-pay,fa-dropbox,fa-instagram,fa-cmplid,fa-facebook,fa-gripfire,fa-jedi-order,fa-uikit,fa-fort-awesome-alt,fa-phabricator,fa-ussunnah,fa-earlybirds,fa-trade-federation,fa-autoprefixer,fa-whatsapp,fa-slideshare,fa-google-play,fa-viadeo,fa-line,fa-google-drive,fa-servicestack,fa-simplybuilt,fa-bitbucket,fa-imdb,fa-deezer,fa-raspberry-pi,fa-jira,fa-docker,fa-screenpal,fa-bluetooth,fa-gitter,fa-d-and-d,fa-microblog,fa-cc-diners-club,fa-gg-circle,fa-pied-piper-hat,fa-kickstarter-k,fa-yandex,fa-readme,fa-html5,fa-sellsy,fa-sass,fa-wirsindhandwerk,fa-wsh,fa-buromobelexperte,fa-salesforce,fa-octopus-deploy,fa-medapps,fa-ns8,fa-pinterest-p,fa-apper,fa-fort-awesome,fa-waze,fa-cc-jcb,fa-snapchat,fa-snapchat-ghost,fa-fantasy-flight-games,fa-rust,fa-wix,fa-square-behance,fa-behance-square,fa-supple,fa-rebel,fa-css3,fa-staylinked,fa-kaggle,fa-space-awesome,fa-deviantart,fa-cpanel,fa-goodreads-g,fa-square-git,fa-git-square,fa-square-tumblr,fa-tumblr-square,fa-trello,fa-creative-commons-nc-jp,fa-get-pocket,fa-perbyte,fa-grunt,fa-weebly,fa-connectdevelop,fa-leanpub,fa-black-tie,fa-themeco,fa-python,fa-android,fa-bots,fa-free-code-camp,fa-hornbill,fa-js,fa-ideal,fa-git,fa-dev,fa-sketch,fa-yandex-international,fa-cc-amex,fa-uber,fa-github,fa-php,fa-alipay,fa-youtube,fa-skyatlas,fa-firefox-browser,fa-replyd,fa-suse,fa-jenkins,fa-twitter,fa-rockrms,fa-pinterest,fa-buffer,fa-npm,fa-yammer,fa-btc,fa-dribbble,fa-stumbleupon-circle,fa-internet-explorer,fa-telegram,fa-telegram-plane,fa-old-republic,fa-square-whatsapp,fa-whatsapp-square,fa-node-js,fa-edge-legacy,fa-slack,fa-slack-hash,fa-medrt,fa-usb,fa-tumblr,fa-vaadin,fa-quora,fa-reacteurope,fa-medium,fa-medium-m,fa-amilia,fa-mixcloud,fa-flipboard,fa-viacoin,fa-critical-role,fa-sitrox,fa-discourse,fa-joomla,fa-mastodon,fa-airbnb,fa-wolf-pack-battalion,fa-buy-n-large,fa-gulp,fa-creative-commons-sampling-plus,fa-strava,fa-ember,fa-canadian-maple-leaf,fa-teamspeak,fa-pushed,fa-wordpress-simple,fa-nutritionix,fa-wodu,fa-google-pay,fa-intercom,fa-zhihu,fa-korvue,fa-pix,fa-steam-symbol diff --git a/assets/frontend/icons/fontawesome6/webfonts/fa-brands-400.ttf b/assets/frontend/icons/fontawesome6/webfonts/fa-brands-400.ttf new file mode 100644 index 0000000..502f362 Binary files /dev/null and b/assets/frontend/icons/fontawesome6/webfonts/fa-brands-400.ttf differ diff --git a/assets/frontend/icons/fontawesome6/webfonts/fa-brands-400.woff2 b/assets/frontend/icons/fontawesome6/webfonts/fa-brands-400.woff2 new file mode 100644 index 0000000..d801b51 Binary files /dev/null and b/assets/frontend/icons/fontawesome6/webfonts/fa-brands-400.woff2 differ diff --git a/assets/frontend/icons/fontawesome6/webfonts/fa-regular-400.ttf b/assets/frontend/icons/fontawesome6/webfonts/fa-regular-400.ttf new file mode 100644 index 0000000..e0abe27 Binary files /dev/null and b/assets/frontend/icons/fontawesome6/webfonts/fa-regular-400.ttf differ diff --git a/assets/frontend/icons/fontawesome6/webfonts/fa-regular-400.woff2 b/assets/frontend/icons/fontawesome6/webfonts/fa-regular-400.woff2 new file mode 100644 index 0000000..d736e4b Binary files /dev/null and b/assets/frontend/icons/fontawesome6/webfonts/fa-regular-400.woff2 differ diff --git a/assets/frontend/icons/fontawesome6/webfonts/fa-solid-900.ttf b/assets/frontend/icons/fontawesome6/webfonts/fa-solid-900.ttf new file mode 100644 index 0000000..13c9489 Binary files /dev/null and b/assets/frontend/icons/fontawesome6/webfonts/fa-solid-900.ttf differ diff --git a/assets/frontend/icons/fontawesome6/webfonts/fa-solid-900.woff2 b/assets/frontend/icons/fontawesome6/webfonts/fa-solid-900.woff2 new file mode 100644 index 0000000..3516fdb Binary files /dev/null and b/assets/frontend/icons/fontawesome6/webfonts/fa-solid-900.woff2 differ diff --git a/assets/frontend/icons/fontawesome6/webfonts/fa-v4compatibility.ttf b/assets/frontend/icons/fontawesome6/webfonts/fa-v4compatibility.ttf new file mode 100644 index 0000000..dc29819 Binary files /dev/null and b/assets/frontend/icons/fontawesome6/webfonts/fa-v4compatibility.ttf differ diff --git a/assets/frontend/icons/fontawesome6/webfonts/fa-v4compatibility.woff2 b/assets/frontend/icons/fontawesome6/webfonts/fa-v4compatibility.woff2 new file mode 100644 index 0000000..28d46b1 Binary files /dev/null and b/assets/frontend/icons/fontawesome6/webfonts/fa-v4compatibility.woff2 differ diff --git a/assets/frontend/icons/foundation/foundation-icons.css b/assets/frontend/icons/foundation/foundation-icons.css new file mode 100644 index 0000000..52f4797 --- /dev/null +++ b/assets/frontend/icons/foundation/foundation-icons.css @@ -0,0 +1,594 @@ +/* + * Foundation Icons v 3.0 + * Made by ZURB 2013 http://zurb.com/playground/foundation-icon-fonts-3 + * MIT License + */ + +@font-face { + font-family: "foundation-icons"; + src: url("foundation-icons.eot"); + src: url("foundation-icons.eot?#iefix") format("embedded-opentype"), + url("foundation-icons.woff") format("woff"), + url("foundation-icons.ttf") format("truetype"), + url("foundation-icons.svg#fontcustom") format("svg"); + font-weight: normal; + font-style: normal; +} + +.fi-address-book:before, +.fi-alert:before, +.fi-align-center:before, +.fi-align-justify:before, +.fi-align-left:before, +.fi-align-right:before, +.fi-anchor:before, +.fi-annotate:before, +.fi-archive:before, +.fi-arrow-down:before, +.fi-arrow-left:before, +.fi-arrow-right:before, +.fi-arrow-up:before, +.fi-arrows-compress:before, +.fi-arrows-expand:before, +.fi-arrows-in:before, +.fi-arrows-out:before, +.fi-asl:before, +.fi-asterisk:before, +.fi-at-sign:before, +.fi-background-color:before, +.fi-battery-empty:before, +.fi-battery-full:before, +.fi-battery-half:before, +.fi-bitcoin-circle:before, +.fi-bitcoin:before, +.fi-blind:before, +.fi-bluetooth:before, +.fi-bold:before, +.fi-book-bookmark:before, +.fi-book:before, +.fi-bookmark:before, +.fi-braille:before, +.fi-burst-new:before, +.fi-burst-sale:before, +.fi-burst:before, +.fi-calendar:before, +.fi-camera:before, +.fi-check:before, +.fi-checkbox:before, +.fi-clipboard-notes:before, +.fi-clipboard-pencil:before, +.fi-clipboard:before, +.fi-clock:before, +.fi-closed-caption:before, +.fi-cloud:before, +.fi-comment-minus:before, +.fi-comment-quotes:before, +.fi-comment-video:before, +.fi-comment:before, +.fi-comments:before, +.fi-compass:before, +.fi-contrast:before, +.fi-credit-card:before, +.fi-crop:before, +.fi-crown:before, +.fi-css3:before, +.fi-database:before, +.fi-die-five:before, +.fi-die-four:before, +.fi-die-one:before, +.fi-die-six:before, +.fi-die-three:before, +.fi-die-two:before, +.fi-dislike:before, +.fi-dollar-bill:before, +.fi-dollar:before, +.fi-download:before, +.fi-eject:before, +.fi-elevator:before, +.fi-euro:before, +.fi-eye:before, +.fi-fast-forward:before, +.fi-female-symbol:before, +.fi-female:before, +.fi-filter:before, +.fi-first-aid:before, +.fi-flag:before, +.fi-folder-add:before, +.fi-folder-lock:before, +.fi-folder:before, +.fi-foot:before, +.fi-foundation:before, +.fi-graph-bar:before, +.fi-graph-horizontal:before, +.fi-graph-pie:before, +.fi-graph-trend:before, +.fi-guide-dog:before, +.fi-hearing-aid:before, +.fi-heart:before, +.fi-home:before, +.fi-html5:before, +.fi-indent-less:before, +.fi-indent-more:before, +.fi-info:before, +.fi-italic:before, +.fi-key:before, +.fi-laptop:before, +.fi-layout:before, +.fi-lightbulb:before, +.fi-like:before, +.fi-link:before, +.fi-list-bullet:before, +.fi-list-number:before, +.fi-list-thumbnails:before, +.fi-list:before, +.fi-lock:before, +.fi-loop:before, +.fi-magnifying-glass:before, +.fi-mail:before, +.fi-male-female:before, +.fi-male-symbol:before, +.fi-male:before, +.fi-map:before, +.fi-marker:before, +.fi-megaphone:before, +.fi-microphone:before, +.fi-minus-circle:before, +.fi-minus:before, +.fi-mobile-signal:before, +.fi-mobile:before, +.fi-monitor:before, +.fi-mountains:before, +.fi-music:before, +.fi-next:before, +.fi-no-dogs:before, +.fi-no-smoking:before, +.fi-page-add:before, +.fi-page-copy:before, +.fi-page-csv:before, +.fi-page-delete:before, +.fi-page-doc:before, +.fi-page-edit:before, +.fi-page-export-csv:before, +.fi-page-export-doc:before, +.fi-page-export-pdf:before, +.fi-page-export:before, +.fi-page-filled:before, +.fi-page-multiple:before, +.fi-page-pdf:before, +.fi-page-remove:before, +.fi-page-search:before, +.fi-page:before, +.fi-paint-bucket:before, +.fi-paperclip:before, +.fi-pause:before, +.fi-paw:before, +.fi-paypal:before, +.fi-pencil:before, +.fi-photo:before, +.fi-play-circle:before, +.fi-play-video:before, +.fi-play:before, +.fi-plus:before, +.fi-pound:before, +.fi-power:before, +.fi-previous:before, +.fi-price-tag:before, +.fi-pricetag-multiple:before, +.fi-print:before, +.fi-prohibited:before, +.fi-projection-screen:before, +.fi-puzzle:before, +.fi-quote:before, +.fi-record:before, +.fi-refresh:before, +.fi-results-demographics:before, +.fi-results:before, +.fi-rewind-ten:before, +.fi-rewind:before, +.fi-rss:before, +.fi-safety-cone:before, +.fi-save:before, +.fi-share:before, +.fi-sheriff-badge:before, +.fi-shield:before, +.fi-shopping-bag:before, +.fi-shopping-cart:before, +.fi-shuffle:before, +.fi-skull:before, +.fi-social-500px:before, +.fi-social-adobe:before, +.fi-social-amazon:before, +.fi-social-android:before, +.fi-social-apple:before, +.fi-social-behance:before, +.fi-social-bing:before, +.fi-social-blogger:before, +.fi-social-delicious:before, +.fi-social-designer-news:before, +.fi-social-deviant-art:before, +.fi-social-digg:before, +.fi-social-dribbble:before, +.fi-social-drive:before, +.fi-social-dropbox:before, +.fi-social-evernote:before, +.fi-social-facebook:before, +.fi-social-flickr:before, +.fi-social-forrst:before, +.fi-social-foursquare:before, +.fi-social-game-center:before, +.fi-social-github:before, +.fi-social-google-plus:before, +.fi-social-hacker-news:before, +.fi-social-hi5:before, +.fi-social-instagram:before, +.fi-social-joomla:before, +.fi-social-lastfm:before, +.fi-social-linkedin:before, +.fi-social-medium:before, +.fi-social-myspace:before, +.fi-social-orkut:before, +.fi-social-path:before, +.fi-social-picasa:before, +.fi-social-pinterest:before, +.fi-social-rdio:before, +.fi-social-reddit:before, +.fi-social-skillshare:before, +.fi-social-skype:before, +.fi-social-smashing-mag:before, +.fi-social-snapchat:before, +.fi-social-spotify:before, +.fi-social-squidoo:before, +.fi-social-stack-overflow:before, +.fi-social-steam:before, +.fi-social-stumbleupon:before, +.fi-social-treehouse:before, +.fi-social-tumblr:before, +.fi-social-twitter:before, +.fi-social-vimeo:before, +.fi-social-windows:before, +.fi-social-xbox:before, +.fi-social-yahoo:before, +.fi-social-yelp:before, +.fi-social-youtube:before, +.fi-social-zerply:before, +.fi-social-zurb:before, +.fi-sound:before, +.fi-star:before, +.fi-stop:before, +.fi-strikethrough:before, +.fi-subscript:before, +.fi-superscript:before, +.fi-tablet-landscape:before, +.fi-tablet-portrait:before, +.fi-target-two:before, +.fi-target:before, +.fi-telephone-accessible:before, +.fi-telephone:before, +.fi-text-color:before, +.fi-thumbnails:before, +.fi-ticket:before, +.fi-torso-business:before, +.fi-torso-female:before, +.fi-torso:before, +.fi-torsos-all-female:before, +.fi-torsos-all:before, +.fi-torsos-female-male:before, +.fi-torsos-male-female:before, +.fi-torsos:before, +.fi-trash:before, +.fi-trees:before, +.fi-trophy:before, +.fi-underline:before, +.fi-universal-access:before, +.fi-unlink:before, +.fi-unlock:before, +.fi-upload-cloud:before, +.fi-upload:before, +.fi-usb:before, +.fi-video:before, +.fi-volume-none:before, +.fi-volume-strike:before, +.fi-volume:before, +.fi-web:before, +.fi-wheelchair:before, +.fi-widget:before, +.fi-wrench:before, +.fi-x-circle:before, +.fi-x:before, +.fi-yen:before, +.fi-zoom-in:before, +.fi-zoom-out:before { + font-family: "foundation-icons"; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + display: inline-block; + text-decoration: inherit; +} + +.fi-address-book:before { content: "\f100"; } +.fi-alert:before { content: "\f101"; } +.fi-align-center:before { content: "\f102"; } +.fi-align-justify:before { content: "\f103"; } +.fi-align-left:before { content: "\f104"; } +.fi-align-right:before { content: "\f105"; } +.fi-anchor:before { content: "\f106"; } +.fi-annotate:before { content: "\f107"; } +.fi-archive:before { content: "\f108"; } +.fi-arrow-down:before { content: "\f109"; } +.fi-arrow-left:before { content: "\f10a"; } +.fi-arrow-right:before { content: "\f10b"; } +.fi-arrow-up:before { content: "\f10c"; } +.fi-arrows-compress:before { content: "\f10d"; } +.fi-arrows-expand:before { content: "\f10e"; } +.fi-arrows-in:before { content: "\f10f"; } +.fi-arrows-out:before { content: "\f110"; } +.fi-asl:before { content: "\f111"; } +.fi-asterisk:before { content: "\f112"; } +.fi-at-sign:before { content: "\f113"; } +.fi-background-color:before { content: "\f114"; } +.fi-battery-empty:before { content: "\f115"; } +.fi-battery-full:before { content: "\f116"; } +.fi-battery-half:before { content: "\f117"; } +.fi-bitcoin-circle:before { content: "\f118"; } +.fi-bitcoin:before { content: "\f119"; } +.fi-blind:before { content: "\f11a"; } +.fi-bluetooth:before { content: "\f11b"; } +.fi-bold:before { content: "\f11c"; } +.fi-book-bookmark:before { content: "\f11d"; } +.fi-book:before { content: "\f11e"; } +.fi-bookmark:before { content: "\f11f"; } +.fi-braille:before { content: "\f120"; } +.fi-burst-new:before { content: "\f121"; } +.fi-burst-sale:before { content: "\f122"; } +.fi-burst:before { content: "\f123"; } +.fi-calendar:before { content: "\f124"; } +.fi-camera:before { content: "\f125"; } +.fi-check:before { content: "\f126"; } +.fi-checkbox:before { content: "\f127"; } +.fi-clipboard-notes:before { content: "\f128"; } +.fi-clipboard-pencil:before { content: "\f129"; } +.fi-clipboard:before { content: "\f12a"; } +.fi-clock:before { content: "\f12b"; } +.fi-closed-caption:before { content: "\f12c"; } +.fi-cloud:before { content: "\f12d"; } +.fi-comment-minus:before { content: "\f12e"; } +.fi-comment-quotes:before { content: "\f12f"; } +.fi-comment-video:before { content: "\f130"; } +.fi-comment:before { content: "\f131"; } +.fi-comments:before { content: "\f132"; } +.fi-compass:before { content: "\f133"; } +.fi-contrast:before { content: "\f134"; } +.fi-credit-card:before { content: "\f135"; } +.fi-crop:before { content: "\f136"; } +.fi-crown:before { content: "\f137"; } +.fi-css3:before { content: "\f138"; } +.fi-database:before { content: "\f139"; } +.fi-die-five:before { content: "\f13a"; } +.fi-die-four:before { content: "\f13b"; } +.fi-die-one:before { content: "\f13c"; } +.fi-die-six:before { content: "\f13d"; } +.fi-die-three:before { content: "\f13e"; } +.fi-die-two:before { content: "\f13f"; } +.fi-dislike:before { content: "\f140"; } +.fi-dollar-bill:before { content: "\f141"; } +.fi-dollar:before { content: "\f142"; } +.fi-download:before { content: "\f143"; } +.fi-eject:before { content: "\f144"; } +.fi-elevator:before { content: "\f145"; } +.fi-euro:before { content: "\f146"; } +.fi-eye:before { content: "\f147"; } +.fi-fast-forward:before { content: "\f148"; } +.fi-female-symbol:before { content: "\f149"; } +.fi-female:before { content: "\f14a"; } +.fi-filter:before { content: "\f14b"; } +.fi-first-aid:before { content: "\f14c"; } +.fi-flag:before { content: "\f14d"; } +.fi-folder-add:before { content: "\f14e"; } +.fi-folder-lock:before { content: "\f14f"; } +.fi-folder:before { content: "\f150"; } +.fi-foot:before { content: "\f151"; } +.fi-foundation:before { content: "\f152"; } +.fi-graph-bar:before { content: "\f153"; } +.fi-graph-horizontal:before { content: "\f154"; } +.fi-graph-pie:before { content: "\f155"; } +.fi-graph-trend:before { content: "\f156"; } +.fi-guide-dog:before { content: "\f157"; } +.fi-hearing-aid:before { content: "\f158"; } +.fi-heart:before { content: "\f159"; } +.fi-home:before { content: "\f15a"; } +.fi-html5:before { content: "\f15b"; } +.fi-indent-less:before { content: "\f15c"; } +.fi-indent-more:before { content: "\f15d"; } +.fi-info:before { content: "\f15e"; } +.fi-italic:before { content: "\f15f"; } +.fi-key:before { content: "\f160"; } +.fi-laptop:before { content: "\f161"; } +.fi-layout:before { content: "\f162"; } +.fi-lightbulb:before { content: "\f163"; } +.fi-like:before { content: "\f164"; } +.fi-link:before { content: "\f165"; } +.fi-list-bullet:before { content: "\f166"; } +.fi-list-number:before { content: "\f167"; } +.fi-list-thumbnails:before { content: "\f168"; } +.fi-list:before { content: "\f169"; } +.fi-lock:before { content: "\f16a"; } +.fi-loop:before { content: "\f16b"; } +.fi-magnifying-glass:before { content: "\f16c"; } +.fi-mail:before { content: "\f16d"; } +.fi-male-female:before { content: "\f16e"; } +.fi-male-symbol:before { content: "\f16f"; } +.fi-male:before { content: "\f170"; } +.fi-map:before { content: "\f171"; } +.fi-marker:before { content: "\f172"; } +.fi-megaphone:before { content: "\f173"; } +.fi-microphone:before { content: "\f174"; } +.fi-minus-circle:before { content: "\f175"; } +.fi-minus:before { content: "\f176"; } +.fi-mobile-signal:before { content: "\f177"; } +.fi-mobile:before { content: "\f178"; } +.fi-monitor:before { content: "\f179"; } +.fi-mountains:before { content: "\f17a"; } +.fi-music:before { content: "\f17b"; } +.fi-next:before { content: "\f17c"; } +.fi-no-dogs:before { content: "\f17d"; } +.fi-no-smoking:before { content: "\f17e"; } +.fi-page-add:before { content: "\f17f"; } +.fi-page-copy:before { content: "\f180"; } +.fi-page-csv:before { content: "\f181"; } +.fi-page-delete:before { content: "\f182"; } +.fi-page-doc:before { content: "\f183"; } +.fi-page-edit:before { content: "\f184"; } +.fi-page-export-csv:before { content: "\f185"; } +.fi-page-export-doc:before { content: "\f186"; } +.fi-page-export-pdf:before { content: "\f187"; } +.fi-page-export:before { content: "\f188"; } +.fi-page-filled:before { content: "\f189"; } +.fi-page-multiple:before { content: "\f18a"; } +.fi-page-pdf:before { content: "\f18b"; } +.fi-page-remove:before { content: "\f18c"; } +.fi-page-search:before { content: "\f18d"; } +.fi-page:before { content: "\f18e"; } +.fi-paint-bucket:before { content: "\f18f"; } +.fi-paperclip:before { content: "\f190"; } +.fi-pause:before { content: "\f191"; } +.fi-paw:before { content: "\f192"; } +.fi-paypal:before { content: "\f193"; } +.fi-pencil:before { content: "\f194"; } +.fi-photo:before { content: "\f195"; } +.fi-play-circle:before { content: "\f196"; } +.fi-play-video:before { content: "\f197"; } +.fi-play:before { content: "\f198"; } +.fi-plus:before { content: "\f199"; } +.fi-pound:before { content: "\f19a"; } +.fi-power:before { content: "\f19b"; } +.fi-previous:before { content: "\f19c"; } +.fi-price-tag:before { content: "\f19d"; } +.fi-pricetag-multiple:before { content: "\f19e"; } +.fi-print:before { content: "\f19f"; } +.fi-prohibited:before { content: "\f1a0"; } +.fi-projection-screen:before { content: "\f1a1"; } +.fi-puzzle:before { content: "\f1a2"; } +.fi-quote:before { content: "\f1a3"; } +.fi-record:before { content: "\f1a4"; } +.fi-refresh:before { content: "\f1a5"; } +.fi-results-demographics:before { content: "\f1a6"; } +.fi-results:before { content: "\f1a7"; } +.fi-rewind-ten:before { content: "\f1a8"; } +.fi-rewind:before { content: "\f1a9"; } +.fi-rss:before { content: "\f1aa"; } +.fi-safety-cone:before { content: "\f1ab"; } +.fi-save:before { content: "\f1ac"; } +.fi-share:before { content: "\f1ad"; } +.fi-sheriff-badge:before { content: "\f1ae"; } +.fi-shield:before { content: "\f1af"; } +.fi-shopping-bag:before { content: "\f1b0"; } +.fi-shopping-cart:before { content: "\f1b1"; } +.fi-shuffle:before { content: "\f1b2"; } +.fi-skull:before { content: "\f1b3"; } +.fi-social-500px:before { content: "\f1b4"; } +.fi-social-adobe:before { content: "\f1b5"; } +.fi-social-amazon:before { content: "\f1b6"; } +.fi-social-android:before { content: "\f1b7"; } +.fi-social-apple:before { content: "\f1b8"; } +.fi-social-behance:before { content: "\f1b9"; } +.fi-social-bing:before { content: "\f1ba"; } +.fi-social-blogger:before { content: "\f1bb"; } +.fi-social-delicious:before { content: "\f1bc"; } +.fi-social-designer-news:before { content: "\f1bd"; } +.fi-social-deviant-art:before { content: "\f1be"; } +.fi-social-digg:before { content: "\f1bf"; } +.fi-social-dribbble:before { content: "\f1c0"; } +.fi-social-drive:before { content: "\f1c1"; } +.fi-social-dropbox:before { content: "\f1c2"; } +.fi-social-evernote:before { content: "\f1c3"; } +.fi-social-facebook:before { content: "\f1c4"; } +.fi-social-flickr:before { content: "\f1c5"; } +.fi-social-forrst:before { content: "\f1c6"; } +.fi-social-foursquare:before { content: "\f1c7"; } +.fi-social-game-center:before { content: "\f1c8"; } +.fi-social-github:before { content: "\f1c9"; } +.fi-social-google-plus:before { content: "\f1ca"; } +.fi-social-hacker-news:before { content: "\f1cb"; } +.fi-social-hi5:before { content: "\f1cc"; } +.fi-social-instagram:before { content: "\f1cd"; } +.fi-social-joomla:before { content: "\f1ce"; } +.fi-social-lastfm:before { content: "\f1cf"; } +.fi-social-linkedin:before { content: "\f1d0"; } +.fi-social-medium:before { content: "\f1d1"; } +.fi-social-myspace:before { content: "\f1d2"; } +.fi-social-orkut:before { content: "\f1d3"; } +.fi-social-path:before { content: "\f1d4"; } +.fi-social-picasa:before { content: "\f1d5"; } +.fi-social-pinterest:before { content: "\f1d6"; } +.fi-social-rdio:before { content: "\f1d7"; } +.fi-social-reddit:before { content: "\f1d8"; } +.fi-social-skillshare:before { content: "\f1d9"; } +.fi-social-skype:before { content: "\f1da"; } +.fi-social-smashing-mag:before { content: "\f1db"; } +.fi-social-snapchat:before { content: "\f1dc"; } +.fi-social-spotify:before { content: "\f1dd"; } +.fi-social-squidoo:before { content: "\f1de"; } +.fi-social-stack-overflow:before { content: "\f1df"; } +.fi-social-steam:before { content: "\f1e0"; } +.fi-social-stumbleupon:before { content: "\f1e1"; } +.fi-social-treehouse:before { content: "\f1e2"; } +.fi-social-tumblr:before { content: "\f1e3"; } +.fi-social-twitter:before { content: "\f1e4"; } +.fi-social-vimeo:before { content: "\f1e5"; } +.fi-social-windows:before { content: "\f1e6"; } +.fi-social-xbox:before { content: "\f1e7"; } +.fi-social-yahoo:before { content: "\f1e8"; } +.fi-social-yelp:before { content: "\f1e9"; } +.fi-social-youtube:before { content: "\f1ea"; } +.fi-social-zerply:before { content: "\f1eb"; } +.fi-social-zurb:before { content: "\f1ec"; } +.fi-sound:before { content: "\f1ed"; } +.fi-star:before { content: "\f1ee"; } +.fi-stop:before { content: "\f1ef"; } +.fi-strikethrough:before { content: "\f1f0"; } +.fi-subscript:before { content: "\f1f1"; } +.fi-superscript:before { content: "\f1f2"; } +.fi-tablet-landscape:before { content: "\f1f3"; } +.fi-tablet-portrait:before { content: "\f1f4"; } +.fi-target-two:before { content: "\f1f5"; } +.fi-target:before { content: "\f1f6"; } +.fi-telephone-accessible:before { content: "\f1f7"; } +.fi-telephone:before { content: "\f1f8"; } +.fi-text-color:before { content: "\f1f9"; } +.fi-thumbnails:before { content: "\f1fa"; } +.fi-ticket:before { content: "\f1fb"; } +.fi-torso-business:before { content: "\f1fc"; } +.fi-torso-female:before { content: "\f1fd"; } +.fi-torso:before { content: "\f1fe"; } +.fi-torsos-all-female:before { content: "\f1ff"; } +.fi-torsos-all:before { content: "\f200"; } +.fi-torsos-female-male:before { content: "\f201"; } +.fi-torsos-male-female:before { content: "\f202"; } +.fi-torsos:before { content: "\f203"; } +.fi-trash:before { content: "\f204"; } +.fi-trees:before { content: "\f205"; } +.fi-trophy:before { content: "\f206"; } +.fi-underline:before { content: "\f207"; } +.fi-universal-access:before { content: "\f208"; } +.fi-unlink:before { content: "\f209"; } +.fi-unlock:before { content: "\f20a"; } +.fi-upload-cloud:before { content: "\f20b"; } +.fi-upload:before { content: "\f20c"; } +.fi-usb:before { content: "\f20d"; } +.fi-video:before { content: "\f20e"; } +.fi-volume-none:before { content: "\f20f"; } +.fi-volume-strike:before { content: "\f210"; } +.fi-volume:before { content: "\f211"; } +.fi-web:before { content: "\f212"; } +.fi-wheelchair:before { content: "\f213"; } +.fi-widget:before { content: "\f214"; } +.fi-wrench:before { content: "\f215"; } +.fi-x-circle:before { content: "\f216"; } +.fi-x:before { content: "\f217"; } +.fi-yen:before { content: "\f218"; } +.fi-zoom-in:before { content: "\f219"; } +.fi-zoom-out:before { content: "\f21a"; } diff --git a/assets/frontend/icons/foundation/foundation-icons.eot b/assets/frontend/icons/foundation/foundation-icons.eot new file mode 100644 index 0000000..1746ad4 Binary files /dev/null and b/assets/frontend/icons/foundation/foundation-icons.eot differ diff --git a/assets/frontend/icons/foundation/foundation-icons.min.css b/assets/frontend/icons/foundation/foundation-icons.min.css new file mode 100644 index 0000000..c3e311f --- /dev/null +++ b/assets/frontend/icons/foundation/foundation-icons.min.css @@ -0,0 +1,2 @@ + +@font-face{font-family:"foundation-icons";src:url("foundation-icons.eot");src:url("foundation-icons.eot?#iefix") format("embedded-opentype"),url("foundation-icons.woff") format("woff"),url("foundation-icons.ttf") format("truetype"),url("foundation-icons.svg#fontcustom") format("svg");font-weight:normal;font-style:normal}.fi-address-book:before,.fi-alert:before,.fi-align-center:before,.fi-align-justify:before,.fi-align-left:before,.fi-align-right:before,.fi-anchor:before,.fi-annotate:before,.fi-archive:before,.fi-arrow-down:before,.fi-arrow-left:before,.fi-arrow-right:before,.fi-arrow-up:before,.fi-arrows-compress:before,.fi-arrows-expand:before,.fi-arrows-in:before,.fi-arrows-out:before,.fi-asl:before,.fi-asterisk:before,.fi-at-sign:before,.fi-background-color:before,.fi-battery-empty:before,.fi-battery-full:before,.fi-battery-half:before,.fi-bitcoin-circle:before,.fi-bitcoin:before,.fi-blind:before,.fi-bluetooth:before,.fi-bold:before,.fi-book-bookmark:before,.fi-book:before,.fi-bookmark:before,.fi-braille:before,.fi-burst-new:before,.fi-burst-sale:before,.fi-burst:before,.fi-calendar:before,.fi-camera:before,.fi-check:before,.fi-checkbox:before,.fi-clipboard-notes:before,.fi-clipboard-pencil:before,.fi-clipboard:before,.fi-clock:before,.fi-closed-caption:before,.fi-cloud:before,.fi-comment-minus:before,.fi-comment-quotes:before,.fi-comment-video:before,.fi-comment:before,.fi-comments:before,.fi-compass:before,.fi-contrast:before,.fi-credit-card:before,.fi-crop:before,.fi-crown:before,.fi-css3:before,.fi-database:before,.fi-die-five:before,.fi-die-four:before,.fi-die-one:before,.fi-die-six:before,.fi-die-three:before,.fi-die-two:before,.fi-dislike:before,.fi-dollar-bill:before,.fi-dollar:before,.fi-download:before,.fi-eject:before,.fi-elevator:before,.fi-euro:before,.fi-eye:before,.fi-fast-forward:before,.fi-female-symbol:before,.fi-female:before,.fi-filter:before,.fi-first-aid:before,.fi-flag:before,.fi-folder-add:before,.fi-folder-lock:before,.fi-folder:before,.fi-foot:before,.fi-foundation:before,.fi-graph-bar:before,.fi-graph-horizontal:before,.fi-graph-pie:before,.fi-graph-trend:before,.fi-guide-dog:before,.fi-hearing-aid:before,.fi-heart:before,.fi-home:before,.fi-html5:before,.fi-indent-less:before,.fi-indent-more:before,.fi-info:before,.fi-italic:before,.fi-key:before,.fi-laptop:before,.fi-layout:before,.fi-lightbulb:before,.fi-like:before,.fi-link:before,.fi-list-bullet:before,.fi-list-number:before,.fi-list-thumbnails:before,.fi-list:before,.fi-lock:before,.fi-loop:before,.fi-magnifying-glass:before,.fi-mail:before,.fi-male-female:before,.fi-male-symbol:before,.fi-male:before,.fi-map:before,.fi-marker:before,.fi-megaphone:before,.fi-microphone:before,.fi-minus-circle:before,.fi-minus:before,.fi-mobile-signal:before,.fi-mobile:before,.fi-monitor:before,.fi-mountains:before,.fi-music:before,.fi-next:before,.fi-no-dogs:before,.fi-no-smoking:before,.fi-page-add:before,.fi-page-copy:before,.fi-page-csv:before,.fi-page-delete:before,.fi-page-doc:before,.fi-page-edit:before,.fi-page-export-csv:before,.fi-page-export-doc:before,.fi-page-export-pdf:before,.fi-page-export:before,.fi-page-filled:before,.fi-page-multiple:before,.fi-page-pdf:before,.fi-page-remove:before,.fi-page-search:before,.fi-page:before,.fi-paint-bucket:before,.fi-paperclip:before,.fi-pause:before,.fi-paw:before,.fi-paypal:before,.fi-pencil:before,.fi-photo:before,.fi-play-circle:before,.fi-play-video:before,.fi-play:before,.fi-plus:before,.fi-pound:before,.fi-power:before,.fi-previous:before,.fi-price-tag:before,.fi-pricetag-multiple:before,.fi-print:before,.fi-prohibited:before,.fi-projection-screen:before,.fi-puzzle:before,.fi-quote:before,.fi-record:before,.fi-refresh:before,.fi-results-demographics:before,.fi-results:before,.fi-rewind-ten:before,.fi-rewind:before,.fi-rss:before,.fi-safety-cone:before,.fi-save:before,.fi-share:before,.fi-sheriff-badge:before,.fi-shield:before,.fi-shopping-bag:before,.fi-shopping-cart:before,.fi-shuffle:before,.fi-skull:before,.fi-social-500px:before,.fi-social-adobe:before,.fi-social-amazon:before,.fi-social-android:before,.fi-social-apple:before,.fi-social-behance:before,.fi-social-bing:before,.fi-social-blogger:before,.fi-social-delicious:before,.fi-social-designer-news:before,.fi-social-deviant-art:before,.fi-social-digg:before,.fi-social-dribbble:before,.fi-social-drive:before,.fi-social-dropbox:before,.fi-social-evernote:before,.fi-social-facebook:before,.fi-social-flickr:before,.fi-social-forrst:before,.fi-social-foursquare:before,.fi-social-game-center:before,.fi-social-github:before,.fi-social-google-plus:before,.fi-social-hacker-news:before,.fi-social-hi5:before,.fi-social-instagram:before,.fi-social-joomla:before,.fi-social-lastfm:before,.fi-social-linkedin:before,.fi-social-medium:before,.fi-social-myspace:before,.fi-social-orkut:before,.fi-social-path:before,.fi-social-picasa:before,.fi-social-pinterest:before,.fi-social-rdio:before,.fi-social-reddit:before,.fi-social-skillshare:before,.fi-social-skype:before,.fi-social-smashing-mag:before,.fi-social-snapchat:before,.fi-social-spotify:before,.fi-social-squidoo:before,.fi-social-stack-overflow:before,.fi-social-steam:before,.fi-social-stumbleupon:before,.fi-social-treehouse:before,.fi-social-tumblr:before,.fi-social-twitter:before,.fi-social-vimeo:before,.fi-social-windows:before,.fi-social-xbox:before,.fi-social-yahoo:before,.fi-social-yelp:before,.fi-social-youtube:before,.fi-social-zerply:before,.fi-social-zurb:before,.fi-sound:before,.fi-star:before,.fi-stop:before,.fi-strikethrough:before,.fi-subscript:before,.fi-superscript:before,.fi-tablet-landscape:before,.fi-tablet-portrait:before,.fi-target-two:before,.fi-target:before,.fi-telephone-accessible:before,.fi-telephone:before,.fi-text-color:before,.fi-thumbnails:before,.fi-ticket:before,.fi-torso-business:before,.fi-torso-female:before,.fi-torso:before,.fi-torsos-all-female:before,.fi-torsos-all:before,.fi-torsos-female-male:before,.fi-torsos-male-female:before,.fi-torsos:before,.fi-trash:before,.fi-trees:before,.fi-trophy:before,.fi-underline:before,.fi-universal-access:before,.fi-unlink:before,.fi-unlock:before,.fi-upload-cloud:before,.fi-upload:before,.fi-usb:before,.fi-video:before,.fi-volume-none:before,.fi-volume-strike:before,.fi-volume:before,.fi-web:before,.fi-wheelchair:before,.fi-widget:before,.fi-wrench:before,.fi-x-circle:before,.fi-x:before,.fi-yen:before,.fi-zoom-in:before,.fi-zoom-out:before{font-family:"foundation-icons";font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;display:inline-block;text-decoration:inherit}.fi-address-book:before{content:"\f100"}.fi-alert:before{content:"\f101"}.fi-align-center:before{content:"\f102"}.fi-align-justify:before{content:"\f103"}.fi-align-left:before{content:"\f104"}.fi-align-right:before{content:"\f105"}.fi-anchor:before{content:"\f106"}.fi-annotate:before{content:"\f107"}.fi-archive:before{content:"\f108"}.fi-arrow-down:before{content:"\f109"}.fi-arrow-left:before{content:"\f10a"}.fi-arrow-right:before{content:"\f10b"}.fi-arrow-up:before{content:"\f10c"}.fi-arrows-compress:before{content:"\f10d"}.fi-arrows-expand:before{content:"\f10e"}.fi-arrows-in:before{content:"\f10f"}.fi-arrows-out:before{content:"\f110"}.fi-asl:before{content:"\f111"}.fi-asterisk:before{content:"\f112"}.fi-at-sign:before{content:"\f113"}.fi-background-color:before{content:"\f114"}.fi-battery-empty:before{content:"\f115"}.fi-battery-full:before{content:"\f116"}.fi-battery-half:before{content:"\f117"}.fi-bitcoin-circle:before{content:"\f118"}.fi-bitcoin:before{content:"\f119"}.fi-blind:before{content:"\f11a"}.fi-bluetooth:before{content:"\f11b"}.fi-bold:before{content:"\f11c"}.fi-book-bookmark:before{content:"\f11d"}.fi-book:before{content:"\f11e"}.fi-bookmark:before{content:"\f11f"}.fi-braille:before{content:"\f120"}.fi-burst-new:before{content:"\f121"}.fi-burst-sale:before{content:"\f122"}.fi-burst:before{content:"\f123"}.fi-calendar:before{content:"\f124"}.fi-camera:before{content:"\f125"}.fi-check:before{content:"\f126"}.fi-checkbox:before{content:"\f127"}.fi-clipboard-notes:before{content:"\f128"}.fi-clipboard-pencil:before{content:"\f129"}.fi-clipboard:before{content:"\f12a"}.fi-clock:before{content:"\f12b"}.fi-closed-caption:before{content:"\f12c"}.fi-cloud:before{content:"\f12d"}.fi-comment-minus:before{content:"\f12e"}.fi-comment-quotes:before{content:"\f12f"}.fi-comment-video:before{content:"\f130"}.fi-comment:before{content:"\f131"}.fi-comments:before{content:"\f132"}.fi-compass:before{content:"\f133"}.fi-contrast:before{content:"\f134"}.fi-credit-card:before{content:"\f135"}.fi-crop:before{content:"\f136"}.fi-crown:before{content:"\f137"}.fi-css3:before{content:"\f138"}.fi-database:before{content:"\f139"}.fi-die-five:before{content:"\f13a"}.fi-die-four:before{content:"\f13b"}.fi-die-one:before{content:"\f13c"}.fi-die-six:before{content:"\f13d"}.fi-die-three:before{content:"\f13e"}.fi-die-two:before{content:"\f13f"}.fi-dislike:before{content:"\f140"}.fi-dollar-bill:before{content:"\f141"}.fi-dollar:before{content:"\f142"}.fi-download:before{content:"\f143"}.fi-eject:before{content:"\f144"}.fi-elevator:before{content:"\f145"}.fi-euro:before{content:"\f146"}.fi-eye:before{content:"\f147"}.fi-fast-forward:before{content:"\f148"}.fi-female-symbol:before{content:"\f149"}.fi-female:before{content:"\f14a"}.fi-filter:before{content:"\f14b"}.fi-first-aid:before{content:"\f14c"}.fi-flag:before{content:"\f14d"}.fi-folder-add:before{content:"\f14e"}.fi-folder-lock:before{content:"\f14f"}.fi-folder:before{content:"\f150"}.fi-foot:before{content:"\f151"}.fi-foundation:before{content:"\f152"}.fi-graph-bar:before{content:"\f153"}.fi-graph-horizontal:before{content:"\f154"}.fi-graph-pie:before{content:"\f155"}.fi-graph-trend:before{content:"\f156"}.fi-guide-dog:before{content:"\f157"}.fi-hearing-aid:before{content:"\f158"}.fi-heart:before{content:"\f159"}.fi-home:before{content:"\f15a"}.fi-html5:before{content:"\f15b"}.fi-indent-less:before{content:"\f15c"}.fi-indent-more:before{content:"\f15d"}.fi-info:before{content:"\f15e"}.fi-italic:before{content:"\f15f"}.fi-key:before{content:"\f160"}.fi-laptop:before{content:"\f161"}.fi-layout:before{content:"\f162"}.fi-lightbulb:before{content:"\f163"}.fi-like:before{content:"\f164"}.fi-link:before{content:"\f165"}.fi-list-bullet:before{content:"\f166"}.fi-list-number:before{content:"\f167"}.fi-list-thumbnails:before{content:"\f168"}.fi-list:before{content:"\f169"}.fi-lock:before{content:"\f16a"}.fi-loop:before{content:"\f16b"}.fi-magnifying-glass:before{content:"\f16c"}.fi-mail:before{content:"\f16d"}.fi-male-female:before{content:"\f16e"}.fi-male-symbol:before{content:"\f16f"}.fi-male:before{content:"\f170"}.fi-map:before{content:"\f171"}.fi-marker:before{content:"\f172"}.fi-megaphone:before{content:"\f173"}.fi-microphone:before{content:"\f174"}.fi-minus-circle:before{content:"\f175"}.fi-minus:before{content:"\f176"}.fi-mobile-signal:before{content:"\f177"}.fi-mobile:before{content:"\f178"}.fi-monitor:before{content:"\f179"}.fi-mountains:before{content:"\f17a"}.fi-music:before{content:"\f17b"}.fi-next:before{content:"\f17c"}.fi-no-dogs:before{content:"\f17d"}.fi-no-smoking:before{content:"\f17e"}.fi-page-add:before{content:"\f17f"}.fi-page-copy:before{content:"\f180"}.fi-page-csv:before{content:"\f181"}.fi-page-delete:before{content:"\f182"}.fi-page-doc:before{content:"\f183"}.fi-page-edit:before{content:"\f184"}.fi-page-export-csv:before{content:"\f185"}.fi-page-export-doc:before{content:"\f186"}.fi-page-export-pdf:before{content:"\f187"}.fi-page-export:before{content:"\f188"}.fi-page-filled:before{content:"\f189"}.fi-page-multiple:before{content:"\f18a"}.fi-page-pdf:before{content:"\f18b"}.fi-page-remove:before{content:"\f18c"}.fi-page-search:before{content:"\f18d"}.fi-page:before{content:"\f18e"}.fi-paint-bucket:before{content:"\f18f"}.fi-paperclip:before{content:"\f190"}.fi-pause:before{content:"\f191"}.fi-paw:before{content:"\f192"}.fi-paypal:before{content:"\f193"}.fi-pencil:before{content:"\f194"}.fi-photo:before{content:"\f195"}.fi-play-circle:before{content:"\f196"}.fi-play-video:before{content:"\f197"}.fi-play:before{content:"\f198"}.fi-plus:before{content:"\f199"}.fi-pound:before{content:"\f19a"}.fi-power:before{content:"\f19b"}.fi-previous:before{content:"\f19c"}.fi-price-tag:before{content:"\f19d"}.fi-pricetag-multiple:before{content:"\f19e"}.fi-print:before{content:"\f19f"}.fi-prohibited:before{content:"\f1a0"}.fi-projection-screen:before{content:"\f1a1"}.fi-puzzle:before{content:"\f1a2"}.fi-quote:before{content:"\f1a3"}.fi-record:before{content:"\f1a4"}.fi-refresh:before{content:"\f1a5"}.fi-results-demographics:before{content:"\f1a6"}.fi-results:before{content:"\f1a7"}.fi-rewind-ten:before{content:"\f1a8"}.fi-rewind:before{content:"\f1a9"}.fi-rss:before{content:"\f1aa"}.fi-safety-cone:before{content:"\f1ab"}.fi-save:before{content:"\f1ac"}.fi-share:before{content:"\f1ad"}.fi-sheriff-badge:before{content:"\f1ae"}.fi-shield:before{content:"\f1af"}.fi-shopping-bag:before{content:"\f1b0"}.fi-shopping-cart:before{content:"\f1b1"}.fi-shuffle:before{content:"\f1b2"}.fi-skull:before{content:"\f1b3"}.fi-social-500px:before{content:"\f1b4"}.fi-social-adobe:before{content:"\f1b5"}.fi-social-amazon:before{content:"\f1b6"}.fi-social-android:before{content:"\f1b7"}.fi-social-apple:before{content:"\f1b8"}.fi-social-behance:before{content:"\f1b9"}.fi-social-bing:before{content:"\f1ba"}.fi-social-blogger:before{content:"\f1bb"}.fi-social-delicious:before{content:"\f1bc"}.fi-social-designer-news:before{content:"\f1bd"}.fi-social-deviant-art:before{content:"\f1be"}.fi-social-digg:before{content:"\f1bf"}.fi-social-dribbble:before{content:"\f1c0"}.fi-social-drive:before{content:"\f1c1"}.fi-social-dropbox:before{content:"\f1c2"}.fi-social-evernote:before{content:"\f1c3"}.fi-social-facebook:before{content:"\f1c4"}.fi-social-flickr:before{content:"\f1c5"}.fi-social-forrst:before{content:"\f1c6"}.fi-social-foursquare:before{content:"\f1c7"}.fi-social-game-center:before{content:"\f1c8"}.fi-social-github:before{content:"\f1c9"}.fi-social-google-plus:before{content:"\f1ca"}.fi-social-hacker-news:before{content:"\f1cb"}.fi-social-hi5:before{content:"\f1cc"}.fi-social-instagram:before{content:"\f1cd"}.fi-social-joomla:before{content:"\f1ce"}.fi-social-lastfm:before{content:"\f1cf"}.fi-social-linkedin:before{content:"\f1d0"}.fi-social-medium:before{content:"\f1d1"}.fi-social-myspace:before{content:"\f1d2"}.fi-social-orkut:before{content:"\f1d3"}.fi-social-path:before{content:"\f1d4"}.fi-social-picasa:before{content:"\f1d5"}.fi-social-pinterest:before{content:"\f1d6"}.fi-social-rdio:before{content:"\f1d7"}.fi-social-reddit:before{content:"\f1d8"}.fi-social-skillshare:before{content:"\f1d9"}.fi-social-skype:before{content:"\f1da"}.fi-social-smashing-mag:before{content:"\f1db"}.fi-social-snapchat:before{content:"\f1dc"}.fi-social-spotify:before{content:"\f1dd"}.fi-social-squidoo:before{content:"\f1de"}.fi-social-stack-overflow:before{content:"\f1df"}.fi-social-steam:before{content:"\f1e0"}.fi-social-stumbleupon:before{content:"\f1e1"}.fi-social-treehouse:before{content:"\f1e2"}.fi-social-tumblr:before{content:"\f1e3"}.fi-social-twitter:before{content:"\f1e4"}.fi-social-vimeo:before{content:"\f1e5"}.fi-social-windows:before{content:"\f1e6"}.fi-social-xbox:before{content:"\f1e7"}.fi-social-yahoo:before{content:"\f1e8"}.fi-social-yelp:before{content:"\f1e9"}.fi-social-youtube:before{content:"\f1ea"}.fi-social-zerply:before{content:"\f1eb"}.fi-social-zurb:before{content:"\f1ec"}.fi-sound:before{content:"\f1ed"}.fi-star:before{content:"\f1ee"}.fi-stop:before{content:"\f1ef"}.fi-strikethrough:before{content:"\f1f0"}.fi-subscript:before{content:"\f1f1"}.fi-superscript:before{content:"\f1f2"}.fi-tablet-landscape:before{content:"\f1f3"}.fi-tablet-portrait:before{content:"\f1f4"}.fi-target-two:before{content:"\f1f5"}.fi-target:before{content:"\f1f6"}.fi-telephone-accessible:before{content:"\f1f7"}.fi-telephone:before{content:"\f1f8"}.fi-text-color:before{content:"\f1f9"}.fi-thumbnails:before{content:"\f1fa"}.fi-ticket:before{content:"\f1fb"}.fi-torso-business:before{content:"\f1fc"}.fi-torso-female:before{content:"\f1fd"}.fi-torso:before{content:"\f1fe"}.fi-torsos-all-female:before{content:"\f1ff"}.fi-torsos-all:before{content:"\f200"}.fi-torsos-female-male:before{content:"\f201"}.fi-torsos-male-female:before{content:"\f202"}.fi-torsos:before{content:"\f203"}.fi-trash:before{content:"\f204"}.fi-trees:before{content:"\f205"}.fi-trophy:before{content:"\f206"}.fi-underline:before{content:"\f207"}.fi-universal-access:before{content:"\f208"}.fi-unlink:before{content:"\f209"}.fi-unlock:before{content:"\f20a"}.fi-upload-cloud:before{content:"\f20b"}.fi-upload:before{content:"\f20c"}.fi-usb:before{content:"\f20d"}.fi-video:before{content:"\f20e"}.fi-volume-none:before{content:"\f20f"}.fi-volume-strike:before{content:"\f210"}.fi-volume:before{content:"\f211"}.fi-web:before{content:"\f212"}.fi-wheelchair:before{content:"\f213"}.fi-widget:before{content:"\f214"}.fi-wrench:before{content:"\f215"}.fi-x-circle:before{content:"\f216"}.fi-x:before{content:"\f217"}.fi-yen:before{content:"\f218"}.fi-zoom-in:before{content:"\f219"}.fi-zoom-out:before{content:"\f21a"} \ No newline at end of file diff --git a/assets/frontend/icons/foundation/foundation-icons.svg b/assets/frontend/icons/foundation/foundation-icons.svg new file mode 100644 index 0000000..5019628 --- /dev/null +++ b/assets/frontend/icons/foundation/foundation-icons.svg @@ -0,0 +1,971 @@ + + + + + + Created by FontForge 20120731 at Fri Aug 23 09:25:55 2013 + By Jordan Humphreys + Created by Jordan Humphreys with FontForge 2.0 (http://fontforge.sf.net) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/frontend/icons/foundation/foundation-icons.ttf b/assets/frontend/icons/foundation/foundation-icons.ttf new file mode 100644 index 0000000..6cce217 Binary files /dev/null and b/assets/frontend/icons/foundation/foundation-icons.ttf differ diff --git a/assets/frontend/icons/foundation/foundation-icons.woff b/assets/frontend/icons/foundation/foundation-icons.woff new file mode 100644 index 0000000..e2cfe25 Binary files /dev/null and b/assets/frontend/icons/foundation/foundation-icons.woff differ diff --git a/assets/frontend/icons/themify/fonts/themify.eot b/assets/frontend/icons/themify/fonts/themify.eot new file mode 100644 index 0000000..9ec298b Binary files /dev/null and b/assets/frontend/icons/themify/fonts/themify.eot differ diff --git a/assets/frontend/icons/themify/fonts/themify.svg b/assets/frontend/icons/themify/fonts/themify.svg new file mode 100644 index 0000000..34845fc --- /dev/null +++ b/assets/frontend/icons/themify/fonts/themify.svg @@ -0,0 +1,364 @@ + + + + Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/frontend/icons/themify/fonts/themify.ttf b/assets/frontend/icons/themify/fonts/themify.ttf new file mode 100644 index 0000000..5d627e7 Binary files /dev/null and b/assets/frontend/icons/themify/fonts/themify.ttf differ diff --git a/assets/frontend/icons/themify/fonts/themify.woff b/assets/frontend/icons/themify/fonts/themify.woff new file mode 100644 index 0000000..847ebd1 Binary files /dev/null and b/assets/frontend/icons/themify/fonts/themify.woff differ diff --git a/assets/frontend/icons/themify/themify-icons.css b/assets/frontend/icons/themify/themify-icons.css new file mode 100644 index 0000000..2aa66e9 --- /dev/null +++ b/assets/frontend/icons/themify/themify-icons.css @@ -0,0 +1,1081 @@ +@font-face { + font-family: 'themify'; + src:url('fonts/themify.eot?-fvbane'); + src:url('fonts/themify.eot?#iefix-fvbane') format('embedded-opentype'), + url('fonts/themify.woff?-fvbane') format('woff'), + url('fonts/themify.ttf?-fvbane') format('truetype'), + url('fonts/themify.svg?-fvbane#themify') format('svg'); + font-weight: normal; + font-style: normal; +} + +[class^="ti-"], [class*=" ti-"] { + font-family: 'themify'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.ti-wand:before { + content: "\e600"; +} +.ti-volume:before { + content: "\e601"; +} +.ti-user:before { + content: "\e602"; +} +.ti-unlock:before { + content: "\e603"; +} +.ti-unlink:before { + content: "\e604"; +} +.ti-trash:before { + content: "\e605"; +} +.ti-thought:before { + content: "\e606"; +} +.ti-target:before { + content: "\e607"; +} +.ti-tag:before { + content: "\e608"; +} +.ti-tablet:before { + content: "\e609"; +} +.ti-star:before { + content: "\e60a"; +} +.ti-spray:before { + content: "\e60b"; +} +.ti-signal:before { + content: "\e60c"; +} +.ti-shopping-cart:before { + content: "\e60d"; +} +.ti-shopping-cart-full:before { + content: "\e60e"; +} +.ti-settings:before { + content: "\e60f"; +} +.ti-search:before { + content: "\e610"; +} +.ti-zoom-in:before { + content: "\e611"; +} +.ti-zoom-out:before { + content: "\e612"; +} +.ti-cut:before { + content: "\e613"; +} +.ti-ruler:before { + content: "\e614"; +} +.ti-ruler-pencil:before { + content: "\e615"; +} +.ti-ruler-alt:before { + content: "\e616"; +} +.ti-bookmark:before { + content: "\e617"; +} +.ti-bookmark-alt:before { + content: "\e618"; +} +.ti-reload:before { + content: "\e619"; +} +.ti-plus:before { + content: "\e61a"; +} +.ti-pin:before { + content: "\e61b"; +} +.ti-pencil:before { + content: "\e61c"; +} +.ti-pencil-alt:before { + content: "\e61d"; +} +.ti-paint-roller:before { + content: "\e61e"; +} +.ti-paint-bucket:before { + content: "\e61f"; +} +.ti-na:before { + content: "\e620"; +} +.ti-mobile:before { + content: "\e621"; +} +.ti-minus:before { + content: "\e622"; +} +.ti-medall:before { + content: "\e623"; +} +.ti-medall-alt:before { + content: "\e624"; +} +.ti-marker:before { + content: "\e625"; +} +.ti-marker-alt:before { + content: "\e626"; +} +.ti-arrow-up:before { + content: "\e627"; +} +.ti-arrow-right:before { + content: "\e628"; +} +.ti-arrow-left:before { + content: "\e629"; +} +.ti-arrow-down:before { + content: "\e62a"; +} +.ti-lock:before { + content: "\e62b"; +} +.ti-location-arrow:before { + content: "\e62c"; +} +.ti-link:before { + content: "\e62d"; +} +.ti-layout:before { + content: "\e62e"; +} +.ti-layers:before { + content: "\e62f"; +} +.ti-layers-alt:before { + content: "\e630"; +} +.ti-key:before { + content: "\e631"; +} +.ti-import:before { + content: "\e632"; +} +.ti-image:before { + content: "\e633"; +} +.ti-heart:before { + content: "\e634"; +} +.ti-heart-broken:before { + content: "\e635"; +} +.ti-hand-stop:before { + content: "\e636"; +} +.ti-hand-open:before { + content: "\e637"; +} +.ti-hand-drag:before { + content: "\e638"; +} +.ti-folder:before { + content: "\e639"; +} +.ti-flag:before { + content: "\e63a"; +} +.ti-flag-alt:before { + content: "\e63b"; +} +.ti-flag-alt-2:before { + content: "\e63c"; +} +.ti-eye:before { + content: "\e63d"; +} +.ti-export:before { + content: "\e63e"; +} +.ti-exchange-vertical:before { + content: "\e63f"; +} +.ti-desktop:before { + content: "\e640"; +} +.ti-cup:before { + content: "\e641"; +} +.ti-crown:before { + content: "\e642"; +} +.ti-comments:before { + content: "\e643"; +} +.ti-comment:before { + content: "\e644"; +} +.ti-comment-alt:before { + content: "\e645"; +} +.ti-close:before { + content: "\e646"; +} +.ti-clip:before { + content: "\e647"; +} +.ti-angle-up:before { + content: "\e648"; +} +.ti-angle-right:before { + content: "\e649"; +} +.ti-angle-left:before { + content: "\e64a"; +} +.ti-angle-down:before { + content: "\e64b"; +} +.ti-check:before { + content: "\e64c"; +} +.ti-check-box:before { + content: "\e64d"; +} +.ti-camera:before { + content: "\e64e"; +} +.ti-announcement:before { + content: "\e64f"; +} +.ti-brush:before { + content: "\e650"; +} +.ti-briefcase:before { + content: "\e651"; +} +.ti-bolt:before { + content: "\e652"; +} +.ti-bolt-alt:before { + content: "\e653"; +} +.ti-blackboard:before { + content: "\e654"; +} +.ti-bag:before { + content: "\e655"; +} +.ti-move:before { + content: "\e656"; +} +.ti-arrows-vertical:before { + content: "\e657"; +} +.ti-arrows-horizontal:before { + content: "\e658"; +} +.ti-fullscreen:before { + content: "\e659"; +} +.ti-arrow-top-right:before { + content: "\e65a"; +} +.ti-arrow-top-left:before { + content: "\e65b"; +} +.ti-arrow-circle-up:before { + content: "\e65c"; +} +.ti-arrow-circle-right:before { + content: "\e65d"; +} +.ti-arrow-circle-left:before { + content: "\e65e"; +} +.ti-arrow-circle-down:before { + content: "\e65f"; +} +.ti-angle-double-up:before { + content: "\e660"; +} +.ti-angle-double-right:before { + content: "\e661"; +} +.ti-angle-double-left:before { + content: "\e662"; +} +.ti-angle-double-down:before { + content: "\e663"; +} +.ti-zip:before { + content: "\e664"; +} +.ti-world:before { + content: "\e665"; +} +.ti-wheelchair:before { + content: "\e666"; +} +.ti-view-list:before { + content: "\e667"; +} +.ti-view-list-alt:before { + content: "\e668"; +} +.ti-view-grid:before { + content: "\e669"; +} +.ti-uppercase:before { + content: "\e66a"; +} +.ti-upload:before { + content: "\e66b"; +} +.ti-underline:before { + content: "\e66c"; +} +.ti-truck:before { + content: "\e66d"; +} +.ti-timer:before { + content: "\e66e"; +} +.ti-ticket:before { + content: "\e66f"; +} +.ti-thumb-up:before { + content: "\e670"; +} +.ti-thumb-down:before { + content: "\e671"; +} +.ti-text:before { + content: "\e672"; +} +.ti-stats-up:before { + content: "\e673"; +} +.ti-stats-down:before { + content: "\e674"; +} +.ti-split-v:before { + content: "\e675"; +} +.ti-split-h:before { + content: "\e676"; +} +.ti-smallcap:before { + content: "\e677"; +} +.ti-shine:before { + content: "\e678"; +} +.ti-shift-right:before { + content: "\e679"; +} +.ti-shift-left:before { + content: "\e67a"; +} +.ti-shield:before { + content: "\e67b"; +} +.ti-notepad:before { + content: "\e67c"; +} +.ti-server:before { + content: "\e67d"; +} +.ti-quote-right:before { + content: "\e67e"; +} +.ti-quote-left:before { + content: "\e67f"; +} +.ti-pulse:before { + content: "\e680"; +} +.ti-printer:before { + content: "\e681"; +} +.ti-power-off:before { + content: "\e682"; +} +.ti-plug:before { + content: "\e683"; +} +.ti-pie-chart:before { + content: "\e684"; +} +.ti-paragraph:before { + content: "\e685"; +} +.ti-panel:before { + content: "\e686"; +} +.ti-package:before { + content: "\e687"; +} +.ti-music:before { + content: "\e688"; +} +.ti-music-alt:before { + content: "\e689"; +} +.ti-mouse:before { + content: "\e68a"; +} +.ti-mouse-alt:before { + content: "\e68b"; +} +.ti-money:before { + content: "\e68c"; +} +.ti-microphone:before { + content: "\e68d"; +} +.ti-menu:before { + content: "\e68e"; +} +.ti-menu-alt:before { + content: "\e68f"; +} +.ti-map:before { + content: "\e690"; +} +.ti-map-alt:before { + content: "\e691"; +} +.ti-loop:before { + content: "\e692"; +} +.ti-location-pin:before { + content: "\e693"; +} +.ti-list:before { + content: "\e694"; +} +.ti-light-bulb:before { + content: "\e695"; +} +.ti-Italic:before { + content: "\e696"; +} +.ti-info:before { + content: "\e697"; +} +.ti-infinite:before { + content: "\e698"; +} +.ti-id-badge:before { + content: "\e699"; +} +.ti-hummer:before { + content: "\e69a"; +} +.ti-home:before { + content: "\e69b"; +} +.ti-help:before { + content: "\e69c"; +} +.ti-headphone:before { + content: "\e69d"; +} +.ti-harddrives:before { + content: "\e69e"; +} +.ti-harddrive:before { + content: "\e69f"; +} +.ti-gift:before { + content: "\e6a0"; +} +.ti-game:before { + content: "\e6a1"; +} +.ti-filter:before { + content: "\e6a2"; +} +.ti-files:before { + content: "\e6a3"; +} +.ti-file:before { + content: "\e6a4"; +} +.ti-eraser:before { + content: "\e6a5"; +} +.ti-envelope:before { + content: "\e6a6"; +} +.ti-download:before { + content: "\e6a7"; +} +.ti-direction:before { + content: "\e6a8"; +} +.ti-direction-alt:before { + content: "\e6a9"; +} +.ti-dashboard:before { + content: "\e6aa"; +} +.ti-control-stop:before { + content: "\e6ab"; +} +.ti-control-shuffle:before { + content: "\e6ac"; +} +.ti-control-play:before { + content: "\e6ad"; +} +.ti-control-pause:before { + content: "\e6ae"; +} +.ti-control-forward:before { + content: "\e6af"; +} +.ti-control-backward:before { + content: "\e6b0"; +} +.ti-cloud:before { + content: "\e6b1"; +} +.ti-cloud-up:before { + content: "\e6b2"; +} +.ti-cloud-down:before { + content: "\e6b3"; +} +.ti-clipboard:before { + content: "\e6b4"; +} +.ti-car:before { + content: "\e6b5"; +} +.ti-calendar:before { + content: "\e6b6"; +} +.ti-book:before { + content: "\e6b7"; +} +.ti-bell:before { + content: "\e6b8"; +} +.ti-basketball:before { + content: "\e6b9"; +} +.ti-bar-chart:before { + content: "\e6ba"; +} +.ti-bar-chart-alt:before { + content: "\e6bb"; +} +.ti-back-right:before { + content: "\e6bc"; +} +.ti-back-left:before { + content: "\e6bd"; +} +.ti-arrows-corner:before { + content: "\e6be"; +} +.ti-archive:before { + content: "\e6bf"; +} +.ti-anchor:before { + content: "\e6c0"; +} +.ti-align-right:before { + content: "\e6c1"; +} +.ti-align-left:before { + content: "\e6c2"; +} +.ti-align-justify:before { + content: "\e6c3"; +} +.ti-align-center:before { + content: "\e6c4"; +} +.ti-alert:before { + content: "\e6c5"; +} +.ti-alarm-clock:before { + content: "\e6c6"; +} +.ti-agenda:before { + content: "\e6c7"; +} +.ti-write:before { + content: "\e6c8"; +} +.ti-window:before { + content: "\e6c9"; +} +.ti-widgetized:before { + content: "\e6ca"; +} +.ti-widget:before { + content: "\e6cb"; +} +.ti-widget-alt:before { + content: "\e6cc"; +} +.ti-wallet:before { + content: "\e6cd"; +} +.ti-video-clapper:before { + content: "\e6ce"; +} +.ti-video-camera:before { + content: "\e6cf"; +} +.ti-vector:before { + content: "\e6d0"; +} +.ti-themify-logo:before { + content: "\e6d1"; +} +.ti-themify-favicon:before { + content: "\e6d2"; +} +.ti-themify-favicon-alt:before { + content: "\e6d3"; +} +.ti-support:before { + content: "\e6d4"; +} +.ti-stamp:before { + content: "\e6d5"; +} +.ti-split-v-alt:before { + content: "\e6d6"; +} +.ti-slice:before { + content: "\e6d7"; +} +.ti-shortcode:before { + content: "\e6d8"; +} +.ti-shift-right-alt:before { + content: "\e6d9"; +} +.ti-shift-left-alt:before { + content: "\e6da"; +} +.ti-ruler-alt-2:before { + content: "\e6db"; +} +.ti-receipt:before { + content: "\e6dc"; +} +.ti-pin2:before { + content: "\e6dd"; +} +.ti-pin-alt:before { + content: "\e6de"; +} +.ti-pencil-alt2:before { + content: "\e6df"; +} +.ti-palette:before { + content: "\e6e0"; +} +.ti-more:before { + content: "\e6e1"; +} +.ti-more-alt:before { + content: "\e6e2"; +} +.ti-microphone-alt:before { + content: "\e6e3"; +} +.ti-magnet:before { + content: "\e6e4"; +} +.ti-line-double:before { + content: "\e6e5"; +} +.ti-line-dotted:before { + content: "\e6e6"; +} +.ti-line-dashed:before { + content: "\e6e7"; +} +.ti-layout-width-full:before { + content: "\e6e8"; +} +.ti-layout-width-default:before { + content: "\e6e9"; +} +.ti-layout-width-default-alt:before { + content: "\e6ea"; +} +.ti-layout-tab:before { + content: "\e6eb"; +} +.ti-layout-tab-window:before { + content: "\e6ec"; +} +.ti-layout-tab-v:before { + content: "\e6ed"; +} +.ti-layout-tab-min:before { + content: "\e6ee"; +} +.ti-layout-slider:before { + content: "\e6ef"; +} +.ti-layout-slider-alt:before { + content: "\e6f0"; +} +.ti-layout-sidebar-right:before { + content: "\e6f1"; +} +.ti-layout-sidebar-none:before { + content: "\e6f2"; +} +.ti-layout-sidebar-left:before { + content: "\e6f3"; +} +.ti-layout-placeholder:before { + content: "\e6f4"; +} +.ti-layout-menu:before { + content: "\e6f5"; +} +.ti-layout-menu-v:before { + content: "\e6f6"; +} +.ti-layout-menu-separated:before { + content: "\e6f7"; +} +.ti-layout-menu-full:before { + content: "\e6f8"; +} +.ti-layout-media-right-alt:before { + content: "\e6f9"; +} +.ti-layout-media-right:before { + content: "\e6fa"; +} +.ti-layout-media-overlay:before { + content: "\e6fb"; +} +.ti-layout-media-overlay-alt:before { + content: "\e6fc"; +} +.ti-layout-media-overlay-alt-2:before { + content: "\e6fd"; +} +.ti-layout-media-left-alt:before { + content: "\e6fe"; +} +.ti-layout-media-left:before { + content: "\e6ff"; +} +.ti-layout-media-center-alt:before { + content: "\e700"; +} +.ti-layout-media-center:before { + content: "\e701"; +} +.ti-layout-list-thumb:before { + content: "\e702"; +} +.ti-layout-list-thumb-alt:before { + content: "\e703"; +} +.ti-layout-list-post:before { + content: "\e704"; +} +.ti-layout-list-large-image:before { + content: "\e705"; +} +.ti-layout-line-solid:before { + content: "\e706"; +} +.ti-layout-grid4:before { + content: "\e707"; +} +.ti-layout-grid3:before { + content: "\e708"; +} +.ti-layout-grid2:before { + content: "\e709"; +} +.ti-layout-grid2-thumb:before { + content: "\e70a"; +} +.ti-layout-cta-right:before { + content: "\e70b"; +} +.ti-layout-cta-left:before { + content: "\e70c"; +} +.ti-layout-cta-center:before { + content: "\e70d"; +} +.ti-layout-cta-btn-right:before { + content: "\e70e"; +} +.ti-layout-cta-btn-left:before { + content: "\e70f"; +} +.ti-layout-column4:before { + content: "\e710"; +} +.ti-layout-column3:before { + content: "\e711"; +} +.ti-layout-column2:before { + content: "\e712"; +} +.ti-layout-accordion-separated:before { + content: "\e713"; +} +.ti-layout-accordion-merged:before { + content: "\e714"; +} +.ti-layout-accordion-list:before { + content: "\e715"; +} +.ti-ink-pen:before { + content: "\e716"; +} +.ti-info-alt:before { + content: "\e717"; +} +.ti-help-alt:before { + content: "\e718"; +} +.ti-headphone-alt:before { + content: "\e719"; +} +.ti-hand-point-up:before { + content: "\e71a"; +} +.ti-hand-point-right:before { + content: "\e71b"; +} +.ti-hand-point-left:before { + content: "\e71c"; +} +.ti-hand-point-down:before { + content: "\e71d"; +} +.ti-gallery:before { + content: "\e71e"; +} +.ti-face-smile:before { + content: "\e71f"; +} +.ti-face-sad:before { + content: "\e720"; +} +.ti-credit-card:before { + content: "\e721"; +} +.ti-control-skip-forward:before { + content: "\e722"; +} +.ti-control-skip-backward:before { + content: "\e723"; +} +.ti-control-record:before { + content: "\e724"; +} +.ti-control-eject:before { + content: "\e725"; +} +.ti-comments-smiley:before { + content: "\e726"; +} +.ti-brush-alt:before { + content: "\e727"; +} +.ti-youtube:before { + content: "\e728"; +} +.ti-vimeo:before { + content: "\e729"; +} +.ti-twitter:before { + content: "\e72a"; +} +.ti-time:before { + content: "\e72b"; +} +.ti-tumblr:before { + content: "\e72c"; +} +.ti-skype:before { + content: "\e72d"; +} +.ti-share:before { + content: "\e72e"; +} +.ti-share-alt:before { + content: "\e72f"; +} +.ti-rocket:before { + content: "\e730"; +} +.ti-pinterest:before { + content: "\e731"; +} +.ti-new-window:before { + content: "\e732"; +} +.ti-microsoft:before { + content: "\e733"; +} +.ti-list-ol:before { + content: "\e734"; +} +.ti-linkedin:before { + content: "\e735"; +} +.ti-layout-sidebar-2:before { + content: "\e736"; +} +.ti-layout-grid4-alt:before { + content: "\e737"; +} +.ti-layout-grid3-alt:before { + content: "\e738"; +} +.ti-layout-grid2-alt:before { + content: "\e739"; +} +.ti-layout-column4-alt:before { + content: "\e73a"; +} +.ti-layout-column3-alt:before { + content: "\e73b"; +} +.ti-layout-column2-alt:before { + content: "\e73c"; +} +.ti-instagram:before { + content: "\e73d"; +} +.ti-google:before { + content: "\e73e"; +} +.ti-github:before { + content: "\e73f"; +} +.ti-flickr:before { + content: "\e740"; +} +.ti-facebook:before { + content: "\e741"; +} +.ti-dropbox:before { + content: "\e742"; +} +.ti-dribbble:before { + content: "\e743"; +} +.ti-apple:before { + content: "\e744"; +} +.ti-android:before { + content: "\e745"; +} +.ti-save:before { + content: "\e746"; +} +.ti-save-alt:before { + content: "\e747"; +} +.ti-yahoo:before { + content: "\e748"; +} +.ti-wordpress:before { + content: "\e749"; +} +.ti-vimeo-alt:before { + content: "\e74a"; +} +.ti-twitter-alt:before { + content: "\e74b"; +} +.ti-tumblr-alt:before { + content: "\e74c"; +} +.ti-trello:before { + content: "\e74d"; +} +.ti-stack-overflow:before { + content: "\e74e"; +} +.ti-soundcloud:before { + content: "\e74f"; +} +.ti-sharethis:before { + content: "\e750"; +} +.ti-sharethis-alt:before { + content: "\e751"; +} +.ti-reddit:before { + content: "\e752"; +} +.ti-pinterest-alt:before { + content: "\e753"; +} +.ti-microsoft-alt:before { + content: "\e754"; +} +.ti-linux:before { + content: "\e755"; +} +.ti-jsfiddle:before { + content: "\e756"; +} +.ti-joomla:before { + content: "\e757"; +} +.ti-html5:before { + content: "\e758"; +} +.ti-flickr-alt:before { + content: "\e759"; +} +.ti-email:before { + content: "\e75a"; +} +.ti-drupal:before { + content: "\e75b"; +} +.ti-dropbox-alt:before { + content: "\e75c"; +} +.ti-css3:before { + content: "\e75d"; +} +.ti-rss:before { + content: "\e75e"; +} +.ti-rss-alt:before { + content: "\e75f"; +} diff --git a/assets/frontend/icons/themify/themify-icons.min.css b/assets/frontend/icons/themify/themify-icons.min.css new file mode 100644 index 0000000..96b4a13 --- /dev/null +++ b/assets/frontend/icons/themify/themify-icons.min.css @@ -0,0 +1,2 @@ + +@font-face{font-family:'themify';src:url('fonts/themify.eot?-fvbane');src:url('fonts/themify.eot?#iefix-fvbane') format('embedded-opentype'),url('fonts/themify.woff?-fvbane') format('woff'),url('fonts/themify.ttf?-fvbane') format('truetype'),url('fonts/themify.svg?-fvbane#themify') format('svg');font-weight:normal;font-style:normal}[class^="ti-"],[class*=" ti-"]{font-family:'themify';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ti-wand:before{content:"\e600"}.ti-volume:before{content:"\e601"}.ti-user:before{content:"\e602"}.ti-unlock:before{content:"\e603"}.ti-unlink:before{content:"\e604"}.ti-trash:before{content:"\e605"}.ti-thought:before{content:"\e606"}.ti-target:before{content:"\e607"}.ti-tag:before{content:"\e608"}.ti-tablet:before{content:"\e609"}.ti-star:before{content:"\e60a"}.ti-spray:before{content:"\e60b"}.ti-signal:before{content:"\e60c"}.ti-shopping-cart:before{content:"\e60d"}.ti-shopping-cart-full:before{content:"\e60e"}.ti-settings:before{content:"\e60f"}.ti-search:before{content:"\e610"}.ti-zoom-in:before{content:"\e611"}.ti-zoom-out:before{content:"\e612"}.ti-cut:before{content:"\e613"}.ti-ruler:before{content:"\e614"}.ti-ruler-pencil:before{content:"\e615"}.ti-ruler-alt:before{content:"\e616"}.ti-bookmark:before{content:"\e617"}.ti-bookmark-alt:before{content:"\e618"}.ti-reload:before{content:"\e619"}.ti-plus:before{content:"\e61a"}.ti-pin:before{content:"\e61b"}.ti-pencil:before{content:"\e61c"}.ti-pencil-alt:before{content:"\e61d"}.ti-paint-roller:before{content:"\e61e"}.ti-paint-bucket:before{content:"\e61f"}.ti-na:before{content:"\e620"}.ti-mobile:before{content:"\e621"}.ti-minus:before{content:"\e622"}.ti-medall:before{content:"\e623"}.ti-medall-alt:before{content:"\e624"}.ti-marker:before{content:"\e625"}.ti-marker-alt:before{content:"\e626"}.ti-arrow-up:before{content:"\e627"}.ti-arrow-right:before{content:"\e628"}.ti-arrow-left:before{content:"\e629"}.ti-arrow-down:before{content:"\e62a"}.ti-lock:before{content:"\e62b"}.ti-location-arrow:before{content:"\e62c"}.ti-link:before{content:"\e62d"}.ti-layout:before{content:"\e62e"}.ti-layers:before{content:"\e62f"}.ti-layers-alt:before{content:"\e630"}.ti-key:before{content:"\e631"}.ti-import:before{content:"\e632"}.ti-image:before{content:"\e633"}.ti-heart:before{content:"\e634"}.ti-heart-broken:before{content:"\e635"}.ti-hand-stop:before{content:"\e636"}.ti-hand-open:before{content:"\e637"}.ti-hand-drag:before{content:"\e638"}.ti-folder:before{content:"\e639"}.ti-flag:before{content:"\e63a"}.ti-flag-alt:before{content:"\e63b"}.ti-flag-alt-2:before{content:"\e63c"}.ti-eye:before{content:"\e63d"}.ti-export:before{content:"\e63e"}.ti-exchange-vertical:before{content:"\e63f"}.ti-desktop:before{content:"\e640"}.ti-cup:before{content:"\e641"}.ti-crown:before{content:"\e642"}.ti-comments:before{content:"\e643"}.ti-comment:before{content:"\e644"}.ti-comment-alt:before{content:"\e645"}.ti-close:before{content:"\e646"}.ti-clip:before{content:"\e647"}.ti-angle-up:before{content:"\e648"}.ti-angle-right:before{content:"\e649"}.ti-angle-left:before{content:"\e64a"}.ti-angle-down:before{content:"\e64b"}.ti-check:before{content:"\e64c"}.ti-check-box:before{content:"\e64d"}.ti-camera:before{content:"\e64e"}.ti-announcement:before{content:"\e64f"}.ti-brush:before{content:"\e650"}.ti-briefcase:before{content:"\e651"}.ti-bolt:before{content:"\e652"}.ti-bolt-alt:before{content:"\e653"}.ti-blackboard:before{content:"\e654"}.ti-bag:before{content:"\e655"}.ti-move:before{content:"\e656"}.ti-arrows-vertical:before{content:"\e657"}.ti-arrows-horizontal:before{content:"\e658"}.ti-fullscreen:before{content:"\e659"}.ti-arrow-top-right:before{content:"\e65a"}.ti-arrow-top-left:before{content:"\e65b"}.ti-arrow-circle-up:before{content:"\e65c"}.ti-arrow-circle-right:before{content:"\e65d"}.ti-arrow-circle-left:before{content:"\e65e"}.ti-arrow-circle-down:before{content:"\e65f"}.ti-angle-double-up:before{content:"\e660"}.ti-angle-double-right:before{content:"\e661"}.ti-angle-double-left:before{content:"\e662"}.ti-angle-double-down:before{content:"\e663"}.ti-zip:before{content:"\e664"}.ti-world:before{content:"\e665"}.ti-wheelchair:before{content:"\e666"}.ti-view-list:before{content:"\e667"}.ti-view-list-alt:before{content:"\e668"}.ti-view-grid:before{content:"\e669"}.ti-uppercase:before{content:"\e66a"}.ti-upload:before{content:"\e66b"}.ti-underline:before{content:"\e66c"}.ti-truck:before{content:"\e66d"}.ti-timer:before{content:"\e66e"}.ti-ticket:before{content:"\e66f"}.ti-thumb-up:before{content:"\e670"}.ti-thumb-down:before{content:"\e671"}.ti-text:before{content:"\e672"}.ti-stats-up:before{content:"\e673"}.ti-stats-down:before{content:"\e674"}.ti-split-v:before{content:"\e675"}.ti-split-h:before{content:"\e676"}.ti-smallcap:before{content:"\e677"}.ti-shine:before{content:"\e678"}.ti-shift-right:before{content:"\e679"}.ti-shift-left:before{content:"\e67a"}.ti-shield:before{content:"\e67b"}.ti-notepad:before{content:"\e67c"}.ti-server:before{content:"\e67d"}.ti-quote-right:before{content:"\e67e"}.ti-quote-left:before{content:"\e67f"}.ti-pulse:before{content:"\e680"}.ti-printer:before{content:"\e681"}.ti-power-off:before{content:"\e682"}.ti-plug:before{content:"\e683"}.ti-pie-chart:before{content:"\e684"}.ti-paragraph:before{content:"\e685"}.ti-panel:before{content:"\e686"}.ti-package:before{content:"\e687"}.ti-music:before{content:"\e688"}.ti-music-alt:before{content:"\e689"}.ti-mouse:before{content:"\e68a"}.ti-mouse-alt:before{content:"\e68b"}.ti-money:before{content:"\e68c"}.ti-microphone:before{content:"\e68d"}.ti-menu:before{content:"\e68e"}.ti-menu-alt:before{content:"\e68f"}.ti-map:before{content:"\e690"}.ti-map-alt:before{content:"\e691"}.ti-loop:before{content:"\e692"}.ti-location-pin:before{content:"\e693"}.ti-list:before{content:"\e694"}.ti-light-bulb:before{content:"\e695"}.ti-Italic:before{content:"\e696"}.ti-info:before{content:"\e697"}.ti-infinite:before{content:"\e698"}.ti-id-badge:before{content:"\e699"}.ti-hummer:before{content:"\e69a"}.ti-home:before{content:"\e69b"}.ti-help:before{content:"\e69c"}.ti-headphone:before{content:"\e69d"}.ti-harddrives:before{content:"\e69e"}.ti-harddrive:before{content:"\e69f"}.ti-gift:before{content:"\e6a0"}.ti-game:before{content:"\e6a1"}.ti-filter:before{content:"\e6a2"}.ti-files:before{content:"\e6a3"}.ti-file:before{content:"\e6a4"}.ti-eraser:before{content:"\e6a5"}.ti-envelope:before{content:"\e6a6"}.ti-download:before{content:"\e6a7"}.ti-direction:before{content:"\e6a8"}.ti-direction-alt:before{content:"\e6a9"}.ti-dashboard:before{content:"\e6aa"}.ti-control-stop:before{content:"\e6ab"}.ti-control-shuffle:before{content:"\e6ac"}.ti-control-play:before{content:"\e6ad"}.ti-control-pause:before{content:"\e6ae"}.ti-control-forward:before{content:"\e6af"}.ti-control-backward:before{content:"\e6b0"}.ti-cloud:before{content:"\e6b1"}.ti-cloud-up:before{content:"\e6b2"}.ti-cloud-down:before{content:"\e6b3"}.ti-clipboard:before{content:"\e6b4"}.ti-car:before{content:"\e6b5"}.ti-calendar:before{content:"\e6b6"}.ti-book:before{content:"\e6b7"}.ti-bell:before{content:"\e6b8"}.ti-basketball:before{content:"\e6b9"}.ti-bar-chart:before{content:"\e6ba"}.ti-bar-chart-alt:before{content:"\e6bb"}.ti-back-right:before{content:"\e6bc"}.ti-back-left:before{content:"\e6bd"}.ti-arrows-corner:before{content:"\e6be"}.ti-archive:before{content:"\e6bf"}.ti-anchor:before{content:"\e6c0"}.ti-align-right:before{content:"\e6c1"}.ti-align-left:before{content:"\e6c2"}.ti-align-justify:before{content:"\e6c3"}.ti-align-center:before{content:"\e6c4"}.ti-alert:before{content:"\e6c5"}.ti-alarm-clock:before{content:"\e6c6"}.ti-agenda:before{content:"\e6c7"}.ti-write:before{content:"\e6c8"}.ti-window:before{content:"\e6c9"}.ti-widgetized:before{content:"\e6ca"}.ti-widget:before{content:"\e6cb"}.ti-widget-alt:before{content:"\e6cc"}.ti-wallet:before{content:"\e6cd"}.ti-video-clapper:before{content:"\e6ce"}.ti-video-camera:before{content:"\e6cf"}.ti-vector:before{content:"\e6d0"}.ti-themify-logo:before{content:"\e6d1"}.ti-themify-favicon:before{content:"\e6d2"}.ti-themify-favicon-alt:before{content:"\e6d3"}.ti-support:before{content:"\e6d4"}.ti-stamp:before{content:"\e6d5"}.ti-split-v-alt:before{content:"\e6d6"}.ti-slice:before{content:"\e6d7"}.ti-shortcode:before{content:"\e6d8"}.ti-shift-right-alt:before{content:"\e6d9"}.ti-shift-left-alt:before{content:"\e6da"}.ti-ruler-alt-2:before{content:"\e6db"}.ti-receipt:before{content:"\e6dc"}.ti-pin2:before{content:"\e6dd"}.ti-pin-alt:before{content:"\e6de"}.ti-pencil-alt2:before{content:"\e6df"}.ti-palette:before{content:"\e6e0"}.ti-more:before{content:"\e6e1"}.ti-more-alt:before{content:"\e6e2"}.ti-microphone-alt:before{content:"\e6e3"}.ti-magnet:before{content:"\e6e4"}.ti-line-double:before{content:"\e6e5"}.ti-line-dotted:before{content:"\e6e6"}.ti-line-dashed:before{content:"\e6e7"}.ti-layout-width-full:before{content:"\e6e8"}.ti-layout-width-default:before{content:"\e6e9"}.ti-layout-width-default-alt:before{content:"\e6ea"}.ti-layout-tab:before{content:"\e6eb"}.ti-layout-tab-window:before{content:"\e6ec"}.ti-layout-tab-v:before{content:"\e6ed"}.ti-layout-tab-min:before{content:"\e6ee"}.ti-layout-slider:before{content:"\e6ef"}.ti-layout-slider-alt:before{content:"\e6f0"}.ti-layout-sidebar-right:before{content:"\e6f1"}.ti-layout-sidebar-none:before{content:"\e6f2"}.ti-layout-sidebar-left:before{content:"\e6f3"}.ti-layout-placeholder:before{content:"\e6f4"}.ti-layout-menu:before{content:"\e6f5"}.ti-layout-menu-v:before{content:"\e6f6"}.ti-layout-menu-separated:before{content:"\e6f7"}.ti-layout-menu-full:before{content:"\e6f8"}.ti-layout-media-right-alt:before{content:"\e6f9"}.ti-layout-media-right:before{content:"\e6fa"}.ti-layout-media-overlay:before{content:"\e6fb"}.ti-layout-media-overlay-alt:before{content:"\e6fc"}.ti-layout-media-overlay-alt-2:before{content:"\e6fd"}.ti-layout-media-left-alt:before{content:"\e6fe"}.ti-layout-media-left:before{content:"\e6ff"}.ti-layout-media-center-alt:before{content:"\e700"}.ti-layout-media-center:before{content:"\e701"}.ti-layout-list-thumb:before{content:"\e702"}.ti-layout-list-thumb-alt:before{content:"\e703"}.ti-layout-list-post:before{content:"\e704"}.ti-layout-list-large-image:before{content:"\e705"}.ti-layout-line-solid:before{content:"\e706"}.ti-layout-grid4:before{content:"\e707"}.ti-layout-grid3:before{content:"\e708"}.ti-layout-grid2:before{content:"\e709"}.ti-layout-grid2-thumb:before{content:"\e70a"}.ti-layout-cta-right:before{content:"\e70b"}.ti-layout-cta-left:before{content:"\e70c"}.ti-layout-cta-center:before{content:"\e70d"}.ti-layout-cta-btn-right:before{content:"\e70e"}.ti-layout-cta-btn-left:before{content:"\e70f"}.ti-layout-column4:before{content:"\e710"}.ti-layout-column3:before{content:"\e711"}.ti-layout-column2:before{content:"\e712"}.ti-layout-accordion-separated:before{content:"\e713"}.ti-layout-accordion-merged:before{content:"\e714"}.ti-layout-accordion-list:before{content:"\e715"}.ti-ink-pen:before{content:"\e716"}.ti-info-alt:before{content:"\e717"}.ti-help-alt:before{content:"\e718"}.ti-headphone-alt:before{content:"\e719"}.ti-hand-point-up:before{content:"\e71a"}.ti-hand-point-right:before{content:"\e71b"}.ti-hand-point-left:before{content:"\e71c"}.ti-hand-point-down:before{content:"\e71d"}.ti-gallery:before{content:"\e71e"}.ti-face-smile:before{content:"\e71f"}.ti-face-sad:before{content:"\e720"}.ti-credit-card:before{content:"\e721"}.ti-control-skip-forward:before{content:"\e722"}.ti-control-skip-backward:before{content:"\e723"}.ti-control-record:before{content:"\e724"}.ti-control-eject:before{content:"\e725"}.ti-comments-smiley:before{content:"\e726"}.ti-brush-alt:before{content:"\e727"}.ti-youtube:before{content:"\e728"}.ti-vimeo:before{content:"\e729"}.ti-twitter:before{content:"\e72a"}.ti-time:before{content:"\e72b"}.ti-tumblr:before{content:"\e72c"}.ti-skype:before{content:"\e72d"}.ti-share:before{content:"\e72e"}.ti-share-alt:before{content:"\e72f"}.ti-rocket:before{content:"\e730"}.ti-pinterest:before{content:"\e731"}.ti-new-window:before{content:"\e732"}.ti-microsoft:before{content:"\e733"}.ti-list-ol:before{content:"\e734"}.ti-linkedin:before{content:"\e735"}.ti-layout-sidebar-2:before{content:"\e736"}.ti-layout-grid4-alt:before{content:"\e737"}.ti-layout-grid3-alt:before{content:"\e738"}.ti-layout-grid2-alt:before{content:"\e739"}.ti-layout-column4-alt:before{content:"\e73a"}.ti-layout-column3-alt:before{content:"\e73b"}.ti-layout-column2-alt:before{content:"\e73c"}.ti-instagram:before{content:"\e73d"}.ti-google:before{content:"\e73e"}.ti-github:before{content:"\e73f"}.ti-flickr:before{content:"\e740"}.ti-facebook:before{content:"\e741"}.ti-dropbox:before{content:"\e742"}.ti-dribbble:before{content:"\e743"}.ti-apple:before{content:"\e744"}.ti-android:before{content:"\e745"}.ti-save:before{content:"\e746"}.ti-save-alt:before{content:"\e747"}.ti-yahoo:before{content:"\e748"}.ti-wordpress:before{content:"\e749"}.ti-vimeo-alt:before{content:"\e74a"}.ti-twitter-alt:before{content:"\e74b"}.ti-tumblr-alt:before{content:"\e74c"}.ti-trello:before{content:"\e74d"}.ti-stack-overflow:before{content:"\e74e"}.ti-soundcloud:before{content:"\e74f"}.ti-sharethis:before{content:"\e750"}.ti-sharethis-alt:before{content:"\e751"}.ti-reddit:before{content:"\e752"}.ti-pinterest-alt:before{content:"\e753"}.ti-microsoft-alt:before{content:"\e754"}.ti-linux:before{content:"\e755"}.ti-jsfiddle:before{content:"\e756"}.ti-joomla:before{content:"\e757"}.ti-html5:before{content:"\e758"}.ti-flickr-alt:before{content:"\e759"}.ti-email:before{content:"\e75a"}.ti-drupal:before{content:"\e75b"}.ti-dropbox-alt:before{content:"\e75c"}.ti-css3:before{content:"\e75d"}.ti-rss:before{content:"\e75e"}.ti-rss-alt:before{content:"\e75f"} \ No newline at end of file diff --git a/assets/frontend/images/logo.png b/assets/frontend/images/logo.png new file mode 100644 index 0000000..11c9f56 Binary files /dev/null and b/assets/frontend/images/logo.png differ diff --git a/assets/frontend/images/logodark.png b/assets/frontend/images/logodark.png new file mode 100644 index 0000000..6f77f0b Binary files /dev/null and b/assets/frontend/images/logodark.png differ diff --git a/assets/frontend/images/logowhite.png b/assets/frontend/images/logowhite.png new file mode 100644 index 0000000..9c6aa58 Binary files /dev/null and b/assets/frontend/images/logowhite.png differ diff --git a/assets/frontend/less/mixins.less b/assets/frontend/less/mixins.less new file mode 100644 index 0000000..b6e8114 --- /dev/null +++ b/assets/frontend/less/mixins.less @@ -0,0 +1,198 @@ +@z-index : 9999; +@vertical-padding : 15px; +@toggle-height: 32; +@line-height-base: 1.45; +@default-height: 60px; + +.transform(@string){ + -webkit-transform: @string; + -moz-transform: @string; + -ms-transform: @string; + -o-transform: @string; +} + +.transition(@string){ + -webkit-transition: @string; + -moz-transition: @string; + -ms-transition: @string; + -o-transition: @string; + transition: @string; +} + +.transition-property(@string){ + -webkit-transition-property:@string; + -moz-transition-property: @string; + -ms-transition-property: @string; + -o-transition-property: @string; + transition-property: @string; +} + +.animation(@string){ + -webkit-animation: @string; + -moz-animation: @string; + -o-animation: @string; + animation: @string; +} + +.animation-delay(@string){ + -webkit-animation-delay: @string; + -moz-animation-delay: @string; + -o-animation-delay: @string; + animation-delay: @string; +} + + +// General +// ----------------------------------------------------------------------------- + +.clearfix() { + &:before, + &:after { + content: " "; + display: table; + } + &:after { + clear: both; + } +} + +// Icon +// ----------------------------------------------------------------------------- + +.icon() { + font-family: 'quadmenu' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + //line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +// Background +// ----------------------------------------------------------------------------- + +.background-color-diff(@bg,@per) when (lightness(@bg) >= 50%){ + background-color: darken(@bg, @per); +} + +.background-color-diff(@bg, @per) when (lightness(@bg) =< 50%){ + background-color: lighten(@bg, @per); +} + +.background-color-rgba(@color, @alpha) when (@alpha = 1){ + background-color: @color; +} + +.background-color-rgba(@color, @alpha) when (@alpha > 0) and (@alpha =< 1){ + @myred:red(@color); + @mygreen:green(@color); + @myblue:blue(@color); + background-color: @color; /* fallback */ + background-color: rgba(@myred, @mygreen, @myblue, @alpha); +} + +.background-color-rgba(@color, @alpha) when (@alpha = 0){ + background-color: transparent; +} + +.letter-spacing(@value) when not (isnumber(@value)) { + letter-spacing: inherit; +} + +.letter-spacing(@value) when (isnumber(@value)){ + letter-spacing: @value * 1px; +} + +// Height +// ----------------------------------------------------------------------------- + +.height(@height){ + + .quadmenu-navbar-header { + + .quadmenu-navbar-brand { + height: @height*1px; + line-height: @height*1px; + } + + } + + .quadmenu-navbar-nav { + //height: @height * 1px; + + > li { + &.quadmenu-item { + height: @height * 1px; + //line-height: @height * 1px; + } + } + + } + +} +// Navbar +// ----------------------------------------------------------------------------- + +.navbar-gradient(@color, @tocolor, @deg) { + background: -webkit-linear-gradient(@deg*1deg, @color 0, @tocolor 90%); /*Safari 5.1-6*/ + background: -o-linear-gradient(@deg*1deg, @color 0, @tocolor 90%); /*Opera 11.1-12*/ + background: -moz-linear-gradient(@deg*1deg, @color 0, @tocolor 90%); /*Fx 3.6-15*/ + background: linear-gradient(@deg*1deg, @color 0, @tocolor 90%); /*Standard*/ +} + +.navbar-logo-background(@color, @alpha) when not (@alpha = transparent) and (@alpha > 0){ + .background-color-rgba(@color, @alpha); + position: relative; + + &:after { + position: absolute; + top: 0; + bottom: 0; + right: auto; + left: -1000%; + content: " "; + width: 1000%; + background-color: inherit; + } + +} + +.navbar-sticky-background(@color, @alpha) when not (@alpha = transparent) and (@alpha > 0){ + background: none; + .background-color-rgba(@color, @alpha); +} + +// Links +// ----------------------------------------------------------------------------- + +.link-border(@width,@style,@color, @margin) when (@width > 0) and not (@style = none) and not (@color = transparent) and not (@color = 0){ + border-width: 0 0 @width*1px 0; + border-style: @style; + border-color: @color; + margin-bottom: @margin; +} + +// Dropdown +// ----------------------------------------------------------------------------- + +.dropdown-inner-radius(@top, @right, @left, @bottom) { + + > ul { + + > li:first-child, + > li:first-child > a { + border-radius: @top*1px @right*1px 0 0; + } + > li:last-child, + > li:last-child > a { + border-radius: 0 0 @left*1px @bottom*1px; + } + > li:only-child, + > li:only-child > a { + border-radius: @top*1px @right*1px @left*1px @bottom*1px; + } + } +} \ No newline at end of file diff --git a/assets/frontend/less/quadmenu-locations.less b/assets/frontend/less/quadmenu-locations.less new file mode 100644 index 0000000..3559392 --- /dev/null +++ b/assets/frontend/less/quadmenu-locations.less @@ -0,0 +1,1145 @@ +@horizontal-padding: @gutter * 0.5px; + +@import "mixins.less"; +@import "themes/general.less"; +@import "themes/grid.less"; + +// Locations +// ----------------------------------------------------------------------------- + +.loop(@i: length(@themes)) when (@i > 0) and not (@themes = '') { + + @theme: e(extract(@themes, @i)); + + @class: ~"quadmenu-@{theme}"; + + @font_font-family: "@{theme}_font_font-family"; + @font_font-weight: "@{theme}_font_font-weight"; + @font_font-size: "@{theme}_font_font-size"; + @font_font-style: "@{theme}_font_font-style"; + @font_letter-spacing: "@{theme}_font_letter-spacing"; + + @navbar_font_font-family: "@{theme}_navbar_font_font-family"; + @navbar_font_font-weight: "@{theme}_navbar_font_font-weight"; + @navbar_font_font-size: "@{theme}_navbar_font_font-size"; + @navbar_font_font-style: "@{theme}_navbar_font_font-style"; + @navbar_font_letter-spacing: "@{theme}_navbar_font_letter-spacing"; + + @dropdown_font_font-family: "@{theme}_dropdown_font_font-family"; + @dropdown_font_font-weight: "@{theme}_dropdown_font_font-weight"; + @dropdown_font_font-size: "@{theme}_dropdown_font_font-size"; + @dropdown_font_font-style: "@{theme}_dropdown_font_font-style"; + @dropdown_font_letter-spacing: "@{theme}_dropdown_font_letter-spacing"; + + @navbar_width: "@{theme}_navbar_width"; + @navbar_height: "@{theme}_navbar_height"; + @sticky_height: "@{theme}_sticky_height"; + + @navbar_background_color: "@{theme}_navbar_background_color"; + @navbar_background_to: "@{theme}_navbar_background_to"; + @navbar_background_deg: "@{theme}_navbar_background_deg"; + + @sticky_background_color: "@{theme}_sticky_background"; + + @navbar_mobile_border_color: "@{theme}_navbar_mobile_border"; + + @navbar_logo_bg: "@{theme}_navbar_logo_bg"; + @navbar_logo_height: "@{theme}_navbar_logo_height"; + @sticky_logo_height: "@{theme}_sticky_logo_height"; + + @navbar_link_bg: "@{theme}_navbar_link_bg"; + + @navbar_link_bg_hover: "@{theme}_navbar_link_bg_hover"; + + @navbar_divider: "@{theme}_navbar_divider"; + + @navbar_link_hover_effect: "@{theme}_navbar_link_hover_effect"; + + @navbar_link_margin_top: "@{theme}_navbar_link_margin_border-top"; + @navbar_link_margin_bottom: "@{theme}_navbar_link_margin_border-bottom"; + @navbar_link_margin_left: "@{theme}_navbar_link_margin_border-left"; + @navbar_link_margin_right: "@{theme}_navbar_link_margin_border-right"; + + @navbar_link_radius_top: "@{theme}_navbar_link_radius_border-top"; + @navbar_link_radius_bottom: "@{theme}_navbar_link_radius_border-bottom"; + @navbar_link_radius_left: "@{theme}_navbar_link_radius_border-left"; + @navbar_link_radius_right: "@{theme}_navbar_link_radius_border-right"; + + @navbar_button_radius_top: "@{theme}_navbar_button_radius_border-top"; + @navbar_button_radius_bottom: "@{theme}_navbar_button_radius_border-bottom"; + @navbar_button_radius_left: "@{theme}_navbar_button_radius_border-left"; + @navbar_button_radius_right: "@{theme}_navbar_button_radius_border-right"; + + @dropdown_margin: "@{theme}_dropdown_margin"; + @dropdown_radius_top: "@{theme}_dropdown_radius_border-top"; + @dropdown_radius_right: "@{theme}_dropdown_radius_border-right"; + @dropdown_radius_bottom: "@{theme}_dropdown_radius_border-bottom"; + @dropdown_radius_left: "@{theme}_dropdown_radius_border-left"; + @dropdown_border_color: "@{theme}_dropdown_border_border-color"; + @dropdown_border_top: "@{theme}_dropdown_border_border-top"; + @dropdown_border_right: "@{theme}_dropdown_border_border-right"; + @dropdown_border_bottom: "@{theme}_dropdown_border_border-bottom"; + @dropdown_border_left: "@{theme}_dropdown_border_border-left"; + + @dropdown_background: "@{theme}_dropdown_background"; + + @dropdown_title_border_width: "@{theme}_dropdown_title_border_border-top"; + @dropdown_title_border_style: "@{theme}_dropdown_title_border_border-style"; + @dropdown_title_border_color: "@{theme}_dropdown_title_border_border-color"; + + @dropdown_link: "@{theme}_dropdown_link"; + + @dropdown_link_hover: "@{theme}_dropdown_link_hover"; + @dropdown_link_bg_hover: "@{theme}_dropdown_link_bg_hover"; + + @dropdown_link_border_width: "@{theme}_dropdown_link_border_border-top"; + @dropdown_link_border_style: "@{theme}_dropdown_link_border_border-style"; + @dropdown_link_border_color: "@{theme}_dropdown_link_border_border-color"; + + //@dropdown_link_padding_top: "@{theme}_dropdown_link_padding_border-top"; + //@dropdown_link_padding_bottom: "@{theme}_dropdown_link_padding_border-bottom"; + //@dropdown_link_padding_left: "@{theme}_dropdown_link_padding_border-left"; + //@dropdown_link_padding_right: "@{theme}_dropdown_link_padding_border-right"; + + @mobile_link_padding_top: "@{theme}_mobile_link_padding_border-top"; + @mobile_link_padding_bottom: "@{theme}_mobile_link_padding_border-bottom"; + @mobile_link_padding_left: "@{theme}_mobile_link_padding_border-left"; + @mobile_link_padding_right: "@{theme}_mobile_link_padding_border-right"; + + @mobile_link_border_width: "@{theme}_mobile_link_border_border-top"; + @mobile_link_border_style: "@{theme}_mobile_link_border_border-style"; + @mobile_link_border_color: "@{theme}_mobile_link_border_border-color"; + + // Button + // ------------------------------------------------------------------------- + + @dropdown_button_radius_top: "@{theme}_dropdown_button_radius_border-top"; + @dropdown_button_radius_right: "@{theme}_dropdown_button_radius_border-right"; + @dropdown_button_radius_bottom: "@{theme}_dropdown_button_radius_border-bottom"; + @dropdown_button_radius_left: "@{theme}_dropdown_button_radius_border-left"; + + // Tab + // ------------------------------------------------------------------------- + + @dropdown_tab_bg: "@{theme}_dropdown_tab_bg"; + @dropdown_tab_bg_hover: "@{theme}_dropdown_tab_bg_hover"; + + .quadmenu-sticky-wrapper { + &.@{class} { + background-color: @@navbar_background_color; + } + } + + #quadmenu { + &.@{class} { + background-color: @@navbar_background_color; + color: ~"@{@{theme}_navbar_text}"; + + &.quadmenu-background-gradient { + .navbar-gradient(@@navbar_background_color, @@navbar_background_to, @@navbar_background_deg); + } + + // Fonts + // ----------------------------------------------------------------- + + font-family: @@font_font-family; + font-weight: @@font_font-weight; + font-size: @@font_font-size * 1px; + font-style: @@font_font-style; + .letter-spacing(@@font_letter-spacing); + + .quadmenu-navbar-nav { + + > li { + + &.quadmenu-item { + + > a, + > form { + font-family: @@navbar_font_font-family; + font-size: @@navbar_font_font-size * 1px; + font-weight: @@navbar_font_font-weight; + font-style: @@navbar_font_font-style; + .letter-spacing(@@navbar_font_letter-spacing); + } + + > form { + &.quadmenu-has-icon:not(.quadmenu-item-type-icon) { + > a > .quadmenu-item-content { + padding-left: @horizontal-padding*2px + @@navbar_font_font-size *1px; + } + } + } + + } + + } + + .quadmenu-dropdown-menu { + + .quadmenu-title { + font-family: @@navbar_font_font-family; + font-size: @@navbar_font_font-size * 1px; + } + + li { + &.quadmenu-item { + > a { + font-family: @@dropdown_font_font-family; + font-size: @@dropdown_font_font-size * 1px; + font-weight: @@dropdown_font_font-weight; + font-style: @@dropdown_font_font-style; + .letter-spacing(@@dropdown_font_letter-spacing); + + > .quadmenu-item-content { + + .quadmenu-product-price, + .quadmenu-product-rating { + &, + ins, + .woocommerce-Price-currencySymbol, + .woocommerce-Price-amount amount { + font-family: @@dropdown_font_font-family; + font-size: @@dropdown_font_font-size * 1px; + font-weight: @@dropdown_font_font-weight; + font-style: @@dropdown_font_font-style; + .letter-spacing(@@dropdown_font_letter-spacing); + } + } + + } + + } + } + } + + } + + } + + // Horizontal + // ----------------------------------------------------------------- + + .quadmenu-navbar-header { + + .quadmenu-navbar-brand { + margin-top: @@navbar_link_margin_top*1px; + margin-bottom: @@navbar_link_margin_bottom*1px; + } + + } + + &.quadmenu-is-horizontal { + + &.js { + .height(@@navbar_height); + } + + &.quadmenu-divider-show { + .quadmenu-navbar-nav { + > li > a:after, + > li.quadmenu-item-type-search > form:after { + margin-left: -@@navbar_link_margin_left*1px; + background-color: @@navbar_divider; + } + } + } + + .quadmenu-navbar-nav { + + // Tabs + // --------------------------------------------------------- + + > li { + &.quadmenu-item-type-tabs { + + > .quadmenu-dropdown-menu { + > ul { + > li { + > ul.quadmenu-tabs { + + > li.quadmenu-item-type-tab { + background-color: @@dropdown_tab_bg; + + &:hover, + &.open { + background-color: @@dropdown_tab_bg_hover; + } + } + } + + } + } + } + } + } + + > li { + > .quadmenu-dropdown-menu { + margin-top: @@dropdown_margin * 1px; + } + } + + // Button + // --------------------------------------------------------- + + li.quadmenu-item-type-button { + > a { + > .quadmenu-item-content { + border-radius: @@navbar_button_radius_top*1px @@navbar_button_radius_right*1px @@navbar_button_radius_bottom*1px @@navbar_button_radius_left*1px; + } + } + } + + .quadmenu-dropdown-menu { + border-top-left-radius: @@dropdown_radius_top*1px; + border-top-right-radius: @@dropdown_radius_right*1px; + border-bottom-right-radius: @@dropdown_radius_bottom*1px; + border-bottom-left-radius: @@dropdown_radius_left*1px; + border-top-width: @@dropdown_border_top*1px; + border-right-width: @@dropdown_border_right*1px; + border-bottom-width: @@dropdown_border_bottom*1px; + border-left-width: @@dropdown_border_left*1px; + border-color: @@dropdown_border_color; + border-style: solid; + background-color: @@dropdown_background; + + .dropdown-inner-radius(ceil(@@dropdown_radius_top - @@dropdown_border_top), ceil(@@dropdown_radius_right - @@dropdown_border_right), ceil(@@dropdown_radius_bottom - @@dropdown_border_bottom), ceil(@@dropdown_radius_left - @@dropdown_border_left)); + + // Border + // ----------------------------------------------------- + + li { + &.quadmenu-item { + + &:not(.quadmenu-item-type-tab) { + + &:not(:last-child):not(:only-child) { + > a { + border-color: @@dropdown_link_border_color; + border-style: @@dropdown_link_border_style; + border-width: 0 0 @@dropdown_link_border_width*1px 0; + } + } + } + + } + + } + + } + + .quadmenu-dropdown-submenu { + &:not(.quadmenu-item-type-tab) > .quadmenu-dropdown-menu { + margin: @@dropdown_border_top * -1px @@dropdown_margin*1px+@@dropdown_border_right*1px 0 @@dropdown_margin*1px+@@dropdown_border_left*1px; + } + } + } + } + + // Sicky + // ----------------------------------------------------------------- + + &.quadmenu-sticky-top { + + &.js { + .height(@@sticky_height); + } + + background-color: @@sticky_background_color; + + .quadmenu-navbar-brand { + > img { + height: @@sticky_logo_height * 1px; + } + } + } + + // Brand + // ----------------------------------------------------------------- + + .quadmenu-navbar-brand { + color: ~"@{@{theme}_navbar_link}"; + &:hover, + &:focus { + color: ~"@{@{theme}_navbar_link_hover}"; + } + + &.img { + background-color: @@navbar_logo_bg; + } + + > img { + height: @@navbar_logo_height * 1px; + } + } + + .quadmenu-navbar-toggle { + &.collapsed { + .icon-bar { + background-color: ~"@{@{theme}_navbar_toggle_open}"; + } + } + .icon-bar { + background-color: ~"@{@{theme}_navbar_toggle_close}"; + } + } + + // Perfect Scrollbar + // ----------------------------------------------------------------- + + .ps-container { + + >.ps-scrollbar-y-rail { + background-color: ~"@{@{theme}_navbar_scrollbar_rail}"; + + >.ps-scrollbar-y { + background-color: ~"@{@{theme}_navbar_scrollbar}"; + } + + &:hover, + &:active { + >.ps-scrollbar-y { + background-color: ~"@{@{theme}_navbar_scrollbar}"; + } + } + } + } + + .quadmenu-dropdown-menu { + + .ps-container { + >.ps-scrollbar-y-rail { + + >.ps-scrollbar-y { + background-color: ~"@{@{theme}_dropdown_scrollbar}"; + } + + &:hover, + &:active { + >.ps-scrollbar-y { + background-color: ~"@{@{theme}_dropdown_scrollbar}"; + } + } + } + + } + } + + // Effect + // ----------------------------------------------------------------- + + &.quadmenu-hover-ripple, + &.quadmenu-hover-slidebar { + + .quadmenu-navbar-nav { + + > li { + + &.quadmenu-item { + &.quadmenu-has-link { + > a:before { + background-color: @@navbar_link_hover_effect; + } + } + } + + &.quadmenu-slidebar { + > .bar { + background-color: @@navbar_link_hover_effect; + } + } + + } + } + + } + // UL + // ----------------------------------------------------------------- + .quadmenu-navbar-nav { + + > li { + + &.quadmenu-item { + &.quadmenu-has-link { + > a:before, + > span.bar { + background-color: @@navbar_link_hover_effect; + } + } + } + + } + + > li { + &:not(.quadmenu-item-type-button) { + margin: @@navbar_link_margin_top*1px @@navbar_link_margin_right*1px @@navbar_link_margin_bottom*1px @@navbar_link_margin_left*1px; + border-radius: @@navbar_link_radius_top*1px @@navbar_link_radius_right*1px @@navbar_link_radius_bottom*1px @@navbar_link_radius_left*1px; + + > a { + + > .quadmenu-item-content { + color: ~"@{@{theme}_navbar_link}"; + text-transform: ~"@{@{theme}_navbar_link_transform}"; + + > .quadmenu-icon { + color: ~"@{@{theme}_navbar_link_icon}"; + } + + > .quadmenu-subtitle { + color: ~"@{@{theme}_navbar_link_subtitle}"; + } + + > .quadmenu-badge { + + > .quadmenu-badge-bubble { + background-color: ~"@{@{theme}_navbar_badge}"; + color: ~"@{@{theme}_navbar_badge_color}"; + } + } + } + + } + + &.quadmenu-has-link { + + background-color: @@navbar_link_bg; + + &:hover, + &.open { + + background-color: @@navbar_link_bg_hover; + + > a { + + > .quadmenu-item-content { + color: ~"@{@{theme}_navbar_link_hover}"; + > .quadmenu-icon { + color: ~"@{@{theme}_navbar_link_icon_hover}"; + } + > .quadmenu-subtitle { + color: ~"@{@{theme}_navbar_link_subtitle_hover}";//!important; + } + } + } + } + } + } + } + + // Button + // ------------------------------------------------------------- + + > li.quadmenu-item-type-button { + + > a { + + > .quadmenu-item-content { + color: ~"@{@{theme}_navbar_button}"; + text-transform: ~"@{@{theme}_navbar_link_transform}"; + background-color: ~"@{@{theme}_navbar_button_background}"; + + > .quadmenu-icon { + color: ~"@{@{theme}_navbar_button}"; + } + } + } + + &:active, + &:focus, + &:hover, + &.open { + > a { + > .quadmenu-item-content { + color: ~"@{@{theme}_navbar_button_hover}"; + background-color: ~"@{@{theme}_navbar_button_hover_background}"; + + > .quadmenu-icon { + color: ~"@{@{theme}_navbar_button_hover}"; + } + } + } + } + } + + // Search + // ------------------------------------------------------------- + + > li.quadmenu-item-type-search { + + > form { + ::placeholder { + color: ~"@{@{theme}_navbar_link}"; + font-family: @@navbar_font_font-family; + font-size: @@navbar_font_font-size * 1px; + font-weight: @@navbar_font_font-weight; + font-style: @@navbar_font_font-style; + text-transform: ~"@{@{theme}_navbar_link_transform}"; + .letter-spacing(@@navbar_font_letter-spacing); + } + + input { + color: ~"@{@{theme}_navbar_link}"; + font-family: @@navbar_font_font-family; + font-size: @@navbar_font_font-size * 1px; + font-weight: @@navbar_font_font-weight; + font-style: @@navbar_font_font-style; + text-transform: ~"@{@{theme}_navbar_link_transform}"; + .letter-spacing(@@navbar_font_letter-spacing); + } + + i { + color: ~"@{@{theme}_navbar_link_icon}"; + } + } + } + + // Cart & Login + // ------------------------------------------------------------- + + > li.quadmenu-item-type-login, + > li.quadmenu-item-type-cart { + + > .quadmenu-dropdown-menu { + + .quadmenu-bottom-text { + font-family: @@navbar_font_font-family; + font-size: @@navbar_font_font-size * 1px; + font-weight: @@navbar_font_font-weight; + font-style: @@navbar_font_font-style; + text-transform: ~"@{@{theme}_navbar_link_transform}"; + .letter-spacing(@@navbar_font_letter-spacing); + + .background-color-diff(@@dropdown_background, 4); + } + + li.woocommerce-mini-cart-item { + .blockUI.blockOverlay { + background-color: @@dropdown_background!important; + } + } + } + + } + + // Cart + // ------------------------------------------------------------- + + > li.quadmenu-item-type-cart { + + > a > .quadmenu-item-content { + + > .quadmenu-cart-magic { + + > .quadmenu-icon { + color: ~"@{@{theme}_navbar_link_icon}"; + } + + > .quadmenu-cart-qty { + background-color: ~"@{@{theme}_navbar_badge}"; + color: ~"@{@{theme}_navbar_badge_color}"; + } + } + + } + &:hover, + &.open { + > a > .quadmenu-item-content { + + > .quadmenu-cart-magic { + + > .quadmenu-icon { + color: ~"@{@{theme}_navbar_link_icon_hover}"; + } + } + + } + } + + &.quadmenu-cart-empty { + + > .quadmenu-dropdown-menu { + + .widget_shopping_cart { + &, + li { + font-family: @@navbar_font_font-family; + font-size: @@navbar_font_font-size * 1px; + font-weight: @@navbar_font_font-weight; + font-style: @@navbar_font_font-style; + text-transform: ~"@{@{theme}_navbar_link_transform}"; + .letter-spacing(@@navbar_font_letter-spacing); + + } + } + + } + + } + } + + // Social + // ------------------------------------------------------------- + + > li.quadmenu-item-type-social { + + > .quadmenu-toggle-container > a { + + color: ~"@{@{theme}_navbar_link}"; + + > .quadmenu-icon { + color: ~"@{@{theme}_navbar_link_icon}"; + } + + &:hover, + &:focus { + + > .quadmenu-icon { + color: ~"@{@{theme}_navbar_link_icon_hover}"; + } + + } + + } + + } + + // Carousel + // ------------------------------------------------------------- + + .owl-carousel { + + .owl-dots { + .owl-dot span { + background-color: ~"@{@{theme}_dropdown_button_bg}"; + } + } + + .owl-nav { + + .owl-prev, + .owl-next { + color: ~"@{@{theme}_dropdown_button}"; + background-color: ~"@{@{theme}_dropdown_button_bg}"; + + &:active, + &:focus, + &:hover { + color: ~"@{@{theme}_dropdown_button_hover}"; + background-color: ~"@{@{theme}_dropdown_button_bg_hover}"; + } + + } + + } + + } + + // Login + // ------------------------------------------------------------- + + > li.quadmenu-item-type-login { + + > a { + + > .quadmenu-item-content { + + > .quadmenu-avatar { + + > img { + height: @@navbar_logo_height*1px; + width: @@navbar_logo_height*1px; + } + } + } + + } + + a { + color: @@dropdown_link; + &:hover { + color: @@dropdown_link_hover; + } + } + + } + + // Dropdown Menu + // ------------------------------------------------------------- + + .quadmenu-dropdown-menu { + background-color: @@dropdown_background; + + .quadmenu-title { + color: ~"@{@{theme}_dropdown_title}"; + .link-border(@@dropdown_title_border_width,@@dropdown_title_border_style,@@dropdown_title_border_color, @vertical-padding); + } + + form { + ::placeholder { + color: @@dropdown_link; + } + } + + input, + textarea, + select, + .button { + font-family: @@dropdown_font_font-family; + font-size: @@dropdown_font_font-size * 1px; + font-weight: @@dropdown_font_font-weight; + font-style: @@dropdown_font_font-style; + text-transform: ~"@{@{theme}_dropdown_link_transform}"; + .letter-spacing(@@dropdown_font_letter-spacing); + } + + .button { + color: ~"@{@{theme}_dropdown_button}"; + background-color: ~"@{@{theme}_dropdown_button_bg}"; + border-top-left-radius: @@navbar_button_radius_top*1px; + border-top-right-radius: @@navbar_button_radius_right*1px; + border-bottom-right-radius: @@navbar_button_radius_bottom*1px; + border-bottom-left-radius: @@navbar_button_radius_left*1px; + + &:hover, + &.active { + color: ~"@{@{theme}_dropdown_button_hover}"; + background-color: ~"@{@{theme}_dropdown_button_bg_hover}"; + } + } + + li { + &.quadmenu-item { + + > a { + border-color: @@dropdown_link_border_color; + + > .quadmenu-item-content { + color: @@dropdown_link; + text-transform: ~"@{@{theme}_dropdown_link_transform}"; + //padding: @@dropdown_link_padding_top*1px @@dropdown_link_padding_right*1px @@dropdown_link_padding_bottom*1px @@dropdown_link_padding_left*1px; + + > .quadmenu-icon { + color: ~"@{@{theme}_dropdown_link_icon}"; + } + > .quadmenu-subtitle, + > .quadmenu-description { + color: ~"@{@{theme}_dropdown_link_subtitle}"; + } + + > .quadmenu-badge { + + > .quadmenu-badge-bubble { + background-color: ~"@{@{theme}_navbar_badge}"; + color: ~"@{@{theme}_navbar_badge_color}"; + } + } + } + } + + &:hover, + &.open { + + > a { + + > .quadmenu-item-content { + + color: @@dropdown_link_hover;//!important; + + > .quadmenu-icon { + color: ~"@{@{theme}_dropdown_link_icon_hover}"; + } + + > .quadmenu-description, + > .quadmenu-subtitle { + color: ~"@{@{theme}_dropdown_link_subtitle_hover}"; + } + } + } + + } + + &.quadmenu-has-link { + &:hover, + &.open { + background-color: @@dropdown_link_bg_hover; + } + } + } + } + + // Button + // --------------------------------------------------------- + + li.quadmenu-item-type-button { + > a { + > .quadmenu-item-content { + color: ~"@{@{theme}_dropdown_button}"; + background-color: ~"@{@{theme}_dropdown_button_bg}"; + > .quadmenu-icon { + color: ~"@{@{theme}_dropdown_button}"; + } + } + } + + &:active, + &:focus, + &:hover, + &.open { + > a { + > .quadmenu-item-content { + color: ~"@{@{theme}_dropdown_button_hover}"; + background-color: ~"@{@{theme}_dropdown_button_bg_hover}"; + + > .quadmenu-icon { + color: ~"@{@{theme}_dropdown_button_hover}"; + } + } + } + } + } + } + } + + // Mobile + // ----------------------------------------------------------------- + + &:not(.quadmenu-is-horizontal) { + + .quadmenu-navbar-collapse { + + &.collapsing, + &.in { + box-shadow: inset 0 1px 0 @@navbar_mobile_border_color; + } + } + + .quadmenu-navbar-nav { + + > li.quadmenu-item-type-login, + > li.quadmenu-item-type-cart { + + > .quadmenu-dropdown-menu { + + padding-top: @@mobile_link_padding_top*2px; + padding-bottom: @@mobile_link_padding_bottom*2px; + padding-left: @@mobile_link_padding_left*1px; + padding-right: @@mobile_link_padding_right*1px; + + .quadmenu-bottom-text { + margin-top: @@mobile_link_padding_top*2px; + margin-bottom: -@@mobile_link_padding_bottom*2px; + margin-left: -@@mobile_link_padding_left*1px; + margin-right: -@@mobile_link_padding_right*1px; + } + + } + } + + > li.quadmenu-item-type-login { + + > .quadmenu-dropdown-menu { + > ul { + width: auto; + margin: 0 -@@mobile_link_padding_right 0 -@@mobile_link_padding_left; + } + } + } + + > li.quadmenu-item-type-cart { + + &.quadmenu-cart-empty { + + > .quadmenu-dropdown-menu { + .widget_shopping_cart { + padding-bottom: @@mobile_link_padding_bottom*2px; + } + } + } + + > .quadmenu-dropdown-menu { + + .quadmenu-empty-icon { + padding-top: @@mobile_link_padding_top*2px; + padding-bottom: @@mobile_link_padding_bottom*2px; + } + + } + } + + > li.quadmenu-item-type-social { + + > .quadmenu-toggle-container { + + > a { + padding-left: @@mobile_link_padding_left; + padding-right: @@mobile_link_padding_right; + } + } + + } + + + > li { + &.quadmenu-item { + + &:not(.open) { + &:not(:last-child):not(:only-child) { + > a { + border-color: @@mobile_link_border_color; + border-style: @@mobile_link_border_style; + border-width: 0 0 @@mobile_link_border_width*1px 0; + } + } + } + + .owl-carousel { + + &:not(:last-child):not(:only-child) { + border-color: @@mobile_link_border_color; + border-style: @@mobile_link_border_style; + border-width: 0 0 @@mobile_link_border_width*1px 0; + } + + } + + } + + } + + > li { + &.quadmenu-item-type-search { + + > form { + + > .quadmenu-item-content { + margin: @@mobile_link_padding_top*1px @@mobile_link_padding_right*1px @@mobile_link_padding_bottom*1px @@mobile_link_padding_left*1px; + padding: 0; + } + + } + } + } + + li { + + + &.quadmenu-dropdown { + + form { + + .quadmenu-item-content + .quadmenu-item-content { + margin-top: @@mobile_link_padding_top*1px; + } + + } + + } + + &.quadmenu-item { + + .quadmenu-item-content { + &, + > .quadmenu-caret { + padding: @@mobile_link_padding_top*1px @@mobile_link_padding_right*1px @@mobile_link_padding_bottom*1px @@mobile_link_padding_left*1px; + } + + } + + .quadmenu-item-widget { + padding: @@mobile_link_padding_top*1px @@mobile_link_padding_right*1px @@mobile_link_padding_bottom*1px @@mobile_link_padding_left*1px; + } + + &.open { + + > a { + + > .quadmenu-item-content { + + > .quadmenu-caret { + color: @@dropdown_link; + background-color: @@dropdown_background; + } + } + } + } + } + + } + + // Button + // --------------------------------------------------------- + + li { + &.quadmenu-item-type-button { + padding-left: @@mobile_link_padding_right*1px; + padding-right: @@mobile_link_padding_left*1px; + } + } + + // Dropdown + // --------------------------------------------------------- + + .quadmenu-dropdown-menu { + + border-color: @@mobile_link_border_color; + border-style: @@mobile_link_border_style; + border-width: 0 0 @@mobile_link_border_width*1px 0; + + li { + &.quadmenu-item { + + &:not(:last-child):not(:only-child) { + > a { + border-style: @@dropdown_link_border_style; + border-width: 0 0 @@dropdown_link_border_width*1px 0; + } + } + + .owl-carousel { + + &:not(:last-child):not(:only-child) { + + border-style: @@dropdown_link_border_style; + border-width: 0 0 @@dropdown_link_border_width*1px 0; + border-color: @@dropdown_link_border_color; + } + + } + + } + + } + + } + + } + + } + + // Offcanvas + // ----------------------------------------------------------------- + + &:not(.quadmenu-is-horizontal) { + + &.quadmenu-background-gradient { + + .navbar-offcanvas { + .navbar-gradient(@@navbar_background_color, @@navbar_background_to, @@navbar_background_deg); + } + + } + + .navbar-offcanvas { + background-color: @@navbar_background_color; + width: @@navbar_width * 1px; + max-width: 80%; + } + + } + + } + } + + .loop((@i - 1)); +} .loop; \ No newline at end of file diff --git a/assets/frontend/less/quadmenu-widgets.less b/assets/frontend/less/quadmenu-widgets.less new file mode 100644 index 0000000..7201a1d --- /dev/null +++ b/assets/frontend/less/quadmenu-widgets.less @@ -0,0 +1,254 @@ +@import "mixins.less"; +@import "themes/widgets.less"; + +.loop(@i: length(@themes)) when (@i > 0) and not (@themes = '') { + + @theme: e(extract(@themes, @i)); + + @class: ~"quadmenu-@{theme}"; + + @font_font-family: "@{theme}_font_font-family"; + @font_font-weight: "@{theme}_font_font-weight"; + @font_font-size: "@{theme}_font_font-size"; + @font_font-style: "@{theme}_font_font-style"; + @font_letter-spacing: "@{theme}_font_letter-spacing"; + + @navbar_font_font-family: "@{theme}_navbar_font_font-family"; + @navbar_font_font-weight: "@{theme}_navbar_font_font-weight"; + @navbar_font_font-size: "@{theme}_navbar_font_font-size"; + @navbar_font_font-style: "@{theme}_navbar_font_font-style"; + @navbar_font_letter-spacing: "@{theme}_navbar_font_letter-spacing"; + + @dropdown_font_font-family: "@{theme}_dropdown_font_font-family"; + @dropdown_font_font-weight: "@{theme}_dropdown_font_font-weight"; + @dropdown_font_font-size: "@{theme}_dropdown_font_font-size"; + @dropdown_font_font-style: "@{theme}_dropdown_font_font-style"; + @dropdown_font_letter-spacing: "@{theme}_dropdown_font_letter-spacing"; + + @navbar_width: "@{theme}_navbar_width"; + @navbar_height: "@{theme}_navbar_height"; + @sticky_height: "@{theme}_sticky_height"; + + @navbar_background_color: "@{theme}_navbar_background_color"; + @navbar_background_to: "@{theme}_navbar_background_to"; + @navbar_background_deg: "@{theme}_navbar_background_deg"; + + @sticky_background_color: "@{theme}_sticky_background"; + + @navbar_mobile_border_color: "@{theme}_navbar_mobile_border"; + + @navbar_logo_bg: "@{theme}_navbar_logo_bg"; + @navbar_logo_height: "@{theme}_navbar_logo_height"; + @sticky_logo_height: "@{theme}_sticky_logo_height"; + + @navbar_link_bg: "@{theme}_navbar_link_bg"; + + @navbar_link_bg_hover: "@{theme}_navbar_link_bg_hover"; + + @navbar_divider: "@{theme}_navbar_divider"; + + @navbar_link_hover_effect: "@{theme}_navbar_link_hover_effect"; + + @navbar_link_margin_top: "@{theme}_navbar_link_margin_border-top"; + @navbar_link_margin_bottom: "@{theme}_navbar_link_margin_border-bottom"; + @navbar_link_margin_left: "@{theme}_navbar_link_margin_border-left"; + @navbar_link_margin_right: "@{theme}_navbar_link_margin_border-right"; + + @navbar_link_radius_top: "@{theme}_navbar_link_radius_border-top"; + @navbar_link_radius_bottom: "@{theme}_navbar_link_radius_border-bottom"; + @navbar_link_radius_left: "@{theme}_navbar_link_radius_border-left"; + @navbar_link_radius_right: "@{theme}_navbar_link_radius_border-right"; + + @dropdown_margin: "@{theme}_dropdown_margin"; + @dropdown_radius_top: "@{theme}_dropdown_radius_border-top"; + @dropdown_radius_right: "@{theme}_dropdown_radius_border-right"; + @dropdown_radius_bottom: "@{theme}_dropdown_radius_border-bottom"; + @dropdown_radius_left: "@{theme}_dropdown_radius_border-left"; + @dropdown_border_color: "@{theme}_dropdown_border_border-color"; + @dropdown_border_top: "@{theme}_dropdown_border_border-top"; + @dropdown_border_right: "@{theme}_dropdown_border_border-right"; + @dropdown_border_bottom: "@{theme}_dropdown_border_border-bottom"; + @dropdown_border_left: "@{theme}_dropdown_border_border-left"; + + @dropdown_background: "@{theme}_dropdown_background"; + + @dropdown_title_border_width: "@{theme}_dropdown_title_border_border-top"; + @dropdown_title_border_style: "@{theme}_dropdown_title_border_border-style"; + @dropdown_title_border_color: "@{theme}_dropdown_title_border_border-color"; + + @dropdown_link: "@{theme}_dropdown_link"; + + @dropdown_link_hover: "@{theme}_dropdown_link_hover"; + @dropdown_link_bg_hover: "@{theme}_dropdown_link_bg_hover"; + + @dropdown_link_border_width: "@{theme}_dropdown_link_border_border-top"; + @dropdown_link_border_style: "@{theme}_dropdown_link_border_border-style"; + @dropdown_link_border_color: "@{theme}_dropdown_link_border_border-color"; + + // Button + // ------------------------------------------------------------------------- + + @dropdown_button_radius_top: "@{theme}_dropdown_button_radius_border-top"; + @dropdown_button_radius_right: "@{theme}_dropdown_button_radius_border-right"; + @dropdown_button_radius_bottom: "@{theme}_dropdown_button_radius_border-bottom"; + @dropdown_button_radius_left: "@{theme}_dropdown_button_radius_border-left"; + + // Tab + // ------------------------------------------------------------------------- + + @dropdown_tab_bg: "@{theme}_dropdown_tab_bg"; + @dropdown_tab_bg_hover: "@{theme}_dropdown_tab_bg_hover"; + + + #quadmenu { + &.@{class} { + + // Fonts + // ----------------------------------------------------------------- + + .widget { + a, + ul li { + font-family: @@dropdown_font_font-family; + font-size: @@dropdown_font_font-size * 1px; + font-weight: @@dropdown_font_font-weight; + font-style: @@dropdown_font_font-style; + .letter-spacing(@@dropdown_font_letter-spacing); + } + + &.widget_rss { + span.rss-date { + font-size: @@font_font-size * 1px- 2px; + } + } + + &.widget_products, + &.widget_recent_reviews, + &.widget_shopping_cart, + &.widget_recently_viewed_products, + &.widget_top_rated_products, + &.widget_featured_posts { + + li { + > a, + > a > span.product-title { + text-transform: ~"@{@{theme}_dropdown_link_transform}"; + font-family: @@dropdown_font_font-family; + font-size: @@dropdown_font_font-size * 1px; + font-weight: @@dropdown_font_font-weight; + font-style: @@dropdown_font_font-style; + .letter-spacing(@@dropdown_font_letter-spacing); + } + + > .date, + > a > .date { + font-size: @@font_font-size * 1px; + } + } + + } + + &.widget_products, + &.widget_recent_reviews, + &.widget_shopping_cart, + &.widget_recently_viewed_products, + &.widget_top_rated_products { + + li span.reviewer, + li span.amount { + font-size: @@font_font-size * 1px - 2px; + } + + } + + &.widget_price_filter { + .price_slider_amount { + font-size: @@font_font-size * 1px- 2px; + } + } + + } + + .widget { + + // General List + // ------------------------------------------------------------- + ul { + list-style: none; + margin: 0; + + li { + a { + color: @@dropdown_link; + + &:hover { + color: @@dropdown_link_hover; + } + } + } + + li:last-child { + border-bottom: 0; + padding-bottom: 0; + } + + } + &.widget_tag_cloud, + &.widget_product_tag_cloud { + a { + color: ~"@{@{theme}_dropdown_link_icon}"; + + &:hover { + color: ~"@{@{theme}_dropdown_link_icon_hover}"; + } + } + } + + &.widget_categories, + &.widget_product_categories { + ul > li > span.count { + //background-color: ~"@{@{theme}_dropdown_link_icon}"; + color: ~"@{@{theme}_dropdown_link_icon}"; + } + } + + &.widget_recent_comments, + &.widget_recent_entries { + ul > li > span.comment-author-link, + ul > li > span.post-date { + color: ~"@{@{theme}_navbar_link_subtitle}"; + } + } + + &.widget_shopping_cart { + + ul.cart_list { + + li > a.remove { + color: ~"@{@{theme}_dropdown_link}"; + .background-color-diff(@@dropdown_background, 10); + + &:hover { + .background-color-diff(@@dropdown_background, 20); + } + } + } + + .total { + font-family: @@navbar_font_font-family; + font-size: @@navbar_font_font-size * 1px; + font-weight: @@navbar_font_font-weight; + font-style: @@navbar_font_font-style; + text-transform: ~"@{@{theme}_navbar_link_transform}"; + .letter-spacing(@@navbar_font_letter-spacing); + } + + + } + } + } + + } + + .loop((@i - 1)); +} .loop; \ No newline at end of file diff --git a/assets/frontend/less/themes/general.less b/assets/frontend/less/themes/general.less new file mode 100644 index 0000000..1aaf5ac --- /dev/null +++ b/assets/frontend/less/themes/general.less @@ -0,0 +1,133 @@ +#quadmenu { + + // Gutter + // ------------------------------------------------------------------------- + + .quadmenu-navbar-toggle { + margin-left: @horizontal-padding; + margin-right: @horizontal-padding; + } + + .quadmenu-alert + .quadmenu-alert { + margin-top: @horizontal-padding; + } + + .quadmenu-navbar-header { + .quadmenu-navbar-brand { + padding: 0 @horizontal-padding; + } + } + + .quadmenu-navbar-collapse { + padding-right: @horizontal-padding; + padding-left: @horizontal-padding; + } + + &.quadmenu-is-horizontal { + + .quadmenu-navbar-nav { + + > li.quadmenu-item-type-login, + > li.quadmenu-item-type-cart { + + > .quadmenu-dropdown-menu { + + padding: @horizontal-padding*2; + + .quadmenu-bottom-text { + margin: @horizontal-padding*2 -@horizontal-padding*2 -@horizontal-padding*2 -@horizontal-padding*2; + } + + } + } + + > li.quadmenu-item-type-login { + + > .quadmenu-dropdown-menu { + margin: 0 -@horizontal-padding*2 0 -@horizontal-padding*2; + } + } + + + > li.quadmenu-item-type-cart { + + &.quadmenu-cart-empty { + + > .quadmenu-dropdown-menu { + .widget_shopping_cart { + padding-bottom: @horizontal-padding*2; + } + } + } + + > .quadmenu-dropdown-menu { + + .quadmenu-empty-icon { + padding-top: @horizontal-padding*2; + padding-bottom: @horizontal-padding*2; + } + + } + } + + > li.quadmenu-item-type-social { + + > .quadmenu-toggle-container { + + > a { + padding-left: @horizontal-padding; + padding-right: @horizontal-padding; + } + } + + } + + li.quadmenu-dropdown { + + form { + + .quadmenu-item-content + .quadmenu-item-content { + margin-top: @horizontal-padding; + } + + } + + } + + } + + li.quadmenu-item-type-column { + + > div > ul { + padding-top: @horizontal-padding; + padding-bottom: @horizontal-padding; + } + + } + + } + + &:not(.quadmenu-is-horizontal) { + + .quadmenu-navbar-nav { + + > li.quadmenu-item-type-login { + + > .quadmenu-dropdown-menu { + + > ul { + > li.quadmenu-item { + + > .quadmenu-item-content { + padding-left: @horizontal-padding*2; + padding-right: @horizontal-padding*2; + } + } + } + + } + } + } + } + +} \ No newline at end of file diff --git a/assets/frontend/less/themes/grid.less b/assets/frontend/less/themes/grid.less new file mode 100644 index 0000000..fdec45a --- /dev/null +++ b/assets/frontend/less/themes/grid.less @@ -0,0 +1,755 @@ +@screen-sm-min: (@screen_sm_width * 1px); +@screen-sm-max: (@screen-sm-min - 1px); +@screen-md-min: (@screen_md_width * 1px); +@screen-sm-max: (@screen_md_width - 1px); +@screen-lg-min: (@screen_lg_width * 1px); +@screen-md-max: (@screen_lg_width - 1px); + +#quadmenu { + + &.quadmenu-is-horizontal { + + .quadmenu-navbar-nav { + + .quadmenu-row { + + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + padding-right: @horizontal-padding; + padding-left: @horizontal-padding; + } + + } + + } + + } + + .quadmenu-navbar-nav { + + .quadmenu-row { + display: -webkit-box!important; + display: -webkit-flex!important; + display: -ms-flexbox!important; + display: flex!important; + -webkit-flex-wrap: wrap!important; + -ms-flex-wrap: wrap!important; + flex-wrap: wrap!important; + } + + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + position: relative; + width: 100%; + min-height: 1px; + } + + .col { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + + .col-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + + .col-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + + .col-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + + .col-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + + .col-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + + .col-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + + .col-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + + .col-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + + .col-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + + .col-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + + .col-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + + .col-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + + .col-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + + .offset-1 { + margin-left: 8.333333%; + } + + .offset-2 { + margin-left: 16.666667%; + } + + .offset-3 { + margin-left: 25%; + } + + .offset-4 { + margin-left: 33.333333%; + } + + .offset-5 { + margin-left: 41.666667%; + } + + .offset-6 { + margin-left: 50%; + } + + .offset-7 { + margin-left: 58.333333%; + } + + .offset-8 { + margin-left: 66.666667%; + } + + .offset-9 { + margin-left: 75%; + } + + .offset-10 { + margin-left: 83.333333%; + } + + .offset-11 { + margin-left: 91.666667%; + } + + @media (min-width: 576px) { + .col-sm { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-sm-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-sm-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-sm-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-sm-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-sm-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-sm-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-sm-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-sm-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-sm-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-sm-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-sm-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-sm-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + } + + @media (min-width: @screen-sm-min) { + .col-md { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-md-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-md-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-md-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-md-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-md-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-md-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-md-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-md-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-md-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-md-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-md-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-md-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .offset-md-0 { + margin-left: 0%; + } + .offset-md-1 { + margin-left: 8.333333%; + } + .offset-md-2 { + margin-left: 16.666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.333333%; + } + .offset-md-5 { + margin-left: 41.666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.333333%; + } + .offset-md-8 { + margin-left: 66.666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.333333%; + } + .offset-md-11 { + margin-left: 91.666667%; + } + } + + @media (min-width: @screen-md-min) { + .col-lg { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-lg-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-lg-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-lg-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-lg-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-lg-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-lg-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-lg-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-lg-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-lg-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-lg-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-lg-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-lg-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .offset-lg-0 { + margin-left: 0%; + } + .offset-lg-1 { + margin-left: 8.333333%; + } + .offset-lg-2 { + margin-left: 16.666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.333333%; + } + .offset-lg-5 { + margin-left: 41.666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.333333%; + } + .offset-lg-8 { + margin-left: 66.666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.333333%; + } + .offset-lg-11 { + margin-left: 91.666667%; + } + } + + @media (min-width: @screen-lg-min) { + .col-xl { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-xl-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-xl-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-xl-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-xl-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-xl-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-xl-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-xl-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-xl-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-xl-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-xl-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-xl-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-xl-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .offset-xl-0 { + margin-left: 0%; + } + .offset-xl-1 { + margin-left: 8.333333%; + } + .offset-xl-2 { + margin-left: 16.666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.333333%; + } + .offset-xl-5 { + margin-left: 41.666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.333333%; + } + .offset-xl-8 { + margin-left: 66.666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.333333%; + } + .offset-xl-11 { + margin-left: 91.666667%; + } + } + + .hidden { + display: none !important; + } + + @media (max-width: @screen-sm-min) { + .hidden-xs { + display: none !important; + } + } + @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { + .hidden-sm { + display: none !important; + } + } + @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { + .hidden-md { + display: none !important; + } + } + @media (min-width: @screen-lg-min) { + .hidden-lg { + display: none !important; + } + } + + } + +} \ No newline at end of file diff --git a/assets/frontend/less/themes/widgets.less b/assets/frontend/less/themes/widgets.less new file mode 100644 index 0000000..a73f398 --- /dev/null +++ b/assets/frontend/less/themes/widgets.less @@ -0,0 +1,462 @@ +#quadmenu { + // Contact Form 7 + //-------------------------------------------------------------------------- + + .wpcf7 { + + form { + margin: 0; + padding: 0; + + > p { + margin: 0 0 1.5em 0; + } + } + + .wpcf7-form-control-wrap { + + } + + br { + display: none; + } + + .ajax-loader { + display:none; + } + + .wpcf7-not-valid { + border: 1px solid #ff0000; + } + + span.wpcf7-not-valid-tip { + display:none; + } + + div.wpcf7-response-output { + margin: 0; + padding: 15px; + } + + div.wpcf7-validation-errors { + border-radius: 4px; + } + + div.wpcf7-validation-errors { + margin-bottom: 20px; + } + + .wpcf7-checkbox { + text-align: center; + } + } + + .widget { + + padding: 0; + + a, + ul li { + line-height: inherit; + } + + // General List + // --------------------------------------------------------------------- + ul { + list-style: none; + margin: 0; + + li { + position: relative; + display: block; + margin: 0 0 @vertical-padding 0; + width: 100%; + } + + li:last-child { + border-bottom: 0; + padding-bottom: 0; + } + + li img, + li h5, + li i, + li span { + .transition(color 0.4s); + } + + ul { + margin-top: 10px; + margin-bottom: 0.1em; + li:first-child { + border-top: 1px solid; + } + } + + } + + > ul, + > div > ul { + padding: 0; + margin-top: 0; + margin-bottom: 0; + > li:first-child { + border-top: 0; + padding-top: 0; + } + } + + // Wordpress Widgets + // --------------------------------------------------------------------- + + &.widget_text { + p { + line-height: 1.45; + margin-bottom: 10px; + } + + input, + select { + max-width: 100%; + } + } + + &.widget_rss { + + span.quadmenu-title a.rsswidget { + text-transform: uppercase; + } + + span.quadmenu-title a.rsswidget:first-child { + float: right; + } + + span.rss-date { + display:block; + text-align: right; + //font-size: @general_font_font-size * 1px- 2px; + margin: 10px 0; + } + + div.rssSummary { + text-transform: none; + } + + cite { + margin-top: 5px; + text-align: right; + display:block; + } + } + + &.widget_nav_menu, + &.widget_pages { + + ul ul { + padding: 10px 0 0 10px; + } + + } + + &.widget_recent_comments, + &.widget_recent_entries { + ul > li > span.comment-author-link, + ul > li > span.post-date { + display: block; + margin: 2px 0 0 0; + font-size: 0.8em; + text-transform: none; + line-height: 1.3em; + } + } + + &.widget_product_search, + &.widget_search { + input.form-control { + width: 100%; + } + } + + &.widget_archive, + &.widget_categories, + &.widget_product_categories { + ul > li > span.count { + font-weight: 700; + //text-align: center; + float: right; + //display: inline-block; + //border-radius: 1px; + //width: 1.5em; + } + } + + &.widget_calendar { + + > .title { + display: none; + } + + + table { + + > caption { + margin: 0px; + display: table-caption; + } + + > thead > tr > th { + border-bottom: 1px; + font-size: 0.8em; + } + + td, th { + text-align: center; + padding: 10px 0; + } + } + } + + &.widget_tag_cloud, + &.widget_product_tag_cloud { + a { + display: inline-block; + text-decoration: none; + margin: 0 0.5em 0 0; + + &:after, + &:before { + display: none; + } + } + + } + + // Woocommerce Widgets + // --------------------------------------------------------------------- + + &.widget_products, + &.widget_recent_reviews, + &.widget_shopping_cart, + &.widget_recently_viewed_products, + &.widget_top_rated_products, + &.widget_featured_posts { + + li { + .clearfix(); + + > a, + > a > span.product-title { + margin: 5px 0; + font-weight: 400; + text-transform: uppercase; + line-height: 1; + } + + > a > img { + margin: 0 15px 0 0; + float: left; + width: 70px; + height: auto; + max-width: 35%; + position: inherit; + .transform(none); + } + + > .date, + > a > .date { + display: block; + //font-size: @general_font_font-size * 1px; + text-transform: uppercase; + } + + > a:hover > img { + box-shadow: 0px 3px 7px -3px rgba(0,0,0,0.2); + } + + > p { + margin : 0; + overflow: hidden; + } + } + + } + + &.widget_products, + &.widget_recent_reviews, + &.widget_shopping_cart, + &.widget_recently_viewed_products, + &.widget_top_rated_products { + + li > .reviewer, + li > .quantity, + li > .price, + li > .star-rating { + width: auto; + float: none; + display: block; + margin-top: 5px; + line-height: 1; + } + + //li span.reviewer, + //li span.amount { + // font-size: @general_font_font-size * 1px - 2px; + //} + + } + + &.widget_shopping_cart { + + ul.cart_list { + + padding: 0; + + li { + + > a.remove { + display: block; + position: absolute; + right: 0; + top: 0; + width: 20px; + height: 20px; + line-height: 20px; + text-align: center; + border-radius: 50%; + + &:after, + &:before { + display: none; + } + } + + } + } + + .total, + .buttons { + border: none; + padding: 0; + margin: 0; + } + + .buttons { + display: flex; + } + + .buttons { + + .button { + margin: 0; + flex: auto; + + &:first-child { + margin-right: 5px; + } + } + + } + + } + + &.widget_product_search { + + label.screen-reader-text { + display: none; + } + } + + &.widget_price_filter { + + .quadmenu-title { + display: none; + } + .price_slider { + margin-bottom: 15px; + } + .price_slider_amount { + text-align: right; + //line-height: @input-height-base; + //font-size: @general_font_font-size * 1px- 2px; + .button { + float:left; + } + } + .ui-slider { + position: relative; + text-align:left; + } + .ui-slider .ui-slider-handle { + position:absolute; + z-index: 2; + width: 10px; + height: 10px; + cursor: pointer; + outline:none; + top: -4px; + //background-color: @bg_20; + &:last-child { + margin-left: -1em; + } + } + .ui-slider .ui-slider-range { + position:absolute; + z-index: 1; + height: 15px; + display:block; + border: 0; + } + + .ui-widget-content { + + } + .ui-slider-horizontal { + height: 2px; + } + .ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; + } + .ui-slider-horizontal .ui-slider-range-min { + left: -1px; + } + .ui-slider-horizontal .ui-slider-range-max { + right: -1px; + } + } + + &.widget_layered_nav { + ul { + li.chosen { + a { + text-decoration: none; + } + } + } + } + + // Other Widgets + // --------------------------------------------------------------------- + + &.widget_edd_cart_widget { + + .edd-cart-number-of-items { + padding: 9px 0; + } + + ul > li { + padding: 9px 0; + + &.edd_subtotal { + margin: 0; + } + } + + } + + &.widget_sci_googlemaps_widget #sci-google-map { + max-width: 100%; + } + + } +} \ No newline at end of file diff --git a/assets/frontend/owlcarousel/owl.carousel.min.css b/assets/frontend/owlcarousel/owl.carousel.min.css new file mode 100644 index 0000000..af7797b --- /dev/null +++ b/assets/frontend/owlcarousel/owl.carousel.min.css @@ -0,0 +1,170 @@ +/** * Owl Carousel v2.3.4 * Copyright 2013-2018 David Deutsch * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE */ +.owl-carousel,.owl-carousel .quadmenu-item-type-panel{ + -webkit-tap-highlight-color:transparent; + position:relative +} +.owl-carousel{ + display:none; + width:100%; + z-index:1 +} +.owl-carousel .owl-stage{ + position:relative; + -ms-touch-action:pan-Y; + touch-action:manipulation; + -moz-backface-visibility:hidden +} +.owl-carousel .owl-stage:after{ + content:"."; + display:block; + clear:both; + visibility:hidden; + line-height:0; + height:0 +} +.owl-carousel .owl-stage-outer{ + position:relative; + overflow:hidden; + -webkit-transform:translate3d(0,0,0) +} +.owl-carousel .quadmenu-item-type-panel,.owl-carousel .owl-wrapper{ + -webkit-backface-visibility:hidden; + -moz-backface-visibility:hidden; + -ms-backface-visibility:hidden; + -webkit-transform:translate3d(0,0,0); + -moz-transform:translate3d(0,0,0); + -ms-transform:translate3d(0,0,0) +} +.owl-carousel .quadmenu-item-type-panel{ + min-height:1px; + float:left; + -webkit-backface-visibility:hidden; + -webkit-touch-callout:none +} +.owl-carousel .quadmenu-item-type-panel img{ + display:block; + width:100% +} +.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{ + display:none +} +.no-js .owl-carousel,.owl-carousel.owl-loaded{ + display:block +} +.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{ + cursor:pointer; + -webkit-user-select:none; + -khtml-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none +} +.owl-carousel .owl-nav button.owl-next,.owl-carousel .owl-nav button.owl-prev,.owl-carousel button.owl-dot{ + background:0 0; + color:inherit; + border:none; + padding:0!important; + font:inherit +} +.owl-carousel.owl-loading{ + opacity:0; + display:block +} +.owl-carousel.owl-hidden{ + opacity:0 +} +.owl-carousel.owl-refresh .quadmenu-item-type-panel{ + visibility:hidden +} +.owl-carousel.owl-drag .quadmenu-item-type-panel{ + -ms-touch-action:pan-y; + touch-action:pan-y; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none +} +.owl-carousel.owl-grab{ + cursor:move; + cursor:grab +} +.owl-carousel.owl-rtl{ + direction:rtl +} +.owl-carousel.owl-rtl .quadmenu-item-type-panel{ + float:right +} +.owl-carousel .animated{ + animation-duration:1s; + animation-fill-mode:both +} +.owl-carousel .owl-animated-in{ + z-index:0 +} +.owl-carousel .owl-animated-out{ + z-index:1 +} +.owl-carousel .fadeOut{ + animation-name:fadeOut +} +@keyframes fadeOut{ + 0%{ + opacity:1 + } + 100%{ + opacity:0 + } +} +.owl-height{ + transition:height .5s ease-in-out +} +.owl-carousel .quadmenu-item-type-panel .owl-lazy{ + opacity:0; + transition:opacity .4s ease +} +.owl-carousel .quadmenu-item-type-panel .owl-lazy:not([src]),.owl-carousel .quadmenu-item-type-panel .owl-lazy[src^=""]{ + max-height:0 +} +.owl-carousel .quadmenu-item-type-panel img.owl-lazy{ + transform-style:preserve-3d +} +.owl-carousel .owl-video-wrapper{ + position:relative; + height:100%; + background:#000 +} +.owl-carousel .owl-video-play-icon{ + position:absolute; + height:80px; + width:80px; + left:50%; + top:50%; + margin-left:-40px; + margin-top:-40px; + background:url(owl.video.play.png) no-repeat; + cursor:pointer; + z-index:1; + -webkit-backface-visibility:hidden; + transition:transform .1s ease +} +.owl-carousel .owl-video-play-icon:hover{ + -ms-transform:scale(1.3,1.3); + transform:scale(1.3,1.3) +} +.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{ + display:none +} +.owl-carousel .owl-video-tn{ + opacity:0; + height:100%; + background-position:center center; + background-repeat:no-repeat; + background-size:contain; + transition:opacity .4s ease +} +.owl-carousel .owl-video-frame{ + position:relative; + z-index:1; + height:100%; + width:100% +} diff --git a/assets/frontend/owlcarousel/owl.carousel.min.js b/assets/frontend/owlcarousel/owl.carousel.min.js new file mode 100644 index 0000000..e85aaa0 --- /dev/null +++ b/assets/frontend/owlcarousel/owl.carousel.min.js @@ -0,0 +1,7 @@ +/** + * Owl Carousel v2.3.4 + * Copyright 2013-2018 David Deutsch + * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE + */ +!function(a, b, c, d){function e(b, c){this.settings = null, this.options = a.extend({}, e.Defaults, c), this.$element = a(b), this._handlers = {}, this._plugins = {}, this._supress = {}, this._current = null, this._speed = null, this._coordinates = [], this._breakpoint = null, this._width = null, this._items = [], this._clones = [], this._mergers = [], this._widths = [], this._invalidated = {}, this._pipe = [], this._drag = {time:null, target:null, pointer:null, stage:{start:null, current:null}, direction:null}, this._states = {current:{}, tags:{initializing:["busy"], animating:["busy"], dragging:["interacting"]}}, a.each(["onResize", "onThrottledResize"], a.proxy(function(b, c){this._handlers[c] = a.proxy(this[c], this)}, this)), a.each(e.Plugins, a.proxy(function(a, b){this._plugins[a.charAt(0).toLowerCase() + a.slice(1)] = new b(this)}, this)), a.each(e.Workers, a.proxy(function(b, c){this._pipe.push({filter:c.filter, run:a.proxy(c.run, this)})}, this)), this.setup(), this.initialize()}e.Defaults = {items:3, loop:!1, center:!1, rewind:!1, checkVisibility:!0, mouseDrag:!0, touchDrag:!0, pullDrag:!0, freeDrag:!1, margin:0, stagePadding:0, merge:!1, mergeFit:!0, autoWidth:!1, startPosition:0, rtl:!1, smartSpeed:250, fluidSpeed:!1, dragEndSpeed:!1, responsive:{}, responsiveRefreshRate:200, responsiveBaseElement:b, fallbackEasing:"swing", slideTransition:"", info:!1, nestedItemSelector:!1, itemElement:"div", stageElement:"div", refreshClass:"owl-refresh", loadedClass:"owl-loaded", loadingClass:"owl-loading", rtlClass:"owl-rtl", responsiveClass:"owl-responsive", dragClass:"owl-drag", itemClass:"owl-item", stageClass:"owl-stage", stageOuterClass:"owl-stage-outer", grabClass:"owl-grab"}, e.Width = {Default:"default", Inner:"inner", Outer:"outer"}, e.Type = {Event:"event", State:"state"}, e.Plugins = {}, e.Workers = [{filter:["width", "settings"], run:function(){this._width = this.$element.width()}}, {filter:["width", "items", "settings"], run:function(a){a.current = this._items && this._items[this.relative(this._current)]}}, {filter:["items", "settings"], run:function(){this.$stage.children(".cloned").remove()}}, {filter:["width", "items", "settings"], run:function(a){var b = this.settings.margin || "", c = !this.settings.autoWidth, d = this.settings.rtl, e = {width:"auto", "margin-left":d?b:"", "margin-right":d?"":b}; !c && this.$stage.children().css(e), a.css = e}}, {filter:["width", "items", "settings"], run:function(a){var b = (this.width() / this.settings.items).toFixed(3) - this.settings.margin, c = null, d = this._items.length, e = !this.settings.autoWidth, f = []; for (a.items = {merge:!1, width:b}; d--; )c = this._mergers[d], c = this.settings.mergeFit && Math.min(c, this.settings.items) || c, a.items.merge = c > 1 || a.items.merge, f[d] = e?b * c:this._items[d].width(); this._widths = f}}, {filter:["items", "settings"], run:function(){var b = [], c = this._items, d = this.settings, e = Math.max(2 * d.items, 4), f = 2 * Math.ceil(c.length / 2), g = d.loop && c.length?d.rewind?e:Math.max(e, f):0, h = "", i = ""; for (g /= 2; g > 0; )b.push(this.normalize(b.length / 2, !0)), h += c[b[b.length - 1]][0].outerHTML, b.push(this.normalize(c.length - 1 - (b.length - 1) / 2, !0)), i = c[b[b.length - 1]][0].outerHTML + i, g -= 1; this._clones = b, a(h).addClass("cloned").appendTo(this.$stage), a(i).addClass("cloned").prependTo(this.$stage)}}, {filter:["width", "items", "settings"], run:function(){for (var a = this.settings.rtl?1: - 1, b = this._clones.length + this._items.length, c = - 1, d = 0, e = 0, f = []; ++c < b; )d = f[c - 1] || 0, e = this._widths[this.relative(c)] + this.settings.margin, f.push(d + e * a); this._coordinates = f}}, {filter:["width", "items", "settings"], run:function(){var a = this.settings.stagePadding, b = this._coordinates, c = {width:Math.ceil(Math.abs(b[b.length - 1])) + 2 * a, "padding-left":a || "", "padding-right":a || ""}; this.$stage.css(c)}}, {filter:["width", "items", "settings"], run:function(a){var b = this._coordinates.length, c = !this.settings.autoWidth, d = this.$stage.children(); if (c && a.items.merge)for (; b--; )a.css.width = this._widths[this.relative(b)], d.eq(b).css(a.css); else c && (a.css.width = a.items.width, d.css(a.css))}}, {filter:["items"], run:function(){this._coordinates.length < 1 && this.$stage.removeAttr("style")}}, {filter:["width", "items", "settings"], run:function(a){a.current = a.current?this.$stage.children().index(a.current):0, a.current = Math.max(this.minimum(), Math.min(this.maximum(), a.current)), this.reset(a.current)}}, {filter:["position"], run:function(){this.animate(this.coordinates(this._current))}}, {filter:["width", "position", "items", "settings"], run:function(){var a, b, c, d, e = this.settings.rtl?1: - 1, f = 2 * this.settings.stagePadding, g = this.coordinates(this.current()) + f, h = g + this.width() * e, i = []; for (c = 0, d = this._coordinates.length; c < d; c++)a = this._coordinates[c - 1] || 0, b = Math.abs(this._coordinates[c]) + f * e, (this.op(a, "<=", g) && this.op(a, ">", h) || this.op(b, "<", g) && this.op(b, ">", h)) && i.push(c); this.$stage.children(".active").removeClass("active"), this.$stage.children(":eq(" + i.join("), :eq(") + ")").addClass("active"), this.$stage.children(".center").removeClass("center"), this.settings.center && this.$stage.children().eq(this.current()).addClass("center")}}], e.prototype.initializeStage = function(){this.$stage = this.$element.find("." + this.settings.stageClass), this.$stage.length || (this.$element.addClass(this.options.loadingClass), this.$stage = a("<" + this.settings.stageElement + ">", {class:this.settings.stageClass}).wrap(a("
", {class:this.settings.stageOuterClass})), this.$element.append(this.$stage.parent()))}, e.prototype.initializeItems = function(){var b = this.$element.find(".owl-item"); if (b.length)return this._items = b.get().map(function(b){return a(b)}), this._mergers = this._items.map(function(){return 1}), void this.refresh(); this.replace(this.$element.children().not(this.$stage.parent())), this.isVisible()?this.refresh():this.invalidate("width"), this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass)}, e.prototype.initialize = function(){if (this.enter("initializing"), this.trigger("initialize"), this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl), this.settings.autoWidth && !this.is("pre-loading")){var a, b, c; a = this.$element.find("img"), b = this.settings.nestedItemSelector?"." + this.settings.nestedItemSelector:d, c = this.$element.children(b).width(), a.length && c <= 0 && this.preloadAutoWidthImages(a)}this.initializeStage(), this.initializeItems(), this.registerEventHandlers(), this.leave("initializing"), this.trigger("initialized")}, e.prototype.isVisible = function(){return!this.settings.checkVisibility || this.$element.is(":visible")}, e.prototype.setup = function(){var b = this.viewport(), c = this.options.responsive, d = - 1, e = null; c?(a.each(c, function(a){a <= b && a > d && (d = Number(a))}), e = a.extend({}, this.options, c[d]), "function" == typeof e.stagePadding && (e.stagePadding = e.stagePadding()), delete e.responsive, e.responsiveClass && this.$element.attr("class", this.$element.attr("class").replace(new RegExp("(" + this.options.responsiveClass + "-)\\S+\\s", "g"), "$1" + d))):e = a.extend({}, this.options), this.trigger("change", {property:{name:"settings", value:e}}), this._breakpoint = d, this.settings = e, this.invalidate("settings"), this.trigger("changed", {property:{name:"settings", value:this.settings}})}, e.prototype.optionsLogic = function(){this.settings.autoWidth && (this.settings.stagePadding = !1, this.settings.merge = !1)}, e.prototype.prepare = function(b){var c = this.trigger("prepare", {content:b}); return c.data || (c.data = a("<" + this.settings.itemElement + "/>").addClass(this.options.itemClass).append(b)), this.trigger("prepared", {content:c.data}), c.data}, e.prototype.update = function(){for (var b = 0, c = this._pipe.length, d = a.proxy(function(a){return this[a]}, this._invalidated), e = {}; b < c; )(this._invalidated.all || a.grep(this._pipe[b].filter, d).length > 0) && this._pipe[b].run(e), b++; this._invalidated = {}, !this.is("valid") && this.enter("valid")}, e.prototype.width = function(a){switch (a = a || e.Width.Default){case e.Width.Inner:case e.Width.Outer:return this._width; default:return this._width - 2 * this.settings.stagePadding + this.settings.margin}}, e.prototype.refresh = function(){this.enter("refreshing"), this.trigger("refresh"), this.setup(), this.optionsLogic(), this.$element.addClass(this.options.refreshClass), this.update(), this.$element.removeClass(this.options.refreshClass), this.leave("refreshing"), this.trigger("refreshed")}, e.prototype.onThrottledResize = function(){b.clearTimeout(this.resizeTimer), this.resizeTimer = b.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate)}, e.prototype.onResize = function(){return!!this._items.length && (this._width !== this.$element.width() && (!!this.isVisible() && (this.enter("resizing"), this.trigger("resize").isDefaultPrevented()?(this.leave("resizing"), !1):(this.invalidate("width"), this.refresh(), this.leave("resizing"), void this.trigger("resized")))))}, e.prototype.registerEventHandlers = function(){a.support.transition && this.$stage.on(a.support.transition.end + ".owl.core", a.proxy(this.onTransitionEnd, this)), !1 !== this.settings.responsive && this.on(b, "resize", this._handlers.onThrottledResize), this.settings.mouseDrag && (this.$element.addClass(this.options.dragClass), this.$stage.on("mousedown.owl.core", a.proxy(this.onDragStart, this)), this.$stage.on("dragstart.owl.core selectstart.owl.core", function(){return!1})), this.settings.touchDrag && (this.$stage.on("touchstart.owl.core", a.proxy(this.onDragStart, this)), this.$stage.on("touchcancel.owl.core", a.proxy(this.onDragEnd, this)))}, e.prototype.onDragStart = function(b){var d = null; 3 !== b.which && (a.support.transform?(d = this.$stage.css("transform").replace(/.*\(|\)| /g, "").split(","), d = {x:d[16 === d.length?12:4], y:d[16 === d.length?13:5]}):(d = this.$stage.position(), d = {x:this.settings.rtl?d.left + this.$stage.width() - this.width() + this.settings.margin:d.left, y:d.top}), this.is("animating") && (a.support.transform?this.animate(d.x):this.$stage.stop(), this.invalidate("position")), this.$element.toggleClass(this.options.grabClass, "mousedown" === b.type), this.speed(0), this._drag.time = (new Date).getTime(), this._drag.target = a(b.target), this._drag.stage.start = d, this._drag.stage.current = d, this._drag.pointer = this.pointer(b), a(c).on("mouseup.owl.core touchend.owl.core", a.proxy(this.onDragEnd, this)), a(c).one("mousemove.owl.core touchmove.owl.core", a.proxy(function(b){var d = this.difference(this._drag.pointer, this.pointer(b)); a(c).on("mousemove.owl.core touchmove.owl.core", a.proxy(this.onDragMove, this)), Math.abs(d.x) < Math.abs(d.y) && this.is("valid") || (b.preventDefault(), this.enter("dragging"), this.trigger("drag"))}, this)))}, e.prototype.onDragMove = function(a){var b = null, c = null, d = null, e = this.difference(this._drag.pointer, this.pointer(a)), f = this.difference(this._drag.stage.start, e); this.is("dragging") && (a.preventDefault(), this.settings.loop?(b = this.coordinates(this.minimum()), c = this.coordinates(this.maximum() + 1) - b, f.x = ((f.x - b) % c + c) % c + b):(b = this.settings.rtl?this.coordinates(this.maximum()):this.coordinates(this.minimum()), c = this.settings.rtl?this.coordinates(this.minimum()):this.coordinates(this.maximum()), d = this.settings.pullDrag? - 1 * e.x / 5:0, f.x = Math.max(Math.min(f.x, b + d), c + d)), this._drag.stage.current = f, this.animate(f.x))}, e.prototype.onDragEnd = function(b){var d = this.difference(this._drag.pointer, this.pointer(b)), e = this._drag.stage.current, f = d.x > 0 ^ this.settings.rtl?"left":"right"; a(c).off(".owl.core"), this.$element.removeClass(this.options.grabClass), (0 !== d.x && this.is("dragging") || !this.is("valid")) && (this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed), this.current(this.closest(e.x, 0 !== d.x?f:this._drag.direction)), this.invalidate("position"), this.update(), this._drag.direction = f, (Math.abs(d.x) > 3 || (new Date).getTime() - this._drag.time > 300) && this._drag.target.one("click.owl.core", function(){return!1})), this.is("dragging") && (this.leave("dragging"), this.trigger("dragged"))}, e.prototype.closest = function(b, c){var e = - 1, f = 30, g = this.width(), h = this.coordinates(); return this.settings.freeDrag || a.each(h, a.proxy(function(a, i){return"left" === c && b > i - f && b < i + f?e = a:"right" === c && b > i - g - f && b < i - g + f?e = a + 1:this.op(b, "<", i) && this.op(b, ">", h[a + 1] !== d?h[a + 1]:i - g) && (e = "left" === c?a + 1:a), - 1 === e}, this)), this.settings.loop || (this.op(b, ">", h[this.minimum()])?e = b = this.minimum():this.op(b, "<", h[this.maximum()]) && (e = b = this.maximum())), e}, e.prototype.animate = function(b){var c = this.speed() > 0; this.is("animating") && this.onTransitionEnd(), c && (this.enter("animating"), this.trigger("translate")), a.support.transform3d && a.support.transition?this.$stage.css({transform:"translate3d(" + b + "px,0px,0px)", transition:this.speed() / 1e3 + "s" + (this.settings.slideTransition?" " + this.settings.slideTransition:"")}):c?this.$stage.animate({left:b + "px"}, this.speed(), this.settings.fallbackEasing, a.proxy(this.onTransitionEnd, this)):this.$stage.css({left:b + "px"})}, e.prototype.is = function(a){return this._states.current[a] && this._states.current[a] > 0}, e.prototype.current = function(a){if (a === d)return this._current; if (0 === this._items.length)return d; if (a = this.normalize(a), this._current !== a){var b = this.trigger("change", {property:{name:"position", value:a}}); b.data !== d && (a = this.normalize(b.data)), this._current = a, this.invalidate("position"), this.trigger("changed", {property:{name:"position", value:this._current}})}return this._current}, e.prototype.invalidate = function(b){return"string" === a.type(b) && (this._invalidated[b] = !0, this.is("valid") && this.leave("valid")), a.map(this._invalidated, function(a, b){return b})}, e.prototype.reset = function(a){(a = this.normalize(a)) !== d && (this._speed = 0, this._current = a, this.suppress(["translate", "translated"]), this.animate(this.coordinates(a)), this.release(["translate", "translated"]))}, e.prototype.normalize = function(a, b){var c = this._items.length, e = b?0:this._clones.length; return!this.isNumeric(a) || c < 1?a = d:(a < 0 || a >= c + e) && (a = ((a - e / 2) % c + c) % c + e / 2), a}, e.prototype.relative = function(a){return a -= this._clones.length / 2, this.normalize(a, !0)}, e.prototype.maximum = function(a){var b, c, d, e = this.settings, f = this._coordinates.length; if (e.loop)f = this._clones.length / 2 + this._items.length - 1; else if (e.autoWidth || e.merge){if (b = this._items.length)for (c = this._items[--b].width(), d = this.$element.width(); b-- && !((c += this._items[b].width() + this.settings.margin) > d); ); f = b + 1} else f = e.center?this._items.length - 1:this._items.length - e.items; return a && (f -= this._clones.length / 2), Math.max(f, 0)}, e.prototype.minimum = function(a){return a?0:this._clones.length / 2}, e.prototype.items = function(a){return a === d?this._items.slice():(a = this.normalize(a, !0), this._items[a])}, e.prototype.mergers = function(a){return a === d?this._mergers.slice():(a = this.normalize(a, !0), this._mergers[a])}, e.prototype.clones = function(b){var c = this._clones.length / 2, e = c + this._items.length, f = function(a){return a % 2 == 0?e + a / 2:c - (a + 1) / 2}; return b === d?a.map(this._clones, function(a, b){return f(b)}):a.map(this._clones, function(a, c){return a === b?f(c):null})}, e.prototype.speed = function(a){return a !== d && (this._speed = a), this._speed}, e.prototype.coordinates = function(b){var c, e = 1, f = b - 1; return b === d?a.map(this._coordinates, a.proxy(function(a, b){return this.coordinates(b)}, this)):(this.settings.center?(this.settings.rtl && (e = - 1, f = b + 1), c = this._coordinates[b], c += (this.width() - c + (this._coordinates[f] || 0)) / 2 * e):c = this._coordinates[f] || 0, c = Math.ceil(c))}, e.prototype.duration = function(a, b, c){return 0 === c?0:Math.min(Math.max(Math.abs(b - a), 1), 6) * Math.abs(c || this.settings.smartSpeed)}, e.prototype.to = function(a, b){var c = this.current(), d = null, e = a - this.relative(c), f = (e > 0) - (e < 0), g = this._items.length, h = this.minimum(), i = this.maximum(); this.settings.loop?(!this.settings.rewind && Math.abs(e) > g / 2 && (e += - 1 * f * g), a = c + e, (d = ((a - h) % g + g) % g + h) !== a && d - e <= i && d - e > 0 && (c = d - e, a = d, this.reset(c))):this.settings.rewind?(i += 1, a = (a % i + i) % i):a = Math.max(h, Math.min(i, a)), this.speed(this.duration(c, a, b)), this.current(a), this.isVisible() && this.update()}, e.prototype.next = function(a){a = a || !1, this.to(this.relative(this.current()) + 1, a)}, e.prototype.prev = function(a){a = a || !1, this.to(this.relative(this.current()) - 1, a)}, e.prototype.onTransitionEnd = function(a){if (a !== d && (a.stopPropagation(), (a.target || a.srcElement || a.originalTarget) !== this.$stage.get(0)))return!1; this.leave("animating"), this.trigger("translated")}, e.prototype.viewport = function(){var d; return this.options.responsiveBaseElement !== b?d = a(this.options.responsiveBaseElement).width():b.innerWidth?d = b.innerWidth:c.documentElement && c.documentElement.clientWidth?d = c.documentElement.clientWidth:console.warn("cannot detect viewport width."), d}, e.prototype.replace = function(b){this.$stage.empty(), this._items = [], b && (b = b instanceof jQuery?b:a(b)), this.settings.nestedItemSelector && (b = b.find("." + this.settings.nestedItemSelector)), b.filter(function(){return 1 === this.nodeType}).each(a.proxy(function(a, b){b = this.prepare(b), this.$stage.append(b), this._items.push(b), this._mergers.push(1 * b.find("[data-merge]").addBack("[data-merge]").attr("data-merge") || 1)}, this)), this.reset(this.isNumeric(this.settings.startPosition)?this.settings.startPosition:0), this.invalidate("items")}, e.prototype.add = function(b, c){var e = this.relative(this._current); c = c === d?this._items.length:this.normalize(c, !0), b = b instanceof jQuery?b:a(b), this.trigger("add", {content:b, position:c}), b = this.prepare(b), 0 === this._items.length || c === this._items.length?(0 === this._items.length && this.$stage.append(b), 0 !== this._items.length && this._items[c - 1].after(b), this._items.push(b), this._mergers.push(1 * b.find("[data-merge]").addBack("[data-merge]").attr("data-merge") || 1)):(this._items[c].before(b), this._items.splice(c, 0, b), this._mergers.splice(c, 0, 1 * b.find("[data-merge]").addBack("[data-merge]").attr("data-merge") || 1)), this._items[e] && this.reset(this._items[e].index()), this.invalidate("items"), this.trigger("added", {content:b, position:c})}, e.prototype.remove = function(a){(a = this.normalize(a, !0)) !== d && (this.trigger("remove", {content:this._items[a], position:a}), this._items[a].remove(), this._items.splice(a, 1), this._mergers.splice(a, 1), this.invalidate("items"), this.trigger("removed", {content:null, position:a}))}, e.prototype.preloadAutoWidthImages = function(b){b.each(a.proxy(function(b, c){this.enter("pre-loading"), c = a(c), a(new Image).one("load", a.proxy(function(a){c.attr("src", a.target.src), c.css("opacity", 1), this.leave("pre-loading"), !this.is("pre-loading") && !this.is("initializing") && this.refresh()}, this)).attr("src", c.attr("src") || c.attr("data-src") || c.attr("data-src-retina"))}, this))}, e.prototype.destroy = function(){this.$element.off(".owl.core"), this.$stage.off(".owl.core"), a(c).off(".owl.core"), !1 !== this.settings.responsive && (b.clearTimeout(this.resizeTimer), this.off(b, "resize", this._handlers.onThrottledResize)); for (var d in this._plugins)this._plugins[d].destroy(); this.$stage.children(".cloned").remove(), this.$stage.unwrap(), this.$stage.children().contents().unwrap(), this.$stage.children().unwrap(), this.$stage.remove(), this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class", this.$element.attr("class").replace(new RegExp(this.options.responsiveClass + "-\\S+\\s", "g"), "")).removeData("owl.carousel")}, e.prototype.op = function(a, b, c){var d = this.settings.rtl; switch (b){case"<":return d?a > c:a < c; case">":return d?a < c:a > c; case">=":return d?a <= c:a >= c; case"<=":return d?a >= c:a <= c}}, e.prototype.on = function(a, b, c, d){a.addEventListener?a.addEventListener(b, c, d):a.attachEvent && a.attachEvent("on" + b, c)}, e.prototype.off = function(a, b, c, d){a.removeEventListener?a.removeEventListener(b, c, d):a.detachEvent && a.detachEvent("on" + b, c)}, e.prototype.trigger = function(b, c, d, f, g){var h = {item:{count:this._items.length, index:this.current()}}, i = a.camelCase(a.grep(["on", b, d], function(a){return a}).join("-").toLowerCase()), j = a.Event([b, "owl", d || "carousel"].join(".").toLowerCase(), a.extend({relatedTarget:this}, h, c)); return this._supress[b] || (a.each(this._plugins, function(a, b){b.onTrigger && b.onTrigger(j)}), this.register({type:e.Type.Event, name:b}), this.$element.trigger(j), this.settings && "function" == typeof this.settings[i] && this.settings[i].call(this, j)), j}, e.prototype.enter = function(b){a.each([b].concat(this._states.tags[b] || []), a.proxy(function(a, b){this._states.current[b] === d && (this._states.current[b] = 0), this._states.current[b]++}, this))}, e.prototype.leave = function(b){a.each([b].concat(this._states.tags[b] || []), a.proxy(function(a, b){this._states.current[b]--}, this))}, e.prototype.register = function(b){if (b.type === e.Type.Event){if (a.event.special[b.name] || (a.event.special[b.name] = {}), !a.event.special[b.name].owl){var c = a.event.special[b.name]._default; a.event.special[b.name]._default = function(a){return!c || !c.apply || a.namespace && - 1 !== a.namespace.indexOf("owl")?a.namespace && a.namespace.indexOf("owl") > - 1:c.apply(this, arguments)}, a.event.special[b.name].owl = !0}} else b.type === e.Type.State && (this._states.tags[b.name]?this._states.tags[b.name] = this._states.tags[b.name].concat(b.tags):this._states.tags[b.name] = b.tags, this._states.tags[b.name] = a.grep(this._states.tags[b.name], a.proxy(function(c, d){return a.inArray(c, this._states.tags[b.name]) === d}, this)))}, e.prototype.suppress = function(b){a.each(b, a.proxy(function(a, b){this._supress[b] = !0}, this))}, e.prototype.release = function(b){a.each(b, a.proxy(function(a, b){delete this._supress[b]}, this))}, e.prototype.pointer = function(a){var c = {x:null, y:null}; return a = a.originalEvent || a || b.event, a = a.touches && a.touches.length?a.touches[0]:a.changedTouches && a.changedTouches.length?a.changedTouches[0]:a, a.pageX?(c.x = a.pageX, c.y = a.pageY):(c.x = a.clientX, c.y = a.clientY), c}, e.prototype.isNumeric = function(a){return!isNaN(parseFloat(a))}, e.prototype.difference = function(a, b){return{x:a.x - b.x, y:a.y - b.y}}, a.fn.owlCarousel = function(b){var c = Array.prototype.slice.call(arguments, 1); return this.each(function(){var d = a(this), f = d.data("owl.carousel"); f || (f = new e(this, "object" == typeof b && b), d.data("owl.carousel", f), a.each(["next", "prev", "to", "destroy", "refresh", "replace", "add", "remove"], function(b, c){f.register({type:e.Type.Event, name:c}), f.$element.on(c + ".owl.carousel.core", a.proxy(function(a){a.namespace && a.relatedTarget !== this && (this.suppress([c]), f[c].apply(this, [].slice.call(arguments, 1)), this.release([c]))}, f))})), "string" == typeof b && "_" !== b.charAt(0) && f[b].apply(f, c)})}, a.fn.owlCarousel.Constructor = e}(window.Zepto || window.jQuery, window, document), function(a, b, c, d){var e = function(b){this._core = b, this._interval = null, this._visible = null, this._handlers = {"initialized.owl.carousel":a.proxy(function(a){a.namespace && this._core.settings.autoRefresh && this.watch()}, this)}, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers)}; e.Defaults = {autoRefresh:!0, autoRefreshInterval:500}, e.prototype.watch = function(){this._interval || (this._visible = this._core.isVisible(), this._interval = b.setInterval(a.proxy(this.refresh, this), this._core.settings.autoRefreshInterval))}, e.prototype.refresh = function(){this._core.isVisible() !== this._visible && (this._visible = !this._visible, this._core.$element.toggleClass("owl-hidden", !this._visible), this._visible && this._core.invalidate("width") && this._core.refresh())}, e.prototype.destroy = function(){var a, c; b.clearInterval(this._interval); for (a in this._handlers)this._core.$element.off(a, this._handlers[a]); for (c in Object.getOwnPropertyNames(this))"function" != typeof this[c] && (this[c] = null)}, a.fn.owlCarousel.Constructor.Plugins.AutoRefresh = e}(window.Zepto || window.jQuery, window, document), function(a, b, c, d){var e = function(b){this._core = b, this._loaded = [], this._handlers = {"initialized.owl.carousel change.owl.carousel resized.owl.carousel":a.proxy(function(b){if (b.namespace && this._core.settings && this._core.settings.lazyLoad && (b.property && "position" == b.property.name || "initialized" == b.type)){var c = this._core.settings, e = c.center && Math.ceil(c.items / 2) || c.items, f = c.center && - 1 * e || 0, g = (b.property && b.property.value !== d?b.property.value:this._core.current()) + f, h = this._core.clones().length, i = a.proxy(function(a, b){this.load(b)}, this); for (c.lazyLoadEager > 0 && (e += c.lazyLoadEager, c.loop && (g -= c.lazyLoadEager, e++)); f++ < e; )this.load(h / 2 + this._core.relative(g)), h && a.each(this._core.clones(this._core.relative(g)), i), g++}}, this)}, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers)}; e.Defaults = {lazyLoad:!1, lazyLoadEager:0}, e.prototype.load = function(c){var d = this._core.$stage.children().eq(c), e = d && d.find(".owl-lazy"); !e || a.inArray(d.get(0), this._loaded) > - 1 || (e.each(a.proxy(function(c, d){var e, f = a(d), g = b.devicePixelRatio > 1 && f.attr("data-src-retina") || f.attr("data-src") || f.attr("data-srcset"); this._core.trigger("load", {element:f, url:g}, "lazy"), f.is("img")?f.one("load.owl.lazy", a.proxy(function(){f.css("opacity", 1), this._core.trigger("loaded", {element:f, url:g}, "lazy")}, this)).attr("src", g):f.is("source")?f.one("load.owl.lazy", a.proxy(function(){this._core.trigger("loaded", {element:f, url:g}, "lazy")}, this)).attr("srcset", g):(e = new Image, e.onload = a.proxy(function(){f.css({"background-image":'url("' + g + '")', opacity:"1"}), this._core.trigger("loaded", {element:f, url:g}, "lazy")}, this), e.src = g)}, this)), this._loaded.push(d.get(0)))}, e.prototype.destroy = function(){var a, b; for (a in this.handlers)this._core.$element.off(a, this.handlers[a]); for (b in Object.getOwnPropertyNames(this))"function" != typeof this[b] && (this[b] = null)}, a.fn.owlCarousel.Constructor.Plugins.Lazy = e}(window.Zepto || window.jQuery, window, document), function(a, b, c, d){var e = function(c){this._core = c, this._previousHeight = null, this._handlers = {"initialized.owl.carousel refreshed.owl.carousel":a.proxy(function(a){a.namespace && this._core.settings.autoHeight && this.update()}, this), "changed.owl.carousel":a.proxy(function(a){a.namespace && this._core.settings.autoHeight && "position" === a.property.name && this.update()}, this), "loaded.owl.lazy":a.proxy(function(a){a.namespace && this._core.settings.autoHeight && a.element.closest("." + this._core.settings.itemClass).index() === this._core.current() && this.update()}, this)}, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers), this._intervalId = null; var d = this; a(b).on("load", function(){d._core.settings.autoHeight && d.update()}), a(b).resize(function(){d._core.settings.autoHeight && (null != d._intervalId && clearTimeout(d._intervalId), d._intervalId = setTimeout(function(){d.update()}, 250))})}; e.Defaults = {autoHeight:!1, autoHeightClass:"owl-height"}, e.prototype.update = function(){var b = this._core._current, c = b + this._core.settings.items, d = this._core.settings.lazyLoad, e = this._core.$stage.children().toArray().slice(b, c), f = [], g = 0; a.each(e, function(b, c){f.push(a(c).height())}), g = Math.max.apply(null, f), g <= 1 && d && this._previousHeight && (g = this._previousHeight), this._previousHeight = g, this._core.$stage.parent().height(g).addClass(this._core.settings.autoHeightClass)}, e.prototype.destroy = function(){var a, b; for (a in this._handlers)this._core.$element.off(a, this._handlers[a]); for (b in Object.getOwnPropertyNames(this))"function" != typeof this[b] && (this[b] = null)}, a.fn.owlCarousel.Constructor.Plugins.AutoHeight = e}(window.Zepto || window.jQuery, window, document), function(a, b, c, d){var e = function(b){this._core = b, this._videos = {}, this._playing = null, this._handlers = {"initialized.owl.carousel":a.proxy(function(a){a.namespace && this._core.register({type:"state", name:"playing", tags:["interacting"]})}, this), "resize.owl.carousel":a.proxy(function(a){a.namespace && this._core.settings.video && this.isInFullScreen() && a.preventDefault()}, this), "refreshed.owl.carousel":a.proxy(function(a){a.namespace && this._core.is("resizing") && this._core.$stage.find(".cloned .owl-video-frame").remove()}, this), "changed.owl.carousel":a.proxy(function(a){a.namespace && "position" === a.property.name && this._playing && this.stop()}, this), "prepared.owl.carousel":a.proxy(function(b){if (b.namespace){var c = a(b.content).find(".owl-video"); c.length && (c.css("display", "none"), this.fetch(c, a(b.content)))}}, this)}, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers), this._core.$element.on("click.owl.video", ".owl-video-play-icon", a.proxy(function(a){this.play(a)}, this))}; e.Defaults = {video:!1, videoHeight:!1, videoWidth:!1}, e.prototype.fetch = function(a, b){var c = function(){return a.attr("data-vimeo-id")?"vimeo":a.attr("data-vzaar-id")?"vzaar":"youtube"}(), d = a.attr("data-vimeo-id") || a.attr("data-youtube-id") || a.attr("data-vzaar-id"), e = a.attr("data-width") || this._core.settings.videoWidth, f = a.attr("data-height") || this._core.settings.videoHeight, g = a.attr("href"); if (!g)throw new Error("Missing video URL."); if (d = g.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com|be\-nocookie\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/), d[3].indexOf("youtu") > - 1)c = "youtube"; else if (d[3].indexOf("vimeo") > - 1)c = "vimeo"; else{if (!(d[3].indexOf("vzaar") > - 1))throw new Error("Video URL not supported."); c = "vzaar"}d = d[6], this._videos[g] = {type:c, id:d, width:e, height:f}, b.attr("data-video", g), this.thumbnail(a, this._videos[g])}, e.prototype.thumbnail = function(b, c){var d, e, f, g = c.width && c.height?"width:" + c.width + "px;height:" + c.height + "px;":"", h = b.find("img"), i = "src", j = "", k = this._core.settings, l = function(c){e = '
', d = k.lazyLoad?a("
", {class:"owl-video-tn " + j, srcType:c}):a("
", {class:"owl-video-tn", style:"opacity:1;background-image:url(" + c + ")"}), b.after(d), b.after(e)}; if (b.wrap(a("
", {class:"owl-video-wrapper", style:g})), this._core.settings.lazyLoad && (i = "data-src", j = "owl-lazy"), h.length)return l(h.attr(i)), h.remove(), !1; "youtube" === c.type?(f = "//img.youtube.com/vi/" + c.id + "/hqdefault.jpg", l(f)):"vimeo" === c.type?a.ajax({type:"GET", url:"//vimeo.com/api/v2/video/" + c.id + ".json", jsonp:"callback", dataType:"jsonp", success:function(a){f = a[0].thumbnail_large, l(f)}}):"vzaar" === c.type && a.ajax({type:"GET", url:"//vzaar.com/api/videos/" + c.id + ".json", jsonp:"callback", dataType:"jsonp", success:function(a){f = a.framegrab_url, l(f)}})}, e.prototype.stop = function(){this._core.trigger("stop", null, "video"), this._playing.find(".owl-video-frame").remove(), this._playing.removeClass("owl-video-playing"), this._playing = null, this._core.leave("playing"), this._core.trigger("stopped", null, "video")}, e.prototype.play = function(b){var c, d = a(b.target), e = d.closest("." + this._core.settings.itemClass), f = this._videos[e.attr("data-video")], g = f.width || "100%", h = f.height || this._core.$stage.height(); this._playing || (this._core.enter("playing"), this._core.trigger("play", null, "video"), e = this._core.items(this._core.relative(e.index())), this._core.reset(e.index()), c = a(''), c.attr("height", h), c.attr("width", g), "youtube" === f.type?c.attr("src", "//www.youtube.com/embed/" + f.id + "?autoplay=1&rel=0&v=" + f.id):"vimeo" === f.type?c.attr("src", "//player.vimeo.com/video/" + f.id + "?autoplay=1"):"vzaar" === f.type && c.attr("src", "//view.vzaar.com/" + f.id + "/player?autoplay=true"), a(c).wrap('
').insertAfter(e.find(".owl-video")), this._playing = e.addClass("owl-video-playing"))}, e.prototype.isInFullScreen = function(){var b = c.fullscreenElement || c.mozFullScreenElement || c.webkitFullscreenElement; return b && a(b).parent().hasClass("owl-video-frame")}, e.prototype.destroy = function(){var a, b; this._core.$element.off("click.owl.video"); for (a in this._handlers)this._core.$element.off(a, this._handlers[a]); for (b in Object.getOwnPropertyNames(this))"function" != typeof this[b] && (this[b] = null)}, a.fn.owlCarousel.Constructor.Plugins.Video = e}(window.Zepto || window.jQuery, window, document), function(a, b, c, d){var e = function(b){this.core = b, this.core.options = a.extend({}, e.Defaults, this.core.options), this.swapping = !0, this.previous = d, this.next = d, this.handlers = {"change.owl.carousel":a.proxy(function(a){a.namespace && "position" == a.property.name && (this.previous = this.core.current(), this.next = a.property.value)}, this), "drag.owl.carousel dragged.owl.carousel translated.owl.carousel":a.proxy(function(a){a.namespace && (this.swapping = "translated" == a.type)}, this), "translate.owl.carousel":a.proxy(function(a){a.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn) && this.swap()}, this)}, this.core.$element.on(this.handlers)}; e.Defaults = {animateOut:!1, + animateIn:!1}, e.prototype.swap = function(){if (1 === this.core.settings.items && a.support.animation && a.support.transition){this.core.speed(0); var b, c = a.proxy(this.clear, this), d = this.core.$stage.children().eq(this.previous), e = this.core.$stage.children().eq(this.next), f = this.core.settings.animateIn, g = this.core.settings.animateOut; this.core.current() !== this.previous && (g && (b = this.core.coordinates(this.previous) - this.core.coordinates(this.next), d.one(a.support.animation.end, c).css({left:b + "px"}).addClass("animated owl-animated-out").addClass(g)), f && e.one(a.support.animation.end, c).addClass("animated owl-animated-in").addClass(f))}}, e.prototype.clear = function(b){a(b.target).css({left:""}).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut), this.core.onTransitionEnd()}, e.prototype.destroy = function(){var a, b; for (a in this.handlers)this.core.$element.off(a, this.handlers[a]); for (b in Object.getOwnPropertyNames(this))"function" != typeof this[b] && (this[b] = null)}, a.fn.owlCarousel.Constructor.Plugins.Animate = e}(window.Zepto || window.jQuery, window, document), function(a, b, c, d){var e = function(b){this._core = b, this._call = null, this._time = 0, this._timeout = 0, this._paused = !0, this._handlers = {"changed.owl.carousel":a.proxy(function(a){a.namespace && "settings" === a.property.name?this._core.settings.autoplay?this.play():this.stop():a.namespace && "position" === a.property.name && this._paused && (this._time = 0)}, this), "initialized.owl.carousel":a.proxy(function(a){a.namespace && this._core.settings.autoplay && this.play()}, this), "play.owl.autoplay":a.proxy(function(a, b, c){a.namespace && this.play(b, c)}, this), "stop.owl.autoplay":a.proxy(function(a){a.namespace && this.stop()}, this), "mouseover.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause && this._core.is("rotating") && this.pause()}, this), "mouseleave.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause && this._core.is("rotating") && this.play()}, this), "touchstart.owl.core":a.proxy(function(){this._core.settings.autoplayHoverPause && this._core.is("rotating") && this.pause()}, this), "touchend.owl.core":a.proxy(function(){this._core.settings.autoplayHoverPause && this.play()}, this)}, this._core.$element.on(this._handlers), this._core.options = a.extend({}, e.Defaults, this._core.options)}; e.Defaults = {autoplay:!1, autoplayTimeout:5e3, autoplayHoverPause:!1, autoplaySpeed:!1}, e.prototype._next = function(d){this._call = b.setTimeout(a.proxy(this._next, this, d), this._timeout * (Math.round(this.read() / this._timeout) + 1) - this.read()), this._core.is("interacting") || c.hidden || this._core.next(d || this._core.settings.autoplaySpeed)}, e.prototype.read = function(){return(new Date).getTime() - this._time}, e.prototype.play = function(c, d){var e; this._core.is("rotating") || this._core.enter("rotating"), c = c || this._core.settings.autoplayTimeout, e = Math.min(this._time % (this._timeout || c), c), this._paused?(this._time = this.read(), this._paused = !1):b.clearTimeout(this._call), this._time += this.read() % c - e, this._timeout = c, this._call = b.setTimeout(a.proxy(this._next, this, d), c - e)}, e.prototype.stop = function(){this._core.is("rotating") && (this._time = 0, this._paused = !0, b.clearTimeout(this._call), this._core.leave("rotating"))}, e.prototype.pause = function(){this._core.is("rotating") && !this._paused && (this._time = this.read(), this._paused = !0, b.clearTimeout(this._call))}, e.prototype.destroy = function(){var a, b; this.stop(); for (a in this._handlers)this._core.$element.off(a, this._handlers[a]); for (b in Object.getOwnPropertyNames(this))"function" != typeof this[b] && (this[b] = null)}, a.fn.owlCarousel.Constructor.Plugins.autoplay = e}(window.Zepto || window.jQuery, window, document), function(a, b, c, d){"use strict"; var e = function(b){this._core = b, this._initialized = !1, this._pages = [], this._controls = {}, this._templates = [], this.$element = this._core.$element, this._overrides = {next:this._core.next, prev:this._core.prev, to:this._core.to}, this._handlers = {"prepared.owl.carousel":a.proxy(function(b){b.namespace && this._core.settings.dotsData && this._templates.push('
' + a(b.content).find("[data-dot]").addBack("[data-dot]").attr("data-dot") + "
")}, this), "added.owl.carousel":a.proxy(function(a){a.namespace && this._core.settings.dotsData && this._templates.splice(a.position, 0, this._templates.pop())}, this), "remove.owl.carousel":a.proxy(function(a){a.namespace && this._core.settings.dotsData && this._templates.splice(a.position, 1)}, this), "changed.owl.carousel":a.proxy(function(a){a.namespace && "position" == a.property.name && this.draw()}, this), "initialized.owl.carousel":a.proxy(function(a){a.namespace && !this._initialized && (this._core.trigger("initialize", null, "navigation"), this.initialize(), this.update(), this.draw(), this._initialized = !0, this._core.trigger("initialized", null, "navigation"))}, this), "refreshed.owl.carousel":a.proxy(function(a){a.namespace && this._initialized && (this._core.trigger("refresh", null, "navigation"), this.update(), this.draw(), this._core.trigger("refreshed", null, "navigation"))}, this)}, this._core.options = a.extend({}, e.Defaults, this._core.options), this.$element.on(this._handlers)}; e.Defaults = {nav:!1, navText:['', ''], navSpeed:!1, navElement:'button type="button" role="presentation"', navContainer:!1, navContainerClass:"owl-nav", navClass:["owl-prev", "owl-next"], slideBy:1, dotClass:"owl-dot", dotsClass:"owl-dots", dots:!0, dotsEach:!1, dotsData:!1, dotsSpeed:!1, dotsContainer:!1}, e.prototype.initialize = function(){var b, c = this._core.settings; this._controls.$relative = (c.navContainer?a(c.navContainer):a("
").addClass(c.navContainerClass).appendTo(this.$element)).addClass("disabled"), this._controls.$previous = a("<" + c.navElement + ">").addClass(c.navClass[0]).html(c.navText[0]).prependTo(this._controls.$relative).on("click", a.proxy(function(a){this.prev(c.navSpeed)}, this)), this._controls.$next = a("<" + c.navElement + ">").addClass(c.navClass[1]).html(c.navText[1]).appendTo(this._controls.$relative).on("click", a.proxy(function(a){this.next(c.navSpeed)}, this)), c.dotsData || (this._templates = [a(' +

title ); ?>

+
+
+ +
+
+ +
+
+ ID ) ); + } + + wp_die(); + } + + public function ajax_save_nav_menu_item_settings() { + + if ( ! check_ajax_referer( 'quadmenu', 'nonce', false ) ) { + Plugin::send_json_error( esc_html__( 'Please reload the page.', 'quadmenu' ) ); + } + + if ( $menu_item_id = absint( $_REQUEST['menu_item_id'] ) ) { + wp_cache_delete( "wp_setup_nav_menu_item_{$menu_item_id}", 'quadmenu' ); + } + + $menu_id = absint( $_REQUEST['menu_id'] ); + + if ( $menu_item_id > 0 ) { + + if ( isset( $_REQUEST['menu-item-quadmenu-settings'] ) && is_array( $_REQUEST['menu-item-quadmenu-settings'] ) ) { + + $saved_settings = array_filter( (array) get_post_meta( $menu_item_id, QUADMENU_DB_ITEM, true ) ); + + if ( is_array( $saved_settings ) && $updated_settings = array_merge( $saved_settings, $_REQUEST['menu-item-quadmenu-settings'] ) ) { + update_post_meta( $menu_item_id, QUADMENU_DB_ITEM, $updated_settings ); + } + } + + if ( isset( $_REQUEST['menu-item-url'] ) ) { + update_post_meta( $menu_item_id, '_menu_item_url', esc_url_raw( $_REQUEST['menu-item-url'] ) ); + } + if ( isset( $_REQUEST['menu-item-parent-id'] ) ) { + update_post_meta( $menu_item_id, '_menu_item_menu_item_parent', strval( (int) $_REQUEST['menu-item-parent-id'] ) ); + } + if ( isset( $_REQUEST['menu-item-target'] ) ) { + update_post_meta( $menu_item_id, '_menu_item_target', sanitize_key( $_REQUEST['menu-item-target'] ) ); + } + if ( isset( $_REQUEST['menu-item-classes'] ) ) { + $_REQUEST['menu-item-classes'] = array_map( 'sanitize_html_class', explode( ' ', $_REQUEST['menu-item-classes'] ) ); + update_post_meta( $menu_item_id, '_menu_item_classes', $_REQUEST['menu-item-classes'] ); + } + if ( isset( $_REQUEST['menu-item-xfn'] ) ) { + $_REQUEST['menu-item-xfn'] = join( ' ', array_map( 'sanitize_html_class', explode( ' ', $_REQUEST['menu-item-xfn'] ) ) ); + update_post_meta( $menu_item_id, '_menu_item_xfn', $_REQUEST['menu-item-xfn'] ); + } + + if ( isset( $_REQUEST['menu-item-title'] ) || isset( $_REQUEST['menu-item-attr-title'] ) || isset( $_REQUEST['menu-item-description'] ) ) { + + $post = array( + 'ID' => $menu_item_id, + ); + + if ( isset( $_REQUEST['menu-item-title'] ) ) { + $post['post_title'] = apply_filters( 'the_title', $_REQUEST['menu-item-title'], $menu_item_id ); + } + if ( isset( $_REQUEST['menu-item-attr-title'] ) ) { + $post['post_excerpt'] = wp_kses_post( $_REQUEST['menu-item-attr-title'] ); + } + if ( isset( $_REQUEST['menu-item-description'] ) ) { + $post['post_content'] = wp_kses_post( $_REQUEST['menu-item-description'] ); + } + + // 'post_type' => 'nav_menu_item', + // 'post_parent' => $original_parent, + // 'menu_order' => $args['menu-item-position'], + + if ( ! wp_update_post( $post ) ) { + + Plugin::send_json_error( sprintf( esc_html__( 'Can\'t save settings of %s.', 'quadmenu' ), $menu_item_id ) ); + + wp_die(); + } + } + + Plugin::send_json_success( sprintf( esc_html__( 'Saved settings of %s.', 'quadmenu' ), $menu_item_id ) ); + + wp_die(); + } + + Plugin::send_json_error( sprintf( esc_html__( 'Can\'t save settings of %s.', 'quadmenu' ), $menu_item_id ) ); + + wp_die(); + } + + public function update_nav_menu_item( $menu_id, $menu_item_db_id, $args ) { + + if ( ! empty( $args['menu-item-quadmenu'] ) ) { + + $saved_settings = array_filter( (array) get_post_meta( $menu_item_db_id, QUADMENU_DB_ITEM, true ) ); + + $saved_settings['quadmenu'] = $args['menu-item-quadmenu']; + + if ( ! empty( $args['menu-item-columns'] ) ) { + $saved_settings['columns'] = $args['menu-item-columns']; + } + + update_post_meta( $menu_item_db_id, QUADMENU_DB_ITEM, $saved_settings ); + } + } + + public static function instance() { + if ( ! isset( self::$instance ) ) { + self::$instance = new self(); + } + return self::$instance; + } + +} diff --git a/lib/backend/class-settings.php b/lib/backend/class-settings.php new file mode 100644 index 0000000..bd53f8a --- /dev/null +++ b/lib/backend/class-settings.php @@ -0,0 +1,545 @@ +wp_get_nav_menu_items( $menu_id ) ) && count( $menu ) ) { + + foreach ( $menu as $item ) { + + // find the child menu items + if ( $parent_menu_item_id == $item->menu_item_parent ) { + + $childrens[ $item->ID ] = array( + 'id' => $item->ID, + 'title' => $item->title, + ); + } + } + } + + return $childrens; + } + + function wp_get_nav_menu_items( $menu_id ) { + + $quadmenu_menu_items = wp_cache_get( "wp_get_nav_menu_items_{$menu_id}", 'quadmenu' ); + + if ( $quadmenu_menu_items === false ) { + + $quadmenu_menu_items = wp_get_nav_menu_items( $menu_id ); + + wp_cache_set( "wp_get_nav_menu_items_{$menu_id}", $quadmenu_menu_items, 'quadmenu' ); + } + + return $quadmenu_menu_items; + } + + public function nav_menu_item_settings( $setting, $item ) { + + $type = $setting['type']; + + // $desc = isset($setting['desc']) ? '' . $setting['desc'] . '' : ''; + // $tip = isset($setting['tip']) ? '
' . $setting['tip'] . '
' : ''; + + $value = $item->{$setting['db']}; + + $id = 'menu-item-' . $setting['db']; + + $name = 'menu-item-' . $setting['id']; + + $class = 'menu-item-quadmenu-setting ' . $id; + + $ops = ''; + + if ( isset( $setting['ops'] ) ) { + $ops = $setting['ops']; + if ( ! is_array( $ops ) && function_exists( $ops ) ) { + if ( isset( $setting['ops_args'] ) ) { + $ops = $ops( $setting['ops_args'] ); + } else { + $ops = $ops(); + } + } + } + + switch ( $type ) { + + case 'checkbox': + ?> + + + + $_name ) : + ?> + + + + + + + + + + + + + + + + $_name ) : ?> + + + + +
+
+ # +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+ + +
+
+ +
+ +
+ +
+ +
+ + +
+
+ +
+ +
+ > +
+ +
+ + +
+ +
+
+ +
+ selected_icons()->iconmap ) as $icon ) : ?> + + +
+
+
+ 0, + 'size' => '', + 'position' => '', + 'repeat' => '', + 'origin' => 'border-box', + 'opacity' => 1, + ); + + $value = wp_parse_args( $value, $defaults ); + + $_src = ! empty( $value['thumbnail-id'] ) ? wp_get_attachment_image_src( $value['thumbnail-id'], 'thumbnail' ) : false; + $_url = ! empty( $value['thumbnail-id'] ) ? wp_get_attachment_image_src( $value['thumbnail-id'], 'full' ) : false; + + $have_media = isset( $_src[0] ) && strlen( $_src[0] ) > 0 ? 'active' : ''; + ?> + + + + + menu-item-<?php echo esc_attr( $item->ID ); ?>-media + + + + + + +
+ + + + + +
+
+ 0 ? 'active' : '' ); + ?> + + + + menu-item-<?php echo esc_attr( $item->ID ); ?>-media + + + + + + + + + + + + + + nav_menu_item_fields( $menu_obj ); + ob_start(); + + if ( in_array( $menu_obj->object, array( 'search', 'cart', 'login', 'column' ) ) ) { + $settings = array_diff( $settings, array( 'url', 'target', 'xfn', 'description' ) ); + } + if ( in_array( $menu_obj->type, array( 'taxonomy', 'post_type', 'post_type_archive' ) ) ) { + $settings = array_diff( $settings, array( 'url' ) ); + } + ?> +
+ +
+ +
+ +
+ {$menu_obj->quadmenu}->panels->$panel->settings ) { + Plugin::send_json_error( json_encode( $menu_obj ) ); + } + + if ( $form = $this->form( $menu_obj, 0, $settings ) ) { + Plugin::send_json_success( $form ); + } else { + Plugin::send_json_error( json_encode( $menu_obj ) ); + } + + wp_die(); + } + + public function panels( $menu_item_depth, $menu_obj, $menu_id ) { + + $items = Configuration::custom_nav_menu_items(); + + $this->panels = $items->{$menu_obj->quadmenu}->panels; + ?> +
    +
  • + panels as $key => $panel ) : ?> + depth ) ) { + foreach ( $panel->depth as $depth ) { + $classes[] = 'quadmenu-panel-depth-' . $depth; + } + } + + $classes[] = 'quadmenu-panel-' . $key; + ?> +
  • title ); ?>
  • + panels->{$key} = $panel->settings; ?> + + +
+
+
+ form( $menu_obj, 0, array( 'url', 'target', 'title', 'attr-title', 'classes', 'xfn', 'description' ) ); ?> +
+ panels as $key => $settings ) : ?> +
+ +
+ + +
+ menu_item_parent ) && ! empty( $menu_obj->quadmenu ) && $menu_obj->quadmenu === 'column' ) { + return __CLASS__; + } + + return $walker_class_name; + } + + public function walk( $elements, $max_depth ) { + + $output = ''; + + foreach ( $elements as $e ) { + + $output .= $this->column( $e ); + } + + return $output; + + wp_die(); + } + + public function column( $column_obj, $menu_id = 0 ) { + + ob_start(); + ?> +
+
+
+
+ + + + +
+
+
+ form( $column_obj, 1, array( 'columns' ) ); ?> +
+
    + get_children_nav_menu_items( $menu_id, $column_obj->ID ); + + if ( is_array( $items ) && count( $items ) ) : + foreach ( $items as $item ) : + + $menu_obj = Plugin::wp_setup_nav_menu_item( $item['id'] ); + + $walker_class_name = apply_filters( 'quadmenu_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit', null, $menu_obj, null ); + + require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; + + if ( class_exists( $walker_class_name ) ) { + + $args = array( + 'after' => '', + 'before' => '', + 'link_after' => '', + 'link_before' => '', + 'walker' => new $walker_class_name(), + ); + + echo walk_nav_menu_tree( array( $menu_obj ), 0, (object) $args ); + } + + endforeach; + endif; + ?> +
+
+
+ get_children_nav_menu_items( $menu_id, $menu_obj->ID ); + + ob_start(); + + $w4 = array( + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-4' ), + ), + ); + + $w12 = array( + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-12' ), + ), + ); + + $w6w6 = array( + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-6' ), + ), + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-6' ), + ), + ); + + $w4w4w4 = array( + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-4' ), + ), + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-4' ), + ), + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-4' ), + ), + ); + + $w3w3w3w3 = array( + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-3' ), + ), + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-3' ), + ), + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-3' ), + ), + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-3' ), + ), + ); + + $w2w2w2w2w2w2 = array( + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-2' ), + ), + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-2' ), + ), + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-2' ), + ), + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-2' ), + ), + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-2' ), + ), + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-2' ), + ), + ); + + $w4w8 = array( + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-4' ), + ), + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-8' ), + ), + ); + + $w3w6w3 = array( + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-3' ), + ), + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-6' ), + ), + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-3' ), + ), + ); + + $w2w10 = array( + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-2' ), + ), + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-10' ), + ), + ); + + $w2w8w2 = array( + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-2' ), + ), + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-8' ), + ), + array( + 'quadmenu' => 'column', + 'columns' => array( 'col-xs-12', 'col-sm-2' ), + ), + ); + ?> +
+ + quadmenu ) || $column_obj->quadmenu != 'column' ) { + continue; + } + + echo $this->column( $column_obj, $menu_id ); + + endforeach; + endif; + ?> +
+ menu_item_parent ) && ! empty( $menu_obj->type ) && in_array( sanitize_key( $menu_obj->type ), array( 'custom', 'taxonomy', 'post_type_archive', 'post_type', 'icon', 'search' ) ) ) { + return __CLASS__; + } + + return $walker_class_name; + } + + public function walk( $elements, $max_depth ) { + + $output = ''; + + foreach ( $elements as $e ) { + + $output .= $this->defaults( $e ); + } + + return $output; + + wp_die(); + } + + public function defaults( $menu_obj, $menu_id = 0 ) { + + if ( ! isset( $args->doing_ajax ) && $menu_obj->_invalid ) { + ob_start(); + ?> +
  • +
    +
    +
    + + +
    +
    + title ); ?> +
    +
    +
    +
    +
    +
    +
    +
  • + + +
  • +
    +
    +
    + + + +
    +
    + title ); ?> +
    +
    +
    + depth, $menu_obj, $menu_id ); ?> +
    +
    +
  • + quadmenu ) && $menu_obj->quadmenu === 'mega' ) { + ?> +
  • + quadmenu ) && $menu_obj->quadmenu === 'mega' ) { + ?> +
    + columns( $menu_obj, $menu_id ); ?> +
    + get_available_widgets(); + ?> +
    +
    +
      + $widget ) : + + $title = esc_html__( 'Widget', 'quadmenu' ); + + if ( isset( $widget['label'] ) ) { + $title = $widget['label']; + } + + $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval( $_nav_menu_placeholder ) - 1 : -1; + ?> + +
    • + + + + + +
    • + + +
    +
    +

    + + + + +

    +
    + widgets ) ) { + + foreach ( $wp_widget_factory->widgets as $widget ) { + + if ( isset( $widget->id_base ) && $widget->id_base != 'quadmenu_widget' ) { + + $disabled_widgets = apply_filters( 'quadmenu_incompatible_widgets', array() ); + + if ( ! in_array( sanitize_key( $widget->id_base ), $disabled_widgets ) ) { + + $widgets[ $widget->id_base ] = array( + 'depth' => 2, + 'label' => $widget->name, + 'url' => '#widget', + ); + + if ( isset( $widget->widget_options['description'] ) ) { + $widgets[ $widget->id_base ]['desc'] = $widget->widget_options['description']; + } + } + } + } + } + + return $widgets; + } + + public function update_nav_menu_item_widget( $menu_id, $menu_item_db_id, $args ) { + + if ( ! empty( $args['menu-item-quadmenu-widget'] ) ) { + + require_once ABSPATH . 'wp-admin/includes/widgets.php'; + + $saved_settings = array_filter( (array) get_post_meta( $menu_item_db_id, QUADMENU_DB_ITEM, true ) ); + + $id_base = sanitize_text_field( $args['menu-item-quadmenu-widget'] ); + + $next_id = next_widget_id_number( $id_base ); + + $this->add_widget_instance( $id_base, $next_id, $menu_item_db_id ); + + $widget_id = $this->add_widget_to_sidebar( $id_base, $next_id ); + + $saved_settings['widget'] = $id_base; + + $saved_settings['widget_number'] = $next_id; + + $saved_settings['widget_id'] = $widget_id; + + update_post_meta( $menu_item_db_id, QUADMENU_DB_ITEM, $saved_settings ); + } + } + + function add_nav_menu_item_widgets( $walker_class_name, $menu_id = null, $menu_obj = null, $menu_items = null ) { + + if ( ! empty( $menu_obj->menu_item_parent ) && ! empty( $menu_obj->quadmenu ) && $menu_obj->quadmenu === 'widget' ) { + return __CLASS__; + } + + return $walker_class_name; + } + + public function walk( $elements, $max_depth, $args ) { + + $output = ''; + + foreach ( $elements as $e ) { + + $output .= $this->widgets( $e, (object) $args ); + } + + return $output; + + wp_die(); + } + + public function widgets( $widget_obj, $args ) { + + global $wp_registered_widgets; + + if ( ! isset( $args->doing_ajax ) && $widget_obj->_invalid ) { + ob_start(); + ?> +
  • +
    +
    +
    + + +
    +
    + title ); ?> +
    +
    +
    +
    +
    +
    +
    +
  • + + +
  • +
    +
    +
    + + + +
    +
    + title ); ?> +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
  • + form_widget( $widget_id ) ) { + Plugin::send_json_success( $form ); + } else { + Plugin::send_json_error( sprintf( esc_html__( 'Failed to load widget %1$s form in %2$d', 'quadmenu' ), $widget_id, $menu_item_id ) ); + } + + wp_die(); + } + + public function form_widget( $widget_id ) { + + global $wp_registered_widget_controls; + + $control = $wp_registered_widget_controls[ $widget_id ]; + + $id_base = $this->get_id_base_for_widget_id( $widget_id ); + + ob_start(); + ?> + + + +
    + + +
    +
    + $menu_item_id, + ); + + update_option( 'widget_' . $id_base, $current_widgets ); + } + + private function add_widget_to_sidebar( $id_base, $next_id ) { + + $widget_id = $id_base . '-' . $next_id; + + $sidebar_widgets = $this->get_sidebar_widgets(); + + $sidebar_widgets[] = $widget_id; + + $this->set_sidebar_widgets( $sidebar_widgets ); + + return $widget_id; + } + + public function get_sidebar_widgets() { + + $sidebar_widgets = wp_get_sidebars_widgets(); + + if ( ! isset( $sidebar_widgets['quadmenu-widgets'] ) ) { + return false; + } + + return $sidebar_widgets['quadmenu-widgets']; + } + + private function set_sidebar_widgets( $widgets ) { + + $sidebar_widgets = wp_get_sidebars_widgets(); + + // Remove because is not defined in first init + // if (!isset($sidebar_widgets['quadmenu-widgets'])) { + // return false; + // } + + $sidebar_widgets['quadmenu-widgets'] = $widgets; + + wp_set_sidebars_widgets( $sidebar_widgets ); + } + + public function ajax_save_widget() { + + if ( ! check_ajax_referer( 'quadmenu', 'nonce', false ) ) { + Plugin::send_json_error( esc_html__( 'Please reload the page.', 'quadmenu' ) ); + } + + $menu_item_id = absint( $_REQUEST['menu_item_id'] ); + + $id_base = sanitize_text_field( $_REQUEST['id_base'] ); + + $saved = $this->save_widget( $id_base ); + + if ( $saved ) { + Plugin::send_json_success( sprintf( esc_html__( 'Saved settings of %s Widget', 'quadmenu' ), $saved[0]->name ) ); + } else { + Plugin::send_json_error( sprintf( esc_html__( 'Failed to add %1$s to %2$d', 'quadmenu' ), $id_base, $menu_item_id ) ); + } + + wp_die(); + } + + public function save_widget( $id_base ) { + + global $wp_registered_widget_updates; + + $control = $wp_registered_widget_updates[ $id_base ]; + + if ( isset( $control['callback'] ) && isset( $control['params'] ) && is_callable( $control['callback'] ) ) { + + call_user_func_array( $control['callback'], $control['params'] ); + + return $control['callback']; + } + + return false; + } + + public function delete_nav_menu_widget( $ID, $menu_id ) { + + $menu_obj = Plugin::wp_setup_nav_menu_item( $ID ); + + if ( empty( $menu_obj->widget_id ) ) { + return; + } + + $this->delete_widget( $menu_obj->widget_id ); + } + + function delete_widget( $widget_id ) { + + $this->remove_widget_from_sidebar( $widget_id ); + $this->remove_widget_instance( $widget_id ); + + return true; + } + + private function remove_widget_from_sidebar( $widget_id ) { + + $widgets = $this->get_sidebar_widgets(); + + $new_quadmenu_widgets = array(); + + if ( count( $widgets ) ) { + foreach ( $widgets as $widget ) { + + if ( $widget != $widget_id ) { + $new_quadmenu_widgets[] = $widget; + } + } + } + $this->set_sidebar_widgets( $new_quadmenu_widgets ); + + return $widget_id; + } + + public function get_id_base_for_widget_id( $widget_id ) { + global $wp_registered_widget_controls; + + if ( ! isset( $wp_registered_widget_controls[ $widget_id ] ) ) { + return false; + } + + $control = $wp_registered_widget_controls[ $widget_id ]; + + $id_base = isset( $control['id_base'] ) ? $control['id_base'] : $control['id']; + + return $id_base; + } + + private function remove_widget_instance( $widget_id ) { + + $id_base = $this->get_id_base_for_widget_id( $widget_id ); + + $widget_number = $this->get_widget_number_for_widget_id( $widget_id ); + + $current_widgets = get_option( 'widget_' . $id_base ); + + if ( isset( $current_widgets[ $widget_number ] ) ) { + + unset( $current_widgets[ $widget_number ] ); + + update_option( 'widget_' . $id_base, $current_widgets ); + + return true; + } + + return false; + } + + public function get_widget_number_for_widget_id( $widget_id ) { + + $parts = explode( '-', $widget_id ); + + return absint( end( $parts ) ); + } + + public function admin_print_footer_scripts( $hook ) { + + do_action( 'admin_footer-widgets.php' ); + } + + public function admin_print_scripts( $hook ) { + + do_action( 'admin_print_scripts-widgets.php' ); + } + + public function admin_print_styles( $hook ) { + + do_action( 'admin_print_styles-widgets.php' ); + } + + public static function instance() { + if ( ! isset( self::$instance ) ) { + self::$instance = new self(); + } + return self::$instance; + } + +} diff --git a/lib/class-activation.php b/lib/class-activation.php new file mode 100644 index 0000000..260fc27 --- /dev/null +++ b/lib/class-activation.php @@ -0,0 +1,84 @@ +selected_icons()->ID ), QUADMENU_PLUGIN_VERSION, 'all' ); + + wp_register_script( 'quadmenu-admin', QUADMENU_PLUGIN_URL . 'build/backend/index.js', $admin['dependencies'], $admin['version'], false ); + } + + public function icons() { + + global $pagenow, $quadmenu_active_locations; + + if ( $pagenow != 'nav-menus.php' ) { + return; + } + + if ( ! is_array( $quadmenu_active_locations ) ) { + return; + } + + if ( ! count( $quadmenu_active_locations ) ) { + return; + } + ?> + + +
    +

    +
    + $class, + 'notice' => $notice, + ); + + update_option( 'quadmenu_admin_notices', $notices ); + } + + function ajax_dismiss_notice() { + + if ( $notice_id = ( isset( $_POST['notice_id'] ) ) ? sanitize_key( $_POST['notice_id'] ) : '' ) { + + update_user_meta( get_current_user_id(), $notice_id, true ); + + wp_send_json( $notice_id ); + } + + wp_die(); + } + + public static function instance() { + if ( ! isset( self::$instance ) ) { + self::$instance = new self(); + } + return self::$instance; + } +} diff --git a/lib/class-compiler.php b/lib/class-compiler.php new file mode 100644 index 0000000..bdf0c09 --- /dev/null +++ b/lib/class-compiler.php @@ -0,0 +1,278 @@ +run_compiler() ) { + $data['variables'] = self::less_variables( $quadmenu ); + $data['compiler'] = $compiler; + } + + $data['files'] = apply_filters( 'quadmenu_compiler_files', array() ); + $data['nonce'] = wp_create_nonce( 'quadmenu' ); + $data['ajaxurl'] = admin_url( 'admin-ajax.php' ); + + return $data; + } + + public function enqueue() { + $compiler = include QUADMENU_PLUGIN_DIR . 'build/compiler/index.asset.php'; + + wp_enqueue_script( 'quadmenu-compiler', QUADMENU_PLUGIN_URL . 'build/compiler/index.js', $compiler['dependencies'], $compiler['version'], true ); + wp_localize_script( 'quadmenu-compiler', 'quadmenu', apply_filters( 'quadmenu_global_js_data', array() ) ); + } + + function developer_variables( $return_array ) { + + if ( is_array( $return_array ) ) { + $return_array['options'] = apply_filters( 'quadmenu_developer_options', $return_array['options'] ); + } + + return $return_array; + } + + function compile_variables( $return_array ) { + + if ( is_array( $return_array ) ) { + $return_array['variables'] = self::less_variables( $return_array['options'] ); + } + + return $return_array; + } + + public function compiler_save() { + if ( ! check_ajax_referer( 'quadmenu', 'nonce', false ) ) { + Plugin::send_json_error( esc_html__( 'Please reload the page.', 'quadmenu' ) ); + } + + $return_array = array( 'status' => 'error' ); + + if ( ! isset( $_REQUEST['output']['imports'][0] ) ) { + Redux::add_notification( 'red', esc_html__( 'Imports is undefined.', 'quadmenu' ) ); + wp_die(); + } + + if ( ! isset( $_REQUEST['output']['css'] ) ) { + Redux::add_notification( 'red', esc_html__( 'CSS is undefined.', 'quadmenu' ) ); + wp_die(); + } + + $file_ext = pathinfo( $_REQUEST['output']['imports'][0], PATHINFO_EXTENSION ); + + if ( ! in_array( $file_ext, array( 'less', 'css' ) ) ) { + wp_die( 'Cheating?' ); + } + + $return_array['status'] = 'success'; + + $file_name = str_replace( ".{$file_ext}", '.css', basename( $_REQUEST['output']['imports'][0] ) ); + + try { + $this->save_file( $file_name, QUADMENU_UPLOAD_DIR, stripslashes( $_REQUEST['output']['css'] ) ); + } catch ( Exception $e ) { + $return_array['status'] = $e->getMessage(); + } + + ob_start(); + + Redux::notification_bar(); + + $notification_bar = ob_get_contents(); + + ob_end_clean(); + + $return_array['notification_bar'] = $notification_bar; + + self::do_compiler( false ); + + echo json_encode( $return_array ); + + wp_die(); + } + + public static function do_compiler( $run = true ) { + + if ( $run ) { + update_option( '_quadmenu_compiler', $run ); + } else { + delete_option( '_quadmenu_compiler' ); + } + } + + public function run_compiler() { + return (int) get_option( '_quadmenu_compiler', false ); + } + + public function compiler( $options, $css, $changed ) { + + self::do_compiler( true ); + + Redux::add_notification( 'yellow', sprintf( esc_html__( 'Some style options have been changed. Your stylesheet will be compiled to reflect changes. %s.', 'quadmenu' ), esc_html__( 'Please wait', 'quadmenu' ) ) ); + } + + public function save_file( $name = false, $dir = false, $content = false ) { + + if ( ! $name || ! $dir || ! $content ) { + return; + } + + if ( ! class_exists( '\\ReduxFrameworkInstances' ) ) { + Redux::add_notification( 'error', esc_html__( 'ReduxFramework is not installed', 'quadmenu' ) ); + return; + } + + $this->redux = \ReduxFrameworkInstances::get_instance( QUADMENU_DB_OPTIONS ); + + // Check if file exists ------------------------------------------------. + $is_file = is_file( trailingslashit( $dir ) . $name ); + + // Create the folder ---------------------------------------------------. + if ( ! is_dir( $dir ) ) { + $this->redux->filesystem->execute( 'mkdir', $dir ); + Redux::add_notification( 'yellow', sprintf( esc_html__( 'Folder created : %1$s', 'quadmenu' ), $dir ) ); + } + + // Write file ----------------------------------------------------------. + if ( $this->redux->filesystem->execute( 'put_contents', trailingslashit( $dir ) . $name, array( 'content' => $content ) ) ) { + Redux::add_notification( 'green', sprintf( esc_html__( 'File has been %2$s : %1$s', 'quadmenu' ), trailingslashit( $dir ) . $name, $is_file ? esc_html__( 'updated', 'quadmenu' ) : esc_html__( 'created', 'quadmenu' ) ) ); + return; + } + + Redux::add_notification( 'error', sprintf( esc_html__( 'File cant\'t been created : %1$s', 'quadmenu' ), trailingslashit( $dir ) . $name ) ); + } + + public static function less_variables( &$data, $header = '' ) { + + $html = array(); // Themes::less_themes(); + + if ( ! is_array( $data ) ) { + return $data; + } + + if ( isset( $data['styles'] ) ) { + unset( $data['styles'] ); + } + + if ( isset( $data['styles_normalize'] ) ) { + unset( $data['styles_normalize'] ); + } + + if ( isset( $data['styles_widgets'] ) ) { + unset( $data['styles_widgets'] ); + } + + if ( isset( $data['styles_pscrollbar'] ) ) { + unset( $data['styles_pscrollbar'] ); + } + + if ( isset( $data['styles_owlcarousel'] ) ) { + unset( $data['styles_owlcarousel'] ); + } + + // if (isset($data['styles_icons'])) { + // unset($data['styles_icons']); + // } + + if ( isset( $data['viewport'] ) ) { + unset( $data['viewport'] ); + } + + if ( isset( $data['css'] ) ) { + unset( $data['css'] ); + } + + if ( isset( $data['social'] ) ) { + unset( $data['social'] ); + } + + if ( isset( $data['errors'] ) ) { + unset( $data['errors'] ); + } + + if ( isset( $data['warnings'] ) ) { + unset( $data['warnings'] ); + } + + if ( isset( $data['notification_bar'] ) ) { + unset( $data['notification_bar'] ); + } + + foreach ( $data as $key => &$val ) { + + $value = ( $key != 'font-options' ) ? $val : ''; + + $value = ( filter_var( $value, FILTER_VALIDATE_URL ) ) ? "'{$value}'" : $value; + + if ( is_array( $value ) ) { + $html = array_merge( $html, self::less_variables( $value, "{$key}_" ) ); + } elseif ( $value != '' ) { + $html[ "@{$header}{$key}" ] = $value; + } else { + $html[ "@{$header}{$key}" ] = 0; + } + } + + return $html; + } + + function redux_compiler( $return_array = array() ) { + + global $quadmenu; + + if ( is_array( $return_array ) ) { + $return_array['options'] = apply_filters( 'quadmenu_developer_options', $quadmenu ); + $return_array['variables'] = self::less_variables( $return_array['options'] ); + } + + return $return_array; + } +} + diff --git a/lib/class-configuration.php b/lib/class-configuration.php new file mode 100644 index 0000000..f9abd20 --- /dev/null +++ b/lib/class-configuration.php @@ -0,0 +1,967 @@ + esc_html__( 'QuadMenu Mega', 'quadmenu' ), + 'title' => esc_html__( 'Mega', 'quadmenu' ), + 'panels' => array( + 'general' => array( + 'title' => esc_html__( 'General', 'quadmenu' ), + 'icon' => 'dashicons dashicons-admin-settings', + 'settings' => array( 'subtitle', 'badge', 'float', 'hidden' ), + ), + 'icon' => array( + 'title' => esc_html__( 'Icon', 'quadmenu' ), + 'icon' => 'dashicons dashicons-art', + 'settings' => array( 'icon' ), + ), + 'background' => array( + 'title' => esc_html__( 'Background', 'quadmenu' ), + 'icon' => 'dashicons dashicons-format-image', + 'settings' => array( 'background' ), + ), + 'width' => array( + 'title' => esc_html__( 'Width', 'quadmenu' ), + 'icon' => 'dashicons dashicons-align-left', + 'settings' => array( 'dropdown', 'stretch', 'width' ), + ), + ), + 'desc' => esc_html__( 'A menu which can wrap any type of widget.', 'quadmenu' ), + 'parent' => 'main', + 'depth' => 0, + ); + + $items['icon'] = array( + 'label' => esc_html__( 'QuadMenu Icon', 'quadmenu' ), + 'title' => esc_html__( 'Icon', 'quadmenu' ), + 'panels' => array( + 'icon' => array( + 'title' => esc_html__( 'Icon', 'quadmenu' ), + 'icon' => 'dashicons dashicons-art', + 'settings' => array( 'icon' ), + ), + 'general' => array( + 'title' => esc_html__( 'General', 'quadmenu' ), + 'icon' => 'dashicons dashicons-admin-settings', + 'settings' => array( 'float', 'hidden', 'dropdown' ), + ), + ), + 'desc' => esc_html__( 'Just an icon, no title.', 'quadmenu' ), + 'depth' => 0, + ); + $items['cart'] = array( + 'label' => esc_html__( 'QuadMenu Cart', 'quadmenu' ), + 'title' => esc_html__( 'Cart', 'quadmenu' ), + 'panels' => array( + 'general' => array( + 'title' => esc_html__( 'General', 'quadmenu' ), + 'icon' => 'dashicons dashicons-admin-settings', + 'settings' => array( 'float', 'hidden' ), + ), + 'icon' => array( + 'title' => esc_html__( 'Icon', 'quadmenu' ), + 'icon' => 'dashicons dashicons-art', + 'settings' => array( 'icon' ), + ), + 'cart' => array( + 'title' => esc_html__( 'Cart', 'quadmenu' ), + 'icon' => 'dashicons dashicons-cart', + 'settings' => array( 'dropdown', 'title', 'cart', 'cart_text' ), + ), + ), + 'desc' => esc_html__( 'A cart widget for Woocommerce.', 'quadmenu' ), + 'parent' => 'main', + 'depth' => 0, + ); + + $items['search'] = array( + 'label' => esc_html__( 'QuadMenu Search', 'quadmenu' ), + 'title' => esc_html__( 'Search', 'quadmenu' ), + 'panels' => array( + 'general' => array( + 'title' => esc_html__( 'General', 'quadmenu' ), + 'icon' => 'dashicons dashicons-admin-settings', + 'settings' => array( 'placeholder', 'search', 'float', 'hidden' ), + ), + 'icon' => array( + 'title' => esc_html__( 'Icon', 'quadmenu' ), + 'icon' => 'dashicons dashicons-art', + 'settings' => array( 'icon' ), + ), + ), + 'desc' => esc_html__( 'A search form for the site.', 'quadmenu' ), + 'depth' => 0, + ); + $items['column'] = array( + 'label' => esc_html__( 'Column', 'quadmenu' ), + 'title' => esc_html__( 'Column', 'quadmenu' ), + 'settings' => array( 'columns' ), + 'desc' => esc_html__( 'Column to organize the content.', 'quadmenu' ), + 'depth' => 1, + 'parent' => array( 'panel', 'tab', 'mega' ), + ); + $items['widget'] = array( + 'label' => esc_html__( 'QuadMenu Widget', 'quadmenu' ), + 'title' => esc_html__( 'Widget', 'quadmenu' ), + 'panels' => array( + 'general' => array( + 'title' => esc_html__( 'General', 'quadmenu' ), + 'icon' => 'dashicons dashicons-align-left', + 'settings' => array( 'hidden' ), + ), + ), + 'desc' => esc_html__( 'Include a widget inside column.', 'quadmenu' ), + 'parent' => 'column', + ); + + // WordPress + // --------------------------------------------------------------------- + + $items['custom'] = array( + 'panels' => array( + 'general' => array( + 'title' => esc_html__( 'General', 'quadmenu' ), + 'icon' => 'dashicons dashicons-admin-settings', + 'settings' => array( 'subtitle', 'badge', 'float', 'hidden', 'dropdown' ), + ), + 'icon' => array( + 'title' => esc_html__( 'Icon', 'quadmenu' ), + 'icon' => 'dashicons dashicons-art', + 'settings' => array( 'icon' ), + ), + ), + 'parent' => array( 'main', 'column', 'login', 'icon', 'button', 'custom', 'post_type', 'post_type_archive', 'taxonomy' ), + ); + $items['taxonomy'] = array( + 'panels' => array( + 'general' => array( + 'title' => esc_html__( 'General', 'quadmenu' ), + 'icon' => 'dashicons dashicons-admin-settings', + 'settings' => array( 'subtitle', 'badge', 'float', 'hidden', 'dropdown' ), + ), + 'icon' => array( + 'title' => esc_html__( 'Icon', 'quadmenu' ), + 'icon' => 'dashicons dashicons-art', + 'settings' => array( 'icon' ), + ), + ), + 'parent' => array( 'main', 'column', 'login', 'icon', 'button', 'custom', 'post_type', 'post_type_archive', 'taxonomy' ), + ); + $items['post_type'] = array( + 'panels' => array( + 'general' => array( + 'title' => esc_html__( 'General', 'quadmenu' ), + 'icon' => 'dashicons dashicons-admin-settings', + 'settings' => array( 'subtitle', 'badge', 'float', 'hidden', 'dropdown' ), + ), + 'icon' => array( + 'title' => esc_html__( 'Icon', 'quadmenu' ), + 'icon' => 'dashicons dashicons-art', + 'settings' => array( 'icon' ), + ), + 'content' => array( + 'title' => esc_html__( 'Content', 'quadmenu' ), + 'icon' => 'dashicons dashicons-format-aside', + 'settings' => array( 'thumb', 'excerpt' ), + ), + ), + 'parent' => array( 'main', 'column', 'login', 'icon', 'button', 'custom', 'post_type', 'post_type_archive', 'taxonomy' ), + ); + + $items['post_type_archive'] = array( + 'panels' => array( + /* + 'default' => array( + 'title' => esc_html__('Default', 'quadmenu'), + 'icon' => 'dashicons dashicons-menu', + 'settings' => array('url', 'title', 'attr-title', 'classes', 'xfn', 'description'), + ), */ + 'general' => array( + 'title' => esc_html__( 'General', 'quadmenu' ), + 'icon' => 'dashicons dashicons-admin-settings', + 'settings' => array( 'subtitle', 'badge', 'float', 'hidden', 'dropdown' ), + ), + 'icon' => array( + 'title' => esc_html__( esc_html__( 'Icon', 'quadmenu' ), 'quadmenu' ), + 'icon' => 'dashicons dashicons-art', + 'settings' => array( 'icon' ), + ), + ), + 'parent' => array( 'main', 'column', 'login', 'icon', 'button', 'custom', 'post_type', 'post_type_archive', 'taxonomy' ), + ); + + return json_decode( json_encode( apply_filters( 'quadmenu_custom_nav_menu_items', $items ) ) ); + } + + public function nav_menu_item_fields( $menu_obj = false ) { + + $settings = array(); + + $settings['id'] = array( + 'id' => 'id', + 'db' => 'id', + 'type' => 'id', + ); + + $settings['url'] = array( + 'id' => 'url', + 'db' => 'url', + 'title' => esc_html__( 'URL' ), + 'placeholder' => esc_html__( 'URL' ), + 'type' => 'text', + 'default' => '', + ); + + $settings['title'] = array( + 'id' => 'title', + 'db' => 'title', + 'title' => esc_html__( 'Title' ), + 'placeholder' => esc_html__( 'Navigation Label' ), + 'type' => 'text', + 'default' => '', + ); + + $settings['attr-title'] = array( + 'id' => 'attr-title', + 'db' => 'post_excerpt', + 'title' => esc_html__( 'Title Attribute' ), + 'placeholder' => esc_html__( 'Title Attribute' ), + 'type' => 'text', + 'default' => '', + ); + + $settings['classes'] = array( + 'id' => 'classes', + 'db' => 'classes', + 'title' => esc_html__( 'CSS Classes (optional)' ), + 'placeholder' => esc_html__( 'CSS Classes (optional)' ), + 'type' => 'text', + 'default' => array(), + ); + + $settings['target'] = array( + 'id' => 'target', + 'db' => 'target', + 'target' => 'target', + 'title' => esc_html__( 'Target' ), + 'placeholder' => esc_html__( 'Open link in a new tab' ), + 'type' => 'checkbox', + 'ops' => '_blank', + 'default' => '', + ); + + $settings['xfn'] = array( + 'id' => 'xfn', + 'db' => 'xfn', + 'title' => esc_html__( 'Link Relationship (XFN)' ), + 'placeholder' => esc_html__( 'Link Relationship (XFN)' ), + 'type' => 'text', + 'default' => '', + ); + + $settings['description'] = array( + 'id' => 'description', + 'db' => 'description', + 'desc' => esc_html__( 'The description will be displayed in the menu if the current theme supports it.' ), + 'type' => 'textarea', + 'default' => '', + ); + + $settings['icon'] = array( + 'id' => 'quadmenu-settings[icon]', + 'db' => 'icon', + 'type' => 'icon', + 'placeholder' => esc_html__( 'Search', 'quadmenu' ), + 'default' => '', + ); + + $settings['subtitle'] = array( + 'id' => 'quadmenu-settings[subtitle]', + 'db' => 'subtitle', + 'title' => esc_html__( 'Subtitle', 'quadmenu' ), + 'placeholder' => esc_html__( 'Enter item subtitle', 'quadmenu' ), + 'type' => 'text', + 'default' => '', + ); + + $settings['placeholder'] = array( + 'id' => 'quadmenu-settings[placeholder]', + 'db' => 'subtitle', + 'title' => esc_html__( 'Placeholder', 'quadmenu' ), + 'placeholder' => esc_html__( 'Enter item placeholder', 'quadmenu' ), + 'type' => 'text', + 'default' => '', + ); + + $settings['badge'] = array( + 'id' => 'quadmenu-settings[badge]', + 'db' => 'badge', + 'title' => esc_html__( 'Badge', 'quadmenu' ), + 'placeholder' => esc_html__( 'Item badge title', 'quadmenu' ), + 'type' => 'text', + 'default' => '', + ); + + $settings['float'] = array( + 'id' => 'quadmenu-settings[float]', + 'db' => 'float', + 'title' => esc_html__( 'Float', 'quadmenu' ), + 'placeholder' => esc_html__( 'Float item to left or right', 'quadmenu' ), + 'type' => 'select', + 'default' => '', + 'depth' => 0, + 'ops' => array( + '' => esc_html__( 'Default item position', 'quadmenu' ), + 'opposite' => esc_html__( 'Float item opposite to default', 'quadmenu' ), + ), + ); + + $settings['dropdown'] = array( + 'id' => 'quadmenu-settings[dropdown]', + 'db' => 'dropdown', + 'title' => esc_html__( 'Dropdown Float', 'quadmenu' ), + 'placeholder' => esc_html__( 'Float dropdown to left o right', 'quadmenu' ), + 'type' => 'select', + 'default' => 'right', + 'ops' => array( + 'right' => esc_html__( 'Float dropdown right', 'quadmenu' ), + 'left' => esc_html__( 'Float dropdown left', 'quadmenu' ), + ), + ); + + $settings['hidden'] = array( + 'id' => 'quadmenu-settings[hidden]', + 'db' => 'hidden', + 'title' => esc_html__( 'Hide on screen sizes', 'quadmenu' ), + 'type' => 'multicheck', + 'default' => '', + 'ops' => array( + 'hidden-xs' => sprintf( esc_html__( 'Hidden %1$s', 'quadmenu' ), 'XS' ), + 'hidden-sm' => sprintf( esc_html__( 'Hidden %1$s', 'quadmenu' ), 'SM' ), + 'hidden-md' => sprintf( esc_html__( 'Hidden %1$s', 'quadmenu' ), 'MD' ), + 'hidden-lg' => sprintf( esc_html__( 'Hidden %1$s', 'quadmenu' ), 'LG' ), + ), + ); + + $settings['thumb'] = array( + 'id' => 'quadmenu-settings[thumb]', + 'db' => 'thumb', + 'title' => esc_html__( 'Show featured image', 'quadmenu' ), + 'type' => 'select', + 'default' => '', + 'depth' => array( 1, 2, 3, 4 ), + 'ops' => array( + '' => esc_html__( 'Hide featured image', 'quadmenu' ), + 'thumbnail' => esc_html__( 'Show featured image in thumbnail size', 'quadmenu' ), + 'large' => esc_html__( 'Show featured image in wide size', 'quadmenu' ), + ), + ); + + $settings['excerpt'] = array( + 'id' => 'quadmenu-settings[excerpt]', + 'db' => 'excerpt', + 'type' => 'checkbox', + 'depth' => array( 1, 2, 3, 4 ), + 'title' => esc_html__( 'Excerpt', 'quadmenu' ), + 'placeholder' => esc_html__( 'Show items excerpt', 'quadmenu' ), + 'default' => 'off', + ); + + $settings['background'] = array( + 'id' => 'quadmenu-settings[background]', + 'db' => 'background', + 'type' => 'background', + 'default' => array( + 'thumbnail-id' => 0, + 'size' => '', + 'position' => '', + 'repeat' => '', + 'origin' => 'border-box', + 'opacity' => 1, + ), + ); + + $settings['stretch'] = array( + 'id' => 'quadmenu-settings[stretch]', + 'db' => 'stretch', + 'title' => esc_html__( 'Dropdown Width', 'quadmenu' ), + 'desc' => esc_html__( 'This controls the width of the dropdown and contents.', 'quadmenu' ), + 'type' => 'select', + 'default' => 'boxed', + 'ops' => array( + 'boxed' => esc_html__( 'Boxed dropdown', 'quadmenu' ), + 'dropdown' => esc_html__( 'Stretch dropdown', 'quadmenu' ), + // 'content' => esc_html__('Stretch dropdown and content', 'quadmenu'), + '' => esc_html__( 'Custom dropdown width', 'quadmenu' ), + ), + ); + + $settings['width'] = array( + 'id' => 'quadmenu-settings[columns]', + 'db' => 'columns', + 'type' => 'width', + 'default' => array(), + 'ops' => array( + 'icons' => array( + 'md', + 'lg', + ), + 'columns' => array( + 'md', + 'lg', + ), + ), + ); + + $settings['columns'] = array( + 'id' => 'quadmenu-settings[columns]', + 'db' => 'columns', + 'type' => 'width', + 'default' => array(), + 'ops' => array( + 'icons' => array( + 'xs', + 'sm', + 'md', + 'lg', + ), + 'columns' => array( + '', + 'sm', + 'md', + 'lg', + ), + 'hidden' => array( + 'xs', + 'sm', + 'md', + 'lg', + ), + ), + ); + + $settings['cart'] = array( + 'id' => 'quadmenu-settings[cart]', + 'db' => 'cart', + 'title' => esc_html__( 'Cart', 'quadmenu' ), + 'type' => 'select', + 'default' => 'woo', + 'ops' => array( + 'woo' => esc_html__( 'WooCommerce Cart', 'quadmenu' ), + 'edd' => esc_html__( 'Easy Digital Downloads Cart', 'quadmenu' ), + ), + ); + + $settings['cart_text'] = array( + 'id' => 'quadmenu-settings[cart_text]', + 'db' => 'cart_text', + 'title' => esc_html__( 'Text', 'quadmenu' ), + 'type' => 'textarea', + 'default' => '', + ); + + $settings['social'] = array( + 'id' => 'quadmenu-settings[social]', + 'db' => 'social', + 'title' => esc_html__( 'Social', 'quadmenu' ), + 'type' => 'select', + 'default' => 'toggle', + 'ops' => array( + 'embed' => esc_html__( 'Embeded', 'quadmenu' ), + 'toggle' => esc_html__( 'Toggle', 'quadmenu' ), + ), + ); + + $settings['search'] = array( + 'id' => 'quadmenu-settings[search]', + 'db' => 'search', + 'title' => esc_html__( 'Search', 'quadmenu' ), + 'type' => 'multicheck', + 'default' => 'post', + 'ops' => $this->post_types(), + ); + + return apply_filters( 'quadmenu_nav_menu_item_fields', $settings, $menu_obj ); + } + + function post_types() { + + $ops = array(); + + $post_types = get_post_types( array( 'show_in_nav_menus' => true ), 'object' ); + + foreach ( $post_types as $post_type ) { + + $ops[ $post_type->name ] = $post_type->label; + } + + return $ops; + } + + function nav_menu_item_fields_defaults() { + + $defaults = array(); + + $fields = $this->nav_menu_item_fields(); + + foreach ( $fields as $id => $field ) { + $defaults[ $id ] = isset( $field['default'] ) ? $field['default'] : esc_html__( 'Undefined default', 'quadmenu' ); + } + + return $defaults; + } + + function default_values_nav_menu_items( $item ) { + + $defaults = $this->nav_menu_item_fields_defaults(); + + foreach ( $defaults as $key => $value ) { + + if ( property_exists( $item, $key ) ) { + continue; + } + + $item->{$key} = apply_filters( 'quadmenu_nav_menu_item_field_default', $value, $key, $item ); + } + + return $item; + } + + function custom_default_values_nav_menu_items( $value, $key, $item ) { + + if ( $key == 'icon' ) { + + if ( $item->quadmenu == 'social' ) { + $value = 'dashicons dashicons-share'; + } + + if ( $item->quadmenu == 'cart' ) { + $value = 'dashicons dashicons-cart'; + } + + if ( $item->quadmenu == 'icon' ) { + $value = 'dashicons dashicons-info'; + } + } + + if ( $key == 'columns' ) { + + if ( $item->quadmenu == 'column' ) { + $value = array( + 'col-12', + 'col-sm-4', + ); + } + } + + return $value; + } + + function files( $files ) { + + $files[] = QUADMENU_PLUGIN_URL . 'assets/frontend/less/quadmenu-locations.less'; + $files[] = QUADMENU_PLUGIN_URL . 'assets/frontend/less/quadmenu-widgets.less'; + + return $files; + } + + function icons() { + + $register_icons = array( + 'dashicons' => array( + 'name' => 'Dashicons', + 'url' => false, + 'prefix' => '', + 'iconmap' => 'dashicons dashicons-menu,dashicons dashicons-admin-site,dashicons dashicons-dashboard,dashicons dashicons-admin-post,dashicons dashicons-admin-media,dashicons dashicons-admin-links,dashicons dashicons-admin-page,dashicons dashicons-admin-comments,dashicons dashicons-admin-appearance,dashicons dashicons-admin-plugins,dashicons dashicons-admin-users,dashicons dashicons-admin-tools,dashicons dashicons-admin-settings,dashicons dashicons-admin-network,dashicons dashicons-admin-home,dashicons dashicons-admin-generic,dashicons dashicons-admin-collapse,dashicons dashicons-filter,dashicons dashicons-admin-customizer,dashicons dashicons-admin-multisite,dashicons dashicons-welcome-write-blog,dashicons dashicons-welcome-add-page,dashicons dashicons-welcome-view-site,dashicons dashicons-welcome-widgets-menus,dashicons dashicons-welcome-comments,dashicons dashicons-welcome-learn-more,dashicons dashicons-format-aside,dashicons dashicons-format-image,dashicons dashicons-format-gallery,dashicons dashicons-format-video,dashicons dashicons-format-status,dashicons dashicons-format-quote,dashicons dashicons-format-chat,dashicons dashicons-format-audio,dashicons dashicons-camera,dashicons dashicons-images-alt,dashicons dashicons-images-alt2,dashicons dashicons-video-alt,dashicons dashicons-video-alt2,dashicons dashicons-video-alt3,dashicons dashicons-media-archive,dashicons dashicons-media-audio,dashicons dashicons-media-code,dashicons dashicons-media-default,dashicons dashicons-media-document,dashicons dashicons-media-interactive,dashicons dashicons-media-spreadsheet,dashicons dashicons-media-text,dashicons dashicons-media-video,dashicons dashicons-playlist-audio,dashicons dashicons-playlist-video,dashicons dashicons-controls-play,dashicons dashicons-controls-pause,dashicons dashicons-controls-forward,dashicons dashicons-controls-skipforward,dashicons dashicons-controls-back,dashicons dashicons-controls-skipback,dashicons dashicons-controls-repeat,dashicons dashicons-controls-volumeon,dashicons dashicons-controls-volumeoff,dashicons dashicons-image-crop,dashicons dashicons-image-rotate,dashicons dashicons-image-rotate-left,dashicons dashicons-image-rotate-right,dashicons dashicons-image-flip-vertical,dashicons dashicons-image-flip-horizontal,dashicons dashicons-image-filter,dashicons dashicons-undo,dashicons dashicons-redo,dashicons dashicons-editor-bold,dashicons dashicons-editor-italic,dashicons dashicons-editor-ul,dashicons dashicons-editor-ol,dashicons dashicons-editor-quote,dashicons dashicons-editor-alignleft,dashicons dashicons-editor-aligncenter,dashicons dashicons-editor-alignright,dashicons dashicons-editor-insertmore,dashicons dashicons-editor-spellcheck,dashicons dashicons-editor-expand,dashicons dashicons-editor-contract,dashicons dashicons-editor-kitchensink,dashicons dashicons-editor-underline,dashicons dashicons-editor-justify,dashicons dashicons-editor-textcolor,dashicons dashicons-editor-paste-word,dashicons dashicons-editor-paste-text,dashicons dashicons-editor-removeformatting,dashicons dashicons-editor-video,dashicons dashicons-editor-customchar,dashicons dashicons-editor-outdent,dashicons dashicons-editor-indent,dashicons dashicons-editor-help,dashicons dashicons-editor-strikethrough,dashicons dashicons-editor-unlink,dashicons dashicons-editor-rtl,dashicons dashicons-editor-break,dashicons dashicons-editor-code,dashicons dashicons-editor-paragraph,dashicons dashicons-editor-table,dashicons dashicons-align-left,dashicons dashicons-align-right,dashicons dashicons-align-center,dashicons dashicons-align-none,dashicons dashicons-lock,dashicons dashicons-unlock,dashicons dashicons-calendar,dashicons dashicons-calendar-alt,dashicons dashicons-visibility,dashicons dashicons-hidden,dashicons dashicons-post-status,dashicons dashicons-edit,dashicons dashicons-trash,dashicons dashicons-sticky,dashicons dashicons-external,dashicons dashicons-arrow-up,dashicons dashicons-arrow-down,dashicons dashicons-arrow-right,dashicons dashicons-arrow-left,dashicons dashicons-arrow-up-alt,dashicons dashicons-arrow-down-alt,dashicons dashicons-arrow-right-alt,dashicons dashicons-arrow-left-alt,dashicons dashicons-arrow-up-alt2,dashicons dashicons-arrow-down-alt2,dashicons dashicons-arrow-right-alt2,dashicons dashicons-arrow-left-alt2,dashicons dashicons-sort,dashicons dashicons-leftright,dashicons dashicons-randomize,dashicons dashicons-list-view,dashicons dashicons-exerpt-view,dashicons dashicons-grid-view,dashicons dashicons-share,dashicons dashicons-share-alt,dashicons dashicons-share-alt2,dashicons dashicons-twitter,dashicons dashicons-rss,dashicons dashicons-email,dashicons dashicons-email-alt,dashicons dashicons-facebook,dashicons dashicons-facebook-alt,dashicons dashicons-googleplus,dashicons dashicons-networking,dashicons dashicons-hammer,dashicons dashicons-art,dashicons dashicons-migrate,dashicons dashicons-performance,dashicons dashicons-universal-access,dashicons dashicons-universal-access-alt,dashicons dashicons-tickets,dashicons dashicons-nametag,dashicons dashicons-clipboard,dashicons dashicons-heart,dashicons dashicons-megaphone,dashicons dashicons-schedule,dashicons dashicons-wordpress,dashicons dashicons-wordpress-alt,dashicons dashicons-pressthis,dashicons dashicons-update,dashicons dashicons-screenoptions,dashicons dashicons-info,dashicons dashicons-cart,dashicons dashicons-feedback,dashicons dashicons-cloud,dashicons dashicons-translation,dashicons dashicons-tag,dashicons dashicons-category,dashicons dashicons-archive,dashicons dashicons-tagcloud,dashicons dashicons-text,dashicons dashicons-yes,dashicons dashicons-no,dashicons dashicons-no-alt,dashicons dashicons-plus,dashicons dashicons-plus-alt,dashicons dashicons-minus,dashicons dashicons-dismiss,dashicons dashicons-marker,dashicons dashicons-star-filled,dashicons dashicons-star-half,dashicons dashicons-star-empty,dashicons dashicons-flag,dashicons dashicons-warning,dashicons dashicons-location,dashicons dashicons-location-alt,dashicons dashicons-vault,dashicons dashicons-shield,dashicons dashicons-shield-alt,dashicons dashicons-sos,dashicons dashicons-search,dashicons dashicons-slides,dashicons dashicons-analytics,dashicons dashicons-chart-pie,dashicons dashicons-chart-bar,dashicons dashicons-chart-line,dashicons dashicons-chart-area,dashicons dashicons-groups,dashicons dashicons-businessman,dashicons dashicons-id,dashicons dashicons-id-alt,dashicons dashicons-products,dashicons dashicons-awards,dashicons dashicons-forms,dashicons dashicons-testimonial,dashicons dashicons-portfolio,dashicons dashicons-book,dashicons dashicons-book-alt,dashicons dashicons-download,dashicons dashicons-upload,dashicons dashicons-backup,dashicons dashicons-clock,dashicons dashicons-lightbulb,dashicons dashicons-microphone,dashicons dashicons-desktop,dashicons dashicons-tablet,dashicons dashicons-smartphone,dashicons dashicons-phone,dashicons dashicons-index-card,dashicons dashicons-carrot,dashicons dashicons-building,dashicons dashicons-store,dashicons dashicons-album,dashicons dashicons-palmtree,dashicons dashicons-tickets-alt,dashicons dashicons-money,dashicons dashicons-smiley,dashicons dashicons-thumbs-up,dashicons dashicons-thumbs-down,dashicons dashicons-layout', + ), + 'eleganticons' => array( + 'name' => 'Elegant Icons', + 'url' => QUADMENU_PLUGIN_URL . 'assets/frontend/icons/eleganticons/style.min.css', + 'prefix' => '', + 'iconmap' => 'arrow_up,arrow_down,arrow_left,arrow_right,arrow_left-up,arrow_right-up,arrow_right-down,arrow_left-down,arrow-up-down,arrow_up-down_alt,arrow_left-right_alt,arrow_left-right,arrow_expand_alt2,arrow_expand_alt,arrow_condense,arrow_expand,arrow_move,arrow_carrot-up,arrow_carrot-down,arrow_carrot-left,arrow_carrot-right,arrow_carrot-2up,arrow_carrot-2down,arrow_carrot-2left,arrow_carrot-2right,arrow_carrot-up_alt2,arrow_carrot-down_alt2,arrow_carrot-left_alt2,arrow_carrot-right_alt2,arrow_carrot-2up_alt2,arrow_carrot-2down_alt2,arrow_carrot-2left_alt2,arrow_carrot-2right_alt2,arrow_triangle-up,arrow_triangle-down,arrow_triangle-left,arrow_triangle-right,arrow_triangle-up_alt2,arrow_triangle-down_alt2,arrow_triangle-left_alt2,arrow_triangle-right_alt2,arrow_back,icon_minus-06,icon_plus,icon_close,icon_check,icon_minus_alt2,icon_plus_alt2,icon_close_alt2,icon_check_alt2,icon_zoom-out_alt,icon_zoom-in_alt,icon_search,icon_box-empty,icon_box-selected,icon_minus-box,icon_plus-box,icon_box-checked,icon_circle-empty,icon_circle-slelected,icon_stop_alt2,icon_stop,icon_pause_alt2,icon_pause,icon_menu,icon_menu-square_alt2,icon_menu-circle_alt2,icon_ul,icon_ol,icon_adjust-horiz,icon_adjust-vert,icon_document_alt,icon_documents_alt,icon_pencil,icon_pencil-edit_alt,icon_pencil-edit,icon_folder-alt,icon_folder-open_alt,icon_folder-add_alt,icon_info_alt,icon_error-oct_alt,icon_error-circle_alt,icon_error-triangle_alt,icon_question_alt2,icon_question,icon_comment_alt,icon_chat_alt,icon_vol-mute_alt,icon_volume-low_alt,icon_volume-high_alt,icon_quotations,icon_quotations_alt2,icon_clock_alt,icon_lock_alt,icon_lock-open_alt,icon_key_alt,icon_cloud_alt,icon_cloud-upload_alt,icon_cloud-download_alt,icon_image,icon_images,icon_lightbulb_alt,icon_gift_alt,icon_house_alt,icon_genius,icon_mobile,icon_tablet,icon_laptop,icon_desktop,icon_camera_alt,icon_mail_alt,icon_cone_alt,icon_ribbon_alt,icon_bag_alt,icon_creditcard,icon_cart_alt,icon_paperclip,icon_tag_alt,icon_tags_alt,icon_trash_alt,icon_cursor_alt,icon_mic_alt,icon_compass_alt,icon_pin_alt,icon_pushpin_alt,icon_map_alt,icon_drawer_alt,icon_toolbox_alt,icon_book_alt,icon_calendar,icon_film,icon_table,icon_contacts_alt,icon_headphones,icon_lifesaver,icon_piechart,icon_refresh,icon_link_alt,icon_link,icon_loading,icon_blocked,icon_archive_alt,icon_heart_alt,icon_star_alt,icon_star-half_alt,icon_star,icon_star-half,icon_tools,icon_tool,icon_cog,icon_cogs,arrow_up_alt,arrow_down_alt,arrow_left_alt,arrow_right_alt,arrow_left-up_alt,arrow_right-up_alt,arrow_right-down_alt,arrow_left-down_alt,arrow_condense_alt,arrow_expand_alt3,arrow_carrot_up_alt,arrow_carrot-down_alt,arrow_carrot-left_alt,arrow_carrot-right_alt,arrow_carrot-2up_alt,arrow_carrot-2dwnn_alt,arrow_carrot-2left_alt,arrow_carrot-2right_alt,arrow_triangle-up_alt,arrow_triangle-down_alt,arrow_triangle-left_alt,arrow_triangle-right_alt,icon_minus_alt,icon_plus_alt,icon_close_alt,icon_check_alt,icon_zoom-out,icon_zoom-in,icon_stop_alt,icon_menu-square_alt,icon_menu-circle_alt,icon_document,icon_documents,icon_pencil_alt,icon_folder,icon_folder-open,icon_folder-add,icon_folder_upload,icon_folder_download,icon_info,icon_error-circle,icon_error-oct,icon_error-triangle,icon_question_alt,icon_comment,icon_chat,icon_vol-mute,icon_volume-low,icon_volume-high,icon_quotations_alt,icon_clock,icon_lock,icon_lock-open,icon_key,icon_cloud,icon_cloud-upload,icon_cloud-download,icon_lightbulb,icon_gift,icon_house,icon_camera,icon_mail,icon_cone,icon_ribbon,icon_bag,icon_cart,icon_tag,icon_tags,icon_trash,icon_cursor,icon_mic,icon_compass,icon_pin,icon_pushpin,icon_map,icon_drawer,icon_toolbox,icon_book,icon_contacts,icon_archive,icon_heart,icon_profile,icon_group,icon_grid-2x2,icon_grid-3x3,icon_music,icon_pause_alt,icon_phone,icon_upload,icon_download,social_facebook,social_twitter,social_pinterest,social_googleplus,social_tumblr,social_tumbleupon,social_wordpress,social_instagram,social_dribbble,social_vimeo,social_linkedin,social_rss,social_deviantart,social_share,social_myspace,social_skype,social_youtube,social_picassa,social_googledrive,social_flickr,social_blogger,social_spotify,social_delicious,social_facebook_circle,social_twitter_circle,social_pinterest_circle,social_googleplus_circle,social_tumblr_circle,social_stumbleupon_circle,social_wordpress_circle,social_instagram_circle,social_dribbble_circle,social_vimeo_circle,social_linkedin_circle,social_rss_circle,social_deviantart_circle,social_share_circle,social_myspace_circle,social_skype_circle,social_youtube_circle,social_picassa_circle,social_googledrive_alt2,social_flickr_circle,social_blogger_circle,social_spotify_circle,social_delicious_circle,social_facebook_square,social_twitter_square,social_pinterest_square,social_googleplus_square,social_tumblr_square,social_stumbleupon_square,social_wordpress_square,social_instagram_square,social_dribbble_square,social_vimeo_square,social_linkedin_square,social_rss_square,social_deviantart_square,social_share_square,social_myspace_square,social_skype_square,social_youtube_square,social_picassa_square,social_googledrive_square,social_flickr_square,social_blogger_square,social_spotify_square,social_delicious_square,icon_printer,icon_calulator,icon_building,icon_floppy,icon_drive,icon_search-2,icon_id,icon_id-2,icon_puzzle,icon_like,icon_dislike,icon_mug,icon_currency,icon_wallet,icon_pens,icon_easel,icon_flowchart,icon_datareport,icon_briefcase,icon_shield,icon_percent,icon_globe,icon_globe-2,icon_target,icon_hourglass,icon_balance,icon_rook,icon_printer-alt,icon_calculator_alt,icon_building_alt,icon_floppy_alt,icon_drive_alt,icon_search_alt,icon_id_alt,icon_id-2_alt,icon_puzzle_alt,icon_like_alt,icon_dislike_alt,icon_mug_alt,icon_currency_alt,icon_wallet_alt,icon_pens_alt,icon_easel_alt,icon_flowchart_alt,icon_datareport_alt,icon_briefcase_alt,icon_shield_alt,icon_percent_alt,icon_globe_alt,icon_clipboard', + ), + 'elusive' => array( + 'name' => 'Elusive Icons', + 'url' => QUADMENU_PLUGIN_URL . 'assets/frontend/icons/elusive/css/elusive-icons.min.css', + 'iconmap' => 'el el-address-book-alt,el el-address-book,el el-adjust-alt,el el-adjust,el el-adult,el el-align-center,el el-align-justify,el el-align-left,el el-align-right,el el-arrow-down,el el-arrow-left,el el-arrow-right,el el-arrow-up,el el-asl,el el-asterisk,el el-backward,el el-ban-circle,el el-barcode,el el-behance,el el-bell,el el-blind,el el-blogger,el el-bold,el el-book,el el-bookmark-empty,el el-bookmark,el el-braille,el el-briefcase,el el-broom,el el-brush,el el-bulb,el el-bullhorn,el el-calendar-sign,el el-calendar,el el-camera,el el-car,el el-caret-down,el el-caret-left,el el-caret-right,el el-caret-up,el el-cc,el el-certificate,el el-check-empty,el el-check,el el-chevron-down,el el-chevron-left,el el-chevron-right,el el-chevron-up,el el-child,el el-circle-arrow-down,el el-circle-arrow-left,el el-circle-arrow-right,el el-circle-arrow-up,el el-cloud-alt,el el-cloud,el el-cog-alt,el el-cog,el el-cogs,el el-comment-alt,el el-comment,el el-compass-alt,el el-compass,el el-credit-card,el el-css,el el-dashboard,el el-delicious,el el-deviantart,el el-digg,el el-download-alt,el el-download,el el-dribbble,el el-edit,el el-eject,el el-envelope-alt,el el-envelope,el el-error-alt,el el-error,el el-eur,el el-exclamation-sign,el el-eye-close,el el-eye-open,el el-facebook,el el-facetime-video,el el-fast-backward,el el-fast-forward,el el-female,el el-file-alt,el el-file-edit-alt,el el-file-edit,el el-file-new-alt,el el-file-new,el el-file,el el-film,el el-filter,el el-fire,el el-flag-alt,el el-flag,el el-flickr,el el-folder-close,el el-folder-open,el el-folder-sign,el el-folder,el el-font,el el-fontsize,el el-fork,el el-forward-alt,el el-forward,el el-foursquare,el el-friendfeed-rect,el el-friendfeed,el el-fullscreen,el el-gbp,el el-gift,el el-github-text,el el-github,el el-glass,el el-glasses,el el-globe-alt,el el-globe,el el-googleplus,el el-graph-alt,el el-graph,el el-group-alt,el el-group,el el-guidedog,el el-hand-down,el el-hand-left,el el-hand-right,el el-hand-up,el el-hdd,el el-headphones,el el-hearing-impaired,el el-heart-alt,el el-heart-empty,el el-heart,el el-home-alt,el el-home,el el-hourglass,el el-idea-alt,el el-idea,el el-inbox-alt,el el-inbox-box,el el-inbox,el el-indent-left,el el-indent-right,el el-info-circle,el el-instagram,el el-iphone-home,el el-italic,el el-key,el el-laptop-alt,el el-laptop,el el-lastfm,el el-leaf,el el-lines,el el-link,el el-linkedin,el el-list-alt,el el-list,el el-livejournal,el el-lock-alt,el el-lock,el el-magic,el el-magnet,el el-male,el el-map-marker-alt,el el-map-marker,el el-mic-alt,el el-mic,el el-minus-sign,el el-minus,el el-move,el el-music,el el-myspace,el el-network,el el-off,el el-ok-circle,el el-ok-sign,el el-ok,el el-opensource,el el-paper-clip-alt,el el-paper-clip,el el-path,el el-pause-alt,el el-pause,el el-pencil-alt,el el-pencil,el el-person,el el-phone-alt,el el-phone,el el-photo-alt,el el-photo,el el-picasa,el el-picture,el el-pinterest,el el-plane,el el-play-alt,el el-play-circle,el el-play,el el-plurk-alt,el el-plurk,el el-plus-sign,el el-plus,el el-podcast,el el-print,el el-puzzle,el el-qrcode,el el-question-sign,el el-question,el el-quote-alt,el el-quote-right-alt,el el-quote-right,el el-quotes,el el-random,el el-record,el el-reddit,el el-redux,el el-refresh,el el-remove-circle,el el-remove-sign,el el-remove,el el-repeat-alt,el el-repeat,el el-resize-full,el el-resize-horizontal,el el-resize-small,el el-resize-vertical,el el-return-key,el el-retweet,el el-reverse-alt,el el-road,el el-rss,el el-scissors,el el-screen-alt,el el-screen,el el-screenshot,el el-search-alt,el el-search,el el-share-alt,el el-share,el el-shopping-cart-sign,el el-shopping-cart,el el-signal,el el-skype,el el-slideshare,el el-smiley-alt,el el-smiley,el el-soundcloud,el el-speaker,el el-spotify,el el-stackoverflow,el el-star-alt,el el-star-empty,el el-star,el el-step-backward,el el-step-forward,el el-stop-alt,el el-stop,el el-stumbleupon,el el-tag,el el-tags,el el-tasks,el el-text-height,el el-text-width,el el-th-large,el el-th-list,el el-th,el el-thumbs-down,el el-thumbs-up,el el-time-alt,el el-time,el el-tint,el el-torso,el el-trash-alt,el el-trash,el el-tumblr,el el-twitter,el el-universal-access,el el-unlock-alt,el el-unlock,el el-upload,el el-usd,el el-user,el el-viadeo,el el-video-alt,el el-video-chat,el el-video,el el-view-mode,el el-vimeo,el el-vkontakte,el el-volume-down,el el-volume-off,el el-volume-up,el el-warning-sign,el el-website-alt,el el-website,el el-wheelchair,el el-wordpress,el el-wrench-alt,el el-wrench,el el-youtube,el el-zoom-in,el el-zoom-out', + ), + 'fontawesome' => array( + 'name' => 'FontAwesome 4', + 'url' => QUADMENU_PLUGIN_URL . 'assets/frontend/icons/fontawesome/css/font-awesome.min.css', + 'iconmap' => 'fa fa-glass,fa fa-music,fa fa-search,fa fa-envelope-o,fa fa-heart,fa fa-star,fa fa-star-o,fa fa-user,fa fa-film,fa fa-th-large,fa fa-th ,fa fa-th-list ,fa fa-check ,fa fa-remove,fa fa-close,fa fa-times ,fa fa-search-plus ,fa fa-search-minus,fa fa-power-off,fa fa-signal,fa fa-gear,fa fa-cog,fa fa-trash-o,fa fa-home,fa fa-file-o,fa fa-clock-o,fa fa-road,fa fa-download,fa fa-arrow-circle-o-down ,fa fa-arrow-circle-o-up ,fa fa-inbox ,fa fa-play-circle-o ,fa fa-rotate-right,fa fa-repeat ,fa fa-refresh,fa fa-list-alt,fa fa-lock,fa fa-flag,fa fa-headphones,fa fa-volume-off,fa fa-volume-down,fa fa-volume-up,fa fa-qrcode,fa fa-barcode ,fa fa-tag ,fa fa-tags ,fa fa-book ,fa fa-bookmark ,fa fa-print ,fa fa-camera,fa fa-font,fa fa-bold,fa fa-italic,fa fa-text-height,fa fa-text-width,fa fa-align-left,fa fa-align-center,fa fa-align-right,fa fa-align-justify,fa fa-list ,fa fa-dedent,fa fa-outdent ,fa fa-indent ,fa fa-video-camera ,fa fa-photo,fa fa-image,fa fa-picture-o ,fa fa-pencil,fa fa-map-marker,fa fa-adjust,fa fa-tint,fa fa-edit,fa fa-pencil-square-o,fa fa-share-square-o,fa fa-check-square-o,fa fa-arrows,fa fa-step-backward,fa fa-fast-backward,fa fa-backward ,fa fa-play ,fa fa-pause ,fa fa-stop ,fa fa-forward ,fa fa-fast-forward,fa fa-step-forward,fa fa-eject,fa fa-chevron-left,fa fa-chevron-right,fa fa-plus-circle,fa fa-minus-circle,fa fa-times-circle,fa fa-check-circle,fa fa-question-circle,fa fa-info-circle ,fa fa-crosshairs ,fa fa-times-circle-o ,fa fa-check-circle-o ,fa fa-ban ,fa fa-arrow-left,fa fa-arrow-right,fa fa-arrow-up,fa fa-arrow-down,fa fa-mail-forward,fa fa-share,fa fa-expand,fa fa-compress,fa fa-plus,fa fa-minus,fa fa-asterisk,fa fa-exclamation-circle ,fa fa-gift ,fa fa-leaf ,fa fa-fire ,fa fa-eye ,fa fa-eye-slash,fa fa-warning,fa fa-exclamation-triangle,fa fa-plane,fa fa-calendar,fa fa-random,fa fa-comment,fa fa-magnet,fa fa-chevron-up,fa fa-chevron-down,fa fa-retweet,fa fa-shopping-cart ,fa fa-folder ,fa fa-folder-open ,fa fa-arrows-v ,fa fa-arrows-h ,fa fa-bar-chart-o,fa fa-bar-chart,fa fa-twitter-square,fa fa-facebook-square,fa fa-camera-retro,fa fa-key,fa fa-gears,fa fa-cogs,fa fa-comments,fa fa-thumbs-o-up,fa fa-thumbs-o-down,fa fa-star-half,fa fa-heart-o ,fa fa-sign-out ,fa fa-linkedin-square ,fa fa-thumb-tack ,fa fa-external-link ,fa fa-sign-in,fa fa-trophy,fa fa-github-square,fa fa-upload,fa fa-lemon-o,fa fa-phone,fa fa-square-o,fa fa-bookmark-o,fa fa-phone-square,fa fa-twitter,fa fa-facebook-f,fa fa-facebook ,fa fa-github ,fa fa-unlock ,fa fa-credit-card ,fa fa-rss ,fa fa-hdd-o ,fa fa-bullhorn ,fa fa-bell ,fa fa-certificate ,fa fa-hand-o-right ,fa fa-hand-o-left ,fa fa-hand-o-up ,fa fa-hand-o-down ,fa fa-arrow-circle-left ,fa fa-arrow-circle-right ,fa fa-arrow-circle-up,fa fa-arrow-circle-down,fa fa-globe,fa fa-wrench,fa fa-tasks,fa fa-filter ,fa fa-briefcase ,fa fa-arrows-alt ,fa fa-group,fa fa-users ,fa fa-chain,fa fa-link ,fa fa-cloud ,fa fa-flask ,fa fa-cut,fa fa-scissors ,fa fa-copy,fa fa-files-o ,fa fa-paperclip ,fa fa-save,fa fa-floppy-o ,fa fa-square ,fa fa-navicon,fa fa-reorder,fa fa-bars ,fa fa-list-ul,fa fa-list-ol,fa fa-strikethrough,fa fa-underline,fa fa-table,fa fa-magic ,fa fa-truck ,fa fa-pinterest ,fa fa-pinterest-square ,fa fa-google-plus-square ,fa fa-google-plus ,fa fa-money ,fa fa-caret-down ,fa fa-caret-up ,fa fa-caret-left ,fa fa-caret-right,fa fa-columns,fa fa-unsorted,fa fa-sort,fa fa-sort-down,fa fa-sort-desc,fa fa-sort-up,fa fa-sort-asc,fa fa-envelope ,fa fa-linkedin ,fa fa-rotate-left,fa fa-undo ,fa fa-legal,fa fa-gavel ,fa fa-dashboard,fa fa-tachometer ,fa fa-comment-o ,fa fa-comments-o ,fa fa-flash,fa fa-bolt ,fa fa-sitemap ,fa fa-umbrella ,fa fa-paste,fa fa-clipboard,fa fa-lightbulb-o,fa fa-exchange,fa fa-cloud-download,fa fa-cloud-upload,fa fa-user-md ,fa fa-stethoscope ,fa fa-suitcase ,fa fa-bell-o ,fa fa-coffee ,fa fa-cutlery ,fa fa-file-text-o ,fa fa-building-o ,fa fa-hospital-o ,fa fa-ambulance ,fa fa-medkit,fa fa-fighter-jet ,fa fa-beer,fa fa-h-square fa fa-plus-square,fa fa-angle-double-left,fa fa-angle-double-right,fa fa-angle-double-up,fa fa-angle-double-down,fa fa-angle-left,fa fa-angle-right,fa fa-angle-up,fa fa-angle-down,fa fa-desktop,fa fa-laptop,fa fa-tablet ,fa fa-mobile-phone,fa fa-mobile ,fa fa-circle-o ,fa fa-quote-left ,fa fa-quote-right ,fa fa-spinner,fa fa-circle,fa fa-mail-reply,fa fa-reply,fa fa-github-alt,fa fa-folder-o,fa fa-folder-open-o,fa fa-smile-o,fa fa-frown-o,fa fa-meh-o ,fa fa-gamepad ,fa fa-keyboard-o ,fa fa-flag-o ,fa fa-flag-checkered ,fa fa-terminal,fa fa-code,fa fa-mail-reply-all,fa fa-reply-all,fa fa-star-half-empty,fa fa-star-half-full,fa fa-star-half-o,fa fa-location-arrow,fa fa-crop,fa fa-code-fork,fa fa-unlink,fa fa-chain-broken,fa fa-question,fa fa-info,fa fa-exclamation ,fa fa-superscript ,fa fa-subscript ,fa fa-eraser ,fa fa-puzzle-piece ,fa fa-microphone,fa fa-microphone-slash,fa fa-shield,fa fa-calendar-o,fa fa-fire-extinguisher,fa fa-rocket,fa fa-maxcdn,fa fa-chevron-circle-left,fa fa-chevron-circle-right,fa fa-chevron-circle-up,fa fa-chevron-circle-down ,fa fa-html ,fa fa-css ,fa fa-anchor ,fa fa-unlock-alt ,fa fa-bullseye,fa fa-ellipsis-h,fa fa-ellipsis-v,fa fa-rss-square,fa fa-play-circle,fa fa-ticket,fa fa-minus-square,fa fa-minus-square-o,fa fa-level-up,fa fa-level-down,fa fa-check-square ,fa fa-pencil-square ,fa fa-external-link-square ,fa fa-share-square ,fa fa-compass ,fa fa-toggle-down,fa fa-caret-square-o-down,fa fa-toggle-up,fa fa-caret-square-o-up,fa fa-toggle-right,fa fa-caret-square-o-right,fa fa-euro,fa fa-eur,fa fa-gbp,fa fa-dollar,fa fa-usd,fa fa-rupee,fa fa-inr,fa fa-cny,fa fa-rmb,fa fa-yen,fa fa-jpy,fa fa-ruble,fa fa-rouble,fa fa-rub,fa fa-won,fa fa-krw,fa fa-bitcoin,fa fa-btc ,fa fa-file ,fa fa-file-text ,fa fa-sort-alpha-asc ,fa fa-sort-alpha-desc ,fa fa-sort-amount-asc,fa fa-sort-amount-desc,fa fa-sort-numeric-asc,fa fa-sort-numeric-desc,fa fa-thumbs-up,fa fa-thumbs-down,fa fa-youtube-square,fa fa-youtube,fa fa-xing,fa fa-xing-square,fa fa-youtube-play ,fa fa-dropbox ,fa fa-stack-overflow ,fa fa-instagram ,fa fa-flickr ,fa fa-adn,fa fa-bitbucket,fa fa-bitbucket-square,fa fa-tumblr,fa fa-tumblr-square,fa fa-long-arrow-down,fa fa-long-arrow-up,fa fa-long-arrow-left,fa fa-long-arrow-right,fa fa-apple,fa fa-windows ,fa fa-android ,fa fa-linux ,fa fa-dribbble ,fa fa-skype ,fa fa-foursquare,fa fa-trello,fa fa-female,fa fa-male,fa fa-gittip,fa fa-gratipay,fa fa-sun-o,fa fa-moon-o,fa fa-archive,fa fa-bug,fa fa-vk,fa fa-weibo ,fa fa-renren ,fa fa-pagelines ,fa fa-stack-exchange ,fa fa-arrow-circle-o-right ,fa fa-arrow-circle-o-left,fa fa-toggle-left,fa fa-caret-square-o-left,fa fa-dot-circle-o,fa fa-wheelchair,fa fa-vimeo-square,fa fa-turkish-lira,fa fa-try,fa fa-plus-square-o,fa fa-space-shuttle,fa fa-slack,fa fa-envelope-square,fa fa-wordpress ,fa fa-openid ,fa fa-institution,fa fa-bank,fa fa-university ,fa fa-mortar-board,fa fa-graduation-cap ,fa fa-yahoo ,fa fa-google ,fa fa-reddit ,fa fa-reddit-square ,fa fa-stumbleupon-circle ,fa fa-stumbleupon ,fa fa-delicious ,fa fa-digg ,fa fa-pied-piper ,fa fa-pied-piper-alt ,fa fa-drupal ,fa fa-joomla,fa fa-language,fa fa-fax,fa fa-building,fa fa-child,fa fa-paw ,fa fa-spoon ,fa fa-cube ,fa fa-cubes ,fa fa-behance ,fa fa-behance-square ,fa fa-steam ,fa fa-steam-square ,fa fa-recycle ,fa fa-automobile,fa fa-car ,fa fa-cab,fa fa-taxi,fa fa-tree,fa fa-spotify,fa fa-deviantart,fa fa-soundcloud,fa fa-database ,fa fa-file-pdf-o ,fa fa-file-word-o ,fa fa-file-excel-o ,fa fa-file-powerpoint-o ,fa fa-file-photo-o,fa fa-file-picture-o,fa fa-file-image-o ,fa fa-file-zip-o,fa fa-file-archive-o ,fa fa-file-sound-o,fa fa-file-audio-o ,fa fa-file-movie-o,fa fa-file-video-o ,fa fa-file-code-o ,fa fa-vine,fa fa-codepen,fa fa-jsfiddle,fa fa-life-bouy,fa fa-life-buoy,fa fa-life-saver,fa fa-support,fa fa-life-ring,fa fa-circle-o-notch,fa fa-ra,fa fa-rebel ,fa fa-ge,fa fa-empire ,fa fa-git-square ,fa fa-git ,fa fa-hacker-news ,fa fa-tencent-weibo ,fa fa-qq ,fa fa-wechat,fa fa-weixin ,fa fa-send,fa fa-paper-plane ,fa fa-send-o,fa fa-paper-plane-o ,fa fa-history,fa fa-genderless,fa fa-circle-thin,fa fa-header,fa fa-paragraph,fa fa-sliders,fa fa-share-alt ,fa fa-share-alt-square ,fa fa-bomb ,fa fa-soccer-ball-o,fa fa-futbol-o ,fa fa-tty ,fa fa-binoculars ,fa fa-plug ,fa fa-slideshare ,fa fa-twitch ,fa fa-yelp ,fa fa-newspaper-o,fa fa-wifi,fa fa-calculator,fa fa-paypal,fa fa-google-wallet,fa fa-cc-visa ,fa fa-cc-mastercard ,fa fa-cc-discover ,fa fa-cc-amex ,fa fa-cc-paypal ,fa fa-cc-stripe ,fa fa-bell-slash ,fa fa-bell-slash-o ,fa fa-trash ,fa fa-copyright ,fa fa-at,fa fa-eyedropper,fa fa-paint-brush,fa fa-birthday-cake,fa fa-area-chart,fa fa-pie-chart,fa fa-line-chart,fa fa-lastfm,fa fa-lastfm-square,fa fa-toggle-off,fa fa-toggle-on,fa fa-bicycle,fa fa-bus,fa fa-ioxhost,fa fa-angellist,fa fa-cc ,fa fa-shekel,fa fa-sheqel,fa fa-ils ,fa fa-meanpath ,fa fa-buysellads ,fa fa-connectdevelop ,fa fa-dashcube,fa fa-forumbee,fa fa-leanpub,fa fa-sellsy,fa fa-shirtsinbulk,fa fa-simplybuilt,fa fa-skyatlas,fa fa-cart-plus,fa fa-cart-arrow-down,fa fa-diamond,fa fa-ship ,fa fa-user-secret ,fa fa-motorcycle ,fa fa-street-view ,fa fa-heartbeat ,fa fa-venus,fa fa-mars,fa fa-mercury,fa fa-transgender,fa fa-transgender-alt,fa fa-venus-double,fa fa-mars-double,fa fa-venus-mars,fa fa-mars-stroke,fa fa-mars-stroke-v ,fa fa-mars-stroke-h ,fa fa-neuter ,fa fa-facebook-official,fa fa-pinterest-p,fa fa-whatsapp,fa fa-server,fa fa-user-plus,fa fa-user-times,fa fa-hotel,fa fa-bed,fa fa-viacoin,fa fa-train,fa fa-subway,fa fa-medium', + ), + 'fontawesome5' => array( + 'name' => 'FontAwesome 5', + 'url' => QUADMENU_PLUGIN_URL . 'assets/frontend/icons/fontawesome5/css/all.min.css', + 'iconmap' => 'fab fa-500px,fab fa-accessible-icon,fab fa-accusoft,fab fa-adn,fab fa-adversal,fab fa-algolia,fab fa-alipay,fab fa-amazon,fab fa-amazon-pay,fab fa-app-store,fab fa-app-store-ios,fab fa-apper,fab fa-apple,fas fa-apple-alt,fab fa-apple-pay,fab fa-affiliatetheme,fas fa-ad,fas fa-address-book,fas fa-address-card,fas fa-adjust,fas fa-air-freshener,fas fa-align-center,fas fa-align-justify,fas fa-align-left,fas fa-align-right,fas fa-allergies,fas fa-ambulance,fas fa-american-sign-language-interpreting,fab fa-amilia,fas fa-anchor,fab fa-android,fab fa-angellist,fas fa-angle-double-down,fas fa-angle-double-left,fas fa-angle-double-right,fas fa-angle-double-up,fas fa-angle-down,fas fa-angle-left,fas fa-angle-right,fas fa-angle-up,fas fa-angry,fab fa-angrycreative,fab fa-angular,fas fa-ankh,fas fa-archive,fas fa-archway,fas fa-arrow-alt-circle-down,fas fa-arrow-alt-circle-left,fas fa-arrow-alt-circle-right,fas fa-arrow-alt-circle-up,fas fa-arrow-circle-down,fas fa-arrow-circle-left,fas fa-arrow-circle-right,fas fa-arrow-circle-up,fas fa-arrow-down,fas fa-arrow-left,fas fa-arrow-right,fas fa-arrow-up,fas fa-arrows-alt,fas fa-arrows-alt-h,fas fa-arrows-alt-v,fas fa-assistive-listening-systems,fas fa-asterisk,fab fa-asymmetrik,fas fa-at,fas fa-atlas,fas fa-atom,fab fa-audible,fas fa-audio-description,fab fa-autoprefixer,fab fa-avianex,fab fa-aviato,fas fa-award,fab fa-aws,fas fa-backspace,fas fa-backward,fas fa-balance-scale,fas fa-ban,fas fa-band-aid,fab fa-bandcamp,fas fa-barcode,fas fa-bars,fas fa-baseball-ball,fas fa-basketball-ball,fas fa-bath,fas fa-battery-empty,fas fa-battery-full,fas fa-battery-half,fas fa-battery-quarter,fas fa-battery-three-quarters,fas fa-bed,fas fa-beer,fab fa-behance,fab fa-behance-square,fas fa-bell,fas fa-bell-slash,fas fa-bezier-curve,fas fa-bible,fas fa-bicycle,fab fa-bimobject,fas fa-binoculars,fas fa-birthday-cake,fab fa-bitbucket,fab fa-bitcoin,fab fa-bity,fab fa-black-tie,fab fa-blackberry,fas fa-blender,fas fa-blind,fab fa-blogger,fab fa-blogger-b,fab fa-bluetooth,fab fa-bluetooth-b,fas fa-bold,fas fa-bolt,fas fa-bomb,fas fa-bone,fas fa-bong,fas fa-book,fas fa-book-open,fas fa-book-reader,fas fa-bookmark,fas fa-bowling-ball,fas fa-box,fas fa-box-open,fas fa-boxes,fas fa-braille,fas fa-brain,fas fa-briefcase,fas fa-briefcase-medical,fas fa-broadcast-tower,fas fa-broom,fas fa-brush,fab fa-btc,fas fa-bug,fas fa-building,fas fa-bullhorn,fas fa-bullseye,fas fa-burn,fab fa-buromobelexperte,fas fa-bus,fas fa-bus-alt,fas fa-business-time,fab fa-buysellads,fas fa-calculator,fas fa-calendar,fas fa-calendar-alt,fas fa-calendar-check,fas fa-calendar-minus,fas fa-calendar-plus,fas fa-calendar-times,fas fa-camera,fas fa-camera-retro,fas fa-cannabis,fas fa-capsules,fas fa-car,fas fa-car-alt,fas fa-car-battery,fas fa-car-crash,fas fa-car-side,fas fa-caret-down,fas fa-caret-left,fas fa-caret-right,fas fa-caret-square-down,fas fa-caret-square-left,fas fa-caret-square-right,fas fa-caret-square-up,fas fa-caret-up,fas fa-cart-arrow-down,fas fa-cart-plus,fab fa-cc-amazon-pay,fab fa-cc-amex,fab fa-cc-apple-pay,fab fa-cc-diners-club,fab fa-cc-discover,fab fa-cc-jcb,fab fa-cc-mastercard,fab fa-cc-paypal,fab fa-cc-stripe,fab fa-cc-visa,fab fa-centercode,fas fa-certificate,fas fa-chalkboard,fas fa-chalkboard-teacher,fas fa-charging-station,fas fa-chart-area,fas fa-chart-bar,fas fa-chart-line,fas fa-chart-pie,fas fa-check,fas fa-check-circle,fas fa-check-double,fas fa-check-square,fas fa-chess,fas fa-chess-bishop,fas fa-chess-board,fas fa-chess-king,fas fa-chess-knight,fas fa-chess-pawn,fas fa-chess-queen,fas fa-chess-rook,fas fa-chevron-circle-down,fas fa-chevron-circle-left,fas fa-chevron-circle-right,fas fa-chevron-circle-up,fas fa-chevron-down,fas fa-chevron-left,fas fa-chevron-right,fas fa-chevron-up,fas fa-child,fab fa-chrome,fas fa-church,fas fa-circle,fas fa-circle-notch,fas fa-city,fas fa-clipboard,fas fa-clipboard-check,fas fa-clipboard-list,fas fa-clock,fas fa-clone,fas fa-closed-captioning,fas fa-cloud,fas fa-cloud-download-alt,fas fa-cloud-upload-alt,fab fa-cloudscale,fab fa-cloudsmith,fab fa-cloudversify,fas fa-cocktail,fas fa-code,fas fa-code-branch,fab fa-codepen,fab fa-codiepie,fas fa-coffee,fas fa-cog,fas fa-cogs,fas fa-coins,fas fa-columns,fas fa-comment,fas fa-comment-alt,fas fa-comment-dollar,fas fa-comment-dots,fas fa-comment-slash,fas fa-comments,fas fa-comments-dollar,fas fa-compact-disc,fas fa-compass,fas fa-compress,fas fa-concierge-bell,fab fa-connectdevelop,fab fa-contao,fas fa-cookie,fas fa-cookie-bite,fas fa-copy,fas fa-copyright,fas fa-couch,fab fa-cpanel,fab fa-creative-commons,fab fa-creative-commons-by,fab fa-creative-commons-nc,fab fa-creative-commons-nc-eu,fab fa-creative-commons-nc-jp,fab fa-creative-commons-nd,fab fa-creative-commons-pd,fab fa-creative-commons-pd-alt,fab fa-creative-commons-remix,fab fa-creative-commons-sa,fab fa-creative-commons-sampling,fab fa-creative-commons-sampling-plus,fab fa-creative-commons-share,fas fa-credit-card,fas fa-crop,fas fa-crop-alt,fas fa-cross,fas fa-crosshairs,fas fa-crow,fas fa-crown,fab fa-css3,fab fa-css3-alt,fas fa-cube,fas fa-cubes,fas fa-cut,fab fa-cuttlefish,fab fa-d-and-d,fab fa-dashcube,fas fa-database,fas fa-deaf,fab fa-delicious,fab fa-deploydog,fab fa-deskpro,fas fa-desktop,fab fa-deviantart,fas fa-dharmachakra,fas fa-diagnoses,fas fa-dice,fas fa-dice-five,fas fa-dice-four,fas fa-dice-one,fas fa-dice-six,fas fa-dice-three,fas fa-dice-two,fab fa-digg,fab fa-digital-ocean,fas fa-digital-tachograph,fas fa-directions,fab fa-discord,fab fa-discourse,fas fa-divide,fas fa-dizzy,fas fa-dna,fab fa-dochub,fab fa-docker,fas fa-dollar-sign,fas fa-dolly,fas fa-dolly-flatbed,fas fa-donate,fas fa-door-closed,fas fa-door-open,fas fa-dot-circle,fas fa-dove,fas fa-download,fab fa-draft2digital,fas fa-drafting-compass,fas fa-draw-polygon,fab fa-dribbble,fab fa-dribbble-square,fab fa-dropbox,fas fa-drum,fas fa-drum-steelpan,fab fa-drupal,fas fa-dumbbell,fab fa-dyalog,fab fa-earlybirds,fab fa-ebay,fab fa-edge,fas fa-edit,fas fa-eject,fab fa-elementor,fas fa-ellipsis-h,fas fa-ellipsis-v,fab fa-ello,fab fa-ember,fab fa-empire,fas fa-envelope,fas fa-envelope-open,fas fa-envelope-open-text,fas fa-envelope-square,fab fa-envira,fas fa-equals,fas fa-eraser,fab fa-erlang,fab fa-ethereum,fab fa-etsy,fas fa-euro-sign,fas fa-exchange-alt,fas fa-exclamation,fas fa-exclamation-circle,fas fa-exclamation-triangle,fas fa-expand,fas fa-expand-arrows-alt,fab fa-expeditedssl,fas fa-external-link-alt,fas fa-external-link-square-alt,fas fa-eye,fas fa-eye-dropper,fas fa-eye-slash,fab fa-facebook,fab fa-facebook-f,fab fa-facebook-messenger,fab fa-facebook-square,fas fa-fast-backward,fas fa-fast-forward,fas fa-fax,fas fa-feather,fas fa-feather-alt,fas fa-female,fas fa-fighter-jet,fas fa-file,fas fa-file-alt,fas fa-file-archive,fas fa-file-audio,fas fa-file-code,fas fa-file-contract,fas fa-file-download,fas fa-file-excel,fas fa-file-export,fas fa-file-image,fas fa-file-import,fas fa-file-invoice,fas fa-file-invoice-dollar,fas fa-file-medical,fas fa-file-medical-alt,fas fa-file-pdf,fas fa-file-powerpoint,fas fa-file-prescription,fas fa-file-signature,fas fa-file-upload,fas fa-file-video,fas fa-file-word,fas fa-fill,fas fa-fill-drip,fas fa-film,fas fa-filter,fas fa-fingerprint,fas fa-fire,fas fa-fire-extinguisher,fab fa-firefox,fas fa-first-aid,fab fa-first-order,fab fa-first-order-alt,fab fa-firstdraft,fas fa-fish,fas fa-flag,fas fa-flag-checkered,fas fa-flask,fab fa-flickr,fab fa-flipboard,fas fa-flushed,fab fa-fly,fas fa-folder,fas fa-folder-minus,fas fa-folder-open,fas fa-folder-plus,fas fa-font,fab fa-font-awesome,fab fa-font-awesome-alt,fab fa-font-awesome-flag,fab fa-fonticons,fab fa-fonticons-fi,fas fa-football-ball,fab fa-fort-awesome,fab fa-fort-awesome-alt,fab fa-forumbee,fas fa-forward,fab fa-foursquare,fab fa-free-code-camp,fab fa-freebsd,fas fa-frog,fas fa-frown,fas fa-frown-open,fab fa-fulcrum,fas fa-funnel-dollar,fas fa-futbol,fab fa-galactic-republic,fab fa-galactic-senate,fas fa-gamepad,fas fa-gas-pump,fas fa-gavel,fas fa-gem,fas fa-genderless,fab fa-get-pocket,fab fa-gg,fab fa-gg-circle,fas fa-gift,fab fa-git,fab fa-git-square,fab fa-github,fab fa-github-alt,fab fa-github-square,fab fa-gitkraken,fab fa-gitlab,fab fa-gitter,fas fa-glass-martini,fas fa-glass-martini-alt,fas fa-glasses,fab fa-glide,fab fa-glide-g,fas fa-globe,fas fa-globe-africa,fas fa-globe-americas,fas fa-globe-asia,fab fa-gofore,fas fa-golf-ball,fab fa-goodreads,fab fa-goodreads-g,fab fa-google,fab fa-google-drive,fab fa-google-play,fab fa-google-plus,fab fa-google-plus-g,fab fa-google-plus-square,fab fa-google-wallet,fas fa-gopuram,fas fa-graduation-cap,fab fa-gratipay,fab fa-grav,fas fa-greater-than,fas fa-greater-than-equal,fas fa-grimace,fas fa-grin,fas fa-grin-alt,fas fa-grin-beam,fas fa-grin-beam-sweat,fas fa-grin-hearts,fas fa-grin-squint,fas fa-grin-squint-tears,fas fa-grin-stars,fas fa-grin-tears,fas fa-grin-tongue,fas fa-grin-tongue-squint,fas fa-grin-tongue-wink,fas fa-grin-wink,fas fa-grip-horizontal,fas fa-grip-vertical,fab fa-gripfire,fab fa-grunt,fab fa-gulp,fas fa-h-square,fab fa-hacker-news,fab fa-hacker-news-square,fab fa-hackerrank,fas fa-hamsa,fas fa-hand-holding,fas fa-hand-holding-heart,fas fa-hand-holding-usd,fas fa-hand-lizard,fas fa-hand-paper,fas fa-hand-peace,fas fa-hand-point-down,fas fa-hand-point-left,fas fa-hand-point-right,fas fa-hand-point-up,fas fa-hand-pointer,fas fa-hand-rock,fas fa-hand-scissors,fas fa-hand-spock,fas fa-hands,fas fa-hands-helping,fas fa-handshake,fas fa-hashtag,fas fa-haykal,fas fa-hdd,fas fa-heading,fas fa-headphones,fas fa-headphones-alt,fas fa-headset,fas fa-heart,fas fa-heartbeat,fas fa-helicopter,fas fa-highlighter,fab fa-hips,fab fa-hire-a-helper,fas fa-history,fas fa-hockey-puck,fas fa-home,fab fa-hooli,fab fa-hornbill,far fa-hospital,fas fa-hospital-alt,fas fa-hospital-symbol,fas fa-hot-tub,fas fa-hotel,fab fa-hotjar,fas fa-hourglass,fas fa-hourglass-end,fas fa-hourglass-half,fas fa-hourglass-start,fab fa-houzz,fab fa-html5,fab fa-hubspot,fas fa-i-cursor,fas fa-id-badge,fas fa-id-card,fas fa-id-card-alt,fas fa-image,fas fa-images,fab fa-imdb,fas fa-inbox,fas fa-indent,fas fa-industry,fas fa-infinity,fas fa-info,fas fa-info-circle,fab fa-instagram,fab fa-internet-explorer,fab fa-ioxhost,fas fa-italic,fab fa-itunes,fab fa-itunes-note,fab fa-java,fas fa-jedi,fab fa-jedi-order,fab fa-jenkins,fab fa-joget,fas fa-joint,fab fa-joomla,fas fa-journal-whills,fab fa-js,fab fa-js-square,fab fa-jsfiddle,fas fa-kaaba,fab fa-kaggle,fas fa-key,fab fa-keybase,fas fa-keyboard,fab fa-keycdn,fas fa-khanda,fab fa-kickstarter,fab fa-kickstarter-k,fas fa-kiss,fas fa-kiss-beam,fas fa-kiss-wink-heart,fas fa-kiwi-bird,fab fa-korvue,fas fa-landmark,fas fa-language,fas fa-laptop,fas fa-laptop-code,fab fa-laravel,fab fa-lastfm,fab fa-lastfm-square,fas fa-laugh,fas fa-laugh-beam,fas fa-laugh-squint,fas fa-laugh-wink,fas fa-layer-group,fas fa-leaf,fab fa-leanpub,fas fa-lemon,fab fa-less,fas fa-less-than,fas fa-less-than-equal,fas fa-level-down-alt,fas fa-level-up-alt,fas fa-life-ring,fas fa-lightbulb,fab fa-line,fas fa-link,fab fa-linkedin,fab fa-linkedin-in,fab fa-linode,fab fa-linux,fas fa-lira-sign,fas fa-list,fas fa-list-alt,fas fa-list-ol,fas fa-list-ul,fas fa-location-arrow,fas fa-lock,fas fa-lock-open,fas fa-long-arrow-alt-down,fas fa-long-arrow-alt-left,fas fa-long-arrow-alt-right,fas fa-long-arrow-alt-up,fas fa-low-vision,fas fa-luggage-cart,fab fa-lyft,fab fa-magento,fas fa-magic,fas fa-magnet,fas fa-mail-bulk,fab fa-mailchimp,fas fa-male,fab fa-mandalorian,fas fa-map,fas fa-map-marked,fas fa-map-marked-alt,fas fa-map-marker,fas fa-map-marker-alt,fas fa-map-pin,fas fa-map-signs,fab fa-markdown,fas fa-marker,fas fa-mars,fas fa-mars-double,fas fa-mars-stroke,fas fa-mars-stroke-h,fas fa-mars-stroke-v,fab fa-mastodon,fab fa-maxcdn,fas fa-medal,fab fa-medapps,fab fa-medium,fab fa-medium-m,fas fa-medkit,fab fa-medrt,fab fa-meetup,fab fa-megaport,fas fa-meh,fas fa-meh-blank,fas fa-meh-rolling-eyes,fas fa-memory,fas fa-menorah,fas fa-mercury,fas fa-microchip,fas fa-microphone,fas fa-microphone-alt,fas fa-microphone-alt-slash,fas fa-microphone-slash,fas fa-microscope,fab fa-microsoft,fas fa-minus,fas fa-minus-circle,fas fa-minus-square,fab fa-mix,fab fa-mixcloud,fab fa-mizuni,fas fa-mobile,fas fa-mobile-alt,fab fa-modx,fab fa-monero,fas fa-money-bill,fas fa-money-bill-alt,fas fa-money-bill-wave,fas fa-money-bill-wave-alt,fas fa-money-check,fas fa-money-check-alt,fas fa-monument,fas fa-moon,fas fa-mortar-pestle,fas fa-mosque,fas fa-motorcycle,fas fa-mouse-pointer,fas fa-music,fab fa-napster,fab fa-neos,fas fa-neuter,fas fa-newspaper,fab fa-nimblr,fab fa-nintendo-switch,fab fa-node,fab fa-node-js,fas fa-not-equal,fas fa-notes-medical,fab fa-npm,fab fa-ns8,fab fa-nutritionix,fas fa-object-group,fas fa-object-ungroup,fab fa-odnoklassniki,fab fa-odnoklassniki-square,fas fa-oil-can,fab fa-old-republic,fas fa-om,fab fa-opencart,fab fa-openid,fab fa-opera,fab fa-optin-monster,fab fa-osi,fas fa-outdent,fab fa-page4,fab fa-pagelines,fas fa-paint-brush,fas fa-paint-roller,fas fa-palette,fab fa-palfed,fas fa-pallet,fas fa-paper-plane,fas fa-paperclip,fas fa-parachute-box,fas fa-paragraph,fas fa-parking,fas fa-passport,fas fa-pastafarianism,fas fa-paste,fab fa-patreon,fas fa-pause,fas fa-pause-circle,fas fa-paw,fab fa-paypal,fas fa-peace,fas fa-pen,fas fa-pen-alt,fas fa-pen-fancy,fas fa-pen-nib,fas fa-pen-square,fas fa-pencil-alt,fas fa-pencil-ruler,fas fa-people-carry,fas fa-percent,fas fa-percentage,fab fa-periscope,fab fa-phabricator,fab fa-phoenix-framework,fab fa-phoenix-squadron,fas fa-phone,fas fa-phone-slash,fas fa-phone-square,fas fa-phone-volume,fab fa-php,fab fa-pied-piper,fab fa-pied-piper-alt,fab fa-pied-piper-hat,fab fa-pied-piper-pp,fas fa-piggy-bank,fas fa-pills,fab fa-pinterest,fab fa-pinterest-p,fab fa-pinterest-square,fas fa-place-of-worship,fas fa-plane,fas fa-plane-arrival,fas fa-plane-departure,fas fa-play,fas fa-play-circle,fab fa-playstation,fas fa-plug,fas fa-plus,fas fa-plus-circle,fas fa-plus-square,fas fa-podcast,fas fa-poll,fas fa-poll-h,fas fa-poo,fas fa-poop,fas fa-portrait,fas fa-pound-sign,fas fa-power-off,fas fa-pray,fas fa-praying-hands,fas fa-prescription,fas fa-prescription-bottle,fas fa-prescription-bottle-alt,fas fa-print,fas fa-procedures,fab fa-product-hunt,fas fa-project-diagram,fab fa-pushed,fas fa-puzzle-piece,fab fa-python,fab fa-qq,fas fa-qrcode,fas fa-question,fas fa-question-circle,fas fa-quidditch,fab fa-quinscape,fab fa-quora,fas fa-quote-left,fas fa-quote-right,fas fa-quran,fab fa-r-project,fas fa-random,fab fa-ravelry,fab fa-react,fab fa-readme,fab fa-rebel,fas fa-receipt,fas fa-recycle,fab fa-red-river,fab fa-reddit,fab fa-reddit-alien,fab fa-reddit-square,fas fa-redo,fas fa-redo-alt,fas fa-registered,fab fa-rendact,fab fa-renren,fas fa-reply,fas fa-reply-all,fab fa-replyd,fab fa-researchgate,fab fa-resolving,fas fa-retweet,fab fa-rev,fas fa-ribbon,fas fa-road,fas fa-robot,fas fa-rocket,fab fa-rocketchat,fab fa-rockrms,fas fa-route,fas fa-rss,fas fa-rss-square,fas fa-ruble-sign,fas fa-ruler,fas fa-ruler-combined,fas fa-ruler-horizontal,fas fa-ruler-vertical,fas fa-rupee-sign,fas fa-sad-cry,fas fa-sad-tear,fab fa-safari,fab fa-sass,fas fa-save,fab fa-schlix,fas fa-school,fas fa-screwdriver,fab fa-scribd,fas fa-search,fas fa-search-dollar,fas fa-search-location,fas fa-search-minus,fas fa-search-plus,fab fa-searchengin,fas fa-seedling,fab fa-sellcast,fab fa-sellsy,fas fa-server,fab fa-servicestack,fas fa-shapes,fas fa-share,fas fa-share-alt,fas fa-share-alt-square,fas fa-share-square,fas fa-shekel-sign,fas fa-shield-alt,fas fa-ship,fas fa-shipping-fast,fab fa-shirtsinbulk,fas fa-shoe-prints,fas fa-shopping-bag,fas fa-shopping-basket,fas fa-shopping-cart,fab fa-shopware,fas fa-shower,fas fa-shuttle-van,fas fa-sign,fas fa-sign-in-alt,fas fa-sign-language,fas fa-sign-out-alt,fas fa-signal,fas fa-signature,fab fa-simplybuilt,fab fa-sistrix,fas fa-sitemap,fab fa-sith,fas fa-skull,fab fa-skyatlas,fab fa-skype,fab fa-slack,fab fa-slack-hash,fas fa-sliders-h,fab fa-slideshare,fas fa-smile,fas fa-smile-beam,fas fa-smile-wink,fas fa-smoking,fas fa-smoking-ban,fab fa-snapchat,fab fa-snapchat-ghost,fab fa-snapchat-square,fas fa-snowflake,fas fa-socks,fas fa-solar-panel,fas fa-sort,fas fa-sort-alpha-down,fas fa-sort-alpha-up,fas fa-sort-amount-down,fas fa-sort-amount-up,fas fa-sort-down,fas fa-sort-numeric-down,fas fa-sort-numeric-up,fas fa-sort-up,fab fa-soundcloud,fas fa-spa,fas fa-space-shuttle,fab fa-speakap,fas fa-spinner,fas fa-splotch,fab fa-spotify,fas fa-spray-can,fas fa-square,fas fa-square-full,fas fa-square-root-alt,fab fa-squarespace,fab fa-stack-exchange,fab fa-stack-overflow,fas fa-stamp,fas fa-star,fas fa-star-and-crescent,fas fa-star-half,fas fa-star-half-alt,fas fa-star-of-david,fas fa-star-of-life,fab fa-staylinked,fab fa-steam,fab fa-steam-square,fab fa-steam-symbol,fas fa-step-backward,fas fa-step-forward,fas fa-stethoscope,fab fa-sticker-mule,fas fa-sticky-note,fas fa-stop,fas fa-stop-circle,fas fa-stopwatch,fas fa-store,fas fa-store-alt,fab fa-strava,fas fa-stream,fas fa-street-view,fas fa-strikethrough,fab fa-stripe,fab fa-stripe-s,fas fa-stroopwafel,fab fa-studiovinari,fab fa-stumbleupon,fab fa-stumbleupon-circle,fas fa-subscript,fas fa-subway,fas fa-suitcase,fas fa-suitcase-rolling,fas fa-sun,fab fa-superpowers,fas fa-superscript,fab fa-supple,fas fa-surprise,fas fa-swatchbook,fas fa-swimmer,fas fa-swimming-pool,fas fa-synagogue,fas fa-sync,fas fa-sync-alt,fas fa-syringe,fas fa-table,fas fa-table-tennis,fas fa-tablet,fas fa-tablet-alt,fas fa-tablets,fas fa-tachometer-alt,fas fa-tag,fas fa-tags,fas fa-tape,fas fa-tasks,fas fa-taxi,fab fa-teamspeak,fas fa-teeth,fas fa-teeth-open,fab fa-telegram,fab fa-telegram-plane,fab fa-tencent-weibo,fas fa-terminal,fas fa-text-height,fas fa-text-width,fas fa-th,fas fa-th-large,fas fa-th-list,fab fa-the-red-yeti,fas fa-theater-masks,fab fa-themeco,fab fa-themeisle,fas fa-thermometer,fas fa-thermometer-empty,fas fa-thermometer-full,fas fa-thermometer-half,fas fa-thermometer-quarter,fas fa-thermometer-three-quarters,fas fa-thumbs-down,fas fa-thumbs-up,fas fa-thumbtack,fas fa-ticket-alt,fas fa-times,fas fa-times-circle,fas fa-tint,fas fa-tint-slash,fas fa-tired,fas fa-toggle-off,fas fa-toggle-on,fas fa-toolbox,fas fa-tooth,fas fa-torah,fas fa-torii-gate,fab fa-trade-federation,fas fa-trademark,fas fa-traffic-light,fas fa-train,fas fa-transgender,fas fa-transgender-alt,fas fa-trash,fas fa-trash-alt,fas fa-tree,fab fa-trello,fab fa-tripadvisor,fas fa-trophy,fas fa-truck,fas fa-truck-loading,fas fa-truck-monster,fas fa-truck-moving,fas fa-truck-pickup,fas fa-tshirt,fas fa-tty,fab fa-tumblr,fab fa-tumblr-square,fas fa-tv,fab fa-twitch,fab fa-twitter,fab fa-twitter-square,fab fa-typo3,fab fa-uber,fab fa-uikit,fas fa-umbrella,fas fa-umbrella-beach,fas fa-underline,fas fa-undo,fas fa-undo-alt,fab fa-uniregistry,fas fa-universal-access,fas fa-university,fas fa-unlink,fas fa-unlock,fas fa-unlock-alt,fab fa-untappd,fas fa-upload,fab fa-usb,fas fa-user,fas fa-user-alt,fas fa-user-alt-slash,fas fa-user-astronaut,fas fa-user-check,fas fa-user-circle,fas fa-user-clock,fas fa-user-cog,fas fa-user-edit,fas fa-user-friends,fas fa-user-graduate,fas fa-user-lock,fas fa-user-md,fas fa-user-minus,fas fa-user-ninja,fas fa-user-plus,fas fa-user-secret,fas fa-user-shield,fas fa-user-slash,fas fa-user-tag,fas fa-user-tie,fas fa-user-times,fas fa-users,fas fa-users-cog,fab fa-ussunnah,fas fa-utensil-spoon,fas fa-utensils,fab fa-vaadin,fas fa-vector-square,fas fa-venus,fas fa-venus-double,fas fa-venus-mars,fab fa-viacoin,fab fa-viadeo,fab fa-viadeo-square,fas fa-vial,fas fa-vials,fab fa-viber,fas fa-video,fas fa-video-slash,fas fa-vihara,fab fa-vimeo,fab fa-vimeo-square,fab fa-vimeo-v,fab fa-vine,fab fa-vk,fab fa-vnv,fas fa-volleyball-ball,fas fa-volume-down,fas fa-volume-off,fas fa-volume-up,fab fa-vuejs,fas fa-walking,fas fa-wallet,fas fa-warehouse,fab fa-weebly,fab fa-weibo,fas fa-weight,fas fa-weight-hanging,fab fa-weixin,fab fa-whatsapp,fab fa-whatsapp-square,fas fa-wheelchair,fab fa-whmcs,fas fa-wifi,fab fa-wikipedia-w,fas fa-window-close,fas fa-window-maximize,fas fa-window-minimize,fas fa-window-restore,fab fa-windows,fas fa-wine-glass,fas fa-wine-glass-alt,fab fa-wix,fab fa-wolf-pack-battalion,fas fa-won-sign,fab fa-wordpress,fab fa-wordpress-simple,fab fa-wpbeginner,fab fa-wpexplorer,fab fa-wpforms,fas fa-wrench,fas fa-x-ray,fab fa-xbox,fab fa-xing,fab fa-xing-square,fab fa-y-combinator,fab fa-yahoo,fab fa-yandex,fab fa-yandex-international,fab fa-yelp,fas fa-yen-sign,fas fa-yin-yang,fab fa-yoast,fab fa-youtube,fab fa-youtube-square,fab fa-zhihu', + ), + 'fontawesome6' => array( + 'name' => 'FontAwesome 6', + 'url' => QUADMENU_PLUGIN_URL . 'assets/frontend/icons/fontawesome6/css/all.min.css', + 'iconmap' => 'fa fa-0,fa fa-1,fa fa-2,fa fa-3,fa fa-4,fa fa-5,fa fa-6,fa fa-7,fa fa-8,fa fa-9,fa fa-fill-drip,fa fa-arrows-to-circle,fa fa-circle-chevron-right,fa fa-chevron-circle-right,fa fa-at,fa fa-trash-can,fa fa-trash-alt,fa fa-text-height,fa fa-user-xmark,fa fa-user-times,fa fa-stethoscope,fa fa-message,fa fa-comment-alt,fa fa-info,fa fa-down-left-and-up-right-to-center,fa fa-compress-alt,fa fa-explosion,fa fa-file-lines,fa fa-file-alt,fa fa-file-text,fa fa-wave-square,fa fa-ring,fa fa-building-un,fa fa-dice-three,fa fa-calendar-days,fa fa-calendar-alt,fa fa-anchor-circle-check,fa fa-building-circle-arrow-right,fa fa-volleyball,fa fa-volleyball-ball,fa fa-arrows-up-to-line,fa fa-sort-down,fa fa-sort-desc,fa fa-circle-minus,fa fa-minus-circle,fa fa-door-open,fa fa-right-from-bracket,fa fa-sign-out-alt,fa fa-atom,fa fa-soap,fa fa-icons,fa fa-heart-music-camera-bolt,fa fa-microphone-lines-slash,fa fa-microphone-alt-slash,fa fa-bridge-circle-check,fa fa-pump-medical,fa fa-fingerprint,fa fa-hand-point-right,fa fa-magnifying-glass-location,fa fa-search-location,fa fa-forward-step,fa fa-step-forward,fa fa-face-smile-beam,fa fa-smile-beam,fa fa-flag-checkered,fa fa-football,fa fa-football-ball,fa fa-school-circle-exclamation,fa fa-crop,fa fa-angles-down,fa fa-angle-double-down,fa fa-users-rectangle,fa fa-people-roof,fa fa-people-line,fa fa-beer-mug-empty,fa fa-beer,fa fa-diagram-predecessor,fa fa-arrow-up-long,fa fa-long-arrow-up,fa fa-fire-flame-simple,fa fa-burn,fa fa-person,fa fa-male,fa fa-laptop,fa fa-file-csv,fa fa-menorah,fa fa-truck-plane,fa fa-record-vinyl,fa fa-face-grin-stars,fa fa-grin-stars,fa fa-bong,fa fa-spaghetti-monster-flying,fa fa-pastafarianism,fa fa-arrow-down-up-across-line,fa fa-spoon,fa fa-utensil-spoon,fa fa-jar-wheat,fa fa-envelopes-bulk,fa fa-mail-bulk,fa fa-file-circle-exclamation,fa fa-circle-h,fa fa-hospital-symbol,fa fa-pager,fa fa-address-book,fa fa-contact-book,fa fa-strikethrough,fa fa-k,fa fa-landmark-flag,fa fa-pencil,fa fa-pencil-alt,fa fa-backward,fa fa-caret-right,fa fa-comments,fa fa-paste,fa fa-file-clipboard,fa fa-code-pull-request,fa fa-clipboard-list,fa fa-truck-ramp-box,fa fa-truck-loading,fa fa-user-check,fa fa-vial-virus,fa fa-sheet-plastic,fa fa-blog,fa fa-user-ninja,fa fa-person-arrow-up-from-line,fa fa-scroll-torah,fa fa-torah,fa fa-broom-ball,fa fa-quidditch,fa fa-quidditch-broom-ball,fa fa-toggle-off,fa fa-box-archive,fa fa-archive,fa fa-person-drowning,fa fa-arrow-down-9-1,fa fa-sort-numeric-desc,fa fa-sort-numeric-down-alt,fa fa-face-grin-tongue-squint,fa fa-grin-tongue-squint,fa fa-spray-can,fa fa-truck-monster,fa fa-w,fa fa-earth-africa,fa fa-globe-africa,fa fa-rainbow,fa fa-circle-notch,fa fa-tablet-screen-button,fa fa-tablet-alt,fa fa-paw,fa fa-cloud,fa fa-trowel-bricks,fa fa-face-flushed,fa fa-flushed,fa fa-hospital-user,fa fa-tent-arrow-left-right,fa fa-gavel,fa fa-legal,fa fa-binoculars,fa fa-microphone-slash,fa fa-box-tissue,fa fa-motorcycle,fa fa-bell-concierge,fa fa-concierge-bell,fa fa-pen-ruler,fa fa-pencil-ruler,fa fa-people-arrows,fa fa-people-arrows-left-right,fa fa-mars-and-venus-burst,fa fa-square-caret-right,fa fa-caret-square-right,fa fa-scissors,fa fa-cut,fa fa-sun-plant-wilt,fa fa-toilets-portable,fa fa-hockey-puck,fa fa-table,fa fa-magnifying-glass-arrow-right,fa fa-tachograph-digital,fa fa-digital-tachograph,fa fa-users-slash,fa fa-clover,fa fa-reply,fa fa-mail-reply,fa fa-star-and-crescent,fa fa-house-fire,fa fa-square-minus,fa fa-minus-square,fa fa-helicopter,fa fa-compass,fa fa-square-caret-down,fa fa-caret-square-down,fa fa-file-circle-question,fa fa-laptop-code,fa fa-swatchbook,fa fa-prescription-bottle,fa fa-bars,fa fa-navicon,fa fa-people-group,fa fa-hourglass-end,fa fa-hourglass-3,fa fa-heart-crack,fa fa-heart-broken,fa fa-square-up-right,fa fa-external-link-square-alt,fa fa-face-kiss-beam,fa fa-kiss-beam,fa fa-film,fa fa-ruler-horizontal,fa fa-people-robbery,fa fa-lightbulb,fa fa-caret-left,fa fa-circle-exclamation,fa fa-exclamation-circle,fa fa-school-circle-xmark,fa fa-arrow-right-from-bracket,fa fa-sign-out,fa fa-circle-chevron-down,fa fa-chevron-circle-down,fa fa-unlock-keyhole,fa fa-unlock-alt,fa fa-cloud-showers-heavy,fa fa-headphones-simple,fa fa-headphones-alt,fa fa-sitemap,fa fa-circle-dollar-to-slot,fa fa-donate,fa fa-memory,fa fa-road-spikes,fa fa-fire-burner,fa fa-flag,fa fa-hanukiah,fa fa-feather,fa fa-volume-low,fa fa-volume-down,fa fa-comment-slash,fa fa-cloud-sun-rain,fa fa-compress,fa fa-wheat-awn,fa fa-wheat-alt,fa fa-ankh,fa fa-hands-holding-child,fa fa-asterisk,fa fa-square-check,fa fa-check-square,fa fa-peseta-sign,fa fa-heading,fa fa-header,fa fa-ghost,fa fa-list,fa fa-list-squares,fa fa-square-phone-flip,fa fa-phone-square-alt,fa fa-cart-plus,fa fa-gamepad,fa fa-circle-dot,fa fa-dot-circle,fa fa-face-dizzy,fa fa-dizzy,fa fa-egg,fa fa-house-medical-circle-xmark,fa fa-campground,fa fa-folder-plus,fa fa-futbol,fa fa-futbol-ball,fa fa-soccer-ball,fa fa-paintbrush,fa fa-paint-brush,fa fa-lock,fa fa-gas-pump,fa fa-hot-tub-person,fa fa-hot-tub,fa fa-map-location,fa fa-map-marked,fa fa-house-flood-water,fa fa-tree,fa fa-bridge-lock,fa fa-sack-dollar,fa fa-pen-to-square,fa fa-edit,fa fa-car-side,fa fa-share-nodes,fa fa-share-alt,fa fa-heart-circle-minus,fa fa-hourglass-half,fa fa-hourglass-2,fa fa-microscope,fa fa-sink,fa fa-bag-shopping,fa fa-shopping-bag,fa fa-arrow-down-z-a,fa fa-sort-alpha-desc,fa fa-sort-alpha-down-alt,fa fa-mitten,fa fa-person-rays,fa fa-users,fa fa-eye-slash,fa fa-flask-vial,fa fa-hand,fa fa-hand-paper,fa fa-om,fa fa-worm,fa fa-house-circle-xmark,fa fa-plug,fa fa-chevron-up,fa fa-hand-spock,fa fa-stopwatch,fa fa-face-kiss,fa fa-kiss,fa fa-bridge-circle-xmark,fa fa-face-grin-tongue,fa fa-grin-tongue,fa fa-chess-bishop,fa fa-face-grin-wink,fa fa-grin-wink,fa fa-ear-deaf,fa fa-deaf,fa fa-deafness,fa fa-hard-of-hearing,fa fa-road-circle-check,fa fa-dice-five,fa fa-square-rss,fa fa-rss-square,fa fa-land-mine-on,fa fa-i-cursor,fa fa-stamp,fa fa-stairs,fa fa-i,fa fa-hryvnia-sign,fa fa-hryvnia,fa fa-pills,fa fa-face-grin-wide,fa fa-grin-alt,fa fa-tooth,fa fa-v,fa fa-bicycle,fa fa-staff-snake,fa fa-rod-asclepius,fa fa-rod-snake,fa fa-staff-aesculapius,fa fa-head-side-cough-slash,fa fa-truck-medical,fa fa-ambulance,fa fa-wheat-awn-circle-exclamation,fa fa-snowman,fa fa-mortar-pestle,fa fa-road-barrier,fa fa-school,fa fa-igloo,fa fa-joint,fa fa-angle-right,fa fa-horse,fa fa-q,fa fa-g,fa fa-notes-medical,fa fa-temperature-half,fa fa-temperature-2,fa fa-thermometer-2,fa fa-thermometer-half,fa fa-dong-sign,fa fa-capsules,fa fa-poo-storm,fa fa-poo-bolt,fa fa-face-frown-open,fa fa-frown-open,fa fa-hand-point-up,fa fa-money-bill,fa fa-bookmark,fa fa-align-justify,fa fa-umbrella-beach,fa fa-helmet-un,fa fa-bullseye,fa fa-bacon,fa fa-hand-point-down,fa fa-arrow-up-from-bracket,fa fa-folder,fa fa-folder-blank,fa fa-file-waveform,fa fa-file-medical-alt,fa fa-radiation,fa fa-chart-simple,fa fa-mars-stroke,fa fa-vial,fa fa-gauge,fa fa-dashboard,fa fa-gauge-med,fa fa-tachometer-alt-average,fa fa-wand-magic-sparkles,fa fa-magic-wand-sparkles,fa fa-e,fa fa-pen-clip,fa fa-pen-alt,fa fa-bridge-circle-exclamation,fa fa-user,fa fa-school-circle-check,fa fa-dumpster,fa fa-van-shuttle,fa fa-shuttle-van,fa fa-building-user,fa fa-square-caret-left,fa fa-caret-square-left,fa fa-highlighter,fa fa-key,fa fa-bullhorn,fa fa-globe,fa fa-synagogue,fa fa-person-half-dress,fa fa-road-bridge,fa fa-location-arrow,fa fa-c,fa fa-tablet-button,fa fa-building-lock,fa fa-pizza-slice,fa fa-money-bill-wave,fa fa-chart-area,fa fa-area-chart,fa fa-house-flag,fa fa-person-circle-minus,fa fa-ban,fa fa-cancel,fa fa-camera-rotate,fa fa-spray-can-sparkles,fa fa-air-freshener,fa fa-star,fa fa-repeat,fa fa-cross,fa fa-box,fa fa-venus-mars,fa fa-arrow-pointer,fa fa-mouse-pointer,fa fa-maximize,fa fa-expand-arrows-alt,fa fa-charging-station,fa fa-shapes,fa fa-triangle-circle-square,fa fa-shuffle,fa fa-random,fa fa-person-running,fa fa-running,fa fa-mobile-retro,fa fa-grip-lines-vertical,fa fa-spider,fa fa-hands-bound,fa fa-file-invoice-dollar,fa fa-plane-circle-exclamation,fa fa-x-ray,fa fa-spell-check,fa fa-slash,fa fa-computer-mouse,fa fa-mouse,fa fa-arrow-right-to-bracket,fa fa-sign-in,fa fa-shop-slash,fa fa-store-alt-slash,fa fa-server,fa fa-virus-covid-slash,fa fa-shop-lock,fa fa-hourglass-start,fa fa-hourglass-1,fa fa-blender-phone,fa fa-building-wheat,fa fa-person-breastfeeding,fa fa-right-to-bracket,fa fa-sign-in-alt,fa fa-venus,fa fa-passport,fa fa-heart-pulse,fa fa-heartbeat,fa fa-people-carry-box,fa fa-people-carry,fa fa-temperature-high,fa fa-microchip,fa fa-crown,fa fa-weight-hanging,fa fa-xmarks-lines,fa fa-file-prescription,fa fa-weight-scale,fa fa-weight,fa fa-user-group,fa fa-user-friends,fa fa-arrow-up-a-z,fa fa-sort-alpha-up,fa fa-chess-knight,fa fa-face-laugh-squint,fa fa-laugh-squint,fa fa-wheelchair,fa fa-circle-arrow-up,fa fa-arrow-circle-up,fa fa-toggle-on,fa fa-person-walking,fa fa-walking,fa fa-l,fa fa-fire,fa fa-bed-pulse,fa fa-procedures,fa fa-shuttle-space,fa fa-space-shuttle,fa fa-face-laugh,fa fa-laugh,fa fa-folder-open,fa fa-heart-circle-plus,fa fa-code-fork,fa fa-city,fa fa-microphone-lines,fa fa-microphone-alt,fa fa-pepper-hot,fa fa-unlock,fa fa-colon-sign,fa fa-headset,fa fa-store-slash,fa fa-road-circle-xmark,fa fa-user-minus,fa fa-mars-stroke-up,fa fa-mars-stroke-v,fa fa-champagne-glasses,fa fa-glass-cheers,fa fa-clipboard,fa fa-house-circle-exclamation,fa fa-file-arrow-up,fa fa-file-upload,fa fa-wifi,fa fa-wifi-3,fa fa-wifi-strong,fa fa-bath,fa fa-bathtub,fa fa-underline,fa fa-user-pen,fa fa-user-edit,fa fa-signature,fa fa-stroopwafel,fa fa-bold,fa fa-anchor-lock,fa fa-building-ngo,fa fa-manat-sign,fa fa-not-equal,fa fa-border-top-left,fa fa-border-style,fa fa-map-location-dot,fa fa-map-marked-alt,fa fa-jedi,fa fa-square-poll-vertical,fa fa-poll,fa fa-mug-hot,fa fa-car-battery,fa fa-battery-car,fa fa-gift,fa fa-dice-two,fa fa-chess-queen,fa fa-glasses,fa fa-chess-board,fa fa-building-circle-check,fa fa-person-chalkboard,fa fa-mars-stroke-right,fa fa-mars-stroke-h,fa fa-hand-back-fist,fa fa-hand-rock,fa fa-square-caret-up,fa fa-caret-square-up,fa fa-cloud-showers-water,fa fa-chart-bar,fa fa-bar-chart,fa fa-hands-bubbles,fa fa-hands-wash,fa fa-less-than-equal,fa fa-train,fa fa-eye-low-vision,fa fa-low-vision,fa fa-crow,fa fa-sailboat,fa fa-window-restore,fa fa-square-plus,fa fa-plus-square,fa fa-torii-gate,fa fa-frog,fa fa-bucket,fa fa-image,fa fa-microphone,fa fa-cow,fa fa-caret-up,fa fa-screwdriver,fa fa-folder-closed,fa fa-house-tsunami,fa fa-square-nfi,fa fa-arrow-up-from-ground-water,fa fa-martini-glass,fa fa-glass-martini-alt,fa fa-rotate-left,fa fa-rotate-back,fa fa-rotate-backward,fa fa-undo-alt,fa fa-table-columns,fa fa-columns,fa fa-lemon,fa fa-head-side-mask,fa fa-handshake,fa fa-gem,fa fa-dolly,fa fa-dolly-box,fa fa-smoking,fa fa-minimize,fa fa-compress-arrows-alt,fa fa-monument,fa fa-snowplow,fa fa-angles-right,fa fa-angle-double-right,fa fa-cannabis,fa fa-circle-play,fa fa-play-circle,fa fa-tablets,fa fa-ethernet,fa fa-euro-sign,fa fa-eur,fa fa-euro,fa fa-chair,fa fa-circle-check,fa fa-check-circle,fa fa-circle-stop,fa fa-stop-circle,fa fa-compass-drafting,fa fa-drafting-compass,fa fa-plate-wheat,fa fa-icicles,fa fa-person-shelter,fa fa-neuter,fa fa-id-badge,fa fa-marker,fa fa-face-laugh-beam,fa fa-laugh-beam,fa fa-helicopter-symbol,fa fa-universal-access,fa fa-circle-chevron-up,fa fa-chevron-circle-up,fa fa-lari-sign,fa fa-volcano,fa fa-person-walking-dashed-line-arrow-right,fa fa-sterling-sign,fa fa-gbp,fa fa-pound-sign,fa fa-viruses,fa fa-square-person-confined,fa fa-user-tie,fa fa-arrow-down-long,fa fa-long-arrow-down,fa fa-tent-arrow-down-to-line,fa fa-certificate,fa fa-reply-all,fa fa-mail-reply-all,fa fa-suitcase,fa fa-person-skating,fa fa-skating,fa fa-filter-circle-dollar,fa fa-funnel-dollar,fa fa-camera-retro,fa fa-circle-arrow-down,fa fa-arrow-circle-down,fa fa-file-import,fa fa-arrow-right-to-file,fa fa-square-arrow-up-right,fa fa-external-link-square,fa fa-box-open,fa fa-scroll,fa fa-spa,fa fa-location-pin-lock,fa fa-pause,fa fa-hill-avalanche,fa fa-temperature-empty,fa fa-temperature-0,fa fa-thermometer-0,fa fa-thermometer-empty,fa fa-bomb,fa fa-registered,fa fa-address-card,fa fa-contact-card,fa fa-vcard,fa fa-scale-unbalanced-flip,fa fa-balance-scale-right,fa fa-subscript,fa fa-diamond-turn-right,fa fa-directions,fa fa-burst,fa fa-house-laptop,fa fa-laptop-house,fa fa-face-tired,fa fa-tired,fa fa-money-bills,fa fa-smog,fa fa-crutch,fa fa-cloud-arrow-up,fa fa-cloud-upload,fa fa-cloud-upload-alt,fa fa-palette,fa fa-arrows-turn-right,fa fa-vest,fa fa-ferry,fa fa-arrows-down-to-people,fa fa-seedling,fa fa-sprout,fa fa-left-right,fa fa-arrows-alt-h,fa fa-boxes-packing,fa fa-circle-arrow-left,fa fa-arrow-circle-left,fa fa-group-arrows-rotate,fa fa-bowl-food,fa fa-candy-cane,fa fa-arrow-down-wide-short,fa fa-sort-amount-asc,fa fa-sort-amount-down,fa fa-cloud-bolt,fa fa-thunderstorm,fa fa-text-slash,fa fa-remove-format,fa fa-face-smile-wink,fa fa-smile-wink,fa fa-file-word,fa fa-file-powerpoint,fa fa-arrows-left-right,fa fa-arrows-h,fa fa-house-lock,fa fa-cloud-arrow-down,fa fa-cloud-download,fa fa-cloud-download-alt,fa fa-children,fa fa-chalkboard,fa fa-blackboard,fa fa-user-large-slash,fa fa-user-alt-slash,fa fa-envelope-open,fa fa-handshake-simple-slash,fa fa-handshake-alt-slash,fa fa-mattress-pillow,fa fa-guarani-sign,fa fa-arrows-rotate,fa fa-refresh,fa fa-sync,fa fa-fire-extinguisher,fa fa-cruzeiro-sign,fa fa-greater-than-equal,fa fa-shield-halved,fa fa-shield-alt,fa fa-book-atlas,fa fa-atlas,fa fa-virus,fa fa-envelope-circle-check,fa fa-layer-group,fa fa-arrows-to-dot,fa fa-archway,fa fa-heart-circle-check,fa fa-house-chimney-crack,fa fa-house-damage,fa fa-file-zipper,fa fa-file-archive,fa fa-square,fa fa-martini-glass-empty,fa fa-glass-martini,fa fa-couch,fa fa-cedi-sign,fa fa-italic,fa fa-church,fa fa-comments-dollar,fa fa-democrat,fa fa-z,fa fa-person-skiing,fa fa-skiing,fa fa-road-lock,fa fa-a,fa fa-temperature-arrow-down,fa fa-temperature-down,fa fa-feather-pointed,fa fa-feather-alt,fa fa-p,fa fa-snowflake,fa fa-newspaper,fa fa-rectangle-ad,fa fa-ad,fa fa-circle-arrow-right,fa fa-arrow-circle-right,fa fa-filter-circle-xmark,fa fa-locust,fa fa-sort,fa fa-unsorted,fa fa-list-ol,fa fa-list-1-2,fa fa-list-numeric,fa fa-person-dress-burst,fa fa-money-check-dollar,fa fa-money-check-alt,fa fa-vector-square,fa fa-bread-slice,fa fa-language,fa fa-face-kiss-wink-heart,fa fa-kiss-wink-heart,fa fa-filter,fa fa-question,fa fa-file-signature,fa fa-up-down-left-right,fa fa-arrows-alt,fa fa-house-chimney-user,fa fa-hand-holding-heart,fa fa-puzzle-piece,fa fa-money-check,fa fa-star-half-stroke,fa fa-star-half-alt,fa fa-code,fa fa-whiskey-glass,fa fa-glass-whiskey,fa fa-building-circle-exclamation,fa fa-magnifying-glass-chart,fa fa-arrow-up-right-from-square,fa fa-external-link,fa fa-cubes-stacked,fa fa-won-sign,fa fa-krw,fa fa-won,fa fa-virus-covid,fa fa-austral-sign,fa fa-f,fa fa-leaf,fa fa-road,fa fa-taxi,fa fa-cab,fa fa-person-circle-plus,fa fa-chart-pie,fa fa-pie-chart,fa fa-bolt-lightning,fa fa-sack-xmark,fa fa-file-excel,fa fa-file-contract,fa fa-fish-fins,fa fa-building-flag,fa fa-face-grin-beam,fa fa-grin-beam,fa fa-object-ungroup,fa fa-poop,fa fa-location-pin,fa fa-map-marker,fa fa-kaaba,fa fa-toilet-paper,fa fa-helmet-safety,fa fa-hard-hat,fa fa-hat-hard,fa fa-eject,fa fa-circle-right,fa fa-arrow-alt-circle-right,fa fa-plane-circle-check,fa fa-face-rolling-eyes,fa fa-meh-rolling-eyes,fa fa-object-group,fa fa-chart-line,fa fa-line-chart,fa fa-mask-ventilator,fa fa-arrow-right,fa fa-signs-post,fa fa-map-signs,fa fa-cash-register,fa fa-person-circle-question,fa fa-h,fa fa-tarp,fa fa-screwdriver-wrench,fa fa-tools,fa fa-arrows-to-eye,fa fa-plug-circle-bolt,fa fa-heart,fa fa-mars-and-venus,fa fa-house-user,fa fa-home-user,fa fa-dumpster-fire,fa fa-house-crack,fa fa-martini-glass-citrus,fa fa-cocktail,fa fa-face-surprise,fa fa-surprise,fa fa-bottle-water,fa fa-circle-pause,fa fa-pause-circle,fa fa-toilet-paper-slash,fa fa-apple-whole,fa fa-apple-alt,fa fa-kitchen-set,fa fa-r,fa fa-temperature-quarter,fa fa-temperature-1,fa fa-thermometer-1,fa fa-thermometer-quarter,fa fa-cube,fa fa-bitcoin-sign,fa fa-shield-dog,fa fa-solar-panel,fa fa-lock-open,fa fa-elevator,fa fa-money-bill-transfer,fa fa-money-bill-trend-up,fa fa-house-flood-water-circle-arrow-right,fa fa-square-poll-horizontal,fa fa-poll-h,fa fa-circle,fa fa-backward-fast,fa fa-fast-backward,fa fa-recycle,fa fa-user-astronaut,fa fa-plane-slash,fa fa-trademark,fa fa-basketball,fa fa-basketball-ball,fa fa-satellite-dish,fa fa-circle-up,fa fa-arrow-alt-circle-up,fa fa-mobile-screen-button,fa fa-mobile-alt,fa fa-volume-high,fa fa-volume-up,fa fa-users-rays,fa fa-wallet,fa fa-clipboard-check,fa fa-file-audio,fa fa-burger,fa fa-hamburger,fa fa-wrench,fa fa-bugs,fa fa-rupee-sign,fa fa-rupee,fa fa-file-image,fa fa-circle-question,fa fa-question-circle,fa fa-plane-departure,fa fa-handshake-slash,fa fa-book-bookmark,fa fa-code-branch,fa fa-hat-cowboy,fa fa-bridge,fa fa-phone-flip,fa fa-phone-alt,fa fa-truck-front,fa fa-cat,fa fa-anchor-circle-exclamation,fa fa-truck-field,fa fa-route,fa fa-clipboard-question,fa fa-panorama,fa fa-comment-medical,fa fa-teeth-open,fa fa-file-circle-minus,fa fa-tags,fa fa-wine-glass,fa fa-forward-fast,fa fa-fast-forward,fa fa-face-meh-blank,fa fa-meh-blank,fa fa-square-parking,fa fa-parking,fa fa-house-signal,fa fa-bars-progress,fa fa-tasks-alt,fa fa-faucet-drip,fa fa-cart-flatbed,fa fa-dolly-flatbed,fa fa-ban-smoking,fa fa-smoking-ban,fa fa-terminal,fa fa-mobile-button,fa fa-house-medical-flag,fa fa-basket-shopping,fa fa-shopping-basket,fa fa-tape,fa fa-bus-simple,fa fa-bus-alt,fa fa-eye,fa fa-face-sad-cry,fa fa-sad-cry,fa fa-audio-description,fa fa-person-military-to-person,fa fa-file-shield,fa fa-user-slash,fa fa-pen,fa fa-tower-observation,fa fa-file-code,fa fa-signal,fa fa-signal-5,fa fa-signal-perfect,fa fa-bus,fa fa-heart-circle-xmark,fa fa-house-chimney,fa fa-home-lg,fa fa-window-maximize,fa fa-face-frown,fa fa-frown,fa fa-prescription,fa fa-shop,fa fa-store-alt,fa fa-floppy-disk,fa fa-save,fa fa-vihara,fa fa-scale-unbalanced,fa fa-balance-scale-left,fa fa-sort-up,fa fa-sort-asc,fa fa-comment-dots,fa fa-commenting,fa fa-plant-wilt,fa fa-diamond,fa fa-face-grin-squint,fa fa-grin-squint,fa fa-hand-holding-dollar,fa fa-hand-holding-usd,fa fa-bacterium,fa fa-hand-pointer,fa fa-drum-steelpan,fa fa-hand-scissors,fa fa-hands-praying,fa fa-praying-hands,fa fa-arrow-rotate-right,fa fa-arrow-right-rotate,fa fa-arrow-rotate-forward,fa fa-redo,fa fa-biohazard,fa fa-location-crosshairs,fa fa-location,fa fa-mars-double,fa fa-child-dress,fa fa-users-between-lines,fa fa-lungs-virus,fa fa-face-grin-tears,fa fa-grin-tears,fa fa-phone,fa fa-calendar-xmark,fa fa-calendar-times,fa fa-child-reaching,fa fa-head-side-virus,fa fa-user-gear,fa fa-user-cog,fa fa-arrow-up-1-9,fa fa-sort-numeric-up,fa fa-door-closed,fa fa-shield-virus,fa fa-dice-six,fa fa-mosquito-net,fa fa-bridge-water,fa fa-person-booth,fa fa-text-width,fa fa-hat-wizard,fa fa-pen-fancy,fa fa-person-digging,fa fa-digging,fa fa-trash,fa fa-gauge-simple,fa fa-gauge-simple-med,fa fa-tachometer-average,fa fa-book-medical,fa fa-poo,fa fa-quote-right,fa fa-quote-right-alt,fa fa-shirt,fa fa-t-shirt,fa fa-tshirt,fa fa-cubes,fa fa-divide,fa fa-tenge-sign,fa fa-tenge,fa fa-headphones,fa fa-hands-holding,fa fa-hands-clapping,fa fa-republican,fa fa-arrow-left,fa fa-person-circle-xmark,fa fa-ruler,fa fa-align-left,fa fa-dice-d6,fa fa-restroom,fa fa-j,fa fa-users-viewfinder,fa fa-file-video,fa fa-up-right-from-square,fa fa-external-link-alt,fa fa-table-cells,fa fa-th,fa fa-file-pdf,fa fa-book-bible,fa fa-bible,fa fa-o,fa fa-suitcase-medical,fa fa-medkit,fa fa-user-secret,fa fa-otter,fa fa-person-dress,fa fa-female,fa fa-comment-dollar,fa fa-business-time,fa fa-briefcase-clock,fa fa-table-cells-large,fa fa-th-large,fa fa-book-tanakh,fa fa-tanakh,fa fa-phone-volume,fa fa-volume-control-phone,fa fa-hat-cowboy-side,fa fa-clipboard-user,fa fa-child,fa fa-lira-sign,fa fa-satellite,fa fa-plane-lock,fa fa-tag,fa fa-comment,fa fa-cake-candles,fa fa-birthday-cake,fa fa-cake,fa fa-envelope,fa fa-angles-up,fa fa-angle-double-up,fa fa-paperclip,fa fa-arrow-right-to-city,fa fa-ribbon,fa fa-lungs,fa fa-arrow-up-9-1,fa fa-sort-numeric-up-alt,fa fa-litecoin-sign,fa fa-border-none,fa fa-circle-nodes,fa fa-parachute-box,fa fa-indent,fa fa-truck-field-un,fa fa-hourglass,fa fa-hourglass-empty,fa fa-mountain,fa fa-user-doctor,fa fa-user-md,fa fa-circle-info,fa fa-info-circle,fa fa-cloud-meatball,fa fa-camera,fa fa-camera-alt,fa fa-square-virus,fa fa-meteor,fa fa-car-on,fa fa-sleigh,fa fa-arrow-down-1-9,fa fa-sort-numeric-asc,fa fa-sort-numeric-down,fa fa-hand-holding-droplet,fa fa-hand-holding-water,fa fa-water,fa fa-calendar-check,fa fa-braille,fa fa-prescription-bottle-medical,fa fa-prescription-bottle-alt,fa fa-landmark,fa fa-truck,fa fa-crosshairs,fa fa-person-cane,fa fa-tent,fa fa-vest-patches,fa fa-check-double,fa fa-arrow-down-a-z,fa fa-sort-alpha-asc,fa fa-sort-alpha-down,fa fa-money-bill-wheat,fa fa-cookie,fa fa-arrow-rotate-left,fa fa-arrow-left-rotate,fa fa-arrow-rotate-back,fa fa-arrow-rotate-backward,fa fa-undo,fa fa-hard-drive,fa fa-hdd,fa fa-face-grin-squint-tears,fa fa-grin-squint-tears,fa fa-dumbbell,fa fa-rectangle-list,fa fa-list-alt,fa fa-tarp-droplet,fa fa-house-medical-circle-check,fa fa-person-skiing-nordic,fa fa-skiing-nordic,fa fa-calendar-plus,fa fa-plane-arrival,fa fa-circle-left,fa fa-arrow-alt-circle-left,fa fa-train-subway,fa fa-subway,fa fa-chart-gantt,fa fa-indian-rupee-sign,fa fa-indian-rupee,fa fa-inr,fa fa-crop-simple,fa fa-crop-alt,fa fa-money-bill-1,fa fa-money-bill-alt,fa fa-left-long,fa fa-long-arrow-alt-left,fa fa-dna,fa fa-virus-slash,fa fa-minus,fa fa-subtract,fa fa-child-rifle,fa fa-chess,fa fa-arrow-left-long,fa fa-long-arrow-left,fa fa-plug-circle-check,fa fa-street-view,fa fa-franc-sign,fa fa-volume-off,fa fa-hands-asl-interpreting,fa fa-american-sign-language-interpreting,fa fa-asl-interpreting,fa fa-hands-american-sign-language-interpreting,fa fa-gear,fa fa-cog,fa fa-droplet-slash,fa fa-tint-slash,fa fa-mosque,fa fa-mosquito,fa fa-star-of-david,fa fa-person-military-rifle,fa fa-cart-shopping,fa fa-shopping-cart,fa fa-vials,fa fa-plug-circle-plus,fa fa-place-of-worship,fa fa-grip-vertical,fa fa-arrow-turn-up,fa fa-level-up,fa fa-u,fa fa-square-root-variable,fa fa-square-root-alt,fa fa-clock,fa fa-clock-four,fa fa-backward-step,fa fa-step-backward,fa fa-pallet,fa fa-faucet,fa fa-baseball-bat-ball,fa fa-s,fa fa-timeline,fa fa-keyboard,fa fa-caret-down,fa fa-house-chimney-medical,fa fa-clinic-medical,fa fa-temperature-three-quarters,fa fa-temperature-3,fa fa-thermometer-3,fa fa-thermometer-three-quarters,fa fa-mobile-screen,fa fa-mobile-android-alt,fa fa-plane-up,fa fa-piggy-bank,fa fa-battery-half,fa fa-battery-3,fa fa-mountain-city,fa fa-coins,fa fa-khanda,fa fa-sliders,fa fa-sliders-h,fa fa-folder-tree,fa fa-network-wired,fa fa-map-pin,fa fa-hamsa,fa fa-cent-sign,fa fa-flask,fa fa-person-pregnant,fa fa-wand-sparkles,fa fa-ellipsis-vertical,fa fa-ellipsis-v,fa fa-ticket,fa fa-power-off,fa fa-right-long,fa fa-long-arrow-alt-right,fa fa-flag-usa,fa fa-laptop-file,fa fa-tty,fa fa-teletype,fa fa-diagram-next,fa fa-person-rifle,fa fa-house-medical-circle-exclamation,fa fa-closed-captioning,fa fa-person-hiking,fa fa-hiking,fa fa-venus-double,fa fa-images,fa fa-calculator,fa fa-people-pulling,fa fa-n,fa fa-cable-car,fa fa-tram,fa fa-cloud-rain,fa fa-building-circle-xmark,fa fa-ship,fa fa-arrows-down-to-line,fa fa-download,fa fa-face-grin,fa fa-grin,fa fa-delete-left,fa fa-backspace,fa fa-eye-dropper,fa fa-eye-dropper-empty,fa fa-eyedropper,fa fa-file-circle-check,fa fa-forward,fa fa-mobile,fa fa-mobile-android,fa fa-mobile-phone,fa fa-face-meh,fa fa-meh,fa fa-align-center,fa fa-book-skull,fa fa-book-dead,fa fa-id-card,fa fa-drivers-license,fa fa-outdent,fa fa-dedent,fa fa-heart-circle-exclamation,fa fa-house,fa fa-home,fa fa-home-alt,fa fa-home-lg-alt,fa fa-calendar-week,fa fa-laptop-medical,fa fa-b,fa fa-file-medical,fa fa-dice-one,fa fa-kiwi-bird,fa fa-arrow-right-arrow-left,fa fa-exchange,fa fa-rotate-right,fa fa-redo-alt,fa fa-rotate-forward,fa fa-utensils,fa fa-cutlery,fa fa-arrow-up-wide-short,fa fa-sort-amount-up,fa fa-mill-sign,fa fa-bowl-rice,fa fa-skull,fa fa-tower-broadcast,fa fa-broadcast-tower,fa fa-truck-pickup,fa fa-up-long,fa fa-long-arrow-alt-up,fa fa-stop,fa fa-code-merge,fa fa-upload,fa fa-hurricane,fa fa-mound,fa fa-toilet-portable,fa fa-compact-disc,fa fa-file-arrow-down,fa fa-file-download,fa fa-caravan,fa fa-shield-cat,fa fa-bolt,fa fa-zap,fa fa-glass-water,fa fa-oil-well,fa fa-vault,fa fa-mars,fa fa-toilet,fa fa-plane-circle-xmark,fa fa-yen-sign,fa fa-cny,fa fa-jpy,fa fa-rmb,fa fa-yen,fa fa-ruble-sign,fa fa-rouble,fa fa-rub,fa fa-ruble,fa fa-sun,fa fa-guitar,fa fa-face-laugh-wink,fa fa-laugh-wink,fa fa-horse-head,fa fa-bore-hole,fa fa-industry,fa fa-circle-down,fa fa-arrow-alt-circle-down,fa fa-arrows-turn-to-dots,fa fa-florin-sign,fa fa-arrow-down-short-wide,fa fa-sort-amount-desc,fa fa-sort-amount-down-alt,fa fa-less-than,fa fa-angle-down,fa fa-car-tunnel,fa fa-head-side-cough,fa fa-grip-lines,fa fa-thumbs-down,fa fa-user-lock,fa fa-arrow-right-long,fa fa-long-arrow-right,fa fa-anchor-circle-xmark,fa fa-ellipsis,fa fa-ellipsis-h,fa fa-chess-pawn,fa fa-kit-medical,fa fa-first-aid,fa fa-person-through-window,fa fa-toolbox,fa fa-hands-holding-circle,fa fa-bug,fa fa-credit-card,fa fa-credit-card-alt,fa fa-car,fa fa-automobile,fa fa-hand-holding-hand,fa fa-book-open-reader,fa fa-book-reader,fa fa-mountain-sun,fa fa-arrows-left-right-to-line,fa fa-dice-d20,fa fa-truck-droplet,fa fa-file-circle-xmark,fa fa-temperature-arrow-up,fa fa-temperature-up,fa fa-medal,fa fa-bed,fa fa-square-h,fa fa-h-square,fa fa-podcast,fa fa-temperature-full,fa fa-temperature-4,fa fa-thermometer-4,fa fa-thermometer-full,fa fa-bell,fa fa-superscript,fa fa-plug-circle-xmark,fa fa-star-of-life,fa fa-phone-slash,fa fa-paint-roller,fa fa-handshake-angle,fa fa-hands-helping,fa fa-location-dot,fa fa-map-marker-alt,fa fa-file,fa fa-greater-than,fa fa-person-swimming,fa fa-swimmer,fa fa-arrow-down,fa fa-droplet,fa fa-tint,fa fa-eraser,fa fa-earth-americas,fa fa-earth,fa fa-earth-america,fa fa-globe-americas,fa fa-person-burst,fa fa-dove,fa fa-battery-empty,fa fa-battery-0,fa fa-socks,fa fa-inbox,fa fa-section,fa fa-gauge-high,fa fa-tachometer-alt,fa fa-tachometer-alt-fast,fa fa-envelope-open-text,fa fa-hospital,fa fa-hospital-alt,fa fa-hospital-wide,fa fa-wine-bottle,fa fa-chess-rook,fa fa-bars-staggered,fa fa-reorder,fa fa-stream,fa fa-dharmachakra,fa fa-hotdog,fa fa-person-walking-with-cane,fa fa-blind,fa fa-drum,fa fa-ice-cream,fa fa-heart-circle-bolt,fa fa-fax,fa fa-paragraph,fa fa-check-to-slot,fa fa-vote-yea,fa fa-star-half,fa fa-boxes-stacked,fa fa-boxes,fa fa-boxes-alt,fa fa-link,fa fa-chain,fa fa-ear-listen,fa fa-assistive-listening-systems,fa fa-tree-city,fa fa-play,fa fa-font,fa fa-rupiah-sign,fa fa-magnifying-glass,fa fa-search,fa fa-table-tennis-paddle-ball,fa fa-ping-pong-paddle-ball,fa fa-table-tennis,fa fa-person-dots-from-line,fa fa-diagnoses,fa fa-trash-can-arrow-up,fa fa-trash-restore-alt,fa fa-naira-sign,fa fa-cart-arrow-down,fa fa-walkie-talkie,fa fa-file-pen,fa fa-file-edit,fa fa-receipt,fa fa-square-pen,fa fa-pen-square,fa fa-pencil-square,fa fa-suitcase-rolling,fa fa-person-circle-exclamation,fa fa-chevron-down,fa fa-battery-full,fa fa-battery,fa fa-battery-5,fa fa-skull-crossbones,fa fa-code-compare,fa fa-list-ul,fa fa-list-dots,fa fa-school-lock,fa fa-tower-cell,fa fa-down-long,fa fa-long-arrow-alt-down,fa fa-ranking-star,fa fa-chess-king,fa fa-person-harassing,fa fa-brazilian-real-sign,fa fa-landmark-dome,fa fa-landmark-alt,fa fa-arrow-up,fa fa-tv,fa fa-television,fa fa-tv-alt,fa fa-shrimp,fa fa-list-check,fa fa-tasks,fa fa-jug-detergent,fa fa-circle-user,fa fa-user-circle,fa fa-user-shield,fa fa-wind,fa fa-car-burst,fa fa-car-crash,fa fa-y,fa fa-person-snowboarding,fa fa-snowboarding,fa fa-truck-fast,fa fa-shipping-fast,fa fa-fish,fa fa-user-graduate,fa fa-circle-half-stroke,fa fa-adjust,fa fa-clapperboard,fa fa-circle-radiation,fa fa-radiation-alt,fa fa-baseball,fa fa-baseball-ball,fa fa-jet-fighter-up,fa fa-diagram-project,fa fa-project-diagram,fa fa-copy,fa fa-volume-xmark,fa fa-volume-mute,fa fa-volume-times,fa fa-hand-sparkles,fa fa-grip,fa fa-grip-horizontal,fa fa-share-from-square,fa fa-share-square,fa fa-gun,fa fa-square-phone,fa fa-phone-square,fa fa-plus,fa fa-add,fa fa-expand,fa fa-computer,fa fa-xmark,fa fa-close,fa fa-multiply,fa fa-remove,fa fa-times,fa fa-arrows-up-down-left-right,fa fa-arrows,fa fa-chalkboard-user,fa fa-chalkboard-teacher,fa fa-peso-sign,fa fa-building-shield,fa fa-baby,fa fa-users-line,fa fa-quote-left,fa fa-quote-left-alt,fa fa-tractor,fa fa-trash-arrow-up,fa fa-trash-restore,fa fa-arrow-down-up-lock,fa fa-lines-leaning,fa fa-ruler-combined,fa fa-copyright,fa fa-equals,fa fa-blender,fa fa-teeth,fa fa-shekel-sign,fa fa-ils,fa fa-shekel,fa fa-sheqel,fa fa-sheqel-sign,fa fa-map,fa fa-rocket,fa fa-photo-film,fa fa-photo-video,fa fa-folder-minus,fa fa-store,fa fa-arrow-trend-up,fa fa-plug-circle-minus,fa fa-sign-hanging,fa fa-sign,fa fa-bezier-curve,fa fa-bell-slash,fa fa-tablet,fa fa-tablet-android,fa fa-school-flag,fa fa-fill,fa fa-angle-up,fa fa-drumstick-bite,fa fa-holly-berry,fa fa-chevron-left,fa fa-bacteria,fa fa-hand-lizard,fa fa-disease,fa fa-briefcase-medical,fa fa-genderless,fa fa-chevron-right,fa fa-retweet,fa fa-car-rear,fa fa-car-alt,fa fa-pump-soap,fa fa-video-slash,fa fa-battery-quarter,fa fa-battery-2,fa fa-radio,fa fa-baby-carriage,fa fa-carriage-baby,fa fa-traffic-light,fa fa-thermometer,fa fa-vr-cardboard,fa fa-hand-middle-finger,fa fa-percent,fa fa-percentage,fa fa-truck-moving,fa fa-glass-water-droplet,fa fa-display,fa fa-face-smile,fa fa-smile,fa fa-thumbtack,fa fa-thumb-tack,fa fa-trophy,fa fa-person-praying,fa fa-pray,fa fa-hammer,fa fa-hand-peace,fa fa-rotate,fa fa-sync-alt,fa fa-spinner,fa fa-robot,fa fa-peace,fa fa-gears,fa fa-cogs,fa fa-warehouse,fa fa-arrow-up-right-dots,fa fa-splotch,fa fa-face-grin-hearts,fa fa-grin-hearts,fa fa-dice-four,fa fa-sim-card,fa fa-transgender,fa fa-transgender-alt,fa fa-mercury,fa fa-arrow-turn-down,fa fa-level-down,fa fa-person-falling-burst,fa fa-award,fa fa-ticket-simple,fa fa-ticket-alt,fa fa-building,fa fa-angles-left,fa fa-angle-double-left,fa fa-qrcode,fa fa-clock-rotate-left,fa fa-history,fa fa-face-grin-beam-sweat,fa fa-grin-beam-sweat,fa fa-file-export,fa fa-arrow-right-from-file,fa fa-shield,fa fa-shield-blank,fa fa-arrow-up-short-wide,fa fa-sort-amount-up-alt,fa fa-house-medical,fa fa-golf-ball-tee,fa fa-golf-ball,fa fa-circle-chevron-left,fa fa-chevron-circle-left,fa fa-house-chimney-window,fa fa-pen-nib,fa fa-tent-arrow-turn-left,fa fa-tents,fa fa-wand-magic,fa fa-magic,fa fa-dog,fa fa-carrot,fa fa-moon,fa fa-wine-glass-empty,fa fa-wine-glass-alt,fa fa-cheese,fa fa-yin-yang,fa fa-music,fa fa-code-commit,fa fa-temperature-low,fa fa-person-biking,fa fa-biking,fa fa-broom,fa fa-shield-heart,fa fa-gopuram,fa fa-earth-oceania,fa fa-globe-oceania,fa fa-square-xmark,fa fa-times-square,fa fa-xmark-square,fa fa-hashtag,fa fa-up-right-and-down-left-from-center,fa fa-expand-alt,fa fa-oil-can,fa fa-t,fa fa-hippo,fa fa-chart-column,fa fa-infinity,fa fa-vial-circle-check,fa fa-person-arrow-down-to-line,fa fa-voicemail,fa fa-fan,fa fa-person-walking-luggage,fa fa-up-down,fa fa-arrows-alt-v,fa fa-cloud-moon-rain,fa fa-calendar,fa fa-trailer,fa fa-bahai,fa fa-haykal,fa fa-sd-card,fa fa-dragon,fa fa-shoe-prints,fa fa-circle-plus,fa fa-plus-circle,fa fa-face-grin-tongue-wink,fa fa-grin-tongue-wink,fa fa-hand-holding,fa fa-plug-circle-exclamation,fa fa-link-slash,fa fa-chain-broken,fa fa-chain-slash,fa fa-unlink,fa fa-clone,fa fa-person-walking-arrow-loop-left,fa fa-arrow-up-z-a,fa fa-sort-alpha-up-alt,fa fa-fire-flame-curved,fa fa-fire-alt,fa fa-tornado,fa fa-file-circle-plus,fa fa-book-quran,fa fa-quran,fa fa-anchor,fa fa-border-all,fa fa-face-angry,fa fa-angry,fa fa-cookie-bite,fa fa-arrow-trend-down,fa fa-rss,fa fa-feed,fa fa-draw-polygon,fa fa-scale-balanced,fa fa-balance-scale,fa fa-gauge-simple-high,fa fa-tachometer,fa fa-tachometer-fast,fa fa-shower,fa fa-desktop,fa fa-desktop-alt,fa fa-m,fa fa-table-list,fa fa-th-list,fa fa-comment-sms,fa fa-sms,fa fa-book,fa fa-user-plus,fa fa-check,fa fa-battery-three-quarters,fa fa-battery-4,fa fa-house-circle-check,fa fa-angle-left,fa fa-diagram-successor,fa fa-truck-arrow-right,fa fa-arrows-split-up-and-left,fa fa-hand-fist,fa fa-fist-raised,fa fa-cloud-moon,fa fa-briefcase,fa fa-person-falling,fa fa-image-portrait,fa fa-portrait,fa fa-user-tag,fa fa-rug,fa fa-earth-europe,fa fa-globe-europe,fa fa-cart-flatbed-suitcase,fa fa-luggage-cart,fa fa-rectangle-xmark,fa fa-rectangle-times,fa fa-times-rectangle,fa fa-window-close,fa fa-baht-sign,fa fa-book-open,fa fa-book-journal-whills,fa fa-journal-whills,fa fa-handcuffs,fa fa-triangle-exclamation,fa fa-exclamation-triangle,fa fa-warning,fa fa-database,fa fa-share,fa fa-arrow-turn-right,fa fa-mail-forward,fa fa-bottle-droplet,fa fa-mask-face,fa fa-hill-rockslide,fa fa-right-left,fa fa-exchange-alt,fa fa-paper-plane,fa fa-road-circle-exclamation,fa fa-dungeon,fa fa-align-right,fa fa-money-bill-1-wave,fa fa-money-bill-wave-alt,fa fa-life-ring,fa fa-hands,fa fa-sign-language,fa fa-signing,fa fa-calendar-day,fa fa-water-ladder,fa fa-ladder-water,fa fa-swimming-pool,fa fa-arrows-up-down,fa fa-arrows-v,fa fa-face-grimace,fa fa-grimace,fa fa-wheelchair-move,fa fa-wheelchair-alt,fa fa-turn-down,fa fa-level-down-alt,fa fa-person-walking-arrow-right,fa fa-square-envelope,fa fa-envelope-square,fa fa-dice,fa fa-bowling-ball,fa fa-brain,fa fa-bandage,fa fa-band-aid,fa fa-calendar-minus,fa fa-circle-xmark,fa fa-times-circle,fa fa-xmark-circle,fa fa-gifts,fa fa-hotel,fa fa-earth-asia,fa fa-globe-asia,fa fa-id-card-clip,fa fa-id-card-alt,fa fa-magnifying-glass-plus,fa fa-search-plus,fa fa-thumbs-up,fa fa-user-clock,fa fa-hand-dots,fa fa-allergies,fa fa-file-invoice,fa fa-window-minimize,fa fa-mug-saucer,fa fa-coffee,fa fa-brush,fa fa-mask,fa fa-magnifying-glass-minus,fa fa-search-minus,fa fa-ruler-vertical,fa fa-user-large,fa fa-user-alt,fa fa-train-tram,fa fa-user-nurse,fa fa-syringe,fa fa-cloud-sun,fa fa-stopwatch-20,fa fa-square-full,fa fa-magnet,fa fa-jar,fa fa-note-sticky,fa fa-sticky-note,fa fa-bug-slash,fa fa-arrow-up-from-water-pump,fa fa-bone,fa fa-user-injured,fa fa-face-sad-tear,fa fa-sad-tear,fa fa-plane,fa fa-tent-arrows-down,fa fa-exclamation,fa fa-arrows-spin,fa fa-print,fa fa-turkish-lira-sign,fa fa-try,fa fa-turkish-lira,fa fa-dollar-sign,fa fa-dollar,fa fa-usd,fa fa-x,fa fa-magnifying-glass-dollar,fa fa-search-dollar,fa fa-users-gear,fa fa-users-cog,fa fa-person-military-pointing,fa fa-building-columns,fa fa-bank,fa fa-institution,fa fa-museum,fa fa-university,fa fa-umbrella,fa fa-trowel,fa fa-d,fa fa-stapler,fa fa-masks-theater,fa fa-theater-masks,fa fa-kip-sign,fa fa-hand-point-left,fa fa-handshake-simple,fa fa-handshake-alt,fa fa-jet-fighter,fa fa-fighter-jet,fa fa-square-share-nodes,fa fa-share-alt-square,fa fa-barcode,fa fa-plus-minus,fa fa-video,fa fa-video-camera,fa fa-graduation-cap,fa fa-mortar-board,fa fa-hand-holding-medical,fa fa-person-circle-check,fa fa-turn-up,fa fa-level-up-alt,fab fa-monero,fab fa-hooli,fab fa-yelp,fab fa-cc-visa,fab fa-lastfm,fab fa-shopware,fab fa-creative-commons-nc,fab fa-aws,fab fa-redhat,fab fa-yoast,fab fa-cloudflare,fab fa-ups,fab fa-wpexplorer,fab fa-dyalog,fab fa-bity,fab fa-stackpath,fab fa-buysellads,fab fa-first-order,fab fa-modx,fab fa-guilded,fab fa-vnv,fab fa-square-js,fab fa-js-square,fab fa-microsoft,fab fa-qq,fab fa-orcid,fab fa-java,fab fa-invision,fab fa-creative-commons-pd-alt,fab fa-centercode,fab fa-glide-g,fab fa-drupal,fab fa-hire-a-helper,fab fa-creative-commons-by,fab fa-unity,fab fa-whmcs,fab fa-rocketchat,fab fa-vk,fab fa-untappd,fab fa-mailchimp,fab fa-css3-alt,fab fa-square-reddit,fab fa-reddit-square,fab fa-vimeo-v,fab fa-contao,fab fa-square-font-awesome,fab fa-deskpro,fab fa-sistrix,fab fa-square-instagram,fab fa-instagram-square,fab fa-battle-net,fab fa-the-red-yeti,fab fa-square-hacker-news,fab fa-hacker-news-square,fab fa-edge,fab fa-napster,fab fa-square-snapchat,fab fa-snapchat-square,fab fa-google-plus-g,fab fa-artstation,fab fa-markdown,fab fa-sourcetree,fab fa-google-plus,fab fa-diaspora,fab fa-foursquare,fab fa-stack-overflow,fab fa-github-alt,fab fa-phoenix-squadron,fab fa-pagelines,fab fa-algolia,fab fa-red-river,fab fa-creative-commons-sa,fab fa-safari,fab fa-google,fab fa-square-font-awesome-stroke,fab fa-font-awesome-alt,fab fa-atlassian,fab fa-linkedin-in,fab fa-digital-ocean,fab fa-nimblr,fab fa-chromecast,fab fa-evernote,fab fa-hacker-news,fab fa-creative-commons-sampling,fab fa-adversal,fab fa-creative-commons,fab fa-watchman-monitoring,fab fa-fonticons,fab fa-weixin,fab fa-shirtsinbulk,fab fa-codepen,fab fa-git-alt,fab fa-lyft,fab fa-rev,fab fa-windows,fab fa-wizards-of-the-coast,fab fa-square-viadeo,fab fa-viadeo-square,fab fa-meetup,fab fa-centos,fab fa-adn,fab fa-cloudsmith,fab fa-pied-piper-alt,fab fa-square-dribbble,fab fa-dribbble-square,fab fa-codiepie,fab fa-node,fab fa-mix,fab fa-steam,fab fa-cc-apple-pay,fab fa-scribd,fab fa-openid,fab fa-instalod,fab fa-expeditedssl,fab fa-sellcast,fab fa-square-twitter,fab fa-twitter-square,fab fa-r-project,fab fa-delicious,fab fa-freebsd,fab fa-vuejs,fab fa-accusoft,fab fa-ioxhost,fab fa-fonticons-fi,fab fa-app-store,fab fa-cc-mastercard,fab fa-itunes-note,fab fa-golang,fab fa-kickstarter,fab fa-grav,fab fa-weibo,fab fa-uncharted,fab fa-firstdraft,fab fa-square-youtube,fab fa-youtube-square,fab fa-wikipedia-w,fab fa-wpressr,fab fa-rendact,fab fa-angellist,fab fa-galactic-republic,fab fa-nfc-directional,fab fa-skype,fab fa-joget,fab fa-fedora,fab fa-stripe-s,fab fa-meta,fab fa-laravel,fab fa-hotjar,fab fa-bluetooth-b,fab fa-sticker-mule,fab fa-creative-commons-zero,fab fa-hips,fab fa-behance,fab fa-reddit,fab fa-discord,fab fa-chrome,fab fa-app-store-ios,fab fa-cc-discover,fab fa-wpbeginner,fab fa-confluence,fab fa-mdb,fab fa-dochub,fab fa-accessible-icon,fab fa-ebay,fab fa-amazon,fab fa-unsplash,fab fa-yarn,fab fa-square-steam,fab fa-steam-square,fab fa-500px,fab fa-square-vimeo,fab fa-vimeo-square,fab fa-asymmetrik,fab fa-font-awesome,fab fa-font-awesome-flag,fab fa-font-awesome-logo-full,fab fa-gratipay,fab fa-apple,fab fa-hive,fab fa-gitkraken,fab fa-keybase,fab fa-apple-pay,fab fa-padlet,fab fa-amazon-pay,fab fa-square-github,fab fa-github-square,fab fa-stumbleupon,fab fa-fedex,fab fa-phoenix-framework,fab fa-shopify,fab fa-neos,fab fa-hackerrank,fab fa-researchgate,fab fa-swift,fab fa-angular,fab fa-speakap,fab fa-angrycreative,fab fa-y-combinator,fab fa-empire,fab fa-envira,fab fa-square-gitlab,fab fa-gitlab-square,fab fa-studiovinari,fab fa-pied-piper,fab fa-wordpress,fab fa-product-hunt,fab fa-firefox,fab fa-linode,fab fa-goodreads,fab fa-square-odnoklassniki,fab fa-odnoklassniki-square,fab fa-jsfiddle,fab fa-sith,fab fa-themeisle,fab fa-page4,fab fa-hashnode,fab fa-react,fab fa-cc-paypal,fab fa-squarespace,fab fa-cc-stripe,fab fa-creative-commons-share,fab fa-bitcoin,fab fa-keycdn,fab fa-opera,fab fa-itch-io,fab fa-umbraco,fab fa-galactic-senate,fab fa-ubuntu,fab fa-draft2digital,fab fa-stripe,fab fa-houzz,fab fa-gg,fab fa-dhl,fab fa-square-pinterest,fab fa-pinterest-square,fab fa-xing,fab fa-blackberry,fab fa-creative-commons-pd,fab fa-playstation,fab fa-quinscape,fab fa-less,fab fa-blogger-b,fab fa-opencart,fab fa-vine,fab fa-paypal,fab fa-gitlab,fab fa-typo3,fab fa-reddit-alien,fab fa-yahoo,fab fa-dailymotion,fab fa-affiliatetheme,fab fa-pied-piper-pp,fab fa-bootstrap,fab fa-odnoklassniki,fab fa-nfc-symbol,fab fa-ethereum,fab fa-speaker-deck,fab fa-creative-commons-nc-eu,fab fa-patreon,fab fa-avianex,fab fa-ello,fab fa-gofore,fab fa-bimobject,fab fa-facebook-f,fab fa-square-google-plus,fab fa-google-plus-square,fab fa-mandalorian,fab fa-first-order-alt,fab fa-osi,fab fa-google-wallet,fab fa-d-and-d-beyond,fab fa-periscope,fab fa-fulcrum,fab fa-cloudscale,fab fa-forumbee,fab fa-mizuni,fab fa-schlix,fab fa-square-xing,fab fa-xing-square,fab fa-bandcamp,fab fa-wpforms,fab fa-cloudversify,fab fa-usps,fab fa-megaport,fab fa-magento,fab fa-spotify,fab fa-optin-monster,fab fa-fly,fab fa-aviato,fab fa-itunes,fab fa-cuttlefish,fab fa-blogger,fab fa-flickr,fab fa-viber,fab fa-soundcloud,fa fa-digg,fab fa-tencent-weibo,fab fa-symfony,fab fa-maxcdn,fab fa-etsy,fab fa-facebook-messenger,fab fa-audible,fab fa-think-peaks,fab fa-bilibili,fab fa-erlang,fab fa-cotton-bureau,fab fa-dashcube,fab fa-42-group,fab fa-innosoft,fab fa-stack-exchange,fab fa-elementor,fab fa-square-pied-piper,fab fa-pied-piper-square,fab fa-creative-commons-nd,fab fa-palfed,fab fa-superpowers,fab fa-resolving,fab fa-xbox,fab fa-searchengin,fab fa-tiktok,fab fa-square-facebook,fab fa-facebook-square,fab fa-renren,fab fa-linux,fab fa-glide,fab fa-linkedin,fab fa-hubspot,fab fa-deploydog,fab fa-twitch,fab fa-ravelry,fab fa-mixer,fab fa-square-lastfm,fab fa-lastfm-square,fab fa-vimeo,fab fa-mendeley,fab fa-uniregistry,fab fa-figma,fab fa-creative-commons-remix,fab fa-cc-amazon-pay,fab fa-dropbox,fab fa-instagram,fab fa-cmplid,fab fa-facebook,fab fa-gripfire,fab fa-jedi-order,fab fa-uikit,fab fa-fort-awesome-alt,fab fa-phabricator,fab fa-ussunnah,fab fa-earlybirds,fab fa-trade-federation,fab fa-autoprefixer,fab fa-whatsapp,fab fa-slideshare,fab fa-google-play,fab fa-viadeo,fab fa-line,fab fa-google-drive,fab fa-servicestack,fab fa-simplybuilt,fab fa-bitbucket,fab fa-imdb,fab fa-deezer,fab fa-raspberry-pi,fab fa-jira,fab fa-docker,fab fa-screenpal,fab fa-bluetooth,fab fa-gitter,fab fa-d-and-d,fab fa-microblog,fab fa-cc-diners-club,fab fa-gg-circle,fab fa-pied-piper-hat,fab fa-kickstarter-k,fab fa-yandex,fab fa-readme,fab fa-html5,fab fa-sellsy,fab fa-sass,fab fa-wirsindhandwerk,fab fa-wsh,fab fa-buromobelexperte,fab fa-salesforce,fab fa-octopus-deploy,fab fa-medapps,fab fa-ns8,fab fa-pinterest-p,fab fa-apper,fab fa-fort-awesome,fab fa-waze,fab fa-cc-jcb,fab fa-snapchat,fab fa-snapchat-ghost,fab fa-fantasy-flight-games,fab fa-rust,fab fa-wix,fab fa-square-behance,fab fa-behance-square,fab fa-supple,fab fa-rebel,fab fa-css3,fab fa-staylinked,fab fa-kaggle,fab fa-space-awesome,fab fa-deviantart,fab fa-cpanel,fab fa-goodreads-g,fab fa-square-git,fab fa-git-square,fab fa-square-tumblr,fab fa-tumblr-square,fab fa-trello,fab fa-creative-commons-nc-jp,fab fa-get-pocket,fab fa-perbyte,fab fa-grunt,fab fa-weebly,fab fa-connectdevelop,fab fa-leanpub,fab fa-black-tie,fab fa-themeco,fab fa-python,fab fa-android,fab fa-bots,fab fa-free-code-camp,fab fa-hornbill,fab fa-js,fab fa-ideal,fab fa-git,fab fa-dev,fab fa-sketch,fab fa-yandex-international,fab fa-cc-amex,fab fa-uber,fab fa-github,fab fa-php,fab fa-alipay,fab fa-youtube,fab fa-skyatlas,fab fa-firefox-browser,fab fa-replyd,fab fa-suse,fab fa-jenkins,fab fa-twitter,fab fa-rockrms,fab fa-pinterest,fab fa-buffer,fab fa-npm,fab fa-yammer,fab fa-btc,fab fa-dribbble,fab fa-stumbleupon-circle,fab fa-internet-explorer,fab fa-telegram,fab fa-telegram-plane,fab fa-old-republic,fab fa-square-whatsapp,fab fa-whatsapp-square,fab fa-node-js,fab fa-edge-legacy,fab fa-slack,fab fa-slack-hash,fab fa-medrt,fab fa-usb,fab fa-tumblr,fab fa-vaadin,fab fa-quora,fab fa-reacteurope,fab fa-medium,fab fa-medium-m,fab fa-amilia,fab fa-mixcloud,fab fa-flipboard,fab fa-viacoin,fab fa-critical-role,fab fa-sitrox,fab fa-discourse,fab fa-joomla,fab fa-mastodon,fab fa-airbnb,fab fa-wolf-pack-battalion,fab fa-buy-n-large,fab fa-gulp,fab fa-creative-commons-sampling-plus,fab fa-strava,fab fa-ember,fab fa-canadian-maple-leaf,fab fa-teamspeak,fab fa-pushed,fab fa-wordpress-simple,fab fa-nutritionix,fab fa-wodu,fab fa-google-pay,fab fa-intercom,fab fa-zhihu,fab fa-korvue,fab fa-pix,fab fa-steam-symbol', + ), + 'foundation' => array( + 'name' => 'Foundation Icons', + 'url' => QUADMENU_PLUGIN_URL . 'assets/frontend/icons/foundation/foundation-icons.min.css', + 'iconmap' => 'fi-address-book,fi-alert,fi-align-center,fi-align-justify,fi-align-left,fi-align-right,fi-anchor,fi-annotate,fi-archive,fi-arrow-down,fi-arrow-left,fi-arrow-right,fi-arrow-up,fi-arrows-compress,fi-arrows-expand,fi-arrows-in,fi-arrows-out,fi-asl,fi-asterisk,fi-at-sign,fi-background-color,fi-battery-empty,fi-battery-full,fi-battery-half,fi-bitcoin-circle,fi-bitcoin,fi-blind,fi-bluetooth,fi-bold,fi-book-bookmark,fi-book,fi-bookmark,fi-braille,fi-burst-new,fi-burst-sale,fi-burst,fi-calendar,fi-camera,fi-check,fi-checkbox,fi-clipboard-notes,fi-clipboard-pencil,fi-clipboard,fi-clock,fi-closed-caption,fi-cloud,fi-comment-minus,fi-comment-quotes,fi-comment-video,fi-comment,fi-comments,fi-compass,fi-contrast,fi-credit-card,fi-crop,fi-crown,fi-css3,fi-database,fi-die-five,fi-die-four,fi-die-one,fi-die-six,fi-die-three,fi-die-two,fi-dislike,fi-dollar-bill,fi-dollar,fi-download,fi-eject,fi-elevator,fi-euro,fi-eye,fi-fast-forward,fi-female-symbol,fi-female,fi-filter,fi-first-aid,fi-flag,fi-folder-add,fi-folder-lock,fi-folder,fi-foot,fi-foundation,fi-graph-bar,fi-graph-horizontal,fi-graph-pie,fi-graph-trend,fi-guide-dog,fi-hearing-aid,fi-heart,fi-home,fi-html5,fi-indent-less,fi-indent-more,fi-info,fi-italic,fi-key,fi-laptop,fi-layout,fi-lightbulb,fi-like,fi-link,fi-list-bullet,fi-list-number,fi-list-thumbnails,fi-list,fi-lock,fi-loop,fi-magnifying-glass,fi-mail,fi-male-female,fi-male-symbol,fi-male,fi-map,fi-marker,fi-megaphone,fi-microphone,fi-minus-circle,fi-minus,fi-mobile-signal,fi-mobile,fi-monitor,fi-mountains,fi-music,fi-next,fi-no-dogs,fi-no-smoking,fi-page-add,fi-page-copy,fi-page-csv,fi-page-delete,fi-page-doc,fi-page-edit,fi-page-export-csv,fi-page-export-doc,fi-page-export-pdf,fi-page-export,fi-page-filled,fi-page-multiple,fi-page-pdf,fi-page-remove,fi-page-search,fi-page,fi-paint-bucket,fi-paperclip,fi-pause,fi-paw,fi-paypal,fi-pencil,fi-photo,fi-play-circle,fi-play-video,fi-play,fi-plus,fi-pound,fi-power,fi-previous,fi-price-tag,fi-pricetag-multiple,fi-print,fi-prohibited,fi-projection-screen,fi-puzzle,fi-quote,fi-record,fi-refresh,fi-results-demographics,fi-results,fi-rewind-ten,fi-rewind,fi-rss,fi-safety-cone,fi-save,fi-share,fi-sheriff-badge,fi-shield,fi-shopping-bag,fi-shopping-cart,fi-shuffle,fi-skull,fi-social-500px,fi-social-adobe,fi-social-amazon,fi-social-android,fi-social-apple,fi-social-behance,fi-social-bing,fi-social-blogger,fi-social-delicious,fi-social-designer-news,fi-social-deviant-art,fi-social-digg,fi-social-dribbble,fi-social-drive,fi-social-dropbox,fi-social-evernote,fi-social-facebook,fi-social-flickr,fi-social-forrst,fi-social-foursquare,fi-social-game-center,fi-social-github,fi-social-google-plus,fi-social-hacker-news,fi-social-hi5,fi-social-instagram,fi-social-joomla,fi-social-lastfm,fi-social-linkedin,fi-social-medium,fi-social-myspace,fi-social-orkut,fi-social-path,fi-social-picasa,fi-social-pinterest,fi-social-rdio,fi-social-reddit,fi-social-skillshare,fi-social-skype,fi-social-smashing-mag,fi-social-snapchat,fi-social-spotify,fi-social-squidoo,fi-social-stack-overflow,fi-social-steam,fi-social-stumbleupon,fi-social-treehouse,fi-social-tumblr,fi-social-twitter,fi-social-vimeo,fi-social-windows,fi-social-xbox,fi-social-yahoo,fi-social-yelp,fi-social-youtube,fi-social-zerply,fi-social-zurb,fi-sound,fi-star,fi-stop,fi-strikethrough,fi-subscript,fi-superscript,fi-tablet-landscape,fi-tablet-portrait,fi-target-two,fi-target,fi-telephone-accessible,fi-telephone,fi-text-color,fi-thumbnails,fi-ticket,fi-torso-business,fi-torso-female,fi-torso,fi-torsos-all-female,fi-torsos-all,fi-torsos-female-male,fi-torsos-male-female,fi-torsos,fi-trash,fi-trees,fi-trophy,fi-underline,fi-universal-access,fi-unlink,fi-unlock,fi-upload-cloud,fi-upload,fi-usb,fi-video,fi-volume-none,fi-volume-strike,fi-volume,fi-web,fi-wheelchair,fi-widget,fi-wrench,fi-x-circle,fi-x,fi-yen,fi-zoom-in,fi-zoom-out', + ), + 'themify' => array( + 'url' => QUADMENU_PLUGIN_URL . 'assets/frontend/icons/themify/themify-icons.min.css', + 'name' => 'Themify Icons', + 'iconmap' => 'ti-wand,ti-volume,ti-user,ti-unlock,ti-unlink,ti-trash,ti-thought,ti-target,ti-tag,ti-tablet,ti-star,ti-spray,ti-signal,ti-shopping-cart,ti-shopping-cart-full,ti-settings,ti-search,ti-zoom-in,ti-zoom-out,ti-cut,ti-ruler,ti-ruler-pencil,ti-ruler-alt,ti-bookmark,ti-bookmark-alt,ti-reload,ti-plus,ti-pin,ti-pencil,ti-pencil-alt,ti-paint-roller,ti-paint-bucket,ti-na,ti-mobile,ti-minus,ti-medall,ti-medall-alt,ti-marker,ti-marker-alt,ti-arrow-up,ti-arrow-right,ti-arrow-left,ti-arrow-down,ti-lock,ti-location-arrow,ti-link,ti-layout,ti-layers,ti-layers-alt,ti-key,ti-import,ti-image,ti-heart,ti-heart-broken,ti-hand-stop,ti-hand-open,ti-hand-drag,ti-folder,ti-flag,ti-flag-alt,ti-flag-alt-2,ti-eye,ti-export,ti-exchange-vertical,ti-desktop,ti-cup,ti-crown,ti-comments,ti-comment,ti-comment-alt,ti-close,ti-clip,ti-angle-up,ti-angle-right,ti-angle-left,ti-angle-down,ti-check,ti-check-box,ti-camera,ti-announcement,ti-brush,ti-briefcase,ti-bolt,ti-bolt-alt,ti-blackboard,ti-bag,ti-move,ti-arrows-vertical,ti-arrows-horizontal,ti-fullscreen,ti-arrow-top-right,ti-arrow-top-left,ti-arrow-circle-up,ti-arrow-circle-right,ti-arrow-circle-left,ti-arrow-circle-down,ti-angle-double-up,ti-angle-double-right,ti-angle-double-left,ti-angle-double-down,ti-zip,ti-world,ti-wheelchair,ti-view-list,ti-view-list-alt,ti-view-grid,ti-uppercase,ti-upload,ti-underline,ti-truck,ti-timer,ti-ticket,ti-thumb-up,ti-thumb-down,ti-text,ti-stats-up,ti-stats-down,ti-split-v,ti-split-h,ti-smallcap,ti-shine,ti-shift-right,ti-shift-left,ti-shield,ti-notepad,ti-server,ti-quote-right,ti-quote-left,ti-pulse,ti-printer,ti-power-off,ti-plug,ti-pie-chart,ti-paragraph,ti-panel,ti-package,ti-music,ti-music-alt,ti-mouse,ti-mouse-alt,ti-money,ti-microphone,ti-menu,ti-menu-alt,ti-map,ti-map-alt,ti-loop,ti-location-pin,ti-list,ti-light-bulb,ti-Italic,ti-info,ti-infinite,ti-id-badge,ti-hummer,ti-home,ti-help,ti-headphone,ti-harddrives,ti-harddrive,ti-gift,ti-game,ti-filter,ti-files,ti-file,ti-eraser,ti-envelope,ti-download,ti-direction,ti-direction-alt,ti-dashboard,ti-control-stop,ti-control-shuffle,ti-control-play,ti-control-pause,ti-control-forward,ti-control-backward,ti-cloud,ti-cloud-up,ti-cloud-down,ti-clipboard,ti-car,ti-calendar,ti-book,ti-bell,ti-basketball,ti-bar-chart,ti-bar-chart-alt,ti-back-right,ti-back-left,ti-arrows-corner,ti-archive,ti-anchor,ti-align-right,ti-align-left,ti-align-justify,ti-align-center,ti-alert,ti-alarm-clock,ti-agenda,ti-write,ti-window,ti-widgetized,ti-widget,ti-widget-alt,ti-wallet,ti-video-clapper,ti-video-camera,ti-vector,ti-themify-logo,ti-themify-favicon,ti-themify-favicon-alt,ti-support,ti-stamp,ti-split-v-alt,ti-slice,ti-shortcode,ti-shift-right-alt,ti-shift-left-alt,ti-ruler-alt-2,ti-receipt,ti-pin,ti-pin-alt,ti-pencil-alt,ti-palette,ti-more,ti-more-alt,ti-microphone-alt,ti-magnet,ti-line-double,ti-line-dotted,ti-line-dashed,ti-layout-width-full,ti-layout-width-default,ti-layout-width-default-alt,ti-layout-tab,ti-layout-tab-window,ti-layout-tab-v,ti-layout-tab-min,ti-layout-slider,ti-layout-slider-alt,ti-layout-sidebar-right,ti-layout-sidebar-none,ti-layout-sidebar-left,ti-layout-placeholder,ti-layout-menu,ti-layout-menu-v,ti-layout-menu-separated,ti-layout-menu-full,ti-layout-media-right-alt,ti-layout-media-right,ti-layout-media-overlay,ti-layout-media-overlay-alt,ti-layout-media-overlay-alt-2,ti-layout-media-left-alt,ti-layout-media-left,ti-layout-media-center-alt,ti-layout-media-center,ti-layout-list-thumb,ti-layout-list-thumb-alt,ti-layout-list-post,ti-layout-list-large-image,ti-layout-line-solid,ti-layout-grid4,ti-layout-grid3,ti-layout-grid2,ti-layout-grid2-thumb,ti-layout-cta-right,ti-layout-cta-left,ti-layout-cta-center,ti-layout-cta-btn-right,ti-layout-cta-btn-left,ti-layout-column4,ti-layout-column3,ti-layout-column2,ti-layout-accordion-separated,ti-layout-accordion-merged,ti-layout-accordion-list,ti-ink-pen,ti-info-alt,ti-help-alt,ti-headphone-alt,ti-hand-point-up,ti-hand-point-right,ti-hand-point-left,ti-hand-point-down,ti-gallery,ti-face-smile,ti-face-sad,ti-credit-card,ti-control-skip-forward,ti-control-skip-backward,ti-control-record,ti-control-eject,ti-comments-smiley,ti-brush-alt,ti-youtube,ti-vimeo,ti-twitter,ti-time,ti-tumblr,ti-skype,ti-share,ti-share-alt,ti-rocket,ti-pinterest,ti-new-window,ti-microsoft,ti-list-ol,ti-linkedin,ti-layout-sidebar-2,ti-layout-grid4-alt,ti-layout-grid3-alt,ti-layout-grid2-alt,ti-layout-column4-alt,ti-layout-column3-alt,ti-layout-column2-alt,ti-instagram,ti-google,ti-github,ti-flickr,ti-facebook,ti-dropbox,ti-dribbble,ti-apple,ti-android,ti-save,ti-save-alt,ti-yahoo,ti-wordpress,ti-vimeo-alt,ti-twitter-alt,ti-tumblr-alt,ti-trello,ti-stack-overflow,ti-soundcloud,ti-sharethis,ti-sharethis-alt,ti-reddit,ti-pinterest-alt,ti-microsoft-alt,ti-linux,ti-jsfiddle,ti-joomla,ti-html5,ti-flickr-alt,ti-email,ti-drupal,ti-dropbox-alt,ti-css3,ti-rss,ti-rss-alt', + ), + ); + + return $register_icons; + } + + // Default Options + // ------------------------------------------------------------------------------ + + function configuration( $defaults ) { + + $defaults['viewport'] = 1; + + $defaults['styles'] = 1; + + $defaults['styles_normalize'] = 1; + + $defaults['styles_widgets'] = 1; + + $defaults['styles_icons'] = 'dashicons'; + + $defaults['styles_pscrollbar'] = 1; + + $defaults['styles_owlcarousel'] = 1; + + return $defaults; + } + + function responsive( $defaults ) { + + $defaults['gutter'] = '30'; + $defaults['screen_sm_width'] = '768'; + $defaults['screen_md_width'] = '992'; + $defaults['screen_lg_width'] = '1200'; + + return $defaults; + } + + function css( $defaults ) { + + $defaults['css'] = ''; + + return $defaults; + } + + function themes_options( $defaults ) { + + // Layout + // --------------------------------------------------------------------- + $defaults['layout'] = 'embed'; + $defaults['layout_offcanvas_float'] = 'right'; + $defaults['layout_align'] = 'right'; + $defaults['layout_sticky'] = 0; + $defaults['layout_sticky_offset'] = 0; + $defaults['layout_divider'] = 'hide'; + $defaults['layout_caret'] = 'show'; + $defaults['layout_trigger'] = 'hoverintent'; + $defaults['layout_current'] = 0; + $defaults['layout_classes'] = ''; + $defaults['layout_breakpoint'] = '768'; + $defaults['layout_width'] = 0; + $defaults['layout_width_inner'] = 0; + $defaults['layout_width_inner_selector'] = ''; + $defaults['layout_lazyload'] = 0; + $defaults['layout_dropdown_maxheight'] = 1; + + // Fonts + // --------------------------------------------------------------------- + $defaults['font'] = array( + 'font-family' => 'Verdana, Geneva, sans-serif', + // 'google' => true, + 'font-size' => '11', + 'font-style' => 'normal', + 'font-weight' => '400', + 'letter-spacing' => 'inherit', + ); + + $defaults['navbar_font'] = array( + 'font-family' => 'Verdana, Geneva, sans-serif', + // 'google' => true, + 'font-size' => '11', + 'font-weight' => '400', + 'font-style' => 'normal', + 'letter-spacing' => 'inherit', + ); + + $defaults['dropdown_font'] = array( + 'font-family' => 'Verdana, Geneva, sans-serif', + // 'google' => true, + 'font-size' => '11', + 'font-weight' => '400', + 'font-style' => 'normal', + 'letter-spacing' => 'inherit', + ); + + // Navbar + // --------------------------------------------------------------------- + + $defaults['navbar_logo'] = array( + 'url' => QUADMENU_PLUGIN_URL . 'assets/frontend/images/logo.png', + ); + $defaults['navbar_logo_link'] = quadmenu_get_translated_home_url( '/' ); + $defaults['navbar_height'] = '60'; + $defaults['navbar_width'] = '260'; + $defaults['navbar_background'] = 'color'; + $defaults['navbar_background_color'] = '#333333'; + $defaults['navbar_background_to'] = '#000000'; + + $defaults['navbar_background_deg'] = '17'; + + $defaults['navbar_divider'] = $defaults['navbar_sharp'] = 'rgba(255,255,255,0.5)'; + + $defaults['navbar_toggle_open'] = '#ffffff'; + $defaults['navbar_toggle_close'] = '#fb88dd'; + + $defaults['navbar_mobile_border'] = 'rgba(255,255,255,0.1)'; + + $defaults['navbar_text'] = '#aaaaaa'; + + $defaults['navbar_logo_bg'] = 'transparent'; + + $defaults['navbar_logo_height'] = '25'; + $defaults['navbar_link'] = '#f1f1f1'; + $defaults['navbar_link_hover'] = '#ffffff'; + $defaults['navbar_link_bg'] = 'transparent'; + $defaults['navbar_link_bg_hover'] = '#111111'; + $defaults['navbar_link_hover_effect'] = 'rgba(255,255,255,0.3)'; + $defaults['navbar_link_margin'] = array( + 'border-top' => '0', + 'border-right' => '0', + 'border-left' => '0', + 'border-bottom' => '0', + ); + $defaults['navbar_link_radius'] = array( + 'border-top' => '0', + 'border-right' => '0', + 'border-left' => '0', + 'border-bottom' => '0', + ); + $defaults['navbar_link_transform'] = 'uppercase'; + $defaults['navbar_link_icon'] = '#eeeeee'; + $defaults['navbar_link_icon_hover'] = '#ffffff'; + $defaults['navbar_link_subtitle'] = '#eeeeee'; + $defaults['navbar_link_subtitle_hover'] = '#ffffff'; + $defaults['navbar_button'] = '#ffffff'; + $defaults['navbar_button_bg'] = '#fb88dd'; + $defaults['navbar_button_hover'] = '#ffffff'; + $defaults['navbar_button_bg_hover'] = '#383838'; + $defaults['navbar_badge'] = '#fb88dd'; + $defaults['navbar_badge_color'] = '#ffffff'; + $defaults['sticky_height'] = '60'; + $defaults['sticky_background'] = 'rgba(0,0,0,0.95)'; + $defaults['sticky_logo_height'] = '25'; + $defaults['navbar_scrollbar'] = '#fb88dd'; + $defaults['navbar_scrollbar_rail'] = '#ffffff'; + $defaults['navbar_button'] = '#ffffff'; + $defaults['navbar_button_background'] = '#fb88dd'; + $defaults['navbar_button_hover'] = '#383838'; + $defaults['navbar_button_hover_background'] = '#eeeeee'; + $defaults['navbar_button_radius'] = array( + 'border-top' => '2', + 'border-right' => '2', + 'border-left' => '2', + 'border-bottom' => '2', + ); + // Mobile + // --------------------------------------------------------------------- + + $defaults['mobile_shadow'] = 'show'; + $defaults['mobile_link_padding'] = array( + 'border-top' => '15', + 'border-right' => '30', + 'border-left' => '30', + 'border-bottom' => '15', + ); + $defaults['mobile_link_border'] = array( + 'border-all' => '0', + 'border-top' => '0', + 'border-color' => 'transparent', + 'border-style' => 'none', + ); + + // Dropdown + // --------------------------------------------------------------------- + $defaults['dropdown_shadow'] = 'show'; + $defaults['dropdown_margin'] = 0; + $defaults['dropdown_radius'] = array( + 'border-top' => '0', + 'border-right' => '0', + 'border-left' => '0', + 'border-bottom' => '0', + ); + $defaults['dropdown_border'] = array( + 'border-top' => '0', + 'border-right' => '0', + 'border-left' => '0', + 'border-bottom' => '0', + 'border-color' => '#000000', + ); + $defaults['dropdown_background'] = '#ffffff'; + $defaults['dropdown_scrollbar'] = '#fb88dd'; + $defaults['dropdown_scrollbar_rail'] = '#ffffff'; + $defaults['dropdown_title'] = '#444444'; + $defaults['dropdown_title_border'] = array( + 'border-all' => '1', + 'border-top' => '1', + 'border-color' => '#fb88dd', + 'border-style' => 'solid', + ); + $defaults['dropdown_link'] = '#444444'; + $defaults['dropdown_link_hover'] = '#333333'; + $defaults['dropdown_link_bg_hover'] = '#f4f4f4'; + $defaults['dropdown_link_border'] = array( + 'border-all' => '1', + 'border-top' => '1', + 'border-color' => '#f4f4f4', + 'border-style' => 'solid', + ); + $defaults['dropdown_link_transform'] = 'none'; + $defaults['dropdown_link_icon'] = '#fb88dd'; + $defaults['dropdown_link_icon_hover'] = '#a9a9a9'; + $defaults['dropdown_link_subtitle'] = '#a0a0a0'; + $defaults['dropdown_link_subtitle_hover'] = '#cccccc'; + // $defaults['dropdown_link_padding'] = array('border-top' => '15', 'border-right' => '15', 'border-left' => '15', 'border-bottom' => '15'); + $defaults['dropdown_button'] = '#ffffff'; + $defaults['dropdown_button_bg'] = '#fb88dd'; + $defaults['dropdown_button_hover'] = '#ffffff'; + $defaults['dropdown_button_bg_hover'] = '#000000'; + // $defaults['dropdown_button_radius'] = array('border-top' => '0', 'border-right' => '0', 'border-left' => '0', 'border-bottom' => '0'); + $defaults['dropdown_tab_bg'] = 'rgba(0,0,0,0.05)'; + $defaults['dropdown_tab_bg_hover'] = 'rgba(0,0,0,0.1)'; + + // Animations + // --------------------------------------------------------------------- + $defaults['layout_hover_effect'] = 'quadmenu-hover-ripple'; + + $defaults['navbar_animation_text'] = array( + 'options' => '', + 'action' => 'hover', + 'speed' => 't_1000', + ); + + $defaults['navbar_animation_subtitle'] = array( + 'options' => '', + 'action' => 'hover', + 'speed' => 't_1000', + ); + + $defaults['navbar_animation_icon'] = array( + 'options' => '', + 'action' => 'hover', + 'speed' => 't_1000', + ); + + $defaults['navbar_animation_badge'] = array( + 'options' => 'quadmenu_swing', + 'action' => 'hover', + 'speed' => 't_1000', + ); + + $defaults['navbar_animation_cart'] = array( + 'options' => 'quadmenu_bounce', + 'speed' => 't_500', + ); + + $defaults['layout_animation'] = array( + 'options' => 'quadmenu_btt', + 'speed' => 't_300', + ); + + $defaults['dropdown_animation_text'] = array( + 'options' => '', + 'action' => 'hover', + 'speed' => 't_1000', + ); + + $defaults['dropdown_animation_subtitle'] = array( + 'options' => '', + 'action' => 'hover', + 'speed' => 't_1000', + ); + + $defaults['dropdown_animation_icon'] = array( + 'options' => '', + 'action' => 'hover', + 'speed' => 't_1000', + ); + + $defaults['dropdown_animation_badge'] = array( + 'options' => 'quadmenu_swing', + 'action' => 'loop', + 'speed' => 't_1000', + ); + + return $defaults; + } + + function locations_options( $defaults ) { + + $defaults['integration'] = 0; + $defaults['unwrap'] = 0; + $defaults['theme'] = 'default_theme'; + + return $defaults; + } + + public static function instance() { + if ( ! isset( self::$instance ) ) { + self::$instance = new self(); + } + return self::$instance; + } +} diff --git a/lib/class-functions.php b/lib/class-functions.php new file mode 100644 index 0000000..6ad16d9 --- /dev/null +++ b/lib/class-functions.php @@ -0,0 +1,91 @@ +is_quadmenu( $menu_id ); + } +} + +if ( ! function_exists( 'quadmenu_get_menu_theme' ) ) { + + function quadmenu_get_menu_theme( $location = null, $menu_id = null ) { + + global $quadmenu_themes, $quadmenu_active_locations; + + $theme = ''; + + if ( isset( $quadmenu_active_locations[ $location ] ) ) { + $theme = $quadmenu_active_locations[ $location ]; + } + + if ( $theme && isset( $quadmenu_themes[ $theme ] ) ) { + return $theme; + } + + if ( is_array( $quadmenu_themes ) ) { + return current( array_keys( $quadmenu_themes ) ); + } + + return 'default_theme'; + } +} + +// Developers +// ----------------------------------------------------------------------------- + +if ( ! function_exists( 'quadmenu_compiler_enqueue' ) ) { + + function quadmenu_compiler_enqueue() { + + $screen = get_current_screen(); + + if ( isset( $screen->base ) && ! strpos( $screen->base, QUADMENU_PANEL ) === false ) { + return; + } + + Compiler::instance()->enqueue(); + } +} + +if ( ! function_exists( 'quadmenu_compiler_integration' ) ) { + + function quadmenu_compiler_integration() { + add_action( 'admin_init', 'quadmenu_compiler_enqueue', 26 ); + } +} + +if ( ! function_exists( 'quadmenu_do_compiler' ) ) { + + function quadmenu_do_compiler() { + Compiler::instance()->do_compiler( true ); + } +} + +if ( ! function_exists( 'quadmenu_compiler_variables' ) ) { + + function quadmenu_compiler_variables() { + return Compiler::instance()->redux_compiler(); + } +} diff --git a/lib/class-icons.php b/lib/class-icons.php new file mode 100644 index 0000000..4834a7d --- /dev/null +++ b/lib/class-icons.php @@ -0,0 +1,47 @@ + $meta ) { + + if ( $meta['key'] != QUADMENU_DB_ITEM || empty( $meta['value'] ) ) { + continue; + } + + $wp_import->quadmenu[ (int) $item['post_id'] ] = maybe_unserialize( $meta['value'] ); + } + + return $item; +} + +add_action( 'import_end', 'quadmenu_import_save' ); + +function quadmenu_import_save() { + + global $wpdb, $wp_import, $quadmenu_meta; + + if ( empty( $wp_import->quadmenu ) ) { + return; + } + + foreach ( $wp_import->quadmenu as $post_id => $quadmenu_meta ) { + + if ( empty( $wp_import->processed_menu_items[ $post_id ] ) ) { + continue; + } + + update_post_meta( (int) $wp_import->processed_menu_items[ $post_id ], QUADMENU_DB_ITEM, $quadmenu_meta ); + } +} diff --git a/lib/class-locations.php b/lib/class-locations.php new file mode 100644 index 0000000..d41679c --- /dev/null +++ b/lib/class-locations.php @@ -0,0 +1,87 @@ +locations(); + + $this->dev(); + + add_action( 'init', array( $this, 'active' ), -10 ); + + add_action( 'admin_init', array( $this, 'save' ), 999 ); + } + + function dev() { + + register_nav_menus( + array( + 'quadmenu_dev' => 'QuadMenu Dev', + ) + ); + + unset( $GLOBALS['quadmenu_locations']['quadmenu_dev'] ); + } + + function locations() { + + global $quadmenu_locations; + + $quadmenu_locations = get_option( QUADMENU_DB_LOCATIONS, array() ); + } + + function active() { + + global $quadmenu, $quadmenu_locations, $quadmenu_active_locations; + + $quadmenu_active_locations = array( 'quadmenu_dev' => true ); + + if ( ! empty( $quadmenu ) && is_array( $quadmenu_locations ) && count( $quadmenu_locations ) ) { + + foreach ( $quadmenu_locations as $id => $location ) { + if ( ! empty( $quadmenu[ $id . '_integration' ] ) && ! empty( $quadmenu[ $id . '_theme' ] ) ) { + $quadmenu_active_locations[ $id ] = $quadmenu[ $id . '_theme' ]; + } + } + } + } + + public function save() { + + global $_wp_registered_nav_menus, $quadmenu, $quadmenu_locations; + + if ( ! empty( $quadmenu ) && is_array( $_wp_registered_nav_menus ) && count( $_wp_registered_nav_menus ) ) { + + $quadmenu_locations = array(); + + foreach ( $_wp_registered_nav_menus as $location => $name ) { + + $quadmenu_locations[ $location ] = array( + 'name' => $name, + ); + } + + update_option( QUADMENU_DB_LOCATIONS, $quadmenu_locations ); + } + } + + public static function instance() { + if ( ! isset( self::$instance ) ) { + self::$instance = new self(); + } + return self::$instance; + } + +} + diff --git a/lib/class-options.php b/lib/class-options.php new file mode 100644 index 0000000..37466b3 --- /dev/null +++ b/lib/class-options.php @@ -0,0 +1,2316 @@ + $value ) { + + if ( is_array( $value ) && isset( $value['color'] ) && isset( $value['alpha'] ) ) { + $options[ $key ] = \Redux_Helpers::hex2rgba( $value['color'], $value['alpha'] ); + } + } + + return $options; + } + + function developer( $options = array() ) { + + $developer = apply_filters( 'quadmenu_developer_options', array() ); + + if ( ! empty( $developer ) && is_array( $developer ) ) { + + $options = array_merge( $options, $developer ); + + foreach ( $developer as $id => $value ) { + + add_filter( 'redux/options/' . QUADMENU_DB_OPTIONS . '/field/' . $id, '__return_null' ); + } + } + + return $options; + } + + function developer_ajax( $return_array ) { + + $return_array['options'] = apply_filters( 'quadmenu_developer_options', $return_array['options'] ); + + return $return_array; + } + + function remove( $redux ) { + + $class = ''; + + foreach ( $redux->parent->sections as $key => $section ) { + + if ( empty( $section['fields'] ) ) { + + if ( isset( $redux->parent->sections[ $key ]['class'] ) ) { + + $class = ' ' . $redux->parent->sections[ $key ]['class']; + } + + $redux->parent->sections[ $key ]['class'] = 'empty_section' . $class; + } + } + + return $redux->parent->sections; + } + + function configuration( $sections ) { + + $this->defaults = apply_filters( 'quadmenu_default_options', array() ); + + $sections[] = array( + // 'customizer' => true, + 'id' => 'quadmenu_configuration', + 'title' => esc_html__( 'Configuration', 'quadmenu' ), + 'heading' => false, + 'icon' => 'dashicons dashicons-admin-generic', + 'permissions' => 'manage_options', + 'fields' => array( + array( + 'customizer' => false, + 'compiler' => false, + 'id' => 'viewport', + 'type' => 'switch', + 'title' => esc_html__( 'Viewport', 'quadmenu' ), + 'subtitle' => esc_html__( 'Include the viewport meta tag in site head.', 'quadmenu' ), + 'default' => (bool) $this->defaults['viewport'], + ), + array( + 'customizer' => false, + 'compiler' => false, + 'id' => 'styles', + 'type' => 'switch', + 'title' => esc_html__( 'Stylesheet', 'quadmenu' ), + 'subtitle' => esc_html__( 'Load styles in your theme.', 'quadmenu' ), + 'compiler' => false, + 'default' => (bool) $this->defaults['styles'], + ), + array( + 'customizer' => true, + 'transport' => 'refresh', + 'compiler' => false, + 'id' => 'styles_normalize', + 'type' => 'switch', + 'title' => esc_html__( 'Normalize', 'quadmenu' ), + 'subtitle' => esc_html__( 'Try to clean residual styling of the theme.', 'quadmenu' ), + 'required' => array( + 'styles', + '=', + 1, + ), + 'default' => (bool) $this->defaults['styles_normalize'], + ), + array( + 'customizer' => true, + 'transport' => 'refresh', + 'compiler' => false, + 'id' => 'styles_widgets', + 'type' => 'switch', + 'title' => esc_html__( 'Widgets', 'quadmenu' ), + 'subtitle' => esc_html__( 'Load default widgets stylesheets.', 'quadmenu' ), + 'required' => array( + 'styles', + '=', + 1, + ), + 'default' => (bool) $this->defaults['styles_widgets'], + ), + array( + 'customizer' => true, + 'transport' => 'refresh', + 'compiler' => false, + 'id' => 'styles_pscrollbar', + 'type' => 'switch', + 'title' => esc_html__( 'Perfect ScrollBar', 'quadmenu' ), + 'subtitle' => esc_html__( 'Load Perfect scroll bar files.', 'quadmenu' ), + 'default' => (bool) $this->defaults['styles_pscrollbar'], + ), + array( + 'customizer' => false, + 'compiler' => false, + 'id' => 'styles_owlcarousel', + 'type' => 'switch', + 'title' => esc_html__( 'OWL Carousel', 'quadmenu' ), + 'subtitle' => esc_html__( 'Load OWL Carousel files.', 'quadmenu' ), + 'default' => (bool) $this->defaults['styles_owlcarousel'], + ), + array( + 'customizer' => false, + 'compiler' => false, + 'id' => 'styles_icons', + 'type' => 'select', + 'options' => Plugin::instance()->registered_icons_names(), + 'title' => esc_html__( 'Icons', 'quadmenu' ), + 'subtitle' => esc_html__( 'Select the fonticon for your menus.', 'quadmenu' ), + 'select2' => array( + 'allowClear' => false, + ), + 'required' => array( + 'styles', + '=', + 1, + ), + 'default' => $this->defaults['styles_icons'], + 'validate' => 'no_special_chars', + ), + ), + ); + + return $sections; + } + + function css( $sections ) { + + $this->defaults = apply_filters( 'quadmenu_default_options', array() ); + + $sections[] = array( + 'heading' => false, + 'id' => 'quadmenu_css', + 'title' => esc_html__( 'Customize', 'quadmenu' ), + 'icon' => 'dashicons dashicons-editor-code', + 'permissions' => 'edit_theme_options', + 'fields' => array( + array( + 'customizer' => true, + 'transport' => 'refresh', + 'compiler' => false, + 'id' => 'css', + 'type' => 'ace_editor', + 'mode' => 'css', + 'title' => esc_html__( 'CSS', 'quadmenu' ), + 'subtitle' => esc_html__( 'Quickly add some CSS to your theme by adding it to this block.', 'quadmenu' ), + 'theme' => 'chrome', + 'default' => $this->defaults['css'], + ), + ), + ); + + return $sections; + } + + function locations( $sections ) { + + global $quadmenu_locations; + + $theme = get_stylesheet(); + + $all_locations_defaults = apply_filters( 'quadmenu_default_options_locations', array() ); + + foreach ( $quadmenu_locations as $id => $location ) { + + $current_location_defaults = apply_filters( 'quadmenu_default_options_location_' . $id, $all_locations_defaults ); + + foreach ( $current_location_defaults as $key => $value ) { + + $this->defaults[ "{$id}_{$key}" ] = $value; + } + } + + $this->defaults = apply_filters( 'quadmenu_default_options', $this->defaults ); + + foreach ( $quadmenu_locations as $id => $location ) { + + extract( $location ); + + $sections[] = array( + // 'customizer' => true, + 'subsection' => true, + 'heading' => false, + 'icon' => 'dashicons dashicons-editor-insertmore', + 'id' => 'quadmenu_location_' . $id, + 'title' => $name, + 'permissions' => 'edit_theme_options', + 'fields' => array( + array( + 'customizer' => true, + 'transport' => 'refresh', + 'id' => $id . '_integration', + 'type' => 'switch', + 'title' => esc_html__( 'Integration', 'quadmenu' ), + 'subtitle' => esc_html__( 'Integrate QuadMenu in this theme location.', 'quadmenu' ), + 'default' => $this->defaults[ $id . '_integration' ], + ), + array( + 'customizer' => true, + 'transport' => 'refresh', + 'id' => $id . '_unwrap', + 'type' => 'switch', + 'title' => esc_html__( 'Conflicts', 'quadmenu' ), + 'subtitle' => esc_html__( 'Try to solve conflicts of residual theme style.', 'quadmenu' ), + 'default' => $this->defaults[ $id . '_unwrap' ], + 'required' => array( + $id . '_integration', + '=', + 1, + ), + ), + array( + 'customizer' => true, + 'transport' => 'refresh', + 'type' => 'select', + 'id' => $id . '_theme', + 'title' => __( 'Theme', 'quadmenu' ), + 'subtitle' => __( 'Select a theme for this theme location', 'quadmenu' ), + 'class' => 'current_theme', + 'options' => (array) $GLOBALS['quadmenu_themes'], + 'default' => $this->defaults[ $id . '_theme' ], + ), + array( + 'customizer' => false, + 'id' => $id . '_information', + 'type' => 'info', + 'title' => esc_html__( 'Integration', 'quadmenu' ), + 'style' => 'success', + 'desc' => sprintf( '

    %s

    ', esc_html__( 'If your menu doesn\'t seem to be working properly after using Automatic Integration, the most common scenario is that you have residual styling from your theme and would need to use Manual Integration instead.', 'quadmenu' ) ), + 'required' => array( + $id . '_integration', + '=', + 1, + ), + ), + array( + 'customizer' => false, + 'id' => $id . '_manual', + 'type' => 'info', + 'title' => esc_html__( 'Manual Integration', 'quadmenu' ), + 'style' => 'info', + 'class' => 'info_manual', + 'desc' => sprintf( '

    %s

    <?php quadmenu(array("theme_location" => "%s", "theme" => "%s")); ?>

    ', esc_html__( 'Copy the generated PHP function code and paste it into the appropriate template in your theme.', 'quadmenu' ), $id, 'default_theme' ), + ), + ), + ); + } + + return $sections; + } + + function responsive( $sections ) { + + $this->defaults = apply_filters( 'quadmenu_default_options', array() ); + + $sections[] = array( + 'customizer' => true, + 'heading' => false, + 'id' => 'quadmenu_responsive', + 'title' => esc_html__( 'Responsive', 'quadmenu' ), + 'icon' => 'dashicons dashicons-desktop', + 'permissions' => 'edit_theme_options', + 'fields' => array( + array( + 'compiler' => true, + 'id' => 'gutter', + 'type' => 'slider', + 'title' => esc_html__( 'Gutter', 'quadmenu' ), + 'subtitle' => esc_html__( 'Padding between columns.', 'quadmenu' ), + 'min' => '0', + 'step' => '2', + 'max' => '60', + 'default' => (int) $this->defaults['gutter'], + 'validate' => 'numeric', + ), + array( + 'compiler' => true, + 'id' => 'screen_sm_width', + 'type' => 'slider', + 'title' => esc_html__( 'Screen Small', 'quadmenu' ), + 'subtitle' => esc_html__( 'Small screens breakpoint.', 'quadmenu' ), + 'min' => '480', + 'step' => '1', + 'max' => '1000', + 'default' => (int) $this->defaults['screen_sm_width'], + 'validate' => 'numeric', + ), + array( + 'compiler' => true, + 'id' => 'screen_md_width', + 'type' => 'slider', + 'title' => esc_html__( 'Screen Medium', 'quadmenu' ), + 'subtitle' => esc_html__( 'Medium screens breakpoint.', 'quadmenu' ), + 'min' => '481', + 'step' => '1', + 'max' => '1200', + 'default' => (int) $this->defaults['screen_md_width'], + 'validate' => 'numeric', + ), + array( + 'compiler' => true, + 'id' => 'screen_lg_width', + 'type' => 'slider', + 'title' => esc_html__( 'Screen Large', 'quadmenu' ), + 'subtitle' => esc_html__( 'Large screens breakpoint.', 'quadmenu' ), + 'min' => '801', + 'step' => '1', + 'max' => '1600', + 'default' => (int) $this->defaults['screen_lg_width'], + 'validate' => 'numeric', + ), + ), + ); + + return $sections; + } + + function themes( $sections ) { + + global $quadmenu_themes; + + $all_themes_defaults = apply_filters( 'quadmenu_default_options_themes', array() ); + + foreach ( $quadmenu_themes as $theme => $name ) { + + $current_theme_defaults = apply_filters( 'quadmenu_default_options_theme_' . $theme, $all_themes_defaults ); + + foreach ( $current_theme_defaults as $key => $value ) { + + $this->defaults[ "{$theme}_{$key}" ] = $value; + } + } + + $this->defaults = apply_filters( 'quadmenu_default_options', $this->defaults ); + + foreach ( $quadmenu_themes as $key => $theme ) { + + $sections[] = array( + // 'customizer' => true, + 'customizer_title' => esc_html( 'Layout', 'quadmenu' ), + 'subsection' => false, + 'heading' => false, + 'id' => 'quadmenu_layout_' . $key, + 'title' => $theme, + 'icon' => 'dashicons dashicons-menu', + 'permissions' => 'edit_theme_options', + 'class' => 'quadmenu_theme_' . $key, + 'fields' => array( + array( + 'customizer' => false, + 'id' => $key . '_theme_title', + 'type' => 'text', + 'title' => esc_html__( 'Theme', 'quadmenu' ), + 'subtitle' => esc_html__( 'Change theme name.', 'quadmenu' ), + 'default' => $theme, + 'validate' => 'no_special_chars', + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'class' => $key, + 'id' => $key . '_layout', + 'type' => 'image_select', + 'title' => esc_html__( 'Menu', 'quadmenu' ), + 'subtitle' => esc_html__( 'Change menu layout.', 'quadmenu' ), + 'options' => array( + 'embed' => array( + 'alt' => esc_html__( 'Embed', 'quadmenu' ), + 'img' => QUADMENU_PLUGIN_URL . 'assets/backend/img/layouts/embed.png', + ), + 'collapse' => array( + 'alt' => esc_html__( 'Collapse', 'quadmenu' ), + 'img' => QUADMENU_PLUGIN_URL . 'assets/backend/img/layouts/collapse.png', + ), + 'offcanvas' => array( + 'alt' => esc_html__( 'Offcanvas', 'quadmenu' ), + 'img' => QUADMENU_PLUGIN_URL . 'assets/backend/img/layouts/offcanvas.png', + ), + 'vertical' => array( + 'alt' => esc_html__( 'Vertical', 'quadmenu' ), + 'img' => QUADMENU_PLUGIN_URL . 'assets/backend/img/layouts/vertical.png', + ), + 'inherit' => array( + 'alt' => esc_html__( 'Inherit', 'quadmenu' ), + 'img' => QUADMENU_PLUGIN_URL . 'assets/backend/img/layouts/inherit.png', + ), + ), + 'default' => $this->validate( $this->defaults[ $key . '_layout' ], array( 'embed', 'collapse', 'offcanvas', 'vertical', 'inherit' ) ), + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_layout_offcanvas_float', + 'type' => 'image_select', + 'title' => esc_html__( 'Float', 'quadmenu' ), + 'subtitle' => esc_html__( 'Vertical menu position.', 'quadmenu' ), + 'options' => array( + 'left' => array( + 'alt' => esc_html__( 'Left', 'quadmenu' ), + 'img' => QUADMENU_PLUGIN_URL . 'assets/backend/img/layouts/fleft.png', + ), + 'right' => array( + 'alt' => esc_html__( 'Right', 'quadmenu' ), + 'img' => QUADMENU_PLUGIN_URL . 'assets/backend/img/layouts/fright.png', + ), + ), + 'required' => array( + array( $key . '_layout', '=', array( 'offcanvas', 'vertical' ) ), + ), + 'default' => $this->validate( $this->defaults[ $key . '_layout_offcanvas_float' ], array( 'left', 'right' ) ), + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_layout_align', + 'type' => 'image_select', + 'title' => esc_html__( 'Align', 'quadmenu' ), + 'subtitle' => esc_html__( 'Menu items alignment.', 'quadmenu' ), + 'options' => array( + 'left' => array( + 'alt' => esc_html__( 'Left', 'quadmenu' ), + 'img' => QUADMENU_PLUGIN_URL . 'assets/backend/img/layouts/aleft.png', + ), + 'center' => array( + 'alt' => esc_html__( 'Center', 'quadmenu' ), + 'img' => QUADMENU_PLUGIN_URL . 'assets/backend/img/layouts/acenter.png', + ), + 'right' => array( + 'alt' => esc_html__( 'Right', 'quadmenu' ), + 'img' => QUADMENU_PLUGIN_URL . 'assets/backend/img/layouts/aright.png', + ), + ), + 'required' => array( + array( $key . '_layout', '=', array( 'embed', 'collapse', 'offcanvas' ) ), + ), + 'default' => $this->validate( $this->defaults[ $key . '_layout_align' ], array( 'left', 'right' ) ), + ), + // Behaviour + // --------------------------------------------------------- + array( + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_menu_divider', + 'type' => 'section', + 'title' => esc_html__( 'Menu', 'quadmenu' ), + 'indent' => false, + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_layout_breakpoint', + 'type' => 'slider', + 'title' => esc_html__( 'Breakpoint', 'quadmenu' ), + 'subtitle' => esc_html__( 'Point at which the navbar becomes uncollapsed.', 'quadmenu' ), + 'min' => '0', + 'step' => '1', + 'max' => '1600', + 'required' => array( + array( $key . '_layout', '=', array( 'embed', 'collapse', 'offcanvas', 'vertical' ) ), + ), + 'default' => (int) $this->defaults[ $key . '_layout_breakpoint' ], + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_layout_width', + 'type' => 'switch', + 'title' => esc_html__( 'Width', 'quadmenu' ), + 'subtitle' => esc_html__( 'Try to force menu width to fit screen.', 'quadmenu' ), + 'required' => array( + array( $key . '_layout', '=', array( 'collapse', 'offcanvas' ) ), + ), + 'default' => (int) $this->defaults[ $key . '_layout_width' ], + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_layout_width_inner', + 'type' => 'switch', + 'title' => esc_html__( 'Inner', 'quadmenu' ), + 'subtitle' => esc_html__( 'Try to force menu inner width to fit selector.', 'quadmenu' ), + 'required' => array( + array( $key . '_layout', '=', array( 'collapse', 'offcanvas' ) ), + ), + 'default' => (int) $this->defaults[ $key . '_layout_width_inner' ], + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_layout_width_inner_selector', + 'type' => 'text', + 'title' => esc_html__( 'Selector', 'quadmenu' ), + 'subtitle' => esc_html__( 'The menu container will take the width of this selector.', 'quadmenu' ), + 'placeholder' => '.container', + 'default' => $this->defaults[ $key . '_layout_width_inner_selector' ], + 'required' => array( + array( $key . '_layout', '=', array( 'collapse', 'offcanvas' ) ), + ), + 'required' => array( + array( $key . '_layout_width_inner', '=', 1 ), + ), + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_layout_lazyload', + 'type' => 'switch', + 'title' => esc_html__( 'Lazyload', 'quadmenu' ), + 'subtitle' => esc_html__( 'Defer images load until they are required.', 'quadmenu' ), + 'default' => (bool) $this->defaults[ $key . '_layout_lazyload' ], + 'description' => esc_html__( 'This is a beta function, please test it carefully.', 'quadmenu' ), + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_layout_current', + 'type' => 'switch', + 'title' => esc_html__( 'Open', 'quadmenu' ), + 'subtitle' => esc_html__( 'Open dropdown if is current page.', 'quadmenu' ), + 'compiler' => false, + 'default' => (bool) $this->defaults[ $key . '_layout_current' ], + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_layout_divider', + 'type' => 'button_set', + 'title' => esc_html__( 'Divider', 'quadmenu' ), + 'subtitle' => esc_html__( 'Show a small divider bar between each menu item.', 'quadmenu' ), + 'options' => array( + 'show' => esc_html__( 'Show', 'quadmenu' ), + 'hide' => esc_html__( 'Hide', 'quadmenu' ), + ), + 'required' => array( + array( $key . '_layout', '=', array( 'embed', 'collapse', 'offcanvas' ) ), + ), + 'default' => $this->validate( $this->defaults[ $key . '_layout_divider' ], array( 'show', 'hide' ) ), + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_layout_caret', + 'type' => 'button_set', + 'title' => esc_html__( 'Caret', 'quadmenu' ), + 'subtitle' => esc_html__( 'Show carets on items with dropdown menus.', 'quadmenu' ), + 'options' => array( + 'show' => esc_html__( 'Show', 'quadmenu' ), + 'hide' => esc_html__( 'Hide', 'quadmenu' ), + ), + 'required' => array( + array( $key . '_layout', '=', array( 'embed', 'collapse', 'offcanvas' ) ), + ), + 'default' => $this->validate( $this->defaults[ $key . '_layout_caret' ], array( 'show', 'hide' ) ), + ), + array( + 'customizer' => false, + 'id' => $key . '_layout_classes', + 'type' => 'text', + 'title' => esc_html__( 'Classes', 'quadmenu' ), + 'subtitle' => esc_html__( 'Include your own classes in the menu.', 'quadmenu' ), + 'default' => $this->defaults[ $key . '_layout_classes' ], + 'validate' => 'no_special_chars', + ), + // Dropdown + // --------------------------------------------------------- + array( + 'id' => $key . '_dropdown_divider', + 'type' => 'section', + 'title' => esc_html__( 'Dropdown', 'quadmenu' ), + 'indent' => false, + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_layout_trigger', + 'type' => 'button_set', + 'title' => esc_html__( 'Trigger', 'quadmenu' ), + 'options' => array( + 'hoverintent' => esc_html__( 'Hover', 'quadmenu' ), + 'click' => esc_html__( 'Click', 'quadmenu' ), + ), + 'subtitle' => esc_html__( 'Open dropdown menu on mouseover or click.', 'quadmenu' ), + 'default' => $this->validate( $this->defaults[ $key . '_layout_trigger' ], array( 'hoverintent', 'click' ) ), + 'required' => array( + array( $key . '_layout', '=', array( 'embed', 'collapse', 'offcanvas' ) ), + ), + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_layout_dropdown_maxheight', + 'type' => 'switch', + 'title' => esc_html__( 'Max Height', 'quadmenu' ), + 'subtitle' => esc_html__( 'Set the max height of dropdowns.', 'quadmenu' ), + 'compiler' => false, + 'default' => (bool) $this->defaults[ $key . '_layout_dropdown_maxheight' ], + 'required' => array( + array( $key . '_layout', '=', array( 'embed', 'collapse', 'offcanvas' ) ), + ), + ), + ), + ); + + $sections[] = array( + // 'customizer' => true, + 'subsection' => true, + 'heading' => false, + 'icon' => 'dashicons dashicons-desktop', + 'id' => 'quadmenu_navbar_' . $key, + 'title' => esc_html__( 'Menu', 'quadmenu' ), + 'permissions' => 'edit_theme_options', + 'fields' => array( + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_navbar_background', + 'type' => 'button_set', + 'title' => esc_html__( 'Background', 'quadmenu' ), + 'subtitle' => esc_html__( 'Select the navbar background.', 'quadmenu' ), + 'options' => array( + 'color' => esc_html__( 'Color', 'quadmenu' ), + 'gradient' => esc_html__( 'Gradient', 'quadmenu' ), + ), + 'default' => $this->validate( $this->defaults[ $key . '_navbar_background' ], array( 'color', 'gradient' ) ), + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_navbar_background_color', + 'title' => esc_html__( 'Color', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a background color for the navbar.', 'quadmenu' ), + 'type' => 'rgba', + 'transparent' => false, + 'validate' => 'colorrgba', + // 'options' => array( + // 'allow_empty' => false, + // ), + 'default' => $this->defaults[ $key . '_navbar_background_color' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_navbar_background_to', + 'title' => esc_html__( 'Gradient', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a background color for the navbar.', 'quadmenu' ), + 'type' => 'rgba', + 'transparent' => false, + 'required' => array( + $key . '_navbar_background', + '=', + 'gradient', + ), + 'validate' => 'colorrgba', + // 'options' => array( + // 'allow_empty' => false, + // ), + 'default' => $this->defaults[ $key . '_navbar_background_to' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_navbar_background_deg', + 'title' => esc_html__( 'Degrees', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a degrees angle for background gradient.', 'quadmenu' ), + 'type' => 'spinner', + 'min' => '0', + 'step' => '1', + 'max' => '360', + 'validate' => 'numeric', + 'required' => array( + $key . '_navbar_background', + '=', + 'gradient', + ), + 'default' => (int) $this->defaults[ $key . '_navbar_background_deg' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Text', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar text.', 'quadmenu' ), + 'id' => $key . '_navbar_text', + 'type' => 'color', + 'transparent' => false, + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_navbar_text' ], + ), + // Navbar + // --------------------------------------------------------- + array( + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_navbar', + 'type' => 'section', + 'title' => esc_html__( 'Menu', 'quadmenu' ), + 'indent' => false, + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_navbar_height', + 'type' => 'slider', + 'title' => esc_html__( 'Height', 'quadmenu' ), + 'subtitle' => esc_html__( 'Change the items height.', 'quadmenu' ), + 'min' => '30', + 'step' => '2', + 'max' => '160', + 'default' => (int) $this->defaults[ $key . '_navbar_height' ], + 'validate' => 'numeric', + ), + array( + 'compiler' => true, + 'id' => $key . '_navbar_width', + 'type' => 'slider', + 'title' => esc_html__( 'Width', 'quadmenu' ), + 'subtitle' => esc_html__( 'Change the items width.', 'quadmenu' ), + 'min' => '60', + 'step' => '1', + 'max' => '500', + 'default' => (int) $this->defaults[ $key . '_navbar_width' ], + 'validate' => 'numeric', + ), + // Logo + // --------------------------------------------------------- + array( + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_logo', + 'type' => 'section', + 'title' => esc_html__( 'Logo', 'quadmenu' ), + 'indent' => false, + // 'required' => array( + // array($key . '_layout', '=', array('collapse', 'offcanvas', 'vertical', 'inherit')), + // ), + ), + array( + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_navbar_logo_link', + 'type' => 'text', + 'title' => esc_html__( 'Link', 'quadmenu' ), + 'subtitle' => esc_html__( 'Set navbar logo url.', 'quadmenu' ), + 'default' => $this->defaults[ $key . '_navbar_logo_link' ], + 'validate' => 'url', + // 'required' => array( + // array($key . '_layout', '=', array('collapse', 'offcanvas', 'vertical', 'inherit')), + // ), + ), + array( + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_navbar_logo', + 'type' => 'media', + 'title' => esc_html__( 'Image', 'quadmenu' ), + 'subtitle' => esc_html__( 'Upload the navbar logo image.', 'quadmenu' ), + 'default' => $this->defaults[ $key . '_navbar_logo' ], + // 'required' => array( + // array($key . '_layout', '=', array('collapse', 'offcanvas', 'vertical', 'inherit')), + // ), + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_navbar_logo_height', + 'type' => 'slider', + 'title' => esc_html__( 'Height', 'quadmenu' ), + 'subtitle' => esc_html__( 'Max logo height in px.', 'quadmenu' ), + 'min' => '20', + 'step' => '1', + 'max' => '160', + 'default' => (int) $this->defaults[ $key . '_navbar_logo_height' ], + 'validate' => 'numeric', + // 'required' => array( + // array($key . '_layout', '=', array('collapse', 'offcanvas', 'vertical', 'inherit')), + // ), + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_navbar_logo_bg', + 'title' => esc_html__( 'Background', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a background color for the navbar logo.', 'quadmenu' ), + 'type' => 'rgba', + 'transparent' => false, + 'validate' => 'colorrgba', + // 'options' => array( + // 'allow_empty' => false, + // ), + 'default' => $this->defaults[ $key . '_navbar_logo_bg' ], + // 'required' => array( + // array($key . '_layout', '=', array('collapse', 'offcanvas', 'vertical', 'inherit')), + // ), + ), + // Layout + // --------------------------------------------------------- + array( + 'customizer' => false, + 'transport' => 'postMessage', + 'id' => $key . '_navbar_layout', + 'type' => 'section', + 'title' => esc_html__( 'Layout', 'quadmenu' ), + 'indent' => false, + ), + array( + 'compiler' => true, + 'customizer' => false, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Margin', 'quadmenu' ), + 'subtitle' => esc_html__( 'Set the margin for the navbar links.', 'quadmenu' ), + 'id' => $key . '_navbar_link_margin', + 'type' => 'border', + 'all' => false, + 'style' => false, + 'color' => false, + 'default' => $this->validate_border( $this->defaults[ $key . '_navbar_link_margin' ] ), + ), + array( + 'compiler' => true, + 'customizer' => false, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Radius', 'quadmenu' ), + 'subtitle' => esc_html__( 'Set the radius for the navbar links.', 'quadmenu' ), + 'id' => $key . '_navbar_link_radius', + 'type' => 'border', + 'all' => false, + 'style' => false, + 'color' => false, + 'default' => $this->defaults[ $key . '_navbar_link_radius' ], + ), + // Link + // --------------------------------------------------------- + array( + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_link', + 'type' => 'section', + 'title' => esc_html__( 'Links', 'quadmenu' ), + 'indent' => false, + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Color', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar links.', 'quadmenu' ), + 'id' => $key . '_navbar_link', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_navbar_link' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Background', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar background.', 'quadmenu' ), + 'id' => $key . '_navbar_link_bg', + 'type' => 'rgba', + 'transparent' => false, + 'validate' => 'colorrgba', + // 'options' => array( + // 'allow_empty' => false, + // ), + 'default' => $this->defaults[ $key . '_navbar_link_bg' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Hover', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar links on mousehover.', 'quadmenu' ), + 'id' => $key . '_navbar_link_hover', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_navbar_link_hover' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Background', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar background on mousehover.', 'quadmenu' ), + 'id' => $key . '_navbar_link_bg_hover', + 'type' => 'rgba', + 'transparent' => false, + 'validate' => 'colorrgba', + // 'options' => array( + // 'allow_empty' => false, + // ), + 'default' => $this->defaults[ $key . '_navbar_link_bg_hover' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Divider', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar links divider.', 'quadmenu' ), + 'id' => $key . '_navbar_divider', + 'type' => 'rgba', + 'transparent' => false, + 'validate' => 'colorrgba', + // 'options' => array( + // 'allow_empty' => false, + // ), + 'default' => $this->defaults[ $key . '_navbar_divider' ], + ), + array( + 'compiler' => true, + 'title' => esc_html__( 'Effect', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar link effect on mousehover.', 'quadmenu' ), + 'id' => $key . '_navbar_link_hover_effect', + 'type' => 'rgba', + 'transparent' => false, + 'validate' => 'colorrgba', + // 'options' => array( + // 'allow_empty' => false, + // ), + 'default' => $this->defaults[ $key . '_navbar_link_hover_effect' ], + ), + // Icon + // --------------------------------------------------------- + array( + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_icon', + 'type' => 'section', + 'title' => esc_html__( 'Icon', 'quadmenu' ), + 'indent' => false, + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Icon', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar links icon.', 'quadmenu' ), + 'id' => $key . '_navbar_link_icon', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_navbar_link_icon' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Hover', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar links icon on hover.', 'quadmenu' ), + 'id' => $key . '_navbar_link_icon_hover', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_navbar_link_icon_hover' ], + ), + // Subtitle + // --------------------------------------------------------- + array( + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_subtitle', + 'type' => 'section', + 'title' => esc_html__( 'Subtitle', 'quadmenu' ), + 'indent' => false, + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Color', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar links subtitle.', 'quadmenu' ), + 'id' => $key . '_navbar_link_subtitle', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_navbar_link_subtitle' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Hover', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar links subtitle on hover.', 'quadmenu' ), + 'id' => $key . '_navbar_link_subtitle_hover', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_navbar_link_subtitle_hover' ], + ), + // Badge + // --------------------------------------------------------- + array( + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_badge', + 'type' => 'section', + 'title' => esc_html__( 'Badge', 'quadmenu' ), + 'indent' => false, + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Color', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the badge.', 'quadmenu' ), + 'id' => $key . '_navbar_badge_color', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_navbar_badge_color' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Background', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a background color for the badge.', 'quadmenu' ), + 'id' => $key . '_navbar_badge', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_navbar_badge' ], + ), + // Button + // --------------------------------------------------------- + array( + 'id' => $key . '_button', + 'type' => 'section', + 'title' => esc_html__( 'Button', 'quadmenu' ), + 'indent' => false, + ), + array( + 'title' => esc_html__( 'Color', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar button.', 'quadmenu' ), + 'id' => $key . '_navbar_button', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'compiler' => true, + 'default' => $this->defaults[ $key . '_navbar_button' ], + ), + array( + 'title' => esc_html__( 'Background', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar button.', 'quadmenu' ), + 'id' => $key . '_navbar_button_background', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'compiler' => true, + 'default' => $this->defaults[ $key . '_navbar_button_background' ], + ), + array( + 'title' => esc_html__( 'Hover', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar button on mousehover.', 'quadmenu' ), + 'id' => $key . '_navbar_button_hover', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'compiler' => true, + 'default' => $this->defaults[ $key . '_navbar_button_hover' ], + ), + array( + 'title' => esc_html__( 'Background', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar button on mousehover.', 'quadmenu' ), + 'id' => $key . '_navbar_button_hover_background', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'compiler' => true, + 'default' => $this->defaults[ $key . '_navbar_button_hover_background' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Radius', 'quadmenu' ), + 'subtitle' => esc_html__( 'Button border radius.', 'quadmenu' ), + 'id' => $key . '_navbar_button_radius', + 'type' => 'border', + 'all' => false, + 'style' => false, + 'color' => false, + 'default' => $this->validate_border( $this->defaults[ $key . '_navbar_button_radius' ] ), + ), + // Scrollbar + // --------------------------------------------------------- + array( + 'customizer' => false, + 'id' => $key . '_scrollbar', + 'type' => 'section', + 'title' => esc_html__( 'ScrollBar', 'quadmenu' ), + 'indent' => false, + 'required' => array( + 'styles_pscrollbar', + '=', + true, + ), + ), + array( + 'compiler' => true, + 'customizer' => false, + 'title' => esc_html__( 'Scroll', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the scrollbar.', 'quadmenu' ), + 'id' => $key . '_navbar_scrollbar', + 'type' => 'rgba', + 'transparent' => false, + 'validate' => 'colorrgba', + 'default' => $this->defaults[ $key . '_navbar_scrollbar' ], + ), + array( + 'compiler' => true, + 'customizer' => false, + 'title' => esc_html__( 'Background', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the scrollbar rail.', 'quadmenu' ), + 'id' => $key . '_navbar_scrollbar_rail', + 'type' => 'rgba', + 'transparent' => false, + 'validate' => 'colorrgba', + 'default' => $this->defaults[ $key . '_navbar_scrollbar_rail' ], + ), + ), + ); + + $sections[] = array( + // 'customizer' => true, + 'subsection' => true, + 'heading' => false, + 'icon' => 'dashicons dashicons-sticky', + 'id' => 'quadmenu_sticky_' . $key, + 'title' => esc_html__( 'Sticky', 'quadmenu' ), + 'permissions' => 'edit_theme_options', + 'fields' => array( + // Sticky + // --------------------------------------------------------- + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_layout_sticky', + 'type' => 'switch', + 'title' => esc_html__( 'Sticky', 'quadmenu' ), + 'subtitle' => esc_html__( 'Make the menu sticky on scroll.', 'quadmenu' ), + 'default' => (int) $this->defaults[ $key . '_layout_sticky' ], + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_layout_sticky_offset', + 'type' => 'slider', + 'title' => esc_html__( 'Offset', 'quadmenu' ), + 'subtitle' => esc_html__( 'Set the length of the scroll for each user to pass before the menu will stick to the top of the window.', 'quadmenu' ), + 'min' => '0', + 'step' => '1', + 'max' => '340', + 'required' => array( + $key . '_layout_sticky', + '=', + 1, + ), + 'default' => (int) $this->defaults[ $key . '_layout_sticky_offset' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_sticky_background', + 'title' => esc_html__( 'Background', 'quadmenu' ), + 'subtitle' => esc_html__( 'Change the navbar sticky background.', 'quadmenu' ), + 'type' => 'rgba', + 'validate' => 'colorrgba', + // 'options' => array( + // 'allow_empty' => false, + // ), + 'transparent' => false, + 'default' => $this->defaults[ $key . '_sticky_background' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_sticky_height', + 'type' => 'slider', + 'title' => esc_html__( 'Height', 'quadmenu' ), + 'subtitle' => esc_html__( 'Change the navbar sticky height.', 'quadmenu' ), + 'min' => '30', + 'step' => '2', + 'max' => '160', + 'default' => $this->defaults[ $key . '_sticky_height' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_sticky_logo_height', + 'type' => 'slider', + 'title' => esc_html__( 'Logo', 'quadmenu' ), + 'subtitle' => esc_html__( 'Max logo height in px.', 'quadmenu' ), + 'min' => '20', + 'step' => '1', + 'max' => '160', + 'default' => $this->defaults[ $key . '_sticky_logo_height' ], + ), + ), + ); + + $sections[] = array( + // 'customizer' => true, + 'subsection' => true, + 'heading' => false, + 'icon' => 'dashicons dashicons-tablet', + 'id' => 'quadmenu_mobile_' . $key, + 'title' => esc_html__( 'Mobile', 'quadmenu' ), + 'permissions' => 'edit_theme_options', + 'fields' => array( + // Mobile + // --------------------------------------------------------- + /* + array( + 'id' => $key . '_mobile', + 'type' => 'section', + 'title' => esc_html__('Mobile', 'quadmenu'), + 'indent' => true + ), */ + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_mobile_shadow', + 'type' => 'button_set', + 'title' => esc_html__( 'Shadow', 'quadmenu' ), + 'subtitle' => esc_html__( 'Display shadow on mobile navbar.', 'quadmenu' ), + 'options' => array( + 'show' => esc_html__( 'Show', 'quadmenu' ), + 'hide' => esc_html__( 'Hide', 'quadmenu' ), + ), + 'default' => $this->validate( $this->defaults[ $key . '_mobile_shadow' ], array( 'show', 'hide' ) ), + ), + array( + 'compiler' => true, + 'title' => esc_html__( 'Border', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the border separator.', 'quadmenu' ), + 'id' => $key . '_navbar_mobile_border', + 'type' => 'rgba', + 'transparent' => false, + 'validate' => 'colorrgba', + 'default' => $this->defaults[ $key . '_navbar_mobile_border' ], + ), + // Toggle + // --------------------------------------------------------- + array( + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_toggle', + 'type' => 'section', + 'title' => esc_html__( 'Toggle', 'quadmenu' ), + 'indent' => false, + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Open', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the toggle icon.', 'quadmenu' ), + 'id' => $key . '_navbar_toggle_open', + 'type' => 'color', + 'transparent' => false, + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_navbar_toggle_open' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Close', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the toggle button background on hover.', 'quadmenu' ), + 'id' => $key . '_navbar_toggle_close', + 'type' => 'color', + 'transparent' => false, + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_navbar_toggle_close' ], + ), + array( + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_mobile_link', + 'type' => 'section', + 'title' => esc_html__( 'Link', 'quadmenu' ), + 'indent' => false, + ), + array( + 'compiler' => true, + 'customizer' => false, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Margin', 'quadmenu' ), + 'subtitle' => esc_html__( 'Set the margin for the mobile links.', 'quadmenu' ), + 'id' => $key . '_mobile_link_padding', + 'type' => 'border', + 'all' => false, + 'style' => false, + 'color' => false, + 'default' => $this->defaults[ $key . '_mobile_link_padding' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Border', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a border color for the mobile menu links border.', 'quadmenu' ), + 'id' => $key . '_mobile_link_border', + 'type' => 'border', + 'default' => $this->defaults[ $key . '_mobile_link_border' ], + ), + ), + ); + + $sections[] = array( + // 'customizer' => true, + 'subsection' => true, + 'heading' => false, + 'icon' => 'dashicons dashicons-editor-break', + 'id' => 'quadmenu_dropdown_' . $key, + 'title' => esc_html__( 'Dropdown', 'quadmenu' ), + 'permissions' => 'edit_theme_options', + 'fields' => array( + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_dropdown_shadow', + 'type' => 'button_set', + 'title' => esc_html__( 'Shadow', 'quadmenu' ), + 'subtitle' => esc_html__( 'Display shadow on dropdown menus.', 'quadmenu' ), + 'options' => array( + 'show' => esc_html__( 'Show', 'quadmenu' ), + 'hide' => esc_html__( 'Hide', 'quadmenu' ), + ), + 'default' => $this->validate( $this->defaults[ $key . '_dropdown_shadow' ], array( 'show', 'hide' ) ), + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_dropdown_margin', + 'type' => 'spinner', + 'title' => esc_html__( 'Margin', 'quadmenu' ), + 'subtitle' => esc_html__( 'Dropdown margin top.', 'quadmenu' ), + 'min' => '0', + 'step' => '1', + 'max' => '45', + 'default' => (int) $this->defaults[ $key . '_dropdown_margin' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Radius', 'quadmenu' ), + 'subtitle' => esc_html__( 'Dropdown border radius.', 'quadmenu' ), + 'id' => $key . '_dropdown_radius', + 'type' => 'border', + 'all' => false, + 'style' => false, + 'color' => false, + 'default' => $this->validate_border( $this->defaults[ $key . '_dropdown_radius' ] ), + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Border', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a border color for the dropdown.', 'quadmenu' ), + 'id' => $key . '_dropdown_border', + 'type' => 'border', + 'all' => false, + 'style' => false, + 'default' => $this->validate_border( $this->defaults[ $key . '_dropdown_border' ] ), + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Background', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a background color for the dropdown menu.', 'quadmenu' ), + 'id' => $key . '_dropdown_background', + 'type' => 'rgba', + 'transparent' => false, + 'validate' => 'colorrgba', + // 'options' => array( + // 'allow_empty' => false, + // ), + 'default' => $this->defaults[ $key . '_dropdown_background' ], + ), + // Link + // --------------------------------------------------------- + array( + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_dropdown_link_section', + 'type' => 'section', + 'title' => esc_html__( 'Link', 'quadmenu' ), + 'indent' => false, + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Color', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the dropdown menu links.', 'quadmenu' ), + 'id' => $key . '_dropdown_link', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_dropdown_link' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Hover', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the dropdown menu links on mousehover.', 'quadmenu' ), + 'id' => $key . '_dropdown_link_hover', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_dropdown_link_hover' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Background', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a background color for the links on mouseover.', 'quadmenu' ), + 'id' => $key . '_dropdown_link_bg_hover', + 'type' => 'rgba', + 'transparent' => false, + 'validate' => 'colorrgba', + // 'options' => array( + // 'allow_empty' => false, + // ), + 'default' => $this->defaults[ $key . '_dropdown_link_bg_hover' ], + ), + /* + array( + 'compiler' => true, + 'customizer' => false, + 'transport' => 'postMessage', + 'title' => esc_html__('Margin', 'quadmenu'), + 'subtitle' => esc_html__('Set the margin for the navbar links.', 'quadmenu'), + 'id' => $key . '_dropdown_link_padding', + 'type' => 'border', + 'all' => false, + 'style' => false, + 'color' => false, + 'default' => $this->defaults[$key . '_dropdown_link_padding'] + ), */ + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Border', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a border color for the dropdown menu links border.', 'quadmenu' ), + 'id' => $key . '_dropdown_link_border', + 'type' => 'border', + 'default' => $this->defaults[ $key . '_dropdown_link_border' ], + ), + // Title + // --------------------------------------------------------- + array( + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_title', + 'type' => 'section', + 'title' => esc_html__( 'Title', 'quadmenu' ), + 'indent' => false, + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Title', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the dropdown menu title.', 'quadmenu' ), + 'id' => $key . '_dropdown_title', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_dropdown_title' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Border', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the dropdown menu title border.', 'quadmenu' ), + 'id' => $key . '_dropdown_title_border', + 'type' => 'border', + 'default' => $this->defaults[ $key . '_dropdown_title_border' ], + ), + // Icon + // --------------------------------------------------------- + array( + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_icon', + 'type' => 'section', + 'title' => esc_html__( 'Icon', 'quadmenu' ), + 'indent' => false, + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Icon', 'quadmenu' ), + 'icon' => esc_html__( 'Pick a color for the dropdown links icon.', 'quadmenu' ), + 'id' => $key . '_dropdown_link_icon', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_dropdown_link_icon' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Hover', 'quadmenu' ), + 'icon' => esc_html__( 'Pick a color for the dropdown links icon on hover.', 'quadmenu' ), + 'id' => $key . '_dropdown_link_icon_hover', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_dropdown_link_icon_hover' ], + ), + // Subtitle + // --------------------------------------------------------- + array( + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_subtitle', + 'type' => 'section', + 'title' => esc_html__( 'Subtitle', 'quadmenu' ), + 'indent' => false, + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Color', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the dropdown links subtitle.', 'quadmenu' ), + 'id' => $key . '_dropdown_link_subtitle', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_dropdown_link_subtitle' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Hover', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the dropdown links subtitle on hover.', 'quadmenu' ), + 'id' => $key . '_dropdown_link_subtitle_hover', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_dropdown_link_subtitle_hover' ], + ), + // Button + // --------------------------------------------------------- + array( + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_button', + 'type' => 'section', + 'title' => esc_html__( 'Button', 'quadmenu' ), + 'indent' => false, + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Color', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar button.', 'quadmenu' ), + 'id' => $key . '_dropdown_button', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_dropdown_button' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Background', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar button.', 'quadmenu' ), + 'id' => $key . '_dropdown_button_bg', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_dropdown_button_bg' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Hover', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar button on hover.', 'quadmenu' ), + 'id' => $key . '_dropdown_button_hover', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_dropdown_button_hover' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Background', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar button on hover.', 'quadmenu' ), + 'id' => $key . '_dropdown_button_bg_hover', + 'type' => 'color', + 'transparent' => false, + // 'validate' => 'color', + 'validate' => 'not_empty', + 'default' => $this->defaults[ $key . '_dropdown_button_bg_hover' ], + ), + /* + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__('Radius', 'quadmenu'), + 'subtitle' => esc_html__('Dropdown button border radius.', 'quadmenu'), + 'id' => $key . '_dropdown_button_radius', + 'type' => 'border', + 'all' => false, + 'style' => false, + 'color' => false, + 'default' => $this->validate_border($this->defaults[$key . '_dropdown_button_radius']) + ), + */ + // Tab + // --------------------------------------------------------- + array( + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_tab', + 'type' => 'section', + 'title' => esc_html__( 'Tab', 'quadmenu' ), + 'indent' => false, + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Background', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar tab.', 'quadmenu' ), + 'id' => $key . '_dropdown_tab_bg', + 'type' => 'rgba', + 'transparent' => false, + 'validate' => 'colorrgba', + 'transparent' => false, + 'default' => $this->defaults[ $key . '_dropdown_tab_bg' ], + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Hover', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the navbar tab on hover.', 'quadmenu' ), + 'id' => $key . '_dropdown_tab_bg_hover', + 'type' => 'rgba', + 'transparent' => false, + 'validate' => 'colorrgba', + 'transparent' => false, + 'default' => $this->defaults[ $key . '_dropdown_tab_bg_hover' ], + ), + // Scrollbar + // --------------------------------------------------------- + array( + 'customizer' => false, + 'id' => $key . '_dropdown_scrollbar_section', + 'type' => 'section', + 'title' => esc_html__( 'ScrollBar', 'quadmenu' ), + 'indent' => false, + 'required' => array( + 'styles_pscrollbar', + '=', + true, + ), + ), + array( + 'compiler' => true, + 'customizer' => false, + 'title' => esc_html__( 'Scroll', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the scrollbar.', 'quadmenu' ), + 'id' => $key . '_dropdown_scrollbar', + 'type' => 'rgba', + 'transparent' => false, + 'validate' => 'colorrgba', + 'default' => $this->defaults[ $key . '_dropdown_scrollbar' ], + ), + array( + 'compiler' => true, + 'customizer' => false, + 'title' => esc_html__( 'Background', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a color for the scrollbar rail.', 'quadmenu' ), + 'id' => $key . '_dropdown_scrollbar_rail', + 'type' => 'rgba', + 'transparent' => false, + 'validate' => 'colorrgba', + 'default' => $this->defaults[ $key . '_dropdown_scrollbar_rail' ], + ), + ), + ); + + $sections[] = array( + 'subsection' => true, + 'heading' => false, + 'icon' => 'dashicons dashicons-editor-paste-text', + 'id' => 'quadmenu_typography_' . $key, + 'title' => esc_html__( 'Typography', 'quadmenu' ), + 'permissions' => 'edit_theme_options', + 'fields' => array( + array( + 'compiler' => true, + 'id' => $key . '_font', + 'type' => 'typography', + 'title' => esc_html__( 'General', 'quadmenu' ), + 'subtitle' => esc_html__( 'Specify the font properties.', 'quadmenu' ), + 'font-weight' => true, + 'font-size' => true, + 'font-style' => true, + 'letter-spacing' => true, + 'line-height' => false, + 'google' => true, + 'text-align' => false, + 'color' => false, + 'subsets' => true, + 'default' => $this->validate_font( $this->defaults[ $key . '_font' ] ), + ), + array( + 'compiler' => true, + 'id' => $key . '_navbar_font', + 'type' => 'typography', + 'title' => esc_html__( 'Menu', 'quadmenu' ), + 'subtitle' => esc_html__( 'Specify the font properties.', 'quadmenu' ), + 'font-weight' => true, + 'font-size' => true, + 'font-style' => true, + 'line-height' => false, + 'letter-spacing' => true, + 'google' => true, + 'text-align' => false, + 'color' => false, + 'subsets' => true, + 'default' => $this->validate_font( $this->defaults[ $key . '_navbar_font' ] ), + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Transform', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a text transform for the link.', 'quadmenu' ), + 'id' => $key . '_navbar_link_transform', + 'type' => 'select', + 'options' => array( + 'none' => esc_html__( 'None', 'quadmenu' ), + 'capitalize' => esc_html__( 'Capitalize', 'quadmenu' ), + 'uppercase' => esc_html__( 'Uppercase', 'quadmenu' ), + 'lowercase' => esc_html__( 'Lowercase', 'quadmenu' ), + ), + 'default' => $this->defaults[ $key . '_navbar_link_transform' ], + ), + array( + 'compiler' => true, + 'id' => $key . '_dropdown_font', + 'type' => 'typography', + 'title' => esc_html__( 'Submenu', 'quadmenu' ), + 'subtitle' => esc_html__( 'Specify the font properties.', 'quadmenu' ), + 'font-weight' => true, + 'font-size' => true, + 'font-style' => true, + 'line-height' => false, + 'letter-spacing' => true, + 'google' => true, + 'text-align' => false, + 'color' => false, + 'subsets' => true, + 'default' => $this->validate_font( $this->defaults[ $key . '_dropdown_font' ] ), + ), + array( + 'compiler' => true, + 'customizer' => true, + 'transport' => 'postMessage', + 'title' => esc_html__( 'Transform', 'quadmenu' ), + 'subtitle' => esc_html__( 'Pick a text transform for the link.', 'quadmenu' ), + 'id' => $key . '_dropdown_link_transform', + 'type' => 'select', + 'options' => array( + 'none' => esc_html__( 'None', 'quadmenu' ), + 'capitalize' => esc_html__( 'Capitalize', 'quadmenu' ), + 'uppercase' => esc_html__( 'Uppercase', 'quadmenu' ), + 'lowercase' => esc_html__( 'Lowercase', 'quadmenu' ), + ), + 'default' => $this->defaults[ $key . '_dropdown_link_transform' ], + ), + ), + ); + + $sections[] = array( + 'subsection' => true, + 'heading' => false, + 'icon' => 'dashicons dashicons-format-video', + 'id' => 'quadmenu_animations_' . $key, + 'title' => esc_html__( 'Animations', 'quadmenu' ), + 'permissions' => 'edit_theme_options', + 'fields' => array( + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_layout_hover_effect', + 'type' => 'select', + 'title' => esc_html__( 'Effect', 'quadmenu' ), + 'subtitle' => esc_html__( 'Add an amazing effect for the hover event.', 'quadmenu' ), + 'options' => array( + 'quadmenu-hover-ripple' => esc_html__( 'Ripple', 'quadmenu' ), + // 'quadmenu-hover-text-top' => esc_html__('Text Top', 'quadmenu'), + 'quadmenu-hover-slidebar sl-top' => esc_html__( 'SlideBar Top (Horizontal)', 'quadmenu' ), + 'quadmenu-hover-slidebar sl-middle' => esc_html__( 'SlideBar Middle (Horizontal)', 'quadmenu' ), + 'quadmenu-hover-slidebar sl-bottom' => esc_html__( 'SlideBar Bottom (Horizontal)', 'quadmenu' ), + ), + 'required' => array( + array( $key . '_layout', '=', array( 'collapse', 'offcanvas', 'embed' ) ), + ), + 'default' => $this->defaults[ $key . '_layout_hover_effect' ], + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_navbar_animation_text', + 'type' => 'animation', + 'title' => esc_html__( 'Text', 'quadmenu' ), + 'subtitle' => esc_html__( 'Select the animation for the link text.', 'quadmenu' ), + 'options' => array( + '' => esc_html__( 'None', 'quadmenu' ), + 'quadmenu_bounce' => esc_html__( 'Bounce', 'quadmenu' ), + 'quadmenu_pulse' => esc_html__( 'Pulse', 'quadmenu' ), + 'quadmenu_rubberBand' => esc_html__( 'Rubber', 'quadmenu' ), + 'quadmenu_swing' => esc_html__( 'Swing', 'quadmenu' ), + 'quadmenu_tada' => esc_html__( 'Tada', 'quadmenu' ), + 'quadmenu_wobble' => esc_html__( 'Wobble', 'quadmenu' ), + ), + 'action' => array( + 'load' => esc_html__( 'Load', 'quadmenu' ), + 'hover' => esc_html__( 'Hover', 'quadmenu' ), + 'loop' => esc_html__( 'Loop', 'quadmenu' ), + ), + 'speed' => array( + 't_200' => 200, + 't_300' => 300, + 't_500' => 500, + 't_700' => 700, + 't_1000' => 1000, + 't_1500' => 1500, + 't_2000' => 2000, + ), + 'default' => $this->defaults[ $key . '_navbar_animation_text' ], + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_navbar_animation_subtitle', + 'type' => 'animation', + 'title' => esc_html__( 'Subtitle', 'quadmenu' ), + 'subtitle' => esc_html__( 'Select the animation for the link subtitle.', 'quadmenu' ), + 'options' => array( + '' => esc_html__( 'None', 'quadmenu' ), + 'quadmenu_bounce' => esc_html__( 'Bounce', 'quadmenu' ), + 'quadmenu_pulse' => esc_html__( 'Pulse', 'quadmenu' ), + 'quadmenu_rubberBand' => esc_html__( 'Rubber', 'quadmenu' ), + 'quadmenu_swing' => esc_html__( 'Swing', 'quadmenu' ), + 'quadmenu_tada' => esc_html__( 'Tada', 'quadmenu' ), + 'quadmenu_wobble' => esc_html__( 'Wobble', 'quadmenu' ), + ), + 'action' => array( + 'load' => esc_html__( 'Load', 'quadmenu' ), + 'hover' => esc_html__( 'Hover', 'quadmenu' ), + 'loop' => esc_html__( 'Loop', 'quadmenu' ), + ), + 'speed' => array( + 't_200' => 200, + 't_300' => 300, + 't_500' => 500, + 't_700' => 700, + 't_1000' => 1000, + 't_1500' => 1500, + 't_2000' => 2000, + ), + 'default' => $this->defaults[ $key . '_navbar_animation_subtitle' ], + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_navbar_animation_icon', + 'type' => 'animation', + 'title' => esc_html__( 'Icon', 'quadmenu' ), + 'subtitle' => esc_html__( 'Select the animation for the links icons.', 'quadmenu' ), + 'options' => array( + '' => esc_html__( 'None', 'quadmenu' ), + 'quadmenu_bounce' => esc_html__( 'Bounce', 'quadmenu' ), + 'quadmenu_pulse' => esc_html__( 'Pulse', 'quadmenu' ), + 'quadmenu_rubberBand' => esc_html__( 'Rubber', 'quadmenu' ), + 'quadmenu_swing' => esc_html__( 'Swing', 'quadmenu' ), + 'quadmenu_tada' => esc_html__( 'Tada', 'quadmenu' ), + 'quadmenu_wobble' => esc_html__( 'Wobble', 'quadmenu' ), + ), + 'action' => array( + 'load' => esc_html__( 'Load', 'quadmenu' ), + 'hover' => esc_html__( 'Hover', 'quadmenu' ), + 'loop' => esc_html__( 'Loop', 'quadmenu' ), + ), + 'speed' => array( + 't_200' => 200, + 't_300' => 300, + 't_500' => 500, + 't_700' => 700, + 't_1000' => 1000, + 't_1500' => 1500, + 't_2000' => 2000, + ), + 'default' => $this->defaults[ $key . '_navbar_animation_icon' ], + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_navbar_animation_badge', + 'type' => 'animation', + 'title' => esc_html__( 'Badge', 'quadmenu' ), + 'subtitle' => esc_html__( 'Select the animation for the links badges.', 'quadmenu' ), + 'options' => array( + '' => esc_html__( 'None', 'quadmenu' ), + 'quadmenu_bounce' => esc_html__( 'Bounce', 'quadmenu' ), + 'quadmenu_pulse' => esc_html__( 'Pulse', 'quadmenu' ), + 'quadmenu_rubberBand' => esc_html__( 'Rubber', 'quadmenu' ), + 'quadmenu_swing' => esc_html__( 'Swing', 'quadmenu' ), + 'quadmenu_tada' => esc_html__( 'Tada', 'quadmenu' ), + 'quadmenu_wobble' => esc_html__( 'Wobble', 'quadmenu' ), + ), + 'action' => array( + 'load' => esc_html__( 'Load', 'quadmenu' ), + 'hover' => esc_html__( 'Hover', 'quadmenu' ), + 'loop' => esc_html__( 'Loop', 'quadmenu' ), + ), + 'speed' => array( + 't_200' => 200, + 't_300' => 300, + 't_500' => 500, + 't_700' => 700, + 't_1000' => 1000, + 't_1500' => 1500, + 't_2000' => 2000, + ), + 'default' => $this->defaults[ $key . '_navbar_animation_badge' ], + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_navbar_animation_cart', + 'type' => 'animation', + 'title' => esc_html__( 'Cart', 'quadmenu' ), + 'subtitle' => esc_html__( 'Select the animation for the cart bubble.', 'quadmenu' ), + 'options' => array( + '' => esc_html__( 'None', 'quadmenu' ), + 'quadmenu_bounce' => esc_html__( 'Bounce', 'quadmenu' ), + 'quadmenu_pulse' => esc_html__( 'Pulse', 'quadmenu' ), + 'quadmenu_rubberBand' => esc_html__( 'Rubber', 'quadmenu' ), + 'quadmenu_swing' => esc_html__( 'Swing', 'quadmenu' ), + 'quadmenu_tada' => esc_html__( 'Tada', 'quadmenu' ), + 'quadmenu_wobble' => esc_html__( 'Wobble', 'quadmenu' ), + ), + 'speed' => array( + 't_200' => 200, + 't_300' => 300, + 't_500' => 500, + 't_700' => 700, + ), + 'default' => $this->defaults[ $key . '_navbar_animation_cart' ], + ), + array( + 'customizer' => true, + 'transport' => 'postMessage', + 'id' => $key . '_dropdown', + 'type' => 'section', + 'title' => esc_html__( 'Dropdown', 'quadmenu' ), + 'indent' => false, + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_layout_animation', + 'type' => 'animation', + 'title' => esc_html__( 'Dropdown', 'quadmenu' ), + 'subtitle' => esc_html__( 'Select the animation for the dropdowns.', 'quadmenu' ), + 'options' => array( + 'quadmenu_fadeIn' => esc_html__( 'FadeIn', 'quadmenu' ), + 'quadmenu_btt' => esc_html__( 'Bottom to top', 'quadmenu' ), + 'quadmenu_rtl' => esc_html__( 'Right to left', 'quadmenu' ), + 'quadmenu_ltr' => esc_html__( 'Left to right', 'quadmenu' ), + 'quadmenu_hinge' => esc_html__( 'Hinge', 'quadmenu' ), + 'quadmenu_flip' => esc_html__( 'Flip', 'quadmenu' ), + ), + 'speed' => array( + 't_100' => 100, + 't_200' => 200, + 't_300' => 300, + 't_500' => 500, + 't_700' => 700, + 't_1000' => 1000, + ), + 'default' => $this->defaults[ $key . '_layout_animation' ], + 'required' => array( + array( $key . '_layout', '=', array( 'embed', 'collapse', 'offcanvas' ) ), + ), + 'validate' => 'no_special_chars', + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_dropdown_animation_text', + 'type' => 'animation', + 'title' => esc_html__( 'Text', 'quadmenu' ), + 'subtitle' => esc_html__( 'Select the animation for the menu links.', 'quadmenu' ), + 'options' => array( + '' => esc_html__( 'None', 'quadmenu' ), + 'quadmenu_bounce' => esc_html__( 'Bounce', 'quadmenu' ), + 'quadmenu_pulse' => esc_html__( 'Pulse', 'quadmenu' ), + 'quadmenu_rubberBand' => esc_html__( 'Rubber', 'quadmenu' ), + 'quadmenu_swing' => esc_html__( 'Swing', 'quadmenu' ), + 'quadmenu_tada' => esc_html__( 'Tada', 'quadmenu' ), + 'quadmenu_wobble' => esc_html__( 'Wobble', 'quadmenu' ), + ), + 'action' => array( + 'load' => esc_html__( 'Load', 'quadmenu' ), + 'hover' => esc_html__( 'Hover', 'quadmenu' ), + 'loop' => esc_html__( 'Loop', 'quadmenu' ), + ), + 'speed' => array( + 't_200' => 200, + 't_300' => 300, + 't_500' => 500, + 't_700' => 700, + 't_1000' => 1000, + 't_1500' => 1500, + 't_2000' => 2000, + ), + 'default' => $this->defaults[ $key . '_dropdown_animation_text' ], + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_dropdown_animation_subtitle', + 'type' => 'animation', + 'title' => esc_html__( 'Subtitle', 'quadmenu' ), + 'subtitle' => esc_html__( 'Select the animation for the menu links.', 'quadmenu' ), + 'options' => array( + '' => esc_html__( 'None', 'quadmenu' ), + 'quadmenu_bounce' => esc_html__( 'Bounce', 'quadmenu' ), + 'quadmenu_pulse' => esc_html__( 'Pulse', 'quadmenu' ), + 'quadmenu_rubberBand' => esc_html__( 'Rubber', 'quadmenu' ), + 'quadmenu_swing' => esc_html__( 'Swing', 'quadmenu' ), + 'quadmenu_tada' => esc_html__( 'Tada', 'quadmenu' ), + 'quadmenu_wobble' => esc_html__( 'Wobble', 'quadmenu' ), + ), + 'action' => array( + 'load' => esc_html__( 'Load', 'quadmenu' ), + 'hover' => esc_html__( 'Hover', 'quadmenu' ), + 'loop' => esc_html__( 'Loop', 'quadmenu' ), + ), + 'speed' => array( + 't_200' => 200, + 't_300' => 300, + 't_500' => 500, + 't_700' => 700, + 't_1000' => 1000, + 't_1500' => 1500, + 't_2000' => 2000, + ), + 'default' => $this->defaults[ $key . '_dropdown_animation_subtitle' ], + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_dropdown_animation_icon', + 'type' => 'animation', + 'title' => esc_html__( 'Icon', 'quadmenu' ), + 'subtitle' => esc_html__( 'Select the animation for the menu links.', 'quadmenu' ), + 'options' => array( + '' => esc_html__( 'None', 'quadmenu' ), + 'quadmenu_bounce' => esc_html__( 'Bounce', 'quadmenu' ), + 'quadmenu_pulse' => esc_html__( 'Pulse', 'quadmenu' ), + 'quadmenu_rubberBand' => esc_html__( 'Rubber', 'quadmenu' ), + 'quadmenu_swing' => esc_html__( 'Swing', 'quadmenu' ), + 'quadmenu_tada' => esc_html__( 'Tada', 'quadmenu' ), + 'quadmenu_wobble' => esc_html__( 'Wobble', 'quadmenu' ), + ), + 'action' => array( + 'load' => esc_html__( 'Load', 'quadmenu' ), + 'hover' => esc_html__( 'Hover', 'quadmenu' ), + 'loop' => esc_html__( 'Loop', 'quadmenu' ), + ), + 'speed' => array( + 't_200' => 200, + 't_300' => 300, + 't_500' => 500, + 't_700' => 700, + 't_1000' => 1000, + 't_1500' => 1500, + 't_2000' => 2000, + ), + 'default' => $this->defaults[ $key . '_dropdown_animation_icon' ], + ), + array( + 'customizer' => true, + 'transport' => 'selective', + 'id' => $key . '_dropdown_animation_badge', + 'subtitle' => esc_html__( 'Select the animation for the menu links.', 'quadmenu' ), + 'title' => esc_html__( 'Badge', 'quadmenu' ), + 'type' => 'animation', + 'options' => array( + '' => esc_html__( 'None', 'quadmenu' ), + 'quadmenu_bounce' => esc_html__( 'Bounce', 'quadmenu' ), + 'quadmenu_pulse' => esc_html__( 'Pulse', 'quadmenu' ), + 'quadmenu_rubberBand' => esc_html__( 'Rubber', 'quadmenu' ), + 'quadmenu_swing' => esc_html__( 'Swing', 'quadmenu' ), + 'quadmenu_tada' => esc_html__( 'Tada', 'quadmenu' ), + 'quadmenu_wobble' => esc_html__( 'Wobble', 'quadmenu' ), + ), + 'action' => array( + 'load' => esc_html__( 'Load', 'quadmenu' ), + 'hover' => esc_html__( 'Hover', 'quadmenu' ), + 'loop' => esc_html__( 'Loop', 'quadmenu' ), + ), + 'speed' => array( + 't_200' => 200, + 't_300' => 300, + 't_500' => 500, + 't_700' => 700, + 't_1000' => 1000, + 't_1500' => 1500, + 't_2000' => 2000, + ), + 'default' => $this->defaults[ $key . '_dropdown_animation_badge' ], + ), + ), + ); + } + + return $sections; + } + + function validate( $option, $defaults ) { + + if ( ! $option || ! in_array( sanitize_key( $option ), $defaults ) ) { + return reset( $defaults ); + } + + return $option; + } + + function validate_font( $options ) { + + $defaults = array( + 'font-family' => 'Verdana, Geneva, sans-serif', + 'font-size' => '11', + 'font-style' => 'normal', + 'font-weight' => '400', + 'letter-spacing' => 'inherit', + ); + + return wp_parse_args( (array) $options, $defaults ); + } + + function validate_border( $options ) { + + if ( ! is_array( $options ) ) { + $options = array( + 'border-all' => $options, + 'border-top' => $options, + 'border-right' => $options, + 'border-left' => $options, + 'border-bottom' => $options, + ); + } + + $defaults = array( + 'border-all' => '0', + 'border-top' => '0', + 'border-right' => '0', + 'border-left' => '0', + 'border-bottom' => '0', + 'border-color' => '#000000', + ); + + return wp_parse_args( (array) $options, $defaults ); + } + + public static function instance() { + if ( ! isset( self::$instance ) ) { + self::$instance = new self(); + } + return self::$instance; + } + +} diff --git a/lib/class-panel.php b/lib/class-panel.php new file mode 100644 index 0000000..3f64fba --- /dev/null +++ b/lib/class-panel.php @@ -0,0 +1,85 @@ +base, sanitize_title( QUADMENU_PLUGIN_NAME ) ) === false && $screen->base != 'toplevel_page_quadmenu_welcome' ) { + return; + } + + wp_enqueue_style( 'quadmenu-admin' ); + + wp_enqueue_script( 'quadmenu-admin' ); + + wp_localize_script( 'quadmenu-admin', 'quadmenu', apply_filters( 'quadmenu_global_js_data', array() ) ); + } + + function js_data( $data ) { + + $data['nonce'] = wp_create_nonce( 'quadmenu' ); + + return $data; + } + + // function pro() { + // add_submenu_page(self::$panel_slug, __('Premium', 'quadmenu'), sprintf(' %s', __('Premium', 'quadmenu')), 'edit_posts', 'quadmenu_pro', array($this, 'purchase')); + // } + + function menus() { + add_submenu_page( self::$panel_slug, esc_html__( 'Menus', 'quadmenu' ), esc_html__( 'Menus', 'quadmenu' ), 'manage_options', 'nav-menus.php' ); + } + + static function body( $classes ) { + + $screen = get_current_screen(); + + // if (strpos($screen->base, sanitize_title(QUADMENU_PLUGIN_NAME)) === false && $screen->base != 'toplevel_page_quadmenu_welcome') + // return $classes; + + $classes .= ' admin-color-quadmenu'; + + return $classes; + } + + function header() { + + global $submenu; + + require_once QUADMENU_PLUGIN_DIR . 'lib/panel/header.php'; + } + + public static function instance() { + if ( ! isset( self::$instance ) ) { + self::$instance = new self(); + } + return self::$instance; + } + +} + diff --git a/lib/class-plugin.php b/lib/class-plugin.php new file mode 100644 index 0000000..5d83520 --- /dev/null +++ b/lib/class-plugin.php @@ -0,0 +1,588 @@ +constants(); + $this->config(); + $this->includes(); + $this->compatibility(); + $this->hooks(); + // $this->errors(); + } + + private function config() { + Configuration::instance(); + + } + + private function compatibility() { + + WooCommerce::instance(); + Polylang::instance(); + require_once QUADMENU_PLUGIN_DIR . 'lib/integrations/class-vc.php'; + Elementor::instance(); + Beaver::instance(); + Divi::instance(); + add_action( + 'widgets_init', + function() { + register_widget( '\\QuadLayers\\QuadMenu\\Widget' ); + } + ); + } + + private function hooks() { + + add_filter( 'wp_get_nav_menu_items', array( $this, 'remove_nav_menu_item' ), 20, 3 ); + add_filter( 'wp_setup_nav_menu_item', array( $this, 'setup_nav_menu_item_options' ), 90 ); + add_filter( 'quadmenu_setup_nav_menu_item', array( $this, 'setup_nav_menu_item_parents' ), 5 ); + add_filter( 'quadmenu_setup_nav_menu_item', array( $this, 'setup_nav_menu_item_validation' ), 10 ); + + add_action( 'init', array( $this, 'register_sidebar' ) ); + add_action( 'init', array( $this, 'register_icons' ), -35 ); + add_action( 'init', array( $this, 'admin' ), -25 ); + add_action( 'init', array( $this, 'compiler' ), -20 ); + add_action( 'init', array( $this, 'locations' ), -15 ); + add_action( 'init', array( $this, 'init' ), -10 ); + add_action( 'init', array( $this, 'frontend' ), -5 ); + add_action( 'admin_init', array( $this, 'navmenu' ) ); + + add_action( 'plugins_loaded', array( $this, 'i18n' ) ); + } + + public function register_sidebar() { + + register_sidebar( + array( + 'id' => 'quadmenu-widgets', + 'name' => esc_html__( 'QuadMenu Widgets', 'quadmenu' ), + 'description' => esc_html__( 'Do not manually edit this sidebar.', 'quadmenu' ), + ) + ); + } + + function register_icons() { + + foreach ( apply_filters( 'quadmenu_register_icons', array() ) as $id => $settings ) { + + // if (!wp_style_is($id, $list = 'registered')) { + // wp_register_style($id, $settings['url']); + // } + + $settings['ID'] = $id; + + $this->registered_icons[ $id ] = (object) $settings; + + $this->registered_icons_names[ $id ] = $settings['name']; + } + } + + function registered_icons() { + return (object) $this->registered_icons; + } + + function registered_icons_names() { + return $this->registered_icons_names; + } + + function selected_icons() { + + global $quadmenu; + + $this->selected_icons = $this->registered_icons()->dashicons; + + if ( ! empty( $quadmenu['styles_icons'] ) && isset( $this->registered_icons()->{$quadmenu['styles_icons']} ) ) { + $this->selected_icons = $this->registered_icons()->{$quadmenu['styles_icons']}; + } + + if ( ! wp_style_is( $this->selected_icons->ID, $list = 'registered' ) ) { + wp_register_style( $this->selected_icons->ID, $this->selected_icons->url ); + } + + return $this->selected_icons; + } + + + /* + function selected_icons() { + + global $quadmenu; + + if (empty($quadmenu['styles_icons'])) { + self::$selected_icons = $this->registered_icons()->dashicons; + } + + if (empty($this->registered_icons()->{$quadmenu['styles_icons']})) { + self::$selected_icons = $this->registered_icons()->dashicons; + } + + self::$selected_icons = $this->registered_icons()->{$quadmenu['styles_icons']}; + + if (!wp_style_is(self::$selected_icons->ID, $list = 'registered')) { + wp_register_style(self::$selected_icons->ID, self::$selected_icons->url); + } + + return self::$selected_icons; + } */ + + private function theme() { + + $theme = get_stylesheet(); + + $theme = preg_replace( '/[^a-zA-Z0-9_\-]/', '', $theme ); + + return $theme; + } + + private function constants() { + + $upload_dir = wp_upload_dir(); + + define( 'QUADMENU_DB_OPTIONS', "quadmenu_{$this->theme()}" ); + + define( 'QUADMENU_DB_THEMES', "quadmenu_{$this->theme()}_themes" ); + + define( 'QUADMENU_DB_LOCATIONS', "quadmenu_{$this->theme()}_locations" ); + + define( 'QUADMENU_UPLOAD_DIR', trailingslashit( "{$upload_dir['basedir']}/{$this->theme()}" ) ); + + define( 'QUADMENU_UPLOAD_URL', set_url_scheme( trailingslashit( "{$upload_dir['baseurl']}/{$this->theme()}" ) ) ); + + define( 'QUADMENU_PANEL', apply_filters( 'quadmenu_hook_menu_panel', 'quadmenu_options' ) ); + + // Compatibility + define( 'QUADMENU_PATH_CSS', QUADMENU_UPLOAD_DIR ); + define( 'QUADMENU_URL_CSS', QUADMENU_UPLOAD_URL ); + define( 'QUADMENU_OPTIONS', QUADMENU_DB_OPTIONS ); + define( 'QUADMENU_THEMES', QUADMENU_DB_THEMES ); + define( 'QUADMENU_LOCATIONS', QUADMENU_DB_LOCATIONS ); + } + + private function includes() { + + require_once QUADMENU_PLUGIN_DIR . 'lib/class-functions.php'; + + require_once QUADMENU_PLUGIN_DIR . 'lib/class-import.php'; + + Activation::instance(); + + Panel::instance(); + } + + public function admin() { + Admin::instance(); + Welcome::instance(); + System::instance(); + PanelOptions::instance(); + Premium::instance(); + } + + public function locations() { + Locations::instance(); + } + + public function init() { + Themes::instance(); + Options::instance(); + Redux::instance(); + Icons::instance(); + } + + public function compiler() { + + if ( ! is_admin() && ! is_customize_preview() ) { + return; + } + + Compiler::instance(); + } + + function nav_menu_selected_id() { + + if ( wp_doing_ajax() && isset( $_REQUEST['menu_id'] ) ) { + return (int) $_REQUEST['menu_id']; + } + + $nav_menus = wp_get_nav_menus( array( 'orderby' => 'name' ) ); + + $menu_count = count( $nav_menus ); + + // Get recently edited nav menu + $recently_edited = (int) get_user_option( 'nav_menu_recently_edited' ); + + $nav_menu_selected_id = isset( $_REQUEST['menu'] ) ? (int) $_REQUEST['menu'] : 0; + + // Are we on the add new screen? + $add_new_screen = ( isset( $_REQUEST['menu'] ) && 0 == $_REQUEST['menu'] ) ? true : false; + + $page_count = wp_count_posts( 'page' ); + + $one_theme_location_no_menus = ( 1 == count( get_registered_nav_menus() ) && ! $add_new_screen && empty( $nav_menus ) && ! empty( $page_count->publish ) ) ? true : false; + + if ( empty( $recently_edited ) && is_nav_menu( $nav_menu_selected_id ) ) { + $recently_edited = $nav_menu_selected_id; + } + + // Use $recently_edited if none are selected. + if ( empty( $nav_menu_selected_id ) && ! isset( $_REQUEST['menu'] ) && is_nav_menu( $recently_edited ) ) { + $nav_menu_selected_id = $recently_edited; + } + + // On deletion of menu, if another menu exists, show it. + if ( ! $add_new_screen && 0 < $menu_count && isset( $_REQUEST['action'] ) && 'delete' == $_REQUEST['action'] ) { + $nav_menu_selected_id = $nav_menus[0]->term_id; + } + + // Set $nav_menu_selected_id to 0 if no menus. + if ( $one_theme_location_no_menus ) { + $nav_menu_selected_id = 0; + } elseif ( empty( $nav_menu_selected_id ) && ! empty( $nav_menus ) && ! $add_new_screen ) { + // if we have no selection yet, and we have menus, set to the first one in the list. + $nav_menu_selected_id = $nav_menus[0]->term_id; + } + + return $nav_menu_selected_id; + } + + function is_quadmenu( $nav_menu_selected_id = false ) { + + global $quadmenu_active_locations; + + if ( ! $menu_locations = isset( $_REQUEST['menu-locations'] ) && is_array( $_REQUEST['menu-locations'] ) ? $_REQUEST['menu-locations'] : get_nav_menu_locations() ) { + return false; + } + + if ( ! $nav_menu_selected_id = $this->nav_menu_selected_id() ) { + return false; + } + + // chek if this menu id is in the theme locations + if ( ! in_array( sanitize_key( $nav_menu_selected_id ), $menu_locations ) ) { + return false; + } + + if ( count( array_intersect( array_keys( $menu_locations, $nav_menu_selected_id ), array_keys( (array) $quadmenu_active_locations ) ) ) > 0 ) { + return true; + } + + return false; + } + + function is_quadmenu_location( $location = false ) { + + global $quadmenu_active_locations; + + if ( ! empty( $quadmenu_active_locations[ $location ] ) ) { + return true; + } + + return false; + } + + public function navmenu() { + + if ( $this->is_quadmenu() ) { + + Settings::instance(); + Nav_Menu_Widgets::instance(); + Nav_Menu_Columns::instance(); + Nav_Menu_Mega::instance(); + Nav_Menu_Defaults::instance(); + Ajax::instance(); + } + } + + public function frontend() { + + // if (is_admin()) + // return; + + Frontend::instance(); + require_once QUADMENU_PLUGIN_DIR . 'lib/frontend/class-integration.php'; + Items::instance(); + + } + + public function setup_nav_menu_item_options( $item ) { + + if ( isset( $item->ID ) ) { + + $saved_settings = (array) get_post_meta( $item->ID, QUADMENU_DB_ITEM, true ); + + foreach ( $saved_settings as $key => $value ) { + $item->{$key} = $value; + } + + return apply_filters( 'quadmenu_setup_nav_menu_item', $item ); + } + + return $item; + } + + public function setup_nav_menu_item_parents( $item ) { + + global $wp_registered_widgets; + + $items = Configuration::custom_nav_menu_items(); + + // Quadmenu + // ----------------------------------------------------------------- + + if ( strpos( $item->url, $this->prefix ) !== false ) { + $item->quadmenu = str_replace( $this->prefix, '', $item->url ); + } + + if ( isset( $item->quadmenu ) ) { + if ( ! empty( $items->{$item->quadmenu}->label ) ) { + $item->type_label = '[' . $items->{$item->quadmenu}->label . ']'; + } + } + + if ( isset( $item->quadmenu ) && $item->object == 'custom' ) { + $item->object = $item->quadmenu; + } + + if ( ! isset( $item->quadmenu ) ) { + $item->quadmenu = $item->type; + } + + // Replace quadmenu with object if defined + // ----------------------------------------------------------------- + + if ( isset( $items->{$item->object} ) ) { + $item->quadmenu = $item->object; + } + + // Replace quadmenu with object post_archive + // ----------------------------------------------------------------- + if ( $item->type === 'post_type_archive' && isset( $items->{$item->object . '_archive'} ) ) { + $item->quadmenu = $item->object . '_archive'; + } + + // Parent + // ----------------------------------------------------------------- + if ( empty( $item->quadmenu_menu_item_parent ) ) { + if ( ! empty( $item->menu_item_parent ) ) { + + $parent_obj = self::wp_setup_nav_menu_item( $item->menu_item_parent ); + + if ( isset( $parent_obj->type ) ) { + // brokes the subitems + // if (!empty($parent_obj->quadmenu)) { + if ( isset( $parent_obj->quadmenu ) && $parent_obj->type === 'custom' ) { + $item->quadmenu_menu_item_parent = $parent_obj->quadmenu; + } else { + // post_type taxonomy post_type_archive parents + $item->quadmenu_menu_item_parent = $parent_obj->type; + } + } + } else { + $item->quadmenu_menu_item_parent = 'main'; + } + } + + // Validation + // ----------------------------------------------------------------- + + if ( ! empty( $items->{$item->quadmenu}->parent ) ) { + + $item->quadmenu_allowed_parents = $items->{$item->quadmenu}->parent; + + // Main + // ----------------------------------------------------------------- + if ( ! is_array( $item->quadmenu_allowed_parents ) && $item->quadmenu_allowed_parents === 'main' ) { + $item->menu_item_parent = 0; + $item->quadmenu_menu_item_parent = 'main'; + } + + // Invalid + // ----------------------------------------------------------------- + if ( is_array( $item->quadmenu_allowed_parents ) && ! in_array( $item->quadmenu_menu_item_parent, $item->quadmenu_allowed_parents ) ) { + $item->_invalid = true; + } + + // Invalid + // ----------------------------------------------------------------- + if ( ! is_array( $item->quadmenu_allowed_parents ) && $item->quadmenu_allowed_parents != $item->quadmenu_menu_item_parent ) { + $item->_invalid = true; + } + } else { + $item->quadmenu_allowed_parents = 'all'; + } + + if ( $item->quadmenu == 'widget' && ( empty( $item->widget_id ) || ! isset( $wp_registered_widgets[ $item->widget_id ] ) ) ) { + $item->_invalid = true; + } + + return $item; + } + + static function wp_setup_nav_menu_item( $ID ) { + + $item_obj = wp_cache_get( "wp_setup_nav_menu_item_{$ID}", 'quadmenu' ); + + if ( $item_obj === false ) { + + $item_obj = get_post( $ID ); + + if ( ! empty( $item_obj->ID ) ) { + $item_obj = wp_setup_nav_menu_item( $item_obj ); + } + + wp_cache_set( "wp_setup_nav_menu_item_{$ID}", $item_obj, 'quadmenu' ); + } + + return $item_obj; + } + + function setup_nav_menu_item_validation( $item ) { + + if ( isset( $item->target ) && $item->target === 'on' ) { + $item->target = '_blank'; + } + + if ( isset( $item->target ) && $item->target === 'off' ) { + $item->target = ''; + } + + if ( isset( $item->columns ) ) { + + // var_dump($item->columns); + + $item->columns = array_diff( array_filter( (array) $item->columns ), array( 'off' ) ); + } + + return $item; + } + + public function remove_nav_menu_item( $items, $menu, $args ) { + + if ( is_quadmenu() ) { + + foreach ( $items as $key => $item ) { + + if ( ! wp_doing_ajax() ) { + + // Remove invalid items in frontend + if ( ! is_admin() && $item->_invalid ) { + unset( $items[ $key ] ); + } + + // Remove valid quadmenu items + if ( is_admin() && ! $item->_invalid && in_array( sanitize_key( $item->quadmenu_menu_item_parent ), apply_filters( 'quadmenu_remove_nav_menu_item', array( 'column', 'mega', 'login' ) ) ) ) { + unset( $items[ $key ] ); + } + + // Remove invalid items without parent + if ( is_admin() && $item->_invalid && ! $item->quadmenu_menu_item_parent ) { + unset( $items[ $key ] ); + } + } + } + } + + return $items; + } + + public function edit_nav_menu_walker( $menu_id ) { + return 'QuadMenu_Walker_Nav_Menu_Edit'; + } + + function i18n() { + load_plugin_textdomain( 'quadmenu', false, QUADMENU_PLUGIN_DIR . '/languages' ); + } + + public static function taburl( $id = 0 ) { + return admin_url( 'admin.php?page=' . QUADMENU_PANEL . '&tab=' . $id ); + } + + public static function isMin() { + $min = ''; + + if ( false == QUADMENU_DEV ) { + $min = '.min'; + } + + return $min; + } + + public static function send_json_success( $json ) { + if ( ob_get_contents() ) { + ob_clean(); + } + + wp_send_json_success( $json ); + } + + public static function send_json_error( $json ) { + if ( ob_get_contents() ) { + ob_clean(); + } + + wp_send_json_error( $json ); + } + + // private function errors() { + + // if ( ! QUADMENU_DEV ) { + // return; + // } + + // ini_set( 'error_reporting', E_ALL ); + // ini_set( 'display_errors', 1 ); + // ini_set( 'display_startup_errors', 1 ); + // } + + public static function instance() { + if ( ! isset( self::$instance ) ) { + self::$instance = new self(); + } + return self::$instance; + } +} + +Plugin::instance(); diff --git a/lib/class-redux.php b/lib/class-redux.php new file mode 100644 index 0000000..cd79795 --- /dev/null +++ b/lib/class-redux.php @@ -0,0 +1,229 @@ +redux(); + } + + function selected_icons_iconmap() { + return _QuadMenu()->selected_icons()->iconmap; + } + + function header( $path = false ) { + return QUADMENU_PLUGIN_DIR . 'redux/redux/template/header.tpl.php'; + } + + function header_stickybar( $path = false ) { + return QUADMENU_PLUGIN_DIR . 'redux/redux/template/header_stickybar.tpl.php'; + } + + function footer( $path = false ) { + return QUADMENU_PLUGIN_DIR . 'redux/redux/template/footer.tpl.php'; + } + + function remove_redux_menu() { + remove_submenu_page( 'tools.php', 'redux-about' ); + } + + static function notification_bar() { + + if ( $notices = get_option( 'quadmenu_redux_notices', false ) ) { + foreach ( $notices as $notice ) { + + if ( empty( $notice['class'] ) || empty( $notice['notice'] ) ) { + continue; + } + + echo '
    ' . $notice['notice'] . '
    '; + } + delete_option( 'quadmenu_redux_notices' ); + } + } + + static function add_notification( $class = 'updated', $notice = false ) { + + if ( ! $notice ) { + return; + } + + $notices = get_option( 'quadmenu_redux_notices', array() ); + + $notices[] = array( + 'class' => $class, + 'notice' => $notice, + ); + + update_option( 'quadmenu_redux_notices', $notices ); + } + + function ad_remove( $ReduxFramework ) { + + if ( ! class_exists( 'ReduxFramework_extension_ad_remove' ) ) { + + require_once QUADMENU_PLUGIN_DIR . 'redux/redux/ad_remove/extension_ad_remove.php'; + + new \ReduxFramework_extension_ad_remove( $ReduxFramework ); + } + } + + function field_rgba( $field ) { + return QUADMENU_PLUGIN_DIR . 'redux/redux/rgba/field_rgba.php'; + } + + function field_icons( $field ) { + return QUADMENU_PLUGIN_DIR . 'redux/redux/icons/field_icons.php'; + } + + function field_animation( $field ) { + return QUADMENU_PLUGIN_DIR . 'redux/redux/animation/field_animation.php'; + } + + function reload( $return_array ) { + + if ( get_transient( '_quadmenu_saved_reload' ) ) { + + $return_array['action'] = 'reload'; + } + + return $return_array; + } + + static function do_reload( $run = true ) { + + if ( $run ) { + set_transient( '_quadmenu_saved_reload', true, 30 ); + } else { + delete_transient( '_quadmenu_saved_reload' ); + } + } + + public function redux() { + + $args = array( + 'class' => 'quadmenu-admin-wrap', + 'opt_name' => QUADMENU_DB_OPTIONS, + 'disable_tracking' => true, + 'display_name' => QUADMENU_PLUGIN_NAME, + 'display_version' => QUADMENU_PLUGIN_VERSION, + 'menu_type' => 'submenu', + 'allow_sub_menu' => true, + 'menu_title' => QUADMENU_PLUGIN_NAME, + 'page' => QUADMENU_PLUGIN_NAME, + 'google_api_key' => 'AIzaSyBNsacnx37lZpIIyDyNAjGC1qdE7Z0CrEQ', + 'async_typography' => false, + 'show_options_object' => false, + 'global_variable' => 'quadmenu', + 'customizer' => true, + 'page_priority' => null, + 'page_parent' => 'themes.php', + 'page_permissions' => 'edit_theme_options', + 'page_slug' => QUADMENU_PANEL, + 'save_defaults' => true, + 'default_show' => false, + 'default_mark' => '', + 'transient_time' => 60 * MINUTE_IN_SECONDS, + 'output' => true, + 'output_tag' => false, + 'database' => '', + 'use_cdn' => true, + 'hints' => array( + 'icon' => 'el el-question-sign', + 'icon_position' => 'right', + 'icon_color' => 'lightgray', + 'icon_size' => 'normal', + 'tip_style' => array( + 'color' => 'dark', + 'shadow' => true, + 'rounded' => false, + 'style' => '', // youtube', + ), + 'tip_position' => array( + 'my' => 'top left', + 'at' => 'bottom right', + ), + 'tip_effect' => array( + 'show' => array( + 'effect' => 'slide', + 'duration' => '500', + 'event' => 'click', + ), + 'hide' => array( + 'effect' => 'slide', + 'duration' => '500', + 'event' => 'click mouseleave', + ), + ), + ), + 'show_import_export' => true, // REMOVE + 'dev_mode' => QUADMENU_DEV, // Show the time the page took to load, etc + 'dev_mode_icon' => 'quadmenu-database', + 'dev_mode_icon_class' => 'quadmenu-database', + 'system_info' => QUADMENU_DEV, // REMOVE + 'ajax_save' => true, + 'footer_credit' => ' ', + ); + + // Panel Intro text -> before the form + if ( ! isset( $args['global_variable'] ) || $args['global_variable'] !== false ) { + if ( ! empty( $args['global_variable'] ) ) { + $v = $args['global_variable']; + } else { + $v = str_replace( '-', '_', $args['opt_name'] ); + } + } + + if ( class_exists( 'ReduxFramework' ) ) { + new \ReduxFramework( array(), apply_filters( 'quadmenu_redux_args', $args ) ); + } + } + + public static function instance() { + if ( ! isset( self::$instance ) ) { + self::$instance = new self(); + } + return self::$instance; + } +} diff --git a/lib/class-themes.php b/lib/class-themes.php new file mode 100644 index 0000000..bde807b --- /dev/null +++ b/lib/class-themes.php @@ -0,0 +1,211 @@ +themes(); + + add_filter( 'quadmenu_developer_options', array( $this, 'options' ) ); + + add_action( 'wp_ajax_quadmenu_add_theme', array( $this, 'ajax_theme_create' ) ); + + add_action( 'wp_ajax_quadmenu_delete_theme', array( $this, 'ajax_theme_delete' ) ); + + add_action( 'redux/options/' . QUADMENU_DB_OPTIONS . '/import', array( $this, 'import' ), 10, 2 ); + + add_action( 'redux/options/' . QUADMENU_DB_OPTIONS . '/settings/change', array( $this, 'title' ), 10, 2 ); + + // add_action('redux/' . QUADMENU_DB_OPTIONS . '/localize/reset', array($this, 'message')); + add_action( 'wp_ajax_' . QUADMENU_DB_OPTIONS . '_ajax_save', array( $this, 'themes_delete' ) ); + } + + public function themes() { + + global $quadmenu_themes; + + $defaults = array( + 'default_theme' => esc_html( 'Default Theme', 'quadmenu' ), + ); + + $custom = (array) get_option( QUADMENU_DB_THEMES, array() ); + + $quadmenu_themes = apply_filters( 'quadmenu_default_themes', wp_parse_args( $custom, $defaults ) ); + } + + public function options( $options ) { + + global $quadmenu_themes; + + if ( $saved_themes = get_option( QUADMENU_DB_THEMES, array() ) ) { + $options['quadmenu_themes'] = $saved_themes; + } + + $options['themes'] = $this->less_themes( $quadmenu_themes ); + + return $options; + } + + static function less_themes( $quadmenu_themes ) { + + $themes = array(); + + if ( is_array( $quadmenu_themes ) && count( $quadmenu_themes ) ) { + + foreach ( $quadmenu_themes as $key => $theme ) { + + $themes[] = '~"' . $key . '"'; + } + + return implode( ',', array_reverse( $themes ) ); + } + + return '~"' . $quadmenu_themes . '"'; + } + + public function import( $plugin_options = null, $imported_options = null ) { + + if ( ! empty( $imported_options['quadmenu_themes'] ) ) { + update_option( QUADMENU_DB_THEMES, $imported_options['quadmenu_themes'] ); + } + } + + public function ajax_theme_create() { + + if ( ! check_ajax_referer( 'quadmenu', 'nonce', false ) ) { + Plugin::send_json_error( esc_html__( 'Please reload the page.', 'quadmenu' ) ); + } + + do_action( 'quadmenu_delete_theme' ); + + $saved_themes = get_option( QUADMENU_DB_THEMES, array() ); + + $next_id = count( $saved_themes ) + 1; + + $next_key = 'custom_theme_' . $next_id; + + $saved_themes[ $next_key ] = sprintf( esc_html__( 'Custom Theme %s', 'quadmenu' ), $next_id ); + + if ( update_option( QUADMENU_DB_THEMES, $saved_themes ) ) { + + Compiler::do_compiler( true ); + + Redux::add_notification( 'blue', sprintf( esc_html__( 'New theme created. Your options panel will be reloaded to include their options. %s.', 'quadmenu' ), esc_html__( 'Please wait', 'quadmenu' ) ) ); + + Plugin::send_json_success( Plugin::taburl( 'quadmenu_theme_' . $next_key ) ); + } else { + Plugin::send_json_error( esc_html__( 'Can\'t create theme.', 'quadmenu' ) ); + } + + wp_die(); + } + + public function ajax_theme_delete() { + + if ( ! check_ajax_referer( 'quadmenu', 'nonce', false ) ) { + Plugin::send_json_error( esc_html__( 'Please reload the page.', 'quadmenu' ) ); + } + + do_action( 'quadmenu_delete_theme' ); + + global $quadmenu_themes; + + if ( ! empty( $_REQUEST['current_theme'] ) ) { + + $key = sanitize_text_field( $_REQUEST['current_theme'] ); + + $saved_themes = get_option( QUADMENU_DB_THEMES, array() ); + + unset( $saved_themes[ $key ] ); + + $prev_key = reset( array_keys( $quadmenu_themes ) ); + + if ( update_option( QUADMENU_DB_THEMES, $saved_themes ) ) { + + Compiler::do_compiler( true ); + + Redux::add_notification( 'blue', sprintf( esc_html__( 'Theme deleted. Your options panel will be reloaded to remove their options. %s.', 'quadmenu' ), esc_html__( 'Please wait', 'quadmenu' ) ) ); + + Plugin::send_json_success( Plugin::taburl( 'quadmenu_theme_' . $prev_key ) ); + } else { + Plugin::send_json_error( esc_html__( 'Can\'t delete theme.', 'quadmenu' ) ); + } + } + + wp_die(); + } + + function themes_delete() { + + if ( ! empty( $_REQUEST['data'] ) && wp_verify_nonce( $_REQUEST['nonce'], 'redux_ajax_nonce' . QUADMENU_DB_OPTIONS ) ) { + + $redux = \ReduxFrameworkInstances::get_instance( QUADMENU_DB_OPTIONS ); + + $values = array(); + + $_REQUEST['data'] = stripslashes( $_REQUEST['data'] ); + + $values = $redux->redux_parse_str( $_REQUEST['data'] ); + // $values = Redux_Functions_Ex::parse_str( $_REQUEST['data'] ); + + $values = $values[ QUADMENU_DB_OPTIONS ]; + + // if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) { + $values = array_map( 'stripslashes_deep', $values ); + // } + + if ( ! empty( $values['defaults'] ) ) { + + delete_option( QUADMENU_DB_THEMES ); + } + } + } + + function title( $options = false, $changed = false ) { + + $update = false; + + if ( $saved_themes = get_option( QUADMENU_DB_THEMES, array() ) ) { + + foreach ( $saved_themes as $key => $name ) { + + if ( ! empty( $options[ $key . '_theme_title' ] ) && $options[ $key . '_theme_title' ] != $name ) { + + $update = true; + + $saved_themes[ $key ] = $options[ $key . '_theme_title' ]; + } + } + + if ( $update && update_option( QUADMENU_DB_THEMES, $saved_themes ) ) { + Redux::add_notification( 'blue', esc_html__( 'Theme name changed.', 'quadmenu' ) ); + } + } + } + + function message() { + return esc_html__( 'Are you sure? Resetting will lose all custom values and themes.', 'quadmenu' ); + } + + public static function instance() { + if ( ! isset( self::$instance ) ) { + self::$instance = new self(); + } + return self::$instance; + } + +} diff --git a/lib/class-widget.php b/lib/class-widget.php new file mode 100644 index 0000000..2fdd554 --- /dev/null +++ b/lib/class-widget.php @@ -0,0 +1,152 @@ + 'widget_quadmenu_widget', + 'description' => esc_html__( 'A widget that displays the menu in the sidebar.', 'quadmenu' ), + ); + + $control_ops = array( + 'width' => 200, + 'height' => 250, + 'id_base' => 'quadmenu_widget', + ); + + parent::__construct( 'quadmenu_widget', esc_html__( 'QuadMenu Widget', 'quadmenu' ), $widget_ops, $control_ops ); + } + + function widget( $args, $instance ) { + + extract( $args ); + + extract( + shortcode_atts( + array( + 'menu' => '', + 'theme' => '', + 'layout' => 'inherit', + ), + $instance + ) + ); + + echo $before_widget; + + $args = array( + 'echo' => false, + 'menu' => $menu, + 'theme' => $theme, + 'layout' => $layout, + 'theme_location' => 'widget', + ); + + if ( wp_doing_ajax() ) { + $args['layout_classes'] = 'js'; + } + + echo quadmenu( $args ); + + echo $after_widget; + } + + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + $instance['theme'] = strip_tags( $new_instance['theme'] ); + $instance['menu'] = strip_tags( $new_instance['menu'] ); + $instance['layout'] = strip_tags( $new_instance['layout'] ); + return $instance; + } + + function themes( $current = false ) { + + global $quadmenu_themes; + + foreach ( $quadmenu_themes as $key => $theme ) { + ?> + + $menu ) { + ?> + + esc_html__( 'Embed', 'quadmenu' ), + 'collapse' => esc_html__( 'Collapse', 'quadmenu' ), + 'offcanvas' => esc_html__( 'Offcanvas', 'quadmenu' ), + 'vertical' => esc_html__( 'Vertical', 'quadmenu' ), + 'inherit' => esc_html__( 'Inherit', 'quadmenu' ), + ); + + foreach ( $layouts as $key => $layout ) { + ?> + + '', + 'menu' => '', + 'layout' => '', + 'theme' => '', + ); + + $instance = wp_parse_args( (array) $instance, $defaults ); + ?> +

    + + +

    +

    + + +

    +

    + + +

    + selected_icons()->ID ); + + wp_enqueue_script( 'quadmenu' ); + + /* + wp_localize_script('quadmenu', 'quadmenu', apply_filters('quadmenu_global_js_data', array( + 'login-nonce' => wp_create_nonce('quadmenu-login'), + 'gutter' => $quadmenu['gutter'], + ))); + */ + wp_localize_script( + 'quadmenu', + 'quadmenu', + array( + 'ajaxurl' => admin_url( 'admin-ajax.php' ), + 'gutter' => $quadmenu['gutter'], + ) + ); + } + + public function meta() { + global $quadmenu; + + if ( empty( $quadmenu['viewport'] ) ) { + return; + } + ?> + + + + + + 'true', + 'theme' => '', + 'theme_location' => '', + ), + $atts + ) + ); + + $args = array( + 'echo' => $echo == 'false' ? false : true, + 'theme' => $theme, + 'theme_location' => '', + 'sticky' => 0, + ); + + return quadmenu( $args ); +} + +function quadmenu( $args = array() ) { + + // Removes the filder in all functions + // remove_filter('wp_nav_menu_args', 'quadmenu_auto_nav_menu_args', 100000); + // $args = quadmenu_get_nav_menu_args($args); + + $defaults = array( + 'manual' => true, + ); + + $args = wp_parse_args( $args, $defaults ); + + return wp_nav_menu( $args ); +} + +function quadmenu_auto_nav_menu_args( $args ) { + + if ( ! empty( $args['manual'] ) || ( ! empty( $args['theme_location'] ) && is_quadmenu_location( $args['theme_location'] ) ) ) { + + $args = quadmenu_get_nav_menu_args( $args ); + + // remove_all_filters('wp_nav_menu'); + remove_all_filters( 'walker_nav_menu_start_el' ); + remove_all_filters( 'nav_menu_link_attributes' ); + remove_all_filters( 'wp_nav_menu_objects' ); + remove_all_filters( 'wp_nav_menu_items', 60 ); + remove_all_filters( 'wp_nav_menu_args', 60 ); + } + + return $args; +} + +function quadmenu_layout( $nav_menu, $args ) { + + if ( ! empty( $args->menu_template ) ) { + + $args->menu_items = $nav_menu; + + ob_start(); + + quadmenu_get_template( $args->menu_template, $args ); + + $nav_menu = ob_get_clean(); + } + + return $nav_menu; +} + +function quadmenu_lazyload( $nav_menu, $args ) { + + if ( ! empty( $args->layout_lazyload ) ) { + + $lazy_menu = preg_replace_callback( + '//', + function( $matches ) { + return preg_replace( array( '/\bsrc\s*=\s*[\'"](.*?)[\'"]/', '/\bsrcset\s*=\s*[\'"](.*?)[\'"]/' ), array( 'data-src="$1"', 'data-srcset="$1"' ), $matches[0] ); + }, + $nav_menu + ); + + return $lazy_menu; + } + + return $nav_menu; +} + +function quadmenu_get_nav_menu_args( $args = array() ) { + + static $instance = 0; + + $defaults = array( + 'echo' => true, + 'instance' => '', + 'menu' => '', + 'theme' => '', + 'theme_location' => '', + ); + + $args = wp_parse_args( $args, $defaults ); + + // var_dump($args); + // WP + // ------------------------------------------------------------------------- + $args['depth'] = 99; + + $args['container'] = false; + + $args['items_wrap'] = '
      %3$s
    '; + + $args['walker'] = new QuadMenu_Walker(); + + $args['id'] = $instance; + + $args['target_id'] = 'quadmenu_' . $instance; + + $args['fallback_cb'] = 'QuadMenuWalker::fallback'; + + $instance++; + + return apply_filters( 'quadmenu_get_nav_menu_args', $args ); +} + +function quadmenu_add_nav_menu_theme( $args ) { + + if ( $args['theme'] == '' && isset( $args['theme_location'] ) ) { + $args['theme'] = quadmenu_get_menu_theme( $args['theme_location'] ); + } + + return $args; +} + +function quadmenu_add_nav_menu_theme_options( $args ) { + + static $sticky; + + global $quadmenu; + + $opts = array(); + + foreach ( $quadmenu as $key => &$val ) { + if ( ! empty( $args['theme'] ) && strpos( $key, $args['theme'] ) !== false ) { + $opts[ str_replace( "{$args['theme']}_", '', $key ) ] = $val; + } + } + + $opts['layout_width_inner_selector'] = $opts['layout_width_inner'] ? $opts['layout_width_inner_selector'] : ''; + + if ( $opts['layout_sticky'] > 0 ) { + $sticky++; + } + + $opts['layout_sticky'] = (int) $sticky > 1 ? 0 : $opts['layout_sticky']; + + return wp_parse_args( $args, $opts ); +} + +function quadmenu_add_nav_menu_location_options( $args ) { + + global $quadmenu; + + $args['unwrap'] = 0; + + if ( isset( $args['theme_location'] ) && isset( $quadmenu[ $args['theme_location'] . '_unwrap' ] ) ) { + $args['unwrap'] = $quadmenu[ $args['theme_location'] . '_unwrap' ]; + } + + return $args; +} + +function quadmenu_add_nav_menu_template( $args ) { + + $defaults = array( + 'layout' => 'alert', + ); + + $args = wp_parse_args( $args, $defaults ); + + $args['menu_template'] = apply_filters( 'quadmenu_add_nav_menu_template', "layout/{$args['layout']}.php", $args['layout'], $args ); + + return $args; +} + +function quadmenu_add_nav_menu_classes( $args ) { + + $args['menu_class'] = 'quadmenu-navbar-nav'; + + $classes = array(); + + $classes[] = 'quadmenu-' . $args['theme']; + $classes[] = 'quadmenu-v' . QUADMENU_PLUGIN_VERSION; + if ( isset( $args['layout_align'] ) ) { + $classes[] = 'quadmenu-align-' . $args['layout_align']; + } + if ( isset( $args['layout_divider'] ) ) { + $classes[] = 'quadmenu-divider-' . $args['layout_divider']; + } + if ( isset( $args['layout_caret'] ) ) { + $classes[] = 'quadmenu-carets-' . $args['layout_caret']; // 1326 + } + if ( isset( $args['navbar_background'] ) ) { + $classes[] = 'quadmenu-background-' . $args['navbar_background']; // 21326 + } + if ( isset( $args['mobile_shadow'] ) ) { + $classes[] = 'quadmenu-mobile-shadow-' . $args['mobile_shadow'];// 1326 + } + if ( isset( $args['dropdown_shadow'] ) ) { + $classes[] = 'quadmenu-dropdown-shadow-' . $args['dropdown_shadow'];// 1326 + } + if ( in_array( sanitize_key( $args['layout'] ), array( 'offcanvas', 'vertical' ) ) ) { + $classes[] = 'quadmenu-offcanvas-' . $args['layout_offcanvas_float']; + } + if ( ! empty( $args['layout_hover_effect'] ) ) { + $classes[] = $args['layout_hover_effect']; + } + if ( ! empty( $args['layout_classes'] ) ) { + $classes[] = $args['layout_classes']; + } + $args['navbar_class'] = join( ' ', array_map( 'esc_attr', $classes ) ); + return $args; +} + +function quadmenu_get_template( $template_name, $args = array(), $template_path = '', $default_path = '' ) { + + if ( $args && is_array( $args ) ) { + extract( $args ); + } + + $located = quadmenu_locate_template( $template_name, $template_path, $default_path, $args ); + + if ( ! file_exists( $located ) ) { + _doing_it_wrong( __FUNCTION__, sprintf( '%s does not exist.', $located ), '2.1' ); + return; + } + // Allow 3rd party plugin filter template file from their plugin + $located = apply_filters( 'quadmenu_get_template', $located, $template_name, $args, $template_path, $default_path ); + + include $located; +} + +function quadmenu_locate_template( $template_name, $template_path = '', $default_path = '', $args = null ) { + + if ( ! $template_path ) { + $template_path = quadmenu_layout_path(); + } + + if ( ! $default_path ) { + $default_path = QUADMENU_PLUGIN_DIR . 'templates/'; + } + + // Look within passed path within the theme - this is priority + $template = locate_template( + array( + trailingslashit( $template_path ) . $template_name, + $template_name, + ) + ); + + // Get default template + if ( ! $template ) { + $template = $default_path . $template_name; + } + + // Return what we found + return apply_filters( 'quadmenu_locate_template', $template, $template_name, $template_path, $default_path, $args ); +} + +function quadmenu_layout_path( $slash = false ) { + return apply_filters( 'quadmenu_layout_path', 'quadmenu' ) . ( $slash ? '/' : '' ); +} diff --git a/lib/frontend/class-items.php b/lib/frontend/class-items.php new file mode 100644 index 0000000..aa0d161 --- /dev/null +++ b/lib/frontend/class-items.php @@ -0,0 +1,71 @@ +quadmenu ) ) { + return $class; + } + + switch ( $item->quadmenu ) { + + case 'mega': + $class = '\\QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Mega'; + break; + + case 'column'; + $class = '\\QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Column'; + break; + + case 'widget'; + $class = '\\QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Widget'; + break; + + case 'icon'; + $class = '\\QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Icon'; + break; + + case 'search'; + $class = '\\QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Search'; + break; + + case 'cart'; + $class = '\\QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Cart'; + break; + + case 'post_type'; + $class = '\\QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Post_Type'; + break; + } + + return $class; + } + + public static function instance() { + if ( ! isset( self::$instance ) ) { + self::$instance = new self(); + } + return self::$instance; + } + +} + +// new QuadMenu_Items(); diff --git a/lib/frontend/walker/class-quadmenu-item-cart.php b/lib/frontend/walker/class-quadmenu-item-cart.php new file mode 100644 index 0000000..b5816bc --- /dev/null +++ b/lib/frontend/walker/class-quadmenu-item-cart.php @@ -0,0 +1,136 @@ +item->url = ''; + $this->args->has_title = false; + + if ( empty( $this->item->title ) ) { + $this->item->title = esc_html__( 'Your cart', 'quadmenu' ); + } + + if ( function_exists( 'is_woocommerce' ) && ! is_cart() && ! is_checkout() ) { + $this->args->has_dropdown = $this->has_children = $this->args->has_caret = true; + } + } + + function get_end_el() { + if ( ! class_exists( 'WooCommerce' ) ) { + return ''; + } + } + + function get_start_el() { + + if ( ! class_exists( 'WooCommerce' ) ) { + return ''; + } + + $item_output = ''; + + $this->add_item_classes(); + + $this->add_item_classes_prefix(); + + $this->add_item_classes_quadmenu(); + + $this->add_item_classes_cart(); + + $id = $this->get_item_id(); + + $class = $this->get_item_classes(); + + $item_output .= ''; + + $this->add_link_atts(); + + $this->add_link_atts_toggle(); + + $this->add_link_atts_cart(); + + $item_output .= $this->get_link(); + + $item_output .= $this->get_dropdown_wrap_start(); + + $item_output .= $this->widget(); + + $item_output .= $this->get_dropdown_wrap_end(); + + return $item_output; + } + + function add_item_classes_cart() { + + $this->count = is_object( WC()->cart ) ? WC()->cart->get_cart_contents_count() : 0; + + if ( empty( $this->count ) ) { + $this->item_classes[] = 'quadmenu-cart-empty'; + } else { + $this->item->url = wc_get_cart_url(); + } + } + + function add_link_atts_cart() { + + $this->item_atts['data-cart-url'] = wc_get_cart_url(); + + $this->item_atts['data-cart-price'] = wc_price( 0 ); + + $this->item_atts['data-cart-qty'] = esc_attr( $this->count ); + + if ( ! empty( $this->args->navbar_animation_cart ) ) { + $this->item_atts['data-cart-animation'] = join( ' ', array_map( 'sanitize_html_class', (array) $this->args->navbar_animation_cart ) ); + } + } + + function get_icon() { + ob_start(); + ?> + + + count ); ?> + + cart ) ? WC()->cart->get_cart_total() : 0; ?> + + get_cart_icon(); ?> + + get_cart_text(); ?> + item->cart_text ) ) { + ?> +
    item->cart_text; ?>
    + + + item->custom_type = 'column'; + } + + function get_start_el() { + + $item_output = ''; + + $this->add_item_classes(); + + $this->add_item_classes_prefix(); + + $this->add_item_classes_columns(); + + $id = $this->get_item_id(); + + $class = $this->get_item_classes(); + + $item_output .= ''; + + $item_output .= $this->get_title(); + + return $item_output; + } + + function add_item_classes_columns() { + + $this->item_classes = array_diff( $this->item_classes, array( 'quadmenu-item-type-custom' ) ); + + $this->item_classes[] = 'quadmenu-item-type-' . $this->item->quadmenu; + + if ( ! empty( $this->item->columns ) && is_array( $this->item->columns ) ) { + $this->item_classes[] = join( ' ', array_map( 'sanitize_html_class', $this->item->columns ) ); + } + } + + function get_title() { + + } + + function add_item_dropdown_classes() { + return false; + } + + function add_item_dropdown_ul_classes() { + return false; + } + +} diff --git a/lib/frontend/walker/class-quadmenu-item-default.php b/lib/frontend/walker/class-quadmenu-item-default.php new file mode 100644 index 0000000..bbcb807 --- /dev/null +++ b/lib/frontend/walker/class-quadmenu-item-default.php @@ -0,0 +1,43 @@ +add_item_classes(); + + $this->add_item_classes_prefix(); + + $this->add_item_classes_current(); + + $this->add_item_classes_quadmenu(); + + $id = $this->get_item_id(); + + $class = $this->get_item_classes(); + + $item_output .= ''; + + $this->add_link_atts(); + + $this->add_link_atts_toggle(); + + $item_output .= $this->get_link(); + + return $item_output; + } + +} diff --git a/lib/frontend/walker/class-quadmenu-item-icon.php b/lib/frontend/walker/class-quadmenu-item-icon.php new file mode 100644 index 0000000..49572f2 --- /dev/null +++ b/lib/frontend/walker/class-quadmenu-item-icon.php @@ -0,0 +1,31 @@ +args->has_caret = false; + // $this->args->has_dropdown = $this->has_children = true; + $this->args->has_title = $this->args->link_before = $this->args->link_after = false; + } + + function get_title() { + ob_start(); + ?> + + args->has_background = ( 0 === $this->depth && isset( $this->item->background['thumbnail-id'] ) && is_array( wp_get_attachment_image_src( $this->item->background['thumbnail-id'], 'full' ) ) ); + } + + function get_start_el() { + + $item_output = ''; + + $this->add_item_classes(); + + $this->add_item_classes_prefix(); + + $this->add_item_classes_quadmenu(); + + $this->add_item_classes_maxheight(); + + $this->add_item_dropdown_width(); + + $id = $this->get_item_id(); + + $class = $this->get_item_classes(); + + $item_output .= ''; + + $this->add_link_atts(); + + $this->add_link_atts_toggle(); + + $item_output .= $this->get_link(); + + // $this->add_dropdown_background(); + + return $item_output; + } + + function add_item_dropdown_width() { + + if ( ! empty( $this->item->stretch ) ) { + $this->dropdown_classes[] = 'quadmenu-dropdown-stretch-' . $this->item->stretch; + } + + if ( empty( $this->item->stretch ) && ! empty( $this->item->columns ) ) { + $this->dropdown_classes = array_merge( $this->dropdown_classes, $this->item->columns ); + } + + if ( empty( $this->item->stretch ) && empty( $this->item->columns ) ) { + $this->dropdown_classes[] = 'quadmenu-dropdown-stretch-boxed'; + } + } + + function add_item_dropdown_ul_classes() { + $this->dropdown_ul_classes[] = 'quadmenu-row'; + } +} diff --git a/lib/frontend/walker/class-quadmenu-item-post-type.php b/lib/frontend/walker/class-quadmenu-item-post-type.php new file mode 100644 index 0000000..23216e1 --- /dev/null +++ b/lib/frontend/walker/class-quadmenu-item-post-type.php @@ -0,0 +1,82 @@ +depth ) { + + $this->args->has_thumbnail = (bool) ( $this->item->thumb ); + + $this->args->has_subtitle = (bool) $this->args->has_subtitle; + + $this->args->has_excerpt = (bool) ( $this->item->excerpt == 'on' ); + + if ( $this->args->has_thumbnail ) { + $this->args->has_badge = false; + } + + if ( $this->args->has_excerpt ) { + + $this->args->has_subtitle = false; + + if ( ! $this->item->description ) { + + $post = get_post( $this->item->object_id ); + + if ( isset( $post->post_excerpt ) ) { + $this->item->description = wp_trim_words( wpautop( $this->clean_item_content( $post->post_excerpt ? $post->post_excerpt : $post->post_content ) ), 10 ); + $this->args->has_description = true; + } else { + $this->args->has_excerpt = false; + } + } + } + } + } + + function get_start_el() { + + $item_output = ''; + + $this->add_item_classes(); + + $this->add_item_classes_prefix(); + + $this->add_item_classes_current(); + + $this->add_item_classes_post_type(); + + $this->add_item_classes_quadmenu(); + + $id = $this->get_item_id(); + + $class = $this->get_item_classes(); + + $item_output .= ''; + + $this->add_link_atts(); + + $this->add_link_atts_toggle(); + + $item_output .= $this->get_link(); + + return $item_output; + } + + function add_item_classes_post_type() { + $this->item_classes[] = 'quadmenu-item-type-post_type'; + } + +} diff --git a/lib/frontend/walker/class-quadmenu-item-search.php b/lib/frontend/walker/class-quadmenu-item-search.php new file mode 100644 index 0000000..cfe9b98 --- /dev/null +++ b/lib/frontend/walker/class-quadmenu-item-search.php @@ -0,0 +1,85 @@ +item->url = ''; + $this->item->title = ''; + $this->has_children = false; + $this->has_placeholder = (bool) $this->item->placeholder; + + $this->item->placeholder = $this->has_placeholder ? $this->item->placeholder : esc_html__( 'Search', 'quadmenu' ); + } + + function get_start_el() { + + $item_output = ''; + + $this->add_item_classes(); + + $this->add_item_classes_prefix(); + + $this->add_item_classes_quadmenu(); + + $id = $this->get_item_id(); + + $class = $this->get_item_classes(); + + $item_output .= ''; + + $this->add_link_atts(); + + $this->add_link_atts_toggle(); + + $item_output .= $this->form(); + + return $item_output; + } + + function get_search_toggle() { + $item_output = $this->get_link(); + $item_output .= $this->get_dropdown_wrap_start(); + $item_output .= $this->get_search_embed(); + $item_output .= $this->get_dropdown_wrap_end(); + return $item_output; + } + + function form() { + + $this->instance = rand(); + + ob_start(); + ?> + +
    + +
    + +
    + +
    +
    +
    +

    %s', __( 'Premium', 'quadmenu' ) ); ?>

    +
    + +
    +
    +
    +
    +

    +

    + +

    +

    + +

    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +

    +

    + create a tab mega menu where you can include widgets or any kind of content available in your menu dashboard.', 'quadmenu' ), 'https://quadmenu.com/documentation/content/tabs/?utm_source=quadmenu_admin' ); ?> +

    +

    + +

    +
    +
    +
    +
    +
    +
    +
    +

    +

    + carousel mega menu where you can include widgets or any kind of content available in your menu dashboard.', 'quadmenu' ), 'https://quadmenu.com/documentation/content/carousel/?utm_source=quadmenu_admin' ); ?> +

    +

    + categories and archives items and lets you create a carousel of the latest\'s post, products, pages and any post type available in your site.', 'quadmenu' ), 'https://quadmenu.com/documentation/content/archives/?utm_source=quadmenu_admin' ); ?> +

    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +

    +

    + login and register form that is displayed in a drop-down. Recently we\'ve improved this feature to include a drop-down menu for logged in users where you can display any link and a quick access to the user account.', 'quadmenu' ), 'https://quadmenu.com/documentation/content/login/?utm_source=quadmenu_admin' ); ?> +

    +
    +
    +
    +
    +
    +
    +
    +

    +

    + +

    +
    +
    +
    + +
    +
    +
    +
    +

    +

    + +

    + +
    +
    +

    +

    + +

    + +
    +
    +

    +

    + +

    + +
    +
    diff --git a/lib/panel/pages/suggestions.php b/lib/panel/pages/suggestions.php new file mode 100644 index 0000000..9ed9232 --- /dev/null +++ b/lib/panel/pages/suggestions.php @@ -0,0 +1,22 @@ + + +
    +
    + display(); ?> +
    +
    diff --git a/lib/panel/pages/system.php b/lib/panel/pages/system.php new file mode 100644 index 0000000..4ad73d2 --- /dev/null +++ b/lib/panel/pages/system.php @@ -0,0 +1,6 @@ +
    + tables(); ?> +
    diff --git a/lib/panel/pages/welcome.php b/lib/panel/pages/welcome.php new file mode 100644 index 0000000..8411d6c --- /dev/null +++ b/lib/panel/pages/welcome.php @@ -0,0 +1,51 @@ + +
    +
    +
    +
    +

    v

    +
    + +
    +
    +
    +
    +

    +

    + +

    +

    + Options panel and activate the plugin in your theme locations.', 'quadmenu' ), Plugin::taburl( 0 ) ); ?> +

    +
    +
    +
    + +
    +
    +
    +
    +

    +

    + +

    + +
    +
    +

    +

    + +

    + +
    +
    +

    +

    + QuadMenu PRO users. To get support first you need to create an account and open a ticket in your account.', 'quadmenu' ), QUADMENU_DEMO ); ?> +

    + + +
    +
    diff --git a/quadmenu.php b/quadmenu.php new file mode 100644 index 0000000..dd8a8e8 --- /dev/null +++ b/quadmenu.php @@ -0,0 +1,76 @@ + * Automatic and manual menu integration +> * Build extending the standard WordPress Menu system +> * Supports multiple menu locations +> * Drag and Drop admin builder +> * Display WordPress Widgets in your menu +> * Support for child themes +> * Unlimited Menu Themes +> * Vertical Mega Menu +> * Horizontal Mega Menu +> * Offcanvas Mega Menu +> * Sticky Menu +> * Click or use the hoverIntent plugin to open links +> * Align links options +> * Float dropdown menus options +> * Customizable breakpoint for menu collapse +> * Show or hide items depending on the screen size +> * Support for Font Awesome icons +> * Google Fonts +> * Dropdown animations +> * Support for Visual Composer +> * Mega Menu +> * Icons Menu +> * Search Menu +> * Cart Menu + +####Pro Features: + +> * Tabs Menu +> * Login Menu +> * Register Menu +> * Social Menu +> * Carousel Menu + +== Frequently Asked Questions == + += Getting Started = +[https://quadmenu.com/documentation/quick-start/](https://quadmenu.com/documentation/quick-start/) + += Menu Integration = +[https://quadmenu.com/documentation/integration/](https://quadmenu.com/documentation/integration/) + += Menu Content = +[https://quadmenu.com/documentation/content/](https://quadmenu.com/documentation/content/) + += Menu Customization = +[https://quadmenu.com/documentation/configuration/](https://quadmenu.com/documentation/configuration/) + +== Installation == + +1. Go to the Plugins Menu in WordPress +1. Search for "QuadMenu" +1. Click "Install" + +[https://quadmenu.com/documentation/installation/](https://quadmenu.com/documentation/installation/) + +== Changelog == + +3.1.5 +* WordPress compatibility + +3.1.3 +* WordPress compatibility + +3.1.2 +* Update packages + +3.1.1 +* Fixed. Translation strings + +3.1.0 +* Fixed. PHP errors + +3.0.9 +* Fixed. PHP errors + +3.0.8 +* Fixed. Redux Framework error + +3.0.7 +* Fixed. Menu item title filter + +3.0.6 +* WordPress compatibility + +3.0.5 +* Fixed. WPML and PLL home_url + +3.0.4 +* Fixed. Beaver builder integration + +3.0.3 +* Fixed. Missing translations strings + +3.0.2 +* Fixed. PHP erros + +3.0.1 +* Fixed. PHP erros + +3.0.0 +* Refactor + +2.3.7 +* Fixed. Security bug in redux library + +2.3.6 +* Fixed. WordPress compatibility + +2.3.5 +* Fixed. developer constant + +2.3.4 +* Fixed. PHP errors + +2.3.3 +* Fixed. WordPress 6.1 compatibility + +2.3.2 +* New. Fontawesome 6 + +2.3.1 +* Fixed. PHP 8 errors + +2.3.0 +* Fixed. Customize save + +2.2.9 +* Fixed. Customize save + +2.2.8 +* Fixed. PHP 8 errors + +2.2.7 +* Fixed. WordPress menu item target save + +2.2.6 +* Fixed. PHP errors + +2.2.5 +* Fixed. WordPress 6.0 compatibility +* New. QuadLayers dashboard widget + +2.2.3 +* Fixed. WordPress 5.9 compatibility + +2.2.2 +* Fixed. WordPress 5.9 compatibility + +2.2.1 +* Fixed. WordPress 5.9 compatibility + +2.2.1 +* Fixed. WordPress 5.8 compatibility + +2.2.0 +* Fixed. WordPress 5.8 compatibility + +2.1.9 +* Fixed. WordPress 5.8 compatibility + +2.1.8 +* Fixed. QuadLayers widget cache + +2.1.7 +* Fixed. WordPress 5.8 compatibility + +2.1.6 +* Fixed. WordPress 5.8 compatibility + +2.1.5 +* New. Telegram add to suggestions tab + +2.1.4 +* New. QuadLayers dashboard widget + +2.1.3 +* Fixed. WordPress 5.8 compatibility + +2.1.2 +* Fixed. small css issues + +2.1.1 +* Fixed. small css issues + +2.1.0 +* Fixed. WordPress 5.7 compatibility + +2.0.9 +* Fixed. WordPress 5.7 compatibility + +2.0.8 +* Fixed. login issues + +2.0.7 +* Fixed. security issues + +2.0.6 +* Fixed. small css issues + +2.0.5 +* Fixed. small css issues + +2.0.4 +* Fixed. WordPress 5.5.0 compatibility + +2.0.3 +* Fixed. redux framework update + +2.0.2 +* Fixed. small css issues + +2.0.1 +* Fixed. URL attribute for tab + +2.0.0 +* Fixed. small css issues + +1.9.9 +* Fixed. dev mode removed + +1.9.8 +* Fixed. url and target removed from columns, tab, social, cart and login items + +1.9.7 +* Fixed. divi module integration + +1.9.6 +* Fixed. active class for buttons +* Fixed. mobile menu off-canvas style glitch on toggle +* Fixed. removed URL field from columns +* Fixed. removed external filters on quadmenu hook + +1.9.5 +* Fixed. woocommerce cart item remove overlay background + +1.9.4 +* Fixed. Call to a member function get_cart_contents_count() on null + +1.9.3 +* Fixed. small css issues + +1.9.2 +* Fixed. small css issues + +1.9.1 +* Fixed. Uncaught Error: Class not found + +[https://quadmenu.com/documentation/changelog/](https://quadmenu.com/documentation/changelog/) + += 1.8.1 = + +* Fixed. dropdown menu max left position +* Fixed. menu login and register + + += 1.8.0 = + +* Fixed. elementor library widget +* Fixed. menu login + += 1.7.9 = + +* Fixed. small css issues +* Fixed. current menu open nested level + += 1.7.8 = + +* Fixed. undefined woocommerce cart item menu +* Fixed. avada fusion builder icon issues + += 1.7.7 = + +* Fixed. small css issues + += 1.7.6 = + +* Fixed. small css issues + += 1.7.5 = + +* Fixed. chrome overflow issue on mobile menu +* Fixed. offcanvas alignment issue in mobile menu +* Fixed. GET to POST in ajax requests to avoid server issues +* Fixed. woocommerce cart issues with wp rocket cache + += 1.7.4 = + +* Fixed. divi quadmenu module +* Fixed. widget save ajax issue +* Fixed. custom dropdown width padding issue +* Fixed. divi mobile menu two columns + += 1.7.3 = + +* Fixed. fixed lazy load height + += 1.7.2 = + +* Fixed. admin columns improved +* Fixed. admin width default +* Fixed. admin width and colums style +* Fixed. hover cart icon color +* Fixed. fixed lazy load images ratio +* Fixed. fixed woocommerce cart menu +* Fixed. media player size issue + += 1.7.1 = + +* Fixed. persistent cache issues +* Fixed. menu class replaced with quadmenu + += 1.7.0 = + +* Fixed. fixed large subtitle +* Fixed. elementor logo remove +* Fixed. beaver logo remove +* Fixed. removed quadmenu widget from metaboxes +* Improvement. admin columns interface +* Improvement. admin preset columns + += 1.6.9 = + +* Fixed. dev alerts + += 1.6.8 = + +* Fixed. login form issues + += 1.6.7 = + +* Fixed. navbar brand width +* Fixed. description in top level items on mobile menu +* Fixed. search custom post types + += 1.6.6 = + +* Fixed. remove unnecessary fields +* New. option username in login item +* New. quadmenu dev location for testing + += 1.6.5 = + +* Fixed. undefined url +* Fixed. icon padding +* Fixed. icon dropdown +* Fixed. logo in elementor module +* Fixed. logo in beaver module +* Fixed. customizer options removed transient time +* New. button element in quadmenu pro + += 1.6.4 = + +* New. font awesome 5 + += 1.6.3 = + +* Fixed. quadmenu pro override + += 1.6.2 = + +* Fixed. offcanvas menu logo url + += 1.6.1 = + +* New. option logo link +* Fixed. Unexpected token u in JSON at position 0 + += 1.6.0 = + +* Fixed. elementor undefined variable in frontend +* Fixed. divi quadmenu module height +* Improvement. translations files updated + += 1.5.9 = + +* New. elementor module +* New. beaver builder module + += 1.5.8 = + +* Fixed. login and cart text margin +* Fixed. load menu height issues +* Fixed. login alerts css +* Fixed. widget loading on ajax changes +* Fixed. slidebar animation issues +* Improvement. rebuild quadmenu on ajax events + += 1.5.7 = + +* Fixed. tabs height +* Fixed. divi mobile padding +* Fixed. widget save off save settings event +* Improvement. New order by featured products in woocommerce archives +* Improvement. New filter for link attributes + += 1.5.6 = + +* Fixed. fixed issue with parents in admin + += 1.5.5 = + +* Beta. lazy load images +* Fixed. normalize owl carousel +* Fixed. quadmenu widget php7 deprecated constructor +* Fixed. quadmenu widget instance defaults +* Fixed. mobile padding dropdown cart and login + += 1.5.4 = + +* Fixed. update license messages + += 1.5.3 = + +* Fixed. login css issues +* Fixed. cart css issues +* Fixed. fixed license validation issues +* New. quadmenu widget + += 1.5.2 = + +* Fixed. Astra google fonts issue +* Fixed. Slidebar current item position +* Fixed. divi fixed menu link colors +* Fixed. logout link when dropdown is empty +* Fixed. login validations for user and password +* Fixed. login mask background + += 1.5.1 = + +* Fixed. customizer page change +* Fixed. sticky menu animation +* Fixed. post type text position +* Fixed. default menu settings +* Fixed. menu item badge position +* Fixed. menu item padding hidden carets +* Improvement. customizer animations +* Improvement. slidebar animation +* Improvement. force customizer selective refreshed + += 1.5.0 = + +* Fixed. search form divider css +* Fixed. logged in hover background css +* Fixed. background hover css without link +* Fixed. slidebar position js +* Fixed. fixed [] short array PHP 5.4 +* New. animation options +* Improvement. offcanvas animation on horizontal menu +* Improvement. cache setup items +* Improvement. cache children nav menu items +* Improvement. speed general admin settings + += 1.4.9 = + +* Fixed. post type menu item class + += 1.4.8 = + +* Fixed. quadmenu divi module menu height +* Fixed. divi fullwidth module quadmenu +* Improvement. CSS field added to customizer +* Improvement. polylang support +* Improvement. responsive template system + += 1.4.7 = + +* Fixed. Undefined quadmenu_template +* New. search placeholder +* New. search post types + += 1.4.6 = + +* New. quadmenu module for divi + += 1.4.5 = + +* New. option for mobile menu links +* Improvement. css improvements +* Improvement. overflow hidden offcanvas layout + += 1.4.4 = + +* Fixed. undefined theme name +* Fixed. Divi menu height in full menu module +* Fixed. Polylang integration + + += 1.4.3 = + +* Fixed. post type hidden badges +* Fixed. post type archives loop +* Fixed. instance missing on license update + += 1.4.2 = + +* Fixed. post type archive and categories in first level menu +* Fixed. compatibility issues with microsoft edge +* Fixed. compatibility issues with total theme +* Fixed. tab menu style issues with extra +* Fixed. license undefined object +* Improvement. license manager system +* Improvement. woocommerce cart improvements + += 1.4.1 = + +* Fixed. display block in dropdown menu link +* Fixed. hide account links from login item when user is logged out + += 1.4.0 = + +* Fixed. menu locations +* Fixed. cart and login menu hoverintent +* Fixed. remove woocommerce from cart event +* Fixed. fixed widgets removed issue +* New. option account menu for logoin item +* New. option cart item bottom text +* New. option mobile layout padding +* Improvement. new sticky navbar +* Improvement. new logoin style +* Improvement. new cart style + += 1.3.9 = + +* Fixed. issue with hoverintent + += 1.3.8 = + +* Improvement. PHP 7.2.x compatibility +* Improvement. new archive types metabox + += 1.3.7 = + +* Fixed. pot files for languages +* Fixed. depth level on some themes +* New. new option align center menu items + += 1.3.6 = + +* Fixed. windows update long folders +* Fixed. widgets in sidebar on first load + += 1.3.5 = + +* Fixed. menu post type icons badge not showing +* Fixed. menu dashicons alignment +* Improvement. redux framework updated to 3.6.9 + += 1.3.4 = + +* Fixed. Porto compatibility issues +* Improvement. css menu icons +* Improvement. css to IE 11 compatibility +* Improvement. owl carousel updated + += 1.3.3 = + +* New. embed layout to fit everywhere +* Fixed. divi menu search width in center header +* Fixed. ajax 400 bad request +* Fixed. widget checkbox unchecked not saving +* Fixed. removed save action on widgets +* Improvement. normalize display block + += 1.3.2 = + +* Fixed. removed title menu column when language is Spanish +* Fixed. removed off classes from admin and frontend +* Fixed. removed menu title attr slashes +* Fixed. menu title not saving when description is not defined +* Fixed. admin CSS large screen columns added +* Fixed. admin columns add and remove + += 1.3.1 = + +* Improvement. menu items badge removed on sticky menu + += 1.3.0 = + +* New. woocommerce mega menu products in pro version +* New. woocommerce mega menu categories in pro version + += 1.2.6 = + +* Fixed. added to cart bubble trigger event +* Fixed. false and empty default attributes + += 1.2.5 = + +* Fixed. undefined parent obj type +* Fixed. change menu item title removes entire item +* Improvement. missing target option in menu items +* Improvement. clean item content tags + += 1.2.4 = + +* Fixed. default attributes in top level menu items +* Fixed. exception for JavaScript non human events +* Fixed. removed unused dropdown menu and float inside columns +* Fixed. save checkbox unchecked in admin panel +* Fixed. removed quadmenu sections in customize after refresh + += 1.2.3 = + +* Fixed. removed customize sections when is not url param +* Fixed. perfectscrollbar in carousel items +* Improvement. deprecated functions +* Improvement. javascript load +* Improvement. custom menuitems function moved to object + += 1.2.2 = + +* Fixed. undefined @themes in less files + += 1.2.1 = + +* Improvement. filter for remove children nav menu items in admin + += 1.2.0 = + +* New. customizer integration in pro +* Improvement. option and customizer icons + += 1.1.9 = + +* New. wordpress mobile menu shadow option +* Fixed. featured image option hidden in post inside menu columns +* Fixed. stylesheets not loading on https +* Fixed. tab menu not close on first click +* Fixed. menu caret background on second level items +* Fixed. wordpress tabs menu title change on admin +* Fixed. default menu items values in frontend +* Fixed. woocommerce cart menu button background +* Fixed. navbar caret icon line height +* Fixed. hidden badges on post type items +* Improvement. added login form pscrollbar and dropdown max height events + += 1.1.8 = + +* New. custom password and register account links in login menu +* Fixed. undefined variable _wp_registered_nav_menus in system +* Fixed. stretch dropdown menu background +* Fixed. wordpress mobile menu height +* Fixed. admin widget text not open +* Fixed. admin widget off saving event on settings change +* Fixed. force menu width +* Improvement. manual integration new option to activate menu editor +* Improvement. manual integration menu location & theme update on php code +* Improvement. check system less files download + += 1.1.7 = + +* New. option dropdown menu background opacity +* Fixed. placeholder colors in responsive menu +* Fixed. placeholder colors in dropdown menu +* Fixed. duplicated events in admin menu ajax +* Improvement. change title on wordpress mega menu admin + += 1.1.6 = + +* Fixed. undefined QuadMenu_Customizer in divi customizer +* Fixed. divi & quadmenu customizer switch +* Fixed. hidden width settings on menu columns + += 1.1.5 = + +* Fixed. scape attr in link +* Fixed. mega menu locations created by polylang +* Fixed. invalid argument supplied for foreach() class.redux_helpers.php +* Fixed. removed tooltips when title attr is empty +* Improvement. wordpress mega menu plugin action link for settings + += 1.1.4 = + +* Fixed. megamenu columns disappear + += 1.1.3 = + +* Fixed. allowed memory size theme locations +* Fixed. empty sections in admin panel +* Fixed. file not found filetime locations & widget +* Fixed. missing styles on theme change and network new site +* Fixed. missing registered nav menus on init +* Fixed. customizer removed columns widgets and child items +* Fixed. customizer add item in preview +* Removed. quadmenu-admin-core.js +* Improvement. customizer stuff for divi mega menu +* Improvement. customizer native support for divi mega menu + += 1.1.2 = + +* New. option for dropdown menu tabs background +* Fixed. force menu width to screen size +* Fixed. dropdown background missing on dropdown menu max height +* Improvement. new rgba color picker +* Improvement. new offcanvas menu and vertical menu + += 1.1.1 = + +* Fixed. undefined $_wp_registered_nav_menus +* Fixed. closed menu items on mobile menu +* Fixed. offcanvas not open +* Improvement. clean shortcodes from content in post types +* Improvement. alert for themes that doesn't natively support menus + += 1.1.0 = + +* Fixed. undefined required field +* Fixed. click on social menu icons hoverintent +* Fixed. menu font validation +* Fixed. normalize transform and opacity unset +* Fixed. undefined index in required fields on developer options +* Fixed. expired nonce alert +* Fixed. hardcoded cart title +* Fixed. hide unnecessary fields in admin according to item depth +* Fixed. badges background in dropdown menus +* New. option letter spacing +* New. option dropdown menu stretch (custom,boxed,stretch dropdown menu and stretch content) +* New. option background origin to fit strech dropdown menu +* New. option border top left right bottom for dropdown menu +* New. option border radius top left right bottom for dropdown menu +* New. option max height on dropdown menu +* Improvement. drop areas in admin panel highlighted +* Improvement. number in new tabs and panels menu in backend +* Improvement. version and timestamp to prevent css cache on change settings +* Improvement. included error report on development mode + += 1.0.9 = + +* Fix unsaved content in columns + += 1.0.8 = + +* Fixed. name of options in adminbar menu +* Fixed. login form dropdown menu empty on logged in +* Fixed. removed scrollbar on offcanvas horizontal menu +* Fixed. menu social icons open / close +* Fixed. fatal error on edit_nav_menu_walker +* Removed. quadmenu-core.js file +* Improvement. Fallback function included + + += 1.0.7 = + +* Fixed. hooks order on init +* Fixed. margin on dropdown submenus +* Fixed. menu icons width +* Fixed. defaults on first load + += 1.0.6 = + +* Fixed admin menu position +* Fixed admin menu social icons +* Fixed admin default filter for specific menu location and theme +* New. option to show/hide dropdown menu shadow + += 1.0.5 = + +* Fixed. add to menu column button +* Fixed. unchecked menu items in navmenu metaboxes +* Fixed. sticky menu for more than one instance +* Fixed. layout behaviour: menu sticky disabled on scroll top +* Fixed. mobile mega menu behaviour: closedropdownall disabled +* Fixed. mobile mega menu behaviour: disable close sliblings on open dropdown +* Fixed. visual composer shortcode +* Fixed. invalid menu items posttype + += 1.0.4 = + +* Fixed. cache wp rocket +* Fixed. add to menu column button +* Fixed. system report cache plugnis + += 1.0.3 = + +* New. option force full menu width +* New. carousel megamenu in premium version +* Fixed. issues with php7 +* Fixed. issues in xs menu columns +* Fixed. save menu widget issues +* Fixed. undeleted menu items + += 1.0.2 = + +* New. added backward compatibility with lmm mega menu columns +* New. menu theme location option to remove conflicts +* Fixed. sharp menu item default option +* Fixed. Undefined url + += 1.0.1 = + +* Fixed. Removed menu caret from item icon +* Fixed. dropdown mega menu max height + += 1.0 = + +* Wordpress Mega Menu initial menu version + +== Upgrade Notice == diff --git a/redux/.DS_Store b/redux/.DS_Store new file mode 100644 index 0000000..3d3b82f Binary files /dev/null and b/redux/.DS_Store differ diff --git a/redux/ReduxCore/assets/css/color-picker/color-picker.css b/redux/ReduxCore/assets/css/color-picker/color-picker.css new file mode 100644 index 0000000..849b278 --- /dev/null +++ b/redux/ReduxCore/assets/css/color-picker/color-picker.css @@ -0,0 +1 @@ +.redux-main input.redux-color{float:left;width:70px;margin-left:5px}.redux-main input.color-transparency{margin-left:10px;margin-right:3px}.redux-main input.wp-color-picker{width:80px !important}.redux-main .section-color .controls{width:345px}.redux-main .section-color .explain{width:225px}.redux-main .iris-picker .iris-strip .ui-slider-handle{position:absolute;background:none !important;right:-3px;left:-3px;border:4px solid #aaa !important;border-width:4px 3px;width:auto;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,0.2);opacity:.9;z-index:5;cursor:ns-resize}.redux-main .iris-picker .iris-slider-offset{position:absolute;top:2px;left:0px;right:0;bottom:4px;width:28px;background:none !important;border:0 !important;height:auto}.redux-main .wp-picker-container{display:inline-block;outline:0}.redux-main .wp-picker-container input{margin-bottom:inherit;margin-top:inherit;padding:3px 5px}.redux-main .wp-picker-container .wp-color-result{outline:0;margin:0;height:24px !important;margin:0 6px 6px 0 !important}.redux-main .wp-picker-container .wp-picker-default{padding:0 10px 1px}.redux-main .wp-picker-container .wp-color-result-text{line-height:22px}.redux-main .redux-color-gradient{line-height:24px}.redux-main .color-transparency-check{line-height:1;margin:0 !important;padding-top:10px}.redux-main .wp-picker-clear{margin-top:0 !important}.wp-customizer .redux-main input.wp-picker-default,.wp-customizer .redux-main .redux-typography-container input.wp-picker-default,.wp-customizer .redux-main .redux-typography-container .redux-typography-color{padding:0px 4px !important}.wp-customizer .redux-main input.wp-color-picker{width:65px !important;margin-left:5px !important} diff --git a/redux/ReduxCore/assets/css/color-picker/color-picker.css.map b/redux/ReduxCore/assets/css/color-picker/color-picker.css.map new file mode 100644 index 0000000..8350f33 --- /dev/null +++ b/redux/ReduxCore/assets/css/color-picker/color-picker.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AAEQ,6BAAc;EACV,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,GAAG;AAGpB,oCAAqB;EACjB,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,GAAG;AAGrB,iCAAkB;EACd,KAAK,EAAE,eAAe;AAK1B,oCAAU;EACN,KAAK,EAAE,KAAK;AAGhB,mCAAS;EACL,KAAK,EAAE,KAAK;AAKhB,sDAA8B;EAC1B,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,eAAe;EAC3B,KAAK,EAAE,IAAI;EACX,IAAI,EAAE,IAAI;EACV,MAAM,EAAE,yBAAyB;EACjC,YAAY,EAAE,OAAO;EACrB,KAAK,EAAE,IAAI;EACX,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,4BAA2B;EACvC,OAAO,EAAE,EAAE;EACX,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,SAAS;AAGrB,4CAAoB;EAChB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;EACR,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,CAAC;EACR,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,eAAe;EAC3B,MAAM,EAAE,YAAY;EACpB,MAAM,EAAE,IAAI;AAKhB,sCAAM;EACF,aAAa,EAAE,OAAO;EACtB,UAAU,EAAE,OAAO;EACnB,OAAO,EAAE,OAAO;AAGpB,iDAAiB;EACb,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,CAAC;AAGb,mDAAmB;EACf,OAAO,EAAE,UAAU;AAI3B,iCAAsB;EAClB,WAAW,EAAE,IAAI;AAGrB,qCAA0B;EACtB,WAAW,EAAE,CAAC;EACd,UAAU,EAAE,cAAc;AAG9B,4BAAiB;EACb,UAAU,EAAE,YAAY;;AAK5B,kNAAsK;EAClK,OAAO,EAAE,kBAAkB;AAE/B,gDAAkC;EAC9B,KAAK,EAAE,eAAe;EACtB,WAAW,EAAE,cAAc", +"sources": ["color-picker.scss"], +"names": [], +"file": "color-picker.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/color-picker/color-picker.scss b/redux/ReduxCore/assets/css/color-picker/color-picker.scss new file mode 100644 index 0000000..3b4d7d5 --- /dev/null +++ b/redux/ReduxCore/assets/css/color-picker/color-picker.scss @@ -0,0 +1,107 @@ +.redux-main { + input{ + &.redux-color { + float: left; + width: 70px; + margin-left: 5px; + } + + &.color-transparency { + margin-left: 10px; + margin-right: 3px; + } + + &.wp-color-picker { + width: 80px !important; + } + } + + .section-color { + .controls { + width: 345px; + } + + .explain { + width: 225px; + } + } + + .iris-picker { + .iris-strip .ui-slider-handle { + position: absolute; + background: none !important; + right: -3px; + left: -3px; + border: 4px solid #aaa !important; + border-width: 4px 3px; + width: auto; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, .2); + opacity: .9; + z-index: 5; + cursor: ns-resize; + } + + .iris-slider-offset { + position: absolute; + top: 2px; + left: 0px; + right: 0; + bottom: 4px; + width: 28px; //17 + background: none !important; + border: 0 !important; + height: auto; + } + } + + .wp-picker-container { + display: inline-block; + outline: 0; + + input { + margin-bottom: inherit; + margin-top: inherit; + padding: 3px 5px; + } + + .wp-color-result { + outline: 0; + margin: 0; + height: 24px!important; + margin: 0 6px 6px 0!important; + } + + .wp-picker-default { + padding: 0 10px 1px; + } + + .wp-color-result-text { + line-height: 22px; + } + } + + .redux-color-gradient { + line-height: 24px; + } + + .color-transparency-check { + line-height: 1; + margin: 0!important; + padding-top: 10px; + } + + .wp-picker-clear { + margin-top: 0 !important; + } +} + +.wp-customizer { + .redux-main input.wp-picker-default, .redux-main .redux-typography-container input.wp-picker-default, .redux-main .redux-typography-container .redux-typography-color { + padding: 0px 4px !important; + } + .redux-main input.wp-color-picker { + width: 65px !important; + margin-left: 5px !important; + } +} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/import_export/import_export.css b/redux/ReduxCore/assets/css/import_export/import_export.css new file mode 100644 index 0000000..1c6a5a1 --- /dev/null +++ b/redux/ReduxCore/assets/css/import_export/import_export.css @@ -0,0 +1 @@ +#redux-import-link-wrapper,#redux-import-code-wrapper{display:none}#redux-export-code,#redux-export-link-value{display:none}#redux-import-action span{color:#b94a48} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/import_export/import_export.css.map b/redux/ReduxCore/assets/css/import_export/import_export.css.map new file mode 100644 index 0000000..2f73f23 --- /dev/null +++ b/redux/ReduxCore/assets/css/import_export/import_export.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AAAA,sDAAuD;EACnD,OAAO,EAAE,IAAI;;AAGjB,4CAA6C;EACzC,OAAO,EAAE,IAAI;;AAGjB,yBAA0B;EACtB,KAAK,EAAE,OAAO", +"sources": ["import_export.scss"], +"names": [], +"file": "import_export.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/import_export/import_export.scss b/redux/ReduxCore/assets/css/import_export/import_export.scss new file mode 100644 index 0000000..f5e563d --- /dev/null +++ b/redux/ReduxCore/assets/css/import_export/import_export.scss @@ -0,0 +1,11 @@ +#redux-import-link-wrapper, #redux-import-code-wrapper { + display: none +} + +#redux-export-code, #redux-export-link-value { + display: none +} + +#redux-import-action span { + color: #B94A48 +} diff --git a/redux/ReduxCore/assets/css/media/media.css b/redux/ReduxCore/assets/css/media/media.css new file mode 100644 index 0000000..737309c --- /dev/null +++ b/redux/ReduxCore/assets/css/media/media.css @@ -0,0 +1 @@ +.redux-main .button.remove-image,.redux-main .removeCSS{margin-left:10px;color:#ef521d}.redux-main .button.remove-image:hover,.redux-main .removeCSS:hover{color:red}.redux-main .upload_button_div{margin-bottom:5px}.redux-main .upload-error{float:left;color:#666;font-size:10px;font-weight:bold;text-decoration:none;text-shadow:1px 1px 0 #FFFFFF;margin:0 10px 0 0;padding:3px 10px;background:#FFDFEC;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .reset-button{font-family:Arial, Verdana, sans-serif;float:left;margin:0;color:#ef521d;border-color:#bbb}.redux-main .redux-option-image{max-height:340px;max-width:340px;padding:5px;margin-bottom:0;margin-top:10px;margin-right:15px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-main .redux-main .upload{width:80% !important}.redux-main .button{margin-top:2px} diff --git a/redux/ReduxCore/assets/css/media/media.css.map b/redux/ReduxCore/assets/css/media/media.css.map new file mode 100644 index 0000000..9b560bb --- /dev/null +++ b/redux/ReduxCore/assets/css/media/media.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AACI;sBACW;EACP,WAAW,EAAE,IAAI;EACjB,KAAK,EAAE,OAAO;EAEd;8BAAQ;IACJ,KAAK,EAAE,GAAG;AAIlB,8BAAmB;EACf,aAAa,EAAE,GAAG;AAGtB,yBAAc;EACV,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,eAAe,EAAE,IAAI;EACrB,WAAW,EAAE,iBAAiB;EAC9B,MAAM,EAAE,UAAU;EAClB,OAAO,EAAE,QAAQ;EACjB,UAAU,EAAE,OAAO;EACnB,qBAAqB,EAAE,GAAG;EAC1B,kBAAkB,EAAE,GAAG;EACvB,aAAa,EAAE,GAAG;AAGtB,yBAAc;EACV,WAAW,EAAE,0BAA0B;EACvC,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,OAAO;EACd,YAAY,EAAE,IAAI;AAGtB,+BAAoB;EAChB,UAAU,EAAE,KAAK;EACjB,SAAS,EAAE,KAAK;EAChB,OAAO,EAAE,GAAG;EACZ,aAAa,EAAE,CAAC;EAChB,UAAU,EAAE,IAAI;EAChB,YAAY,EAAE,IAAI;EAClB,MAAM,EAAE,iBAAiB;EACzB,UAAU,EAAE,OAAO;EACnB,kBAAkB,EAAE,GAAG;EACvB,oBAAoB,EAAE,GAAG;EACzB,qBAAqB,EAAE,GAAG;EAC1B,aAAa,EAAE,GAAG;AAGtB,+BAAoB;EAChB,KAAK,EAAE,cAAc;AAGzB,mBAAQ;EACJ,UAAU,EAAE,GAAG", +"sources": ["media.scss"], +"names": [], +"file": "media.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/media/media.scss b/redux/ReduxCore/assets/css/media/media.scss new file mode 100644 index 0000000..86086ae --- /dev/null +++ b/redux/ReduxCore/assets/css/media/media.scss @@ -0,0 +1,61 @@ +.redux-main { + .button.remove-image, + .removeCSS { + margin-left: 10px; + color: #ef521d; + + &:hover { + color: red; + } + } + + .upload_button_div { + margin-bottom: 5px; + } + + .upload-error { + float: left; + color: #666; + font-size: 10px; + font-weight: bold; + text-decoration: none; + text-shadow: 1px 1px 0 #FFFFFF; + margin: 0 10px 0 0; + padding: 3px 10px; + background: #FFDFEC; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + + .reset-button { + font-family: Arial, Verdana, sans-serif; + float: left; + margin: 0; + color: #ef521d; + border-color: #bbb; + } + + .redux-option-image { + max-height: 340px; + max-width: 340px; + padding: 5px; + margin-bottom: 0; + margin-top: 10px; + margin-right: 15px; + border: 1px solid #e3e3e3; + background: #f7f7f7; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + } + + .redux-main .upload { + width: 80% !important; + } + + .button { + margin-top: 2px; + } +} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/redux-admin.css b/redux/ReduxCore/assets/css/redux-admin.css new file mode 100644 index 0000000..08fc194 --- /dev/null +++ b/redux/ReduxCore/assets/css/redux-admin.css @@ -0,0 +1 @@ +.spinner{visibility:hidden;display:block}.spinner.is-active{visibility:visible}.redux-main .description{margin-top:7px}.redux-container{background-color:#f5f5f5;background-repeat:repeat-x;background-image:-moz-linear-gradient(top, #f2f2f2 0%, #f5f5f5 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f2f2f2), color-stop(100%, #f5f5f5));background-image:-webkit-linear-gradient(top, #f2f2f2 0%, #f5f5f5 100%);background-image:-ms-linear-gradient(top, #f2f2f2 0%, #f5f5f5 100%);background-image:-o-linear-gradient(top, #f2f2f2 0%, #f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#eeeeee', GradientType=0);background-image:-linear-gradient(top, #f2f2f2 0%, #f5f5f5 100%);border:1px solid #dedede;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.04);box-shadow:0 1px 1px rgba(0,0,0,0.04);-moz-box-shadow:0 1px 5px rgba(0,0,0,0.4);margin-top:5px;overflow:hidden}.redux-container .form-table>tbody>tr>th{width:30%}.redux-container .form-table th,.redux-container .form-table td{margin:0;padding:0;width:auto}.redux-container .redux_field_th{font-weight:600;padding:20px 10px 20px 0px;display:block}.redux-container .redux_field_th span:first-child{font-weight:normal;display:block;color:#666}.redux-container #ui-datepicker-div{display:none}.redux-container a:focus{box-shadow:none}.redux-container #redux-header,.redux-container #redux-footer{text-align:right;padding:6px 10px}.redux-container #redux-header{background:#f1f1f1;border-bottom:3px solid blue}.redux-container #redux-header .display_header{float:left;margin:20px 10px}.redux-container #redux-header .display_header h2{display:inline-block;font-style:normal;padding-right:5px}.redux-container #redux-header .display_header .redux-dev-mode-notice-container{position:absolute;top:67px;left:20px;bottom:auto;width:auto}.redux-container #redux-header .display_header span{color:#888}.redux-container #redux-header .display_header span.redux-dev-mode-notice{background-color:#f0ad4e;display:inline;padding:.2em .5em .2em;font-weight:700;line-height:1;color:#fff !important;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.redux-container #redux-header .icon32{float:right;margin:16px 16px 0}.redux-container #redux-footer{border-top:1px solid #E7E7E7;z-index:999}.redux-container #redux-footer #redux-share{float:left;line-height:28px;font-size:15px}.redux-container #redux-footer #redux-share a{text-decoration:none;margin-right:10px}.redux-container #redux-footer #redux-share a img{margin-bottom:-3px}.redux-container .notice-green{margin:0;border-bottom:1px solid #E7E7E7;background-color:#DFF0D8;color:#468847;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.redux-container .notice-blue{margin:0;border-bottom:1px solid #BCE8F1;background-color:#D9EDF7;color:#3A87AD;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.redux-container .notice-yellow{margin:0;border-bottom:1px solid #E7E7E7;background-color:#FCF8E3;color:#C09853;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.redux-container .notice-red,.redux-container .redux-field-errors{margin:0;border-bottom:1px solid #E7E7E7;background-color:#F2DEDE;color:#B94A48;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.redux-container .redux-field-error input,.redux-container .redux-field-error textarea,.redux-container .redux-field-error checkbox{background-color:#FFF6F6;color:#A00}.redux-container .redux-field-warning input,.redux-container .redux-field-warning textarea,.redux-container .redux-field-warning checkbox{background-color:#fcf8e3;color:#444}.redux-container .redux-field-errors,.redux-container .redux-field-warnings,.redux-container .redux-save-warn{display:none}.redux-container .sticky-save-warn{min-height:76px}.redux-container .sticky-save-warn .redux-save-warn{position:fixed;top:32px;right:21px;left:183px;opacity:1;z-index:9999}.redux-container #info_bar{background:#f3f3f3;border-bottom:1px solid #dedede;padding:6px 10px 6px 6px;text-align:right;-moz-box-shadow:inset 0 1px 0 #fcfcfc;-webkit-box-shadow:inset 0 1px 0 #fcfcfc;box-shadow:inset 0 1px 0 #fcfcfc}.redux-container .redux-group-tab{display:none;margin-bottom:15px}.redux-container .redux-group-tab .redux-theme-data{padding:20px 0;border-top:1px solid #E7E7E7}.redux-container .redux-group-tab .redux-theme-data.theme-description{padding:10px 0;border-width:0}.redux-container .redux-group-tab .redux-theme-data.theme-uri,.redux-container .redux-group-tab .redux-theme-data.theme-author,.redux-container .redux-group-tab .redux-theme-data.theme-version{padding:0;border-width:0}.redux-container .redux-group-tab h3{margin-top:0;line-height:2em;border-bottom:1px solid #E7E7E7}.redux-container .redux-group-tab .redux-section-desc{margin-bottom:15px;color:#666}.redux-container .redux-action_bar{float:right}.redux-container .redux-action_bar .spinner{float:left;margin-top:4px}.redux-container .redux-ajax-loading{display:none;background:red url(data:image/gif;base64,R0lGODlhEAAQAPUAAIiIiIqKio2NjZSUlJqamp6enqKioqSkpK+vr7i4uL+/v8PDw8XFxcnJyc/Pz9HR0dTU1NjY2Nzc3OLi4ubm5unp6ezs7PPz88vLy83NzdDQ0NXV1d3d3eHh4bu7u8zMzOvr6+3t7ZiYmNbW1sDAwMTExNra2s7OztPT09vb2+Xl5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/i1NYWRlIGJ5IEtyYXNpbWlyYSBOZWpjaGV2YSAod3d3LmxvYWRpbmZvLm5ldCkAIfkEAAoA/wAsAAAAABAAEAAABXDgJY6XZZEoOTnOlI5WdUFNA5UnSR3FJNUSieFAIUUEgcdl4noEBBGSZaHIiSqKhTX2GhVFiQGjuxgkSoYAoosAGE6RhKQrUURHlS+pItMVCHMjEgQ9JBJISg+JT3ciFg4NFkcCNw0OViiDgF0oTC8hACH5BAAKAP8ALAAAAAAQABAAAAVx4CWOZGle1qJYp2hV1xYE29V1JXUYHWUcnQgGwyFFBAENiqUZ1kapFamTyeBcsNOLMkoMGC3GIIEyBBAtRMDAiiSKp04iQqpwc9kRpUCAizgEBVciEQNJFxpKGgECdFAYYBsCAjUMGS0XgAODmDacIyEAIfkEAAoA/wAsAAAAABAAEAAABnbAi3BILBovIMUidBSGQJdNIKBBMomUg6FDMRgoHcOBQowIqNaLJiCIEEMLxdWpnIfITRAHnxgwjiEfDR8UIQYBCEcgDYwdUR6ORxEfG3MgeFiFRB0FBBxEHAQFkUJmaBofamxuRB9/GwICGxeMTRehnrabpERBACH5BAAKAP8ALAAAAAAQABAAAAZ9wItwSCwaL5aFwnIUWiqXUSAwulSYRMrB0KEYDJSO4UAhRgQBDZLpCAgixOSSWFEssEho81IWJgYMTQwDCUgGAQhNCAEGTCMJHU0dCXBDFX1DFhwdeHwFIhxmGBihQxEDaRcOGhYao1WZGIFnAiMUDg6YRR0ioE57Fx2RRkEAIfkEAAoA/wAsAAAAABAAEAAABXLgJY5kaV7WolinaLGQEEBXxZLUUUyUYVATw4FCisg0NZYmIIiQUosKqaJY3FDS1oUoSgwYrcUggTIAEC1EwMCKJCatSYI2qnBx2dGkQOCQOAQFdxdGARoVGhCITE4kGBgWEI8QFgwYWhGTWiMWERFXIyEAIfkEAAoA/wAsAAAAABAAEAAABn/Ai3BILBovloXCchRaKpdRIDC6VJhEysHQoRgMlI7hQCFGBAENkukICCLE5JJYUSywSGjzUhYmBgxNDAMJSAYBCE0IAAZMEQkdTRwKVUMcHHhCFXpDERgYcJYEBZFDI58aFhoOFxpuoUIUGhoUZwJVGA6ZaxccBAQce0QdpUVBACH5BAAKAP8ALAAAAAAQABAAAAZ8wItwSCwaLyEFKXQUhioXSCAAuVSYRMrB0KEYDJSO4UAhmgQBDZKpCQhMxFBJgRVWlFkOtElhUj4NH3VEJQMJFx0NintFCAEGISEQH3BHHR5VThVlRRSMQh0FBBxEHAQFnEJnaRcfHxdtb0WKIWcCVSUNTYgEo7tEHR1HQQAh+QQACgD/ACwAAAAAEAAQAAAGdcCLcEgsGi8hhSJ0FHY6l1EgMLqAmEROo5HqGAwqL5g42qKsoAsqIEgRVacTdAhSLLBI1bWpwiYGDE0MAwlIBgEITQgBBkwjCRxNHQlVdCpGekUqBQSRQxwEBZdDKQIBZ3FqbG5EDYEjpikhW3hFoJ1NRU9HQQA7) no-repeat;width:16px;height:16px;margin:3px 4px 0;float:right}.redux-container #redux-intro-text{background:#f3f3f3;border-bottom:1px solid #dedede;-moz-box-shadow:inset 0 1px 0 #fcfcfc;-webkit-box-shadow:inset 0 1px 0 #fcfcfc;box-shadow:inset 0 1px 0 #fcfcfc;padding:3px;padding:10px 10px}.redux-container #redux-intro-text p{margin:0;font-family:"Lucida Grande", Sans-serif;color:#888}.redux-container .expand_options{cursor:pointer;display:block;height:22px;width:21px;float:left;font-size:0;text-indent:-9999px;margin:1px 0 0 5px;border:1px solid #bbb;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAyCAIAAAAm4OfBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQhJREFUeNrslT0KhDAQhTeLR7ATT6IXSKGFYO0lciFrO1N4AU8TLNXKv0CaJbLJRAZxl1hYyJuXN+PoR/Z9fyFdBNNr27Zf8Oq6bhgGSGUYhpTSzyeBNi8hRFVVEK+6rrXaQFOs6yrvTdOYjcqyVEpTLqXI89yaSypBudq2xckF2TipOSvfmmhZFuAGnJV6Licvey5gj7fnwpwXvEfLfqnT0jQ1OBJCQLnUBvZ9b85VFAV076UU8g1ZckVRxBiDzD6OY62WzPOM9i+cpunvvcZxfCQfPWs9a91Ym2UZ5xyHtd/e8hXWng+/zlrD9jmz1tDj7bkw5wXv0Y210itJEs9az9oHsPYQYACveK0/IuB51AAAAABJRU5ErkJggg==) no-repeat -2px -26px}.redux-container .expand_options.expanded{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAyCAIAAAAm4OfBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQhJREFUeNrslT0KhDAQhTeLR7ATT6IXSKGFYO0lciFrO1N4AU8TLNXKv0CaJbLJRAZxl1hYyJuXN+PoR/Z9fyFdBNNr27Zf8Oq6bhgGSGUYhpTSzyeBNi8hRFVVEK+6rrXaQFOs6yrvTdOYjcqyVEpTLqXI89yaSypBudq2xckF2TipOSvfmmhZFuAGnJV6Licvey5gj7fnwpwXvEfLfqnT0jQ1OBJCQLnUBvZ9b85VFAV076UU8g1ZckVRxBiDzD6OY62WzPOM9i+cpunvvcZxfCQfPWs9a91Ym2UZ5xyHtd/e8hXWng+/zlrD9jmz1tDj7bkw5wXv0Y210itJEs9az9oHsPYQYACveK0/IuB51AAAAABJRU5ErkJggg==) no-repeat -2px -1px}.redux-container .expand_options:hover{border-color:#888}.redux-container .sticky-footer-fixed{background:#f3f3f3;border-top:1px solid #dedede !important;-moz-box-shadow:inset 0 1px 0 #fcfcfc;-webkit-box-shadow:inset 0 1px 0 #fcfcfc;box-shadow:inset 0 1px 0 #fcfcfc}.redux-container .redux-sidebar,.redux-container .redux-main{min-height:300px}.redux-container .redux-main{background:#FCFCFC;margin-left:201px;border-left:1px solid #D8D8D8;padding:10px 20px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #FFF;box-shadow:inset 0 1px 0 #FFF;position:relative}.redux-container .redux-main #redux_ajax_overlay{position:absolute;top:0;left:0;right:0;bottom:0;-moz-opacity:0.10;-khtml-opacity:0.10;opacity:0.10;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=10);filter:alpha(opacity=10);background:#000;z-index:200;display:none}.redux-container .redux-main .form-table.no-border{border-top:none}.redux-container .redux-main .form-table tr{border-bottom:1px solid #E7E7E7}.redux-container .redux-main .form-table tr:last-child{border-bottom:none !important}.redux-container .redux-main .form-table tr th,.redux-container .redux-main .form-table tr td{color:#333}.redux-container .redux-main .form-table tr td table.mceLayout,.redux-container .redux-main .form-table tr td table.mceLayout tr,.redux-container .redux-main .form-table tr td table.mceLayout tr td{padding:0;border-width:0}.redux-container .redux-main .form-table tr td .redux-th-warning{font-size:1em;color:#C09853;font-weight:normal;display:block;margin-top:10px}.redux-container .redux-main .form-table tr td .redux-field-warning{border-color:#C09853;margin-top:10px}.redux-container .redux-main .form-table tr td .redux-th-error{font-size:1em;color:#B94A48;font-weight:normal;display:block;margin-top:10px}.redux-container .redux-main input.large-text{width:100%}.redux-container .redux-main .hide{display:none}.redux-container .redux-main .redux-field-container{padding:20px 0}.redux-container .redux-main .mini,.redux-container .redux-main input[type=text].mini{width:60px;text-align:center}.redux-container .redux-main input{line-height:19px}.redux-container .redux-main img{max-width:100%;height:auto;width:auto !important}.redux-container .redux-main .select2-default{width:auto !important}.redux-container .redux-main .showDefaults{display:block;font-weight:normal;font-size:.8em;color:#888}.redux-container .redux-main span.description{display:block;font-style:normal;font-weight:400}.redux-container .redux-main #redux-system-info textarea{min-height:730px;width:100%}.redux-container .redux-main .field-desc{clear:both;font-size:13px}.redux-container .redux-main .data-full li{width:100%}.redux-container .redux-main .data-half li{width:50%;float:left}.redux-container .redux-main .data-third li{width:33.3%;float:left}.redux-container .redux-main .data-quarter li{width:25%;float:left}.redux-container .redux-main .ui-helper-hidden-accessible{top:inherit}.redux-container .redux-main .form-table{clear:none;margin-top:0px !important}.redux-container .redux-main .form-table tr:first-child th,.redux-container .redux-main .form-table tr:first-child td{padding-top:0}.redux-container .redux-main .input-append input{border-right:0;margin-bottom:0;border-top-right-radius:0;border-bottom-right-radius:0;margin-right:0;float:left;margin-top:0;display:block}.redux-container .redux-main .input-append .add-on{border-top-right-radius:3px;border-bottom-right-radius:3px;margin-left:-2px;padding-top:4px !important;padding-bottom:2px !important}.redux-container .redux-main .input-prepend input{border-left:0;margin-bottom:0;border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0;padding-top:2px;padding-bottom:5px;float:left;margin-top:0;display:block}.redux-container .redux-main .input-prepend .add-on{border-top-left-radius:3px;border-bottom-left-radius:3px;float:left}.redux-container .redux-main .input-append{margin-right:10px;font-size:0;white-space:nowrap;float:left;display:inline-block;margin-bottom:6px}.redux-container .redux-main .input-append .add-on,.redux-container .redux-main .input-prepend .add-on{width:auto;display:inline-block;min-width:16px;padding:3px 4px;font-size:12px;font-weight:400;line-height:20px;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#eeeeee;border:1px solid #cccccc}.redux-container .redux-main .input-prepend{font-size:0;white-space:nowrap;float:left;display:inline-block;margin-bottom:6px}.redux-container .redux-main pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}.no-js{border:1px solid #ffbaba;margin:0;border-bottom:1px solid #E7E7E7;background-color:#F2DEDE;color:#B94A48;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.redux-sidebar{width:202px;float:left}.redux-sidebar .redux-group-menu{margin-top:0 !important}.redux-sidebar .redux-group-menu li{margin-top:0}.redux-sidebar .redux-group-menu li.active a,.redux-sidebar .redux-group-menu li.active a:hover,.redux-sidebar .redux-group-menu li.activeChild a,.redux-sidebar .redux-group-menu li.activeChild a:hover{background:#FCFCFC;color:#269ad6;width:184px;opacity:1}.redux-sidebar .redux-group-menu li.active a li a{background:#333;padding-left:5px}.redux-sidebar .redux-group-menu li.divide{padding:0;border-width:1px 0;border-style:solid;border-bottom-color:#E7E7E7;border-top-color:#F9F9F9}.redux-sidebar .redux-group-menu li a:first-child{border-top:none}.redux-sidebar .redux-group-menu li a{display:block;padding:10px 4px 10px 14px;background:#e0e0e0;background:transparent;border-width:1px 0;border-style:solid;border-bottom-color:#E7E7E7;border-top-color:#F9F9F9;opacity:0.7;color:#555;font-weight:600;text-decoration:none;-webkit-transition:none;transition:none}.redux-sidebar .redux-group-menu li a.custom-tab{background:#f6f6f6}.redux-sidebar .redux-group-menu li a img{width:16px;height:16px;position:absolute;left:15px}.redux-sidebar .redux-group-menu li a:hover{background:#e5e5e5;color:#777;opacity:1}.redux-sidebar .redux-menu-warning,.redux-sidebar .redux-menu-error,.redux-sidebar .hasSubSections .extraIconSubsections{display:inline-block;float:right;padding:6px 7px 4px 7px;margin-left:4px;font-family:sans-serif;font-size:9px;font-weight:600;line-height:9px;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent}.redux-sidebar .redux-menu-warning i,.redux-sidebar .redux-menu-error i,.redux-sidebar .hasSubSections .extraIconSubsections i{margin-left:-3px;margin-top:-3px}.redux-sidebar .redux-menu-error{background-color:#b94a48;color:#f2dede}.redux-sidebar .redux-menu-warning{background-color:#C09853;color:#FCF8E3}.redux-sidebar ul .subsection{display:none}.redux-sidebar .redux-group-tab-link-a{position:relative;outline:0}.redux-sidebar .redux-group-tab-link-a i{vertical-align:middle;font-size:1.35em;position:absolute}.redux-sidebar .redux-group-tab-link-a span{display:block}.redux-sidebar .redux-group-tab-link-a span.group_title{padding-left:30px}.redux-sidebar .redux-group-tab-link-li a.hasError span.group_title{padding-right:25px}.redux-sidebar #redux-header{text-align:center}.redux-sidebar #redux-header .display_header{float:none}.farb-popup-wrapper{position:relative;display:block}.farb-popup{position:absolute;left:40px;top:40px;background-color:white;border:1px solid #222;padding:5px;z-index:100}.mp6 .icon-themes{display:none}.mp6 .redux-container #info_bar{padding:6px 10px 6px 6px}.mp6 .redux-container #info_bar a{margin-top:2px}.redux-timer{text-align:center;font-size:10px;color:#888}.wrap{margin-top:0}@media screen and (max-width: 600px){.redux-sidebar{width:44px}.redux-sidebar .extraIconSubsections{display:none !important}.redux-sidebar .redux-group-menu li a,.redux-sidebar .redux-group-menu li a:hover,.redux-sidebar .redux-group-menu li.active a,.redux-sidebar .redux-group-menu li.active a:hover,.redux-sidebar .redux-group-menu li.activeChild a,.redux-sidebar .redux-group-menu li.activeChild a:hover{width:auto}.redux-sidebar .redux-group-tab-link-a{position:relative}.redux-sidebar .redux-group-tab-link-a i{position:inherit}.redux-sidebar .redux-group-tab-link-a span{display:none;position:absolute;top:0;left:44px;padding:12px;width:200px;background:#eeeeee;border:1px solid #ccc;-webkit-box-shadow:2px 2px 8px rgba(0,0,0,0.2);-moz-box-shadow:2px 2px 8px rgba(0,0,0,0.2);box-shadow:2px 2px 8px rgba(0,0,0,0.2);border-width:1px 1px 1px 0px;z-index:3}.redux-sidebar .redux-group-tab-link-a:hover>span{display:block}.redux-main{margin-left:43px;width:auto;max-width:100%}table.form-table,.form-table>thead,.form-table>tbody,.form-table>tbody>tr>th,.form-table>tbody>tr>td,.form-table>tbody>tr{display:block;width:100% !important;padding:0px !important}.form-table>tbody>tr>th,.form-table>tbody>tr>td{padding:10px !important}.form-table>tbody>tr>th,.form-table>tbody>tr>td{padding:10px !important}}@media screen and (max-width: 782px){.form-table>tbody>tr>th{width:100%}.redux_field_th{padding-bottom:0}.mp6 .redux-container #info_bar{height:auto;padding-bottom:1px}.mp6 .redux-container #info_bar a{margin-top:5px}.redux-container-switch label{padding:5px 10px !important}.redux-container-button_set label{padding:12px 10px}.redux-container #redux-footer #redux-share{line-height:34px}}pre{overflow:hidden}#redux-header h2{color:#fff}.admin-color-fresh .button.ui-datepicker-current,.admin-color-fresh button.ui-datepicker-close,.wp-customizer .button.ui-datepicker-current,.wp-customizer button.ui-datepicker-close{background-color:#007db9 !important}.admin-color-fresh .ui-datepicker-buttonpane button.ui-datepicker-current,.wp-customizer .ui-datepicker-buttonpane button.ui-datepicker-current{background:#1e8cbe !important;color:white !important;border:1px solid #104b66 !important}.admin-color-fresh .ui-datepicker-header .ui-icon,.wp-customizer .ui-datepicker-header .ui-icon{background-image:url(data:image/png;base64,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) !important}.admin-color-fresh .ui-datepicker-header,.wp-customizer .ui-datepicker-header{background-color:#23282d !important;color:white !important}.admin-color-fresh .ui-datepicker td .ui-state-active,.wp-customizer .ui-datepicker td .ui-state-active{background-color:#007db9 !important;color:white !important}.admin-color-fresh .ui-datepicker td .ui-state-hover,.wp-customizer .ui-datepicker td .ui-state-hover{color:#007db9 !important}.admin-color-fresh .ui-datepicker td .ui-state-highlight,.wp-customizer .ui-datepicker td .ui-state-highlight{background:#0073aa !important;border:1px solid #23282d !important;color:white !important}.admin-color-fresh .redux-container-switch .cb-disable,.admin-color-fresh .redux-container-switch .cb-enable,.admin-color-fresh .ui-state-default,.admin-color-fresh .ui-widget-content .ui-state-default,.admin-color-fresh .ui-widget-header .ui-state-default,.wp-customizer .redux-container-switch .cb-disable,.wp-customizer .redux-container-switch .cb-enable,.wp-customizer .ui-state-default,.wp-customizer .ui-widget-content .ui-state-default,.wp-customizer .ui-widget-header .ui-state-default{background-color:#f5f5f5 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f5f5f5)) !important;background-image:-moz-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-ms-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f8f8f8), color-stop(100%, #f5f5f5)) !important;background-image:-webkit-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-o-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-linear-gradient(top, #f8f8f8, #f5f5f5) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#f5f5f5', GradientType=0) !important;border-color:#ccc !important}.admin-color-fresh .ui-datepicker td .ui-state-active,.wp-customizer .ui-datepicker td .ui-state-active{color:black !important;font-weight:700 !important;background:white !important}.admin-color-fresh .redux-container-switch .cb-disable.selected,.wp-customizer .redux-container-switch .cb-disable.selected{background-color:#646464 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#929292), to(#646464)) !important;background-image:-moz-linear-gradient(top, #929292, #646464) !important;background-image:-ms-linear-gradient(top, #929292, #646464) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #929292), color-stop(100%, #646464)) !important;background-image:-webkit-linear-gradient(top, #929292, #646464) !important;background-image:-o-linear-gradient(top, #929292, #646464) !important;background-image:-linear-gradient(top, #929292, #646464) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#929292', endColorstr='#646464', GradientType=0) !important;border-color:#767676 !important}.admin-color-fresh .redux-container-switch .cb-enable.selected,.admin-color-fresh .redux-field-container .ui-buttonset .ui-state-active,.wp-customizer .redux-container-switch .cb-enable.selected,.wp-customizer .redux-field-container .ui-buttonset .ui-state-active{background-color:#0073aa !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#008bce), to(#0073aa)) !important;background-image:-moz-linear-gradient(top, #008bce, #0073aa) !important;background-image:-ms-linear-gradient(top, #008bce, #0073aa) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #008bce), color-stop(100%, #0073aa)) !important;background-image:-webkit-linear-gradient(top, #008bce, #0073aa) !important;background-image:-o-linear-gradient(top, #008bce, #0073aa) !important;background-image:-linear-gradient(top, #008bce, #0073aa) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#008bce', endColorstr='#0073aa', GradientType=0) !important;border-color:#003f5e !important;border-color:#005177 !important;-webkit-box-shadow:inset 0 1px 0 #00a7f7,0 1px 0 rgba(0,0,0,0.15) !important;box-shadow:inset 0 1px 0 #00a7f7,0 1px 0 rgba(0,0,0,0.15) !important}.admin-color-fresh #redux-header,.wp-customizer #redux-header{background:#23282d;border-color:#0073aa}.admin-color-fresh #redux-header .display_header span,.wp-customizer #redux-header .display_header span{color:#a0a5aa}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections a,.wp-customizer .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections a:after,.wp-customizer .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after,.wp-customizer .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none !important;content:"\0020" !important}.admin-color-fresh .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error,.wp-customizer .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-fresh .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections,.wp-customizer .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-fresh .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections,.wp-customizer .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-fresh .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections,.wp-customizer .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.wp-customizer .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error,.wp-customizer .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.wp-customizer .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error,.wp-customizer .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.wp-customizer .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-fresh .redux-sidebar .redux-group-menu li.active,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild,.wp-customizer .redux-sidebar .redux-group-menu li.active,.wp-customizer .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-fresh .redux-sidebar .redux-group-menu li.active a,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild a,.wp-customizer .redux-sidebar .redux-group-menu li.active a,.wp-customizer .redux-sidebar .redux-group-menu li.activeChild a{color:#23282d}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after,.wp-customizer .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.wp-customizer .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a,.wp-customizer .redux-sidebar .redux-group-menu li.active.hasSubSections a,.wp-customizer .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all 0.2s;-moz-transition:all 0.2s;transition:all 0.2s;color:#fff;width:auto;border-bottom:0}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li,.wp-customizer .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.wp-customizer .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none !important}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover,.wp-customizer .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.wp-customizer .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a,.wp-customizer .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.wp-customizer .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0 !important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all 0.2;-moz-transition:all 0.2;-ms-transition:all 0.2;-o-transition:all 0.2;transition:all 0.2}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover,.wp-customizer .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.wp-customizer .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#1e8cbe;background:#0d0f10}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title,.wp-customizer .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.wp-customizer .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px !important}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a,.wp-customizer .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.wp-customizer .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title,.wp-customizer .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.wp-customizer .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px !important}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections a,.wp-customizer .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#0073aa}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.wp-customizer .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#23282d}.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a,.wp-customizer .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#a0a5aa;text-shadow:1px 1px #54595d}.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a,.wp-customizer .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#23282d;text-shadow:none}.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a,.wp-customizer .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#0073aa;text-shadow:1px 1px #002e44}.admin-color-fresh .redux-container-image_select .redux-image-select-selected img,.wp-customizer .redux-container-image_select .redux-image-select-selected img{border-color:#0073aa}.admin-color-fresh .redux-container-image_select .redux-image-select-selected .tiles,.wp-customizer .redux-container-image_select .redux-image-select-selected .tiles{border-color:#0073aa}.admin-color-fresh #redux-footer #redux-share a,.wp-customizer #redux-footer #redux-share a{color:#0073aa}.admin-color-fresh #redux-footer #redux-share a:hover,.wp-customizer #redux-footer #redux-share a:hover{color:#002e44}.admin-color-fresh .select2-results .select2-highlighted,.wp-customizer .select2-results .select2-highlighted{background:#0073aa}.admin-color-fresh .select2-drop-active,.admin-color-fresh .select2-container-multi.select2-container-active .select2-choices,.admin-color-fresh .select2-drop.select2-drop-above.select2-drop-active,.admin-color-fresh .select2-container-active .select2-choice,.admin-color-fresh .select2-container-active .select2-choices,.admin-color-fresh .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-fresh .select2-dropdown-open.select2-drop-above .select2-choices,.wp-customizer .select2-drop-active,.wp-customizer .select2-container-multi.select2-container-active .select2-choices,.wp-customizer .select2-drop.select2-drop-above.select2-drop-active,.wp-customizer .select2-container-active .select2-choice,.wp-customizer .select2-container-active .select2-choices,.wp-customizer .select2-dropdown-open.select2-drop-above .select2-choice,.wp-customizer .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#0073aa}.admin-color-fresh .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-fresh .select2-dropdown-open.select2-drop-above .select2-choices,.wp-customizer .select2-dropdown-open.select2-drop-above .select2-choice,.wp-customizer .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-fresh .noUi-connect,.wp-customizer .noUi-connect{background-color:#007db9 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#0096dd), to(#007db9)) !important;background-image:-moz-linear-gradient(top, #0096dd, #007db9) !important;background-image:-ms-linear-gradient(top, #0096dd, #007db9) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #0096dd), color-stop(100%, #007db9)) !important;background-image:-webkit-linear-gradient(top, #0096dd, #007db9) !important;background-image:-o-linear-gradient(top, #0096dd, #007db9) !important;background-image:-linear-gradient(top, #0096dd, #007db9) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0096dd', endColorstr='#007db9', GradientType=0) !important}.admin-color-light .button.ui-datepicker-current,.admin-color-light button.ui-datepicker-close{background-color:#04b0db !important}.admin-color-light .ui-datepicker-buttonpane button.ui-datepicker-current{background:#0384a4 !important;color:white !important;border:1px solid #013340 !important}.admin-color-light .ui-datepicker-header .ui-icon{background-image:url(data:image/png;base64,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) !important}.admin-color-light .ui-datepicker-header{background-color:#888 !important;color:white !important}.admin-color-light .ui-datepicker td .ui-state-active{background-color:#04b0db !important;color:white !important}.admin-color-light .ui-datepicker td .ui-state-hover{color:#04b0db !important}.admin-color-light .ui-datepicker td .ui-state-highlight{background:#04a4cc !important;border:1px solid #888 !important;color:white !important}.admin-color-light .redux-container-switch .cb-disable,.admin-color-light .redux-container-switch .cb-enable,.admin-color-light .ui-state-default,.admin-color-light .ui-widget-content .ui-state-default,.admin-color-light .ui-widget-header .ui-state-default{background-color:#f5f5f5 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f5f5f5)) !important;background-image:-moz-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-ms-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f8f8f8), color-stop(100%, #f5f5f5)) !important;background-image:-webkit-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-o-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-linear-gradient(top, #f8f8f8, #f5f5f5) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#f5f5f5', GradientType=0) !important;border-color:#ccc !important}.admin-color-light .ui-datepicker td .ui-state-active{color:black !important;font-weight:700 !important;background:white !important}.admin-color-light .redux-container-switch .cb-disable.selected{background-color:#646464 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#929292), to(#646464)) !important;background-image:-moz-linear-gradient(top, #929292, #646464) !important;background-image:-ms-linear-gradient(top, #929292, #646464) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #929292), color-stop(100%, #646464)) !important;background-image:-webkit-linear-gradient(top, #929292, #646464) !important;background-image:-o-linear-gradient(top, #929292, #646464) !important;background-image:-linear-gradient(top, #929292, #646464) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#929292', endColorstr='#646464', GradientType=0) !important;border-color:#767676 !important}.admin-color-light .redux-container-switch .cb-enable.selected,.admin-color-light .redux-field-container .ui-buttonset .ui-state-active{background-color:#04a4cc !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#05c0ef), to(#04a4cc)) !important;background-image:-moz-linear-gradient(top, #05c0ef, #04a4cc) !important;background-image:-ms-linear-gradient(top, #05c0ef, #04a4cc) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #05c0ef), color-stop(100%, #04a4cc)) !important;background-image:-webkit-linear-gradient(top, #05c0ef, #04a4cc) !important;background-image:-o-linear-gradient(top, #05c0ef, #04a4cc) !important;background-image:-linear-gradient(top, #05c0ef, #04a4cc) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#05c0ef', endColorstr='#04a4cc', GradientType=0) !important;border-color:#036881 !important;border-color:#037c9a !important;-webkit-box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,0.15) !important;box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,0.15) !important}.admin-color-light #redux-header{background:#888;border-color:#04a4cc}.admin-color-light #redux-header .display_header span{color:#e6e6e6}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none !important;content:"\0020" !important}.admin-color-light .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-light .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-light .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-light .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-light .redux-sidebar .redux-group-menu li.active,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-light .redux-sidebar .redux-group-menu li.active a,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild a{color:#888}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all 0.2s;-moz-transition:all 0.2s;transition:all 0.2s;color:#fff;width:auto;border-bottom:0}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none !important}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0 !important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all 0.2;-moz-transition:all 0.2;-ms-transition:all 0.2;-o-transition:all 0.2;transition:all 0.2}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#0384a4;background:#6f6f6f}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px !important}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px !important}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#04a4cc}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#888}.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#e6e6e6;text-shadow:1px 1px #9a9a9a}.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#888;text-shadow:none}.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#04a4cc;text-shadow:1px 1px #025468}.admin-color-light .redux-container-image_select .redux-image-select-selected img{border-color:#04a4cc}.admin-color-light .redux-container-image_select .redux-image-select-selected .tiles{border-color:#04a4cc}.admin-color-light #redux-footer #redux-share a{color:#04a4cc}.admin-color-light #redux-footer #redux-share a:hover{color:#025468}.admin-color-light .select2-results .select2-highlighted{background:#04a4cc}.admin-color-light .select2-drop-active,.admin-color-light .select2-container-multi.select2-container-active .select2-choices,.admin-color-light .select2-drop.select2-drop-above.select2-drop-active,.admin-color-light .select2-container-active .select2-choice,.admin-color-light .select2-container-active .select2-choices,.admin-color-light .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-light .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#04a4cc}.admin-color-light .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-light .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-light .noUi-connect{background-color:#04b0db !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#09cafa), to(#04b0db)) !important;background-image:-moz-linear-gradient(top, #09cafa, #04b0db) !important;background-image:-ms-linear-gradient(top, #09cafa, #04b0db) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #09cafa), color-stop(100%, #04b0db)) !important;background-image:-webkit-linear-gradient(top, #09cafa, #04b0db) !important;background-image:-o-linear-gradient(top, #09cafa, #04b0db) !important;background-image:-linear-gradient(top, #09cafa, #04b0db) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#09cafa', endColorstr='#04b0db', GradientType=0) !important}.admin-color-blue .button.ui-datepicker-current,.admin-color-blue button.ui-datepicker-close{background-color:#509dba !important}.admin-color-blue .ui-datepicker-buttonpane button.ui-datepicker-current{background:#db9825 !important;color:white !important;border:1px solid #845c16 !important}.admin-color-blue .ui-datepicker-header .ui-icon{background-image:url(data:image/png;base64,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) !important}.admin-color-blue .ui-datepicker-header{background-color:#096484 !important;color:white !important}.admin-color-blue .ui-datepicker td .ui-state-active{background-color:#509dba !important;color:white !important}.admin-color-blue .ui-datepicker td .ui-state-hover{color:#509dba !important}.admin-color-blue .ui-datepicker td .ui-state-highlight{background:#4796b3 !important;border:1px solid #096484 !important;color:white !important}.admin-color-blue .redux-container-switch .cb-disable,.admin-color-blue .redux-container-switch .cb-enable,.admin-color-blue .ui-state-default,.admin-color-blue .ui-widget-content .ui-state-default,.admin-color-blue .ui-widget-header .ui-state-default{background-color:#f5f5f5 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f5f5f5)) !important;background-image:-moz-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-ms-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f8f8f8), color-stop(100%, #f5f5f5)) !important;background-image:-webkit-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-o-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-linear-gradient(top, #f8f8f8, #f5f5f5) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#f5f5f5', GradientType=0) !important;border-color:#ccc !important}.admin-color-blue .ui-datepicker td .ui-state-active{color:black !important;font-weight:700 !important;background:white !important}.admin-color-blue .redux-container-switch .cb-disable.selected{background-color:#646464 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#929292), to(#646464)) !important;background-image:-moz-linear-gradient(top, #929292, #646464) !important;background-image:-ms-linear-gradient(top, #929292, #646464) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #929292), color-stop(100%, #646464)) !important;background-image:-webkit-linear-gradient(top, #929292, #646464) !important;background-image:-o-linear-gradient(top, #929292, #646464) !important;background-image:-linear-gradient(top, #929292, #646464) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#929292', endColorstr='#646464', GradientType=0) !important;border-color:#767676 !important}.admin-color-blue .redux-container-switch .cb-enable.selected,.admin-color-blue .redux-field-container .ui-buttonset .ui-state-active{background-color:#4796b3 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#5ea5bf), to(#4796b3)) !important;background-image:-moz-linear-gradient(top, #5ea5bf, #4796b3) !important;background-image:-ms-linear-gradient(top, #5ea5bf, #4796b3) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #5ea5bf), color-stop(100%, #4796b3)) !important;background-image:-webkit-linear-gradient(top, #5ea5bf, #4796b3) !important;background-image:-o-linear-gradient(top, #5ea5bf, #4796b3) !important;background-image:-linear-gradient(top, #5ea5bf, #4796b3) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5ea5bf', endColorstr='#4796b3', GradientType=0) !important;border-color:#31687c !important;border-color:#39778e !important;-webkit-box-shadow:inset 0 1px 0 #7cb6cb,0 1px 0 rgba(0,0,0,0.15) !important;box-shadow:inset 0 1px 0 #7cb6cb,0 1px 0 rgba(0,0,0,0.15) !important}.admin-color-blue #redux-header{background:#096484;border-color:#4796b3}.admin-color-blue #redux-header .display_header span{color:#e2ecf1}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none !important;content:"\0020" !important}.admin-color-blue .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-blue .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-blue .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-blue .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-blue .redux-sidebar .redux-group-menu li.active,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-blue .redux-sidebar .redux-group-menu li.active a,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild a{color:#096484}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all 0.2s;-moz-transition:all 0.2s;transition:all 0.2s;color:#fff;width:auto;border-bottom:0}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none !important}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0 !important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all 0.2;-moz-transition:all 0.2;-ms-transition:all 0.2;-o-transition:all 0.2;transition:all 0.2}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#db9825;background:#064054}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px !important}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px !important}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#4796b3}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#096484}.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#e2ecf1;text-shadow:1px 1px #7ba8bf}.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#096484;text-shadow:none}.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#4796b3;text-shadow:1px 1px #2a596a}.admin-color-blue .redux-container-image_select .redux-image-select-selected img{border-color:#4796b3}.admin-color-blue .redux-container-image_select .redux-image-select-selected .tiles{border-color:#4796b3}.admin-color-blue #redux-footer #redux-share a{color:#4796b3}.admin-color-blue #redux-footer #redux-share a:hover{color:#2a596a}.admin-color-blue .select2-results .select2-highlighted{background:#4796b3}.admin-color-blue .select2-drop-active,.admin-color-blue .select2-container-multi.select2-container-active .select2-choices,.admin-color-blue .select2-drop.select2-drop-above.select2-drop-active,.admin-color-blue .select2-container-active .select2-choice,.admin-color-blue .select2-container-active .select2-choices,.admin-color-blue .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-blue .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#4796b3}.admin-color-blue .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-blue .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-blue .noUi-connect{background-color:#509dba !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#69abc4), to(#509dba)) !important;background-image:-moz-linear-gradient(top, #69abc4, #509dba) !important;background-image:-ms-linear-gradient(top, #69abc4, #509dba) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #69abc4), color-stop(100%, #509dba)) !important;background-image:-webkit-linear-gradient(top, #69abc4, #509dba) !important;background-image:-o-linear-gradient(top, #69abc4, #509dba) !important;background-image:-linear-gradient(top, #69abc4, #509dba) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#69abc4', endColorstr='#509dba', GradientType=0) !important}.admin-color-coffee .button.ui-datepicker-current,.admin-color-coffee button.ui-datepicker-close{background-color:#ccad93 !important}.admin-color-coffee .ui-datepicker-buttonpane button.ui-datepicker-current{background:#ba906d !important;color:white !important;border:1px solid #835d3e !important}.admin-color-coffee .ui-datepicker-header .ui-icon{background-image:url(data:image/png;base64,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) !important}.admin-color-coffee .ui-datepicker-header{background-color:#46403c !important;color:white !important}.admin-color-coffee .ui-datepicker td .ui-state-active{background-color:#ccad93 !important;color:white !important}.admin-color-coffee .ui-datepicker td .ui-state-hover{color:#ccad93 !important}.admin-color-coffee .ui-datepicker td .ui-state-highlight{background:#c7a589 !important;border:1px solid #46403c !important;color:white !important}.admin-color-coffee .redux-container-switch .cb-disable,.admin-color-coffee .redux-container-switch .cb-enable,.admin-color-coffee .ui-state-default,.admin-color-coffee .ui-widget-content .ui-state-default,.admin-color-coffee .ui-widget-header .ui-state-default{background-color:#f5f5f5 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f5f5f5)) !important;background-image:-moz-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-ms-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f8f8f8), color-stop(100%, #f5f5f5)) !important;background-image:-webkit-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-o-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-linear-gradient(top, #f8f8f8, #f5f5f5) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#f5f5f5', GradientType=0) !important;border-color:#ccc !important}.admin-color-coffee .ui-datepicker td .ui-state-active{color:black !important;font-weight:700 !important;background:white !important}.admin-color-coffee .redux-container-switch .cb-disable.selected{background-color:#646464 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#929292), to(#646464)) !important;background-image:-moz-linear-gradient(top, #929292, #646464) !important;background-image:-ms-linear-gradient(top, #929292, #646464) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #929292), color-stop(100%, #646464)) !important;background-image:-webkit-linear-gradient(top, #929292, #646464) !important;background-image:-o-linear-gradient(top, #929292, #646464) !important;background-image:-linear-gradient(top, #929292, #646464) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#929292', endColorstr='#646464', GradientType=0) !important;border-color:#767676 !important}.admin-color-coffee .redux-container-switch .cb-enable.selected,.admin-color-coffee .redux-field-container .ui-buttonset .ui-state-active{background-color:#c7a589 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#d2b7a1), to(#c7a589)) !important;background-image:-moz-linear-gradient(top, #d2b7a1, #c7a589) !important;background-image:-ms-linear-gradient(top, #d2b7a1, #c7a589) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #d2b7a1), color-stop(100%, #c7a589)) !important;background-image:-webkit-linear-gradient(top, #d2b7a1, #c7a589) !important;background-image:-o-linear-gradient(top, #d2b7a1, #c7a589) !important;background-image:-linear-gradient(top, #d2b7a1, #c7a589) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#d2b7a1', endColorstr='#c7a589', GradientType=0) !important;border-color:#ae7d55 !important;border-color:#b78b66 !important;-webkit-box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,0.15) !important;box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,0.15) !important}.admin-color-coffee #redux-header{background:#46403c;border-color:#c7a589}.admin-color-coffee #redux-header .display_header span{color:#cdcbc9}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none !important;content:"\0020" !important}.admin-color-coffee .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-coffee .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-coffee .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-coffee .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-coffee .redux-sidebar .redux-group-menu li.active,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-coffee .redux-sidebar .redux-group-menu li.active a,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild a{color:#46403c}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all 0.2s;-moz-transition:all 0.2s;transition:all 0.2s;color:#fff;width:auto;border-bottom:0}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none !important}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0 !important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all 0.2;-moz-transition:all 0.2;-ms-transition:all 0.2;-o-transition:all 0.2;transition:all 0.2}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#ba906d;background:#2b2724}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px !important}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px !important}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#c7a589}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#46403c}.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#cdcbc9;text-shadow:1px 1px #837f7a}.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#46403c;text-shadow:none}.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#c7a589;text-shadow:1px 1px #9f714b}.admin-color-coffee .redux-container-image_select .redux-image-select-selected img{border-color:#c7a589}.admin-color-coffee .redux-container-image_select .redux-image-select-selected .tiles{border-color:#c7a589}.admin-color-coffee #redux-footer #redux-share a{color:#c7a589}.admin-color-coffee #redux-footer #redux-share a:hover{color:#9f714b}.admin-color-coffee .select2-results .select2-highlighted{background:#c7a589}.admin-color-coffee .select2-drop-active,.admin-color-coffee .select2-container-multi.select2-container-active .select2-choices,.admin-color-coffee .select2-drop.select2-drop-above.select2-drop-active,.admin-color-coffee .select2-container-active .select2-choice,.admin-color-coffee .select2-container-active .select2-choices,.admin-color-coffee .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-coffee .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#c7a589}.admin-color-coffee .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-coffee .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-coffee .noUi-connect{background-color:#ccad93 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#d7bfac), to(#ccad93)) !important;background-image:-moz-linear-gradient(top, #d7bfac, #ccad93) !important;background-image:-ms-linear-gradient(top, #d7bfac, #ccad93) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #d7bfac), color-stop(100%, #ccad93)) !important;background-image:-webkit-linear-gradient(top, #d7bfac, #ccad93) !important;background-image:-o-linear-gradient(top, #d7bfac, #ccad93) !important;background-image:-linear-gradient(top, #d7bfac, #ccad93) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#d7bfac', endColorstr='#ccad93', GradientType=0) !important}.admin-color-ectoplasm .button.ui-datepicker-current,.admin-color-ectoplasm button.ui-datepicker-close{background-color:#a9bd4f !important}.admin-color-ectoplasm .ui-datepicker-buttonpane button.ui-datepicker-current{background:#89993a !important;color:white !important;border:1px solid #474f1e !important}.admin-color-ectoplasm .ui-datepicker-header .ui-icon{background-image:url(data:image/png;base64,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) !important}.admin-color-ectoplasm .ui-datepicker-header{background-color:#413256 !important;color:white !important}.admin-color-ectoplasm .ui-datepicker td .ui-state-active{background-color:#a9bd4f !important;color:white !important}.admin-color-ectoplasm .ui-datepicker td .ui-state-hover{color:#a9bd4f !important}.admin-color-ectoplasm .ui-datepicker td .ui-state-highlight{background:#a3b745 !important;border:1px solid #413256 !important;color:white !important}.admin-color-ectoplasm .redux-container-switch .cb-disable,.admin-color-ectoplasm .redux-container-switch .cb-enable,.admin-color-ectoplasm .ui-state-default,.admin-color-ectoplasm .ui-widget-content .ui-state-default,.admin-color-ectoplasm .ui-widget-header .ui-state-default{background-color:#f5f5f5 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f5f5f5)) !important;background-image:-moz-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-ms-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f8f8f8), color-stop(100%, #f5f5f5)) !important;background-image:-webkit-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-o-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-linear-gradient(top, #f8f8f8, #f5f5f5) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#f5f5f5', GradientType=0) !important;border-color:#ccc !important}.admin-color-ectoplasm .ui-datepicker td .ui-state-active{color:black !important;font-weight:700 !important;background:white !important}.admin-color-ectoplasm .redux-container-switch .cb-disable.selected{background-color:#646464 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#929292), to(#646464)) !important;background-image:-moz-linear-gradient(top, #929292, #646464) !important;background-image:-ms-linear-gradient(top, #929292, #646464) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #929292), color-stop(100%, #646464)) !important;background-image:-webkit-linear-gradient(top, #929292, #646464) !important;background-image:-o-linear-gradient(top, #929292, #646464) !important;background-image:-linear-gradient(top, #929292, #646464) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#929292', endColorstr='#646464', GradientType=0) !important;border-color:#767676 !important}.admin-color-ectoplasm .redux-container-switch .cb-enable.selected,.admin-color-ectoplasm .redux-field-container .ui-buttonset .ui-state-active{background-color:#a3b745 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#b0c25e), to(#a3b745)) !important;background-image:-moz-linear-gradient(top, #b0c25e, #a3b745) !important;background-image:-ms-linear-gradient(top, #b0c25e, #a3b745) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #b0c25e), color-stop(100%, #a3b745)) !important;background-image:-webkit-linear-gradient(top, #b0c25e, #a3b745) !important;background-image:-o-linear-gradient(top, #b0c25e, #a3b745) !important;background-image:-linear-gradient(top, #b0c25e, #a3b745) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#b0c25e', endColorstr='#a3b745', GradientType=0) !important;border-color:#727f30 !important;border-color:#829237 !important;-webkit-box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,0.15) !important;box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,0.15) !important}.admin-color-ectoplasm #redux-header{background:#413256;border-color:#a3b745}.admin-color-ectoplasm #redux-header .display_header span{color:#cbc5d3}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none !important;content:"\0020" !important}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active a,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild a{color:#413256}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all 0.2s;-moz-transition:all 0.2s;transition:all 0.2s;color:#fff;width:auto;border-bottom:0}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none !important}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0 !important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all 0.2;-moz-transition:all 0.2;-ms-transition:all 0.2;-o-transition:all 0.2;transition:all 0.2}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#89993a;background:#291f36}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px !important}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px !important}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#a3b745}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#413256}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#cbc5d3;text-shadow:1px 1px #7d6e91}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#413256;text-shadow:none}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#a3b745;text-shadow:1px 1px #616d29}.admin-color-ectoplasm .redux-container-image_select .redux-image-select-selected img{border-color:#a3b745}.admin-color-ectoplasm .redux-container-image_select .redux-image-select-selected .tiles{border-color:#a3b745}.admin-color-ectoplasm #redux-footer #redux-share a{color:#a3b745}.admin-color-ectoplasm #redux-footer #redux-share a:hover{color:#616d29}.admin-color-ectoplasm .select2-results .select2-highlighted{background:#a3b745}.admin-color-ectoplasm .select2-drop-active,.admin-color-ectoplasm .select2-container-multi.select2-container-active .select2-choices,.admin-color-ectoplasm .select2-drop.select2-drop-above.select2-drop-active,.admin-color-ectoplasm .select2-container-active .select2-choice,.admin-color-ectoplasm .select2-container-active .select2-choices,.admin-color-ectoplasm .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-ectoplasm .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#a3b745}.admin-color-ectoplasm .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-ectoplasm .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-ectoplasm .noUi-connect{background-color:#a9bd4f !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#b6c669), to(#a9bd4f)) !important;background-image:-moz-linear-gradient(top, #b6c669, #a9bd4f) !important;background-image:-ms-linear-gradient(top, #b6c669, #a9bd4f) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #b6c669), color-stop(100%, #a9bd4f)) !important;background-image:-webkit-linear-gradient(top, #b6c669, #a9bd4f) !important;background-image:-o-linear-gradient(top, #b6c669, #a9bd4f) !important;background-image:-linear-gradient(top, #b6c669, #a9bd4f) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#b6c669', endColorstr='#a9bd4f', GradientType=0) !important}.admin-color-midnight .button.ui-datepicker-current,.admin-color-midnight button.ui-datepicker-close{background-color:#e35950 !important}.admin-color-midnight .ui-datepicker-buttonpane button.ui-datepicker-current{background:#d92c23 !important;color:white !important;border:1px solid #811a15 !important}.admin-color-midnight .ui-datepicker-header .ui-icon{background-image:url(data:image/png;base64,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) !important}.admin-color-midnight .ui-datepicker-header{background-color:#363b3f !important;color:white !important}.admin-color-midnight .ui-datepicker td .ui-state-active{background-color:#e35950 !important;color:white !important}.admin-color-midnight .ui-datepicker td .ui-state-hover{color:#e35950 !important}.admin-color-midnight .ui-datepicker td .ui-state-highlight{background:#e14d43 !important;border:1px solid #363b3f !important;color:white !important}.admin-color-midnight .redux-container-switch .cb-disable,.admin-color-midnight .redux-container-switch .cb-enable,.admin-color-midnight .ui-state-default,.admin-color-midnight .ui-widget-content .ui-state-default,.admin-color-midnight .ui-widget-header .ui-state-default{background-color:#f5f5f5 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f5f5f5)) !important;background-image:-moz-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-ms-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f8f8f8), color-stop(100%, #f5f5f5)) !important;background-image:-webkit-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-o-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-linear-gradient(top, #f8f8f8, #f5f5f5) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#f5f5f5', GradientType=0) !important;border-color:#ccc !important}.admin-color-midnight .ui-datepicker td .ui-state-active{color:black !important;font-weight:700 !important;background:white !important}.admin-color-midnight .redux-container-switch .cb-disable.selected{background-color:#646464 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#929292), to(#646464)) !important;background-image:-moz-linear-gradient(top, #929292, #646464) !important;background-image:-ms-linear-gradient(top, #929292, #646464) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #929292), color-stop(100%, #646464)) !important;background-image:-webkit-linear-gradient(top, #929292, #646464) !important;background-image:-o-linear-gradient(top, #929292, #646464) !important;background-image:-linear-gradient(top, #929292, #646464) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#929292', endColorstr='#646464', GradientType=0) !important;border-color:#767676 !important}.admin-color-midnight .redux-container-switch .cb-enable.selected,.admin-color-midnight .redux-field-container .ui-buttonset .ui-state-active{background-color:#e14d43 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#e66a62), to(#e14d43)) !important;background-image:-moz-linear-gradient(top, #e66a62, #e14d43) !important;background-image:-ms-linear-gradient(top, #e66a62, #e14d43) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #e66a62), color-stop(100%, #e14d43)) !important;background-image:-webkit-linear-gradient(top, #e66a62, #e14d43) !important;background-image:-o-linear-gradient(top, #e66a62, #e14d43) !important;background-image:-linear-gradient(top, #e66a62, #e14d43) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e66a62', endColorstr='#e14d43', GradientType=0) !important;border-color:#ba281e !important;border-color:#d02c21 !important;-webkit-box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,0.15) !important;box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,0.15) !important}.admin-color-midnight #redux-header{background:#363b3f;border-color:#e14d43}.admin-color-midnight #redux-header .display_header span{color:#c2c4c5}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none !important;content:"\0020" !important}.admin-color-midnight .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-midnight .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-midnight .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-midnight .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-midnight .redux-sidebar .redux-group-menu li.active,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-midnight .redux-sidebar .redux-group-menu li.active a,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild a{color:#363b3f}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all 0.2s;-moz-transition:all 0.2s;transition:all 0.2s;color:#fff;width:auto;border-bottom:0}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none !important}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0 !important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all 0.2;-moz-transition:all 0.2;-ms-transition:all 0.2;-o-transition:all 0.2;transition:all 0.2}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#d92c23;background:#1e2124}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px !important}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px !important}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#e14d43}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#363b3f}.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#c2c4c5;text-shadow:1px 1px #74787a}.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#363b3f;text-shadow:none}.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#e14d43;text-shadow:1px 1px #a4231a}.admin-color-midnight .redux-container-image_select .redux-image-select-selected img{border-color:#e14d43}.admin-color-midnight .redux-container-image_select .redux-image-select-selected .tiles{border-color:#e14d43}.admin-color-midnight #redux-footer #redux-share a{color:#e14d43}.admin-color-midnight #redux-footer #redux-share a:hover{color:#a4231a}.admin-color-midnight .select2-results .select2-highlighted{background:#e14d43}.admin-color-midnight .select2-drop-active,.admin-color-midnight .select2-container-multi.select2-container-active .select2-choices,.admin-color-midnight .select2-drop.select2-drop-above.select2-drop-active,.admin-color-midnight .select2-container-active .select2-choice,.admin-color-midnight .select2-container-active .select2-choices,.admin-color-midnight .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-midnight .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#e14d43}.admin-color-midnight .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-midnight .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-midnight .noUi-connect{background-color:#e35950 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#e8776f), to(#e35950)) !important;background-image:-moz-linear-gradient(top, #e8776f, #e35950) !important;background-image:-ms-linear-gradient(top, #e8776f, #e35950) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #e8776f), color-stop(100%, #e35950)) !important;background-image:-webkit-linear-gradient(top, #e8776f, #e35950) !important;background-image:-o-linear-gradient(top, #e8776f, #e35950) !important;background-image:-linear-gradient(top, #e8776f, #e35950) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e8776f', endColorstr='#e35950', GradientType=0) !important}.admin-color-ocean .button.ui-datepicker-current,.admin-color-ocean button.ui-datepicker-close{background-color:#a7c0a9 !important}.admin-color-ocean .ui-datepicker-buttonpane button.ui-datepicker-current{background:#86a988 !important;color:white !important;border:1px solid #547555 !important}.admin-color-ocean .ui-datepicker-header .ui-icon{background-image:url(data:image/png;base64,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) !important}.admin-color-ocean .ui-datepicker-header{background-color:#627c83 !important;color:white !important}.admin-color-ocean .ui-datepicker td .ui-state-active{background-color:#a7c0a9 !important;color:white !important}.admin-color-ocean .ui-datepicker td .ui-state-hover{color:#a7c0a9 !important}.admin-color-ocean .ui-datepicker td .ui-state-highlight{background:#9ebaa0 !important;border:1px solid #627c83 !important;color:white !important}.admin-color-ocean .redux-container-switch .cb-disable,.admin-color-ocean .redux-container-switch .cb-enable,.admin-color-ocean .ui-state-default,.admin-color-ocean .ui-widget-content .ui-state-default,.admin-color-ocean .ui-widget-header .ui-state-default{background-color:#f5f5f5 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f5f5f5)) !important;background-image:-moz-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-ms-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f8f8f8), color-stop(100%, #f5f5f5)) !important;background-image:-webkit-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-o-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-linear-gradient(top, #f8f8f8, #f5f5f5) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#f5f5f5', GradientType=0) !important;border-color:#ccc !important}.admin-color-ocean .ui-datepicker td .ui-state-active{color:black !important;font-weight:700 !important;background:white !important}.admin-color-ocean .redux-container-switch .cb-disable.selected{background-color:#646464 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#929292), to(#646464)) !important;background-image:-moz-linear-gradient(top, #929292, #646464) !important;background-image:-ms-linear-gradient(top, #929292, #646464) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #929292), color-stop(100%, #646464)) !important;background-image:-webkit-linear-gradient(top, #929292, #646464) !important;background-image:-o-linear-gradient(top, #929292, #646464) !important;background-image:-linear-gradient(top, #929292, #646464) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#929292', endColorstr='#646464', GradientType=0) !important;border-color:#767676 !important}.admin-color-ocean .redux-container-switch .cb-enable.selected,.admin-color-ocean .redux-field-container .ui-buttonset .ui-state-active{background-color:#9ebaa0 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#b3c9b4), to(#9ebaa0)) !important;background-image:-moz-linear-gradient(top, #b3c9b4, #9ebaa0) !important;background-image:-ms-linear-gradient(top, #b3c9b4, #9ebaa0) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #b3c9b4), color-stop(100%, #9ebaa0)) !important;background-image:-webkit-linear-gradient(top, #b3c9b4, #9ebaa0) !important;background-image:-o-linear-gradient(top, #b3c9b4, #9ebaa0) !important;background-image:-linear-gradient(top, #b3c9b4, #9ebaa0) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3c9b4', endColorstr='#9ebaa0', GradientType=0) !important;border-color:#719a74 !important;border-color:#80a583 !important;-webkit-box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,0.15) !important;box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,0.15) !important}.admin-color-ocean #redux-header{background:#627c83;border-color:#9ebaa0}.admin-color-ocean #redux-header .display_header span{color:#d5dddf}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none !important;content:"\0020" !important}.admin-color-ocean .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-ocean .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-ocean .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-ocean .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-ocean .redux-sidebar .redux-group-menu li.active,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-ocean .redux-sidebar .redux-group-menu li.active a,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild a{color:#627c83}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all 0.2s;-moz-transition:all 0.2s;transition:all 0.2s;color:#fff;width:auto;border-bottom:0}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none !important}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0 !important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all 0.2;-moz-transition:all 0.2;-ms-transition:all 0.2;-o-transition:all 0.2;transition:all 0.2}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#86a988;background:#4c6066}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px !important}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px !important}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#9ebaa0}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#627c83}.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#d5dddf;text-shadow:1px 1px #7e979d}.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#627c83;text-shadow:none}.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#9ebaa0;text-shadow:1px 1px #658d68}.admin-color-ocean .redux-container-image_select .redux-image-select-selected img{border-color:#9ebaa0}.admin-color-ocean .redux-container-image_select .redux-image-select-selected .tiles{border-color:#9ebaa0}.admin-color-ocean #redux-footer #redux-share a{color:#9ebaa0}.admin-color-ocean #redux-footer #redux-share a:hover{color:#658d68}.admin-color-ocean .select2-results .select2-highlighted{background:#9ebaa0}.admin-color-ocean .select2-drop-active,.admin-color-ocean .select2-container-multi.select2-container-active .select2-choices,.admin-color-ocean .select2-drop.select2-drop-above.select2-drop-active,.admin-color-ocean .select2-container-active .select2-choice,.admin-color-ocean .select2-container-active .select2-choices,.admin-color-ocean .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-ocean .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#9ebaa0}.admin-color-ocean .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-ocean .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-ocean .noUi-connect{background-color:#a7c0a9 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#bccfbd), to(#a7c0a9)) !important;background-image:-moz-linear-gradient(top, #bccfbd, #a7c0a9) !important;background-image:-ms-linear-gradient(top, #bccfbd, #a7c0a9) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #bccfbd), color-stop(100%, #a7c0a9)) !important;background-image:-webkit-linear-gradient(top, #bccfbd, #a7c0a9) !important;background-image:-o-linear-gradient(top, #bccfbd, #a7c0a9) !important;background-image:-linear-gradient(top, #bccfbd, #a7c0a9) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bccfbd', endColorstr='#a7c0a9', GradientType=0) !important}.admin-color-sunrise .button.ui-datepicker-current,.admin-color-sunrise button.ui-datepicker-close{background-color:#df8a48 !important}.admin-color-sunrise .ui-datepicker-buttonpane button.ui-datepicker-current{background:#cc6c23 !important;color:white !important;border:1px solid #753e14 !important}.admin-color-sunrise .ui-datepicker-header .ui-icon{background-image:url(data:image/png;base64,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) !important}.admin-color-sunrise .ui-datepicker-header{background-color:#b43c38 !important;color:white !important}.admin-color-sunrise .ui-datepicker td .ui-state-active{background-color:#df8a48 !important;color:white !important}.admin-color-sunrise .ui-datepicker td .ui-state-hover{color:#df8a48 !important}.admin-color-sunrise .ui-datepicker td .ui-state-highlight{background:#dd823b !important;border:1px solid #b43c38 !important;color:white !important}.admin-color-sunrise .redux-container-switch .cb-disable,.admin-color-sunrise .redux-container-switch .cb-enable,.admin-color-sunrise .ui-state-default,.admin-color-sunrise .ui-widget-content .ui-state-default,.admin-color-sunrise .ui-widget-header .ui-state-default{background-color:#f5f5f5 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f5f5f5)) !important;background-image:-moz-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-ms-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f8f8f8), color-stop(100%, #f5f5f5)) !important;background-image:-webkit-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-o-linear-gradient(top, #f8f8f8, #f5f5f5) !important;background-image:-linear-gradient(top, #f8f8f8, #f5f5f5) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#f5f5f5', GradientType=0) !important;border-color:#ccc !important}.admin-color-sunrise .ui-datepicker td .ui-state-active{color:black !important;font-weight:700 !important;background:white !important}.admin-color-sunrise .redux-container-switch .cb-disable.selected{background-color:#646464 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#929292), to(#646464)) !important;background-image:-moz-linear-gradient(top, #929292, #646464) !important;background-image:-ms-linear-gradient(top, #929292, #646464) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #929292), color-stop(100%, #646464)) !important;background-image:-webkit-linear-gradient(top, #929292, #646464) !important;background-image:-o-linear-gradient(top, #929292, #646464) !important;background-image:-linear-gradient(top, #929292, #646464) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#929292', endColorstr='#646464', GradientType=0) !important;border-color:#767676 !important}.admin-color-sunrise .redux-container-switch .cb-enable.selected,.admin-color-sunrise .redux-field-container .ui-buttonset .ui-state-active{background-color:#dd823b !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#e29559), to(#dd823b)) !important;background-image:-moz-linear-gradient(top, #e29559, #dd823b) !important;background-image:-ms-linear-gradient(top, #e29559, #dd823b) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #e29559), color-stop(100%, #dd823b)) !important;background-image:-webkit-linear-gradient(top, #e29559, #dd823b) !important;background-image:-o-linear-gradient(top, #e29559, #dd823b) !important;background-image:-linear-gradient(top, #e29559, #dd823b) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e29559', endColorstr='#dd823b', GradientType=0) !important;border-color:#ad5d1e !important;border-color:#c36922 !important;-webkit-box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,0.15) !important;box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,0.15) !important}.admin-color-sunrise #redux-header{background:#b43c38;border-color:#dd823b}.admin-color-sunrise #redux-header .display_header span{color:#f0c8c6}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none !important;content:"\0020" !important}.admin-color-sunrise .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-sunrise .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-sunrise .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active a,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild a{color:#b43c38}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all 0.2s;-moz-transition:all 0.2s;transition:all 0.2s;color:#fff;width:auto;border-bottom:0}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none !important}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0 !important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all 0.2;-moz-transition:all 0.2;-ms-transition:all 0.2;-o-transition:all 0.2;transition:all 0.2}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#cc6c23;background:#8d2f2c}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px !important}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px !important}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#dd823b}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#b43c38}.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#f0c8c6;text-shadow:1px 1px #d0534d}.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#b43c38;text-shadow:none}.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#dd823b;text-shadow:1px 1px #98511a}.admin-color-sunrise .redux-container-image_select .redux-image-select-selected img{border-color:#dd823b}.admin-color-sunrise .redux-container-image_select .redux-image-select-selected .tiles{border-color:#dd823b}.admin-color-sunrise #redux-footer #redux-share a{color:#dd823b}.admin-color-sunrise #redux-footer #redux-share a:hover{color:#98511a}.admin-color-sunrise .select2-results .select2-highlighted{background:#dd823b}.admin-color-sunrise .select2-drop-active,.admin-color-sunrise .select2-container-multi.select2-container-active .select2-choices,.admin-color-sunrise .select2-drop.select2-drop-above.select2-drop-active,.admin-color-sunrise .select2-container-active .select2-choice,.admin-color-sunrise .select2-container-active .select2-choices,.admin-color-sunrise .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-sunrise .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#dd823b}.admin-color-sunrise .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-sunrise .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-sunrise .noUi-connect{background-color:#df8a48 !important;background-image:-khtml-gradient(linear, left top, left bottom, from(#e59e66), to(#df8a48)) !important;background-image:-moz-linear-gradient(top, #e59e66, #df8a48) !important;background-image:-ms-linear-gradient(top, #e59e66, #df8a48) !important;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #e59e66), color-stop(100%, #df8a48)) !important;background-image:-webkit-linear-gradient(top, #e59e66, #df8a48) !important;background-image:-o-linear-gradient(top, #e59e66, #df8a48) !important;background-image:-linear-gradient(top, #e59e66, #df8a48) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e59e66', endColorstr='#df8a48', GradientType=0) !important}@media screen and (max-width: 600px){.redux-group-tab-link-a{min-height:15px}.redux-group-tab-link-a span{padding:11px 12px;color:#555;-webkit-transition:all 0.3s;-moz-transition:all 0.3s;transition:all 0.3s;text-shadow:none !important}.redux-group-tab-link-a span:hover{background:#e5e5e5}}@media screen and (max-width: 782px){#redux-footer #redux-share{line-height:38px;font-size:18px}.sticky-save-warn .redux-save-warn{right:13px;top:46px}.redux-container .expand_options{margin-top:5px}.redux-action_bar input{margin-bottom:0 !important}}@media screen and (max-width: 600px){#redux-footer #redux-share,.redux-hint-qtip{display:none}.redux-container .redux-action_bar{float:none}}.redux-sidebar .icon-large,.redux-main .icon-large{background-image:inherit !important;width:inherit;height:inherit}.redux-main dd,.redux-main li,.redux-sidebar li{margin-bottom:0 !important}.fully-expanded .redux-sidebar{margin-left:-500px}.fully-expanded .redux-main{margin-left:0}.fully-expanded .redux-group-tab{display:block}@media screen and (max-width: 640px){#redux-defaults-section{display:none}}@media screen and (max-width: 730px){#redux-share{display:none}}@media screen and (max-width: 730px){#redux-defaults-section2{display:none}#redux-share{display:none}}@media screen and (max-width: 600px){.form-table>tbody>tr>th{padding-bottom:0 !important}.redux_field_th{padding-top:0;padding-bottom:0}.redux-container .redux-main{margin-left:44px}.redux-main .redux-field-container{padding-top:0;padding-bottom:0}.redux-main .subsection a{min-height:15px}}@media screen and (min-width: 601px) and (max-width: 782px){.redux-container .sticky-save-warn .redux-save-warn{top:47px !important;right:13px !important}}@media screen and (max-width: 782px){.redux-main .form-table-section-indented input[type=text]{width:95% !important}.redux-main .redux-container-sortable input[type=text]{width:80%;display:initial}.redux-main .redux-typography-container .input_wrapper input.mini{font-size:16px !important;height:40px !important;padding:7px 10px !important;line-height:24px !important}.redux-main .redux-typography-container .picker-wrapper label{margin-top:16px !important}.redux-main .input-append{height:50px !important}.redux-main .input-append .add-on{font-size:16px;line-height:24px !important;padding:7px;height:32px !important;float:right;margin-top:-40px}.redux-main .redux-hint-qtip{float:left !important}.redux-main .redux-action_bar .button{margin-top:-1px}}@media screen and (max-width: 600px){.sticky-save-warn .redux-save-warn{top:0 !important;right:14px !important}}@media screen and (max-width: 570px){.redux-main .redux-container-sortable .checkbox-container{width:85%;padding-bottom:5px}.redux-main .redux-container-sortable .checkbox-container label{display:initial}}#redux-header{position:relative}.redux-main{position:relative}.redux-main #redux-sticky{min-height:32px;margin-left:-20px;margin-right:-20px;margin-top:-10px;margin-bottom:8px}.redux-main #redux-sticky #info_bar{height:32px}.redux-main #redux-sticky #info_bar .expand_options{margin-top:4px}.redux-main .redux_field_search{top:50px;right:5px}.redux-main #redux-footer-sticky{margin-left:-20px;margin-right:-20px;margin-bottom:-10px}.redux-qtip{z-index:999999 !important} diff --git a/redux/ReduxCore/assets/css/redux-admin.css.map b/redux/ReduxCore/assets/css/redux-admin.css.map new file mode 100644 index 0000000..a53e5b3 --- /dev/null +++ b/redux/ReduxCore/assets/css/redux-admin.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["redux-admin.scss"], +"names": [], +"file": "redux-admin.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/redux-admin.scss b/redux/ReduxCore/assets/css/redux-admin.scss new file mode 100644 index 0000000..494cbb7 --- /dev/null +++ b/redux/ReduxCore/assets/css/redux-admin.scss @@ -0,0 +1,1530 @@ +.spinner { + visibility: hidden; + display: block; +} +.spinner.is-active{ + visibility: visible; +} + +.redux-main .description { + margin-top: 7px; +} + + + +.redux-container { + .form-table > tbody > tr > th { + width: 30% + } + .form-table th, + .form-table td { + margin: 0; + padding: 0; + width: auto; + } + + .redux_field_th { + font-weight: 600; + // width: 30%; + padding: 20px 10px 20px 0px; + display: block; + span:first-child { + font-weight: normal; + display: block; + color: #666; + } + } + #ui-datepicker-div { + display: none; + } + //font-family: "Open Sans","Lucida Grande", Sans-serif; + background-color: #f5f5f5; /* Old browsers */ + background-repeat: repeat-x; /* Repeat the gradient */ + background-image: -moz-linear-gradient(top, #f2f2f2 0%, #f5f5f5 100%); /* FF3.6+ */ + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f2f2f2), color-stop(100%, #f5f5f5)); /* Chrome,Safari4+ */ + background-image: -webkit-linear-gradient(top, #f2f2f2 0%, #f5f5f5 100%); /* Chrome 10+,Safari 5.1+ */ + background-image: -ms-linear-gradient(top, #f2f2f2 0%, #f5f5f5 100%); /* IE10+ */ + background-image: -o-linear-gradient(top, #f2f2f2 0%, #f5f5f5 100%); /* Opera 11.10+ */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#eeeeee', GradientType=0); /* IE6-9 */ + background-image: -linear-gradient(top, #f2f2f2 0%, #f5f5f5 100%); /* W3C */ + border: 1px solid #dedede; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04); + box-shadow: 0 1px 1px rgba(0, 0, 0, .04); + -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.4); + margin-top: 5px; + overflow: hidden; + + a { + &:focus { + box-shadow: none; + } + } + + #redux-header, + #redux-footer { + text-align: right; + padding: 6px 10px; + } + + #redux-header { + background: #f1f1f1; + border-bottom: 3px solid blue; + + .display_header { + float: left; + margin: 20px 10px; + + h2 { + display: inline-block; + font-style: normal; + padding-right: 5px; + } + + .redux-dev-mode-notice-container { + position: absolute; + top: 67px; + left: 20px; + bottom: auto; + width: auto; + } + + span { + color: #888; + + &.redux-dev-mode-notice { + //position: absolute; + background-color: #f0ad4e; + display: inline; + padding: .2em .5em .2em; + font-weight: 700; + line-height: 1; + color: #fff !important; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; + } + } + } + + .icon32 { + float: right; + margin: 16px 16px 0; + } + } + + #redux-footer { + border-top: 1px solid #E7E7E7; + z-index: 999; + + #redux-share { + float: left; + line-height: 28px; + font-size: 15px; + + a { + text-decoration: none; + margin-right: 10px; + + img { + margin-bottom: -3px; + } + } + } + } + + .notice-green { + margin: 0; + border-bottom: 1px solid #E7E7E7; + background-color: #DFF0D8; + color: #468847; + padding: 8px 35px 8px 14px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + } + + .notice-blue { + margin: 0; + border-bottom: 1px solid #BCE8F1; + background-color: #D9EDF7; + color: #3A87AD; + padding: 8px 35px 8px 14px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + } + + .notice-yellow { + margin: 0; + border-bottom: 1px solid #E7E7E7; + background-color: #FCF8E3; + color: #C09853; + padding: 8px 35px 8px 14px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + } + + .notice-red, + .redux-field-errors { + margin: 0; + border-bottom: 1px solid #E7E7E7; + background-color: #F2DEDE; + color: #B94A48; + padding: 8px 35px 8px 14px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + } + + .redux-field-error { + input, textarea, checkbox { + background-color: #FFF6F6; + color: #A00; + } + + } + .redux-field-warning { + input, textarea, checkbox { + background-color: #fcf8e3; + color: #444; + } + } + + .redux-field-errors, + .redux-field-warnings, + .redux-save-warn { + display: none; + } + + .sticky-save-warn { + min-height: 76px; + + .redux-save-warn { + position: fixed; + top: 32px; + right: 21px; + left: 183px; + opacity: 1; + z-index: 9999; + } + } + + #info_bar { + background: #f3f3f3; + border-bottom: 1px solid #dedede; + padding: 6px 10px 6px 6px; + text-align: right; + -moz-box-shadow: inset 0 1px 0 #fcfcfc; + -webkit-box-shadow: inset 0 1px 0 #fcfcfc; + box-shadow: inset 0 1px 0 #fcfcfc; + } + + .redux-group-tab { + display: none; + margin-bottom: 15px; + + .redux-theme-data { + padding: 20px 0; + border-top: 1px solid #E7E7E7; + + &.theme-description { + padding: 10px 0; + border-width: 0; + } + + &.theme-uri, + &.theme-author, + &.theme-version { + padding: 0; + border-width: 0; + } + } + + h3 { + margin-top: 0; + line-height: 2em; + border-bottom: 1px solid #E7E7E7; + } + + .redux-section-desc { + margin-bottom: 15px; + color: #666; + } + } + + .redux-action_bar { + float: right; + .spinner { + float: left; + margin-top: 4px; + } + } + + .redux-ajax-loading { + display: none; + background: red url(data:image/gif;base64,R0lGODlhEAAQAPUAAIiIiIqKio2NjZSUlJqamp6enqKioqSkpK+vr7i4uL+/v8PDw8XFxcnJyc/Pz9HR0dTU1NjY2Nzc3OLi4ubm5unp6ezs7PPz88vLy83NzdDQ0NXV1d3d3eHh4bu7u8zMzOvr6+3t7ZiYmNbW1sDAwMTExNra2s7OztPT09vb2+Xl5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/i1NYWRlIGJ5IEtyYXNpbWlyYSBOZWpjaGV2YSAod3d3LmxvYWRpbmZvLm5ldCkAIfkEAAoA/wAsAAAAABAAEAAABXDgJY6XZZEoOTnOlI5WdUFNA5UnSR3FJNUSieFAIUUEgcdl4noEBBGSZaHIiSqKhTX2GhVFiQGjuxgkSoYAoosAGE6RhKQrUURHlS+pItMVCHMjEgQ9JBJISg+JT3ciFg4NFkcCNw0OViiDgF0oTC8hACH5BAAKAP8ALAAAAAAQABAAAAVx4CWOZGle1qJYp2hV1xYE29V1JXUYHWUcnQgGwyFFBAENiqUZ1kapFamTyeBcsNOLMkoMGC3GIIEyBBAtRMDAiiSKp04iQqpwc9kRpUCAizgEBVciEQNJFxpKGgECdFAYYBsCAjUMGS0XgAODmDacIyEAIfkEAAoA/wAsAAAAABAAEAAABnbAi3BILBovIMUidBSGQJdNIKBBMomUg6FDMRgoHcOBQowIqNaLJiCIEEMLxdWpnIfITRAHnxgwjiEfDR8UIQYBCEcgDYwdUR6ORxEfG3MgeFiFRB0FBBxEHAQFkUJmaBofamxuRB9/GwICGxeMTRehnrabpERBACH5BAAKAP8ALAAAAAAQABAAAAZ9wItwSCwaL5aFwnIUWiqXUSAwulSYRMrB0KEYDJSO4UAhRgQBDZLpCAgixOSSWFEssEho81IWJgYMTQwDCUgGAQhNCAEGTCMJHU0dCXBDFX1DFhwdeHwFIhxmGBihQxEDaRcOGhYao1WZGIFnAiMUDg6YRR0ioE57Fx2RRkEAIfkEAAoA/wAsAAAAABAAEAAABXLgJY5kaV7WolinaLGQEEBXxZLUUUyUYVATw4FCisg0NZYmIIiQUosKqaJY3FDS1oUoSgwYrcUggTIAEC1EwMCKJCatSYI2qnBx2dGkQOCQOAQFdxdGARoVGhCITE4kGBgWEI8QFgwYWhGTWiMWERFXIyEAIfkEAAoA/wAsAAAAABAAEAAABn/Ai3BILBovloXCchRaKpdRIDC6VJhEysHQoRgMlI7hQCFGBAENkukICCLE5JJYUSywSGjzUhYmBgxNDAMJSAYBCE0IAAZMEQkdTRwKVUMcHHhCFXpDERgYcJYEBZFDI58aFhoOFxpuoUIUGhoUZwJVGA6ZaxccBAQce0QdpUVBACH5BAAKAP8ALAAAAAAQABAAAAZ8wItwSCwaLyEFKXQUhioXSCAAuVSYRMrB0KEYDJSO4UAhmgQBDZKpCQhMxFBJgRVWlFkOtElhUj4NH3VEJQMJFx0NintFCAEGISEQH3BHHR5VThVlRRSMQh0FBBxEHAQFnEJnaRcfHxdtb0WKIWcCVSUNTYgEo7tEHR1HQQAh+QQACgD/ACwAAAAAEAAQAAAGdcCLcEgsGi8hhSJ0FHY6l1EgMLqAmEROo5HqGAwqL5g42qKsoAsqIEgRVacTdAhSLLBI1bWpwiYGDE0MAwlIBgEITQgBBkwjCRxNHQlVdCpGekUqBQSRQxwEBZdDKQIBZ3FqbG5EDYEjpikhW3hFoJ1NRU9HQQA7) no-repeat; + width: 16px; + height: 16px; + margin: 3px 4px 0; + float: right; + } + + #redux-intro-text { + background: #f3f3f3; + border-bottom: 1px solid #dedede; + -moz-box-shadow: inset 0 1px 0 #fcfcfc; + -webkit-box-shadow: inset 0 1px 0 #fcfcfc; + box-shadow: inset 0 1px 0 #fcfcfc; + padding: 3px; + padding: 10px 10px; + + p { + margin: 0; + font-family: "Lucida Grande", Sans-serif; + color: #888; + } + } + + .expand_options { + cursor: pointer; + display: block; + height: 22px; + width: 21px; + float: left; + font-size: 0; + text-indent: -9999px; + margin: 1px 0 0 5px; + border: 1px solid #bbb; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAyCAIAAAAm4OfBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQhJREFUeNrslT0KhDAQhTeLR7ATT6IXSKGFYO0lciFrO1N4AU8TLNXKv0CaJbLJRAZxl1hYyJuXN+PoR/Z9fyFdBNNr27Zf8Oq6bhgGSGUYhpTSzyeBNi8hRFVVEK+6rrXaQFOs6yrvTdOYjcqyVEpTLqXI89yaSypBudq2xckF2TipOSvfmmhZFuAGnJV6Licvey5gj7fnwpwXvEfLfqnT0jQ1OBJCQLnUBvZ9b85VFAV076UU8g1ZckVRxBiDzD6OY62WzPOM9i+cpunvvcZxfCQfPWs9a91Ym2UZ5xyHtd/e8hXWng+/zlrD9jmz1tDj7bkw5wXv0Y210itJEs9az9oHsPYQYACveK0/IuB51AAAAABJRU5ErkJggg==) no-repeat -2px -26px; + + &.expanded { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAyCAIAAAAm4OfBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQhJREFUeNrslT0KhDAQhTeLR7ATT6IXSKGFYO0lciFrO1N4AU8TLNXKv0CaJbLJRAZxl1hYyJuXN+PoR/Z9fyFdBNNr27Zf8Oq6bhgGSGUYhpTSzyeBNi8hRFVVEK+6rrXaQFOs6yrvTdOYjcqyVEpTLqXI89yaSypBudq2xckF2TipOSvfmmhZFuAGnJV6Licvey5gj7fnwpwXvEfLfqnT0jQ1OBJCQLnUBvZ9b85VFAV076UU8g1ZckVRxBiDzD6OY62WzPOM9i+cpunvvcZxfCQfPWs9a91Ym2UZ5xyHtd/e8hXWng+/zlrD9jmz1tDj7bkw5wXv0Y210itJEs9az9oHsPYQYACveK0/IuB51AAAAABJRU5ErkJggg==) no-repeat -2px -1px + } + + &:hover { + border-color: #888; + } + } + + .sticky-footer-fixed { + background: #f3f3f3; + border-top: 1px solid #dedede !important; + -moz-box-shadow: inset 0 1px 0 #fcfcfc; + -webkit-box-shadow: inset 0 1px 0 #fcfcfc; + box-shadow: inset 0 1px 0 #fcfcfc; + } + + .redux-sidebar, + .redux-main { + min-height: 300px; + + } + .redux-main { + background: #FCFCFC; + margin-left: 201px; + border-left: 1px solid #D8D8D8; + padding: 10px 20px; + -moz-box-shadow: inset 0 1px 0 #fff; + -webkit-box-shadow: inset 0 1px 0 #FFF; + box-shadow: inset 0 1px 0 #FFF; + position: relative; + #redux_ajax_overlay { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + -moz-opacity: 0.10; + -khtml-opacity: 0.10; + opacity: 0.10; + filter: progid:DXImageTransform.Microsoft.Alpha(opacity=10); + filter: alpha(opacity=10); + background: #000; + z-index: 200; + display: none; + } + .form-table.no-border { + border-top: none; + } + .form-table tr { + border-bottom: 1px solid #E7E7E7; + &:last-child { + border-bottom: none !important; + } + th, + td { + color: #333; + } + } + + .form-table tr td { + table.mceLayout, + table.mceLayout tr, + table.mceLayout tr td { + padding: 0; + border-width: 0; + } + + .redux-th-warning { + font-size: 1em; + color: #C09853; + font-weight: normal; + display: block; + margin-top: 10px; + } + + .redux-field-warning { + border-color: #C09853; + margin-top: 10px; + } + + .redux-th-error { + font-size: 1em; + color: #B94A48; + font-weight: normal; + display: block; + margin-top: 10px; + } + } + + input.large-text { + width: 100%; + } + + .hide { + display: none; + } + + .redux-field-container { + padding: 20px 0; + } + + .mini, + input[type=text].mini { + width: 60px; + text-align: center; + } + + input { + line-height: 19px; + } + + img { + max-width: 100%; + height: auto; + width: auto !important; + } + + .select2-default { + width: auto !important; + } + + .showDefaults { + display: block; + font-weight: normal; + font-size: .8em; + color: #888; + } + + span.description { + display: block; + font-style: normal; + font-weight: 400; + } + + #redux-system-info textarea { + min-height: 730px; + width: 100%; + } + + .field-desc { + clear: both; + font-size: 13px; + } + + .data-full li { + width: 100%; + } + + .data-half li { + width: 50%; + float: left; + } + + .data-third li { + width: 33.3%; + float: left; + } + + .data-quarter li { + width: 25%; + float: left; + } + + .ui-helper-hidden-accessible { + top: inherit; + } + + .form-table:first-child > tr th, .redux-main .form-table:first-child > tr td { + //padding-top: 0 !important; + } + + .form-table { + clear: none; + margin-top: 0px !important; + + &:first-child tr th, + &:first-child tr td { + // padding-top: 0 !important; + } + + tr:first-child th, + tr:first-child td { + padding-top: 0; + } + } + + .input-append input { + border-right: 0; + margin-bottom: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + margin-right: 0; + float: left; + margin-top: 0; + display: block; + } + .input-append .add-on { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + margin-left: -2px; + padding-top: 4px !important; + padding-bottom: 2px !important; + //float: left; + } + .input-prepend input { + border-left: 0; + margin-bottom: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + margin-left: 0; + padding-top: 2px; + padding-bottom: 5px; + float: left; + margin-top: 0; + display: block; + } + .input-prepend .add-on { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + float: left; + } + + .input-append { + margin-right: 10px; + font-size: 0; + white-space: nowrap; + float: left; + display: inline-block; + margin-bottom: 6px; + } + .input-append .add-on, .input-prepend .add-on { + width: auto; + display: inline-block; + min-width: 16px; + padding: 3px 4px; + font-size: 12px; + font-weight: 400; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #cccccc; + } + .input-prepend { + font-size: 0; + white-space: nowrap; + float: left; + display: inline-block; + margin-bottom: 6px; + } + pre { + white-space: pre-wrap; /* css-3 */ + white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + word-wrap: break-word; /* Internet Explorer 5.5+ */ + } + } +} + + +/* redux-container */ + +.no-js { + border: 1px solid #ffbaba; + margin: 0; + border-bottom: 1px solid #E7E7E7; + background-color: #F2DEDE; + color: #B94A48; + padding: 8px 35px 8px 14px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + + + +/* main */ + +.redux-sidebar { + width: 202px; + float: left; + + .redux-group-menu { + margin-top: 0 !important; + li { + margin-top: 0; + + &.active a, + &.active a:hover, + &.activeChild a, + &.activeChild a:hover { + background: #FCFCFC; + color: #269ad6; + width: 184px; + opacity: 1; + //margin-right:-2px; + } + + &.active a li a { + background: #333; + padding-left: 5px; + } + + &.divide { + padding: 0; + border-width: 1px 0; + border-style: solid; + border-bottom-color: #E7E7E7; + border-top-color: #F9F9F9; + } + a:first-child { + border-top: none; + } + a { + display: block; + padding: 10px 4px 10px 14px; + background: #e0e0e0; + background: transparent; + border-width: 1px 0; + border-style: solid; + border-bottom-color: #E7E7E7; + border-top-color: #F9F9F9; + opacity: 0.7; + color: #555; + font-weight: 600; + text-decoration: none; + -webkit-transition: none; + transition: none; + &.custom-tab { + background: #f6f6f6; + } + img { + width: 16px; + height: 16px; + // vertical-align:middle; + // margin-bottom:-3px; + // margin-right: 3px; + position: absolute; + left: 15px; + } + &:hover { + background: #e5e5e5; + //width: 184px + color: #777; + //margin-right: -2px; + opacity: 1; + } + } + } + } + + .redux-menu-warning, + .redux-menu-error, + .hasSubSections .extraIconSubsections { + display: inline-block; + float: right; + padding: 6px 7px 4px 7px; + margin-left: 4px; + font-family: sans-serif; + font-size: 9px; + font-weight: 600; + line-height: 9px; + border-radius: 10px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border: 0 solid transparent; + //margin-right: 5px; + + i { + margin-left: -3px; + margin-top: -3px; + } + } + .redux-menu-error { + background-color: rgb(185, 74, 72); + color: rgb(242, 222, 222); + } + .redux-menu-warning { + background-color: #C09853; + color: #FCF8E3; + } + + ul { + .subsection { + display: none; + } + } + + .redux-group-tab-link-a { + position: relative; + outline: 0; + i { + vertical-align: middle; + font-size: 1.35em; + position: absolute; + } + span { + display: block; + &.group_title { + padding-left: 30px; + } + } + } + + .redux-group-tab-link-li a.hasError span.group_title { + padding-right: 25px; + } + + #redux-header { + text-align: center; + + .display_header { + float: none; + } + } +} + +/* sidebar */ + + + +/* + * + * NHP_Options_color + * + */ +.farb-popup-wrapper { + position: relative; + display: block; +} + +.farb-popup { + position: absolute; + left: 40px; + top: 40px; + background-color: white; + border: 1px solid #222; + padding: 5px; + z-index: 100; +} + + + +.mp6 { + .icon-themes { + display: none; + } + + .redux-container { + #info_bar { + padding: 6px 10px 6px 6px; + + a { + margin-top: 2px; + } + } + } +} + +.redux-timer { + text-align: center; + font-size: 10px; + color: #888; +} + +.wrap { + margin-top: 0; +} + +@media screen and (max-width: 600px) { + .redux-sidebar { + width: 44px; + + .extraIconSubsections { + display: none !important; + } + + .redux-group-menu li a, + .redux-group-menu li a:hover, + .redux-group-menu li.active a, + .redux-group-menu li.active a:hover, + .redux-group-menu li.activeChild a, + .redux-group-menu li.activeChild a:hover { + width: auto; + } + + .redux-group-tab-link-a { + position: relative; + + i { + position: inherit; + } + + span { + display: none; + position: absolute; + top: 0; + left: 44px; + padding: 12px; + width: 200px; + background: #eeeeee; + border: 1px solid #ccc; + -webkit-box-shadow: 2px 2px 8px rgba(0, 0, 0, .2); + -moz-box-shadow: 2px 2px 8px rgba(0, 0, 0, .2); + box-shadow: 2px 2px 8px rgba(0, 0, 0, .2); + border-width: 1px 1px 1px 0px; + z-index: 3; + } + + &:hover > span { + display: block; + } + } + } + + .redux-main { + margin-left: 43px; + width: auto; + max-width: 100%; + } + + table.form-table, + .form-table > thead, + .form-table > tbody, + .form-table > tbody > tr > th, + .form-table > tbody > tr > td, + .form-table > tbody > tr { + display: block; + width: 100% !important; + padding: 0px !important; + } + + .form-table > tbody > tr > th, .form-table > tbody > tr > td { + padding: 10px !important; + } + + .form-table > tbody > tr > th, .form-table > tbody > tr > td { + padding: 10px !important; + } +} + +//mp6 fixes +@media screen and (max-width: 782px) { + .form-table>tbody>tr>th { + width: 100%; + } + .redux_field_th { + padding-bottom:0; + } + .mp6 { + .redux-container { + #info_bar { + height: auto; + padding-bottom: 1px; + + a { + margin-top: 5px; + } + } + } + } + .redux-container-switch label { + padding: 5px 10px !important; + + } + .redux-container-button_set label { + padding: 12px 10px; + } + .redux-container #redux-footer #redux-share { + line-height: 34px; + } + +} + +pre { + overflow: hidden; +} + +/* Default admin theme */ +#redux-header h2 { + color: #fff; +} + +@mixin backgroundGradient($to: darken($to, 5%), $from: lighten($to, 7%)) { + background-color: $to !important; + background-image: -khtml-gradient(linear, left top, left bottom, from($from), to($to)) !important; + background-image: -moz-linear-gradient(top, $from, $to) !important; + background-image: -ms-linear-gradient(top, $from, $to) !important; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, $from), color-stop(100%, $to)) !important; + background-image: -webkit-linear-gradient(top, $from, $to) !important; + background-image: -o-linear-gradient(top, $from, $to) !important; + background-image: -linear-gradient(top, $from, $to) !important; + + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$from}', endColorstr='#{$to}', GradientType=0) !important; +} + +@mixin adminThemeColorOverrides($darkColor, $accentColor, $secondaryColor, $buttonPrimary) { + + .button.ui-datepicker-current, + button.ui-datepicker-close { + background-color: lighten($accentColor, 3%) !important; + } + + .ui-datepicker-buttonpane button.ui-datepicker-current { + background: $buttonPrimary !important; + color: white !important; + border: 1px solid darken($buttonPrimary, 20%) !important; + + } + + .ui-datepicker-header .ui-icon { + background-image: url(data:image/png;base64,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) !important; + } + + .ui-datepicker-header { + background-color: $secondaryColor !important; + color: white !important; + } + + .ui-datepicker td .ui-state-active { + background-color: lighten($accentColor, 3%) !important; + color: white !important; + } + + .ui-datepicker td .ui-state-hover { + color: lighten($accentColor, 3%) !important; + } + + .ui-datepicker td .ui-state-highlight { + background: $accentColor !important; + border: 1px solid $secondaryColor !important; + color: white !important; + } + + .redux-container-switch .cb-disable, + .redux-container-switch .cb-enable, + .ui-state-default, + .ui-widget-content .ui-state-default, + .ui-widget-header .ui-state-default { + @include backgroundGradient(#f5f5f5, #f8f8f8); + border-color: #ccc !important; + } + + .ui-datepicker td .ui-state-active { + color: black !important; + font-weight: 700 !important; + background: white !important; + } + + .redux-container-switch .cb-disable.selected { + @include backgroundGradient(#646464, #929292); + border-color: #767676 !important; + } + .redux-container-switch .cb-enable.selected, + .redux-field-container .ui-buttonset .ui-state-active { + @include backgroundGradient($accentColor); + border-color: darken($accentColor, 15%) !important; + border-color: darken($accentColor, 10%) !important; + -webkit-box-shadow: inset 0 1px 0 lighten($accentColor, 15%), 0 1px 0 rgba(0, 0, 0, .15) !important; + box-shadow: inset 0 1px 0 lighten($accentColor, 15%), 0 1px 0 rgba(0, 0, 0, .15) !important; + + } + + #redux-header { + background: $secondaryColor; + border-color: $accentColor; + + .display_header span { + color: $darkColor; + } + } + + .redux-sidebar .redux-group-menu li.active { + &.hasSubSections { + + a { + position: relative; + &:after { + right: 0; + border: solid 8px transparent; + content: "\0020"; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + border-right-color: #fff; + top: 50%; + margin-top: -8px; + } + + } + ul.subsection li a:after { + border: 0 none !important; + content: "\0020" !important; + } + } + } + .redux-sidebar .redux-group-menu li { + &.hasSubSections { + .redux-menu-error { + display: none; + margin-right: 5px; + } + + a { + &.hasError { + .extraIconSubsections { + background-color: rgb(185, 74, 72); + color: rgb(242, 222, 222); + } + } + .extraIconSubsections { + border-radius: 10px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border: 0 solid transparent; + font-size: 9px; + height: 9px; + line-height: 9px; + margin-right: 5px; + padding: 6px 7px 4px 7px; + width: 5px; + } + + &:hover .extraIconSubsections { + //right: 2px; + } + + } + } + &.active, + &.activeChild { + a .extraIconSubsections { + display: none; + } + &.hasSubSections { + .redux-menu-error { + display: block; + } + .subsection { + .redux-menu-error { + margin-right: 2px; + } + } + } + } + } + + .redux-sidebar .redux-group-menu { + li.active, + li.activeChild { + border-left: 0 none; + a { + color: $secondaryColor; + } + &.hasSubSections { + .active { + a { + &:after { + right: 0; + border: solid 8px transparent; + content: "\0020"; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + border-right-color: #fff; + top: 50%; + margin-top: -8px; + } + } + } + a { + -webkit-transition: all 0.2s; + -moz-transition: all 0.2s; + transition: all 0.2s; + color: #fff; + width: auto; + border-bottom: 0; + } + ul.subsection li { + border-top: 0 none !important; + &.active a:hover { + color: #fff; + } + a { + width: auto; + border-top: 0 !important; + // border-top-color: lighten(@secondaryColor, 15); + padding: 7px; + color: #fff; + padding-left: 15px; + -webkit-transition: all 0.2; + -moz-transition: all 0.2; + -ms-transition: all 0.2; + -o-transition: all 0.2; + transition: all 0.2; + &:hover { + color: $buttonPrimary; + background: darken($secondaryColor, 10%); + } + span.group_title { + padding-left: 5px !important; + } + } + &.hasIcon { + a { + padding-left: 14px; + span.group_title { + padding-left: 30px !important; + } + + } + } + } + } + } + li.active { + &.hasSubSections { + a { + background: $accentColor; + } + ul.subsection li a { + background: $secondaryColor; + } + } + } + li.activeChild { + &.hasSubSections { + a { + background: $darkColor; + text-shadow: 1px 1px darken($darkColor, 30%); + } + ul.subsection li { + a { + background: $secondaryColor; + text-shadow: none; + } + &.active { + a { + background: $accentColor; + text-shadow: 1px 1px darken($accentColor, 20%); + } + } + } + } + } + } + + .redux-container-image_select .redux-image-select-selected img { + border-color: $accentColor; + } + + .redux-container-image_select .redux-image-select-selected .tiles { + border-color: $accentColor; + } + + #redux-footer #redux-share a { + color: $accentColor; + &:hover { + color: darken($accentColor, 20%); + } + } + .select2-results .select2-highlighted { + background: $accentColor; + } + .select2-drop-active, + .select2-container-multi.select2-container-active .select2-choices, + .select2-drop.select2-drop-above.select2-drop-active, + .select2-container-active .select2-choice, + .select2-container-active .select2-choices, + .select2-dropdown-open.select2-drop-above .select2-choice, + .select2-dropdown-open.select2-drop-above .select2-choices { + border-color: $accentColor; + } + .select2-dropdown-open.select2-drop-above .select2-choice, + .select2-dropdown-open.select2-drop-above .select2-choices { + border-top: inherit; + } + .noUi-connect { + @include backgroundGradient(lighten($accentColor, 3%)); + } +} + +/* Light fresh theme */ +.admin-color-fresh, .wp-customizer { + @include adminThemeColorOverrides(#a0a5aa, #0073aa, #23282d, #1e8cbe); +} + +/* Light admin theme */ +.admin-color-light { + @include adminThemeColorOverrides(#e6e6e6, #04a4cc, #888888, #0384a4); +} + +/* Blue admin theme */ +.admin-color-blue { + @include adminThemeColorOverrides(#e2ecf1, #4796b3, #096484, #db9825); +} + +/* Coffee admin theme */ +.admin-color-coffee { + @include adminThemeColorOverrides(#cdcbc9, #c7a589, #46403c, #ba906d); +} + +/* Ectoplasm admin theme */ +.admin-color-ectoplasm { + @include adminThemeColorOverrides(#cbc5d3, #a3b745, #413256, #89993a); +} + +/* Midnight admin theme */ +.admin-color-midnight { + @include adminThemeColorOverrides(#c2c4c5, #e14d43, #363b3f, #d92c23); +} + +/* Ocean admin theme */ +.admin-color-ocean { + @include adminThemeColorOverrides(#d5dddf, #9ebaa0, #627c83, #86a988); +} + +/* Sunrise admin theme */ +.admin-color-sunrise { + @include adminThemeColorOverrides(#f0c8c6, #dd823b, #b43c38, #cc6c23); +} + +@media screen and (max-width: 600px) { + // .redux-group-tab-link-a span { margin-top: -2px; } + .redux-group-tab-link-a { + min-height: 15px; + span { + //background: #222; + //color: white; + padding: 11px 12px; + color: #555; + -webkit-transition: all 0.3s; + -moz-transition: all 0.3s; + transition: all 0.3s; + &:hover { + //color: #2ea2cc; + //background: black; + background: #e5e5e5; + } + text-shadow: none !important; + } + } + + .redux-sidebar a { + + } +} + +@media screen and (max-width: 782px) { + #redux-footer #redux-share { + line-height: 38px; + font-size: 18px; + } + + .sticky-save-warn .redux-save-warn { + right: 13px; + top: 46px; + } + + .redux-container .expand_options { + margin-top: 5px; + } + + .redux-action_bar input { + margin-bottom: 0 !important; + } + +} + +@media screen and (max-width: 600px) { + #redux-footer #redux-share, + .redux-hint-qtip { + display: none; + } + + .redux-container .redux-action_bar { + float: none; + } +} + +// WP Engine CSS fix +.redux-sidebar .icon-large, +.redux-main .icon-large { + background-image: inherit !important; + width: inherit; + height: inherit; +} + +.redux-main dd, .redux-main li, .redux-sidebar li { + margin-bottom: 0 !important; +} + +.fully-expanded { + .redux-sidebar { + margin-left: -500px; + } + .redux-main { + margin-left: 0; + } + .redux-group-tab { + display: block; + } +} +@media screen and (max-width: 640px) { + #redux-defaults-section { + display: none; + } +} +@media screen and (max-width: 730px) { + #redux-share { + display:none; + } +} +@media screen and (max-width: 730px) { + #redux-defaults-section2 { + display: none; + } + #redux-share { + display:none; + } +} + +@media screen and (max-width: 600px) { + .form-table > tbody > tr > th { + padding-bottom: 0 !important; + } + + .redux_field_th { + padding-top: 0; + padding-bottom: 0; + } + + .redux-container .redux-main { + margin-left: 44px; + } + + .redux-main { + .redux-field-container { + padding-top: 0; + padding-bottom: 0; + } + .subsection a { + min-height: 15px; + } + } +} + +@media screen and (min-width: 601px) and (max-width: 782px) { + .redux-container { + .sticky-save-warn .redux-save-warn { + top: 47px !important; + right: 13px !important; + } + } +} + +@media screen and (max-width: 782px) { + + .redux-main { + .form-table-section-indented { + input[type=text] { + width: 95% !important; + } + } + + .redux-container-sortable { + input[type=text] { + width: 80%; + display: initial; + } + } + + .redux-typography-container { + .input_wrapper input.mini { + font-size: 16px !important; + height: 40px !important; + padding: 7px 10px !important; + line-height: 24px !important; + } + .picker-wrapper label { + margin-top: 16px !important; + } + } + + .input-append { + height: 50px !important; + + .add-on { + font-size: 16px; + line-height: 24px !important; + padding: 7px; + height: 32px !important; + float: right; + margin-top: -40px; + } + } + + .redux-hint-qtip { + float: left !important; + } + .redux-action_bar .button { + margin-top: -1px; + } + } +} + +@media screen and (max-width: 600px) { + .sticky-save-warn .redux-save-warn { + top: 0 !important; + right: 14px !important; + } +} + +@media screen and (max-width: 570px) { + .redux-main { + .redux-container-sortable { + .checkbox-container { + width: 85%; + padding-bottom: 5px; + + label { + display: initial; + } + } + } + } +} + +#redux-header { + position: relative; +} + +/* Leftovers? */ + +/*.shadow1 { + position: relative; + + &:before, + &:after { + z-index: -1; + position: absolute; + content: ""; + bottom: 15px; + left: 10px; + width: 50%; + top: 80%; + max-width: 300px; + background: #777; + -webkit-box-shadow: 0 15px 10px rgba(0,0,0,0.4); + -moz-box-shadow: 0 15px 10px rgba(0,0,0,0.4); + box-shadow: 0 15px 10px rgba(0,0,0,0.4); + -webkit-transform: rotate(-3deg); + -moz-transform: rotate(-3deg); + -o-transform: rotate(-3deg); + -ms-transform: rotate(-3deg); + transform: rotate(-3deg); + } + + &:after { + -webkit-transform: rotate(3deg); + -moz-transform: rotate(3deg); + -o-transform: rotate(3deg); + -ms-transform: rotate(3deg); + transform: rotate(3deg); + right: 10px; + left: auto; + } +}*/ + +/*.redux-menu-warning { + background-color: #C09853; + color: #FCF8E3; +} +.redux-menu-error { + background-color: #B94A48; + color: #F2DEDE; +}*/ + +/*.redux-screenshot { + max-width: 300px; + display: block; +}*/ + +/*.redux-container { + .ajax-loading-img-top { + margin: 5px 4px 0; + float: left; + } + + .ajax-loading { + margin: 3px 4px 0; + float: right; + } + + .ajax-reset-loading-img { + display: block; + margin-left: 100px; + } +}*/ + +// Modern Theme + +.redux-main { + position: relative; + #redux-sticky { + min-height: 32px; + margin-left: -20px; + margin-right: -20px; + margin-top: -10px; + margin-bottom: 8px; + #info_bar { + height: 32px; + .expand_options { + margin-top: 4px; + } + } + } + .redux_field_search { + top: 50px; + right: 5px; + } + #redux-footer-sticky { + margin-left: -20px; + margin-right: -20px; + margin-bottom: -10px; + } +} +.redux-qtip { + z-index: 999999 !important; + +} + diff --git a/redux/ReduxCore/assets/css/redux-fields.css b/redux/ReduxCore/assets/css/redux-fields.css new file mode 100644 index 0000000..1064e9a --- /dev/null +++ b/redux/ReduxCore/assets/css/redux-fields.css @@ -0,0 +1 @@ +.redux-container-ace_editor .ace-wrapper{position:static}.redux-container-ace_editor .ace_editor{height:200px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-ace_editor .ace_gutter{z-index:1!important}.redux-main .redux-container-background .redux-background-attachment,.redux-main .redux-container-background .redux-background-attachment select,.redux-main .redux-container-background .redux-background-clip,.redux-main .redux-container-background .redux-background-clip select,.redux-main .redux-container-background .redux-background-origin,.redux-main .redux-container-background .redux-background-origin select,.redux-main .redux-container-background .redux-background-position,.redux-main .redux-container-background .redux-background-position select,.redux-main .redux-container-background .redux-background-repeat,.redux-main .redux-container-background .redux-background-repeat select,.redux-main .redux-container-background .redux-background-size,.redux-main .redux-container-background .redux-background-size select{width:200px!important;margin-right:10px;margin-bottom:7px}.redux-main .redux-container-background .background-preview{display:block;width:100%;margin:5px 0 10px;border:1px dotted #d3d3d3}.redux-main .redux-container-background .select2-container{margin-right:10px;margin-bottom:10px}.redux-main .redux-container-background .wp-picker-container{margin-bottom:10px}.redux-main .redux-container-background .upload{width:100%;margin-bottom:8px}.redux-main .redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.wp-customizer .redux-container-background .redux-background-attachment,.wp-customizer .redux-container-background .redux-background-attachment select,.wp-customizer .redux-container-background .redux-background-clip,.wp-customizer .redux-container-background .redux-background-clip select,.wp-customizer .redux-container-background .redux-background-origin,.wp-customizer .redux-container-background .redux-background-origin select,.wp-customizer .redux-container-background .redux-background-position,.wp-customizer .redux-container-background .redux-background-position select,.wp-customizer .redux-container-background .redux-background-repeat,.wp-customizer .redux-container-background .redux-background-repeat select,.wp-customizer .redux-container-background .redux-background-size,.wp-customizer .redux-container-background .redux-background-size select{width:100%!important}.redux-container-border .select2-container{float:left;display:block;margin-right:10px}.redux-container-border .select_wrapper{float:left;width:inherit}.redux-container-border .select_wrapper select{width:80px;float:left}.redux-container-border .field-border-input{margin-right:10px;margin-bottom:7px}.redux-container-border .wp-picker-container{margin-top:2px}@media screen and (max-width:782px){.redux-container-border .field-border-input input{display:inline-block!important;width:100px!important}.redux-container-border .field-border-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-border .select_wrapper{margin-top:6px}}.redux-container-checkbox label{vertical-align:top;width:100%}.redux-container-checkbox label .field-desc{margin-top:0;float:left;width:93%;clear:none}.redux-container-color_gradient .colorGradient{display:inline-block}.redux-container-color_gradient .toLabel{padding-left:18px}@media screen and (max-width:660px){.redux-container-color_gradient .colorGradient{display:block;text-align:center!important}}.sp-container{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.sp-replacer{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.sp-replacer.focus,.sp-replacer.hover,.sp-replacer:focus,.sp-replacer:hover{background:#fafafa;border-color:#999;color:#222}.sp-replacer.focus,.sp-replacer:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.sp-replacer.active:focus{-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.sp-replacer.active,.sp-replacer.active:hover,.sp-replacer:active{background:#eee;border-color:#999;color:#333;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}#ui-datepicker-div{z-index:15!important}.ui-datepicker-header{background-color:#00abef}.redux-dimensions-container .select_wrapper,.redux-dimensions-container select{width:65px!important;float:left}.redux-dimensions-container .field-dimensions-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width:782px){.redux-dimensions-container .field-dimensions-input input{display:inline-block!important;width:100px!important}.redux-dimensions-container .field-dimensions-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-dimensions-container .select_wrapper{margin-top:6px}}.redux-main .divide{height:20px;line-height:20px;float:none;border-color:#e7e7e7;display:block;width:100%;height:35px!important;line-height:35px!important;position:relative;margin:15px 0 10px 0}.redux-main .divide .inner{width:42%!important;left:40%!important;margin-left:-6%;background-color:#fcfcfc;border-color:#e7e7e7;position:absolute;height:1px;top:50%;width:100%;margin-top:-1px;border-top-width:1px;border-top-style:solid}.redux-main .divide .inner span{background-color:#fcfcfc;border-color:#e7e7e7;height:5px;width:5px;border-width:2px;border-style:solid;display:block;position:absolute;left:50%;margin-left:-5px;margin-top:-5px}.wp-customizer .redux-container-divide .divide .inner{width:82%!important;left:18%!important;margin-left:-8%}.redux-container-editor .mceLayout td{border-width:1px;margin:0;padding:1px}.redux-container-editor input,.redux-container-editor textarea{margin:inherit}.redux-container-editor textarea{border-style:none;border:0;border-width:0}.redux-container-editor .wp-editor-container{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-editor .wp-editor-container textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-style:inherit}.redux-container-editor .quicktags-toolbar input{margin:2px 1px 4px;line-height:18px;display:inline-block;min-width:26px;padding:2px 4px;font:12px/18px Arial,Helvetica,sans-serif normal;color:#464646;border:1px solid #c3c3c3;-webkit-border-radius:3px;border-radius:3px;background:#eee;background-image:-webkit-gradient(linear,left bottom,left top,from(#e3e3e3),to(#fff));background-image:-webkit-linear-gradient(bottom,#e3e3e3,#fff);background-image:-moz-linear-gradient(bottom,#e3e3e3,#fff);background-image:-o-linear-gradient(bottom,#e3e3e3,#fff);background-image:linear-gradient(to top,#e3e3e3,#fff)}.redux-container-image_select .redux-table-container{display:table;table-layout:fixed;width:100%}.redux-container-image_select .redux-image-select{margin:0!important}.redux-container-image_select .redux-image-select .tiles{display:block;background-color:#fff;background-repeat:repeat;width:40px;height:40px}.redux-container-image_select .redux-image-select .tiles,.redux-container-image_select .redux-image-select img{border-color:#d9d9d9}.redux-container-image_select .redux-image-select li:last-child{margin-bottom:0}.redux-container-image_select .redux-image-select input[type=radio]{display:none}.redux-container-image_select .redux-image-select-presets img{width:100%}.redux-container-image_select ul.redux-image-select li{margin:0 10px 3px 10px;display:inline-block;padding:2px 2px;padding-left:0}.redux-container-image_select .redux-image-select-selected{background-color:#f9f9f9}.redux-container-image_select .redux-image-select .tiles,.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select-selected .tiles,.redux-container-image_select .redux-image-select-selected img{border-width:4px;border-style:solid}.redux-container-image_select .redux-image-select-selected .tiles{border-color:#7a7a7a}.redux-info-field{min-height:20px;padding:8px 19px;margin:10px 0;border:1px solid;border-radius:4px;border:1px solid;position:relative}.redux-info-field h1,.redux-info-field h2,.redux-info-field h3,.redux-info-field h4,.redux-info-field h5,.redux-info-field h6{border-bottom:0!important}.redux-info-field h3{color:#777}.redux-info-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-info-field .redux-info-icon i{font-size:2em}.redux-info-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-info-field.redux-normal{background-color:#eee;border-color:#ccc;color:#666}.redux-info-field.redux-normal i{color:#c5c5c5}.redux-info-field.redux-warning{background-color:#fbeba4;border-color:#d7c281;color:#958234}.redux-info-field.redux-warning i{color:#dcca81}.redux-info-field.redux-success{background-color:#c4ee91;border-color:#71af5d;color:#4d7615}.redux-info-field.redux-success i{color:#a0ca6c}.redux-info-field.redux-critical{background-color:#fba1a3;border-color:#b84f5b;color:#981225}.redux-info-field.redux-critical i{color:#dd767d}.redux-info-field.redux-info{background-color:#d3e4f4;border-color:#a9b6c2;color:#5c80a1}.redux-info-field.redux-info i{color:#afc6da}.redux-notice-field{margin:15px 0 0;background-color:#fff;border:0;border-left:4px solid #f3f3f3;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);padding:1px 12px}.redux-notice-field h1,.redux-notice-field h2,.redux-notice-field h3,.redux-notice-field h4,.redux-notice-field h5,.redux-notice-field h6{border-bottom:0!important}.redux-notice-field p{margin:.5em 0;padding:2px}.redux-notice-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-notice-field .redux-info-icon i{font-size:2em}.redux-notice-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-notice-field.redux-info{border-left:4px solid #0099d5}.redux-notice-field.redux-success{border-left:4px solid #7ad03a}.redux-notice-field.redux-warning{border-left:4px solid #fbeba4}.redux-notice-field.redux-critical{border-left:4px solid #dd3d36}.redux-main .redux-field-container.redux-container-info{padding:0}.wp-customizer .hasIcon.redux-info-field .redux-info-desc,.wp-customizer .hasIcon.redux-notice-field .redux-info-desc{display:block;margin-left:43px}.wp-customizer .hasIcon.redux-info-field .redux-info-icon,.wp-customizer .hasIcon.redux-notice-field .redux-info-icon{float:left}.wp-customizer .redux-main .customize-control.customize-control-redux-info{border-bottom:0}.redux-container-link_color .linkColor{display:inline-block;padding-right:10px;padding-bottom:7px}.redux-container-link_color .linkColor strong{display:table;margin-bottom:5px;margin-left:3px;font-size:12px;font-weight:400;color:#999}.redux-main .button.remove-image,.redux-main .removeCSS{margin-left:10px;color:#ef521d}.redux-main .button.remove-image:hover,.redux-main .removeCSS:hover{color:red}.redux-main .upload_button_div{margin-bottom:5px}.redux-main .upload-error{float:left;color:#666;font-size:10px;font-weight:700;text-decoration:none;text-shadow:1px 1px 0 #fff;margin:0 10px 0 0;padding:3px 10px;background:#ffdfec;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .reset-button{font-family:Arial,Verdana,sans-serif;float:left;margin:0;color:#ef521d;border-color:#bbb}.redux-main .redux-option-image{max-height:340px;max-width:340px;padding:5px;margin-bottom:0;margin-top:10px;margin-right:15px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-main .redux-main .upload{width:80%!important}.redux-main .button{margin-top:2px}.redux-container-multi_text ul.redux-multi-text{margin:0;padding:0}.redux-container-multi_text .redux-multi-text-add{clear:both;margin:5px 0}.redux-container-multi_text a.redux-multi-text-remove.deletion{color:red;padding:2px 4px;margin-left:5px}.redux-container-multi_text a.redux-multi-text-remove.deletion:hover{background:red;color:#fff;text-decoration:none}@media screen and (max-width:782px){.redux-container-multi_text input{clear:both}.redux-container-multi_text .redux-multi-text-remove{margin:0;float:right}}.wp-customizer .redux-container-multi_text .button{float:right}.wp-customizer .redux-container-multi_text .redux-multi-text-remove{float:right;margin-bottom:5px}.wp-customizer .redux-container-multi_text ul.redux-multi-text input{width:100%!important}.redux-container-palette label{border:3px solid transparent;border-color:transparent!important;border-radius:0;width:100%!important;display:block}.redux-container-palette label.ui-button.ui-widget{width:95%;background:0 0;padding:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text{display:flex}.redux-container-palette label.ui-button.ui-widget .ui-button-text span{padding:10px;flex-grow:1;font-size:0;line-height:10px;color:transparent;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;text-shadow:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text span:hover{flex-grow:3;font-weight:700;min-width:60px;font-size:12px;line-height:10px;color:#333;text-shadow:0 0 8px #fff,0 0 8px #fff}.redux-container-palette label.ui-state-active{border:3px solid #333!important}.wp-customizer .redux-main .redux-container-palette label{margin-bottom:3px}.redux-main .form-table-section-indented{width:95%;margin-left:5%!important}.redux-main .form-table-section tr:first-of-type th:first-of-type{padding:0!important}.redux-main h3{margin-top:10px}.redux-main .form-table-section-indented>tbody>tr:first-child{display:none}.redux-main .form-table-section-indented>tbody>tr:nth-last-child(2){border-bottom:0}.redux-container-select_image{margin-top:2px;margin-left:5px;width:100%;margin-bottom:0}.redux-preview-image{max-height:250px;max-width:250px;padding:5px;margin-top:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.redux-container-slider .redux-slider-container{margin-left:25px;margin-right:25px;width:200px;display:inline-block;vertical-align:middle}.redux-container-slider .redux-slider-input,.redux-container-slider .redux-slider-select-one,.redux-container-slider .redux-slider-select-two{width:100px!important;text-align:center}.redux-container-slider .redux-slider-label{position:absolute;margin-left:-5px}.redux-container-slider .redux-slider-label-one{position:absolute;margin-left:-22px}.redux-container-slider .redux-slider-label-two{position:absolute;margin-top:-21px;margin-left:245px}@media screen and (max-width:782px){.redux-container-slider input{display:inline-block!important}}@media screen and (max-width:570px){.redux-container-slider{text-align:center}.redux-container-slider .redux-slider-label,.redux-container-slider .select2-container,.redux-container-slider input,.redux-container-slider select{display:block!important;position:inherit;margin:10px auto}.redux-container-slider .redux-slider-container{margin-top:3px;width:80%}}.wp-customizer .redux-container-slider .redux-slider-label{float:left;position:inherit;width:25%;text-align:center;margin-left:0}.wp-customizer .redux-container-slider .redux-slider-input,.wp-customizer .redux-container-slider .redux-slider-select-one,.wp-customizer .redux-container-slider .redux-slider-select-two{width:25%!important}.wp-customizer .redux-container-slider .redux-slider-container{width:70%;margin-right:0;margin-left:5%}.noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-user-select:none;-ms-touch-action:none;-ms-user-select:none;-moz-user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-base{width:100%;height:100%;position:relative}.noUi-origin{position:absolute;right:0;top:0;left:0;bottom:0}.noUi-handle{position:relative;z-index:1}.noUi-stacking .noUi-handle{z-index:10}.noUi-state-tap .noUi-origin{-webkit-transition:left .3s,top .3s;transition:left .3s,top .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-horizontal{height:18px}.noUi-horizontal .noUi-handle{width:34px;height:28px;left:-17px;top:-6px}.noUi-horizontal.noUi-extended{padding:0 15px}.noUi-horizontal.noUi-extended .noUi-origin{right:-15px}.noUi-vertical{width:18px}.noUi-vertical .noUi-handle{width:28px;height:34px;left:-6px;top:-17px}.noUi-vertical.noUi-extended{padding:15px 0}.noUi-vertical.noUi-extended .noUi-origin{bottom:-15px}.noUi-background{background:#fafafa;box-shadow:inset 0 1px 1px #f0f0f0}.noUi-connect{background:#3fb8af;box-shadow:inset 0 0 3px rgba(51,51,51,.45);-webkit-transition:background 450ms;transition:background 450ms}.noUi-origin{border-radius:2px}.noUi-target{border-radius:4px;border:1px solid #d3d3d3;box-shadow:inset 0 1px 1px #f0f0f0,0 3px 6px -5px #bbb}.noUi-target.noUi-connect{box-shadow:inset 0 0 3px rgba(51,51,51,.45),0 3px 6px -5px #bbb}.noUi-dragable{cursor:w-resize}.noUi-vertical .noUi-dragable{cursor:n-resize}.noUi-handle{border:1px solid #d9d9d9;border-radius:3px;background:#fff;cursor:default;box-shadow:inset 0 0 1px #fff,inset 0 1px 7px #ebebeb,0 3px 6px -3px #bbb}.noUi-active{box-shadow:inset 0 0 1px #fff,inset 0 1px 7px #ddd,0 3px 6px -3px #bbb}.noUi-handle:after,.noUi-handle:before{content:"";display:block;position:absolute;height:14px;width:1px;background:#e8e7e6;left:14px;top:6px}.noUi-handle:after{left:17px}.noUi-vertical .noUi-handle:after,.noUi-vertical .noUi-handle:before{width:14px;height:1px;left:6px;top:14px}.noUi-vertical .noUi-handle:after{top:17px}[disabled] .noUi-connect,[disabled].noUi-connect{background:#b8b8b8}[disabled] .noUi-handle{cursor:not-allowed}.noUi-state-blocked .noUi-connect,.noUi-state-blocked.noUi-connect{background:#4fdacf}.redux-container-slides .redux-slides-list .select2-container{margin-bottom:10px;width:100%}.redux-container-slides .ui-accordion-header{margin-bottom:0}.redux-container-slides .full-text,.redux-container-slides .large-text{width:100%}.redux-container-slides .redux-slides-accordion-group{border:1px solid #dfdfdf!important;border-radius:3px!important;margin-top:0!important;margin-bottom:10px;background:#f9f9f9;padding:5px}.redux-container-slides .redux-slides-accordion-group h3{border:1px solid #dfdfdf;cursor:move!important;font-weight:700;padding:0 10px!important;height:40px;line-height:40px!important;background-color:#f1f1f1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec);overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-slides #redux-slides-accordion .redux-slides-image{height:250px;padding:5px;margin-top:10px;margin-bottom:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-container-slides .redux-slides-add{float:right;margin-right:10%;display:block;margin-bottom:10px}.redux-container-slides .redux-slides-remove{color:#ef521d!important;float:right;margin-top:5px}.redux-container-slides .redux-slides-header{font-weight:700}.redux-container-slides .redux_slides_add_remove{margin-bottom:10px}.redux-container-slides input{width:100%!important}.wp-customizer .redux-container-slides .ui-accordion .ui-accordion-content{padding:10px}.redux-container-sortable i.el{cursor:move}.redux-container-sortable label{margin-right:10px;width:300px}.redux-container-sortable label.bugger{margin-bottom:0!important;font-size:12px!important;color:#999}.redux-container-sortable input{margin-right:10px}.redux-container-sortable .checkbox-container{width:364px}.redux-container-sortable .checkbox-container .drag{float:right;margin-left:10px}.redux-container-sortable ul.labeled li{line-height:1.4em!important}.redux-container-sortable li{line-height:30px!important}.redux-container-sortable li.ui-state-highlight{height:30px;width:364px;margin-bottom:13px}.redux-container-sortable li.placeholder{height:30px;margin:10px 0}.wp-customizer .redux-sortable input[type=text]{width:92%}.wp-customizer .redux-sortable i.el{margin-left:5px}.wp-customizer .redux-container-sortable .checkbox-container{width:inherit}.wp-customizer .redux-container-sortable .ui-draggable-handle{margin-left:3%}.redux-container-sorter{margin-right:-20px}.redux-container-sorter ul{background:#f9f9f9;border:1px solid #e3e3e3;min-height:40px;padding:10px 10px 0;width:145px;float:left;margin:0 15px 0 0}.redux-container-sorter ul.filled{opacity:.7;background:#efecec}.redux-container-sorter ul li{border:1px solid #dfdfdf;cursor:move;font-weight:700;margin-bottom:10px!important;padding:0 10px;height:40px;line-height:40px!important;background-color:#f1f1f1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec);overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-sorter ul li h3{margin:0 0 10px;text-align:center;color:#777;text-transform:capitalize;word-wrap:break-word}.redux-container-sorter ul li.placeholder{height:40px}.wp-customizer .redux-container-sorter ul{width:85%;margin:0 0 5px 0}.redux-container-spacing .select_wrapper,.redux-container-spacing select{width:80px!important;float:left}.redux-container-spacing .field-spacing-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width:782px){.redux-container-spacing .field-spacing-input input{display:inline-block!important;width:70px!important}.redux-container-spacing .field-spacing-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-spacing .select_wrapper{margin-top:6px}}.redux-container-spinner .spinner-wrpr{position:relative;display:block;height:30px;overflow:hidden}.redux-container-spinner .spinner-wrpr .spinner-input{position:relative!important;z-index:1;width:45px!important;height:30px!important;background:#e7e7e7!important;border:1px solid #bfbfbf!important;border-right:0!important;border-left:0!important;-webkit-border-radius:0!important;-moz-border-radius:0!important;border-radius:0!important}.redux-container-spinner .ui-spinner{position:static;display:inline}.redux-container-spinner .ui-spinner-buttons{position:absolute;padding:0}.redux-container-spinner .ui-widget .ui-spinner-button{position:absolute;top:0;padding:0 0 30px;overflow:hidden;cursor:pointer;background:-moz-linear-gradient(#fff,#f3f3f3);background:-o-linear-gradient(#fff,#f3f3f3);background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f3f3f3));background:linear-gradient(#fff,#f3f3f3);background-color:#fff;border:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.redux-container-spinner .ui-spinner-button:hover,.redux-container-spinner .ui-state-hover{background:-moz-linear-gradient(#f3f3f3,#fff);background:-o-linear-gradient(#f3f3f3,#fff);background:-webkit-gradient(linear,left top,left bottom,from(#f3f3f3),to(#fff));background:linear-gradient(#f3f3f3,#fff);background-color:#f3f3f3}.redux-container-spinner .ui-corner-tr,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-n{-webkit-border-radius:0 5px 5px 0;-moz-border-radius:0 5px 5px 0;border-radius:0 5px 5px 0}.redux-container-spinner .ui-corner-br,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-s{-webkit-border-radius:5px 0 0 5px;-moz-border-radius:5px 0 0 5px;border-radius:5px 0 0 5px}.redux-container-spinner .ui-spinner-button .ui-icon{top:0;display:block;width:28px;height:28px;margin:0;border:1px solid #b7b7b7}.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-n{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAKCAYAAACXDi8zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNpsjwsKADAIQu3u3tsRY6M5gz7w0AqSQFLdZ3ZRgmf44JQ/EOZ9oYOsiDviVemP2oYoWCwBBgDpO6VXVo3RyQAAAABJRU5ErkJggg==) 10px 10px no-repeat!important}.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-s{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAKCAYAAACXDi8zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADhJREFUeNpi+P//PwM6bmlpwS4IorEKokggC8Il0AVhEv9x6sAmiaz9P05XIUsygmVRAUiAESDAAFHcpVdWtdj/AAAAAElFTkSuQmCC) 10px 10px no-repeat!important}.redux-container-switch .switch-options{min-height:30px;margin-right:10px}.redux-container-switch .switch-options label{cursor:pointer}.redux-container-switch .switch-options input{display:none}.redux-container-switch .cb-disable,.redux-container-switch .cb-enable{padding:0 10px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.redux-container-switch .cb-disable span,.redux-container-switch .cb-enable span{line-height:30px;display:block;font-weight:700;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none;-ms-user-select:none;user-select:none}.redux-container-switch .cb-disable,.redux-container-switch .cb-disable span,.redux-container-switch .cb-enable,.redux-container-switch .cb-enable span{display:block;float:left}.redux-container-switch .cb-enable{border-right:0;border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px}.redux-container-switch .cb-enable.selected{color:#fff}.redux-container-switch .cb-disable{border-left:0;border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;-webkit-border-radius:0 3px 3px 0}.redux-container-switch .cb-disable.selected{color:#fff}.redux-container-text label{display:block;position:relative;font-size:12px!important;text-align:left;color:#999;margin:4px 0 2px 0!important;cursor:default;top:5px;width:100px}.redux-container-text input{clear:left}.redux-container-text .input_wrapper{display:block;position:relative;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:left;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.wp-customizer .redux-container-text .input_wrapper{width:100%;max-width:100%;height:auto}.redux-main .redux-typography-container{display:block;position:relative;margin:0;padding:0;width:100%;max-width:660px}.redux-main .redux-typography-container .clearfix{clear:both}.redux-main .redux-typography-container .clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.redux-main .redux-typography-container .redux-typography-color,.redux-main .redux-typography-container input.wp-picker-default{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;height:24px;padding:0 14px!important;margin-top:0;margin-bottom:0;margin-left:4px!important;font-size:12px!important}.redux-main .redux-typography-container .select_wrapper{display:block;position:relative;float:left;clear:none;margin:0 10px 0 0;width:48%!important;min-width:210px!important;max-width:324px!important;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .select_wrapper:nth-child(odd){margin-right:10px!important}.redux-main .redux-typography-container .select_wrapper:nth-child(even){margin-right:10px!important}.redux-main .redux-typography-container .select_wrapper.typography-family .select2-container{width:100%}.redux-main .redux-typography-container .select_wrapper .redux-typography{font-size:14px!important;display:block;float:left;height:28px!important;line-height:50px!important;padding:0!important;width:100%!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .wp-picker-container{float:left;clear:left;margin-bottom:12px;padding:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-main .redux-typography-container .input_wrapper{display:block;position:relative;margin:0 4px 0 5px;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:none;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container .input_wrapper.font-size{margin-left:0}.redux-main .redux-typography-container .input_wrapper input.mini{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;width:78%;text-align:center;margin:0;height:28px;top:3px;padding:0 2px 0 5px;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .redux-typography-container .picker-wrapper{display:block;display:block;position:relative;margin:0 4px 0 5px;margin:0;padding:0;width:23%;width:100%;max-width:23%;min-width:70px;min-width:100%;clear:none;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container label{display:block;position:relative;font-size:12px!important;text-align:left;color:#999;margin:4px 0 2px 0!important;cursor:default}.redux-main .redux-typography-container .typography-preview{display:none;width:100%;border:1px dotted #d3d3d3;max-width:850px;padding:10px;font-size:10pt;height:auto;margin:5px 0 10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.redux-main .redux-typography-container .typography-color{border:0 none;margin:0}.redux-main .redux-typography-container ::-webkit-input-placeholder{line-height:19px}@media screen and (max-width:540px){.redux-main .redux-main .redux-typography-container{max-width:230px;margin:0 auto}.redux-main .redux-main .redux-typography-container .select_wrapper{max-width:210px;min-width:210px;width:210px;margin-left:0!important;margin-right:0!important}.redux-main .redux-main .redux-typography-container .input_wrapper{max-width:101px;min-width:101px;width:101px;margin-left:0!important;margin-right:5px!important}.redux-main .redux-main .redux-typography-container .input_wrapper input.mini{width:73%}.redux-main .redux-main .redux-typography-container .input-append .add-on{width:30%;padding:5px!important}.redux-main .redux-main .redux-main .wp-picker-container .wp-picker-input-wrap{margin-top:7px}}@media screen and (max-width:360px){.redux-main .redux-typography-container .iris-picker .iris-square{margin-right:3%}}.wp-customizer .redux-typography-container .input_wrapper{width:40%;max-width:40%;min-width:20%}.wp-customizer .redux-typography-container .input_wrapper input.mini{width:70%}.wp-customizer .redux-typography-container .select_wrapper{width:100%!important}.redux-main input.redux-color{float:left;width:70px;margin-left:5px}.redux-main input.color-transparency{margin-left:10px;margin-right:3px}.redux-main input.wp-color-picker{width:80px!important}.redux-main .section-color .controls{width:345px}.redux-main .section-color .explain{width:225px}.redux-main .iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0 0!important;right:-3px;left:-3px;border:4px solid #aaa!important;border-width:4px 3px;width:auto;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.redux-main .iris-picker .iris-slider-offset{position:absolute;top:2px;left:0;right:0;bottom:4px;width:28px;background:0 0!important;border:0!important;height:auto}.redux-main .wp-picker-container{display:inline-block;outline:0}.redux-main .wp-picker-container input{margin-bottom:inherit;margin-top:inherit;padding:3px 5px}.redux-main .wp-picker-container .wp-color-result{outline:0;margin:0;height:24px!important;margin:0 6px 6px 0!important}.redux-main .wp-picker-container .wp-picker-default{padding:0 10px 1px}.redux-main .wp-picker-container .wp-color-result-text{line-height:22px}.redux-main .redux-color-gradient{line-height:24px}.redux-main .color-transparency-check{line-height:1;margin:0!important;padding-top:10px}.redux-main .wp-picker-clear{margin-top:0!important}.wp-customizer .redux-main .redux-typography-container .redux-typography-color,.wp-customizer .redux-main .redux-typography-container input.wp-picker-default,.wp-customizer .redux-main input.wp-picker-default{padding:0 4px!important}.wp-customizer .redux-main input.wp-color-picker{width:65px!important;margin-left:5px!important}.redux-main .button.remove-image,.redux-main .removeCSS{margin-left:10px;color:#ef521d}.redux-main .button.remove-image:hover,.redux-main .removeCSS:hover{color:red}.redux-main .upload_button_div{margin-bottom:5px}.redux-main .upload-error{float:left;color:#666;font-size:10px;font-weight:700;text-decoration:none;text-shadow:1px 1px 0 #fff;margin:0 10px 0 0;padding:3px 10px;background:#ffdfec;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .reset-button{font-family:Arial,Verdana,sans-serif;float:left;margin:0;color:#ef521d;border-color:#bbb}.redux-main .redux-option-image{max-height:340px;max-width:340px;padding:5px;margin-bottom:0;margin-top:10px;margin-right:15px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-main .redux-main .upload{width:80%!important}.redux-main .button{margin-top:2px} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/redux-vendor.css b/redux/ReduxCore/assets/css/redux-vendor.css new file mode 100644 index 0000000..f0e99d1 --- /dev/null +++ b/redux/ReduxCore/assets/css/redux-vendor.css @@ -0,0 +1 @@ +.qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;direction:ltr;box-shadow:none;padding:0}.qtip-content{position:relative;padding:5px 9px;overflow:hidden;text-align:left;word-wrap:break-word}.qtip-titlebar{position:relative;padding:5px 35px 5px 10px;overflow:hidden;border-width:0 0 1px;font-weight:700}.qtip-titlebar+.qtip-content{border-top-width:0!important}.qtip-close{position:absolute;right:-9px;top:-9px;cursor:pointer;outline:0;border-width:1px;border-style:solid;border-color:transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-icon .ui-icon,.qtip-titlebar .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:14px;text-align:center;text-indent:0;font:normal bold 10px/13px Tahoma,sans-serif;color:inherit;background:-100em -100em no-repeat}.qtip-default{border-width:1px;border-style:solid;border-color:#F1D031;background-color:#FFFFA3;color:#555}.qtip-default .qtip-titlebar{background-color:#FFEF93}.qtip-default .qtip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111}/*! Light tooltip style */.qtip-light{background-color:#fff;border-color:#E2E2E2;color:#454545}.qtip-light .qtip-titlebar{background-color:#f1f1f1}/*! Dark tooltip style */.qtip-dark{background-color:#505050;border-color:#303030;color:#f3f3f3}.qtip-dark .qtip-titlebar{background-color:#404040}.qtip-dark .qtip-icon{border-color:#444}.qtip-dark .qtip-titlebar .ui-state-hover{border-color:#303030}/*! Cream tooltip style */.qtip-cream{background-color:#FBF7AA;border-color:#F9E98E;color:#A27D35}.qtip-cream .qtip-titlebar{background-color:#F0DE7D}.qtip-cream .qtip-close .qtip-icon{background-position:-82px 0}/*! Red tooltip style */.qtip-red{background-color:#F78B83;border-color:#D95252;color:#912323}.qtip-red .qtip-titlebar{background-color:#F06D65}.qtip-red .qtip-close .qtip-icon{background-position:-102px 0}.qtip-red .qtip-icon,.qtip-red .qtip-titlebar .ui-state-hover{border-color:#D95252}/*! Green tooltip style */.qtip-green{background-color:#CAED9E;border-color:#90D93F;color:#3F6219}.qtip-green .qtip-titlebar{background-color:#B0DE78}.qtip-green .qtip-close .qtip-icon{background-position:-42px 0}/*! Blue tooltip style */.qtip-blue{background-color:#E5F6FE;border-color:#ADD9ED;color:#5E99BD}.qtip-blue .qtip-titlebar{background-color:#D0E9F5}.qtip-blue .qtip-close .qtip-icon{background-position:-2px 0}.qtip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,.15)}.qtip-bootstrap,.qtip-rounded,.qtip-tipsy{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.qtip-rounded .qtip-titlebar{-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.qtip-youtube{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;color:#fff;border-width:0;background:#4A4A4A;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,#000));background-image:-webkit-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-moz-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-ms-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-o-linear-gradient(top,#4A4A4A 0,#000 100%)}.qtip-youtube .qtip-titlebar{background-color:transparent}.qtip-youtube .qtip-content{padding:.75em;font:12px arial,sans-serif;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);-ms-filter:"progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);"}.qtip-youtube .qtip-icon{border-color:#222}.qtip-youtube .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-jtools{background:#232323;background:rgba(0,0,0,.7);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-linear-gradient(top,#717171,#232323);background-image:-ms-linear-gradient(top,#717171,#232323);background-image:-o-linear-gradient(top,#717171,#232323);border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333}.qtip-jtools .qtip-titlebar{background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)"}.qtip-jtools .qtip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)"}.qtip-jtools .qtip-content,.qtip-jtools .qtip-titlebar{background:0 0;color:#fff;border:0 dashed transparent}.qtip-jtools .qtip-icon{border-color:#555}.qtip-jtools .qtip-titlebar .ui-state-hover{border-color:#333}.qtip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,.4);box-shadow:4px 4px 5px rgba(0,0,0,.4);background-color:#D9D9C2;color:#111;border:0 dashed transparent}.qtip-cluetip .qtip-titlebar{background-color:#87876A;color:#fff;border:0 dashed transparent}.qtip-cluetip .qtip-icon{border-color:#808064}.qtip-cluetip .qtip-titlebar .ui-state-hover{border-color:#696952;color:#696952}.qtip-tipsy{background:#000;background:rgba(0,0,0,.87);color:#fff;border:0 solid transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:700;line-height:16px;text-shadow:0 1px #000}.qtip-tipsy .qtip-titlebar{padding:6px 35px 0 10px;background-color:transparent}.qtip-tipsy .qtip-content{padding:6px 10px}.qtip-tipsy .qtip-icon{border-color:#222;text-shadow:none}.qtip-tipsy .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-tipped{border:3px solid #959FA9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#F9F9F9;color:#454545;font-weight:400;font-family:serif}.qtip-tipped .qtip-titlebar{border-bottom-width:0;color:#fff;background:#3A79B8;background-image:-webkit-gradient(linear,left top,left bottom,from(#3A79B8),to(#2E629D));background-image:-webkit-linear-gradient(top,#3A79B8,#2E629D);background-image:-moz-linear-gradient(top,#3A79B8,#2E629D);background-image:-ms-linear-gradient(top,#3A79B8,#2E629D);background-image:-o-linear-gradient(top,#3A79B8,#2E629D);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)"}.qtip-tipped .qtip-icon{border:2px solid #285589;background:#285589}.qtip-tipped .qtip-icon .ui-icon{background-color:#FBFBFB;color:#555}.qtip-bootstrap{font-size:14px;line-height:20px;color:#333;padding:1px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.qtip-bootstrap .qtip-titlebar{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.qtip-bootstrap .qtip-titlebar .qtip-close{right:11px;top:45%;border-style:none}.qtip-bootstrap .qtip-content{padding:9px 14px}.qtip-bootstrap .qtip-icon{background:0 0}.qtip-bootstrap .qtip-icon .ui-icon{width:auto;height:auto;float:right;font-size:20px;font-weight:700;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.qtip-bootstrap .qtip-icon .ui-icon:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}.qtip:not(.ie9haxors) div.qtip-content,.qtip:not(.ie9haxors) div.qtip-titlebar{filter:none;-ms-filter:none}.qtip .qtip-tip{margin:0 auto;overflow:hidden;z-index:10}.qtip .qtip-tip,x:-o-prefocus{visibility:hidden}.qtip .qtip-tip,.qtip .qtip-tip .qtip-vml,.qtip .qtip-tip canvas{position:absolute;color:#123456;background:0 0;border:0 dashed transparent}.qtip .qtip-tip canvas{top:0;left:0}.qtip .qtip-tip .qtip-vml{behavior:url(#default#VML);display:inline-block;visibility:visible}#qtip-overlay{position:fixed;left:0;top:0;width:100%;height:100%}#qtip-overlay.blurs{cursor:pointer}#qtip-overlay div{position:absolute;left:0;top:0;width:100%;height:100%;background-color:#000;opacity:.7;filter:alpha(opacity=70);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"}.qtipmodal-ie6fix{position:absolute!important}.sp-container{position:absolute;top:0;left:0;display:inline-block;z-index:9999994;overflow:hidden}.sp-container.sp-flat{position:relative}.sp-container,.sp-container *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.sp-top{position:relative;width:100%;display:inline-block}.sp-top-inner{position:absolute;top:0;left:0;bottom:0;right:0}.sp-color{position:absolute;top:0;left:0;bottom:0;right:20%}.sp-hue{position:absolute;top:0;right:0;bottom:0;left:84%;height:100%}.sp-clear-enabled .sp-hue{top:33px;height:77.5%}.sp-fill{padding-top:80%}.sp-sat,.sp-val{position:absolute;top:0;left:0;right:0;bottom:0}.sp-alpha-enabled .sp-top{margin-bottom:18px}.sp-alpha-enabled .sp-alpha{display:block}.sp-alpha-handle{position:absolute;top:-4px;bottom:-4px;width:6px;left:50%;cursor:pointer;border:1px solid #000;background:#fff;opacity:.8}.sp-alpha{display:none;bottom:-14px;right:0;left:0;height:8px}.sp-alpha-inner{border:1px solid #333}.sp-clear{display:none}.sp-clear.sp-clear-display{background-position:center}.sp-clear-enabled .sp-clear{display:block;position:absolute;top:0;right:0;bottom:0;left:84%;height:28px}.sp-alpha,.sp-alpha-handle,.sp-clear,.sp-container,.sp-container button,.sp-container.sp-dragging .sp-input,.sp-dragger,.sp-preview,.sp-replacer,.sp-slider{-webkit-user-select:none;-moz-user-select:-moz-none;-o-user-select:none;user-select:none}.sp-container.sp-buttons-disabled .sp-button-container,.sp-container.sp-input-disabled .sp-input-container,.sp-container.sp-palette-buttons-disabled .sp-palette-button-container,.sp-initial-disabled .sp-initial,.sp-palette-disabled .sp-palette-container,.sp-palette-only .sp-picker-container{display:none}.sp-sat{background-image:-webkit-gradient(linear,0 0,100% 0,from(#FFF),to(rgba(204,154,129,0)));background-image:-webkit-linear-gradient(left,#FFF,rgba(204,154,129,0));background-image:-moz-linear-gradient(left,#fff,rgba(204,154,129,0));background-image:-o-linear-gradient(left,#fff,rgba(204,154,129,0));background-image:-ms-linear-gradient(left,#fff,rgba(204,154,129,0));background-image:linear-gradient(to right,#fff,rgba(204,154,129,0));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)";filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#FFFFFFFF', endColorstr='#00CC9A81')}.sp-val{background-image:-webkit-gradient(linear,0 100%,0 0,from(#000),to(rgba(204,154,129,0)));background-image:-webkit-linear-gradient(bottom,#000,rgba(204,154,129,0));background-image:-moz-linear-gradient(bottom,#000,rgba(204,154,129,0));background-image:-o-linear-gradient(bottom,#000,rgba(204,154,129,0));background-image:-ms-linear-gradient(bottom,#000,rgba(204,154,129,0));background-image:linear-gradient(to top,#000,rgba(204,154,129,0));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81', endColorstr='#FF000000')}.sp-hue{background:-moz-linear-gradient(top,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);background:-ms-linear-gradient(top,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);background:-o-linear-gradient(top,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(.17,#ff0),color-stop(.33,#0f0),color-stop(.5,#0ff),color-stop(.67,#00f),color-stop(.83,#f0f),to(red));background:-webkit-linear-gradient(top,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.sp-1{height:17%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000', endColorstr='#ffff00')}.sp-2{height:16%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00', endColorstr='#00ff00')}.sp-3{height:17%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ff00', endColorstr='#00ffff')}.sp-4{height:17%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffff', endColorstr='#0000ff')}.sp-5{height:16%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0000ff', endColorstr='#ff00ff')}.sp-6{height:17%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff', endColorstr='#ff0000')}.sp-hidden{display:none!important}.sp-cf:after,.sp-cf:before{content:"";display:table}.sp-cf:after{clear:both}@media (max-device-width:480px){.sp-color{right:40%}.sp-hue{left:63%}.sp-fill{padding-top:60%}}.sp-dragger{border-radius:5px;height:5px;width:5px;border:1px solid #fff;background:#000;cursor:pointer;position:absolute;top:0;left:0}.sp-slider{position:absolute;top:0;cursor:pointer;height:3px;left:-1px;right:-1px;border:1px solid #000;background:#fff;opacity:.8}.sp-container{border-radius:0;background-color:#ECECEC;border:1px solid #f0c49B;padding:0}.sp-clear,.sp-color,.sp-container,.sp-container button,.sp-container input,.sp-hue{font:400 12px "Lucida Grande","Lucida Sans Unicode","Lucida Sans",Geneva,Verdana,sans-serif;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.sp-top{margin-bottom:3px}.sp-clear,.sp-color,.sp-hue{border:1px solid #666}.sp-input-container{float:right;width:100px;margin-bottom:4px}.sp-initial-disabled .sp-input-container{width:100%}.sp-input{font-size:12px!important;border:1px inset;padding:4px 5px;margin:0;width:100%;background:0 0;border-radius:3px;color:#222}.sp-input:focus{border:1px solid orange}.sp-input.sp-validation-error{border:1px solid red;background:#fdd}.sp-palette-container,.sp-picker-container{float:left;position:relative;padding:10px 10px 300px;margin-bottom:-290px}.sp-picker-container{width:172px;border-left:solid 1px #fff}.sp-palette-container{border-right:solid 1px #ccc}.sp-palette-only .sp-palette-container{border:0}.sp-palette .sp-thumb-el{display:block;position:relative;float:left;cursor:pointer}.sp-palette .sp-thumb-el.sp-thumb-active,.sp-palette .sp-thumb-el:hover{border-color:orange}.sp-initial{float:left;border:1px solid #333}.sp-initial span{width:30px;height:25px;border:none;display:block;float:left;margin:0}.sp-initial .sp-clear-display{background-position:center}.sp-button-container,.sp-palette-button-container{float:right}.sp-replacer{margin:0;overflow:hidden;cursor:pointer;padding:4px;display:inline-block;border:1px solid #91765d;background:#eee;color:#333;vertical-align:middle}.sp-replacer.sp-active,.sp-replacer:hover{border-color:#F0C49B;color:#111}.sp-replacer.sp-disabled{cursor:default;border-color:silver;color:silver}.sp-dd{padding:2px 0;height:16px;line-height:16px;float:left;font-size:10px}.sp-preview{width:25px;height:20px;border:1px solid #222;margin-right:5px;float:left;z-index:0}.sp-palette{max-width:220px}.sp-palette .sp-thumb-el{width:16px;height:16px;margin:2px 1px;border:1px solid #d0d0d0}.sp-container{padding-bottom:0}.sp-container button{background-color:#eee;background-image:-webkit-linear-gradient(top,#eee,#ccc);background-image:-moz-linear-gradient(top,#eee,#ccc);background-image:-ms-linear-gradient(top,#eee,#ccc);background-image:-o-linear-gradient(top,#eee,#ccc);background-image:linear-gradient(to bottom,#eee,#ccc);border:1px solid #ccc;border-bottom:1px solid #bbb;border-radius:3px;color:#333;font-size:14px;line-height:1;padding:5px 4px;text-align:center;text-shadow:0 1px 0 #eee;vertical-align:middle}.sp-container button:hover{background-color:#ddd;background-image:-webkit-linear-gradient(top,#ddd,#bbb);background-image:-moz-linear-gradient(top,#ddd,#bbb);background-image:-ms-linear-gradient(top,#ddd,#bbb);background-image:-o-linear-gradient(top,#ddd,#bbb);background-image:linear-gradient(to bottom,#ddd,#bbb);border:1px solid #bbb;border-bottom:1px solid #999;cursor:pointer;text-shadow:0 1px 0 #ddd}.sp-container button:active{border:1px solid #aaa;border-bottom:1px solid #888;-webkit-box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee;-moz-box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee;-ms-box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee;-o-box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee;box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee}.sp-cancel{font-size:11px;color:#d93f3f!important;margin:0 5px 0 0;padding:2px;vertical-align:middle;text-decoration:none}.sp-cancel:hover{color:#d93f3f!important;text-decoration:underline}.sp-palette span.sp-thumb-active,.sp-palette span:hover{border-color:#000}.sp-alpha,.sp-preview,.sp-thumb-el{position:relative;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.sp-alpha-inner,.sp-preview-inner,.sp-thumb-inner{display:block;position:absolute;top:0;left:0;bottom:0;right:0}.sp-palette .sp-thumb-inner{background-position:50% 50%;background-repeat:no-repeat}.sp-palette .sp-thumb-light.sp-thumb-active .sp-thumb-inner{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiYBhsgJFMffxAXABlN5JruT4Q3wfi/0DsT64h8UD8HmpIPCWG/KemIfOJCUB+Aoacx6EGBZyHBqI+WsDCwuQ9mhxeg2A210Ntfo8klk9sOMijaURm7yc1UP2RNCMbKE9ODK1HM6iegYLkfx8pligC9lCD7KmRof0ZhjQACDAAceovrtpVBRkAAAAASUVORK5CYII=)}.sp-palette .sp-thumb-dark.sp-thumb-active .sp-thumb-inner{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=)}.sp-clear-display{background-repeat:no-repeat;background-position:center;background-image:url(data:image/gif;base64,R0lGODlhFAAUAPcAAAAAAJmZmZ2dnZ6enqKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq/Hx8fLy8vT09PX19ff39/j4+Pn5+fr6+vv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAihAP9FoPCvoMGDBy08+EdhQAIJCCMybCDAAYUEARBAlFiQQoMABQhKUJBxY0SPICEYHBnggEmDKAuoPMjS5cGYMxHW3IiT478JJA8M/CjTZ0GgLRekNGpwAsYABHIypcAgQMsITDtWJYBR6NSqMico9cqR6tKfY7GeBCuVwlipDNmefAtTrkSzB1RaIAoXodsABiZAEFB06gIBWC1mLVgBa0AAOw==)}.select2-container{margin:0;position:relative;display:inline-block;zoom:1;vertical-align:middle}.select2-container,.select2-drop,.select2-search,.select2-search input{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.select2-container .select2-choice{display:block;height:26px;padding:0 0 0 8px;overflow:hidden;position:relative;border:1px solid #aaa;white-space:nowrap;line-height:26px;color:#444;text-decoration:none;border-radius:4px;background-clip:padding-box;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#eee),color-stop(.5,#fff));background-image:-webkit-linear-gradient(center bottom,#eee 0,#fff 50%);background-image:-moz-linear-gradient(center bottom,#eee 0,#fff 50%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);background-image:linear-gradient(to top,#eee 0,#fff 50%)}html[dir=rtl] .select2-container .select2-choice{padding:0 8px 0 0}.select2-container.select2-drop-above .select2-choice{border-bottom-color:#aaa;border-radius:0 0 4px 4px;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#eee),color-stop(.9,#fff));background-image:-webkit-linear-gradient(center bottom,#eee 0,#fff 90%);background-image:-moz-linear-gradient(center bottom,#eee 0,#fff 90%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);background-image:linear-gradient(to bottom,#eee 0,#fff 90%)}.select2-container.select2-allowclear .select2-choice .select2-chosen{margin-right:42px}.select2-container .select2-choice>.select2-chosen{margin-right:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;float:none;width:auto}html[dir=rtl] .select2-container .select2-choice>.select2-chosen{margin-left:26px;margin-right:0}.select2-container .select2-choice abbr{display:none;width:12px;height:12px;position:absolute;right:24px;top:8px;font-size:1px;text-decoration:none;border:0;background:url(select2.png) right top no-repeat;cursor:pointer;outline:0}.select2-container.select2-allowclear .select2-choice abbr{display:inline-block}.select2-container .select2-choice abbr:hover{background-position:right -11px;cursor:pointer}.select2-drop-mask{border:0;margin:0;padding:0;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:9998;background-color:#fff;filter:alpha(opacity=0)}.select2-drop{width:100%;margin-top:-1px;position:absolute;z-index:9999;top:100%;background:#fff;color:#000;border:1px solid #aaa;border-top:0;border-radius:0 0 4px 4px;-webkit-box-shadow:0 4px 5px rgba(0,0,0,.15);box-shadow:0 4px 5px rgba(0,0,0,.15)}.select2-drop.select2-drop-above{margin-top:1px;border-top:1px solid #aaa;border-bottom:0;border-radius:4px 4px 0 0;-webkit-box-shadow:0 -4px 5px rgba(0,0,0,.15);box-shadow:0 -4px 5px rgba(0,0,0,.15)}.select2-drop-active{border:1px solid #5897fb;border-top:none}.select2-drop.select2-drop-above.select2-drop-active{border-top:1px solid #5897fb}.select2-drop-auto-width{border-top:1px solid #aaa;width:auto}.select2-drop-auto-width .select2-search{padding-top:4px}.select2-container .select2-choice .select2-arrow{display:inline-block;width:18px;height:100%;position:absolute;right:0;top:0;border-left:1px solid #aaa;border-radius:0 4px 4px 0;background:#ccc;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#ccc),color-stop(.6,#eee)) #ccc;background:-webkit-linear-gradient(center bottom,#ccc 0,#eee 60%) #ccc;background:-moz-linear-gradient(center bottom,#ccc 0,#eee 60%) #ccc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#cccccc', GradientType=0);background:linear-gradient(to top,#ccc 0,#eee 60%) #ccc}html[dir=rtl] .select2-container .select2-choice .select2-arrow{left:0;right:auto;border-left:none;border-right:1px solid #aaa;border-radius:4px 0 0 4px}.select2-container .select2-choice .select2-arrow b{display:block;width:100%;height:100%;background:url(select2.png) 0 1px no-repeat}html[dir=rtl] .select2-container .select2-choice .select2-arrow b{background-position:2px 1px}.select2-search{display:inline-block;width:100%;min-height:26px;margin:0;padding-left:4px;padding-right:4px;position:relative;z-index:10000;white-space:nowrap}.select2-search input{width:100%;height:auto!important;min-height:26px;padding:4px 20px 4px 5px;margin:0;outline:0;font-family:sans-serif;font-size:1em;border:1px solid #aaa;border-radius:0;-webkit-box-shadow:none;box-shadow:none;background:url(select2.png) 100% -22px no-repeat #fff;background:url(select2.png) 100% -22px no-repeat,linear-gradient(to bottom,#fff 85%,#eee 99%)}html[dir=rtl] .select2-search input{padding:4px 5px 4px 20px;background:url(select2.png) -37px -22px no-repeat #fff;background:url(select2.png) -37px -22px no-repeat,linear-gradient(to bottom,#fff 85%,#eee 99%)}.select2-drop.select2-drop-above .select2-search input{margin-top:4px}.select2-search input.select2-active{background:url(select2-spinner.gif) 100% no-repeat #fff;background:url(select2-spinner.gif) 100% no-repeat,linear-gradient(to bottom,#fff 85%,#eee 99%)}.select2-container-active .select2-choice,.select2-container-active .select2-choices{border:1px solid #5897fb;outline:0;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.select2-dropdown-open .select2-choice{border-bottom-color:transparent;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;border-bottom-left-radius:0;border-bottom-right-radius:0;background-color:#eee;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#fff),color-stop(.5,#eee));background-image:-webkit-linear-gradient(center bottom,#fff 0,#eee 50%);background-image:-moz-linear-gradient(center bottom,#fff 0,#eee 50%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);background-image:linear-gradient(to top,#fff 0,#eee 50%)}.select2-dropdown-open.select2-drop-above .select2-choice,.select2-dropdown-open.select2-drop-above .select2-choices{border:1px solid #5897fb;border-top-color:transparent;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(.5,#eee));background-image:-webkit-linear-gradient(center top,#fff 0,#eee 50%);background-image:-moz-linear-gradient(center top,#fff 0,#eee 50%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);background-image:linear-gradient(to bottom,#fff 0,#eee 50%)}.select2-dropdown-open .select2-choice .select2-arrow{background:0 0;border-left:none;filter:none}html[dir=rtl] .select2-dropdown-open .select2-choice .select2-arrow{border-right:none}.select2-dropdown-open .select2-choice .select2-arrow b{background-position:-18px 1px}html[dir=rtl] .select2-dropdown-open .select2-choice .select2-arrow b{background-position:-16px 1px}.select2-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.select2-results{max-height:200px;padding:0 0 0 4px;margin:4px 4px 4px 0;position:relative;overflow-x:hidden;overflow-y:auto;-webkit-tap-highlight-color:transparent}html[dir=rtl] .select2-results{padding:0 4px 0 0;margin:4px 0 4px 4px}.select2-results ul.select2-result-sub{margin:0;padding-left:0}.select2-results li{list-style:none;display:list-item;background-image:none}.select2-results li.select2-result-with-children>.select2-result-label{font-weight:700}.select2-results .select2-result-label{padding:3px 7px 4px;margin:0;cursor:pointer;min-height:1em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select2-results-dept-1 .select2-result-label{padding-left:20px}.select2-results-dept-2 .select2-result-label{padding-left:40px}.select2-results-dept-3 .select2-result-label{padding-left:60px}.select2-results-dept-4 .select2-result-label{padding-left:80px}.select2-results-dept-5 .select2-result-label{padding-left:100px}.select2-results-dept-6 .select2-result-label{padding-left:110px}.select2-results-dept-7 .select2-result-label{padding-left:120px}.select2-results .select2-highlighted{background:#3875d7;color:#fff}.select2-results li em{background:#feffde;font-style:normal}.select2-results .select2-highlighted em{background:0 0}.select2-results .select2-highlighted ul{background:#fff;color:#000}.select2-results .select2-ajax-error,.select2-results .select2-no-results,.select2-results .select2-searching,.select2-results .select2-selection-limit{background:#f4f4f4;display:list-item;padding-left:5px}.select2-results .select2-disabled.select2-highlighted{color:#666;background:#f4f4f4;display:list-item;cursor:default}.select2-results .select2-disabled{background:#f4f4f4;display:list-item;cursor:default}.select2-results .select2-selected{display:none}.select2-more-results.select2-active{background:url(select2-spinner.gif) 100% no-repeat #f4f4f4}.select2-results .select2-ajax-error{background:rgba(255,50,50,.2)}.select2-more-results{background:#f4f4f4;display:list-item}.select2-container.select2-container-disabled .select2-choice{background-color:#f4f4f4;background-image:none;border:1px solid #ddd;cursor:default}.select2-container.select2-container-disabled .select2-choice .select2-arrow{background-color:#f4f4f4;background-image:none;border-left:0}.select2-container.select2-container-disabled .select2-choice abbr{display:none}.select2-container-multi .select2-choices{height:auto!important;height:1%;margin:0;padding:0 5px 0 0;position:relative;border:1px solid #aaa;cursor:text;overflow:hidden;background-color:#fff;background-image:-webkit-gradient(linear,0 0,0 100%,color-stop(1%,#eee),color-stop(15%,#fff));background-image:-webkit-linear-gradient(top,#eee 1%,#fff 15%);background-image:-moz-linear-gradient(top,#eee 1%,#fff 15%);background-image:linear-gradient(to bottom,#eee 1%,#fff 15%)}html[dir=rtl] .select2-container-multi .select2-choices{padding:0 0 0 5px}.select2-locked{padding:3px 5px!important}.select2-container-multi .select2-choices{min-height:26px}.select2-container-multi.select2-container-active .select2-choices{border:1px solid #5897fb;outline:0;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.select2-container-multi .select2-choices li{float:left;list-style:none}html[dir=rtl] .select2-container-multi .select2-choices li{float:right}.select2-container-multi .select2-choices .select2-search-field{margin:0;padding:0;white-space:nowrap}.select2-container-multi .select2-choices .select2-search-field input{padding:5px;margin:1px 0;font-family:sans-serif;font-size:100%;color:#666;outline:0;border:0;-webkit-box-shadow:none;box-shadow:none;background:0 0!important}.select2-container-multi .select2-choices .select2-search-field input.select2-active{background:url(select2-spinner.gif) 100% no-repeat #fff!important}.select2-default{color:#999!important}.select2-container-multi .select2-choices .select2-search-choice{padding:3px 5px 3px 18px;margin:3px 0 3px 5px;position:relative;line-height:13px;color:#333;cursor:default;border:1px solid #aaa;border-radius:3px;-webkit-box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);background-clip:padding-box;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#e4e4e4;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);background-image:-webkit-gradient(linear,0 0,0 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(to bottom,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%)}html[dir=rtl] .select2-container-multi .select2-choices .select2-search-choice{margin:3px 5px 3px 0;padding:3px 18px 3px 5px}.select2-container-multi .select2-choices .select2-search-choice .select2-chosen{cursor:default}.select2-container-multi .select2-choices .select2-search-choice-focus{background:#d4d4d4}.select2-search-choice-close{display:block;width:12px;height:13px;position:absolute;right:3px;top:4px;font-size:1px;outline:0;background:url(select2.png) right top no-repeat}html[dir=rtl] .select2-search-choice-close{right:auto;left:3px}.select2-container-multi .select2-search-choice-close{left:3px}html[dir=rtl] .select2-container-multi .select2-search-choice-close{left:auto;right:2px}.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover,.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close{background-position:right -11px}.select2-container-multi.select2-container-disabled .select2-choices{background-color:#f4f4f4;background-image:none;border:1px solid #ddd;cursor:default}.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice{padding:3px 5px;border:1px solid #ddd;background-image:none;background-color:#f4f4f4}.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close{display:none;background:0 0}.select2-result-selectable .select2-match,.select2-result-unselectable .select2-match{text-decoration:underline}.select2-offscreen,.select2-offscreen:focus{clip:rect(0 0 0 0)!important;width:1px!important;height:1px!important;border:0!important;margin:0!important;padding:0!important;overflow:hidden!important;position:absolute!important;outline:0!important;left:0!important;top:0!important}.select2-display-none{display:none}.select2-measure-scrollbar{position:absolute;top:-10000px;left:-10000px;width:100px;height:100px;overflow:scroll}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:2dppx){.select2-container .select2-choice .select2-arrow b,.select2-container .select2-choice abbr,.select2-search input,.select2-search-choice-close{background-image:url(select2x2.png)!important;background-repeat:no-repeat!important;background-size:60px 40px!important}.select2-search input{background-position:100% -21px!important}} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/rtl.css b/redux/ReduxCore/assets/css/rtl.css new file mode 100644 index 0000000..51af4cc --- /dev/null +++ b/redux/ReduxCore/assets/css/rtl.css @@ -0,0 +1 @@ +html[dir="rtl"] .redux-container .redux-action_bar{float:left}.redux-container .expand_options,.redux-sidebar,.cb-enable,.cb-disable,.cb-enable span,.cb-disable span,#redux-footer #redux-share{float:right}.redux-main{border-left:0px;margin-left:0px;border-right:1px solid #d8d8d8;margin-right:201px}.redux-main .redux-typography-container .typography-preview{text-align:center !important;direction:ltr !important}.redux-group-tab-link-a{padding-left:0px;padding-right:30px}.redux-group-tab-link-a i{padding-left:10px;padding-right:5px}.redux-group-tab-link-a span.group_title{padding-left:0px;padding-right:30px}.redux_slider{margin-left:0px;margin-right:15px}.redux-action_bar{float:left !important}.expand_options{float:right !important;border:1px solid #f00}.redux_field_th{padding:20px 0 20px 10px !important}.field-desc{text-align:right}.redux-container-ace_editor,.redux-container-border,.redux-container-spacing,.redux-container-dimensions{direction:ltr !important}.redux-container-border .field-border-input,.redux-container-border .redux-color-init,.redux-container-border .redux-border-style,.redux-container-sorter,.redux-container-border,.redux-container-spacing,.redux-container-spacing .field-spacing-input,.redux-container-dimensions .redux-dimensions-container,.redux-container-text label,.redux-container-checkbox input,.typography-font-bar,.typography-style-bar,.redux-color.redux-typography-color,.redux-typography-subsets{float:right !important}.input-append{margin-right:10px;direction:ltr !important}.redux-container-slider,.redux-container-spinner,.redux-container-switch{direction:ltr !important;float:right;margin:0}.redux-info-field .redux-info-icon{margin-left:15px}#redux-share{float:right !important}.redux-sidebar .redux-menu-warning,.redux-sidebar .redux-menu-error,.redux-sidebar .hasSubSections .extraIconSubsections{float:left}.select2-search-choice-close{left:23px !important} diff --git a/redux/ReduxCore/assets/css/rtl.css.map b/redux/ReduxCore/assets/css/rtl.css.map new file mode 100644 index 0000000..0b11da9 --- /dev/null +++ b/redux/ReduxCore/assets/css/rtl.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AACI,kCAAkB;EACd,KAAK,EAAE,IAAI;;AAInB;;;;;;0BAM2B;EACvB,KAAK,EAAE,KAAK;;AAGhB,WAAY;EACR,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,GAAG;EAChB,YAAY,EAAE,iBAAiB;EAC/B,YAAY,EAAE,KAAK;;AAGvB,uBAAwB;EACpB,YAAY,EAAE,GAAG;EACjB,aAAa,EAAE,IAAI;EAEnB,yBAAE;IACE,YAAY,EAAE,IAAI;IAClB,aAAa,EAAE,GAAG;EAGtB,wCAAiB;IACb,YAAY,EAAE,GAAG;IACjB,aAAa,EAAE,IAAI;;AAI3B;;;;;;0BAM0B;EACtB,KAAK,EAAC,KAAK;;AAGf,aAAc;EACV,WAAW,EAAE,GAAG;EAChB,YAAY,EAAE,IAAI;;AAGtB,iBAAkB;EACd,KAAK,EAAE,eAAe;;AAG1B,eAAgB;EACZ,KAAK,EAAE,gBAAgB;EACvB,MAAM,EAAC,cAAc;;AAGzB,eAAe;EACX,OAAO,EAAC,2BAA2B;;AAGvC,WAAY;EACR,UAAU,EAAE,KAAK;;AAGrB;;;2BAG4B;EACxB,SAAS,EAAE,cAAc;;AAG7B;;;;;;;;;;;;;yBAa0B;EACtB,KAAK,EAAC,gBAAgB;;AAG1B,aAAa;EACT,YAAY,EAAC,IAAI;EAAE,SAAS,EAAC,cAAc;;AAG/C;;uBAEwB;EACpB,SAAS,EAAC,cAAc;EACxB,KAAK,EAAC,KAAK;EACX,MAAM,EAAC,CAAC;;AAGZ,2DAA4D;EACxD,UAAU,EAAE,iBAAiB;EAC7B,SAAS,EAAE,cAAc;;AAG7B,kCAAmC;EACjC,WAAW,EAAE,IAAI;;AAGnB,YAAa;EACT,KAAK,EAAC,gBAAgB;;AAItB;;oDAEsC;EAClC,KAAK,EAAE,IAAI", +"sources": ["rtl.scss"], +"names": [], +"file": "rtl.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/rtl.scss b/redux/ReduxCore/assets/css/rtl.scss new file mode 100644 index 0000000..531d752 --- /dev/null +++ b/redux/ReduxCore/assets/css/rtl.scss @@ -0,0 +1,125 @@ +html[dir="rtl"] + +.redux-container { + .redux-action_bar{ + float:left; + } +} + +.redux-container .expand_options, +.redux-sidebar, +.cb-enable, +.cb-disable, +.cb-enable span, +.cb-disable span, +#redux-footer #redux-share{ + float:right; +} + +.redux-main{ + border-left:0px; + margin-left:0px; + border-right:1px solid #d8d8d8; + margin-right:201px; + + .redux-typography-container .typography-preview{ + text-align:center !important; + direction:ltr !important; + } +} + +.redux-group-tab-link-a{ + padding-left:0px; + padding-right:30px; + + i{ + padding-left:10px; + padding-right:5px; + } + + span.group_title{ + padding-left:0px; + padding-right:30px; + } +} + +.redux_slider{ + margin-left:0px; + margin-right:15px; +} + +.redux-action_bar{ + float:left !important; +} + +.expand_options{ + float:right !important; + border:1px solid #f00; +} + +.redux_field_th{ + padding:20px 0 20px 10px !important; +} + +.field-desc{ + text-align:right; +} + +.redux-container-ace_editor, +.redux-container-border, +.redux-container-spacing, +.redux-container-dimensions{ + direction:ltr !important; +} + +.redux-container-border .field-border-input, +.redux-container-border .redux-color-init, +.redux-container-border .redux-border-style, +.redux-container-sorter, +.redux-container-border, +.redux-container-spacing, +.redux-container-spacing .field-spacing-input, +.redux-container-dimensions .redux-dimensions-container, +.redux-container-text label, +.redux-container-checkbox input, +.typography-font-bar, +.typography-style-bar, +.redux-color.redux-typography-color, +.redux-typography-subsets{ + float:right !important; +} + +.input-append{ + margin-right:10px; + direction:ltr !important; +} + +.redux-container-slider, +.redux-container-spinner, +.redux-container-switch{ + direction:ltr !important; + float:right; + margin:0; +} + +.redux-info-field { + .redux-info-icon{ + margin-left:15px; + } +} + +#redux-share{ + float:right !important; +} + +.redux-sidebar { + .redux-menu-warning, + .redux-menu-error, + .hasSubSections .extraIconSubsections{ + float:left; + } +} + +.select2-search-choice-close { + left: 23px !important; +} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/elusive-icons.css b/redux/ReduxCore/assets/css/vendor/elusive-icons/elusive-icons.css new file mode 100644 index 0000000..0654766 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/elusive-icons.css @@ -0,0 +1,4 @@ +/*! + * Elusive Icons 2.0.0 by @ReduxFramework - http://elusiveicons.com - @reduxframework + * License - http://elusiveicons.com/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'Elusive-Icons';src:url("fonts/elusiveicons-webfont.eot?v=2.0.0");src:url("fonts/elusiveicons-webfont.eot?#iefix&v=2.0.0") format("embedded-opentype"),url("fonts/elusiveicons-webfont.woff?v=2.0.0") format("woff"),url("fonts/elusiveicons-webfont.ttf?v=2.0.0") format("truetype"),url("fonts/elusiveicons-webfont.svg?v=2.0.0#elusiveiconsregular") format("svg");font-weight:normal;font-style:normal}.el{display:inline-block;font:normal normal normal 14px/1 "Elusive-Icons";font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.el-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.el-2x{font-size:2em}.el-3x{font-size:3em}.el-4x{font-size:4em}.el-5x{font-size:5em}.el-fw{width:1.2857142857em;text-align:center}.el-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.el-ul>li{position:relative}.el-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.el-li.el-lg{left:-1.8571428571em}.el-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.el.pull-left{margin-right:.3em}.el.pull-right{margin-left:.3em}.el-spin{-webkit-animation:el-spin 2s infinite linear;animation:el-spin 2s infinite linear}.el-pulse{-webkit-animation:el-spin 1s infinite steps(8);animation:el-spin 1s infinite steps(8)}@-webkit-keyframes el-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes el-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.el-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.el-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.el-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.el-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .el-rotate-90,:root .el-rotate-180,:root .el-rotate-270,:root .el-flip-horizontal,:root .el-flip-vertical{filter:none}.el-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.el-stack-1x,.el-stack-2x{position:absolute;left:0;width:100%;text-align:center}.el-stack-1x{line-height:inherit}.el-stack-2x{font-size:2em}.el-inverse{color:#fff}.el-icon-address-book-alt:before,.el-address-book-alt:before{content:"ï„"}.el-icon-address-book:before,.el-address-book:before{content:"ï„‚"}.el-icon-adjust-alt:before,.el-adjust-alt:before{content:""}.el-icon-adjust:before,.el-adjust:before{content:"ï„„"}.el-icon-adult:before,.el-adult:before{content:"ï„…"}.el-icon-align-center:before,.el-align-center:before{content:""}.el-icon-align-justify:before,.el-align-justify:before{content:""}.el-icon-align-left:before,.el-align-left:before{content:""}.el-icon-align-right:before,.el-align-right:before{content:""}.el-icon-arrow-down:before,.el-arrow-down:before{content:"ï„Š"}.el-icon-arrow-left:before,.el-arrow-left:before{content:"ï„‹"}.el-icon-arrow-right:before,.el-arrow-right:before{content:"ï„Œ"}.el-icon-arrow-up:before,.el-arrow-up:before{content:"ï„"}.el-icon-asl:before,.el-asl:before{content:"ï„Ž"}.el-icon-asterisk:before,.el-asterisk:before{content:"ï„"}.el-icon-backward:before,.el-backward:before{content:"ï„"}.el-icon-ban-circle:before,.el-ban-circle:before{content:"ï„‘"}.el-icon-barcode:before,.el-barcode:before{content:"ï„’"}.el-icon-behance:before,.el-behance:before{content:"ï„“"}.el-icon-bell:before,.el-bell:before{content:"ï„”"}.el-icon-blind:before,.el-blind:before{content:"ï„•"}.el-icon-blogger:before,.el-blogger:before{content:"ï„–"}.el-icon-bold:before,.el-bold:before{content:"ï„—"}.el-icon-book:before,.el-book:before{content:""}.el-icon-bookmark-empty:before,.el-bookmark-empty:before{content:"ï„™"}.el-icon-bookmark:before,.el-bookmark:before{content:"ï„š"}.el-icon-brackets:before,.el-brackets:before{content:"ï„›"}.el-icon-braille:before,.el-braille:before{content:"ï„œ"}.el-icon-briefcase:before,.el-briefcase:before{content:"ï„"}.el-icon-broom:before,.el-broom:before{content:"ï„ž"}.el-icon-brush:before,.el-brush:before{content:"ï„Ÿ"}.el-icon-bulb:before,.el-bulb:before{content:"ï„ "}.el-icon-bullhorn:before,.el-bullhorn:before{content:"ï„¡"}.el-icon-calendar-sign:before,.el-calendar-sign:before{content:"ï„¢"}.el-icon-calendar:before,.el-calendar:before{content:"ï„£"}.el-icon-camera:before,.el-camera:before{content:""}.el-icon-car:before,.el-car:before{content:"ï„¥"}.el-icon-caret-down:before,.el-caret-down:before{content:""}.el-icon-caret-left:before,.el-caret-left:before{content:""}.el-icon-caret-right:before,.el-caret-right:before{content:""}.el-icon-caret-up:before,.el-caret-up:before{content:"ï„©"}.el-icon-cc:before,.el-cc:before{content:""}.el-icon-certificate:before,.el-certificate:before{content:"ï„«"}.el-icon-check-empty:before,.el-check-empty:before{content:""}.el-icon-check:before,.el-check:before{content:"ï„­"}.el-icon-chevron-down:before,.el-chevron-down:before{content:"ï„®"}.el-icon-chevron-left:before,.el-chevron-left:before{content:""}.el-icon-chevron-right:before,.el-chevron-right:before{content:"ï„°"}.el-icon-chevron-up:before,.el-chevron-up:before{content:""}.el-icon-child:before,.el-child:before{content:""}.el-icon-circle-arrow-down:before,.el-circle-arrow-down:before{content:""}.el-icon-circle-arrow-left:before,.el-circle-arrow-left:before{content:"ï„´"}.el-icon-circle-arrow-right:before,.el-circle-arrow-right:before{content:""}.el-icon-circle-arrow-up:before,.el-circle-arrow-up:before{content:""}.el-icon-cloud-alt:before,.el-cloud-alt:before{content:"ï„·"}.el-icon-cloud:before,.el-cloud:before{content:""}.el-icon-cog-alt:before,.el-cog-alt:before{content:""}.el-icon-cog:before,.el-cog:before{content:""}.el-icon-cogs:before,.el-cogs:before{content:"ï„»"}.el-icon-comment-alt:before,.el-comment-alt:before{content:""}.el-icon-comment:before,.el-comment:before{content:""}.el-icon-compass-alt:before,.el-compass-alt:before{content:""}.el-icon-compass:before,.el-compass:before{content:"ï„¿"}.el-icon-credit-card:before,.el-credit-card:before{content:"ï…€"}.el-icon-css:before,.el-css:before{content:"ï…"}.el-icon-dashboard:before,.el-dashboard:before{content:"ï…‚"}.el-icon-delicious:before,.el-delicious:before{content:"ï…ƒ"}.el-icon-deviantart:before,.el-deviantart:before{content:"ï…„"}.el-icon-digg:before,.el-digg:before{content:"ï……"}.el-icon-download-alt:before,.el-download-alt:before{content:"ï…†"}.el-icon-download:before,.el-download:before{content:"ï…‡"}.el-icon-dribbble:before,.el-dribbble:before{content:"ï…ˆ"}.el-icon-edit:before,.el-edit:before{content:"ï…‰"}.el-icon-eject:before,.el-eject:before{content:"ï…Š"}.el-icon-envelope-alt:before,.el-envelope-alt:before{content:"ï…‹"}.el-icon-envelope:before,.el-envelope:before{content:"ï…Œ"}.el-icon-error-alt:before,.el-error-alt:before{content:"ï…"}.el-icon-error:before,.el-error:before{content:"ï…Ž"}.el-icon-eur:before,.el-eur:before{content:"ï…"}.el-icon-exclamation-sign:before,.el-exclamation-sign:before{content:"ï…"}.el-icon-eye-close:before,.el-eye-close:before{content:"ï…‘"}.el-icon-eye-open:before,.el-eye-open:before{content:"ï…’"}.el-icon-facebook:before,.el-facebook:before{content:"ï…“"}.el-icon-facetime-video:before,.el-facetime-video:before{content:"ï…”"}.el-icon-fast-backward:before,.el-fast-backward:before{content:"ï…•"}.el-icon-fast-forward:before,.el-fast-forward:before{content:"ï…–"}.el-icon-female:before,.el-female:before{content:"ï…—"}.el-icon-file-alt:before,.el-file-alt:before{content:"ï…˜"}.el-icon-file-edit-alt:before,.el-file-edit-alt:before{content:"ï…™"}.el-icon-file-edit:before,.el-file-edit:before{content:"ï…š"}.el-icon-file-new-alt:before,.el-file-new-alt:before{content:"ï…›"}.el-icon-file-new:before,.el-file-new:before{content:"ï…œ"}.el-icon-file:before,.el-file:before{content:"ï…"}.el-icon-film:before,.el-film:before{content:"ï…ž"}.el-icon-filter:before,.el-filter:before{content:"ï…Ÿ"}.el-icon-fire:before,.el-fire:before{content:"ï… "}.el-icon-flag-alt:before,.el-flag-alt:before{content:"ï…¡"}.el-icon-flag:before,.el-flag:before{content:"ï…¢"}.el-icon-flickr:before,.el-flickr:before{content:"ï…£"}.el-icon-folder-close:before,.el-folder-close:before{content:"ï…¤"}.el-icon-folder-open:before,.el-folder-open:before{content:"ï…¥"}.el-icon-folder-sign:before,.el-folder-sign:before{content:"ï…¦"}.el-icon-folder:before,.el-folder:before{content:"ï…§"}.el-icon-font:before,.el-font:before{content:"ï…¨"}.el-icon-fontsize:before,.el-fontsize:before{content:"ï…©"}.el-icon-fork:before,.el-fork:before{content:"ï…ª"}.el-icon-forward-alt:before,.el-forward-alt:before{content:"ï…«"}.el-icon-forward:before,.el-forward:before{content:"ï…¬"}.el-icon-foursquare:before,.el-foursquare:before{content:"ï…­"}.el-icon-friendfeed-rect:before,.el-friendfeed-rect:before{content:"ï…®"}.el-icon-friendfeed:before,.el-friendfeed:before{content:"ï…¯"}.el-icon-fullscreen:before,.el-fullscreen:before{content:"ï…°"}.el-icon-gallery:before,.el-gallery:before{content:"ï…±"}.el-icon-gbp:before,.el-gbp:before{content:"ï…²"}.el-icon-gift:before,.el-gift:before{content:"ï…³"}.el-icon-github-text:before,.el-github-text:before{content:"ï…´"}.el-icon-github:before,.el-github:before{content:"ï…µ"}.el-icon-glass:before,.el-glass:before{content:"ï…¶"}.el-icon-glasses:before,.el-glasses:before{content:"ï…·"}.el-icon-globe-alt:before,.el-globe-alt:before{content:"ï…¸"}.el-icon-globe:before,.el-globe:before{content:"ï…¹"}.el-icon-googleplus:before,.el-googleplus:before{content:"ï…º"}.el-icon-graph-alt:before,.el-graph-alt:before{content:"ï…»"}.el-icon-graph:before,.el-graph:before{content:"ï…¼"}.el-icon-group-alt:before,.el-group-alt:before{content:"ï…½"}.el-icon-group:before,.el-group:before{content:"ï…¾"}.el-icon-guidedog:before,.el-guidedog:before{content:"ï…¿"}.el-icon-hand-down:before,.el-hand-down:before{content:""}.el-icon-hand-left:before,.el-hand-left:before{content:"ï†"}.el-icon-hand-right:before,.el-hand-right:before{content:""}.el-icon-hand-up:before,.el-hand-up:before{content:""}.el-icon-hdd:before,.el-hdd:before{content:""}.el-icon-headphones:before,.el-headphones:before{content:""}.el-icon-hearing-impaired:before,.el-hearing-impaired:before{content:""}.el-icon-heart-alt:before,.el-heart-alt:before{content:""}.el-icon-heart-empty:before,.el-heart-empty:before{content:""}.el-icon-heart:before,.el-heart:before{content:""}.el-icon-home-alt:before,.el-home-alt:before{content:""}.el-icon-home:before,.el-home:before{content:""}.el-icon-hourglass:before,.el-hourglass:before{content:""}.el-icon-idea-alt:before,.el-idea-alt:before{content:"ï†"}.el-icon-idea:before,.el-idea:before{content:""}.el-icon-inbox-alt:before,.el-inbox-alt:before{content:"ï†"}.el-icon-inbox-box:before,.el-inbox-box:before{content:"ï†"}.el-icon-inbox:before,.el-inbox:before{content:""}.el-icon-indent-left:before,.el-indent-left:before{content:""}.el-icon-indent-right:before,.el-indent-right:before{content:""}.el-icon-info-circle:before,.el-info-circle:before{content:""}.el-icon-instagram:before,.el-instagram:before{content:""}.el-icon-iphone-home:before,.el-iphone-home:before{content:""}.el-icon-italic:before,.el-italic:before{content:""}.el-icon-key:before,.el-key:before{content:""}.el-icon-laptop-alt:before,.el-laptop-alt:before{content:""}.el-icon-laptop:before,.el-laptop:before{content:""}.el-icon-lastfm:before,.el-lastfm:before{content:""}.el-icon-leaf:before,.el-leaf:before{content:""}.el-icon-lines:before,.el-lines:before{content:"ï†"}.el-icon-link:before,.el-link:before{content:""}.el-icon-linkedin:before,.el-linkedin:before{content:""}.el-icon-list-alt:before,.el-list-alt:before{content:""}.el-icon-list:before,.el-list:before{content:""}.el-icon-livejournal:before,.el-livejournal:before{content:""}.el-icon-lock-alt:before,.el-lock-alt:before{content:""}.el-icon-lock:before,.el-lock:before{content:""}.el-icon-magic:before,.el-magic:before{content:""}.el-icon-magnet:before,.el-magnet:before{content:""}.el-icon-male:before,.el-male:before{content:""}.el-icon-map-marker-alt:before,.el-map-marker-alt:before{content:""}.el-icon-map-marker:before,.el-map-marker:before{content:""}.el-icon-mic-alt:before,.el-mic-alt:before{content:""}.el-icon-mic:before,.el-mic:before{content:""}.el-icon-minus-sign:before,.el-minus-sign:before{content:""}.el-icon-minus:before,.el-minus:before{content:""}.el-icon-move:before,.el-move:before{content:""}.el-icon-music:before,.el-music:before{content:""}.el-icon-myspace:before,.el-myspace:before{content:""}.el-icon-network:before,.el-network:before{content:""}.el-icon-off:before,.el-off:before{content:""}.el-icon-ok-circle:before,.el-ok-circle:before{content:""}.el-icon-ok-sign:before,.el-ok-sign:before{content:""}.el-icon-ok:before,.el-ok:before{content:""}.el-icon-opensource:before,.el-opensource:before{content:""}.el-icon-paper-clip-alt:before,.el-paper-clip-alt:before{content:""}.el-icon-paper-clip:before,.el-paper-clip:before{content:""}.el-icon-path:before,.el-path:before{content:""}.el-icon-pause-alt:before,.el-pause-alt:before{content:""}.el-icon-pause:before,.el-pause:before{content:""}.el-icon-pencil-alt:before,.el-pencil-alt:before{content:""}.el-icon-pencil:before,.el-pencil:before{content:""}.el-icon-person:before,.el-person:before{content:""}.el-icon-phone-alt:before,.el-phone-alt:before{content:""}.el-icon-phone:before,.el-phone:before{content:""}.el-icon-photo-alt:before,.el-photo-alt:before{content:"ï‡"}.el-icon-photo:before,.el-photo:before{content:""}.el-icon-picasa:before,.el-picasa:before{content:""}.el-icon-picture:before,.el-picture:before{content:""}.el-icon-plane:before,.el-plane:before{content:""}.el-icon-play-alt:before,.el-play-alt:before{content:""}.el-icon-play-circle:before,.el-play-circle:before{content:""}.el-icon-play:before,.el-play:before{content:""}.el-icon-plurk-alt:before,.el-plurk-alt:before{content:""}.el-icon-plurk:before,.el-plurk:before{content:""}.el-icon-plus-sign:before,.el-plus-sign:before{content:""}.el-icon-plus:before,.el-plus:before{content:""}.el-icon-podcast:before,.el-podcast:before{content:"ï‡"}.el-icon-print:before,.el-print:before{content:""}.el-icon-puzzle:before,.el-puzzle:before{content:"ï‡"}.el-icon-qrcode:before,.el-qrcode:before{content:"ï‡"}.el-icon-question-sign:before,.el-question-sign:before{content:""}.el-icon-question:before,.el-question:before{content:""}.el-icon-quote-alt:before,.el-quote-alt:before{content:""}.el-icon-quote-right-alt:before,.el-quote-right-alt:before{content:""}.el-icon-quote-right:before,.el-quote-right:before{content:""}.el-icon-quotes:before,.el-quotes:before{content:""}.el-icon-random:before,.el-random:before{content:""}.el-icon-record:before,.el-record:before{content:""}.el-icon-reddit:before,.el-reddit:before{content:""}.el-icon-redux:before,.el-redux:before{content:""}.el-icon-refresh:before,.el-refresh:before{content:""}.el-icon-remove-circle:before,.el-remove-circle:before{content:""}.el-icon-remove-sign:before,.el-remove-sign:before{content:"ï‡"}.el-icon-remove:before,.el-remove:before{content:""}.el-icon-repeat-alt:before,.el-repeat-alt:before{content:""}.el-icon-repeat:before,.el-repeat:before{content:""}.el-icon-resize-full:before,.el-resize-full:before{content:""}.el-icon-resize-horizontal:before,.el-resize-horizontal:before{content:""}.el-icon-resize-small:before,.el-resize-small:before{content:""}.el-icon-resize-vertical:before,.el-resize-vertical:before{content:""}.el-icon-return-key:before,.el-return-key:before{content:""}.el-icon-retweet:before,.el-retweet:before{content:""}.el-icon-reverse-alt:before,.el-reverse-alt:before{content:""}.el-icon-road:before,.el-road:before{content:""}.el-icon-rss:before,.el-rss:before{content:""}.el-icon-scissors:before,.el-scissors:before{content:""}.el-icon-screen-alt:before,.el-screen-alt:before{content:""}.el-icon-screen:before,.el-screen:before{content:""}.el-icon-screenshot:before,.el-screenshot:before{content:""}.el-icon-search-alt:before,.el-search-alt:before{content:""}.el-icon-search:before,.el-search:before{content:""}.el-icon-share-alt:before,.el-share-alt:before{content:""}.el-icon-share:before,.el-share:before{content:""}.el-icon-shopping-cart-sign:before,.el-shopping-cart-sign:before{content:""}.el-icon-shopping-cart:before,.el-shopping-cart:before{content:""}.el-icon-shortcode:before,.el-shortcode:before{content:""}.el-icon-signal:before,.el-signal:before{content:""}.el-icon-skype:before,.el-skype:before{content:""}.el-icon-slideshare:before,.el-slideshare:before{content:""}.el-icon-smiley-alt:before,.el-smiley-alt:before{content:""}.el-icon-smiley:before,.el-smiley:before{content:""}.el-icon-soundcloud:before,.el-soundcloud:before{content:""}.el-icon-speaker:before,.el-speaker:before{content:""}.el-icon-spotify:before,.el-spotify:before{content:""}.el-icon-stackoverflow:before,.el-stackoverflow:before{content:""}.el-icon-star-alt:before,.el-star-alt:before{content:""}.el-icon-star-empty:before,.el-star-empty:before{content:""}.el-icon-star:before,.el-star:before{content:""}.el-icon-step-backward:before,.el-step-backward:before{content:"ïˆ"}.el-icon-step-forward:before,.el-step-forward:before{content:""}.el-icon-stop-alt:before,.el-stop-alt:before{content:""}.el-icon-stop:before,.el-stop:before{content:""}.el-icon-stumbleupon:before,.el-stumbleupon:before{content:""}.el-icon-tag:before,.el-tag:before{content:""}.el-icon-tags:before,.el-tags:before{content:""}.el-icon-tasks:before,.el-tasks:before{content:""}.el-icon-text-height:before,.el-text-height:before{content:""}.el-icon-text-width:before,.el-text-width:before{content:""}.el-icon-th-large:before,.el-th-large:before{content:""}.el-icon-th-list:before,.el-th-list:before{content:""}.el-icon-th:before,.el-th:before{content:"ïˆ"}.el-icon-thumbs-down:before,.el-thumbs-down:before{content:""}.el-icon-thumbs-up:before,.el-thumbs-up:before{content:"ïˆ"}.el-icon-time-alt:before,.el-time-alt:before{content:"ïˆ"}.el-icon-time:before,.el-time:before{content:""}.el-icon-tint:before,.el-tint:before{content:""}.el-icon-torso:before,.el-torso:before{content:""}.el-icon-trash-alt:before,.el-trash-alt:before{content:""}.el-icon-trash:before,.el-trash:before{content:""}.el-icon-tumblr:before,.el-tumblr:before{content:""}.el-icon-twitter:before,.el-twitter:before{content:""}.el-icon-universal-access:before,.el-universal-access:before{content:""}.el-icon-unlock-alt:before,.el-unlock-alt:before{content:""}.el-icon-unlock:before,.el-unlock:before{content:""}.el-icon-upload:before,.el-upload:before{content:""}.el-icon-usd:before,.el-usd:before{content:""}.el-icon-user:before,.el-user:before{content:"ïˆ"}.el-icon-viadeo:before,.el-viadeo:before{content:""}.el-icon-video-alt:before,.el-video-alt:before{content:""}.el-icon-video-chat:before,.el-video-chat:before{content:""}.el-icon-video:before,.el-video:before{content:""}.el-icon-view-mode:before,.el-view-mode:before{content:""}.el-icon-vimeo:before,.el-vimeo:before{content:""}.el-icon-vkontakte:before,.el-vkontakte:before{content:""}.el-icon-volume-down:before,.el-volume-down:before{content:""}.el-icon-volume-off:before,.el-volume-off:before{content:""}.el-icon-volume-up:before,.el-volume-up:before{content:""}.el-icon-w3c:before,.el-w3c:before{content:""}.el-icon-warning-sign:before,.el-warning-sign:before{content:""}.el-icon-website-alt:before,.el-website-alt:before{content:""}.el-icon-website:before,.el-website:before{content:""}.el-icon-wheelchair:before,.el-wheelchair:before{content:""}.el-icon-wordpress:before,.el-wordpress:before{content:""}.el-icon-wrench-alt:before,.el-wrench-alt:before{content:""}.el-icon-wrench:before,.el-wrench:before{content:""}.el-icon-youtube:before,.el-youtube:before{content:""}.el-icon-zoom-in:before,.el-zoom-in:before{content:""}.el-icon-zoom-out:before,.el-zoom-out:before{content:""} diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/elusive-icons.css.map b/redux/ReduxCore/assets/css/vendor/elusive-icons/elusive-icons.css.map new file mode 100644 index 0000000..8ebd9a2 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/elusive-icons.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["elusive-icons.scss"], +"names": [], +"file": "elusive-icons.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/elusive-icons.scss b/redux/ReduxCore/assets/css/vendor/elusive-icons/elusive-icons.scss new file mode 100644 index 0000000..98868d2 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/elusive-icons.scss @@ -0,0 +1,1415 @@ +/*! + * Elusive Icons 2.0.0 by @ReduxFramework - http://elusiveicons.com - @reduxframework + * License - http://elusiveicons.com/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +@font-face { + font-family: 'Elusive-Icons'; + src: url("fonts/elusiveicons-webfont.eot?v=2.0.0"); + src: url("fonts/elusiveicons-webfont.eot?#iefix&v=2.0.0") format("embedded-opentype"), url("fonts/elusiveicons-webfont.woff?v=2.0.0") format("woff"), url("fonts/elusiveicons-webfont.ttf?v=2.0.0") format("truetype"), url("fonts/elusiveicons-webfont.svg?v=2.0.0#elusiveiconsregular") format("svg"); + font-weight: normal; + font-style: normal +} + +.el { + display: inline-block; + font: normal normal normal 14px/1 "Elusive-Icons"; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0) +} + +.el-lg { + font-size: 1.33333em; + line-height: 0.75em; + vertical-align: -15% +} + +.el-2x { + font-size: 2em +} + +.el-3x { + font-size: 3em +} + +.el-4x { + font-size: 4em +} + +.el-5x { + font-size: 5em +} + +.el-fw { + width: 1.28571em; + text-align: center +} + +.el-ul { + padding-left: 0; + margin-left: 2.14286em; + list-style-type: none +} + +.el-ul > li { + position: relative +} + +.el-li { + position: absolute; + left: -2.14286em; + width: 2.14286em; + top: 0.14286em; + text-align: center +} + +.el-li.el-lg { + left: -1.85714em +} + +.el-border { + padding: .2em .25em .15em; + border: solid 0.08em #eee; + border-radius: .1em +} + +.pull-right { + float: right +} + +.pull-left { + float: left +} + +.el.pull-left { + margin-right: .3em +} + +.el.pull-right { + margin-left: .3em +} + +.el-spin { + -webkit-animation: el-spin 2s infinite linear; + animation: el-spin 2s infinite linear +} + +.el-pulse { + -webkit-animation: el-spin 1s infinite steps(8); + animation: el-spin 1s infinite steps(8) +} + +@-webkit-keyframes el-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg) + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg) + } +} + +@keyframes el-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg) + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg) + } +} + +.el-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg) +} + +.el-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg) +} + +.el-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg) +} + +.el-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0); + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1) +} + +.el-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1) +} + +:root .el-rotate-90, :root .el-rotate-180, :root .el-rotate-270, :root .el-flip-horizontal, :root .el-flip-vertical { + filter: none +} + +.el-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle +} + +.el-stack-1x, .el-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center +} + +.el-stack-1x { + line-height: inherit +} + +.el-stack-2x { + font-size: 2em +} + +.el-inverse { + color: #fff +} + +.el-icon-address-book-alt:before, .el-address-book-alt:before { + content: "ï„" +} + +.el-icon-address-book:before, .el-address-book:before { + content: "ï„‚" +} + +.el-icon-adjust-alt:before, .el-adjust-alt:before { + content: "" +} + +.el-icon-adjust:before, .el-adjust:before { + content: "ï„„" +} + +.el-icon-adult:before, .el-adult:before { + content: "ï„…" +} + +.el-icon-align-center:before, .el-align-center:before { + content: "" +} + +.el-icon-align-justify:before, .el-align-justify:before { + content: "" +} + +.el-icon-align-left:before, .el-align-left:before { + content: "" +} + +.el-icon-align-right:before, .el-align-right:before { + content: "" +} + +.el-icon-arrow-down:before, .el-arrow-down:before { + content: "ï„Š" +} + +.el-icon-arrow-left:before, .el-arrow-left:before { + content: "ï„‹" +} + +.el-icon-arrow-right:before, .el-arrow-right:before { + content: "ï„Œ" +} + +.el-icon-arrow-up:before, .el-arrow-up:before { + content: "ï„" +} + +.el-icon-asl:before, .el-asl:before { + content: "ï„Ž" +} + +.el-icon-asterisk:before, .el-asterisk:before { + content: "ï„" +} + +.el-icon-backward:before, .el-backward:before { + content: "ï„" +} + +.el-icon-ban-circle:before, .el-ban-circle:before { + content: "ï„‘" +} + +.el-icon-barcode:before, .el-barcode:before { + content: "ï„’" +} + +.el-icon-behance:before, .el-behance:before { + content: "ï„“" +} + +.el-icon-bell:before, .el-bell:before { + content: "ï„”" +} + +.el-icon-blind:before, .el-blind:before { + content: "ï„•" +} + +.el-icon-blogger:before, .el-blogger:before { + content: "ï„–" +} + +.el-icon-bold:before, .el-bold:before { + content: "ï„—" +} + +.el-icon-book:before, .el-book:before { + content: "" +} + +.el-icon-bookmark-empty:before, .el-bookmark-empty:before { + content: "ï„™" +} + +.el-icon-bookmark:before, .el-bookmark:before { + content: "ï„š" +} + +.el-icon-brackets:before, .el-brackets:before { + content: "ï„›" +} + +.el-icon-braille:before, .el-braille:before { + content: "ï„œ" +} + +.el-icon-briefcase:before, .el-briefcase:before { + content: "ï„" +} + +.el-icon-broom:before, .el-broom:before { + content: "ï„ž" +} + +.el-icon-brush:before, .el-brush:before { + content: "ï„Ÿ" +} + +.el-icon-bulb:before, .el-bulb:before { + content: "ï„ " +} + +.el-icon-bullhorn:before, .el-bullhorn:before { + content: "ï„¡" +} + +.el-icon-calendar-sign:before, .el-calendar-sign:before { + content: "ï„¢" +} + +.el-icon-calendar:before, .el-calendar:before { + content: "ï„£" +} + +.el-icon-camera:before, .el-camera:before { + content: "" +} + +.el-icon-car:before, .el-car:before { + content: "ï„¥" +} + +.el-icon-caret-down:before, .el-caret-down:before { + content: "" +} + +.el-icon-caret-left:before, .el-caret-left:before { + content: "" +} + +.el-icon-caret-right:before, .el-caret-right:before { + content: "" +} + +.el-icon-caret-up:before, .el-caret-up:before { + content: "ï„©" +} + +.el-icon-cc:before, .el-cc:before { + content: "" +} + +.el-icon-certificate:before, .el-certificate:before { + content: "ï„«" +} + +.el-icon-check-empty:before, .el-check-empty:before { + content: "" +} + +.el-icon-check:before, .el-check:before { + content: "ï„­" +} + +.el-icon-chevron-down:before, .el-chevron-down:before { + content: "ï„®" +} + +.el-icon-chevron-left:before, .el-chevron-left:before { + content: "" +} + +.el-icon-chevron-right:before, .el-chevron-right:before { + content: "ï„°" +} + +.el-icon-chevron-up:before, .el-chevron-up:before { + content: "" +} + +.el-icon-child:before, .el-child:before { + content: "" +} + +.el-icon-circle-arrow-down:before, .el-circle-arrow-down:before { + content: "" +} + +.el-icon-circle-arrow-left:before, .el-circle-arrow-left:before { + content: "ï„´" +} + +.el-icon-circle-arrow-right:before, .el-circle-arrow-right:before { + content: "" +} + +.el-icon-circle-arrow-up:before, .el-circle-arrow-up:before { + content: "" +} + +.el-icon-cloud-alt:before, .el-cloud-alt:before { + content: "ï„·" +} + +.el-icon-cloud:before, .el-cloud:before { + content: "" +} + +.el-icon-cog-alt:before, .el-cog-alt:before { + content: "" +} + +.el-icon-cog:before, .el-cog:before { + content: "" +} + +.el-icon-cogs:before, .el-cogs:before { + content: "ï„»" +} + +.el-icon-comment-alt:before, .el-comment-alt:before { + content: "" +} + +.el-icon-comment:before, .el-comment:before { + content: "" +} + +.el-icon-compass-alt:before, .el-compass-alt:before { + content: "" +} + +.el-icon-compass:before, .el-compass:before { + content: "ï„¿" +} + +.el-icon-credit-card:before, .el-credit-card:before { + content: "ï…€" +} + +.el-icon-css:before, .el-css:before { + content: "ï…" +} + +.el-icon-dashboard:before, .el-dashboard:before { + content: "ï…‚" +} + +.el-icon-delicious:before, .el-delicious:before { + content: "ï…ƒ" +} + +.el-icon-deviantart:before, .el-deviantart:before { + content: "ï…„" +} + +.el-icon-digg:before, .el-digg:before { + content: "ï……" +} + +.el-icon-download-alt:before, .el-download-alt:before { + content: "ï…†" +} + +.el-icon-download:before, .el-download:before { + content: "ï…‡" +} + +.el-icon-dribbble:before, .el-dribbble:before { + content: "ï…ˆ" +} + +.el-icon-edit:before, .el-edit:before { + content: "ï…‰" +} + +.el-icon-eject:before, .el-eject:before { + content: "ï…Š" +} + +.el-icon-envelope-alt:before, .el-envelope-alt:before { + content: "ï…‹" +} + +.el-icon-envelope:before, .el-envelope:before { + content: "ï…Œ" +} + +.el-icon-error-alt:before, .el-error-alt:before { + content: "ï…" +} + +.el-icon-error:before, .el-error:before { + content: "ï…Ž" +} + +.el-icon-eur:before, .el-eur:before { + content: "ï…" +} + +.el-icon-exclamation-sign:before, .el-exclamation-sign:before { + content: "ï…" +} + +.el-icon-eye-close:before, .el-eye-close:before { + content: "ï…‘" +} + +.el-icon-eye-open:before, .el-eye-open:before { + content: "ï…’" +} + +.el-icon-facebook:before, .el-facebook:before { + content: "ï…“" +} + +.el-icon-facetime-video:before, .el-facetime-video:before { + content: "ï…”" +} + +.el-icon-fast-backward:before, .el-fast-backward:before { + content: "ï…•" +} + +.el-icon-fast-forward:before, .el-fast-forward:before { + content: "ï…–" +} + +.el-icon-female:before, .el-female:before { + content: "ï…—" +} + +.el-icon-file-alt:before, .el-file-alt:before { + content: "ï…˜" +} + +.el-icon-file-edit-alt:before, .el-file-edit-alt:before { + content: "ï…™" +} + +.el-icon-file-edit:before, .el-file-edit:before { + content: "ï…š" +} + +.el-icon-file-new-alt:before, .el-file-new-alt:before { + content: "ï…›" +} + +.el-icon-file-new:before, .el-file-new:before { + content: "ï…œ" +} + +.el-icon-file:before, .el-file:before { + content: "ï…" +} + +.el-icon-film:before, .el-film:before { + content: "ï…ž" +} + +.el-icon-filter:before, .el-filter:before { + content: "ï…Ÿ" +} + +.el-icon-fire:before, .el-fire:before { + content: "ï… " +} + +.el-icon-flag-alt:before, .el-flag-alt:before { + content: "ï…¡" +} + +.el-icon-flag:before, .el-flag:before { + content: "ï…¢" +} + +.el-icon-flickr:before, .el-flickr:before { + content: "ï…£" +} + +.el-icon-folder-close:before, .el-folder-close:before { + content: "ï…¤" +} + +.el-icon-folder-open:before, .el-folder-open:before { + content: "ï…¥" +} + +.el-icon-folder-sign:before, .el-folder-sign:before { + content: "ï…¦" +} + +.el-icon-folder:before, .el-folder:before { + content: "ï…§" +} + +.el-icon-font:before, .el-font:before { + content: "ï…¨" +} + +.el-icon-fontsize:before, .el-fontsize:before { + content: "ï…©" +} + +.el-icon-fork:before, .el-fork:before { + content: "ï…ª" +} + +.el-icon-forward-alt:before, .el-forward-alt:before { + content: "ï…«" +} + +.el-icon-forward:before, .el-forward:before { + content: "ï…¬" +} + +.el-icon-foursquare:before, .el-foursquare:before { + content: "ï…­" +} + +.el-icon-friendfeed-rect:before, .el-friendfeed-rect:before { + content: "ï…®" +} + +.el-icon-friendfeed:before, .el-friendfeed:before { + content: "ï…¯" +} + +.el-icon-fullscreen:before, .el-fullscreen:before { + content: "ï…°" +} + +.el-icon-gallery:before, .el-gallery:before { + content: "ï…±" +} + +.el-icon-gbp:before, .el-gbp:before { + content: "ï…²" +} + +.el-icon-gift:before, .el-gift:before { + content: "ï…³" +} + +.el-icon-github-text:before, .el-github-text:before { + content: "ï…´" +} + +.el-icon-github:before, .el-github:before { + content: "ï…µ" +} + +.el-icon-glass:before, .el-glass:before { + content: "ï…¶" +} + +.el-icon-glasses:before, .el-glasses:before { + content: "ï…·" +} + +.el-icon-globe-alt:before, .el-globe-alt:before { + content: "ï…¸" +} + +.el-icon-globe:before, .el-globe:before { + content: "ï…¹" +} + +.el-icon-googleplus:before, .el-googleplus:before { + content: "ï…º" +} + +.el-icon-graph-alt:before, .el-graph-alt:before { + content: "ï…»" +} + +.el-icon-graph:before, .el-graph:before { + content: "ï…¼" +} + +.el-icon-group-alt:before, .el-group-alt:before { + content: "ï…½" +} + +.el-icon-group:before, .el-group:before { + content: "ï…¾" +} + +.el-icon-guidedog:before, .el-guidedog:before { + content: "ï…¿" +} + +.el-icon-hand-down:before, .el-hand-down:before { + content: "" +} + +.el-icon-hand-left:before, .el-hand-left:before { + content: "ï†" +} + +.el-icon-hand-right:before, .el-hand-right:before { + content: "" +} + +.el-icon-hand-up:before, .el-hand-up:before { + content: "" +} + +.el-icon-hdd:before, .el-hdd:before { + content: "" +} + +.el-icon-headphones:before, .el-headphones:before { + content: "" +} + +.el-icon-hearing-impaired:before, .el-hearing-impaired:before { + content: "" +} + +.el-icon-heart-alt:before, .el-heart-alt:before { + content: "" +} + +.el-icon-heart-empty:before, .el-heart-empty:before { + content: "" +} + +.el-icon-heart:before, .el-heart:before { + content: "" +} + +.el-icon-home-alt:before, .el-home-alt:before { + content: "" +} + +.el-icon-home:before, .el-home:before { + content: "" +} + +.el-icon-hourglass:before, .el-hourglass:before { + content: "" +} + +.el-icon-idea-alt:before, .el-idea-alt:before { + content: "ï†" +} + +.el-icon-idea:before, .el-idea:before { + content: "" +} + +.el-icon-inbox-alt:before, .el-inbox-alt:before { + content: "ï†" +} + +.el-icon-inbox-box:before, .el-inbox-box:before { + content: "ï†" +} + +.el-icon-inbox:before, .el-inbox:before { + content: "" +} + +.el-icon-indent-left:before, .el-indent-left:before { + content: "" +} + +.el-icon-indent-right:before, .el-indent-right:before { + content: "" +} + +.el-icon-info-circle:before, .el-info-circle:before { + content: "" +} + +.el-icon-instagram:before, .el-instagram:before { + content: "" +} + +.el-icon-iphone-home:before, .el-iphone-home:before { + content: "" +} + +.el-icon-italic:before, .el-italic:before { + content: "" +} + +.el-icon-key:before, .el-key:before { + content: "" +} + +.el-icon-laptop-alt:before, .el-laptop-alt:before { + content: "" +} + +.el-icon-laptop:before, .el-laptop:before { + content: "" +} + +.el-icon-lastfm:before, .el-lastfm:before { + content: "" +} + +.el-icon-leaf:before, .el-leaf:before { + content: "" +} + +.el-icon-lines:before, .el-lines:before { + content: "ï†" +} + +.el-icon-link:before, .el-link:before { + content: "" +} + +.el-icon-linkedin:before, .el-linkedin:before { + content: "" +} + +.el-icon-list-alt:before, .el-list-alt:before { + content: "" +} + +.el-icon-list:before, .el-list:before { + content: "" +} + +.el-icon-livejournal:before, .el-livejournal:before { + content: "" +} + +.el-icon-lock-alt:before, .el-lock-alt:before { + content: "" +} + +.el-icon-lock:before, .el-lock:before { + content: "" +} + +.el-icon-magic:before, .el-magic:before { + content: "" +} + +.el-icon-magnet:before, .el-magnet:before { + content: "" +} + +.el-icon-male:before, .el-male:before { + content: "" +} + +.el-icon-map-marker-alt:before, .el-map-marker-alt:before { + content: "" +} + +.el-icon-map-marker:before, .el-map-marker:before { + content: "" +} + +.el-icon-mic-alt:before, .el-mic-alt:before { + content: "" +} + +.el-icon-mic:before, .el-mic:before { + content: "" +} + +.el-icon-minus-sign:before, .el-minus-sign:before { + content: "" +} + +.el-icon-minus:before, .el-minus:before { + content: "" +} + +.el-icon-move:before, .el-move:before { + content: "" +} + +.el-icon-music:before, .el-music:before { + content: "" +} + +.el-icon-myspace:before, .el-myspace:before { + content: "" +} + +.el-icon-network:before, .el-network:before { + content: "" +} + +.el-icon-off:before, .el-off:before { + content: "" +} + +.el-icon-ok-circle:before, .el-ok-circle:before { + content: "" +} + +.el-icon-ok-sign:before, .el-ok-sign:before { + content: "" +} + +.el-icon-ok:before, .el-ok:before { + content: "" +} + +.el-icon-opensource:before, .el-opensource:before { + content: "" +} + +.el-icon-paper-clip-alt:before, .el-paper-clip-alt:before { + content: "" +} + +.el-icon-paper-clip:before, .el-paper-clip:before { + content: "" +} + +.el-icon-path:before, .el-path:before { + content: "" +} + +.el-icon-pause-alt:before, .el-pause-alt:before { + content: "" +} + +.el-icon-pause:before, .el-pause:before { + content: "" +} + +.el-icon-pencil-alt:before, .el-pencil-alt:before { + content: "" +} + +.el-icon-pencil:before, .el-pencil:before { + content: "" +} + +.el-icon-person:before, .el-person:before { + content: "" +} + +.el-icon-phone-alt:before, .el-phone-alt:before { + content: "" +} + +.el-icon-phone:before, .el-phone:before { + content: "" +} + +.el-icon-photo-alt:before, .el-photo-alt:before { + content: "ï‡" +} + +.el-icon-photo:before, .el-photo:before { + content: "" +} + +.el-icon-picasa:before, .el-picasa:before { + content: "" +} + +.el-icon-picture:before, .el-picture:before { + content: "" +} + +.el-icon-plane:before, .el-plane:before { + content: "" +} + +.el-icon-play-alt:before, .el-play-alt:before { + content: "" +} + +.el-icon-play-circle:before, .el-play-circle:before { + content: "" +} + +.el-icon-play:before, .el-play:before { + content: "" +} + +.el-icon-plurk-alt:before, .el-plurk-alt:before { + content: "" +} + +.el-icon-plurk:before, .el-plurk:before { + content: "" +} + +.el-icon-plus-sign:before, .el-plus-sign:before { + content: "" +} + +.el-icon-plus:before, .el-plus:before { + content: "" +} + +.el-icon-podcast:before, .el-podcast:before { + content: "ï‡" +} + +.el-icon-print:before, .el-print:before { + content: "" +} + +.el-icon-puzzle:before, .el-puzzle:before { + content: "ï‡" +} + +.el-icon-qrcode:before, .el-qrcode:before { + content: "ï‡" +} + +.el-icon-question-sign:before, .el-question-sign:before { + content: "" +} + +.el-icon-question:before, .el-question:before { + content: "" +} + +.el-icon-quote-alt:before, .el-quote-alt:before { + content: "" +} + +.el-icon-quote-right-alt:before, .el-quote-right-alt:before { + content: "" +} + +.el-icon-quote-right:before, .el-quote-right:before { + content: "" +} + +.el-icon-quotes:before, .el-quotes:before { + content: "" +} + +.el-icon-random:before, .el-random:before { + content: "" +} + +.el-icon-record:before, .el-record:before { + content: "" +} + +.el-icon-reddit:before, .el-reddit:before { + content: "" +} + +.el-icon-redux:before, .el-redux:before { + content: "" +} + +.el-icon-refresh:before, .el-refresh:before { + content: "" +} + +.el-icon-remove-circle:before, .el-remove-circle:before { + content: "" +} + +.el-icon-remove-sign:before, .el-remove-sign:before { + content: "ï‡" +} + +.el-icon-remove:before, .el-remove:before { + content: "" +} + +.el-icon-repeat-alt:before, .el-repeat-alt:before { + content: "" +} + +.el-icon-repeat:before, .el-repeat:before { + content: "" +} + +.el-icon-resize-full:before, .el-resize-full:before { + content: "" +} + +.el-icon-resize-horizontal:before, .el-resize-horizontal:before { + content: "" +} + +.el-icon-resize-small:before, .el-resize-small:before { + content: "" +} + +.el-icon-resize-vertical:before, .el-resize-vertical:before { + content: "" +} + +.el-icon-return-key:before, .el-return-key:before { + content: "" +} + +.el-icon-retweet:before, .el-retweet:before { + content: "" +} + +.el-icon-reverse-alt:before, .el-reverse-alt:before { + content: "" +} + +.el-icon-road:before, .el-road:before { + content: "" +} + +.el-icon-rss:before, .el-rss:before { + content: "" +} + +.el-icon-scissors:before, .el-scissors:before { + content: "" +} + +.el-icon-screen-alt:before, .el-screen-alt:before { + content: "" +} + +.el-icon-screen:before, .el-screen:before { + content: "" +} + +.el-icon-screenshot:before, .el-screenshot:before { + content: "" +} + +.el-icon-search-alt:before, .el-search-alt:before { + content: "" +} + +.el-icon-search:before, .el-search:before { + content: "" +} + +.el-icon-share-alt:before, .el-share-alt:before { + content: "" +} + +.el-icon-share:before, .el-share:before { + content: "" +} + +.el-icon-shopping-cart-sign:before, .el-shopping-cart-sign:before { + content: "" +} + +.el-icon-shopping-cart:before, .el-shopping-cart:before { + content: "" +} + +.el-icon-shortcode:before, .el-shortcode:before { + content: "" +} + +.el-icon-signal:before, .el-signal:before { + content: "" +} + +.el-icon-skype:before, .el-skype:before { + content: "" +} + +.el-icon-slideshare:before, .el-slideshare:before { + content: "" +} + +.el-icon-smiley-alt:before, .el-smiley-alt:before { + content: "" +} + +.el-icon-smiley:before, .el-smiley:before { + content: "" +} + +.el-icon-soundcloud:before, .el-soundcloud:before { + content: "" +} + +.el-icon-speaker:before, .el-speaker:before { + content: "" +} + +.el-icon-spotify:before, .el-spotify:before { + content: "" +} + +.el-icon-stackoverflow:before, .el-stackoverflow:before { + content: "" +} + +.el-icon-star-alt:before, .el-star-alt:before { + content: "" +} + +.el-icon-star-empty:before, .el-star-empty:before { + content: "" +} + +.el-icon-star:before, .el-star:before { + content: "" +} + +.el-icon-step-backward:before, .el-step-backward:before { + content: "ïˆ" +} + +.el-icon-step-forward:before, .el-step-forward:before { + content: "" +} + +.el-icon-stop-alt:before, .el-stop-alt:before { + content: "" +} + +.el-icon-stop:before, .el-stop:before { + content: "" +} + +.el-icon-stumbleupon:before, .el-stumbleupon:before { + content: "" +} + +.el-icon-tag:before, .el-tag:before { + content: "" +} + +.el-icon-tags:before, .el-tags:before { + content: "" +} + +.el-icon-tasks:before, .el-tasks:before { + content: "" +} + +.el-icon-text-height:before, .el-text-height:before { + content: "" +} + +.el-icon-text-width:before, .el-text-width:before { + content: "" +} + +.el-icon-th-large:before, .el-th-large:before { + content: "" +} + +.el-icon-th-list:before, .el-th-list:before { + content: "" +} + +.el-icon-th:before, .el-th:before { + content: "ïˆ" +} + +.el-icon-thumbs-down:before, .el-thumbs-down:before { + content: "" +} + +.el-icon-thumbs-up:before, .el-thumbs-up:before { + content: "ïˆ" +} + +.el-icon-time-alt:before, .el-time-alt:before { + content: "ïˆ" +} + +.el-icon-time:before, .el-time:before { + content: "" +} + +.el-icon-tint:before, .el-tint:before { + content: "" +} + +.el-icon-torso:before, .el-torso:before { + content: "" +} + +.el-icon-trash-alt:before, .el-trash-alt:before { + content: "" +} + +.el-icon-trash:before, .el-trash:before { + content: "" +} + +.el-icon-tumblr:before, .el-tumblr:before { + content: "" +} + +.el-icon-twitter:before, .el-twitter:before { + content: "" +} + +.el-icon-universal-access:before, .el-universal-access:before { + content: "" +} + +.el-icon-unlock-alt:before, .el-unlock-alt:before { + content: "" +} + +.el-icon-unlock:before, .el-unlock:before { + content: "" +} + +.el-icon-upload:before, .el-upload:before { + content: "" +} + +.el-icon-usd:before, .el-usd:before { + content: "" +} + +.el-icon-user:before, .el-user:before { + content: "ïˆ" +} + +.el-icon-viadeo:before, .el-viadeo:before { + content: "" +} + +.el-icon-video-alt:before, .el-video-alt:before { + content: "" +} + +.el-icon-video-chat:before, .el-video-chat:before { + content: "" +} + +.el-icon-video:before, .el-video:before { + content: "" +} + +.el-icon-view-mode:before, .el-view-mode:before { + content: "" +} + +.el-icon-vimeo:before, .el-vimeo:before { + content: "" +} + +.el-icon-vkontakte:before, .el-vkontakte:before { + content: "" +} + +.el-icon-volume-down:before, .el-volume-down:before { + content: "" +} + +.el-icon-volume-off:before, .el-volume-off:before { + content: "" +} + +.el-icon-volume-up:before, .el-volume-up:before { + content: "" +} + +.el-icon-w3c:before, .el-w3c:before { + content: "" +} + +.el-icon-warning-sign:before, .el-warning-sign:before { + content: "" +} + +.el-icon-website-alt:before, .el-website-alt:before { + content: "" +} + +.el-icon-website:before, .el-website:before { + content: "" +} + +.el-icon-wheelchair:before, .el-wheelchair:before { + content: "" +} + +.el-icon-wordpress:before, .el-wordpress:before { + content: "" +} + +.el-icon-wrench-alt:before, .el-wrench-alt:before { + content: "" +} + +.el-icon-wrench:before, .el-wrench:before { + content: "" +} + +.el-icon-youtube:before, .el-youtube:before { + content: "" +} + +.el-icon-zoom-in:before, .el-zoom-in:before { + content: "" +} + +.el-icon-zoom-out:before, .el-zoom-out:before { + content: "" +} diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/fonts/elusiveicons-webfont.eot b/redux/ReduxCore/assets/css/vendor/elusive-icons/fonts/elusiveicons-webfont.eot new file mode 100644 index 0000000..0fc2bdf Binary files /dev/null and b/redux/ReduxCore/assets/css/vendor/elusive-icons/fonts/elusiveicons-webfont.eot differ diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/fonts/elusiveicons-webfont.svg b/redux/ReduxCore/assets/css/vendor/elusive-icons/fonts/elusiveicons-webfont.svg new file mode 100644 index 0000000..cf60ed2 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/fonts/elusiveicons-webfont.svg @@ -0,0 +1,934 @@ + + + + +Created by FontForge 20120731 at Tue Feb 24 11:41:15 2015 + By Dovy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/fonts/elusiveicons-webfont.ttf b/redux/ReduxCore/assets/css/vendor/elusive-icons/fonts/elusiveicons-webfont.ttf new file mode 100644 index 0000000..7065ca1 Binary files /dev/null and b/redux/ReduxCore/assets/css/vendor/elusive-icons/fonts/elusiveicons-webfont.ttf differ diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/fonts/elusiveicons-webfont.woff b/redux/ReduxCore/assets/css/vendor/elusive-icons/fonts/elusiveicons-webfont.woff new file mode 100644 index 0000000..ed9f388 Binary files /dev/null and b/redux/ReduxCore/assets/css/vendor/elusive-icons/fonts/elusiveicons-webfont.woff differ diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_animated.scss b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_animated.scss new file mode 100644 index 0000000..7661bb0 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_animated.scss @@ -0,0 +1,34 @@ +// Spinning Icons +// -------------------------- + +.#{$el-css-prefix}-spin { + -webkit-animation: el-spin 2s infinite linear; + animation: el-spin 2s infinite linear; +} + +.#{$el-css-prefix}-pulse { + -webkit-animation: el-spin 1s infinite steps(8); + animation: el-spin 1s infinite steps(8); +} + +@-webkit-keyframes el-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@keyframes el-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_bordered-pulled.scss b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_bordered-pulled.scss new file mode 100644 index 0000000..c5a0858 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_bordered-pulled.scss @@ -0,0 +1,16 @@ +// Bordered & Pulled +// ------------------------- + +.#{$el-css-prefix}-border { + padding: .2em .25em .15em; + border: solid .08em $el-border-color; + border-radius: .1em; +} + +.pull-right { float: right; } +.pull-left { float: left; } + +.#{$el-css-prefix} { + &.pull-left { margin-right: .3em; } + &.pull-right { margin-left: .3em; } +} diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_core.scss b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_core.scss new file mode 100644 index 0000000..e987377 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_core.scss @@ -0,0 +1,13 @@ +// Base Class Definition +// ------------------------- + +.#{$el-css-prefix} { + display: inline-block; + font: normal normal normal #{$el-font-size-base}/1 'Elusive-Icons'; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); // ensures no half-pixel rendering in firefox + +} diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_fixed-width.scss b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_fixed-width.scss new file mode 100644 index 0000000..0458753 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_fixed-width.scss @@ -0,0 +1,6 @@ +// Fixed Width Icons +// ------------------------- +.#{$el-css-prefix}-fw { + width: (18em / 14); + text-align: center; +} diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_icons.scss b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_icons.scss new file mode 100644 index 0000000..6479042 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_icons.scss @@ -0,0 +1,615 @@ +/* Elusive Icons uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ + +.#{$el-css-prefix}-icon-address-book-alt:before, +.#{$el-css-prefix}-address-book-alt:before { content: $el-var-address-book-alt; } +.#{$el-css-prefix}-icon-address-book:before, +.#{$el-css-prefix}-address-book:before { content: $el-var-address-book; } +.#{$el-css-prefix}-icon-adjust-alt:before, +.#{$el-css-prefix}-adjust-alt:before { content: $el-var-adjust-alt; } +.#{$el-css-prefix}-icon-adjust:before, +.#{$el-css-prefix}-adjust:before { content: $el-var-adjust; } +.#{$el-css-prefix}-icon-adult:before, +.#{$el-css-prefix}-adult:before { content: $el-var-adult; } +.#{$el-css-prefix}-icon-align-center:before, +.#{$el-css-prefix}-align-center:before { content: $el-var-align-center; } +.#{$el-css-prefix}-icon-align-justify:before, +.#{$el-css-prefix}-align-justify:before { content: $el-var-align-justify; } +.#{$el-css-prefix}-icon-align-left:before, +.#{$el-css-prefix}-align-left:before { content: $el-var-align-left; } +.#{$el-css-prefix}-icon-align-right:before, +.#{$el-css-prefix}-align-right:before { content: $el-var-align-right; } +.#{$el-css-prefix}-icon-arrow-down:before, +.#{$el-css-prefix}-arrow-down:before { content: $el-var-arrow-down; } +.#{$el-css-prefix}-icon-arrow-left:before, +.#{$el-css-prefix}-arrow-left:before { content: $el-var-arrow-left; } +.#{$el-css-prefix}-icon-arrow-right:before, +.#{$el-css-prefix}-arrow-right:before { content: $el-var-arrow-right; } +.#{$el-css-prefix}-icon-arrow-up:before, +.#{$el-css-prefix}-arrow-up:before { content: $el-var-arrow-up; } +.#{$el-css-prefix}-icon-asl:before, +.#{$el-css-prefix}-asl:before { content: $el-var-asl; } +.#{$el-css-prefix}-icon-asterisk:before, +.#{$el-css-prefix}-asterisk:before { content: $el-var-asterisk; } +.#{$el-css-prefix}-icon-backward:before, +.#{$el-css-prefix}-backward:before { content: $el-var-backward; } +.#{$el-css-prefix}-icon-ban-circle:before, +.#{$el-css-prefix}-ban-circle:before { content: $el-var-ban-circle; } +.#{$el-css-prefix}-icon-barcode:before, +.#{$el-css-prefix}-barcode:before { content: $el-var-barcode; } +.#{$el-css-prefix}-icon-behance:before, +.#{$el-css-prefix}-behance:before { content: $el-var-behance; } +.#{$el-css-prefix}-icon-bell:before, +.#{$el-css-prefix}-bell:before { content: $el-var-bell; } +.#{$el-css-prefix}-icon-blind:before, +.#{$el-css-prefix}-blind:before { content: $el-var-blind; } +.#{$el-css-prefix}-icon-blogger:before, +.#{$el-css-prefix}-blogger:before { content: $el-var-blogger; } +.#{$el-css-prefix}-icon-bold:before, +.#{$el-css-prefix}-bold:before { content: $el-var-bold; } +.#{$el-css-prefix}-icon-book:before, +.#{$el-css-prefix}-book:before { content: $el-var-book; } +.#{$el-css-prefix}-icon-bookmark-empty:before, +.#{$el-css-prefix}-bookmark-empty:before { content: $el-var-bookmark-empty; } +.#{$el-css-prefix}-icon-bookmark:before, +.#{$el-css-prefix}-bookmark:before { content: $el-var-bookmark; } +.#{$el-css-prefix}-icon-brackets:before, +.#{$el-css-prefix}-brackets:before { content: $el-var-brackets; } +.#{$el-css-prefix}-icon-braille:before, +.#{$el-css-prefix}-braille:before { content: $el-var-braille; } +.#{$el-css-prefix}-icon-briefcase:before, +.#{$el-css-prefix}-briefcase:before { content: $el-var-briefcase; } +.#{$el-css-prefix}-icon-broom:before, +.#{$el-css-prefix}-broom:before { content: $el-var-broom; } +.#{$el-css-prefix}-icon-brush:before, +.#{$el-css-prefix}-brush:before { content: $el-var-brush; } +.#{$el-css-prefix}-icon-bulb:before, +.#{$el-css-prefix}-bulb:before { content: $el-var-bulb; } +.#{$el-css-prefix}-icon-bullhorn:before, +.#{$el-css-prefix}-bullhorn:before { content: $el-var-bullhorn; } +.#{$el-css-prefix}-icon-calendar-sign:before, +.#{$el-css-prefix}-calendar-sign:before { content: $el-var-calendar-sign; } +.#{$el-css-prefix}-icon-calendar:before, +.#{$el-css-prefix}-calendar:before { content: $el-var-calendar; } +.#{$el-css-prefix}-icon-camera:before, +.#{$el-css-prefix}-camera:before { content: $el-var-camera; } +.#{$el-css-prefix}-icon-car:before, +.#{$el-css-prefix}-car:before { content: $el-var-car; } +.#{$el-css-prefix}-icon-caret-down:before, +.#{$el-css-prefix}-caret-down:before { content: $el-var-caret-down; } +.#{$el-css-prefix}-icon-caret-left:before, +.#{$el-css-prefix}-caret-left:before { content: $el-var-caret-left; } +.#{$el-css-prefix}-icon-caret-right:before, +.#{$el-css-prefix}-caret-right:before { content: $el-var-caret-right; } +.#{$el-css-prefix}-icon-caret-up:before, +.#{$el-css-prefix}-caret-up:before { content: $el-var-caret-up; } +.#{$el-css-prefix}-icon-cc:before, +.#{$el-css-prefix}-cc:before { content: $el-var-cc; } +.#{$el-css-prefix}-icon-certificate:before, +.#{$el-css-prefix}-certificate:before { content: $el-var-certificate; } +.#{$el-css-prefix}-icon-check-empty:before, +.#{$el-css-prefix}-check-empty:before { content: $el-var-check-empty; } +.#{$el-css-prefix}-icon-check:before, +.#{$el-css-prefix}-check:before { content: $el-var-check; } +.#{$el-css-prefix}-icon-chevron-down:before, +.#{$el-css-prefix}-chevron-down:before { content: $el-var-chevron-down; } +.#{$el-css-prefix}-icon-chevron-left:before, +.#{$el-css-prefix}-chevron-left:before { content: $el-var-chevron-left; } +.#{$el-css-prefix}-icon-chevron-right:before, +.#{$el-css-prefix}-chevron-right:before { content: $el-var-chevron-right; } +.#{$el-css-prefix}-icon-chevron-up:before, +.#{$el-css-prefix}-chevron-up:before { content: $el-var-chevron-up; } +.#{$el-css-prefix}-icon-child:before, +.#{$el-css-prefix}-child:before { content: $el-var-child; } +.#{$el-css-prefix}-icon-circle-arrow-down:before, +.#{$el-css-prefix}-circle-arrow-down:before { content: $el-var-circle-arrow-down; } +.#{$el-css-prefix}-icon-circle-arrow-left:before, +.#{$el-css-prefix}-circle-arrow-left:before { content: $el-var-circle-arrow-left; } +.#{$el-css-prefix}-icon-circle-arrow-right:before, +.#{$el-css-prefix}-circle-arrow-right:before { content: $el-var-circle-arrow-right; } +.#{$el-css-prefix}-icon-circle-arrow-up:before, +.#{$el-css-prefix}-circle-arrow-up:before { content: $el-var-circle-arrow-up; } +.#{$el-css-prefix}-icon-cloud-alt:before, +.#{$el-css-prefix}-cloud-alt:before { content: $el-var-cloud-alt; } +.#{$el-css-prefix}-icon-cloud:before, +.#{$el-css-prefix}-cloud:before { content: $el-var-cloud; } +.#{$el-css-prefix}-icon-cog-alt:before, +.#{$el-css-prefix}-cog-alt:before { content: $el-var-cog-alt; } +.#{$el-css-prefix}-icon-cog:before, +.#{$el-css-prefix}-cog:before { content: $el-var-cog; } +.#{$el-css-prefix}-icon-cogs:before, +.#{$el-css-prefix}-cogs:before { content: $el-var-cogs; } +.#{$el-css-prefix}-icon-comment-alt:before, +.#{$el-css-prefix}-comment-alt:before { content: $el-var-comment-alt; } +.#{$el-css-prefix}-icon-comment:before, +.#{$el-css-prefix}-comment:before { content: $el-var-comment; } +.#{$el-css-prefix}-icon-compass-alt:before, +.#{$el-css-prefix}-compass-alt:before { content: $el-var-compass-alt; } +.#{$el-css-prefix}-icon-compass:before, +.#{$el-css-prefix}-compass:before { content: $el-var-compass; } +.#{$el-css-prefix}-icon-credit-card:before, +.#{$el-css-prefix}-credit-card:before { content: $el-var-credit-card; } +.#{$el-css-prefix}-icon-css:before, +.#{$el-css-prefix}-css:before { content: $el-var-css; } +.#{$el-css-prefix}-icon-dashboard:before, +.#{$el-css-prefix}-dashboard:before { content: $el-var-dashboard; } +.#{$el-css-prefix}-icon-delicious:before, +.#{$el-css-prefix}-delicious:before { content: $el-var-delicious; } +.#{$el-css-prefix}-icon-deviantart:before, +.#{$el-css-prefix}-deviantart:before { content: $el-var-deviantart; } +.#{$el-css-prefix}-icon-digg:before, +.#{$el-css-prefix}-digg:before { content: $el-var-digg; } +.#{$el-css-prefix}-icon-download-alt:before, +.#{$el-css-prefix}-download-alt:before { content: $el-var-download-alt; } +.#{$el-css-prefix}-icon-download:before, +.#{$el-css-prefix}-download:before { content: $el-var-download; } +.#{$el-css-prefix}-icon-dribbble:before, +.#{$el-css-prefix}-dribbble:before { content: $el-var-dribbble; } +.#{$el-css-prefix}-icon-edit:before, +.#{$el-css-prefix}-edit:before { content: $el-var-edit; } +.#{$el-css-prefix}-icon-eject:before, +.#{$el-css-prefix}-eject:before { content: $el-var-eject; } +.#{$el-css-prefix}-icon-envelope-alt:before, +.#{$el-css-prefix}-envelope-alt:before { content: $el-var-envelope-alt; } +.#{$el-css-prefix}-icon-envelope:before, +.#{$el-css-prefix}-envelope:before { content: $el-var-envelope; } +.#{$el-css-prefix}-icon-error-alt:before, +.#{$el-css-prefix}-error-alt:before { content: $el-var-error-alt; } +.#{$el-css-prefix}-icon-error:before, +.#{$el-css-prefix}-error:before { content: $el-var-error; } +.#{$el-css-prefix}-icon-eur:before, +.#{$el-css-prefix}-eur:before { content: $el-var-eur; } +.#{$el-css-prefix}-icon-exclamation-sign:before, +.#{$el-css-prefix}-exclamation-sign:before { content: $el-var-exclamation-sign; } +.#{$el-css-prefix}-icon-eye-close:before, +.#{$el-css-prefix}-eye-close:before { content: $el-var-eye-close; } +.#{$el-css-prefix}-icon-eye-open:before, +.#{$el-css-prefix}-eye-open:before { content: $el-var-eye-open; } +.#{$el-css-prefix}-icon-facebook:before, +.#{$el-css-prefix}-facebook:before { content: $el-var-facebook; } +.#{$el-css-prefix}-icon-facetime-video:before, +.#{$el-css-prefix}-facetime-video:before { content: $el-var-facetime-video; } +.#{$el-css-prefix}-icon-fast-backward:before, +.#{$el-css-prefix}-fast-backward:before { content: $el-var-fast-backward; } +.#{$el-css-prefix}-icon-fast-forward:before, +.#{$el-css-prefix}-fast-forward:before { content: $el-var-fast-forward; } +.#{$el-css-prefix}-icon-female:before, +.#{$el-css-prefix}-female:before { content: $el-var-female; } +.#{$el-css-prefix}-icon-file-alt:before, +.#{$el-css-prefix}-file-alt:before { content: $el-var-file-alt; } +.#{$el-css-prefix}-icon-file-edit-alt:before, +.#{$el-css-prefix}-file-edit-alt:before { content: $el-var-file-edit-alt; } +.#{$el-css-prefix}-icon-file-edit:before, +.#{$el-css-prefix}-file-edit:before { content: $el-var-file-edit; } +.#{$el-css-prefix}-icon-file-new-alt:before, +.#{$el-css-prefix}-file-new-alt:before { content: $el-var-file-new-alt; } +.#{$el-css-prefix}-icon-file-new:before, +.#{$el-css-prefix}-file-new:before { content: $el-var-file-new; } +.#{$el-css-prefix}-icon-file:before, +.#{$el-css-prefix}-file:before { content: $el-var-file; } +.#{$el-css-prefix}-icon-film:before, +.#{$el-css-prefix}-film:before { content: $el-var-film; } +.#{$el-css-prefix}-icon-filter:before, +.#{$el-css-prefix}-filter:before { content: $el-var-filter; } +.#{$el-css-prefix}-icon-fire:before, +.#{$el-css-prefix}-fire:before { content: $el-var-fire; } +.#{$el-css-prefix}-icon-flag-alt:before, +.#{$el-css-prefix}-flag-alt:before { content: $el-var-flag-alt; } +.#{$el-css-prefix}-icon-flag:before, +.#{$el-css-prefix}-flag:before { content: $el-var-flag; } +.#{$el-css-prefix}-icon-flickr:before, +.#{$el-css-prefix}-flickr:before { content: $el-var-flickr; } +.#{$el-css-prefix}-icon-folder-close:before, +.#{$el-css-prefix}-folder-close:before { content: $el-var-folder-close; } +.#{$el-css-prefix}-icon-folder-open:before, +.#{$el-css-prefix}-folder-open:before { content: $el-var-folder-open; } +.#{$el-css-prefix}-icon-folder-sign:before, +.#{$el-css-prefix}-folder-sign:before { content: $el-var-folder-sign; } +.#{$el-css-prefix}-icon-folder:before, +.#{$el-css-prefix}-folder:before { content: $el-var-folder; } +.#{$el-css-prefix}-icon-font:before, +.#{$el-css-prefix}-font:before { content: $el-var-font; } +.#{$el-css-prefix}-icon-fontsize:before, +.#{$el-css-prefix}-fontsize:before { content: $el-var-fontsize; } +.#{$el-css-prefix}-icon-fork:before, +.#{$el-css-prefix}-fork:before { content: $el-var-fork; } +.#{$el-css-prefix}-icon-forward-alt:before, +.#{$el-css-prefix}-forward-alt:before { content: $el-var-forward-alt; } +.#{$el-css-prefix}-icon-forward:before, +.#{$el-css-prefix}-forward:before { content: $el-var-forward; } +.#{$el-css-prefix}-icon-foursquare:before, +.#{$el-css-prefix}-foursquare:before { content: $el-var-foursquare; } +.#{$el-css-prefix}-icon-friendfeed-rect:before, +.#{$el-css-prefix}-friendfeed-rect:before { content: $el-var-friendfeed-rect; } +.#{$el-css-prefix}-icon-friendfeed:before, +.#{$el-css-prefix}-friendfeed:before { content: $el-var-friendfeed; } +.#{$el-css-prefix}-icon-fullscreen:before, +.#{$el-css-prefix}-fullscreen:before { content: $el-var-fullscreen; } +.#{$el-css-prefix}-icon-gallery:before, +.#{$el-css-prefix}-gallery:before { content: $el-var-gallery; } +.#{$el-css-prefix}-icon-gbp:before, +.#{$el-css-prefix}-gbp:before { content: $el-var-gbp; } +.#{$el-css-prefix}-icon-gift:before, +.#{$el-css-prefix}-gift:before { content: $el-var-gift; } +.#{$el-css-prefix}-icon-github-text:before, +.#{$el-css-prefix}-github-text:before { content: $el-var-github-text; } +.#{$el-css-prefix}-icon-github:before, +.#{$el-css-prefix}-github:before { content: $el-var-github; } +.#{$el-css-prefix}-icon-glass:before, +.#{$el-css-prefix}-glass:before { content: $el-var-glass; } +.#{$el-css-prefix}-icon-glasses:before, +.#{$el-css-prefix}-glasses:before { content: $el-var-glasses; } +.#{$el-css-prefix}-icon-globe-alt:before, +.#{$el-css-prefix}-globe-alt:before { content: $el-var-globe-alt; } +.#{$el-css-prefix}-icon-globe:before, +.#{$el-css-prefix}-globe:before { content: $el-var-globe; } +.#{$el-css-prefix}-icon-googleplus:before, +.#{$el-css-prefix}-googleplus:before { content: $el-var-googleplus; } +.#{$el-css-prefix}-icon-graph-alt:before, +.#{$el-css-prefix}-graph-alt:before { content: $el-var-graph-alt; } +.#{$el-css-prefix}-icon-graph:before, +.#{$el-css-prefix}-graph:before { content: $el-var-graph; } +.#{$el-css-prefix}-icon-group-alt:before, +.#{$el-css-prefix}-group-alt:before { content: $el-var-group-alt; } +.#{$el-css-prefix}-icon-group:before, +.#{$el-css-prefix}-group:before { content: $el-var-group; } +.#{$el-css-prefix}-icon-guidedog:before, +.#{$el-css-prefix}-guidedog:before { content: $el-var-guidedog; } +.#{$el-css-prefix}-icon-hand-down:before, +.#{$el-css-prefix}-hand-down:before { content: $el-var-hand-down; } +.#{$el-css-prefix}-icon-hand-left:before, +.#{$el-css-prefix}-hand-left:before { content: $el-var-hand-left; } +.#{$el-css-prefix}-icon-hand-right:before, +.#{$el-css-prefix}-hand-right:before { content: $el-var-hand-right; } +.#{$el-css-prefix}-icon-hand-up:before, +.#{$el-css-prefix}-hand-up:before { content: $el-var-hand-up; } +.#{$el-css-prefix}-icon-hdd:before, +.#{$el-css-prefix}-hdd:before { content: $el-var-hdd; } +.#{$el-css-prefix}-icon-headphones:before, +.#{$el-css-prefix}-headphones:before { content: $el-var-headphones; } +.#{$el-css-prefix}-icon-hearing-impaired:before, +.#{$el-css-prefix}-hearing-impaired:before { content: $el-var-hearing-impaired; } +.#{$el-css-prefix}-icon-heart-alt:before, +.#{$el-css-prefix}-heart-alt:before { content: $el-var-heart-alt; } +.#{$el-css-prefix}-icon-heart-empty:before, +.#{$el-css-prefix}-heart-empty:before { content: $el-var-heart-empty; } +.#{$el-css-prefix}-icon-heart:before, +.#{$el-css-prefix}-heart:before { content: $el-var-heart; } +.#{$el-css-prefix}-icon-home-alt:before, +.#{$el-css-prefix}-home-alt:before { content: $el-var-home-alt; } +.#{$el-css-prefix}-icon-home:before, +.#{$el-css-prefix}-home:before { content: $el-var-home; } +.#{$el-css-prefix}-icon-hourglass:before, +.#{$el-css-prefix}-hourglass:before { content: $el-var-hourglass; } +.#{$el-css-prefix}-icon-idea-alt:before, +.#{$el-css-prefix}-idea-alt:before { content: $el-var-idea-alt; } +.#{$el-css-prefix}-icon-idea:before, +.#{$el-css-prefix}-idea:before { content: $el-var-idea; } +.#{$el-css-prefix}-icon-inbox-alt:before, +.#{$el-css-prefix}-inbox-alt:before { content: $el-var-inbox-alt; } +.#{$el-css-prefix}-icon-inbox-box:before, +.#{$el-css-prefix}-inbox-box:before { content: $el-var-inbox-box; } +.#{$el-css-prefix}-icon-inbox:before, +.#{$el-css-prefix}-inbox:before { content: $el-var-inbox; } +.#{$el-css-prefix}-icon-indent-left:before, +.#{$el-css-prefix}-indent-left:before { content: $el-var-indent-left; } +.#{$el-css-prefix}-icon-indent-right:before, +.#{$el-css-prefix}-indent-right:before { content: $el-var-indent-right; } +.#{$el-css-prefix}-icon-info-circle:before, +.#{$el-css-prefix}-info-circle:before { content: $el-var-info-circle; } +.#{$el-css-prefix}-icon-instagram:before, +.#{$el-css-prefix}-instagram:before { content: $el-var-instagram; } +.#{$el-css-prefix}-icon-iphone-home:before, +.#{$el-css-prefix}-iphone-home:before { content: $el-var-iphone-home; } +.#{$el-css-prefix}-icon-italic:before, +.#{$el-css-prefix}-italic:before { content: $el-var-italic; } +.#{$el-css-prefix}-icon-key:before, +.#{$el-css-prefix}-key:before { content: $el-var-key; } +.#{$el-css-prefix}-icon-laptop-alt:before, +.#{$el-css-prefix}-laptop-alt:before { content: $el-var-laptop-alt; } +.#{$el-css-prefix}-icon-laptop:before, +.#{$el-css-prefix}-laptop:before { content: $el-var-laptop; } +.#{$el-css-prefix}-icon-lastfm:before, +.#{$el-css-prefix}-lastfm:before { content: $el-var-lastfm; } +.#{$el-css-prefix}-icon-leaf:before, +.#{$el-css-prefix}-leaf:before { content: $el-var-leaf; } +.#{$el-css-prefix}-icon-lines:before, +.#{$el-css-prefix}-lines:before { content: $el-var-lines; } +.#{$el-css-prefix}-icon-link:before, +.#{$el-css-prefix}-link:before { content: $el-var-link; } +.#{$el-css-prefix}-icon-linkedin:before, +.#{$el-css-prefix}-linkedin:before { content: $el-var-linkedin; } +.#{$el-css-prefix}-icon-list-alt:before, +.#{$el-css-prefix}-list-alt:before { content: $el-var-list-alt; } +.#{$el-css-prefix}-icon-list:before, +.#{$el-css-prefix}-list:before { content: $el-var-list; } +.#{$el-css-prefix}-icon-livejournal:before, +.#{$el-css-prefix}-livejournal:before { content: $el-var-livejournal; } +.#{$el-css-prefix}-icon-lock-alt:before, +.#{$el-css-prefix}-lock-alt:before { content: $el-var-lock-alt; } +.#{$el-css-prefix}-icon-lock:before, +.#{$el-css-prefix}-lock:before { content: $el-var-lock; } +.#{$el-css-prefix}-icon-magic:before, +.#{$el-css-prefix}-magic:before { content: $el-var-magic; } +.#{$el-css-prefix}-icon-magnet:before, +.#{$el-css-prefix}-magnet:before { content: $el-var-magnet; } +.#{$el-css-prefix}-icon-male:before, +.#{$el-css-prefix}-male:before { content: $el-var-male; } +.#{$el-css-prefix}-icon-map-marker-alt:before, +.#{$el-css-prefix}-map-marker-alt:before { content: $el-var-map-marker-alt; } +.#{$el-css-prefix}-icon-map-marker:before, +.#{$el-css-prefix}-map-marker:before { content: $el-var-map-marker; } +.#{$el-css-prefix}-icon-mic-alt:before, +.#{$el-css-prefix}-mic-alt:before { content: $el-var-mic-alt; } +.#{$el-css-prefix}-icon-mic:before, +.#{$el-css-prefix}-mic:before { content: $el-var-mic; } +.#{$el-css-prefix}-icon-minus-sign:before, +.#{$el-css-prefix}-minus-sign:before { content: $el-var-minus-sign; } +.#{$el-css-prefix}-icon-minus:before, +.#{$el-css-prefix}-minus:before { content: $el-var-minus; } +.#{$el-css-prefix}-icon-move:before, +.#{$el-css-prefix}-move:before { content: $el-var-move; } +.#{$el-css-prefix}-icon-music:before, +.#{$el-css-prefix}-music:before { content: $el-var-music; } +.#{$el-css-prefix}-icon-myspace:before, +.#{$el-css-prefix}-myspace:before { content: $el-var-myspace; } +.#{$el-css-prefix}-icon-network:before, +.#{$el-css-prefix}-network:before { content: $el-var-network; } +.#{$el-css-prefix}-icon-off:before, +.#{$el-css-prefix}-off:before { content: $el-var-off; } +.#{$el-css-prefix}-icon-ok-circle:before, +.#{$el-css-prefix}-ok-circle:before { content: $el-var-ok-circle; } +.#{$el-css-prefix}-icon-ok-sign:before, +.#{$el-css-prefix}-ok-sign:before { content: $el-var-ok-sign; } +.#{$el-css-prefix}-icon-ok:before, +.#{$el-css-prefix}-ok:before { content: $el-var-ok; } +.#{$el-css-prefix}-icon-opensource:before, +.#{$el-css-prefix}-opensource:before { content: $el-var-opensource; } +.#{$el-css-prefix}-icon-paper-clip-alt:before, +.#{$el-css-prefix}-paper-clip-alt:before { content: $el-var-paper-clip-alt; } +.#{$el-css-prefix}-icon-paper-clip:before, +.#{$el-css-prefix}-paper-clip:before { content: $el-var-paper-clip; } +.#{$el-css-prefix}-icon-path:before, +.#{$el-css-prefix}-path:before { content: $el-var-path; } +.#{$el-css-prefix}-icon-pause-alt:before, +.#{$el-css-prefix}-pause-alt:before { content: $el-var-pause-alt; } +.#{$el-css-prefix}-icon-pause:before, +.#{$el-css-prefix}-pause:before { content: $el-var-pause; } +.#{$el-css-prefix}-icon-pencil-alt:before, +.#{$el-css-prefix}-pencil-alt:before { content: $el-var-pencil-alt; } +.#{$el-css-prefix}-icon-pencil:before, +.#{$el-css-prefix}-pencil:before { content: $el-var-pencil; } +.#{$el-css-prefix}-icon-person:before, +.#{$el-css-prefix}-person:before { content: $el-var-person; } +.#{$el-css-prefix}-icon-phone-alt:before, +.#{$el-css-prefix}-phone-alt:before { content: $el-var-phone-alt; } +.#{$el-css-prefix}-icon-phone:before, +.#{$el-css-prefix}-phone:before { content: $el-var-phone; } +.#{$el-css-prefix}-icon-photo-alt:before, +.#{$el-css-prefix}-photo-alt:before { content: $el-var-photo-alt; } +.#{$el-css-prefix}-icon-photo:before, +.#{$el-css-prefix}-photo:before { content: $el-var-photo; } +.#{$el-css-prefix}-icon-picasa:before, +.#{$el-css-prefix}-picasa:before { content: $el-var-picasa; } +.#{$el-css-prefix}-icon-picture:before, +.#{$el-css-prefix}-picture:before { content: $el-var-picture; } +.#{$el-css-prefix}-icon-plane:before, +.#{$el-css-prefix}-plane:before { content: $el-var-plane; } +.#{$el-css-prefix}-icon-play-alt:before, +.#{$el-css-prefix}-play-alt:before { content: $el-var-play-alt; } +.#{$el-css-prefix}-icon-play-circle:before, +.#{$el-css-prefix}-play-circle:before { content: $el-var-play-circle; } +.#{$el-css-prefix}-icon-play:before, +.#{$el-css-prefix}-play:before { content: $el-var-play; } +.#{$el-css-prefix}-icon-plurk-alt:before, +.#{$el-css-prefix}-plurk-alt:before { content: $el-var-plurk-alt; } +.#{$el-css-prefix}-icon-plurk:before, +.#{$el-css-prefix}-plurk:before { content: $el-var-plurk; } +.#{$el-css-prefix}-icon-plus-sign:before, +.#{$el-css-prefix}-plus-sign:before { content: $el-var-plus-sign; } +.#{$el-css-prefix}-icon-plus:before, +.#{$el-css-prefix}-plus:before { content: $el-var-plus; } +.#{$el-css-prefix}-icon-podcast:before, +.#{$el-css-prefix}-podcast:before { content: $el-var-podcast; } +.#{$el-css-prefix}-icon-print:before, +.#{$el-css-prefix}-print:before { content: $el-var-print; } +.#{$el-css-prefix}-icon-puzzle:before, +.#{$el-css-prefix}-puzzle:before { content: $el-var-puzzle; } +.#{$el-css-prefix}-icon-qrcode:before, +.#{$el-css-prefix}-qrcode:before { content: $el-var-qrcode; } +.#{$el-css-prefix}-icon-question-sign:before, +.#{$el-css-prefix}-question-sign:before { content: $el-var-question-sign; } +.#{$el-css-prefix}-icon-question:before, +.#{$el-css-prefix}-question:before { content: $el-var-question; } +.#{$el-css-prefix}-icon-quote-alt:before, +.#{$el-css-prefix}-quote-alt:before { content: $el-var-quote-alt; } +.#{$el-css-prefix}-icon-quote-right-alt:before, +.#{$el-css-prefix}-quote-right-alt:before { content: $el-var-quote-right-alt; } +.#{$el-css-prefix}-icon-quote-right:before, +.#{$el-css-prefix}-quote-right:before { content: $el-var-quote-right; } +.#{$el-css-prefix}-icon-quotes:before, +.#{$el-css-prefix}-quotes:before { content: $el-var-quotes; } +.#{$el-css-prefix}-icon-random:before, +.#{$el-css-prefix}-random:before { content: $el-var-random; } +.#{$el-css-prefix}-icon-record:before, +.#{$el-css-prefix}-record:before { content: $el-var-record; } +.#{$el-css-prefix}-icon-reddit:before, +.#{$el-css-prefix}-reddit:before { content: $el-var-reddit; } +.#{$el-css-prefix}-icon-redux:before, +.#{$el-css-prefix}-redux:before { content: $el-var-redux; } +.#{$el-css-prefix}-icon-refresh:before, +.#{$el-css-prefix}-refresh:before { content: $el-var-refresh; } +.#{$el-css-prefix}-icon-remove-circle:before, +.#{$el-css-prefix}-remove-circle:before { content: $el-var-remove-circle; } +.#{$el-css-prefix}-icon-remove-sign:before, +.#{$el-css-prefix}-remove-sign:before { content: $el-var-remove-sign; } +.#{$el-css-prefix}-icon-remove:before, +.#{$el-css-prefix}-remove:before { content: $el-var-remove; } +.#{$el-css-prefix}-icon-repeat-alt:before, +.#{$el-css-prefix}-repeat-alt:before { content: $el-var-repeat-alt; } +.#{$el-css-prefix}-icon-repeat:before, +.#{$el-css-prefix}-repeat:before { content: $el-var-repeat; } +.#{$el-css-prefix}-icon-resize-full:before, +.#{$el-css-prefix}-resize-full:before { content: $el-var-resize-full; } +.#{$el-css-prefix}-icon-resize-horizontal:before, +.#{$el-css-prefix}-resize-horizontal:before { content: $el-var-resize-horizontal; } +.#{$el-css-prefix}-icon-resize-small:before, +.#{$el-css-prefix}-resize-small:before { content: $el-var-resize-small; } +.#{$el-css-prefix}-icon-resize-vertical:before, +.#{$el-css-prefix}-resize-vertical:before { content: $el-var-resize-vertical; } +.#{$el-css-prefix}-icon-return-key:before, +.#{$el-css-prefix}-return-key:before { content: $el-var-return-key; } +.#{$el-css-prefix}-icon-retweet:before, +.#{$el-css-prefix}-retweet:before { content: $el-var-retweet; } +.#{$el-css-prefix}-icon-reverse-alt:before, +.#{$el-css-prefix}-reverse-alt:before { content: $el-var-reverse-alt; } +.#{$el-css-prefix}-icon-road:before, +.#{$el-css-prefix}-road:before { content: $el-var-road; } +.#{$el-css-prefix}-icon-rss:before, +.#{$el-css-prefix}-rss:before { content: $el-var-rss; } +.#{$el-css-prefix}-icon-scissors:before, +.#{$el-css-prefix}-scissors:before { content: $el-var-scissors; } +.#{$el-css-prefix}-icon-screen-alt:before, +.#{$el-css-prefix}-screen-alt:before { content: $el-var-screen-alt; } +.#{$el-css-prefix}-icon-screen:before, +.#{$el-css-prefix}-screen:before { content: $el-var-screen; } +.#{$el-css-prefix}-icon-screenshot:before, +.#{$el-css-prefix}-screenshot:before { content: $el-var-screenshot; } +.#{$el-css-prefix}-icon-search-alt:before, +.#{$el-css-prefix}-search-alt:before { content: $el-var-search-alt; } +.#{$el-css-prefix}-icon-search:before, +.#{$el-css-prefix}-search:before { content: $el-var-search; } +.#{$el-css-prefix}-icon-share-alt:before, +.#{$el-css-prefix}-share-alt:before { content: $el-var-share-alt; } +.#{$el-css-prefix}-icon-share:before, +.#{$el-css-prefix}-share:before { content: $el-var-share; } +.#{$el-css-prefix}-icon-shopping-cart-sign:before, +.#{$el-css-prefix}-shopping-cart-sign:before { content: $el-var-shopping-cart-sign; } +.#{$el-css-prefix}-icon-shopping-cart:before, +.#{$el-css-prefix}-shopping-cart:before { content: $el-var-shopping-cart; } +.#{$el-css-prefix}-icon-shortcode:before, +.#{$el-css-prefix}-shortcode:before { content: $el-var-shortcode; } +.#{$el-css-prefix}-icon-signal:before, +.#{$el-css-prefix}-signal:before { content: $el-var-signal; } +.#{$el-css-prefix}-icon-skype:before, +.#{$el-css-prefix}-skype:before { content: $el-var-skype; } +.#{$el-css-prefix}-icon-slideshare:before, +.#{$el-css-prefix}-slideshare:before { content: $el-var-slideshare; } +.#{$el-css-prefix}-icon-smiley-alt:before, +.#{$el-css-prefix}-smiley-alt:before { content: $el-var-smiley-alt; } +.#{$el-css-prefix}-icon-smiley:before, +.#{$el-css-prefix}-smiley:before { content: $el-var-smiley; } +.#{$el-css-prefix}-icon-soundcloud:before, +.#{$el-css-prefix}-soundcloud:before { content: $el-var-soundcloud; } +.#{$el-css-prefix}-icon-speaker:before, +.#{$el-css-prefix}-speaker:before { content: $el-var-speaker; } +.#{$el-css-prefix}-icon-spotify:before, +.#{$el-css-prefix}-spotify:before { content: $el-var-spotify; } +.#{$el-css-prefix}-icon-stackoverflow:before, +.#{$el-css-prefix}-stackoverflow:before { content: $el-var-stackoverflow; } +.#{$el-css-prefix}-icon-star-alt:before, +.#{$el-css-prefix}-star-alt:before { content: $el-var-star-alt; } +.#{$el-css-prefix}-icon-star-empty:before, +.#{$el-css-prefix}-star-empty:before { content: $el-var-star-empty; } +.#{$el-css-prefix}-icon-star:before, +.#{$el-css-prefix}-star:before { content: $el-var-star; } +.#{$el-css-prefix}-icon-step-backward:before, +.#{$el-css-prefix}-step-backward:before { content: $el-var-step-backward; } +.#{$el-css-prefix}-icon-step-forward:before, +.#{$el-css-prefix}-step-forward:before { content: $el-var-step-forward; } +.#{$el-css-prefix}-icon-stop-alt:before, +.#{$el-css-prefix}-stop-alt:before { content: $el-var-stop-alt; } +.#{$el-css-prefix}-icon-stop:before, +.#{$el-css-prefix}-stop:before { content: $el-var-stop; } +.#{$el-css-prefix}-icon-stumbleupon:before, +.#{$el-css-prefix}-stumbleupon:before { content: $el-var-stumbleupon; } +.#{$el-css-prefix}-icon-tag:before, +.#{$el-css-prefix}-tag:before { content: $el-var-tag; } +.#{$el-css-prefix}-icon-tags:before, +.#{$el-css-prefix}-tags:before { content: $el-var-tags; } +.#{$el-css-prefix}-icon-tasks:before, +.#{$el-css-prefix}-tasks:before { content: $el-var-tasks; } +.#{$el-css-prefix}-icon-text-height:before, +.#{$el-css-prefix}-text-height:before { content: $el-var-text-height; } +.#{$el-css-prefix}-icon-text-width:before, +.#{$el-css-prefix}-text-width:before { content: $el-var-text-width; } +.#{$el-css-prefix}-icon-th-large:before, +.#{$el-css-prefix}-th-large:before { content: $el-var-th-large; } +.#{$el-css-prefix}-icon-th-list:before, +.#{$el-css-prefix}-th-list:before { content: $el-var-th-list; } +.#{$el-css-prefix}-icon-th:before, +.#{$el-css-prefix}-th:before { content: $el-var-th; } +.#{$el-css-prefix}-icon-thumbs-down:before, +.#{$el-css-prefix}-thumbs-down:before { content: $el-var-thumbs-down; } +.#{$el-css-prefix}-icon-thumbs-up:before, +.#{$el-css-prefix}-thumbs-up:before { content: $el-var-thumbs-up; } +.#{$el-css-prefix}-icon-time-alt:before, +.#{$el-css-prefix}-time-alt:before { content: $el-var-time-alt; } +.#{$el-css-prefix}-icon-time:before, +.#{$el-css-prefix}-time:before { content: $el-var-time; } +.#{$el-css-prefix}-icon-tint:before, +.#{$el-css-prefix}-tint:before { content: $el-var-tint; } +.#{$el-css-prefix}-icon-torso:before, +.#{$el-css-prefix}-torso:before { content: $el-var-torso; } +.#{$el-css-prefix}-icon-trash-alt:before, +.#{$el-css-prefix}-trash-alt:before { content: $el-var-trash-alt; } +.#{$el-css-prefix}-icon-trash:before, +.#{$el-css-prefix}-trash:before { content: $el-var-trash; } +.#{$el-css-prefix}-icon-tumblr:before, +.#{$el-css-prefix}-tumblr:before { content: $el-var-tumblr; } +.#{$el-css-prefix}-icon-twitter:before, +.#{$el-css-prefix}-twitter:before { content: $el-var-twitter; } +.#{$el-css-prefix}-icon-universal-access:before, +.#{$el-css-prefix}-universal-access:before { content: $el-var-universal-access; } +.#{$el-css-prefix}-icon-unlock-alt:before, +.#{$el-css-prefix}-unlock-alt:before { content: $el-var-unlock-alt; } +.#{$el-css-prefix}-icon-unlock:before, +.#{$el-css-prefix}-unlock:before { content: $el-var-unlock; } +.#{$el-css-prefix}-icon-upload:before, +.#{$el-css-prefix}-upload:before { content: $el-var-upload; } +.#{$el-css-prefix}-icon-usd:before, +.#{$el-css-prefix}-usd:before { content: $el-var-usd; } +.#{$el-css-prefix}-icon-user:before, +.#{$el-css-prefix}-user:before { content: $el-var-user; } +.#{$el-css-prefix}-icon-viadeo:before, +.#{$el-css-prefix}-viadeo:before { content: $el-var-viadeo; } +.#{$el-css-prefix}-icon-video-alt:before, +.#{$el-css-prefix}-video-alt:before { content: $el-var-video-alt; } +.#{$el-css-prefix}-icon-video-chat:before, +.#{$el-css-prefix}-video-chat:before { content: $el-var-video-chat; } +.#{$el-css-prefix}-icon-video:before, +.#{$el-css-prefix}-video:before { content: $el-var-video; } +.#{$el-css-prefix}-icon-view-mode:before, +.#{$el-css-prefix}-view-mode:before { content: $el-var-view-mode; } +.#{$el-css-prefix}-icon-vimeo:before, +.#{$el-css-prefix}-vimeo:before { content: $el-var-vimeo; } +.#{$el-css-prefix}-icon-vkontakte:before, +.#{$el-css-prefix}-vkontakte:before { content: $el-var-vkontakte; } +.#{$el-css-prefix}-icon-volume-down:before, +.#{$el-css-prefix}-volume-down:before { content: $el-var-volume-down; } +.#{$el-css-prefix}-icon-volume-off:before, +.#{$el-css-prefix}-volume-off:before { content: $el-var-volume-off; } +.#{$el-css-prefix}-icon-volume-up:before, +.#{$el-css-prefix}-volume-up:before { content: $el-var-volume-up; } +.#{$el-css-prefix}-icon-w3c:before, +.#{$el-css-prefix}-w3c:before { content: $el-var-w3c; } +.#{$el-css-prefix}-icon-warning-sign:before, +.#{$el-css-prefix}-warning-sign:before { content: $el-var-warning-sign; } +.#{$el-css-prefix}-icon-website-alt:before, +.#{$el-css-prefix}-website-alt:before { content: $el-var-website-alt; } +.#{$el-css-prefix}-icon-website:before, +.#{$el-css-prefix}-website:before { content: $el-var-website; } +.#{$el-css-prefix}-icon-wheelchair:before, +.#{$el-css-prefix}-wheelchair:before { content: $el-var-wheelchair; } +.#{$el-css-prefix}-icon-wordpress:before, +.#{$el-css-prefix}-wordpress:before { content: $el-var-wordpress; } +.#{$el-css-prefix}-icon-wrench-alt:before, +.#{$el-css-prefix}-wrench-alt:before { content: $el-var-wrench-alt; } +.#{$el-css-prefix}-icon-wrench:before, +.#{$el-css-prefix}-wrench:before { content: $el-var-wrench; } +.#{$el-css-prefix}-icon-youtube:before, +.#{$el-css-prefix}-youtube:before { content: $el-var-youtube; } +.#{$el-css-prefix}-icon-zoom-in:before, +.#{$el-css-prefix}-zoom-in:before { content: $el-var-zoom-in; } +.#{$el-css-prefix}-icon-zoom-out:before, +.#{$el-css-prefix}-zoom-out:before { content: $el-var-zoom-out; } diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_larger.scss b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_larger.scss new file mode 100644 index 0000000..f76eab7 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_larger.scss @@ -0,0 +1,13 @@ +// Icon Sizes +// ------------------------- + +/* makes the font 33% larger relative to the icon container */ +.#{$el-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -15%; +} +.#{$el-css-prefix}-2x { font-size: 2em; } +.#{$el-css-prefix}-3x { font-size: 3em; } +.#{$el-css-prefix}-4x { font-size: 4em; } +.#{$el-css-prefix}-5x { font-size: 5em; } diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_list.scss b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_list.scss new file mode 100644 index 0000000..fefec82 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_list.scss @@ -0,0 +1,19 @@ +// List Icons +// ------------------------- + +.#{$el-css-prefix}-ul { + padding-left: 0; + margin-left: $el-li-width; + list-style-type: none; + > li { position: relative; } +} +.#{$el-css-prefix}-li { + position: absolute; + left: -$el-li-width; + width: $el-li-width; + top: (2em / 14); + text-align: center; + &.#{$el-css-prefix}-lg { + left: -$el-li-width + (4em / 14); + } +} diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_mixins.scss b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_mixins.scss new file mode 100644 index 0000000..b443823 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_mixins.scss @@ -0,0 +1,27 @@ +// Mixins +// -------------------------- + +@mixin el-icon() { + display: inline-block; + font: normal normal normal #{$el-font-size-base}/1 'Elusive-Icons'; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); // ensures no half-pixel rendering in firefox + +} + +@mixin el-icon-rotate($degrees, $rotation) { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); + -webkit-transform: rotate($degrees); + -ms-transform: rotate($degrees); + transform: rotate($degrees); +} + +@mixin el-icon-flip($horiz, $vert, $rotation) { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); + -webkit-transform: scale($horiz, $vert); + -ms-transform: scale($horiz, $vert); + transform: scale($horiz, $vert); +} diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_path.scss b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_path.scss new file mode 100644 index 0000000..4989ef2 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_path.scss @@ -0,0 +1,14 @@ +/* FONT PATH + * -------------------------- */ + +@font-face { + font-family: 'Elusive-Icons'; + src: url('#{$el-font-path}/elusiveicons-webfont.eot?v=#{$el-version}'); + src: url('#{$el-font-path}/elusiveicons-webfont.eot?#iefix&v=#{$el-version}') format('embedded-opentype'), + //url('#{$el-font-path}/elusiveicons-webfont.woff2?v=#{$el-version}') format('woff2'), + url('#{$el-font-path}/elusiveicons-webfont.woff?v=#{$el-version}') format('woff'), + url('#{$el-font-path}/elusiveicons-webfont.ttf?v=#{$el-version}') format('truetype'), + url('#{$el-font-path}/elusiveicons-webfont.svg?v=#{$el-version}#elusiveiconsregular') format('svg'); + font-weight: normal; + font-style: normal; +} diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_rotated-flipped.scss b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_rotated-flipped.scss new file mode 100644 index 0000000..8248161 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_rotated-flipped.scss @@ -0,0 +1,20 @@ +// Rotated & Flipped Icons +// ------------------------- + +.#{$el-css-prefix}-rotate-90 { @include el-icon-rotate(90deg, 1); } +.#{$el-css-prefix}-rotate-180 { @include el-icon-rotate(180deg, 2); } +.#{$el-css-prefix}-rotate-270 { @include el-icon-rotate(270deg, 3); } + +.#{$el-css-prefix}-flip-horizontal { @include el-icon-flip(-1, 1, 0); } +.#{$el-css-prefix}-flip-vertical { @include el-icon-flip(1, -1, 2); } + +// Hook for IE8-9 +// ------------------------- + +:root .#{$el-css-prefix}-rotate-90, +:root .#{$el-css-prefix}-rotate-180, +:root .#{$el-css-prefix}-rotate-270, +:root .#{$el-css-prefix}-flip-horizontal, +:root .#{$el-css-prefix}-flip-vertical { + filter: none; +} diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_stacked.scss b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_stacked.scss new file mode 100644 index 0000000..68d84bb --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_stacked.scss @@ -0,0 +1,20 @@ +// Stacked Icons +// ------------------------- + +.#{$el-css-prefix}-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.#{$el-css-prefix}-stack-1x, .#{$el-css-prefix}-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.#{$el-css-prefix}-stack-1x { line-height: inherit; } +.#{$el-css-prefix}-stack-2x { font-size: 2em; } +.#{$el-css-prefix}-inverse { color: $el-inverse; } diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_variables.scss b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_variables.scss new file mode 100644 index 0000000..b5ddf72 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/_variables.scss @@ -0,0 +1,318 @@ +// Variables +// -------------------------- + +$el-font-path: "fonts" !default; +$el-font-size-base: 14px !default; +$el-css-prefix: el !default; +$el-version: "2.0.0" !default; +$el-border-color: #eee !default; +$el-inverse: #fff !default; +$el-li-width: (30em / 14) !default; + +$el-var-address-book: "\f102"; +$el-var-address-book-alt: "\f101"; +$el-var-adjust: "\f104"; +$el-var-adjust-alt: "\f103"; +$el-var-adult: "\f105"; +$el-var-align-center: "\f106"; +$el-var-align-justify: "\f107"; +$el-var-align-left: "\f108"; +$el-var-align-right: "\f109"; +$el-var-arrow-down: "\f10a"; +$el-var-arrow-left: "\f10b"; +$el-var-arrow-right: "\f10c"; +$el-var-arrow-up: "\f10d"; +$el-var-asl: "\f10e"; +$el-var-asterisk: "\f10f"; +$el-var-backward: "\f110"; +$el-var-ban-circle: "\f111"; +$el-var-barcode: "\f112"; +$el-var-behance: "\f113"; +$el-var-bell: "\f114"; +$el-var-blind: "\f115"; +$el-var-blogger: "\f116"; +$el-var-bold: "\f117"; +$el-var-book: "\f118"; +$el-var-bookmark: "\f11a"; +$el-var-bookmark-empty: "\f119"; +$el-var-brackets: "\f11b"; +$el-var-braille: "\f11c"; +$el-var-briefcase: "\f11d"; +$el-var-broom: "\f11e"; +$el-var-brush: "\f11f"; +$el-var-bulb: "\f120"; +$el-var-bullhorn: "\f121"; +$el-var-calendar: "\f123"; +$el-var-calendar-sign: "\f122"; +$el-var-camera: "\f124"; +$el-var-car: "\f125"; +$el-var-caret-down: "\f126"; +$el-var-caret-left: "\f127"; +$el-var-caret-right: "\f128"; +$el-var-caret-up: "\f129"; +$el-var-cc: "\f12a"; +$el-var-certificate: "\f12b"; +$el-var-check: "\f12d"; +$el-var-check-empty: "\f12c"; +$el-var-chevron-down: "\f12e"; +$el-var-chevron-left: "\f12f"; +$el-var-chevron-right: "\f130"; +$el-var-chevron-up: "\f131"; +$el-var-child: "\f132"; +$el-var-circle-arrow-down: "\f133"; +$el-var-circle-arrow-left: "\f134"; +$el-var-circle-arrow-right: "\f135"; +$el-var-circle-arrow-up: "\f136"; +$el-var-cloud: "\f138"; +$el-var-cloud-alt: "\f137"; +$el-var-cog: "\f13a"; +$el-var-cog-alt: "\f139"; +$el-var-cogs: "\f13b"; +$el-var-comment: "\f13d"; +$el-var-comment-alt: "\f13c"; +$el-var-compass: "\f13f"; +$el-var-compass-alt: "\f13e"; +$el-var-credit-card: "\f140"; +$el-var-css: "\f141"; +$el-var-dashboard: "\f142"; +$el-var-delicious: "\f143"; +$el-var-deviantart: "\f144"; +$el-var-digg: "\f145"; +$el-var-download: "\f147"; +$el-var-download-alt: "\f146"; +$el-var-dribbble: "\f148"; +$el-var-edit: "\f149"; +$el-var-eject: "\f14a"; +$el-var-envelope: "\f14c"; +$el-var-envelope-alt: "\f14b"; +$el-var-error: "\f14e"; +$el-var-error-alt: "\f14d"; +$el-var-eur: "\f14f"; +$el-var-exclamation-sign: "\f150"; +$el-var-eye-close: "\f151"; +$el-var-eye-open: "\f152"; +$el-var-facebook: "\f153"; +$el-var-facetime-video: "\f154"; +$el-var-fast-backward: "\f155"; +$el-var-fast-forward: "\f156"; +$el-var-female: "\f157"; +$el-var-file: "\f15d"; +$el-var-file-alt: "\f158"; +$el-var-file-edit: "\f15a"; +$el-var-file-edit-alt: "\f159"; +$el-var-file-new: "\f15c"; +$el-var-file-new-alt: "\f15b"; +$el-var-film: "\f15e"; +$el-var-filter: "\f15f"; +$el-var-fire: "\f160"; +$el-var-flag: "\f162"; +$el-var-flag-alt: "\f161"; +$el-var-flickr: "\f163"; +$el-var-folder: "\f167"; +$el-var-folder-close: "\f164"; +$el-var-folder-open: "\f165"; +$el-var-folder-sign: "\f166"; +$el-var-font: "\f168"; +$el-var-fontsize: "\f169"; +$el-var-fork: "\f16a"; +$el-var-forward: "\f16c"; +$el-var-forward-alt: "\f16b"; +$el-var-foursquare: "\f16d"; +$el-var-friendfeed: "\f16f"; +$el-var-friendfeed-rect: "\f16e"; +$el-var-fullscreen: "\f170"; +$el-var-gallery: "\f171"; +$el-var-gbp: "\f172"; +$el-var-gift: "\f173"; +$el-var-github: "\f175"; +$el-var-github-text: "\f174"; +$el-var-glass: "\f176"; +$el-var-glasses: "\f177"; +$el-var-globe: "\f179"; +$el-var-globe-alt: "\f178"; +$el-var-googleplus: "\f17a"; +$el-var-graph: "\f17c"; +$el-var-graph-alt: "\f17b"; +$el-var-group: "\f17e"; +$el-var-group-alt: "\f17d"; +$el-var-guidedog: "\f17f"; +$el-var-hand-down: "\f180"; +$el-var-hand-left: "\f181"; +$el-var-hand-right: "\f182"; +$el-var-hand-up: "\f183"; +$el-var-hdd: "\f184"; +$el-var-headphones: "\f185"; +$el-var-hearing-impaired: "\f186"; +$el-var-heart: "\f189"; +$el-var-heart-alt: "\f187"; +$el-var-heart-empty: "\f188"; +$el-var-home: "\f18b"; +$el-var-home-alt: "\f18a"; +$el-var-hourglass: "\f18c"; +$el-var-idea: "\f18e"; +$el-var-idea-alt: "\f18d"; +$el-var-inbox: "\f191"; +$el-var-inbox-alt: "\f18f"; +$el-var-inbox-box: "\f190"; +$el-var-indent-left: "\f192"; +$el-var-indent-right: "\f193"; +$el-var-info-circle: "\f194"; +$el-var-instagram: "\f195"; +$el-var-iphone-home: "\f196"; +$el-var-italic: "\f197"; +$el-var-key: "\f198"; +$el-var-laptop: "\f19a"; +$el-var-laptop-alt: "\f199"; +$el-var-lastfm: "\f19b"; +$el-var-leaf: "\f19c"; +$el-var-lines: "\f19d"; +$el-var-link: "\f19e"; +$el-var-linkedin: "\f19f"; +$el-var-list: "\f1a1"; +$el-var-list-alt: "\f1a0"; +$el-var-livejournal: "\f1a2"; +$el-var-lock: "\f1a4"; +$el-var-lock-alt: "\f1a3"; +$el-var-magic: "\f1a5"; +$el-var-magnet: "\f1a6"; +$el-var-male: "\f1a7"; +$el-var-map-marker: "\f1a9"; +$el-var-map-marker-alt: "\f1a8"; +$el-var-mic: "\f1ab"; +$el-var-mic-alt: "\f1aa"; +$el-var-minus: "\f1ad"; +$el-var-minus-sign: "\f1ac"; +$el-var-move: "\f1ae"; +$el-var-music: "\f1af"; +$el-var-myspace: "\f1b0"; +$el-var-network: "\f1b1"; +$el-var-off: "\f1b2"; +$el-var-ok: "\f1b5"; +$el-var-ok-circle: "\f1b3"; +$el-var-ok-sign: "\f1b4"; +$el-var-opensource: "\f1b6"; +$el-var-paper-clip: "\f1b8"; +$el-var-paper-clip-alt: "\f1b7"; +$el-var-path: "\f1b9"; +$el-var-pause: "\f1bb"; +$el-var-pause-alt: "\f1ba"; +$el-var-pencil: "\f1bd"; +$el-var-pencil-alt: "\f1bc"; +$el-var-person: "\f1be"; +$el-var-phone: "\f1c0"; +$el-var-phone-alt: "\f1bf"; +$el-var-photo: "\f1c2"; +$el-var-photo-alt: "\f1c1"; +$el-var-picasa: "\f1c3"; +$el-var-picture: "\f1c4"; +$el-var-plane: "\f1c5"; +$el-var-play: "\f1c8"; +$el-var-play-alt: "\f1c6"; +$el-var-play-circle: "\f1c7"; +$el-var-plurk: "\f1ca"; +$el-var-plurk-alt: "\f1c9"; +$el-var-plus: "\f1cc"; +$el-var-plus-sign: "\f1cb"; +$el-var-podcast: "\f1cd"; +$el-var-print: "\f1ce"; +$el-var-puzzle: "\f1cf"; +$el-var-qrcode: "\f1d0"; +$el-var-question: "\f1d2"; +$el-var-question-sign: "\f1d1"; +$el-var-quote-alt: "\f1d3"; +$el-var-quote-right: "\f1d5"; +$el-var-quote-right-alt: "\f1d4"; +$el-var-quotes: "\f1d6"; +$el-var-random: "\f1d7"; +$el-var-record: "\f1d8"; +$el-var-reddit: "\f1d9"; +$el-var-redux: "\f1da"; +$el-var-refresh: "\f1db"; +$el-var-remove: "\f1de"; +$el-var-remove-circle: "\f1dc"; +$el-var-remove-sign: "\f1dd"; +$el-var-repeat: "\f1e0"; +$el-var-repeat-alt: "\f1df"; +$el-var-resize-full: "\f1e1"; +$el-var-resize-horizontal: "\f1e2"; +$el-var-resize-small: "\f1e3"; +$el-var-resize-vertical: "\f1e4"; +$el-var-return-key: "\f1e5"; +$el-var-retweet: "\f1e6"; +$el-var-reverse-alt: "\f1e7"; +$el-var-road: "\f1e8"; +$el-var-rss: "\f1e9"; +$el-var-scissors: "\f1ea"; +$el-var-screen: "\f1ec"; +$el-var-screen-alt: "\f1eb"; +$el-var-screenshot: "\f1ed"; +$el-var-search: "\f1ef"; +$el-var-search-alt: "\f1ee"; +$el-var-share: "\f1f1"; +$el-var-share-alt: "\f1f0"; +$el-var-shopping-cart: "\f1f3"; +$el-var-shopping-cart-sign: "\f1f2"; +$el-var-shortcode: "\f1f4"; +$el-var-signal: "\f1f5"; +$el-var-skype: "\f1f6"; +$el-var-slideshare: "\f1f7"; +$el-var-smiley: "\f1f9"; +$el-var-smiley-alt: "\f1f8"; +$el-var-soundcloud: "\f1fa"; +$el-var-speaker: "\f1fb"; +$el-var-spotify: "\f1fc"; +$el-var-stackoverflow: "\f1fd"; +$el-var-star: "\f200"; +$el-var-star-alt: "\f1fe"; +$el-var-star-empty: "\f1ff"; +$el-var-step-backward: "\f201"; +$el-var-step-forward: "\f202"; +$el-var-stop: "\f204"; +$el-var-stop-alt: "\f203"; +$el-var-stumbleupon: "\f205"; +$el-var-tag: "\f206"; +$el-var-tags: "\f207"; +$el-var-tasks: "\f208"; +$el-var-text-height: "\f209"; +$el-var-text-width: "\f20a"; +$el-var-th: "\f20d"; +$el-var-th-large: "\f20b"; +$el-var-th-list: "\f20c"; +$el-var-thumbs-down: "\f20e"; +$el-var-thumbs-up: "\f20f"; +$el-var-time: "\f211"; +$el-var-time-alt: "\f210"; +$el-var-tint: "\f212"; +$el-var-torso: "\f213"; +$el-var-trash: "\f215"; +$el-var-trash-alt: "\f214"; +$el-var-tumblr: "\f216"; +$el-var-twitter: "\f217"; +$el-var-universal-access: "\f218"; +$el-var-unlock: "\f21a"; +$el-var-unlock-alt: "\f219"; +$el-var-upload: "\f21b"; +$el-var-usd: "\f21c"; +$el-var-user: "\f21d"; +$el-var-viadeo: "\f21e"; +$el-var-video: "\f221"; +$el-var-video-alt: "\f21f"; +$el-var-video-chat: "\f220"; +$el-var-view-mode: "\f222"; +$el-var-vimeo: "\f223"; +$el-var-vkontakte: "\f224"; +$el-var-volume-down: "\f225"; +$el-var-volume-off: "\f226"; +$el-var-volume-up: "\f227"; +$el-var-w3c: "\f228"; +$el-var-warning-sign: "\f229"; +$el-var-website: "\f22b"; +$el-var-website-alt: "\f22a"; +$el-var-wheelchair: "\f22c"; +$el-var-wordpress: "\f22d"; +$el-var-wrench: "\f22f"; +$el-var-wrench-alt: "\f22e"; +$el-var-youtube: "\f230"; +$el-var-zoom-in: "\f231"; +$el-var-zoom-out: "\f232"; + diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/elusive-icons.css b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/elusive-icons.css new file mode 100644 index 0000000..3c63a12 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/elusive-icons.css @@ -0,0 +1,4 @@ +@charset "UTF-8";/*! + * Elusive Icons 2.0.0 by @ReduxFramework - http://elusiveicons.com - @reduxframework + * License - http://elusiveicons.com/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'Elusive-Icons';src:url("fonts/elusiveicons-webfont.eot?v=2.0.0");src:url("fonts/elusiveicons-webfont.eot?#iefix&v=2.0.0") format("embedded-opentype"),url("fonts/elusiveicons-webfont.woff?v=2.0.0") format("woff"),url("fonts/elusiveicons-webfont.ttf?v=2.0.0") format("truetype"),url("fonts/elusiveicons-webfont.svg?v=2.0.0#elusiveiconsregular") format("svg");font-weight:normal;font-style:normal}.el{display:inline-block;font:normal normal normal 14px/1 "Elusive-Icons";font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0,0)}.el-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.el-2x{font-size:2em}.el-3x{font-size:3em}.el-4x{font-size:4em}.el-5x{font-size:5em}.el-fw{width:1.28571em;text-align:center}.el-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.el-ul>li{position:relative}.el-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.el-li.el-lg{left:-1.85714em}.el-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.el.pull-left{margin-right:.3em}.el.pull-right{margin-left:.3em}.el-spin{-webkit-animation:el-spin 2s infinite linear;animation:el-spin 2s infinite linear}.el-pulse{-webkit-animation:el-spin 1s infinite steps(8);animation:el-spin 1s infinite steps(8)}@-webkit-keyframes el-spin{0{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes el-spin{0{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.el-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.el-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.el-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.el-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .el-rotate-90,:root .el-rotate-180,:root .el-rotate-270,:root .el-flip-horizontal,:root .el-flip-vertical{filter:none}.el-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.el-stack-1x,.el-stack-2x{position:absolute;left:0;width:100%;text-align:center}.el-stack-1x{line-height:inherit}.el-stack-2x{font-size:2em}.el-inverse{color:#fff}.el-icon-address-book-alt:before,.el-address-book-alt:before{content:"ï„"}.el-icon-address-book:before,.el-address-book:before{content:"ï„‚"}.el-icon-adjust-alt:before,.el-adjust-alt:before{content:""}.el-icon-adjust:before,.el-adjust:before{content:"ï„„"}.el-icon-adult:before,.el-adult:before{content:"ï„…"}.el-icon-align-center:before,.el-align-center:before{content:""}.el-icon-align-justify:before,.el-align-justify:before{content:""}.el-icon-align-left:before,.el-align-left:before{content:""}.el-icon-align-right:before,.el-align-right:before{content:""}.el-icon-arrow-down:before,.el-arrow-down:before{content:"ï„Š"}.el-icon-arrow-left:before,.el-arrow-left:before{content:"ï„‹"}.el-icon-arrow-right:before,.el-arrow-right:before{content:"ï„Œ"}.el-icon-arrow-up:before,.el-arrow-up:before{content:"ï„"}.el-icon-asl:before,.el-asl:before{content:"ï„Ž"}.el-icon-asterisk:before,.el-asterisk:before{content:"ï„"}.el-icon-backward:before,.el-backward:before{content:"ï„"}.el-icon-ban-circle:before,.el-ban-circle:before{content:"ï„‘"}.el-icon-barcode:before,.el-barcode:before{content:"ï„’"}.el-icon-behance:before,.el-behance:before{content:"ï„“"}.el-icon-bell:before,.el-bell:before{content:"ï„”"}.el-icon-blind:before,.el-blind:before{content:"ï„•"}.el-icon-blogger:before,.el-blogger:before{content:"ï„–"}.el-icon-bold:before,.el-bold:before{content:"ï„—"}.el-icon-book:before,.el-book:before{content:""}.el-icon-bookmark-empty:before,.el-bookmark-empty:before{content:"ï„™"}.el-icon-bookmark:before,.el-bookmark:before{content:"ï„š"}.el-icon-brackets:before,.el-brackets:before{content:"ï„›"}.el-icon-braille:before,.el-braille:before{content:"ï„œ"}.el-icon-briefcase:before,.el-briefcase:before{content:"ï„"}.el-icon-broom:before,.el-broom:before{content:"ï„ž"}.el-icon-brush:before,.el-brush:before{content:"ï„Ÿ"}.el-icon-bulb:before,.el-bulb:before{content:"ï„ "}.el-icon-bullhorn:before,.el-bullhorn:before{content:"ï„¡"}.el-icon-calendar-sign:before,.el-calendar-sign:before{content:"ï„¢"}.el-icon-calendar:before,.el-calendar:before{content:"ï„£"}.el-icon-camera:before,.el-camera:before{content:""}.el-icon-car:before,.el-car:before{content:"ï„¥"}.el-icon-caret-down:before,.el-caret-down:before{content:""}.el-icon-caret-left:before,.el-caret-left:before{content:""}.el-icon-caret-right:before,.el-caret-right:before{content:""}.el-icon-caret-up:before,.el-caret-up:before{content:"ï„©"}.el-icon-cc:before,.el-cc:before{content:""}.el-icon-certificate:before,.el-certificate:before{content:"ï„«"}.el-icon-check-empty:before,.el-check-empty:before{content:""}.el-icon-check:before,.el-check:before{content:"ï„­"}.el-icon-chevron-down:before,.el-chevron-down:before{content:"ï„®"}.el-icon-chevron-left:before,.el-chevron-left:before{content:""}.el-icon-chevron-right:before,.el-chevron-right:before{content:"ï„°"}.el-icon-chevron-up:before,.el-chevron-up:before{content:""}.el-icon-child:before,.el-child:before{content:""}.el-icon-circle-arrow-down:before,.el-circle-arrow-down:before{content:""}.el-icon-circle-arrow-left:before,.el-circle-arrow-left:before{content:"ï„´"}.el-icon-circle-arrow-right:before,.el-circle-arrow-right:before{content:""}.el-icon-circle-arrow-up:before,.el-circle-arrow-up:before{content:""}.el-icon-cloud-alt:before,.el-cloud-alt:before{content:"ï„·"}.el-icon-cloud:before,.el-cloud:before{content:""}.el-icon-cog-alt:before,.el-cog-alt:before{content:""}.el-icon-cog:before,.el-cog:before{content:""}.el-icon-cogs:before,.el-cogs:before{content:"ï„»"}.el-icon-comment-alt:before,.el-comment-alt:before{content:""}.el-icon-comment:before,.el-comment:before{content:""}.el-icon-compass-alt:before,.el-compass-alt:before{content:""}.el-icon-compass:before,.el-compass:before{content:"ï„¿"}.el-icon-credit-card:before,.el-credit-card:before{content:"ï…€"}.el-icon-css:before,.el-css:before{content:"ï…"}.el-icon-dashboard:before,.el-dashboard:before{content:"ï…‚"}.el-icon-delicious:before,.el-delicious:before{content:"ï…ƒ"}.el-icon-deviantart:before,.el-deviantart:before{content:"ï…„"}.el-icon-digg:before,.el-digg:before{content:"ï……"}.el-icon-download-alt:before,.el-download-alt:before{content:"ï…†"}.el-icon-download:before,.el-download:before{content:"ï…‡"}.el-icon-dribbble:before,.el-dribbble:before{content:"ï…ˆ"}.el-icon-edit:before,.el-edit:before{content:"ï…‰"}.el-icon-eject:before,.el-eject:before{content:"ï…Š"}.el-icon-envelope-alt:before,.el-envelope-alt:before{content:"ï…‹"}.el-icon-envelope:before,.el-envelope:before{content:"ï…Œ"}.el-icon-error-alt:before,.el-error-alt:before{content:"ï…"}.el-icon-error:before,.el-error:before{content:"ï…Ž"}.el-icon-eur:before,.el-eur:before{content:"ï…"}.el-icon-exclamation-sign:before,.el-exclamation-sign:before{content:"ï…"}.el-icon-eye-close:before,.el-eye-close:before{content:"ï…‘"}.el-icon-eye-open:before,.el-eye-open:before{content:"ï…’"}.el-icon-facebook:before,.el-facebook:before{content:"ï…“"}.el-icon-facetime-video:before,.el-facetime-video:before{content:"ï…”"}.el-icon-fast-backward:before,.el-fast-backward:before{content:"ï…•"}.el-icon-fast-forward:before,.el-fast-forward:before{content:"ï…–"}.el-icon-female:before,.el-female:before{content:"ï…—"}.el-icon-file-alt:before,.el-file-alt:before{content:"ï…˜"}.el-icon-file-edit-alt:before,.el-file-edit-alt:before{content:"ï…™"}.el-icon-file-edit:before,.el-file-edit:before{content:"ï…š"}.el-icon-file-new-alt:before,.el-file-new-alt:before{content:"ï…›"}.el-icon-file-new:before,.el-file-new:before{content:"ï…œ"}.el-icon-file:before,.el-file:before{content:"ï…"}.el-icon-film:before,.el-film:before{content:"ï…ž"}.el-icon-filter:before,.el-filter:before{content:"ï…Ÿ"}.el-icon-fire:before,.el-fire:before{content:"ï… "}.el-icon-flag-alt:before,.el-flag-alt:before{content:"ï…¡"}.el-icon-flag:before,.el-flag:before{content:"ï…¢"}.el-icon-flickr:before,.el-flickr:before{content:"ï…£"}.el-icon-folder-close:before,.el-folder-close:before{content:"ï…¤"}.el-icon-folder-open:before,.el-folder-open:before{content:"ï…¥"}.el-icon-folder-sign:before,.el-folder-sign:before{content:"ï…¦"}.el-icon-folder:before,.el-folder:before{content:"ï…§"}.el-icon-font:before,.el-font:before{content:"ï…¨"}.el-icon-fontsize:before,.el-fontsize:before{content:"ï…©"}.el-icon-fork:before,.el-fork:before{content:"ï…ª"}.el-icon-forward-alt:before,.el-forward-alt:before{content:"ï…«"}.el-icon-forward:before,.el-forward:before{content:"ï…¬"}.el-icon-foursquare:before,.el-foursquare:before{content:"ï…­"}.el-icon-friendfeed-rect:before,.el-friendfeed-rect:before{content:"ï…®"}.el-icon-friendfeed:before,.el-friendfeed:before{content:"ï…¯"}.el-icon-fullscreen:before,.el-fullscreen:before{content:"ï…°"}.el-icon-gallery:before,.el-gallery:before{content:"ï…±"}.el-icon-gbp:before,.el-gbp:before{content:"ï…²"}.el-icon-gift:before,.el-gift:before{content:"ï…³"}.el-icon-github-text:before,.el-github-text:before{content:"ï…´"}.el-icon-github:before,.el-github:before{content:"ï…µ"}.el-icon-glass:before,.el-glass:before{content:"ï…¶"}.el-icon-glasses:before,.el-glasses:before{content:"ï…·"}.el-icon-globe-alt:before,.el-globe-alt:before{content:"ï…¸"}.el-icon-globe:before,.el-globe:before{content:"ï…¹"}.el-icon-googleplus:before,.el-googleplus:before{content:"ï…º"}.el-icon-graph-alt:before,.el-graph-alt:before{content:"ï…»"}.el-icon-graph:before,.el-graph:before{content:"ï…¼"}.el-icon-group-alt:before,.el-group-alt:before{content:"ï…½"}.el-icon-group:before,.el-group:before{content:"ï…¾"}.el-icon-guidedog:before,.el-guidedog:before{content:"ï…¿"}.el-icon-hand-down:before,.el-hand-down:before{content:""}.el-icon-hand-left:before,.el-hand-left:before{content:"ï†"}.el-icon-hand-right:before,.el-hand-right:before{content:""}.el-icon-hand-up:before,.el-hand-up:before{content:""}.el-icon-hdd:before,.el-hdd:before{content:""}.el-icon-headphones:before,.el-headphones:before{content:""}.el-icon-hearing-impaired:before,.el-hearing-impaired:before{content:""}.el-icon-heart-alt:before,.el-heart-alt:before{content:""}.el-icon-heart-empty:before,.el-heart-empty:before{content:""}.el-icon-heart:before,.el-heart:before{content:""}.el-icon-home-alt:before,.el-home-alt:before{content:""}.el-icon-home:before,.el-home:before{content:""}.el-icon-hourglass:before,.el-hourglass:before{content:""}.el-icon-idea-alt:before,.el-idea-alt:before{content:"ï†"}.el-icon-idea:before,.el-idea:before{content:""}.el-icon-inbox-alt:before,.el-inbox-alt:before{content:"ï†"}.el-icon-inbox-box:before,.el-inbox-box:before{content:"ï†"}.el-icon-inbox:before,.el-inbox:before{content:""}.el-icon-indent-left:before,.el-indent-left:before{content:""}.el-icon-indent-right:before,.el-indent-right:before{content:""}.el-icon-info-circle:before,.el-info-circle:before{content:""}.el-icon-instagram:before,.el-instagram:before{content:""}.el-icon-iphone-home:before,.el-iphone-home:before{content:""}.el-icon-italic:before,.el-italic:before{content:""}.el-icon-key:before,.el-key:before{content:""}.el-icon-laptop-alt:before,.el-laptop-alt:before{content:""}.el-icon-laptop:before,.el-laptop:before{content:""}.el-icon-lastfm:before,.el-lastfm:before{content:""}.el-icon-leaf:before,.el-leaf:before{content:""}.el-icon-lines:before,.el-lines:before{content:"ï†"}.el-icon-link:before,.el-link:before{content:""}.el-icon-linkedin:before,.el-linkedin:before{content:""}.el-icon-list-alt:before,.el-list-alt:before{content:""}.el-icon-list:before,.el-list:before{content:""}.el-icon-livejournal:before,.el-livejournal:before{content:""}.el-icon-lock-alt:before,.el-lock-alt:before{content:""}.el-icon-lock:before,.el-lock:before{content:""}.el-icon-magic:before,.el-magic:before{content:""}.el-icon-magnet:before,.el-magnet:before{content:""}.el-icon-male:before,.el-male:before{content:""}.el-icon-map-marker-alt:before,.el-map-marker-alt:before{content:""}.el-icon-map-marker:before,.el-map-marker:before{content:""}.el-icon-mic-alt:before,.el-mic-alt:before{content:""}.el-icon-mic:before,.el-mic:before{content:""}.el-icon-minus-sign:before,.el-minus-sign:before{content:""}.el-icon-minus:before,.el-minus:before{content:""}.el-icon-move:before,.el-move:before{content:""}.el-icon-music:before,.el-music:before{content:""}.el-icon-myspace:before,.el-myspace:before{content:""}.el-icon-network:before,.el-network:before{content:""}.el-icon-off:before,.el-off:before{content:""}.el-icon-ok-circle:before,.el-ok-circle:before{content:""}.el-icon-ok-sign:before,.el-ok-sign:before{content:""}.el-icon-ok:before,.el-ok:before{content:""}.el-icon-opensource:before,.el-opensource:before{content:""}.el-icon-paper-clip-alt:before,.el-paper-clip-alt:before{content:""}.el-icon-paper-clip:before,.el-paper-clip:before{content:""}.el-icon-path:before,.el-path:before{content:""}.el-icon-pause-alt:before,.el-pause-alt:before{content:""}.el-icon-pause:before,.el-pause:before{content:""}.el-icon-pencil-alt:before,.el-pencil-alt:before{content:""}.el-icon-pencil:before,.el-pencil:before{content:""}.el-icon-person:before,.el-person:before{content:""}.el-icon-phone-alt:before,.el-phone-alt:before{content:""}.el-icon-phone:before,.el-phone:before{content:""}.el-icon-photo-alt:before,.el-photo-alt:before{content:"ï‡"}.el-icon-photo:before,.el-photo:before{content:""}.el-icon-picasa:before,.el-picasa:before{content:""}.el-icon-picture:before,.el-picture:before{content:""}.el-icon-plane:before,.el-plane:before{content:""}.el-icon-play-alt:before,.el-play-alt:before{content:""}.el-icon-play-circle:before,.el-play-circle:before{content:""}.el-icon-play:before,.el-play:before{content:""}.el-icon-plurk-alt:before,.el-plurk-alt:before{content:""}.el-icon-plurk:before,.el-plurk:before{content:""}.el-icon-plus-sign:before,.el-plus-sign:before{content:""}.el-icon-plus:before,.el-plus:before{content:""}.el-icon-podcast:before,.el-podcast:before{content:"ï‡"}.el-icon-print:before,.el-print:before{content:""}.el-icon-puzzle:before,.el-puzzle:before{content:"ï‡"}.el-icon-qrcode:before,.el-qrcode:before{content:"ï‡"}.el-icon-question-sign:before,.el-question-sign:before{content:""}.el-icon-question:before,.el-question:before{content:""}.el-icon-quote-alt:before,.el-quote-alt:before{content:""}.el-icon-quote-right-alt:before,.el-quote-right-alt:before{content:""}.el-icon-quote-right:before,.el-quote-right:before{content:""}.el-icon-quotes:before,.el-quotes:before{content:""}.el-icon-random:before,.el-random:before{content:""}.el-icon-record:before,.el-record:before{content:""}.el-icon-reddit:before,.el-reddit:before{content:""}.el-icon-redux:before,.el-redux:before{content:""}.el-icon-refresh:before,.el-refresh:before{content:""}.el-icon-remove-circle:before,.el-remove-circle:before{content:""}.el-icon-remove-sign:before,.el-remove-sign:before{content:"ï‡"}.el-icon-remove:before,.el-remove:before{content:""}.el-icon-repeat-alt:before,.el-repeat-alt:before{content:""}.el-icon-repeat:before,.el-repeat:before{content:""}.el-icon-resize-full:before,.el-resize-full:before{content:""}.el-icon-resize-horizontal:before,.el-resize-horizontal:before{content:""}.el-icon-resize-small:before,.el-resize-small:before{content:""}.el-icon-resize-vertical:before,.el-resize-vertical:before{content:""}.el-icon-return-key:before,.el-return-key:before{content:""}.el-icon-retweet:before,.el-retweet:before{content:""}.el-icon-reverse-alt:before,.el-reverse-alt:before{content:""}.el-icon-road:before,.el-road:before{content:""}.el-icon-rss:before,.el-rss:before{content:""}.el-icon-scissors:before,.el-scissors:before{content:""}.el-icon-screen-alt:before,.el-screen-alt:before{content:""}.el-icon-screen:before,.el-screen:before{content:""}.el-icon-screenshot:before,.el-screenshot:before{content:""}.el-icon-search-alt:before,.el-search-alt:before{content:""}.el-icon-search:before,.el-search:before{content:""}.el-icon-share-alt:before,.el-share-alt:before{content:""}.el-icon-share:before,.el-share:before{content:""}.el-icon-shopping-cart-sign:before,.el-shopping-cart-sign:before{content:""}.el-icon-shopping-cart:before,.el-shopping-cart:before{content:""}.el-icon-shortcode:before,.el-shortcode:before{content:""}.el-icon-signal:before,.el-signal:before{content:""}.el-icon-skype:before,.el-skype:before{content:""}.el-icon-slideshare:before,.el-slideshare:before{content:""}.el-icon-smiley-alt:before,.el-smiley-alt:before{content:""}.el-icon-smiley:before,.el-smiley:before{content:""}.el-icon-soundcloud:before,.el-soundcloud:before{content:""}.el-icon-speaker:before,.el-speaker:before{content:""}.el-icon-spotify:before,.el-spotify:before{content:""}.el-icon-stackoverflow:before,.el-stackoverflow:before{content:""}.el-icon-star-alt:before,.el-star-alt:before{content:""}.el-icon-star-empty:before,.el-star-empty:before{content:""}.el-icon-star:before,.el-star:before{content:""}.el-icon-step-backward:before,.el-step-backward:before{content:"ïˆ"}.el-icon-step-forward:before,.el-step-forward:before{content:""}.el-icon-stop-alt:before,.el-stop-alt:before{content:""}.el-icon-stop:before,.el-stop:before{content:""}.el-icon-stumbleupon:before,.el-stumbleupon:before{content:""}.el-icon-tag:before,.el-tag:before{content:""}.el-icon-tags:before,.el-tags:before{content:""}.el-icon-tasks:before,.el-tasks:before{content:""}.el-icon-text-height:before,.el-text-height:before{content:""}.el-icon-text-width:before,.el-text-width:before{content:""}.el-icon-th-large:before,.el-th-large:before{content:""}.el-icon-th-list:before,.el-th-list:before{content:""}.el-icon-th:before,.el-th:before{content:"ïˆ"}.el-icon-thumbs-down:before,.el-thumbs-down:before{content:""}.el-icon-thumbs-up:before,.el-thumbs-up:before{content:"ïˆ"}.el-icon-time-alt:before,.el-time-alt:before{content:"ïˆ"}.el-icon-time:before,.el-time:before{content:""}.el-icon-tint:before,.el-tint:before{content:""}.el-icon-torso:before,.el-torso:before{content:""}.el-icon-trash-alt:before,.el-trash-alt:before{content:""}.el-icon-trash:before,.el-trash:before{content:""}.el-icon-tumblr:before,.el-tumblr:before{content:""}.el-icon-twitter:before,.el-twitter:before{content:""}.el-icon-universal-access:before,.el-universal-access:before{content:""}.el-icon-unlock-alt:before,.el-unlock-alt:before{content:""}.el-icon-unlock:before,.el-unlock:before{content:""}.el-icon-upload:before,.el-upload:before{content:""}.el-icon-usd:before,.el-usd:before{content:""}.el-icon-user:before,.el-user:before{content:"ïˆ"}.el-icon-viadeo:before,.el-viadeo:before{content:""}.el-icon-video-alt:before,.el-video-alt:before{content:""}.el-icon-video-chat:before,.el-video-chat:before{content:""}.el-icon-video:before,.el-video:before{content:""}.el-icon-view-mode:before,.el-view-mode:before{content:""}.el-icon-vimeo:before,.el-vimeo:before{content:""}.el-icon-vkontakte:before,.el-vkontakte:before{content:""}.el-icon-volume-down:before,.el-volume-down:before{content:""}.el-icon-volume-off:before,.el-volume-off:before{content:""}.el-icon-volume-up:before,.el-volume-up:before{content:""}.el-icon-w3c:before,.el-w3c:before{content:""}.el-icon-warning-sign:before,.el-warning-sign:before{content:""}.el-icon-website-alt:before,.el-website-alt:before{content:""}.el-icon-website:before,.el-website:before{content:""}.el-icon-wheelchair:before,.el-wheelchair:before{content:""}.el-icon-wordpress:before,.el-wordpress:before{content:""}.el-icon-wrench-alt:before,.el-wrench-alt:before{content:""}.el-icon-wrench:before,.el-wrench:before{content:""}.el-icon-youtube:before,.el-youtube:before{content:""}.el-icon-zoom-in:before,.el-zoom-in:before{content:""}.el-icon-zoom-out:before,.el-zoom-out:before{content:""} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/elusive-icons.css.map b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/elusive-icons.css.map new file mode 100644 index 0000000..f6c9f75 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/elusive-icons.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["elusive-icons.scss","_path.scss","_core.scss","_larger.scss","_fixed-width.scss","_list.scss","_variables.scss","_bordered-pulled.scss","_animated.scss","_rotated-flipped.scss","_mixins.scss","_stacked.scss","_icons.scss"], +"names": [], +"file": "elusive-icons.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/elusive-icons.scss b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/elusive-icons.scss new file mode 100644 index 0000000..c3bb7ba --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/elusive-icons/scss/elusive-icons.scss @@ -0,0 +1,17 @@ +/*! + * Elusive Icons 2.0.0 by @ReduxFramework - http://elusiveicons.com - @reduxframework + * License - http://elusiveicons.com/license (Font: SIL OFL 1.1, CSS: MIT License) + */ + +@import "variables"; +@import "mixins"; +@import "path"; +@import "core"; +@import "larger"; +@import "fixed-width"; +@import "list"; +@import "bordered-pulled"; +@import "animated"; +@import "rotated-flipped"; +@import "stacked"; +@import "icons"; diff --git a/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_flat_0_aaaaaa_40x100.png b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000..5b5dab2 Binary files /dev/null and b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_flat_0_aaaaaa_40x100.png differ diff --git a/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_55_fbf9ee_1x400.png b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000..ad3d634 Binary files /dev/null and b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_65_ffffff_1x400.png b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000..42ccba2 Binary files /dev/null and b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_65_ffffff_1x400.png differ diff --git a/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_dadada_1x400.png b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000..5a46b47 Binary files /dev/null and b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_dadada_1x400.png differ diff --git a/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_e6e6e6_1x400.png b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 0000000..86c2baa Binary files /dev/null and b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_ffffff_1x400.png b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_ffffff_1x400.png new file mode 100644 index 0000000..e65ca12 Binary files /dev/null and b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_ffffff_1x400.png differ diff --git a/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000..7c9fa6c Binary files /dev/null and b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_inset-soft_95_fef1ec_1x100.png b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_inset-soft_95_fef1ec_1x100.png new file mode 100644 index 0000000..0e05810 Binary files /dev/null and b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_inset-soft_95_fef1ec_1x100.png differ diff --git a/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_222222_256x240.png b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000..b273ff1 Binary files /dev/null and b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_222222_256x240.png differ diff --git a/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_2e83ff_256x240.png b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000..09d1cdc Binary files /dev/null and b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_2e83ff_256x240.png differ diff --git a/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_454545_256x240.png b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000..59bd45b Binary files /dev/null and b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_454545_256x240.png differ diff --git a/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_888888_256x240.png b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_888888_256x240.png new file mode 100644 index 0000000..6d02426 Binary files /dev/null and b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_888888_256x240.png differ diff --git a/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_cd0a0a_256x240.png b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 0000000..2ab019b Binary files /dev/null and b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_cd0a0a_256x240.png differ diff --git a/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_f6cf3b_256x240.png b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_f6cf3b_256x240.png new file mode 100644 index 0000000..c986935 Binary files /dev/null and b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_f6cf3b_256x240.png differ diff --git a/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png new file mode 100644 index 0000000..42f8f99 Binary files /dev/null and b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png differ diff --git a/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css new file mode 100644 index 0000000..2ba2220 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css @@ -0,0 +1,9 @@ +/*! + * jQuery UI Bootstrap (0.5) + * http://addyosmani.github.com/jquery-ui-bootstrap + * + * Copyright 2012 - 2013, Addy Osmani + * Dual licensed under the MIT or GPL Version 2 licenses. + * + * Portions copyright jQuery UI & Twitter Bootstrap + */.redux-container .ui-state-disabled,.control-section-redux .ui-state-disabled,.control-panel-redux .ui-state-disabled,.redux-metabox .ui-state-disabled{cursor:default !important}.redux-container .ui-icon,.control-section-redux .ui-icon,.control-panel-redux .ui-icon,.redux-metabox .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.redux-container .ui-widget-content,.control-section-redux .ui-widget-content,.control-panel-redux .ui-widget-content,.redux-metabox .ui-widget-content{border:1px solid #aaaaaa;background:#fff url(images/ui-bg_glass_75_ffffff_1x400.png) 50% 50% repeat-x;color:#404040}.redux-container .ui-widget-header,.control-section-redux .ui-widget-header,.control-panel-redux .ui-widget-header,.redux-metabox .ui-widget-header{font-weight:bold;border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border:1px solid #666}.redux-container .ui-widget-header a,.control-section-redux .ui-widget-header a,.control-panel-redux .ui-widget-header a,.redux-metabox .ui-widget-header a{color:#222222}.redux-container .ui-state-default,.redux-container .ui-widget-content .ui-state-default,.redux-container .ui-widget-header .ui-state-default,.control-section-redux .ui-state-default,.control-section-redux .ui-widget-content .ui-state-default,.control-section-redux .ui-widget-header .ui-state-default,.control-panel-redux .ui-state-default,.control-panel-redux .ui-widget-content .ui-state-default,.control-panel-redux .ui-widget-header .ui-state-default,.redux-metabox .ui-state-default,.redux-metabox .ui-widget-content .ui-state-default,.redux-metabox .ui-widget-header .ui-state-default{background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), color-stop(25%, #fff), to(#e6e6e6));background-image:-webkit-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #fff, #fff 25%, #e6e6e6);background-image:-ms-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-o-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:linear-gradient(#fff, #fff 25%, #e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);text-shadow:0 1px 1px rgba(255,255,255,0.75);color:#333;font-size:13px;line-height:normal;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-webkit-transition:0.1s linear background-image;-moz-transition:0.1s linear background-image;-ms-transition:0.1s linear background-image;-o-transition:0.1s linear background-image;transition:0.1s linear background-image;overflow:visible}.redux-container .ui-state-default a,.redux-container .ui-state-default a:link,.redux-container .ui-state-default a:visited,.control-section-redux .ui-state-default a,.control-section-redux .ui-state-default a:link,.control-section-redux .ui-state-default a:visited,.control-panel-redux .ui-state-default a,.control-panel-redux .ui-state-default a:link,.control-panel-redux .ui-state-default a:visited,.redux-metabox .ui-state-default a,.redux-metabox .ui-state-default a:link,.redux-metabox .ui-state-default a:visited{color:#555555;text-decoration:none}.redux-container .ui-state-hover,.redux-container .ui-widget-content .ui-state-hover,.redux-container .ui-widget-header .ui-state-hover,.redux-container .ui-state-focus,.redux-container .ui-widget-content .ui-state-focus,.redux-container .ui-widget-header .ui-state-focus,.control-section-redux .ui-state-hover,.control-section-redux .ui-widget-content .ui-state-hover,.control-section-redux .ui-widget-header .ui-state-hover,.control-section-redux .ui-state-focus,.control-section-redux .ui-widget-content .ui-state-focus,.control-section-redux .ui-widget-header .ui-state-focus,.control-panel-redux .ui-state-hover,.control-panel-redux .ui-widget-content .ui-state-hover,.control-panel-redux .ui-widget-header .ui-state-hover,.control-panel-redux .ui-state-focus,.control-panel-redux .ui-widget-content .ui-state-focus,.control-panel-redux .ui-widget-header .ui-state-focus,.redux-metabox .ui-state-hover,.redux-metabox .ui-widget-content .ui-state-hover,.redux-metabox .ui-widget-header .ui-state-hover,.redux-metabox .ui-state-focus,.redux-metabox .ui-widget-content .ui-state-focus,.redux-metabox .ui-widget-header .ui-state-focus{background-position:0 -15px;color:#333;text-decoration:none}.redux-container .ui-state-hover a,.redux-container .ui-state-hover a:hover,.redux-container .ui-state-hover a:link,.redux-container .ui-state-hover a:visited,.control-section-redux .ui-state-hover a,.control-section-redux .ui-state-hover a:hover,.control-section-redux .ui-state-hover a:link,.control-section-redux .ui-state-hover a:visited,.control-panel-redux .ui-state-hover a,.control-panel-redux .ui-state-hover a:hover,.control-panel-redux .ui-state-hover a:link,.control-panel-redux .ui-state-hover a:visited,.redux-metabox .ui-state-hover a,.redux-metabox .ui-state-hover a:hover,.redux-metabox .ui-state-hover a:link,.redux-metabox .ui-state-hover a:visited{color:#212121;text-decoration:none}.redux-container .ui-state-active,.redux-container .ui-widget-content .ui-state-active,.redux-container .ui-widget-header .ui-state-active,.control-section-redux .ui-state-active,.control-section-redux .ui-widget-content .ui-state-active,.control-section-redux .ui-widget-header .ui-state-active,.control-panel-redux .ui-state-active,.control-panel-redux .ui-widget-content .ui-state-active,.control-panel-redux .ui-widget-header .ui-state-active,.redux-metabox .ui-state-active,.redux-metabox .ui-widget-content .ui-state-active,.redux-metabox .ui-widget-header .ui-state-active{border:1px solid #aaaaaa;font-weight:normal;color:#212121}.redux-container .ui-state-active a,.redux-container .ui-state-active a:link,.redux-container .ui-state-active a:visited,.control-section-redux .ui-state-active a,.control-section-redux .ui-state-active a:link,.control-section-redux .ui-state-active a:visited,.control-panel-redux .ui-state-active a,.control-panel-redux .ui-state-active a:link,.control-panel-redux .ui-state-active a:visited,.redux-metabox .ui-state-active a,.redux-metabox .ui-state-active a:link,.redux-metabox .ui-state-active a:visited{color:#212121;text-decoration:none}.redux-container .ui-widget :active,.control-section-redux .ui-widget :active,.control-panel-redux .ui-widget :active,.redux-metabox .ui-widget :active{outline:none}.redux-container .ui-state-highlight p,.redux-container .ui-state-error p,.redux-container .ui-state-default p,.control-section-redux .ui-state-highlight p,.control-section-redux .ui-state-error p,.control-section-redux .ui-state-default p,.control-panel-redux .ui-state-highlight p,.control-panel-redux .ui-state-error p,.control-panel-redux .ui-state-default p,.redux-metabox .ui-state-highlight p,.redux-metabox .ui-state-error p,.redux-metabox .ui-state-default p{font-size:13px;font-weight:normal;line-height:18px;margin:7px 15px}.redux-container .ui-state-highlight,.redux-container .ui-widget-content .ui-state-highlight,.redux-container .ui-widget-header .ui-state-highlight,.control-section-redux .ui-state-highlight,.control-section-redux .ui-widget-content .ui-state-highlight,.control-section-redux .ui-widget-header .ui-state-highlight,.control-panel-redux .ui-state-highlight,.control-panel-redux .ui-widget-content .ui-state-highlight,.control-panel-redux .ui-widget-header .ui-state-highlight,.redux-metabox .ui-state-highlight,.redux-metabox .ui-widget-content .ui-state-highlight,.redux-metabox .ui-widget-header .ui-state-highlight{position:relative;margin-bottom:18px;color:#404040;background-color:#eedc94;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));background-image:-moz-linear-gradient(top, #fceec1, #eedc94);background-image:-ms-linear-gradient(top, #fceec1, #eedc94);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));background-image:-webkit-linear-gradient(top, #fceec1, #eedc94);background-image:-o-linear-gradient(top, #fceec1, #eedc94);background-image:linear-gradient(top, #fceec1, #eedc94);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#eedc94 #eedc94 #e4c652;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);text-shadow:0 1px 0 rgba(255,255,255,0.5);border-width:1px;border-style:solid;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25)}.redux-container .ui-state-highlight a,.redux-container .ui-widget-content .ui-state-highlight a,.redux-container .ui-widget-header .ui-state-highlight a,.control-section-redux .ui-state-highlight a,.control-section-redux .ui-widget-content .ui-state-highlight a,.control-section-redux .ui-widget-header .ui-state-highlight a,.control-panel-redux .ui-state-highlight a,.control-panel-redux .ui-widget-content .ui-state-highlight a,.control-panel-redux .ui-widget-header .ui-state-highlight a,.redux-metabox .ui-state-highlight a,.redux-metabox .ui-widget-content .ui-state-highlight a,.redux-metabox .ui-widget-header .ui-state-highlight a{color:#363636}.redux-container .ui-state-error,.redux-container .ui-widget-content .ui-state-error,.redux-container .ui-widget-header .ui-state-error,.control-section-redux .ui-state-error,.control-section-redux .ui-widget-content .ui-state-error,.control-section-redux .ui-widget-header .ui-state-error,.control-panel-redux .ui-state-error,.control-panel-redux .ui-widget-content .ui-state-error,.control-panel-redux .ui-widget-header .ui-state-error,.redux-metabox .ui-state-error,.redux-metabox .ui-widget-content .ui-state-error,.redux-metabox .ui-widget-header .ui-state-error{position:relative;margin-bottom:18px;color:#ffffff;border-width:1px;border-style:solid;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);background-color:#c43c35;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#c43c35 #c43c35 #882a25;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-state-error a,.redux-container .ui-widget-content .ui-state-error a,.redux-container .ui-widget-header .ui-state-error a,.control-section-redux .ui-state-error a,.control-section-redux .ui-widget-content .ui-state-error a,.control-section-redux .ui-widget-header .ui-state-error a,.control-panel-redux .ui-state-error a,.control-panel-redux .ui-widget-content .ui-state-error a,.control-panel-redux .ui-widget-header .ui-state-error a,.redux-metabox .ui-state-error a,.redux-metabox .ui-widget-content .ui-state-error a,.redux-metabox .ui-widget-header .ui-state-error a{color:#cd0a0a}.redux-container .ui-state-error-text,.redux-container .ui-widget-content .ui-state-error-text,.redux-container .ui-widget-header .ui-state-error-text,.control-section-redux .ui-state-error-text,.control-section-redux .ui-widget-content .ui-state-error-text,.control-section-redux .ui-widget-header .ui-state-error-text,.control-panel-redux .ui-state-error-text,.control-panel-redux .ui-widget-content .ui-state-error-text,.control-panel-redux .ui-widget-header .ui-state-error-text,.redux-metabox .ui-state-error-text,.redux-metabox .ui-widget-content .ui-state-error-text,.redux-metabox .ui-widget-header .ui-state-error-text{color:#cd0a0a}.redux-container .ui-priority-primary,.redux-container .ui-widget-content .ui-priority-primary,.redux-container .ui-widget-header .ui-priority-primary,.control-section-redux .ui-priority-primary,.control-section-redux .ui-widget-content .ui-priority-primary,.control-section-redux .ui-widget-header .ui-priority-primary,.control-panel-redux .ui-priority-primary,.control-panel-redux .ui-widget-content .ui-priority-primary,.control-panel-redux .ui-widget-header .ui-priority-primary,.redux-metabox .ui-priority-primary,.redux-metabox .ui-widget-content .ui-priority-primary,.redux-metabox .ui-widget-header .ui-priority-primary{font-weight:bold}.redux-container .ui-priority-secondary,.redux-container .ui-widget-content .ui-priority-secondary,.redux-container .ui-widget-header .ui-priority-secondary,.control-section-redux .ui-priority-secondary,.control-section-redux .ui-widget-content .ui-priority-secondary,.control-section-redux .ui-widget-header .ui-priority-secondary,.control-panel-redux .ui-priority-secondary,.control-panel-redux .ui-widget-content .ui-priority-secondary,.control-panel-redux .ui-widget-header .ui-priority-secondary,.redux-metabox .ui-priority-secondary,.redux-metabox .ui-widget-content .ui-priority-secondary,.redux-metabox .ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.redux-container .ui-state-disabled,.redux-container .ui-widget-content .ui-state-disabled,.redux-container .ui-widget-header .ui-state-disabled,.control-section-redux .ui-state-disabled,.control-section-redux .ui-widget-content .ui-state-disabled,.control-section-redux .ui-widget-header .ui-state-disabled,.control-panel-redux .ui-state-disabled,.control-panel-redux .ui-widget-content .ui-state-disabled,.control-panel-redux .ui-widget-header .ui-state-disabled,.redux-metabox .ui-state-disabled,.redux-metabox .ui-widget-content .ui-state-disabled,.redux-metabox .ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.redux-container .ui-state-disabled .ui-icon,.control-section-redux .ui-state-disabled .ui-icon,.control-panel-redux .ui-state-disabled .ui-icon,.redux-metabox .ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.redux-container .ui-icon,.control-section-redux .ui-icon,.control-panel-redux .ui-icon,.redux-metabox .ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.redux-container .ui-widget-content .ui-icon,.control-section-redux .ui-widget-content .ui-icon,.control-panel-redux .ui-widget-content .ui-icon,.redux-metabox .ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.redux-container .ui-widget-header .ui-icon,.control-section-redux .ui-widget-header .ui-icon,.control-panel-redux .ui-widget-header .ui-icon,.redux-metabox .ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.redux-container .ui-state-default .ui-icon,.control-section-redux .ui-state-default .ui-icon,.control-panel-redux .ui-state-default .ui-icon,.redux-metabox .ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.redux-container .ui-state-hover .ui-icon,.redux-container .ui-state-focus .ui-icon,.control-section-redux .ui-state-hover .ui-icon,.control-section-redux .ui-state-focus .ui-icon,.control-panel-redux .ui-state-hover .ui-icon,.control-panel-redux .ui-state-focus .ui-icon,.redux-metabox .ui-state-hover .ui-icon,.redux-metabox .ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.redux-container .ui-state-active .ui-icon,.control-section-redux .ui-state-active .ui-icon,.control-panel-redux .ui-state-active .ui-icon,.redux-metabox .ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.redux-container .ui-state-highlight .ui-icon,.control-section-redux .ui-state-highlight .ui-icon,.control-panel-redux .ui-state-highlight .ui-icon,.redux-metabox .ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.redux-container .ui-state-error .ui-icon,.redux-container .ui-state-error-text .ui-icon,.control-section-redux .ui-state-error .ui-icon,.control-section-redux .ui-state-error-text .ui-icon,.control-panel-redux .ui-state-error .ui-icon,.control-panel-redux .ui-state-error-text .ui-icon,.redux-metabox .ui-state-error .ui-icon,.redux-metabox .ui-state-error-text .ui-icon{background-image:url(images/ui-icons_f6cf3b_256x240.png)}.redux-container .ui-icon-carat-1-n,.control-section-redux .ui-icon-carat-1-n,.control-panel-redux .ui-icon-carat-1-n,.redux-metabox .ui-icon-carat-1-n{background-position:0 0}.redux-container .ui-icon-carat-1-ne,.control-section-redux .ui-icon-carat-1-ne,.control-panel-redux .ui-icon-carat-1-ne,.redux-metabox .ui-icon-carat-1-ne{background-position:-16px 0}.redux-container .ui-icon-carat-1-e,.control-section-redux .ui-icon-carat-1-e,.control-panel-redux .ui-icon-carat-1-e,.redux-metabox .ui-icon-carat-1-e{background-position:-32px 0}.redux-container .ui-icon-carat-1-se,.control-section-redux .ui-icon-carat-1-se,.control-panel-redux .ui-icon-carat-1-se,.redux-metabox .ui-icon-carat-1-se{background-position:-48px 0}.redux-container .ui-icon-carat-1-s,.control-section-redux .ui-icon-carat-1-s,.control-panel-redux .ui-icon-carat-1-s,.redux-metabox .ui-icon-carat-1-s{background-position:-64px 0}.redux-container .ui-icon-carat-1-sw,.control-section-redux .ui-icon-carat-1-sw,.control-panel-redux .ui-icon-carat-1-sw,.redux-metabox .ui-icon-carat-1-sw{background-position:-80px 0}.redux-container .ui-icon-carat-1-w,.control-section-redux .ui-icon-carat-1-w,.control-panel-redux .ui-icon-carat-1-w,.redux-metabox .ui-icon-carat-1-w{background-position:-96px 0}.redux-container .ui-icon-carat-1-nw,.control-section-redux .ui-icon-carat-1-nw,.control-panel-redux .ui-icon-carat-1-nw,.redux-metabox .ui-icon-carat-1-nw{background-position:-112px 0}.redux-container .ui-icon-carat-2-n-s,.control-section-redux .ui-icon-carat-2-n-s,.control-panel-redux .ui-icon-carat-2-n-s,.redux-metabox .ui-icon-carat-2-n-s{background-position:-128px 0}.redux-container .ui-icon-carat-2-e-w,.control-section-redux .ui-icon-carat-2-e-w,.control-panel-redux .ui-icon-carat-2-e-w,.redux-metabox .ui-icon-carat-2-e-w{background-position:-144px 0}.redux-container .ui-icon-triangle-1-n,.control-section-redux .ui-icon-triangle-1-n,.control-panel-redux .ui-icon-triangle-1-n,.redux-metabox .ui-icon-triangle-1-n{background-position:0 -16px}.redux-container .ui-icon-triangle-1-ne,.control-section-redux .ui-icon-triangle-1-ne,.control-panel-redux .ui-icon-triangle-1-ne,.redux-metabox .ui-icon-triangle-1-ne{background-position:-16px -16px}.redux-container .ui-icon-triangle-1-e,.control-section-redux .ui-icon-triangle-1-e,.control-panel-redux .ui-icon-triangle-1-e,.redux-metabox .ui-icon-triangle-1-e{background-position:-32px -16px}.redux-container .ui-icon-triangle-1-se,.control-section-redux .ui-icon-triangle-1-se,.control-panel-redux .ui-icon-triangle-1-se,.redux-metabox .ui-icon-triangle-1-se{background-position:-48px -16px}.redux-container .ui-icon-triangle-1-s,.control-section-redux .ui-icon-triangle-1-s,.control-panel-redux .ui-icon-triangle-1-s,.redux-metabox .ui-icon-triangle-1-s{background-position:-64px -16px}.redux-container .ui-icon-triangle-1-sw,.control-section-redux .ui-icon-triangle-1-sw,.control-panel-redux .ui-icon-triangle-1-sw,.redux-metabox .ui-icon-triangle-1-sw{background-position:-80px -16px}.redux-container .ui-icon-triangle-1-w,.control-section-redux .ui-icon-triangle-1-w,.control-panel-redux .ui-icon-triangle-1-w,.redux-metabox .ui-icon-triangle-1-w{background-position:-96px -16px}.redux-container .ui-icon-triangle-1-nw,.control-section-redux .ui-icon-triangle-1-nw,.control-panel-redux .ui-icon-triangle-1-nw,.redux-metabox .ui-icon-triangle-1-nw{background-position:-112px -16px}.redux-container .ui-icon-triangle-2-n-s,.control-section-redux .ui-icon-triangle-2-n-s,.control-panel-redux .ui-icon-triangle-2-n-s,.redux-metabox .ui-icon-triangle-2-n-s{background-position:-128px -16px}.redux-container .ui-icon-triangle-2-e-w,.control-section-redux .ui-icon-triangle-2-e-w,.control-panel-redux .ui-icon-triangle-2-e-w,.redux-metabox .ui-icon-triangle-2-e-w{background-position:-144px -16px}.redux-container .ui-icon-arrow-1-n,.control-section-redux .ui-icon-arrow-1-n,.control-panel-redux .ui-icon-arrow-1-n,.redux-metabox .ui-icon-arrow-1-n{background-position:0 -32px}.redux-container .ui-icon-arrow-1-ne,.control-section-redux .ui-icon-arrow-1-ne,.control-panel-redux .ui-icon-arrow-1-ne,.redux-metabox .ui-icon-arrow-1-ne{background-position:-16px -32px}.redux-container .ui-icon-arrow-1-e,.control-section-redux .ui-icon-arrow-1-e,.control-panel-redux .ui-icon-arrow-1-e,.redux-metabox .ui-icon-arrow-1-e{background-position:-32px -32px}.redux-container .ui-icon-arrow-1-se,.control-section-redux .ui-icon-arrow-1-se,.control-panel-redux .ui-icon-arrow-1-se,.redux-metabox .ui-icon-arrow-1-se{background-position:-48px -32px}.redux-container .ui-icon-arrow-1-s,.control-section-redux .ui-icon-arrow-1-s,.control-panel-redux .ui-icon-arrow-1-s,.redux-metabox .ui-icon-arrow-1-s{background-position:-64px -32px}.redux-container .ui-icon-arrow-1-sw,.control-section-redux .ui-icon-arrow-1-sw,.control-panel-redux .ui-icon-arrow-1-sw,.redux-metabox .ui-icon-arrow-1-sw{background-position:-80px -32px}.redux-container .ui-icon-arrow-1-w,.control-section-redux .ui-icon-arrow-1-w,.control-panel-redux .ui-icon-arrow-1-w,.redux-metabox .ui-icon-arrow-1-w{background-position:-96px -32px}.redux-container .ui-icon-arrow-1-nw,.control-section-redux .ui-icon-arrow-1-nw,.control-panel-redux .ui-icon-arrow-1-nw,.redux-metabox .ui-icon-arrow-1-nw{background-position:-112px -32px}.redux-container .ui-icon-arrow-2-n-s,.control-section-redux .ui-icon-arrow-2-n-s,.control-panel-redux .ui-icon-arrow-2-n-s,.redux-metabox .ui-icon-arrow-2-n-s{background-position:-128px -32px}.redux-container .ui-icon-arrow-2-ne-sw,.control-section-redux .ui-icon-arrow-2-ne-sw,.control-panel-redux .ui-icon-arrow-2-ne-sw,.redux-metabox .ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.redux-container .ui-icon-arrow-2-e-w,.control-section-redux .ui-icon-arrow-2-e-w,.control-panel-redux .ui-icon-arrow-2-e-w,.redux-metabox .ui-icon-arrow-2-e-w{background-position:-160px -32px}.redux-container .ui-icon-arrow-2-se-nw,.control-section-redux .ui-icon-arrow-2-se-nw,.control-panel-redux .ui-icon-arrow-2-se-nw,.redux-metabox .ui-icon-arrow-2-se-nw{background-position:-176px -32px}.redux-container .ui-icon-arrowstop-1-n,.control-section-redux .ui-icon-arrowstop-1-n,.control-panel-redux .ui-icon-arrowstop-1-n,.redux-metabox .ui-icon-arrowstop-1-n{background-position:-192px -32px}.redux-container .ui-icon-arrowstop-1-e,.control-section-redux .ui-icon-arrowstop-1-e,.control-panel-redux .ui-icon-arrowstop-1-e,.redux-metabox .ui-icon-arrowstop-1-e{background-position:-208px -32px}.redux-container .ui-icon-arrowstop-1-s,.control-section-redux .ui-icon-arrowstop-1-s,.control-panel-redux .ui-icon-arrowstop-1-s,.redux-metabox .ui-icon-arrowstop-1-s{background-position:-224px -32px}.redux-container .ui-icon-arrowstop-1-w,.control-section-redux .ui-icon-arrowstop-1-w,.control-panel-redux .ui-icon-arrowstop-1-w,.redux-metabox .ui-icon-arrowstop-1-w{background-position:-240px -32px}.redux-container .ui-icon-arrowthick-1-n,.control-section-redux .ui-icon-arrowthick-1-n,.control-panel-redux .ui-icon-arrowthick-1-n,.redux-metabox .ui-icon-arrowthick-1-n{background-position:0 -48px}.redux-container .ui-icon-arrowthick-1-ne,.control-section-redux .ui-icon-arrowthick-1-ne,.control-panel-redux .ui-icon-arrowthick-1-ne,.redux-metabox .ui-icon-arrowthick-1-ne{background-position:-16px -48px}.redux-container .ui-icon-arrowthick-1-e,.control-section-redux .ui-icon-arrowthick-1-e,.control-panel-redux .ui-icon-arrowthick-1-e,.redux-metabox .ui-icon-arrowthick-1-e{background-position:-32px -48px}.redux-container .ui-icon-arrowthick-1-se,.control-section-redux .ui-icon-arrowthick-1-se,.control-panel-redux .ui-icon-arrowthick-1-se,.redux-metabox .ui-icon-arrowthick-1-se{background-position:-48px -48px}.redux-container .ui-icon-arrowthick-1-s,.control-section-redux .ui-icon-arrowthick-1-s,.control-panel-redux .ui-icon-arrowthick-1-s,.redux-metabox .ui-icon-arrowthick-1-s{background-position:-64px -48px}.redux-container .ui-icon-arrowthick-1-sw,.control-section-redux .ui-icon-arrowthick-1-sw,.control-panel-redux .ui-icon-arrowthick-1-sw,.redux-metabox .ui-icon-arrowthick-1-sw{background-position:-80px -48px}.redux-container .ui-icon-arrowthick-1-w,.control-section-redux .ui-icon-arrowthick-1-w,.control-panel-redux .ui-icon-arrowthick-1-w,.redux-metabox .ui-icon-arrowthick-1-w{background-position:-96px -48px}.redux-container .ui-icon-arrowthick-1-nw,.control-section-redux .ui-icon-arrowthick-1-nw,.control-panel-redux .ui-icon-arrowthick-1-nw,.redux-metabox .ui-icon-arrowthick-1-nw{background-position:-112px -48px}.redux-container .ui-icon-arrowthick-2-n-s,.control-section-redux .ui-icon-arrowthick-2-n-s,.control-panel-redux .ui-icon-arrowthick-2-n-s,.redux-metabox .ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.redux-container .ui-icon-arrowthick-2-ne-sw,.control-section-redux .ui-icon-arrowthick-2-ne-sw,.control-panel-redux .ui-icon-arrowthick-2-ne-sw,.redux-metabox .ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.redux-container .ui-icon-arrowthick-2-e-w,.control-section-redux .ui-icon-arrowthick-2-e-w,.control-panel-redux .ui-icon-arrowthick-2-e-w,.redux-metabox .ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.redux-container .ui-icon-arrowthick-2-se-nw,.control-section-redux .ui-icon-arrowthick-2-se-nw,.control-panel-redux .ui-icon-arrowthick-2-se-nw,.redux-metabox .ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.redux-container .ui-icon-arrowthickstop-1-n,.control-section-redux .ui-icon-arrowthickstop-1-n,.control-panel-redux .ui-icon-arrowthickstop-1-n,.redux-metabox .ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.redux-container .ui-icon-arrowthickstop-1-e,.control-section-redux .ui-icon-arrowthickstop-1-e,.control-panel-redux .ui-icon-arrowthickstop-1-e,.redux-metabox .ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.redux-container .ui-icon-arrowthickstop-1-s,.control-section-redux .ui-icon-arrowthickstop-1-s,.control-panel-redux .ui-icon-arrowthickstop-1-s,.redux-metabox .ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.redux-container .ui-icon-arrowthickstop-1-w,.control-section-redux .ui-icon-arrowthickstop-1-w,.control-panel-redux .ui-icon-arrowthickstop-1-w,.redux-metabox .ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.redux-container .ui-icon-arrowreturnthick-1-w,.control-section-redux .ui-icon-arrowreturnthick-1-w,.control-panel-redux .ui-icon-arrowreturnthick-1-w,.redux-metabox .ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.redux-container .ui-icon-arrowreturnthick-1-n,.control-section-redux .ui-icon-arrowreturnthick-1-n,.control-panel-redux .ui-icon-arrowreturnthick-1-n,.redux-metabox .ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.redux-container .ui-icon-arrowreturnthick-1-e,.control-section-redux .ui-icon-arrowreturnthick-1-e,.control-panel-redux .ui-icon-arrowreturnthick-1-e,.redux-metabox .ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.redux-container .ui-icon-arrowreturnthick-1-s,.control-section-redux .ui-icon-arrowreturnthick-1-s,.control-panel-redux .ui-icon-arrowreturnthick-1-s,.redux-metabox .ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.redux-container .ui-icon-arrowreturn-1-w,.control-section-redux .ui-icon-arrowreturn-1-w,.control-panel-redux .ui-icon-arrowreturn-1-w,.redux-metabox .ui-icon-arrowreturn-1-w{background-position:-64px -64px}.redux-container .ui-icon-arrowreturn-1-n,.control-section-redux .ui-icon-arrowreturn-1-n,.control-panel-redux .ui-icon-arrowreturn-1-n,.redux-metabox .ui-icon-arrowreturn-1-n{background-position:-80px -64px}.redux-container .ui-icon-arrowreturn-1-e,.control-section-redux .ui-icon-arrowreturn-1-e,.control-panel-redux .ui-icon-arrowreturn-1-e,.redux-metabox .ui-icon-arrowreturn-1-e{background-position:-96px -64px}.redux-container .ui-icon-arrowreturn-1-s,.control-section-redux .ui-icon-arrowreturn-1-s,.control-panel-redux .ui-icon-arrowreturn-1-s,.redux-metabox .ui-icon-arrowreturn-1-s{background-position:-112px -64px}.redux-container .ui-icon-arrowrefresh-1-w,.control-section-redux .ui-icon-arrowrefresh-1-w,.control-panel-redux .ui-icon-arrowrefresh-1-w,.redux-metabox .ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.redux-container .ui-icon-arrowrefresh-1-n,.control-section-redux .ui-icon-arrowrefresh-1-n,.control-panel-redux .ui-icon-arrowrefresh-1-n,.redux-metabox .ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.redux-container .ui-icon-arrowrefresh-1-e,.control-section-redux .ui-icon-arrowrefresh-1-e,.control-panel-redux .ui-icon-arrowrefresh-1-e,.redux-metabox .ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.redux-container .ui-icon-arrowrefresh-1-s,.control-section-redux .ui-icon-arrowrefresh-1-s,.control-panel-redux .ui-icon-arrowrefresh-1-s,.redux-metabox .ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.redux-container .ui-icon-arrow-4,.control-section-redux .ui-icon-arrow-4,.control-panel-redux .ui-icon-arrow-4,.redux-metabox .ui-icon-arrow-4{background-position:0 -80px}.redux-container .ui-icon-arrow-4-diag,.control-section-redux .ui-icon-arrow-4-diag,.control-panel-redux .ui-icon-arrow-4-diag,.redux-metabox .ui-icon-arrow-4-diag{background-position:-16px -80px}.redux-container .ui-icon-extlink,.control-section-redux .ui-icon-extlink,.control-panel-redux .ui-icon-extlink,.redux-metabox .ui-icon-extlink{background-position:-32px -80px}.redux-container .ui-icon-newwin,.control-section-redux .ui-icon-newwin,.control-panel-redux .ui-icon-newwin,.redux-metabox .ui-icon-newwin{background-position:-48px -80px}.redux-container .ui-icon-refresh,.control-section-redux .ui-icon-refresh,.control-panel-redux .ui-icon-refresh,.redux-metabox .ui-icon-refresh{background-position:-64px -80px}.redux-container .ui-icon-shuffle,.control-section-redux .ui-icon-shuffle,.control-panel-redux .ui-icon-shuffle,.redux-metabox .ui-icon-shuffle{background-position:-80px -80px}.redux-container .ui-icon-transfer-e-w,.control-section-redux .ui-icon-transfer-e-w,.control-panel-redux .ui-icon-transfer-e-w,.redux-metabox .ui-icon-transfer-e-w{background-position:-96px -80px}.redux-container .ui-icon-transferthick-e-w,.control-section-redux .ui-icon-transferthick-e-w,.control-panel-redux .ui-icon-transferthick-e-w,.redux-metabox .ui-icon-transferthick-e-w{background-position:-112px -80px}.redux-container .ui-icon-folder-collapsed,.control-section-redux .ui-icon-folder-collapsed,.control-panel-redux .ui-icon-folder-collapsed,.redux-metabox .ui-icon-folder-collapsed{background-position:0 -96px}.redux-container .ui-icon-folder-open,.control-section-redux .ui-icon-folder-open,.control-panel-redux .ui-icon-folder-open,.redux-metabox .ui-icon-folder-open{background-position:-16px -96px}.redux-container .ui-icon-document,.control-section-redux .ui-icon-document,.control-panel-redux .ui-icon-document,.redux-metabox .ui-icon-document{background-position:-32px -96px}.redux-container .ui-icon-document-b,.control-section-redux .ui-icon-document-b,.control-panel-redux .ui-icon-document-b,.redux-metabox .ui-icon-document-b{background-position:-48px -96px}.redux-container .ui-icon-note,.control-section-redux .ui-icon-note,.control-panel-redux .ui-icon-note,.redux-metabox .ui-icon-note{background-position:-64px -96px}.redux-container .ui-icon-mail-closed,.control-section-redux .ui-icon-mail-closed,.control-panel-redux .ui-icon-mail-closed,.redux-metabox .ui-icon-mail-closed{background-position:-80px -96px}.redux-container .ui-icon-mail-open,.control-section-redux .ui-icon-mail-open,.control-panel-redux .ui-icon-mail-open,.redux-metabox .ui-icon-mail-open{background-position:-96px -96px}.redux-container .ui-icon-suitcase,.control-section-redux .ui-icon-suitcase,.control-panel-redux .ui-icon-suitcase,.redux-metabox .ui-icon-suitcase{background-position:-112px -96px}.redux-container .ui-icon-comment,.control-section-redux .ui-icon-comment,.control-panel-redux .ui-icon-comment,.redux-metabox .ui-icon-comment{background-position:-128px -96px}.redux-container .ui-icon-person,.control-section-redux .ui-icon-person,.control-panel-redux .ui-icon-person,.redux-metabox .ui-icon-person{background-position:-144px -96px}.redux-container .ui-icon-print,.control-section-redux .ui-icon-print,.control-panel-redux .ui-icon-print,.redux-metabox .ui-icon-print{background-position:-160px -96px}.redux-container .ui-icon-trash,.control-section-redux .ui-icon-trash,.control-panel-redux .ui-icon-trash,.redux-metabox .ui-icon-trash{background-position:-176px -96px}.redux-container .ui-icon-locked,.control-section-redux .ui-icon-locked,.control-panel-redux .ui-icon-locked,.redux-metabox .ui-icon-locked{background-position:-192px -96px}.redux-container .ui-icon-unlocked,.control-section-redux .ui-icon-unlocked,.control-panel-redux .ui-icon-unlocked,.redux-metabox .ui-icon-unlocked{background-position:-208px -96px}.redux-container .ui-icon-bookmark,.control-section-redux .ui-icon-bookmark,.control-panel-redux .ui-icon-bookmark,.redux-metabox .ui-icon-bookmark{background-position:-224px -96px}.redux-container .ui-icon-tag,.control-section-redux .ui-icon-tag,.control-panel-redux .ui-icon-tag,.redux-metabox .ui-icon-tag{background-position:-240px -96px}.redux-container .ui-icon-home,.control-section-redux .ui-icon-home,.control-panel-redux .ui-icon-home,.redux-metabox .ui-icon-home{background-position:0 -112px}.redux-container .ui-icon-flag,.control-section-redux .ui-icon-flag,.control-panel-redux .ui-icon-flag,.redux-metabox .ui-icon-flag{background-position:-16px -112px}.redux-container .ui-icon-calendar,.control-section-redux .ui-icon-calendar,.control-panel-redux .ui-icon-calendar,.redux-metabox .ui-icon-calendar{background-position:-32px -112px}.redux-container .ui-icon-cart,.control-section-redux .ui-icon-cart,.control-panel-redux .ui-icon-cart,.redux-metabox .ui-icon-cart{background-position:-48px -112px}.redux-container .ui-icon-pencil,.control-section-redux .ui-icon-pencil,.control-panel-redux .ui-icon-pencil,.redux-metabox .ui-icon-pencil{background-position:-64px -112px}.redux-container .ui-icon-clock,.control-section-redux .ui-icon-clock,.control-panel-redux .ui-icon-clock,.redux-metabox .ui-icon-clock{background-position:-80px -112px}.redux-container .ui-icon-disk,.control-section-redux .ui-icon-disk,.control-panel-redux .ui-icon-disk,.redux-metabox .ui-icon-disk{background-position:-96px -112px}.redux-container .ui-icon-calculator,.control-section-redux .ui-icon-calculator,.control-panel-redux .ui-icon-calculator,.redux-metabox .ui-icon-calculator{background-position:-112px -112px}.redux-container .ui-icon-zoomin,.control-section-redux .ui-icon-zoomin,.control-panel-redux .ui-icon-zoomin,.redux-metabox .ui-icon-zoomin{background-position:-128px -112px}.redux-container .ui-icon-zoomout,.control-section-redux .ui-icon-zoomout,.control-panel-redux .ui-icon-zoomout,.redux-metabox .ui-icon-zoomout{background-position:-144px -112px}.redux-container .ui-icon-search,.control-section-redux .ui-icon-search,.control-panel-redux .ui-icon-search,.redux-metabox .ui-icon-search{background-position:-160px -112px}.redux-container .ui-icon-wrench,.control-section-redux .ui-icon-wrench,.control-panel-redux .ui-icon-wrench,.redux-metabox .ui-icon-wrench{background-position:-176px -112px}.redux-container .ui-icon-gear,.control-section-redux .ui-icon-gear,.control-panel-redux .ui-icon-gear,.redux-metabox .ui-icon-gear{background-position:-192px -112px}.redux-container .ui-icon-heart,.control-section-redux .ui-icon-heart,.control-panel-redux .ui-icon-heart,.redux-metabox .ui-icon-heart{background-position:-208px -112px}.redux-container .ui-icon-star,.control-section-redux .ui-icon-star,.control-panel-redux .ui-icon-star,.redux-metabox .ui-icon-star{background-position:-224px -112px}.redux-container .ui-icon-link,.control-section-redux .ui-icon-link,.control-panel-redux .ui-icon-link,.redux-metabox .ui-icon-link{background-position:-240px -112px}.redux-container .ui-icon-cancel,.control-section-redux .ui-icon-cancel,.control-panel-redux .ui-icon-cancel,.redux-metabox .ui-icon-cancel{background-position:0 -128px}.redux-container .ui-icon-plus,.control-section-redux .ui-icon-plus,.control-panel-redux .ui-icon-plus,.redux-metabox .ui-icon-plus{background-position:-16px -128px}.redux-container .ui-icon-plusthick,.control-section-redux .ui-icon-plusthick,.control-panel-redux .ui-icon-plusthick,.redux-metabox .ui-icon-plusthick{background-position:-32px -128px}.redux-container .ui-icon-minus,.control-section-redux .ui-icon-minus,.control-panel-redux .ui-icon-minus,.redux-metabox .ui-icon-minus{background-position:-48px -128px}.redux-container .ui-icon-minusthick,.control-section-redux .ui-icon-minusthick,.control-panel-redux .ui-icon-minusthick,.redux-metabox .ui-icon-minusthick{background-position:-64px -128px}.redux-container .ui-icon-close,.control-section-redux .ui-icon-close,.control-panel-redux .ui-icon-close,.redux-metabox .ui-icon-close{background-position:-80px -128px}.redux-container .ui-icon-closethick,.control-section-redux .ui-icon-closethick,.control-panel-redux .ui-icon-closethick,.redux-metabox .ui-icon-closethick{background-position:-96px -128px}.redux-container .ui-icon-key,.control-section-redux .ui-icon-key,.control-panel-redux .ui-icon-key,.redux-metabox .ui-icon-key{background-position:-112px -128px}.redux-container .ui-icon-lightbulb,.control-section-redux .ui-icon-lightbulb,.control-panel-redux .ui-icon-lightbulb,.redux-metabox .ui-icon-lightbulb{background-position:-128px -128px}.redux-container .ui-icon-scissors,.control-section-redux .ui-icon-scissors,.control-panel-redux .ui-icon-scissors,.redux-metabox .ui-icon-scissors{background-position:-144px -128px}.redux-container .ui-icon-clipboard,.control-section-redux .ui-icon-clipboard,.control-panel-redux .ui-icon-clipboard,.redux-metabox .ui-icon-clipboard{background-position:-160px -128px}.redux-container .ui-icon-copy,.control-section-redux .ui-icon-copy,.control-panel-redux .ui-icon-copy,.redux-metabox .ui-icon-copy{background-position:-176px -128px}.redux-container .ui-icon-contact,.control-section-redux .ui-icon-contact,.control-panel-redux .ui-icon-contact,.redux-metabox .ui-icon-contact{background-position:-192px -128px}.redux-container .ui-icon-image,.control-section-redux .ui-icon-image,.control-panel-redux .ui-icon-image,.redux-metabox .ui-icon-image{background-position:-208px -128px}.redux-container .ui-icon-video,.control-section-redux .ui-icon-video,.control-panel-redux .ui-icon-video,.redux-metabox .ui-icon-video{background-position:-224px -128px}.redux-container .ui-icon-script,.control-section-redux .ui-icon-script,.control-panel-redux .ui-icon-script,.redux-metabox .ui-icon-script{background-position:-240px -128px}.redux-container .ui-icon-alert,.control-section-redux .ui-icon-alert,.control-panel-redux .ui-icon-alert,.redux-metabox .ui-icon-alert{background-position:0 -144px}.redux-container .ui-icon-info,.control-section-redux .ui-icon-info,.control-panel-redux .ui-icon-info,.redux-metabox .ui-icon-info{background-position:-16px -144px}.redux-container .ui-icon-notice,.control-section-redux .ui-icon-notice,.control-panel-redux .ui-icon-notice,.redux-metabox .ui-icon-notice{background-position:-32px -144px}.redux-container .ui-icon-help,.control-section-redux .ui-icon-help,.control-panel-redux .ui-icon-help,.redux-metabox .ui-icon-help{background-position:-48px -144px}.redux-container .ui-icon-check,.control-section-redux .ui-icon-check,.control-panel-redux .ui-icon-check,.redux-metabox .ui-icon-check{background-position:-64px -144px}.redux-container .ui-icon-bullet,.control-section-redux .ui-icon-bullet,.control-panel-redux .ui-icon-bullet,.redux-metabox .ui-icon-bullet{background-position:-80px -144px}.redux-container .ui-icon-radio-off,.control-section-redux .ui-icon-radio-off,.control-panel-redux .ui-icon-radio-off,.redux-metabox .ui-icon-radio-off{background-position:-96px -144px}.redux-container .ui-icon-radio-on,.control-section-redux .ui-icon-radio-on,.control-panel-redux .ui-icon-radio-on,.redux-metabox .ui-icon-radio-on{background-position:-112px -144px}.redux-container .ui-icon-pin-w,.control-section-redux .ui-icon-pin-w,.control-panel-redux .ui-icon-pin-w,.redux-metabox .ui-icon-pin-w{background-position:-128px -144px}.redux-container .ui-icon-pin-s,.control-section-redux .ui-icon-pin-s,.control-panel-redux .ui-icon-pin-s,.redux-metabox .ui-icon-pin-s{background-position:-144px -144px}.redux-container .ui-icon-play,.control-section-redux .ui-icon-play,.control-panel-redux .ui-icon-play,.redux-metabox .ui-icon-play{background-position:0 -160px}.redux-container .ui-icon-pause,.control-section-redux .ui-icon-pause,.control-panel-redux .ui-icon-pause,.redux-metabox .ui-icon-pause{background-position:-16px -160px}.redux-container .ui-icon-seek-next,.control-section-redux .ui-icon-seek-next,.control-panel-redux .ui-icon-seek-next,.redux-metabox .ui-icon-seek-next{background-position:-32px -160px}.redux-container .ui-icon-seek-prev,.control-section-redux .ui-icon-seek-prev,.control-panel-redux .ui-icon-seek-prev,.redux-metabox .ui-icon-seek-prev{background-position:-48px -160px}.redux-container .ui-icon-seek-end,.control-section-redux .ui-icon-seek-end,.control-panel-redux .ui-icon-seek-end,.redux-metabox .ui-icon-seek-end{background-position:-64px -160px}.redux-container .ui-icon-seek-start,.control-section-redux .ui-icon-seek-start,.control-panel-redux .ui-icon-seek-start,.redux-metabox .ui-icon-seek-start{background-position:-80px -160px}.redux-container .ui-icon-seek-first,.control-section-redux .ui-icon-seek-first,.control-panel-redux .ui-icon-seek-first,.redux-metabox .ui-icon-seek-first{background-position:-80px -160px}.redux-container .ui-icon-stop,.control-section-redux .ui-icon-stop,.control-panel-redux .ui-icon-stop,.redux-metabox .ui-icon-stop{background-position:-96px -160px}.redux-container .ui-icon-eject,.control-section-redux .ui-icon-eject,.control-panel-redux .ui-icon-eject,.redux-metabox .ui-icon-eject{background-position:-112px -160px}.redux-container .ui-icon-volume-off,.control-section-redux .ui-icon-volume-off,.control-panel-redux .ui-icon-volume-off,.redux-metabox .ui-icon-volume-off{background-position:-128px -160px}.redux-container .ui-icon-volume-on,.control-section-redux .ui-icon-volume-on,.control-panel-redux .ui-icon-volume-on,.redux-metabox .ui-icon-volume-on{background-position:-144px -160px}.redux-container .ui-icon-power,.control-section-redux .ui-icon-power,.control-panel-redux .ui-icon-power,.redux-metabox .ui-icon-power{background-position:0 -176px}.redux-container .ui-icon-signal-diag,.control-section-redux .ui-icon-signal-diag,.control-panel-redux .ui-icon-signal-diag,.redux-metabox .ui-icon-signal-diag{background-position:-16px -176px}.redux-container .ui-icon-signal,.control-section-redux .ui-icon-signal,.control-panel-redux .ui-icon-signal,.redux-metabox .ui-icon-signal{background-position:-32px -176px}.redux-container .ui-icon-battery-0,.control-section-redux .ui-icon-battery-0,.control-panel-redux .ui-icon-battery-0,.redux-metabox .ui-icon-battery-0{background-position:-48px -176px}.redux-container .ui-icon-battery-1,.control-section-redux .ui-icon-battery-1,.control-panel-redux .ui-icon-battery-1,.redux-metabox .ui-icon-battery-1{background-position:-64px -176px}.redux-container .ui-icon-battery-2,.control-section-redux .ui-icon-battery-2,.control-panel-redux .ui-icon-battery-2,.redux-metabox .ui-icon-battery-2{background-position:-80px -176px}.redux-container .ui-icon-battery-3,.control-section-redux .ui-icon-battery-3,.control-panel-redux .ui-icon-battery-3,.redux-metabox .ui-icon-battery-3{background-position:-96px -176px}.redux-container .ui-icon-circle-plus,.control-section-redux .ui-icon-circle-plus,.control-panel-redux .ui-icon-circle-plus,.redux-metabox .ui-icon-circle-plus{background-position:0 -192px}.redux-container .ui-icon-circle-minus,.control-section-redux .ui-icon-circle-minus,.control-panel-redux .ui-icon-circle-minus,.redux-metabox .ui-icon-circle-minus{background-position:-16px -192px}.redux-container .ui-icon-circle-close,.control-section-redux .ui-icon-circle-close,.control-panel-redux .ui-icon-circle-close,.redux-metabox .ui-icon-circle-close{background-position:-32px -192px}.redux-container .ui-icon-circle-triangle-e,.control-section-redux .ui-icon-circle-triangle-e,.control-panel-redux .ui-icon-circle-triangle-e,.redux-metabox .ui-icon-circle-triangle-e{background-position:-48px -192px}.redux-container .ui-icon-circle-triangle-s,.control-section-redux .ui-icon-circle-triangle-s,.control-panel-redux .ui-icon-circle-triangle-s,.redux-metabox .ui-icon-circle-triangle-s{background-position:-64px -192px}.redux-container .ui-icon-circle-triangle-w,.control-section-redux .ui-icon-circle-triangle-w,.control-panel-redux .ui-icon-circle-triangle-w,.redux-metabox .ui-icon-circle-triangle-w{background-position:-80px -192px}.redux-container .ui-icon-circle-triangle-n,.control-section-redux .ui-icon-circle-triangle-n,.control-panel-redux .ui-icon-circle-triangle-n,.redux-metabox .ui-icon-circle-triangle-n{background-position:-96px -192px}.redux-container .ui-icon-circle-arrow-e,.control-section-redux .ui-icon-circle-arrow-e,.control-panel-redux .ui-icon-circle-arrow-e,.redux-metabox .ui-icon-circle-arrow-e{background-position:-112px -192px}.redux-container .ui-icon-circle-arrow-s,.control-section-redux .ui-icon-circle-arrow-s,.control-panel-redux .ui-icon-circle-arrow-s,.redux-metabox .ui-icon-circle-arrow-s{background-position:-128px -192px}.redux-container .ui-icon-circle-arrow-w,.control-section-redux .ui-icon-circle-arrow-w,.control-panel-redux .ui-icon-circle-arrow-w,.redux-metabox .ui-icon-circle-arrow-w{background-position:-144px -192px}.redux-container .ui-icon-circle-arrow-n,.control-section-redux .ui-icon-circle-arrow-n,.control-panel-redux .ui-icon-circle-arrow-n,.redux-metabox .ui-icon-circle-arrow-n{background-position:-160px -192px}.redux-container .ui-icon-circle-zoomin,.control-section-redux .ui-icon-circle-zoomin,.control-panel-redux .ui-icon-circle-zoomin,.redux-metabox .ui-icon-circle-zoomin{background-position:-176px -192px}.redux-container .ui-icon-circle-zoomout,.control-section-redux .ui-icon-circle-zoomout,.control-panel-redux .ui-icon-circle-zoomout,.redux-metabox .ui-icon-circle-zoomout{background-position:-192px -192px}.redux-container .ui-icon-circle-check,.control-section-redux .ui-icon-circle-check,.control-panel-redux .ui-icon-circle-check,.redux-metabox .ui-icon-circle-check{background-position:-208px -192px}.redux-container .ui-icon-circlesmall-plus,.control-section-redux .ui-icon-circlesmall-plus,.control-panel-redux .ui-icon-circlesmall-plus,.redux-metabox .ui-icon-circlesmall-plus{background-position:0 -208px}.redux-container .ui-icon-circlesmall-minus,.control-section-redux .ui-icon-circlesmall-minus,.control-panel-redux .ui-icon-circlesmall-minus,.redux-metabox .ui-icon-circlesmall-minus{background-position:-16px -208px}.redux-container .ui-icon-circlesmall-close,.control-section-redux .ui-icon-circlesmall-close,.control-panel-redux .ui-icon-circlesmall-close,.redux-metabox .ui-icon-circlesmall-close{background-position:-32px -208px}.redux-container .ui-icon-squaresmall-plus,.control-section-redux .ui-icon-squaresmall-plus,.control-panel-redux .ui-icon-squaresmall-plus,.redux-metabox .ui-icon-squaresmall-plus{background-position:-48px -208px}.redux-container .ui-icon-squaresmall-minus,.control-section-redux .ui-icon-squaresmall-minus,.control-panel-redux .ui-icon-squaresmall-minus,.redux-metabox .ui-icon-squaresmall-minus{background-position:-64px -208px}.redux-container .ui-icon-squaresmall-close,.control-section-redux .ui-icon-squaresmall-close,.control-panel-redux .ui-icon-squaresmall-close,.redux-metabox .ui-icon-squaresmall-close{background-position:-80px -208px}.redux-container .ui-icon-grip-dotted-vertical,.control-section-redux .ui-icon-grip-dotted-vertical,.control-panel-redux .ui-icon-grip-dotted-vertical,.redux-metabox .ui-icon-grip-dotted-vertical{background-position:0 -224px}.redux-container .ui-icon-grip-dotted-horizontal,.control-section-redux .ui-icon-grip-dotted-horizontal,.control-panel-redux .ui-icon-grip-dotted-horizontal,.redux-metabox .ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.redux-container .ui-icon-grip-solid-vertical,.control-section-redux .ui-icon-grip-solid-vertical,.control-panel-redux .ui-icon-grip-solid-vertical,.redux-metabox .ui-icon-grip-solid-vertical{background-position:-32px -224px}.redux-container .ui-icon-grip-solid-horizontal,.control-section-redux .ui-icon-grip-solid-horizontal,.control-panel-redux .ui-icon-grip-solid-horizontal,.redux-metabox .ui-icon-grip-solid-horizontal{background-position:-48px -224px}.redux-container .ui-icon-gripsmall-diagonal-se,.control-section-redux .ui-icon-gripsmall-diagonal-se,.control-panel-redux .ui-icon-gripsmall-diagonal-se,.redux-metabox .ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.redux-container .ui-icon-grip-diagonal-se,.control-section-redux .ui-icon-grip-diagonal-se,.control-panel-redux .ui-icon-grip-diagonal-se,.redux-metabox .ui-icon-grip-diagonal-se{background-position:-80px -224px}.redux-container .ui-corner-all,.redux-container .ui-corner-top,.redux-container .ui-corner-left,.redux-container .ui-corner-tl,.control-section-redux .ui-corner-all,.control-section-redux .ui-corner-top,.control-section-redux .ui-corner-left,.control-section-redux .ui-corner-tl,.control-panel-redux .ui-corner-all,.control-panel-redux .ui-corner-top,.control-panel-redux .ui-corner-left,.control-panel-redux .ui-corner-tl,.redux-metabox .ui-corner-all,.redux-metabox .ui-corner-top,.redux-metabox .ui-corner-left,.redux-metabox .ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.redux-container .ui-corner-all,.redux-container .ui-corner-top,.redux-container .ui-corner-right,.redux-container .ui-corner-tr,.control-section-redux .ui-corner-all,.control-section-redux .ui-corner-top,.control-section-redux .ui-corner-right,.control-section-redux .ui-corner-tr,.control-panel-redux .ui-corner-all,.control-panel-redux .ui-corner-top,.control-panel-redux .ui-corner-right,.control-panel-redux .ui-corner-tr,.redux-metabox .ui-corner-all,.redux-metabox .ui-corner-top,.redux-metabox .ui-corner-right,.redux-metabox .ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.redux-container .ui-corner-all,.redux-container .ui-corner-bottom,.redux-container .ui-corner-left,.redux-container .ui-corner-bl,.control-section-redux .ui-corner-all,.control-section-redux .ui-corner-bottom,.control-section-redux .ui-corner-left,.control-section-redux .ui-corner-bl,.control-panel-redux .ui-corner-all,.control-panel-redux .ui-corner-bottom,.control-panel-redux .ui-corner-left,.control-panel-redux .ui-corner-bl,.redux-metabox .ui-corner-all,.redux-metabox .ui-corner-bottom,.redux-metabox .ui-corner-left,.redux-metabox .ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.redux-container .ui-corner-all,.redux-container .ui-corner-bottom,.redux-container .ui-corner-right,.redux-container .ui-corner-br,.control-section-redux .ui-corner-all,.control-section-redux .ui-corner-bottom,.control-section-redux .ui-corner-right,.control-section-redux .ui-corner-br,.control-panel-redux .ui-corner-all,.control-panel-redux .ui-corner-bottom,.control-panel-redux .ui-corner-right,.control-panel-redux .ui-corner-br,.redux-metabox .ui-corner-all,.redux-metabox .ui-corner-bottom,.redux-metabox .ui-corner-right,.redux-metabox .ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.redux-container .ui-widget-overlay,.control-section-redux .ui-widget-overlay,.control-panel-redux .ui-widget-overlay,.redux-metabox .ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30)}.redux-container .ui-widget-shadow,.control-section-redux .ui-widget-shadow,.control-panel-redux .ui-widget-shadow,.redux-metabox .ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.redux-container .ui-accordion,.control-section-redux .ui-accordion,.control-panel-redux .ui-accordion,.redux-metabox .ui-accordion{width:100%}.redux-container .ui-accordion .ui-accordion-header,.control-section-redux .ui-accordion .ui-accordion-header,.control-panel-redux .ui-accordion .ui-accordion-header,.redux-metabox .ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1;font-weight:bold}.redux-container .ui-accordion .ui-accordion-li-fix,.control-section-redux .ui-accordion .ui-accordion-li-fix,.control-panel-redux .ui-accordion .ui-accordion-li-fix,.redux-metabox .ui-accordion .ui-accordion-li-fix{display:inline}.redux-container .ui-accordion .ui-accordion-header-active,.control-section-redux .ui-accordion .ui-accordion-header-active,.control-panel-redux .ui-accordion .ui-accordion-header-active,.redux-metabox .ui-accordion .ui-accordion-header-active{border-bottom:0 !important}.redux-container .ui-accordion .ui-accordion-header a,.control-section-redux .ui-accordion .ui-accordion-header a,.control-panel-redux .ui-accordion .ui-accordion-header a,.redux-metabox .ui-accordion .ui-accordion-header a{display:block;font-size:1em;padding:.5em .5em .5em 1.7em}.redux-container .ui-accordion-icons .ui-accordion-header a,.control-section-redux .ui-accordion-icons .ui-accordion-header a,.control-panel-redux .ui-accordion-icons .ui-accordion-header a,.redux-metabox .ui-accordion-icons .ui-accordion-header a{padding-left:2.2em}.redux-container .ui-accordion .ui-accordion-header .ui-icon,.control-section-redux .ui-accordion .ui-accordion-header .ui-icon,.control-panel-redux .ui-accordion .ui-accordion-header .ui-icon,.redux-metabox .ui-accordion .ui-accordion-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.redux-container .ui-accordion .ui-accordion-content,.control-section-redux .ui-accordion .ui-accordion-content,.control-panel-redux .ui-accordion .ui-accordion-content,.redux-metabox .ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1}.redux-container .ui-accordion .ui-accordion-content-active,.control-section-redux .ui-accordion .ui-accordion-content-active,.control-panel-redux .ui-accordion .ui-accordion-content-active,.redux-metabox .ui-accordion .ui-accordion-content-active{display:block}.redux-container .ui-button,.control-section-redux .ui-button,.control-panel-redux .ui-button,.redux-metabox .ui-button{cursor:pointer;display:inline-block;background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), color-stop(25%, #fff), to(#e6e6e6));background-image:-webkit-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #fff, #fff 25%, #e6e6e6);background-image:-ms-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-o-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:linear-gradient(#fff, #fff 25%, #e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);padding:5px 14px 6px;margin:0;text-shadow:0 1px 1px rgba(255,255,255,0.75);color:#333;font-size:13px;line-height:normal;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-webkit-transition:0.1s linear background-image;-moz-transition:0.1s linear background-image;-ms-transition:0.1s linear background-image;-o-transition:0.1s linear background-image;transition:0.1s linear background-image;overflow:visible}.redux-container .ui-button-primary,.control-section-redux .ui-button-primary,.control-panel-redux .ui-button-primary,.redux-metabox .ui-button-primary{color:#ffffff;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-button-success,.control-section-redux .ui-button-success,.control-panel-redux .ui-button-success,.redux-metabox .ui-button-success{color:#ffffff;background-color:#57a957;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-ms-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(top, #62c462, #57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#57a957 #57a957 #3d773d;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-button-error,.control-section-redux .ui-button-error,.control-panel-redux .ui-button-error,.redux-metabox .ui-button-error{color:#ffffff;background-color:#c43c35;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#c43c35 #c43c35 #882a25;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-button-icon-only,.control-section-redux .ui-button-icon-only,.control-panel-redux .ui-button-icon-only,.redux-metabox .ui-button-icon-only{width:2.2em}.redux-container .ui-button-icons-only,.control-section-redux .ui-button-icons-only,.control-panel-redux .ui-button-icons-only,.redux-metabox .ui-button-icons-only{width:3.4em}.redux-container button.ui-button-icons-only,.control-section-redux button.ui-button-icons-only,.control-panel-redux button.ui-button-icons-only,.redux-metabox button.ui-button-icons-only{width:3.7em}.redux-container .ui-button .ui-button-text,.control-section-redux .ui-button .ui-button-text,.control-panel-redux .ui-button .ui-button-text,.redux-metabox .ui-button .ui-button-text{display:block}.redux-container .ui-button-icon-only .ui-button-text,.redux-container .ui-button-icons-only .ui-button-text,.control-section-redux .ui-button-icon-only .ui-button-text,.control-section-redux .ui-button-icons-only .ui-button-text,.control-panel-redux .ui-button-icon-only .ui-button-text,.control-panel-redux .ui-button-icons-only .ui-button-text,.redux-metabox .ui-button-icon-only .ui-button-text,.redux-metabox .ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px;display:none}.redux-container .ui-button-text-icon-primary .ui-button-text,.redux-container .ui-button-text-icons .ui-button-text,.control-section-redux .ui-button-text-icon-primary .ui-button-text,.control-section-redux .ui-button-text-icons .ui-button-text,.control-panel-redux .ui-button-text-icon-primary .ui-button-text,.control-panel-redux .ui-button-text-icons .ui-button-text,.redux-metabox .ui-button-text-icon-primary .ui-button-text,.redux-metabox .ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.redux-container .ui-button-text-icon-secondary .ui-button-text,.redux-container .ui-button-text-icons .ui-button-text,.control-section-redux .ui-button-text-icon-secondary .ui-button-text,.control-section-redux .ui-button-text-icons .ui-button-text,.control-panel-redux .ui-button-text-icon-secondary .ui-button-text,.control-panel-redux .ui-button-text-icons .ui-button-text,.redux-metabox .ui-button-text-icon-secondary .ui-button-text,.redux-metabox .ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.redux-container .ui-button-text-icons .ui-button-text,.control-section-redux .ui-button-text-icons .ui-button-text,.control-panel-redux .ui-button-text-icons .ui-button-text,.redux-metabox .ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}.redux-container .ui-button-icon-only .ui-icon,.redux-container .ui-button-text-icon-primary .ui-icon,.redux-container .ui-button-text-icon-secondary .ui-icon,.redux-container .ui-button-text-icons .ui-icon,.redux-container .ui-button-icons-only .ui-icon,.control-section-redux .ui-button-icon-only .ui-icon,.control-section-redux .ui-button-text-icon-primary .ui-icon,.control-section-redux .ui-button-text-icon-secondary .ui-icon,.control-section-redux .ui-button-text-icons .ui-icon,.control-section-redux .ui-button-icons-only .ui-icon,.control-panel-redux .ui-button-icon-only .ui-icon,.control-panel-redux .ui-button-text-icon-primary .ui-icon,.control-panel-redux .ui-button-text-icon-secondary .ui-icon,.control-panel-redux .ui-button-text-icons .ui-icon,.control-panel-redux .ui-button-icons-only .ui-icon,.redux-metabox .ui-button-icon-only .ui-icon,.redux-metabox .ui-button-text-icon-primary .ui-icon,.redux-metabox .ui-button-text-icon-secondary .ui-icon,.redux-metabox .ui-button-text-icons .ui-icon,.redux-metabox .ui-button-icons-only .ui-icon{top:50%;margin-top:-3px;margin-bottom:3px}.redux-container .ui-button-icon-only .ui-icon,.control-section-redux .ui-button-icon-only .ui-icon,.control-panel-redux .ui-button-icon-only .ui-icon,.redux-metabox .ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.redux-container .ui-button-text-icon-primary .ui-button-icon-primary,.redux-container .ui-button-text-icons .ui-button-icon-primary,.redux-container .ui-button-icons-only .ui-button-icon-primary,.control-section-redux .ui-button-text-icon-primary .ui-button-icon-primary,.control-section-redux .ui-button-text-icons .ui-button-icon-primary,.control-section-redux .ui-button-icons-only .ui-button-icon-primary,.control-panel-redux .ui-button-text-icon-primary .ui-button-icon-primary,.control-panel-redux .ui-button-text-icons .ui-button-icon-primary,.control-panel-redux .ui-button-icons-only .ui-button-icon-primary,.redux-metabox .ui-button-text-icon-primary .ui-button-icon-primary,.redux-metabox .ui-button-text-icons .ui-button-icon-primary,.redux-metabox .ui-button-icons-only .ui-button-icon-primary{left:.5em}.redux-container .ui-button-text-icon-secondary .ui-button-icon-secondary,.redux-container .ui-button-text-icons .ui-button-icon-secondary,.redux-container .ui-button-icons-only .ui-button-icon-secondary,.control-section-redux .ui-button-text-icon-secondary .ui-button-icon-secondary,.control-section-redux .ui-button-text-icons .ui-button-icon-secondary,.control-section-redux .ui-button-icons-only .ui-button-icon-secondary,.control-panel-redux .ui-button-text-icon-secondary .ui-button-icon-secondary,.control-panel-redux .ui-button-text-icons .ui-button-icon-secondary,.control-panel-redux .ui-button-icons-only .ui-button-icon-secondary,.redux-metabox .ui-button-text-icon-secondary .ui-button-icon-secondary,.redux-metabox .ui-button-text-icons .ui-button-icon-secondary,.redux-metabox .ui-button-icons-only .ui-button-icon-secondary{right:.5em}.redux-container .ui-button-text-icons .ui-button-icon-secondary,.redux-container .ui-button-icons-only .ui-button-icon-secondary,.control-section-redux .ui-button-text-icons .ui-button-icon-secondary,.control-section-redux .ui-button-icons-only .ui-button-icon-secondary,.control-panel-redux .ui-button-text-icons .ui-button-icon-secondary,.control-panel-redux .ui-button-icons-only .ui-button-icon-secondary,.redux-metabox .ui-button-text-icons .ui-button-icon-secondary,.redux-metabox .ui-button-icons-only .ui-button-icon-secondary{right:.5em}.redux-container .ui-buttonset,.control-section-redux .ui-buttonset,.control-panel-redux .ui-buttonset,.redux-metabox .ui-buttonset{margin-right:7px}.redux-container .ui-buttonset .ui-state-active,.control-section-redux .ui-buttonset .ui-state-active,.control-panel-redux .ui-buttonset .ui-state-active,.redux-metabox .ui-buttonset .ui-state-active{color:#ffffff;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-buttonset .ui-button,.control-section-redux .ui-buttonset .ui-button,.control-panel-redux .ui-buttonset .ui-button,.redux-metabox .ui-buttonset .ui-button{margin-left:0;margin-right:0}.redux-container button.ui-button::-moz-focus-inner,.control-section-redux button.ui-button::-moz-focus-inner,.control-panel-redux button.ui-button::-moz-focus-inner,.redux-metabox button.ui-button::-moz-focus-inner{border:0;padding:0}.redux-container .ui-datepicker,.control-section-redux .ui-datepicker,.control-panel-redux .ui-datepicker,.redux-metabox .ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.redux-container .ui-datepicker .ui-datepicker-header,.control-section-redux .ui-datepicker .ui-datepicker-header,.control-panel-redux .ui-datepicker .ui-datepicker-header,.redux-metabox .ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0;border:0px;font-weight:bold;width:100%;padding:4px 0;background-color:#f5f5f5;color:#808080}.redux-container .ui-datepicker .ui-datepicker-prev,.redux-container .ui-datepicker .ui-datepicker-next,.control-section-redux .ui-datepicker .ui-datepicker-prev,.control-section-redux .ui-datepicker .ui-datepicker-next,.control-panel-redux .ui-datepicker .ui-datepicker-prev,.control-panel-redux .ui-datepicker .ui-datepicker-next,.redux-metabox .ui-datepicker .ui-datepicker-prev,.redux-metabox .ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.redux-container .ui-datepicker .ui-datepicker-prev,.control-section-redux .ui-datepicker .ui-datepicker-prev,.control-panel-redux .ui-datepicker .ui-datepicker-prev,.redux-metabox .ui-datepicker .ui-datepicker-prev{left:2px}.redux-container .ui-datepicker .ui-datepicker-next,.control-section-redux .ui-datepicker .ui-datepicker-next,.control-panel-redux .ui-datepicker .ui-datepicker-next,.redux-metabox .ui-datepicker .ui-datepicker-next{right:2px}.redux-container .ui-datepicker .ui-datepicker-prev span,.redux-container .ui-datepicker .ui-datepicker-next span,.control-section-redux .ui-datepicker .ui-datepicker-prev span,.control-section-redux .ui-datepicker .ui-datepicker-next span,.control-panel-redux .ui-datepicker .ui-datepicker-prev span,.control-panel-redux .ui-datepicker .ui-datepicker-next span,.redux-metabox .ui-datepicker .ui-datepicker-prev span,.redux-metabox .ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.redux-container .ui-datepicker .ui-datepicker-title,.control-section-redux .ui-datepicker .ui-datepicker-title,.control-panel-redux .ui-datepicker .ui-datepicker-title,.redux-metabox .ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.redux-container .ui-datepicker .ui-datepicker-title select,.control-section-redux .ui-datepicker .ui-datepicker-title select,.control-panel-redux .ui-datepicker .ui-datepicker-title select,.redux-metabox .ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.redux-container .ui-datepicker select.ui-datepicker-month-year,.control-section-redux .ui-datepicker select.ui-datepicker-month-year,.control-panel-redux .ui-datepicker select.ui-datepicker-month-year,.redux-metabox .ui-datepicker select.ui-datepicker-month-year{width:100%}.redux-container .ui-datepicker select.ui-datepicker-month,.redux-container .ui-datepicker select.ui-datepicker-year,.control-section-redux .ui-datepicker select.ui-datepicker-month,.control-section-redux .ui-datepicker select.ui-datepicker-year,.control-panel-redux .ui-datepicker select.ui-datepicker-month,.control-panel-redux .ui-datepicker select.ui-datepicker-year,.redux-metabox .ui-datepicker select.ui-datepicker-month,.redux-metabox .ui-datepicker select.ui-datepicker-year{width:49%}.redux-container .ui-datepicker table,.control-section-redux .ui-datepicker table,.control-panel-redux .ui-datepicker table,.redux-metabox .ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.redux-container .ui-datepicker th,.control-section-redux .ui-datepicker th,.control-panel-redux .ui-datepicker th,.redux-metabox .ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.redux-container .ui-datepicker td,.control-section-redux .ui-datepicker td,.control-panel-redux .ui-datepicker td,.redux-metabox .ui-datepicker td{border:0;padding:1px}.redux-container .ui-datepicker td span,.redux-container .ui-datepicker td a,.control-section-redux .ui-datepicker td span,.control-section-redux .ui-datepicker td a,.control-panel-redux .ui-datepicker td span,.control-panel-redux .ui-datepicker td a,.redux-metabox .ui-datepicker td span,.redux-metabox .ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.redux-container .ui-datepicker .ui-datepicker-buttonpane,.control-section-redux .ui-datepicker .ui-datepicker-buttonpane,.control-panel-redux .ui-datepicker .ui-datepicker-buttonpane,.redux-metabox .ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.redux-container .ui-datepicker .ui-datepicker-buttonpane button,.control-section-redux .ui-datepicker .ui-datepicker-buttonpane button,.control-panel-redux .ui-datepicker .ui-datepicker-buttonpane button,.redux-metabox .ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.redux-container .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current,.control-section-redux .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current,.control-panel-redux .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current,.redux-metabox .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.redux-container .ui-datepicker.ui-datepicker-multi,.control-section-redux .ui-datepicker.ui-datepicker-multi,.control-panel-redux .ui-datepicker.ui-datepicker-multi,.redux-metabox .ui-datepicker.ui-datepicker-multi{width:auto}.redux-container .ui-datepicker-multi .ui-datepicker-group,.control-section-redux .ui-datepicker-multi .ui-datepicker-group,.control-panel-redux .ui-datepicker-multi .ui-datepicker-group,.redux-metabox .ui-datepicker-multi .ui-datepicker-group{float:left}.redux-container .ui-datepicker-multi .ui-datepicker-group table,.control-section-redux .ui-datepicker-multi .ui-datepicker-group table,.control-panel-redux .ui-datepicker-multi .ui-datepicker-group table,.redux-metabox .ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.redux-container .ui-datepicker-multi-2 .ui-datepicker-group,.control-section-redux .ui-datepicker-multi-2 .ui-datepicker-group,.control-panel-redux .ui-datepicker-multi-2 .ui-datepicker-group,.redux-metabox .ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.redux-container .ui-datepicker-multi-3 .ui-datepicker-group,.control-section-redux .ui-datepicker-multi-3 .ui-datepicker-group,.control-panel-redux .ui-datepicker-multi-3 .ui-datepicker-group,.redux-metabox .ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.redux-container .ui-datepicker-multi-4 .ui-datepicker-group,.control-section-redux .ui-datepicker-multi-4 .ui-datepicker-group,.control-panel-redux .ui-datepicker-multi-4 .ui-datepicker-group,.redux-metabox .ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.redux-container .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.control-section-redux .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.control-panel-redux .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.redux-metabox .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.redux-container .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header,.control-section-redux .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header,.control-panel-redux .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header,.redux-metabox .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.redux-container .ui-datepicker-multi .ui-datepicker-buttonpane,.control-section-redux .ui-datepicker-multi .ui-datepicker-buttonpane,.control-panel-redux .ui-datepicker-multi .ui-datepicker-buttonpane,.redux-metabox .ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.redux-container .ui-datepicker-row-break,.control-section-redux .ui-datepicker-row-break,.control-panel-redux .ui-datepicker-row-break,.redux-metabox .ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.redux-container .ui-datepicker-rtl,.control-section-redux .ui-datepicker-rtl,.control-panel-redux .ui-datepicker-rtl,.redux-metabox .ui-datepicker-rtl{direction:rtl}.redux-container .ui-datepicker-rtl .ui-datepicker-prev,.control-section-redux .ui-datepicker-rtl .ui-datepicker-prev,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-prev,.redux-metabox .ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-next,.control-section-redux .ui-datepicker-rtl .ui-datepicker-next,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-next,.redux-metabox .ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-prev:hover,.control-section-redux .ui-datepicker-rtl .ui-datepicker-prev:hover,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-prev:hover,.redux-metabox .ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-next:hover,.control-section-redux .ui-datepicker-rtl .ui-datepicker-next:hover,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-next:hover,.redux-metabox .ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-buttonpane,.control-section-redux .ui-datepicker-rtl .ui-datepicker-buttonpane,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-buttonpane,.redux-metabox .ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.redux-container .ui-datepicker-rtl .ui-datepicker-buttonpane button,.control-section-redux .ui-datepicker-rtl .ui-datepicker-buttonpane button,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-buttonpane button,.redux-metabox .ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.redux-container .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.control-section-redux .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.redux-metabox .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.redux-container .ui-datepicker-rtl .ui-datepicker-group,.control-section-redux .ui-datepicker-rtl .ui-datepicker-group,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-group,.redux-metabox .ui-datepicker-rtl .ui-datepicker-group{float:right}.redux-container .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.control-section-redux .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.redux-metabox .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.redux-container .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header,.control-section-redux .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header,.redux-metabox .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.redux-container .ui-datepicker-cover,.control-section-redux .ui-datepicker-cover,.control-panel-redux .ui-datepicker-cover,.redux-metabox .ui-datepicker-cover{display:none;display:block;position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}.redux-container .ui-datepicker th,.control-section-redux .ui-datepicker th,.control-panel-redux .ui-datepicker th,.redux-metabox .ui-datepicker th{font-weight:bold;color:gray}.redux-container .ui-datepicker-today a:hover,.control-section-redux .ui-datepicker-today a:hover,.control-panel-redux .ui-datepicker-today a:hover,.redux-metabox .ui-datepicker-today a:hover{background-color:#808080;color:#ffffff}.redux-container .ui-datepicker-today a,.control-section-redux .ui-datepicker-today a,.control-panel-redux .ui-datepicker-today a,.redux-metabox .ui-datepicker-today a{background-color:#BFBFBF;cursor:pointer;padding:0 4px;margin-bottom:0px}.redux-container .ui-datepicker td a,.control-section-redux .ui-datepicker td a,.control-panel-redux .ui-datepicker td a,.redux-metabox .ui-datepicker td a{margin-bottom:0px;border:0px}.redux-container .ui-datepicker td:hover,.control-section-redux .ui-datepicker td:hover,.control-panel-redux .ui-datepicker td:hover,.redux-metabox .ui-datepicker td:hover{color:#ffffff}.redux-container .ui-datepicker td .ui-state-default,.control-section-redux .ui-datepicker td .ui-state-default,.control-panel-redux .ui-datepicker td .ui-state-default,.redux-metabox .ui-datepicker td .ui-state-default{border:0px;background:none;margin-bottom:0px;padding:5px;color:gray;text-align:center;filter:none}.redux-container .ui-datepicker td .ui-state-active,.control-section-redux .ui-datepicker td .ui-state-active,.control-panel-redux .ui-datepicker td .ui-state-active,.redux-metabox .ui-datepicker td .ui-state-active{background:#BFBFBF;margin-bottom:0px;font-size:normal;text-shadow:0px;color:#ffffff;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-container .ui-datepicker td .ui-state-hover,.control-section-redux .ui-datepicker td .ui-state-hover,.control-panel-redux .ui-datepicker td .ui-state-hover,.redux-metabox .ui-datepicker td .ui-state-hover{color:#ffffff;background:#0064cd;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);-webkit-border-radius:4px;-moz-border-radius:4px;-khtml-border-radius:4px;border-radius:4px}.redux-container .ui-widget-content,.control-section-redux .ui-widget-content,.control-panel-redux .ui-widget-content,.redux-metabox .ui-widget-content{border:1px solid #dfdfdf}.redux-container .ui-datepicker table,.control-section-redux .ui-datepicker table,.control-panel-redux .ui-datepicker table,.redux-metabox .ui-datepicker table{background:#fff}.redux-container .placeholder,.control-section-redux .placeholder,.control-panel-redux .placeholder,.redux-metabox .placeholder{background:#f9f9f9 !important;border:1px dashed #bbb !important}.wp-customizer #ui-datepicker-div{z-index:999999 !important} diff --git a/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css.map b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css.map new file mode 100644 index 0000000..6dafb09 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["jquery-ui-1.10.0.custom.scss"], +"names": [], +"file": "jquery-ui-1.10.0.custom.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.scss b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.scss new file mode 100644 index 0000000..1b81be8 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.scss @@ -0,0 +1,799 @@ +/*! + * jQuery UI Bootstrap (0.5) + * http://addyosmani.github.com/jquery-ui-bootstrap + * + * Copyright 2012 - 2013, Addy Osmani + * Dual licensed under the MIT or GPL Version 2 licenses. + * + * Portions copyright jQuery UI & Twitter Bootstrap + */ + +.redux-container, .control-section-redux, .control-panel-redux, .redux-metabox { + /* Interaction Cues +----------------------------------*/ + .ui-state-disabled { cursor: default !important; } + + + /* Icons + ----------------------------------*/ + + /* states and images */ + .ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; + } + + + /* Misc visuals + ----------------------------------*/ + + + /* + * jQuery UI CSS Framework 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/ + */ + + /* Component containers + ----------------------------------*/ + //.ui-widget { font-size:13px; } + //.ui-widget .ui-widget { font-size: 1em; } + //.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-size: 1em; } + .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_75_ffffff_1x400.png) 50% 50% repeat-x; color: #404040; } + //.ui-widget-content a { color: #404040; } + .ui-widget-header { + font-weight:bold; + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border:1px solid #666; + } + .ui-widget-header a { color: #222222; } + + /* Interaction states + ----------------------------------*/ + .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { + + background-color: #e6e6e6; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); + background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + + color: #333; + font-size: 13px; + line-height: normal; + border: 1px solid #ccc; + border-bottom-color: #bbb; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -webkit-transition: 0.1s linear background-image; + -moz-transition: 0.1s linear background-image; + -ms-transition: 0.1s linear background-image; + -o-transition: 0.1s linear background-image; + transition: 0.1s linear background-image; + overflow: visible; + + } + + + .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; } + .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { + background-position: 0 -15px; + color: #333; + text-decoration: none; + } + + .ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #212121; text-decoration: none; } + .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; font-weight: normal; color: #212121; } + .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } + .ui-widget :active { outline: none; } + + /* Interaction Cues + ----------------------------------*/ + + + .ui-state-highlight p, .ui-state-error p, .ui-state-default p{ + font-size: 13px; + font-weight: normal; + line-height: 18px; + margin:7px 15px; + } + .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { + + + position: relative; + margin-bottom: 18px; + color: #404040; + background-color: #eedc94; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94)); + background-image: -moz-linear-gradient(top, #fceec1, #eedc94); + background-image: -ms-linear-gradient(top, #fceec1, #eedc94); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94)); + background-image: -webkit-linear-gradient(top, #fceec1, #eedc94); + background-image: -o-linear-gradient(top, #fceec1, #eedc94); + background-image: linear-gradient(top, #fceec1, #eedc94); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #eedc94 #eedc94 #e4c652; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + border-width: 1px; + border-style: solid; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + + + } + .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } + .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { + + + position: relative; + margin-bottom: 18px; + color: #ffffff; + border-width: 1px; + border-style: solid; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + background-color: #c43c35; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35)); + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #c43c35 #c43c35 #882a25; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + + + } + .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } + .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } + .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } + .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } + .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + .ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */ + + + /* Icons + ----------------------------------*/ + + /* states and images */ + .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } + .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } + .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } + .ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } + .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } + .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } + .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } + .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_f6cf3b_256x240.png); } + + /* positioning */ + .ui-icon-carat-1-n { background-position: 0 0; } + .ui-icon-carat-1-ne { background-position: -16px 0; } + .ui-icon-carat-1-e { background-position: -32px 0; } + .ui-icon-carat-1-se { background-position: -48px 0; } + .ui-icon-carat-1-s { background-position: -64px 0; } + .ui-icon-carat-1-sw { background-position: -80px 0; } + .ui-icon-carat-1-w { background-position: -96px 0; } + .ui-icon-carat-1-nw { background-position: -112px 0; } + .ui-icon-carat-2-n-s { background-position: -128px 0; } + .ui-icon-carat-2-e-w { background-position: -144px 0; } + .ui-icon-triangle-1-n { background-position: 0 -16px; } + .ui-icon-triangle-1-ne { background-position: -16px -16px; } + .ui-icon-triangle-1-e { background-position: -32px -16px; } + .ui-icon-triangle-1-se { background-position: -48px -16px; } + .ui-icon-triangle-1-s { background-position: -64px -16px; } + .ui-icon-triangle-1-sw { background-position: -80px -16px; } + .ui-icon-triangle-1-w { background-position: -96px -16px; } + .ui-icon-triangle-1-nw { background-position: -112px -16px; } + .ui-icon-triangle-2-n-s { background-position: -128px -16px; } + .ui-icon-triangle-2-e-w { background-position: -144px -16px; } + .ui-icon-arrow-1-n { background-position: 0 -32px; } + .ui-icon-arrow-1-ne { background-position: -16px -32px; } + .ui-icon-arrow-1-e { background-position: -32px -32px; } + .ui-icon-arrow-1-se { background-position: -48px -32px; } + .ui-icon-arrow-1-s { background-position: -64px -32px; } + .ui-icon-arrow-1-sw { background-position: -80px -32px; } + .ui-icon-arrow-1-w { background-position: -96px -32px; } + .ui-icon-arrow-1-nw { background-position: -112px -32px; } + .ui-icon-arrow-2-n-s { background-position: -128px -32px; } + .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } + .ui-icon-arrow-2-e-w { background-position: -160px -32px; } + .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } + .ui-icon-arrowstop-1-n { background-position: -192px -32px; } + .ui-icon-arrowstop-1-e { background-position: -208px -32px; } + .ui-icon-arrowstop-1-s { background-position: -224px -32px; } + .ui-icon-arrowstop-1-w { background-position: -240px -32px; } + .ui-icon-arrowthick-1-n { background-position: 0 -48px; } + .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } + .ui-icon-arrowthick-1-e { background-position: -32px -48px; } + .ui-icon-arrowthick-1-se { background-position: -48px -48px; } + .ui-icon-arrowthick-1-s { background-position: -64px -48px; } + .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } + .ui-icon-arrowthick-1-w { background-position: -96px -48px; } + .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } + .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } + .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } + .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } + .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } + .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } + .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } + .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } + .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } + .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } + .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } + .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } + .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } + .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } + .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } + .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } + .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } + .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } + .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } + .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } + .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } + .ui-icon-arrow-4 { background-position: 0 -80px; } + .ui-icon-arrow-4-diag { background-position: -16px -80px; } + .ui-icon-extlink { background-position: -32px -80px; } + .ui-icon-newwin { background-position: -48px -80px; } + .ui-icon-refresh { background-position: -64px -80px; } + .ui-icon-shuffle { background-position: -80px -80px; } + .ui-icon-transfer-e-w { background-position: -96px -80px; } + .ui-icon-transferthick-e-w { background-position: -112px -80px; } + .ui-icon-folder-collapsed { background-position: 0 -96px; } + .ui-icon-folder-open { background-position: -16px -96px; } + .ui-icon-document { background-position: -32px -96px; } + .ui-icon-document-b { background-position: -48px -96px; } + .ui-icon-note { background-position: -64px -96px; } + .ui-icon-mail-closed { background-position: -80px -96px; } + .ui-icon-mail-open { background-position: -96px -96px; } + .ui-icon-suitcase { background-position: -112px -96px; } + .ui-icon-comment { background-position: -128px -96px; } + .ui-icon-person { background-position: -144px -96px; } + .ui-icon-print { background-position: -160px -96px; } + .ui-icon-trash { background-position: -176px -96px; } + .ui-icon-locked { background-position: -192px -96px; } + .ui-icon-unlocked { background-position: -208px -96px; } + .ui-icon-bookmark { background-position: -224px -96px; } + .ui-icon-tag { background-position: -240px -96px; } + .ui-icon-home { background-position: 0 -112px; } + .ui-icon-flag { background-position: -16px -112px; } + .ui-icon-calendar { background-position: -32px -112px; } + .ui-icon-cart { background-position: -48px -112px; } + .ui-icon-pencil { background-position: -64px -112px; } + .ui-icon-clock { background-position: -80px -112px; } + .ui-icon-disk { background-position: -96px -112px; } + .ui-icon-calculator { background-position: -112px -112px; } + .ui-icon-zoomin { background-position: -128px -112px; } + .ui-icon-zoomout { background-position: -144px -112px; } + .ui-icon-search { background-position: -160px -112px; } + .ui-icon-wrench { background-position: -176px -112px; } + .ui-icon-gear { background-position: -192px -112px; } + .ui-icon-heart { background-position: -208px -112px; } + .ui-icon-star { background-position: -224px -112px; } + .ui-icon-link { background-position: -240px -112px; } + .ui-icon-cancel { background-position: 0 -128px; } + .ui-icon-plus { background-position: -16px -128px; } + .ui-icon-plusthick { background-position: -32px -128px; } + .ui-icon-minus { background-position: -48px -128px; } + .ui-icon-minusthick { background-position: -64px -128px; } + .ui-icon-close { background-position: -80px -128px; } + .ui-icon-closethick { background-position: -96px -128px; } + .ui-icon-key { background-position: -112px -128px; } + .ui-icon-lightbulb { background-position: -128px -128px; } + .ui-icon-scissors { background-position: -144px -128px; } + .ui-icon-clipboard { background-position: -160px -128px; } + .ui-icon-copy { background-position: -176px -128px; } + .ui-icon-contact { background-position: -192px -128px; } + .ui-icon-image { background-position: -208px -128px; } + .ui-icon-video { background-position: -224px -128px; } + .ui-icon-script { background-position: -240px -128px; } + .ui-icon-alert { background-position: 0 -144px; } + .ui-icon-info { background-position: -16px -144px; } + .ui-icon-notice { background-position: -32px -144px; } + .ui-icon-help { background-position: -48px -144px; } + .ui-icon-check { background-position: -64px -144px; } + .ui-icon-bullet { background-position: -80px -144px; } + .ui-icon-radio-off { background-position: -96px -144px; } + .ui-icon-radio-on { background-position: -112px -144px; } + .ui-icon-pin-w { background-position: -128px -144px; } + .ui-icon-pin-s { background-position: -144px -144px; } + .ui-icon-play { background-position: 0 -160px; } + .ui-icon-pause { background-position: -16px -160px; } + .ui-icon-seek-next { background-position: -32px -160px; } + .ui-icon-seek-prev { background-position: -48px -160px; } + .ui-icon-seek-end { background-position: -64px -160px; } + .ui-icon-seek-start { background-position: -80px -160px; } + /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ + .ui-icon-seek-first { background-position: -80px -160px; } + .ui-icon-stop { background-position: -96px -160px; } + .ui-icon-eject { background-position: -112px -160px; } + .ui-icon-volume-off { background-position: -128px -160px; } + .ui-icon-volume-on { background-position: -144px -160px; } + .ui-icon-power { background-position: 0 -176px; } + .ui-icon-signal-diag { background-position: -16px -176px; } + .ui-icon-signal { background-position: -32px -176px; } + .ui-icon-battery-0 { background-position: -48px -176px; } + .ui-icon-battery-1 { background-position: -64px -176px; } + .ui-icon-battery-2 { background-position: -80px -176px; } + .ui-icon-battery-3 { background-position: -96px -176px; } + .ui-icon-circle-plus { background-position: 0 -192px; } + .ui-icon-circle-minus { background-position: -16px -192px; } + .ui-icon-circle-close { background-position: -32px -192px; } + .ui-icon-circle-triangle-e { background-position: -48px -192px; } + .ui-icon-circle-triangle-s { background-position: -64px -192px; } + .ui-icon-circle-triangle-w { background-position: -80px -192px; } + .ui-icon-circle-triangle-n { background-position: -96px -192px; } + .ui-icon-circle-arrow-e { background-position: -112px -192px; } + .ui-icon-circle-arrow-s { background-position: -128px -192px; } + .ui-icon-circle-arrow-w { background-position: -144px -192px; } + .ui-icon-circle-arrow-n { background-position: -160px -192px; } + .ui-icon-circle-zoomin { background-position: -176px -192px; } + .ui-icon-circle-zoomout { background-position: -192px -192px; } + .ui-icon-circle-check { background-position: -208px -192px; } + .ui-icon-circlesmall-plus { background-position: 0 -208px; } + .ui-icon-circlesmall-minus { background-position: -16px -208px; } + .ui-icon-circlesmall-close { background-position: -32px -208px; } + .ui-icon-squaresmall-plus { background-position: -48px -208px; } + .ui-icon-squaresmall-minus { background-position: -64px -208px; } + .ui-icon-squaresmall-close { background-position: -80px -208px; } + .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } + .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } + .ui-icon-grip-solid-vertical { background-position: -32px -224px; } + .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } + .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } + .ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + + /* Misc visuals + ----------------------------------*/ + + /* Corner radius */ + .ui-corner-all, + .ui-corner-top, + .ui-corner-left, + .ui-corner-tl { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + -khtml-border-top-left-radius: 4px; + border-top-left-radius: 4px; + } + .ui-corner-all, + .ui-corner-top, + .ui-corner-right, + .ui-corner-tr { + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + -khtml-border-top-right-radius: 4px; + border-top-right-radius: 4px; + } + .ui-corner-all, + .ui-corner-bottom, + .ui-corner-left, + .ui-corner-bl { + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + -khtml-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + } + .ui-corner-all, + .ui-corner-bottom, + .ui-corner-right, + .ui-corner-br { + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + -khtml-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + } + + + /* Overlays */ + + .ui-widget-overlay { + background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; + opacity: .30; + filter:Alpha(Opacity=30); + } + + .ui-widget-shadow { + margin: -8px 0 0 -8px; + padding: 8px; + background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; + opacity: .30;filter:Alpha(Opacity=30); + -moz-border-radius: 8px; + -khtml-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + } + + /* + * jQuery UI Accordion 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://jqueryui.com/accordion/ + */ + + /* IE/Win - Fix animation bug - #4615 */ + + .ui-accordion { + width: 100%; + } + .ui-accordion .ui-accordion-header { + cursor: pointer; + position: relative; + margin-top: 1px; + zoom: 1; + font-weight:bold; + } + .ui-accordion .ui-accordion-li-fix { + display: inline; + } + .ui-accordion .ui-accordion-header-active { + border-bottom: 0 !important; + } + .ui-accordion .ui-accordion-header a { + display: block; + font-size: 1em; + padding: .5em .5em .5em 1.7em; + } + .ui-accordion-icons .ui-accordion-header a { + padding-left: 2.2em; + } + .ui-accordion .ui-accordion-header .ui-icon { + position: absolute; + left: .5em; + top: 50%; + margin-top: -8px; + } + .ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + margin-top: -2px; + position: relative; + top: 1px; + margin-bottom: 2px; + overflow: auto; + display: none; + zoom: 1; + } + .ui-accordion .ui-accordion-content-active { + display: block; + } + + + /* + * jQuery UI Button 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */ + + .ui-button { + + cursor: pointer; + display: inline-block; + background-color: #e6e6e6; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); + background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + padding: 5px 14px 6px; + margin: 0; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + color: #333; + font-size: 13px; + line-height: normal; + border: 1px solid #ccc; + border-bottom-color: #bbb; + + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -webkit-transition: 0.1s linear background-image; + -moz-transition: 0.1s linear background-image; + -ms-transition: 0.1s linear background-image; + -o-transition: 0.1s linear background-image; + transition: 0.1s linear background-image; + overflow: visible; + } /* the overflow property removes extra width in IE */ + + .ui-button-primary { + color: #ffffff; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + } + + + .ui-button-success{ + color:#ffffff; + background-color: #57a957; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957)); + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #57a957 #57a957 #3d773d; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + } + + .ui-button-error{ + color:#ffffff; + background-color: #c43c35; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35)); + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #c43c35 #c43c35 #882a25; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + } + + .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ + button.ui-button-icon-only { } /* button elements seem to need a little more width */ + .ui-button-icons-only { width: 3.4em; } + button.ui-button-icons-only { width: 3.7em; } + + /*button text element */ + + .ui-button .ui-button-text { display: block; } + .ui-button-text-only .ui-button-text { } + .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; /*tempfix*/ display:none;} + .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } + .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } + .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } + /* no icon support for input elements, provide padding by default */ + /* input.ui-button { padding: .4em 1em; } */ + + /*button icon element(s) */ + .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { top: 50%; margin-top:-3px; margin-bottom:3px; } + .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } + .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } + .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + + /*button sets*/ + + + .ui-buttonset { margin-right: 7px; } + .ui-buttonset .ui-state-active { + color: #ffffff; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + } + .ui-buttonset .ui-button { margin-left: 0; margin-right: 0; } + + /* workarounds */ + button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ + + /* + * jQuery UI Datepicker 1.9.0 + * + * Copyright 2012-10-11, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://jqueryui.com/datepicker/ + */ + .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } + .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; border:0px; font-weight: bold; width: 100%; padding: 4px 0; background-color: #f5f5f5; color: #808080; } + .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } + + .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { /*top: 1px;*/ } + .ui-datepicker .ui-datepicker-prev { left:2px; } + .ui-datepicker .ui-datepicker-next { right:2px; } + + .ui-datepicker .ui-datepicker-prev-hover { /*left:1px;*/ } + .ui-datepicker .ui-datepicker-next-hover { /*right:1px;*/ } + + .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } + .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } + .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } + .ui-datepicker select.ui-datepicker-month-year {width: 100%;} + .ui-datepicker select.ui-datepicker-month, + .ui-datepicker select.ui-datepicker-year { width: 49%;} + .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } + .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } + .ui-datepicker td { border: 0; padding: 1px; } + .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } + .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } + .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } + .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + + /* with multiple calendars */ + .ui-datepicker.ui-datepicker-multi { width:auto; } + .ui-datepicker-multi .ui-datepicker-group { float:left; } + .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } + .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } + .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } + .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } + .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } + .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } + .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } + .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } + + /* RTL support */ + .ui-datepicker-rtl { direction: rtl; } + .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } + .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } + .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } + .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } + .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } + .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } + .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } + .ui-datepicker-rtl .ui-datepicker-group { float:right; } + .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + + /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ + .ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ + } + + .ui-datepicker th{ + font-weight: bold; + color: gray; + } + + .ui-datepicker-today a:hover{ + background-color: #808080; + color: #ffffff; + + } + .ui-datepicker-today a{ + background-color: #BFBFBF; + cursor: pointer; + padding: 0 4px; + margin-bottom:0px; + + } + + + .ui-datepicker td a{ + margin-bottom:0px; + border:0px; + } + + .ui-datepicker td:hover{ + color: #ffffff; + } + + .ui-datepicker td .ui-state-default { + border:0px; + background:none; + margin-bottom:0px; + padding:5px; + color:gray; + text-align: center; + filter:none; + } + + + .ui-datepicker td .ui-state-active{ + background:#BFBFBF; + margin-bottom:0px; + font-size:normal; + text-shadow: 0px; + color: #ffffff; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + + .ui-datepicker td .ui-state-hover { + color: #ffffff; + background: #0064cd; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + } + + .ui-widget-content { + border: 1px solid #dfdfdf; + } + .ui-datepicker table { background: #fff; } + + .placeholder { + background:#f9f9f9 !important; + border: 1px dashed #bbb !important; + } + +} + +.wp-customizer { + #ui-datepicker-div { + z-index: 999999 !important; + } +} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/vendor/qtip/jquery.qtip.css b/redux/ReduxCore/assets/css/vendor/qtip/jquery.qtip.css new file mode 100644 index 0000000..31f1c90 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/qtip/jquery.qtip.css @@ -0,0 +1 @@ +.qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;direction:ltr;box-shadow:none;padding:0}.qtip-content{position:relative;padding:5px 9px;overflow:hidden;text-align:left;word-wrap:break-word}.qtip-titlebar{position:relative;padding:5px 35px 5px 10px;overflow:hidden;border-width:0 0 1px;font-weight:bold}.qtip-titlebar+.qtip-content{border-top-width:0 !important}.qtip-close{position:absolute;right:-9px;top:-9px;z-index:11;cursor:pointer;outline:medium none;border:1px solid transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-titlebar .ui-icon,.qtip-icon .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:14px;text-align:center;text-indent:0;font:normal bold 10px/13px Tahoma,sans-serif;color:inherit;background:transparent none no-repeat -100em -100em}.qtip-default{border:1px solid #f1d031;background-color:#ffffa3;color:#555}.qtip-default .qtip-titlebar{background-color:#ffef93}.qtip-default .qtip-icon{border-color:#CCC;background:#f1f1f1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111}/*! Light tooltip style */.qtip-light{background-color:white;border-color:#e2e2e2;color:#454545}.qtip-light .qtip-titlebar{background-color:#f1f1f1}/*! Dark tooltip style */.qtip-dark{background-color:#505050;border-color:#303030;color:#f3f3f3}.qtip-dark .qtip-titlebar{background-color:#404040}.qtip-dark .qtip-icon{border-color:#444}.qtip-dark .qtip-titlebar .ui-state-hover{border-color:#303030}/*! Cream tooltip style */.qtip-cream{background-color:#fbf7aa;border-color:#f9e98e;color:#a27d35}.qtip-cream .qtip-titlebar{background-color:#f0de7d}.qtip-cream .qtip-close .qtip-icon{background-position:-82px 0}/*! Red tooltip style */.qtip-red{background-color:#f78b83;border-color:#d95252;color:#912323}.qtip-red .qtip-titlebar{background-color:#f06d65}.qtip-red .qtip-close .qtip-icon{background-position:-102px 0}.qtip-red .qtip-icon{border-color:#d95252}.qtip-red .qtip-titlebar .ui-state-hover{border-color:#d95252}/*! Green tooltip style */.qtip-green{background-color:#caed9e;border-color:#90d93f;color:#3f6219}.qtip-green .qtip-titlebar{background-color:#b0de78}.qtip-green .qtip-close .qtip-icon{background-position:-42px 0}/*! Blue tooltip style */.qtip-blue{background-color:#e5f6fe;border-color:#add9ed;color:#5e99bd}.qtip-blue .qtip-titlebar{background-color:#d0e9f5}.qtip-blue .qtip-close .qtip-icon{background-position:-2px 0}.qtip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,0.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,0.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,0.15)}.qtip-rounded,.qtip-tipsy,.qtip-bootstrap{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.qtip-rounded .qtip-titlebar{-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.qtip-youtube{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;color:white;border:0 solid transparent;background:#4a4a4a;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4a4a4a),color-stop(100%,black));background-image:-webkit-linear-gradient(top,#4a4a4a 0,black 100%);background-image:-moz-linear-gradient(top,#4a4a4a 0,black 100%);background-image:-ms-linear-gradient(top,#4a4a4a 0,black 100%);background-image:-o-linear-gradient(top,#4a4a4a 0,black 100%)}.qtip-youtube .qtip-titlebar{background-color:#4a4a4a;background-color:transparent}.qtip-youtube .qtip-content{padding:.75em;font:12px arial,sans-serif;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);-ms-filter:"progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);"}.qtip-youtube .qtip-icon{border-color:#222}.qtip-youtube .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-jtools{background:#232323;background:rgba(0,0,0,0.7);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-linear-gradient(top,#717171,#232323);background-image:-ms-linear-gradient(top,#717171,#232323);background-image:-o-linear-gradient(top,#717171,#232323);border:2px solid #ddd;border:2px solid #f1f1f1;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333}.qtip-jtools .qtip-titlebar{background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)"}.qtip-jtools .qtip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)"}.qtip-jtools .qtip-titlebar,.qtip-jtools .qtip-content{background:transparent;color:white;border:0 dashed transparent}.qtip-jtools .qtip-icon{border-color:#555}.qtip-jtools .qtip-titlebar .ui-state-hover{border-color:#333}.qtip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,0.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,0.4);box-shadow:4px 4px 5px rgba(0,0,0,0.4);background-color:#d9d9c2;color:#111;border:0 dashed transparent}.qtip-cluetip .qtip-titlebar{background-color:#87876a;color:white;border:0 dashed transparent}.qtip-cluetip .qtip-icon{border-color:#808064}.qtip-cluetip .qtip-titlebar .ui-state-hover{border-color:#696952;color:#696952}.qtip-tipsy{background:black;background:rgba(0,0,0,0.87);color:white;border:0 solid transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:bold;line-height:16px;text-shadow:0 1px black}.qtip-tipsy .qtip-titlebar{padding:6px 35px 0 10px;background-color:transparent}.qtip-tipsy .qtip-content{padding:6px 10px}.qtip-tipsy .qtip-icon{border-color:#222;text-shadow:none}.qtip-tipsy .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-tipped{border:3px solid #959fa9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#f9f9f9;color:#454545;font-weight:normal;font-family:serif}.qtip-tipped .qtip-titlebar{border-bottom-width:0;color:white;background:#3a79b8;background-image:-webkit-gradient(linear,left top,left bottom,from(#3a79b8),to(#2e629d));background-image:-webkit-linear-gradient(top,#3a79b8,#2e629d);background-image:-moz-linear-gradient(top,#3a79b8,#2e629d);background-image:-ms-linear-gradient(top,#3a79b8,#2e629d);background-image:-o-linear-gradient(top,#3a79b8,#2e629d);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)"}.qtip-tipped .qtip-icon{border:2px solid #285589;background:#285589}.qtip-tipped .qtip-icon .ui-icon{background-color:#fbfbfb;color:#555}.qtip-bootstrap{font-size:14px;line-height:20px;color:#333;padding:1px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.qtip-bootstrap .qtip-titlebar{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.qtip-bootstrap .qtip-titlebar .qtip-close{right:11px;top:45%;border-style:none}.qtip-bootstrap .qtip-content{padding:9px 14px}.qtip-bootstrap .qtip-icon{background:transparent}.qtip-bootstrap .qtip-icon .ui-icon{width:auto;height:auto;float:right;font-size:20px;font-weight:bold;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.qtip-bootstrap .qtip-icon .ui-icon:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}.qtip:not(.ie9haxors) div.qtip-content,.qtip:not(.ie9haxors) div.qtip-titlebar{filter:none;-ms-filter:none}.qtip .qtip-tip{margin:0 auto;overflow:hidden;z-index:10}x:-o-prefocus,.qtip .qtip-tip{visibility:hidden}.qtip .qtip-tip,.qtip .qtip-tip .qtip-vml,.qtip .qtip-tip canvas{position:absolute;color:#123456;background:transparent;border:0 dashed transparent}.qtip .qtip-tip canvas{top:0;left:0}.qtip .qtip-tip .qtip-vml{behavior:url(#default#VML);display:inline-block;visibility:visible}#qtip-overlay{position:fixed;left:0;top:0;width:100%;height:100%}#qtip-overlay.blurs{cursor:pointer}#qtip-overlay div{position:absolute;left:0;top:0;width:100%;height:100%;background-color:black;opacity:.7;filter:alpha(opacity=70);-ms-filter:"alpha(opacity=70)"}.qtipmodal-ie6fix{position:absolute !important} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/vendor/qtip/jquery.qtip.css.map b/redux/ReduxCore/assets/css/vendor/qtip/jquery.qtip.css.map new file mode 100644 index 0000000..80b8611 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/qtip/jquery.qtip.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["jquery.qtip.scss"], +"names": [], +"file": "jquery.qtip.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/vendor/qtip/jquery.qtip.min.css b/redux/ReduxCore/assets/css/vendor/qtip/jquery.qtip.min.css new file mode 100644 index 0000000..27b9729 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/qtip/jquery.qtip.min.css @@ -0,0 +1,3 @@ +/* qTip2 v2.2.1 | Plugins: tips modal viewport svg imagemap ie6 | Styles: core basic css3 | qtip2.com | Licensed MIT | Sat Sep 06 2014 23:12:07 */ + +.qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;direction:ltr;box-shadow:none;padding:0}.qtip-content{position:relative;padding:5px 9px;overflow:hidden;text-align:left;word-wrap:break-word}.qtip-titlebar{position:relative;padding:5px 35px 5px 10px;overflow:hidden;border-width:0 0 1px;font-weight:700}.qtip-titlebar+.qtip-content{border-top-width:0!important}.qtip-close{position:absolute;right:-9px;top:-9px;z-index:11;cursor:pointer;outline:0;border:1px solid transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-icon .ui-icon,.qtip-titlebar .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:14px;text-align:center;text-indent:0;font:400 bold 10px/13px Tahoma,sans-serif;color:inherit;background:-100em -100em no-repeat}.qtip-default{border:1px solid #F1D031;background-color:#FFFFA3;color:#555}.qtip-default .qtip-titlebar{background-color:#FFEF93}.qtip-default .qtip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111}.qtip-light{background-color:#fff;border-color:#E2E2E2;color:#454545}.qtip-light .qtip-titlebar{background-color:#f1f1f1}.qtip-dark{background-color:#505050;border-color:#303030;color:#f3f3f3}.qtip-dark .qtip-titlebar{background-color:#404040}.qtip-dark .qtip-icon{border-color:#444}.qtip-dark .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-cream{background-color:#FBF7AA;border-color:#F9E98E;color:#A27D35}.qtip-cream .qtip-titlebar{background-color:#F0DE7D}.qtip-cream .qtip-close .qtip-icon{background-position:-82px 0}.qtip-red{background-color:#F78B83;border-color:#D95252;color:#912323}.qtip-red .qtip-titlebar{background-color:#F06D65}.qtip-red .qtip-close .qtip-icon{background-position:-102px 0}.qtip-red .qtip-icon,.qtip-red .qtip-titlebar .ui-state-hover{border-color:#D95252}.qtip-green{background-color:#CAED9E;border-color:#90D93F;color:#3F6219}.qtip-green .qtip-titlebar{background-color:#B0DE78}.qtip-green .qtip-close .qtip-icon{background-position:-42px 0}.qtip-blue{background-color:#E5F6FE;border-color:#ADD9ED;color:#5E99BD}.qtip-blue .qtip-titlebar{background-color:#D0E9F5}.qtip-blue .qtip-close .qtip-icon{background-position:-2px 0}.qtip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,.15)}.qtip-bootstrap,.qtip-rounded,.qtip-tipsy{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.qtip-rounded .qtip-titlebar{-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.qtip-youtube{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;color:#fff;border:0 solid transparent;background:#4A4A4A;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,#000));background-image:-webkit-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-moz-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-ms-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-o-linear-gradient(top,#4A4A4A 0,#000 100%)}.qtip-youtube .qtip-titlebar{background-color:transparent}.qtip-youtube .qtip-content{padding:.75em;font:12px arial,sans-serif;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);-ms-filter:"progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);"}.qtip-youtube .qtip-icon{border-color:#222}.qtip-youtube .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-jtools{background:#232323;background:rgba(0,0,0,.7);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-linear-gradient(top,#717171,#232323);background-image:-ms-linear-gradient(top,#717171,#232323);background-image:-o-linear-gradient(top,#717171,#232323);border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333}.qtip-jtools .qtip-titlebar{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)"}.qtip-jtools .qtip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)"}.qtip-jtools .qtip-content,.qtip-jtools .qtip-titlebar{background:0 0;color:#fff;border:0 dashed transparent}.qtip-jtools .qtip-icon{border-color:#555}.qtip-jtools .qtip-titlebar .ui-state-hover{border-color:#333}.qtip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,.4);box-shadow:4px 4px 5px rgba(0,0,0,.4);background-color:#D9D9C2;color:#111;border:0 dashed transparent}.qtip-cluetip .qtip-titlebar{background-color:#87876A;color:#fff;border:0 dashed transparent}.qtip-cluetip .qtip-icon{border-color:#808064}.qtip-cluetip .qtip-titlebar .ui-state-hover{border-color:#696952;color:#696952}.qtip-tipsy{background:#000;background:rgba(0,0,0,.87);color:#fff;border:0 solid transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:700;line-height:16px;text-shadow:0 1px #000}.qtip-tipsy .qtip-titlebar{padding:6px 35px 0 10px;background-color:transparent}.qtip-tipsy .qtip-content{padding:6px 10px}.qtip-tipsy .qtip-icon{border-color:#222;text-shadow:none}.qtip-tipsy .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-tipped{border:3px solid #959FA9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#F9F9F9;color:#454545;font-weight:400;font-family:serif}.qtip-tipped .qtip-titlebar{border-bottom-width:0;color:#fff;background:#3A79B8;background-image:-webkit-gradient(linear,left top,left bottom,from(#3A79B8),to(#2E629D));background-image:-webkit-linear-gradient(top,#3A79B8,#2E629D);background-image:-moz-linear-gradient(top,#3A79B8,#2E629D);background-image:-ms-linear-gradient(top,#3A79B8,#2E629D);background-image:-o-linear-gradient(top,#3A79B8,#2E629D);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)"}.qtip-tipped .qtip-icon{border:2px solid #285589;background:#285589}.qtip-tipped .qtip-icon .ui-icon{background-color:#FBFBFB;color:#555}.qtip-bootstrap{font-size:14px;line-height:20px;color:#333;padding:1px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.qtip-bootstrap .qtip-titlebar{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.qtip-bootstrap .qtip-titlebar .qtip-close{right:11px;top:45%;border-style:none}.qtip-bootstrap .qtip-content{padding:9px 14px}.qtip-bootstrap .qtip-icon{background:0 0}.qtip-bootstrap .qtip-icon .ui-icon{width:auto;height:auto;float:right;font-size:20px;font-weight:700;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.qtip-bootstrap .qtip-icon .ui-icon:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}.qtip:not(.ie9haxors) div.qtip-content,.qtip:not(.ie9haxors) div.qtip-titlebar{filter:none;-ms-filter:none}.qtip .qtip-tip{margin:0 auto;overflow:hidden;z-index:10}.qtip .qtip-tip,x:-o-prefocus{visibility:hidden}.qtip .qtip-tip,.qtip .qtip-tip .qtip-vml,.qtip .qtip-tip canvas{position:absolute;color:#123456;background:0 0;border:0 dashed transparent}.qtip .qtip-tip canvas{top:0;left:0}.qtip .qtip-tip .qtip-vml{behavior:url(#default#VML);display:inline-block;visibility:visible}#qtip-overlay{position:fixed;left:0;top:0;width:100%;height:100%}#qtip-overlay.blurs{cursor:pointer}#qtip-overlay div{position:absolute;left:0;top:0;width:100%;height:100%;background-color:#000;opacity:.7;filter:alpha(opacity=70);-ms-filter:"alpha(Opacity=70)"}.qtipmodal-ie6fix{position:absolute!important} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/vendor/qtip/jquery.qtip.scss b/redux/ReduxCore/assets/css/vendor/qtip/jquery.qtip.scss new file mode 100644 index 0000000..b789a47 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/qtip/jquery.qtip.scss @@ -0,0 +1,617 @@ +/* + * qTip2 - Pretty powerful tooltips - v2.2.1 + * http://qtip2.com + * + * Copyright (c) 2014 + * Released under the MIT licenses + * http://jquery.org/license + * + * Date: Sat Sep 6 2014 11:12 GMT+0100+0100 + * Plugins: tips modal viewport svg imagemap ie6 + * Styles: core basic css3 + */ +.qtip{ + position: absolute; + left: -28000px; + top: -28000px; + display: none; + + max-width: 280px; + min-width: 50px; + + font-size: 10.5px; + line-height: 12px; + + direction: ltr; + + box-shadow: none; + padding: 0; +} + +.qtip-content{ + position: relative; + padding: 5px 9px; + overflow: hidden; + + text-align: left; + word-wrap: break-word; +} + +.qtip-titlebar{ + position: relative; + padding: 5px 35px 5px 10px; + overflow: hidden; + + border-width: 0 0 1px; + font-weight: bold; +} + +.qtip-titlebar + .qtip-content{ border-top-width: 0 !important; } + +/* Default close button class */ +.qtip-close{ + position: absolute; + right: -9px; top: -9px; + z-index: 11; /* Overlap .qtip-tip */ + + cursor: pointer; + outline: medium none; + + border: 1px solid transparent; +} + +.qtip-titlebar .qtip-close{ + right: 4px; top: 50%; + margin-top: -9px; +} + +* html .qtip-titlebar .qtip-close{ top: 16px; } /* IE fix */ + +.qtip-titlebar .ui-icon, +.qtip-icon .ui-icon{ + display: block; + text-indent: -1000em; + direction: ltr; +} + +.qtip-icon, .qtip-icon .ui-icon{ + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + text-decoration: none; +} + +.qtip-icon .ui-icon{ + width: 18px; + height: 14px; + + line-height: 14px; + text-align: center; + text-indent: 0; + font: normal bold 10px/13px Tahoma,sans-serif; + + color: inherit; + background: transparent none no-repeat -100em -100em; +} + +/* Applied to 'focused' tooltips e.g. most recently displayed/interacted with */ +.qtip-focus{} + +/* Applied on hover of tooltips i.e. added/removed on mouseenter/mouseleave respectively */ +.qtip-hover{} + +/* Default tooltip style */ +.qtip-default{ + border: 1px solid #F1D031; + + background-color: #FFFFA3; + color: #555; +} + +.qtip-default .qtip-titlebar{ + background-color: #FFEF93; +} + +.qtip-default .qtip-icon{ + border-color: #CCC; + background: #F1F1F1; + color: #777; +} + +.qtip-default .qtip-titlebar .qtip-close{ + border-color: #AAA; + color: #111; +} + + +/*! Light tooltip style */ +.qtip-light{ + background-color: white; + border-color: #E2E2E2; + color: #454545; +} + +.qtip-light .qtip-titlebar{ + background-color: #f1f1f1; +} + + +/*! Dark tooltip style */ +.qtip-dark{ + background-color: #505050; + border-color: #303030; + color: #f3f3f3; +} + +.qtip-dark .qtip-titlebar{ + background-color: #404040; +} + +.qtip-dark .qtip-icon{ + border-color: #444; +} + +.qtip-dark .qtip-titlebar .ui-state-hover{ + border-color: #303030; +} + + +/*! Cream tooltip style */ +.qtip-cream{ + background-color: #FBF7AA; + border-color: #F9E98E; + color: #A27D35; +} + +.qtip-cream .qtip-titlebar{ + background-color: #F0DE7D; +} + +.qtip-cream .qtip-close .qtip-icon{ + background-position: -82px 0; +} + + +/*! Red tooltip style */ +.qtip-red{ + background-color: #F78B83; + border-color: #D95252; + color: #912323; +} + +.qtip-red .qtip-titlebar{ + background-color: #F06D65; +} + +.qtip-red .qtip-close .qtip-icon{ + background-position: -102px 0; +} + +.qtip-red .qtip-icon{ + border-color: #D95252; +} + +.qtip-red .qtip-titlebar .ui-state-hover{ + border-color: #D95252; +} + + +/*! Green tooltip style */ +.qtip-green{ + background-color: #CAED9E; + border-color: #90D93F; + color: #3F6219; +} + +.qtip-green .qtip-titlebar{ + background-color: #B0DE78; +} + +.qtip-green .qtip-close .qtip-icon{ + background-position: -42px 0; +} + + +/*! Blue tooltip style */ +.qtip-blue{ + background-color: #E5F6FE; + border-color: #ADD9ED; + color: #5E99BD; +} + +.qtip-blue .qtip-titlebar{ + background-color: #D0E9F5; +} + +.qtip-blue .qtip-close .qtip-icon{ + background-position: -2px 0; +} + + +.qtip-shadow{ + -webkit-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15); + box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15); +} + +/* Add rounded corners to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */ +.qtip-rounded, +.qtip-tipsy, +.qtip-bootstrap{ + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; +} + +.qtip-rounded .qtip-titlebar{ + -moz-border-radius: 4px 4px 0 0; + -webkit-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +/* Youtube tooltip style */ +.qtip-youtube{ + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + + -webkit-box-shadow: 0 0 3px #333; + -moz-box-shadow: 0 0 3px #333; + box-shadow: 0 0 3px #333; + + color: white; + border: 0 solid transparent; + + background: #4A4A4A; + background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,black)); + background-image: -webkit-linear-gradient(top,#4A4A4A 0,black 100%); + background-image: -moz-linear-gradient(top,#4A4A4A 0,black 100%); + background-image: -ms-linear-gradient(top,#4A4A4A 0,black 100%); + background-image: -o-linear-gradient(top,#4A4A4A 0,black 100%); +} + +.qtip-youtube .qtip-titlebar{ + background-color: #4A4A4A; + background-color: rgba(0,0,0,0); +} + +.qtip-youtube .qtip-content{ + padding: .75em; + font: 12px arial,sans-serif; + + filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000); + -ms-filter: "progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);"; +} + +.qtip-youtube .qtip-icon{ + border-color: #222; +} + +.qtip-youtube .qtip-titlebar .ui-state-hover{ + border-color: #303030; +} + + +/* jQuery TOOLS Tooltip style */ +.qtip-jtools{ + background: #232323; + background: rgba(0, 0, 0, 0.7); + background-image: -webkit-gradient(linear, left top, left bottom, from(#717171), to(#232323)); + background-image: -moz-linear-gradient(top, #717171, #232323); + background-image: -webkit-linear-gradient(top, #717171, #232323); + background-image: -ms-linear-gradient(top, #717171, #232323); + background-image: -o-linear-gradient(top, #717171, #232323); + + border: 2px solid #ddd; + border: 2px solid rgba(241,241,241,1); + + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + + -webkit-box-shadow: 0 0 12px #333; + -moz-box-shadow: 0 0 12px #333; + box-shadow: 0 0 12px #333; +} + +/* IE Specific */ +.qtip-jtools .qtip-titlebar{ + background-color: transparent; + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)"; +} +.qtip-jtools .qtip-content{ + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)"; +} + +.qtip-jtools .qtip-titlebar, +.qtip-jtools .qtip-content{ + background: transparent; + color: white; + border: 0 dashed transparent; +} + +.qtip-jtools .qtip-icon{ + border-color: #555; +} + +.qtip-jtools .qtip-titlebar .ui-state-hover{ + border-color: #333; +} + + +/* Cluetip style */ +.qtip-cluetip{ + -webkit-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4); + -moz-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4); + box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4); + + background-color: #D9D9C2; + color: #111; + border: 0 dashed transparent; +} + +.qtip-cluetip .qtip-titlebar{ + background-color: #87876A; + color: white; + border: 0 dashed transparent; +} + +.qtip-cluetip .qtip-icon{ + border-color: #808064; +} + +.qtip-cluetip .qtip-titlebar .ui-state-hover{ + border-color: #696952; + color: #696952; +} + + +/* Tipsy style */ +.qtip-tipsy{ + background: black; + background: rgba(0, 0, 0, .87); + + color: white; + border: 0 solid transparent; + + font-size: 11px; + font-family: 'Lucida Grande', sans-serif; + font-weight: bold; + line-height: 16px; + text-shadow: 0 1px black; +} + +.qtip-tipsy .qtip-titlebar{ + padding: 6px 35px 0 10px; + background-color: transparent; +} + +.qtip-tipsy .qtip-content{ + padding: 6px 10px; +} + +.qtip-tipsy .qtip-icon{ + border-color: #222; + text-shadow: none; +} + +.qtip-tipsy .qtip-titlebar .ui-state-hover{ + border-color: #303030; +} + + +/* Tipped style */ +.qtip-tipped{ + border: 3px solid #959FA9; + + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + + background-color: #F9F9F9; + color: #454545; + + font-weight: normal; + font-family: serif; +} + +.qtip-tipped .qtip-titlebar{ + border-bottom-width: 0; + + color: white; + background: #3A79B8; + background-image: -webkit-gradient(linear, left top, left bottom, from(#3A79B8), to(#2E629D)); + background-image: -webkit-linear-gradient(top, #3A79B8, #2E629D); + background-image: -moz-linear-gradient(top, #3A79B8, #2E629D); + background-image: -ms-linear-gradient(top, #3A79B8, #2E629D); + background-image: -o-linear-gradient(top, #3A79B8, #2E629D); + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)"; +} + +.qtip-tipped .qtip-icon{ + border: 2px solid #285589; + background: #285589; +} + +.qtip-tipped .qtip-icon .ui-icon{ + background-color: #FBFBFB; + color: #555; +} + + +/** + * Twitter Bootstrap style. + * + * Tested with IE 8, IE 9, Chrome 18, Firefox 9, Opera 11. + * Does not work with IE 7. + */ +.qtip-bootstrap{ + /** Taken from Bootstrap body */ + font-size: 14px; + line-height: 20px; + color: #333333; + + /** Taken from Bootstrap .popover */ + padding: 1px; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.qtip-bootstrap .qtip-titlebar{ + /** Taken from Bootstrap .popover-title */ + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.qtip-bootstrap .qtip-titlebar .qtip-close{ + /** + * Overrides qTip2: + * .qtip-titlebar .qtip-close{ + * [...] + * right: 4px; + * top: 50%; + * [...] + * border-style: solid; + * } + */ + right: 11px; + top: 45%; + border-style: none; +} + +.qtip-bootstrap .qtip-content{ + /** Taken from Bootstrap .popover-content */ + padding: 9px 14px; +} + +.qtip-bootstrap .qtip-icon{ + /** + * Overrides qTip2: + * .qtip-default .qtip-icon { + * border-color: #CCC; + * background: #F1F1F1; + * color: #777; + * } + */ + background: transparent; +} + +.qtip-bootstrap .qtip-icon .ui-icon{ + /** + * Overrides qTip2: + * .qtip-icon .ui-icon{ + * width: 18px; + * height: 14px; + * } + */ + width: auto; + height: auto; + + /* Taken from Bootstrap .close */ + float: right; + font-size: 20px; + font-weight: bold; + line-height: 18px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.qtip-bootstrap .qtip-icon .ui-icon:hover{ + /* Taken from Bootstrap .close:hover */ + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + + +/* IE9 fix - removes all filters */ +.qtip:not(.ie9haxors) div.qtip-content, +.qtip:not(.ie9haxors) div.qtip-titlebar{ + filter: none; + -ms-filter: none; +} + + +.qtip .qtip-tip{ + margin: 0 auto; + overflow: hidden; + z-index: 10; + +} + +/* Opera bug #357 - Incorrect tip position +https://github.com/Craga89/qTip2/issues/367 */ +x:-o-prefocus, .qtip .qtip-tip{ + visibility: hidden; +} + +.qtip .qtip-tip, +.qtip .qtip-tip .qtip-vml, +.qtip .qtip-tip canvas{ + position: absolute; + + color: #123456; + background: transparent; + border: 0 dashed transparent; +} + +.qtip .qtip-tip canvas{ top: 0; left: 0; } + +.qtip .qtip-tip .qtip-vml{ + behavior: url(#default#VML); + display: inline-block; + visibility: visible; +} + + +#qtip-overlay{ + position: fixed; + left: 0; top: 0; + width: 100%; height: 100%; +} + +/* Applied to modals with show.modal.blur set to true */ +#qtip-overlay.blurs{ cursor: pointer; } + +/* Change opacity of overlay here */ +#qtip-overlay div{ + position: absolute; + left: 0; top: 0; + width: 100%; height: 100%; + + background-color: black; + + opacity: 0.7; + filter:alpha(opacity=70); + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; +} + + +.qtipmodal-ie6fix{ + position: absolute !important; +} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/vendor/spectrum/redux-spectrum.css b/redux/ReduxCore/assets/css/vendor/spectrum/redux-spectrum.css new file mode 100644 index 0000000..4435c41 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/spectrum/redux-spectrum.css @@ -0,0 +1 @@ +.sp-container{position:absolute;top:0;left:0;display:inline-block;*display:inline;*zoom:1;z-index:9999994;overflow:hidden}.sp-container.sp-flat{position:relative}.sp-container,.sp-container *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.sp-top{position:relative;width:100%;display:inline-block}.sp-top-inner{position:absolute;top:0;left:0;bottom:0;right:0}.sp-color{position:absolute;top:0;left:0;bottom:0;right:20%}.sp-hue{position:absolute;top:0;right:0;bottom:0;left:84%;height:100%}.sp-clear-enabled .sp-hue{top:33px;height:77.5%}.sp-fill{padding-top:80%}.sp-sat,.sp-val{position:absolute;top:0;left:0;right:0;bottom:0}.sp-alpha-enabled .sp-top{margin-bottom:18px}.sp-alpha-enabled .sp-alpha{display:block}.sp-alpha-handle{position:absolute;top:-4px;bottom:-4px;width:6px;left:50%;cursor:pointer;border:1px solid black;background:white;opacity:.8}.sp-alpha{display:none;position:absolute;bottom:-14px;right:0;left:0;height:8px}.sp-alpha-inner{border:solid 1px #333}.sp-clear{display:none}.sp-clear.sp-clear-display{background-position:center}.sp-clear-enabled .sp-clear{display:block;position:absolute;top:0;right:0;bottom:0;left:84%;height:28px}.sp-container,.sp-replacer,.sp-preview,.sp-dragger,.sp-slider,.sp-alpha,.sp-clear,.sp-alpha-handle,.sp-container.sp-dragging .sp-input,.sp-container button{-webkit-user-select:none;-moz-user-select:-moz-none;-o-user-select:none;user-select:none}.sp-container.sp-input-disabled .sp-input-container{display:none}.sp-container.sp-buttons-disabled .sp-button-container{display:none}.sp-container.sp-palette-buttons-disabled .sp-palette-button-container{display:none}.sp-palette-only .sp-picker-container{display:none}.sp-palette-disabled .sp-palette-container{display:none}.sp-initial-disabled .sp-initial{display:none}.sp-sat{background-image:-webkit-gradient(linear,0 0,100% 0,from(#FFF),to(rgba(204,154,129,0)));background-image:-webkit-linear-gradient(left,#FFF,rgba(204,154,129,0));background-image:-moz-linear-gradient(left,#fff,rgba(204,154,129,0));background-image:-o-linear-gradient(left,#fff,rgba(204,154,129,0));background-image:-ms-linear-gradient(left,#fff,rgba(204,154,129,0));background-image:linear-gradient(to right,#fff,rgba(204,154,129,0));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)";filter:progid:DXImageTransform.Microsoft.gradient(GradientType = 1,startColorstr='#FFFFFFFF',endColorstr='#00CC9A81')}.sp-val{background-image:-webkit-gradient(linear,0 100%,0 0,from(#000),to(rgba(204,154,129,0)));background-image:-webkit-linear-gradient(bottom,#000,rgba(204,154,129,0));background-image:-moz-linear-gradient(bottom,#000,rgba(204,154,129,0));background-image:-o-linear-gradient(bottom,#000,rgba(204,154,129,0));background-image:-ms-linear-gradient(bottom,#000,rgba(204,154,129,0));background-image:linear-gradient(to top,#000,rgba(204,154,129,0));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81',endColorstr='#FF000000')}.sp-hue{background:-moz-linear-gradient(top,#f00 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00 100%);background:-ms-linear-gradient(top,#f00 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00 100%);background:-o-linear-gradient(top,#f00 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00 100%);background:-webkit-gradient(linear,left top,left bottom,from(#f00),color-stop(0.17,#ff0),color-stop(0.33,#0f0),color-stop(0.5,#0ff),color-stop(0.67,#00f),color-stop(0.83,#f0f),to(#f00));background:-webkit-linear-gradient(top,#f00 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00 100%);background:linear-gradient(to bottom,#f00 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00 100%)}.sp-1{height:17%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000',endColorstr='#ffff00')}.sp-2{height:16%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00',endColorstr='#00ff00')}.sp-3{height:17%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ff00',endColorstr='#00ffff')}.sp-4{height:17%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffff',endColorstr='#0000ff')}.sp-5{height:16%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0000ff',endColorstr='#ff00ff')}.sp-6{height:17%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff',endColorstr='#ff0000')}.sp-hidden{display:none !important}.sp-cf:before,.sp-cf:after{content:"";display:table}.sp-cf:after{clear:both}.sp-cf{*zoom:1}@media(max-device-width:480px){.sp-color{right:40%}.sp-hue{left:63%}.sp-fill{padding-top:60%}}.sp-dragger{border-radius:5px;height:5px;width:5px;border:1px solid #fff;background:#000;cursor:pointer;position:absolute;top:0;left:0}.sp-slider{position:absolute;top:0;cursor:pointer;height:3px;left:-1px;right:-1px;border:1px solid #000;background:white;opacity:.8}.sp-container{border-radius:0;background-color:#ececec;border:solid 1px #f0c49b;padding:0}.sp-container,.sp-container button,.sp-container input,.sp-color,.sp-hue,.sp-clear{font:normal 12px "Lucida Grande","Lucida Sans Unicode","Lucida Sans",Geneva,Verdana,sans-serif;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.sp-top{margin-bottom:3px}.sp-color,.sp-hue,.sp-clear{border:solid 1px #666}.sp-input-container{float:right;width:100px;margin-bottom:4px}.sp-initial-disabled .sp-input-container{width:100%}.sp-input{font-size:12px !important;border:1px inset;padding:4px 5px;margin:0;width:100%;background:transparent;border-radius:3px;color:#222}.sp-input:focus{border:1px solid orange}.sp-input.sp-validation-error{border:1px solid red;background:#fdd}.sp-picker-container,.sp-palette-container{float:left;position:relative;padding:10px;padding-bottom:300px;margin-bottom:-290px}.sp-picker-container{width:172px;border-left:solid 1px #fff}.sp-palette-container{border-right:solid 1px #ccc}.sp-palette-only .sp-palette-container{border:0}.sp-palette .sp-thumb-el{display:block;position:relative;float:left;width:24px;height:15px;margin:3px;cursor:pointer;border:solid 2px transparent}.sp-palette .sp-thumb-el:hover,.sp-palette .sp-thumb-el.sp-thumb-active{border-color:orange}.sp-thumb-el{position:relative}.sp-initial{float:left;border:solid 1px #333}.sp-initial span{width:30px;height:25px;border:0;display:block;float:left;margin:0}.sp-initial .sp-clear-display{background-position:center}.sp-palette-button-container,.sp-button-container{float:right}.sp-replacer{margin:0;overflow:hidden;cursor:pointer;padding:4px;display:inline-block;*zoom:1;*display:inline;border:solid 1px #91765d;background:#eee;color:#333;vertical-align:middle}.sp-replacer:hover,.sp-replacer.sp-active{border-color:#f0c49b;color:#111}.sp-replacer.sp-disabled{cursor:default;border-color:silver;color:silver}.sp-dd{padding:2px 0;height:16px;line-height:16px;float:left;font-size:10px}.sp-preview{position:relative;width:25px;height:20px;border:solid 1px #222;margin-right:5px;float:left;z-index:0}.sp-palette{*width:220px;max-width:220px}.sp-palette .sp-thumb-el{width:16px;height:16px;margin:2px 1px;border:solid 1px #d0d0d0}.sp-container{padding-bottom:0}.sp-container button{background-color:#eee;background-image:-webkit-linear-gradient(top,#eee,#ccc);background-image:-moz-linear-gradient(top,#eee,#ccc);background-image:-ms-linear-gradient(top,#eee,#ccc);background-image:-o-linear-gradient(top,#eee,#ccc);background-image:linear-gradient(to bottom,#eee,#ccc);border:1px solid #ccc;border-bottom:1px solid #bbb;border-radius:3px;color:#333;font-size:14px;line-height:1;padding:5px 4px;text-align:center;text-shadow:0 1px 0 #eee;vertical-align:middle}.sp-container button:hover{background-color:#ddd;background-image:-webkit-linear-gradient(top,#ddd,#bbb);background-image:-moz-linear-gradient(top,#ddd,#bbb);background-image:-ms-linear-gradient(top,#ddd,#bbb);background-image:-o-linear-gradient(top,#ddd,#bbb);background-image:linear-gradient(to bottom,#ddd,#bbb);border:1px solid #bbb;border-bottom:1px solid #999;cursor:pointer;text-shadow:0 1px 0 #ddd}.sp-container button:active{border:1px solid #aaa;border-bottom:1px solid #888;-webkit-box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee;-moz-box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee;-ms-box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee;-o-box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee;box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee}.sp-cancel{font-size:11px;color:#d93f3f !important;margin:0;padding:2px;margin-right:5px;vertical-align:middle;text-decoration:none}.sp-cancel:hover{color:#d93f3f !important;text-decoration:underline}.sp-palette span:hover,.sp-palette span.sp-thumb-active{border-color:#000}.sp-preview,.sp-alpha,.sp-thumb-el{position:relative;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.sp-preview-inner,.sp-alpha-inner,.sp-thumb-inner{display:block;position:absolute;top:0;left:0;bottom:0;right:0}.sp-palette .sp-thumb-inner{background-position:50% 50%;background-repeat:no-repeat}.sp-palette .sp-thumb-light.sp-thumb-active .sp-thumb-inner{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiYBhsgJFMffxAXABlN5JruT4Q3wfi/0DsT64h8UD8HmpIPCWG/KemIfOJCUB+Aoacx6EGBZyHBqI+WsDCwuQ9mhxeg2A210Ntfo8klk9sOMijaURm7yc1UP2RNCMbKE9ODK1HM6iegYLkfx8pligC9lCD7KmRof0ZhjQACDAAceovrtpVBRkAAAAASUVORK5CYII=)}.sp-palette .sp-thumb-dark.sp-thumb-active .sp-thumb-inner{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=)}.sp-clear-display{background-repeat:no-repeat;background-position:center;background-image:url(data:image/gif;base64,R0lGODlhFAAUAPcAAAAAAJmZmZ2dnZ6enqKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq/Hx8fLy8vT09PX19ff39/j4+Pn5+fr6+vv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAihAP9FoPCvoMGDBy08+EdhQAIJCCMybCDAAYUEARBAlFiQQoMABQhKUJBxY0SPICEYHBnggEmDKAuoPMjS5cGYMxHW3IiT478JJA8M/CjTZ0GgLRekNGpwAsYABHIypcAgQMsITDtWJYBR6NSqMico9cqR6tKfY7GeBCuVwlipDNmefAtTrkSzB1RaIAoXodsABiZAEFB06gIBWC1mLVgBa0AAOw==)} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/vendor/spectrum/redux-spectrum.css.map b/redux/ReduxCore/assets/css/vendor/spectrum/redux-spectrum.css.map new file mode 100644 index 0000000..5cc2ebd --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/spectrum/redux-spectrum.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["redux-spectrum.scss"], +"names": [], +"file": "redux-spectrum.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/assets/css/vendor/spectrum/redux-spectrum.scss b/redux/ReduxCore/assets/css/vendor/spectrum/redux-spectrum.scss new file mode 100644 index 0000000..3093797 --- /dev/null +++ b/redux/ReduxCore/assets/css/vendor/spectrum/redux-spectrum.scss @@ -0,0 +1,566 @@ +/*** +Spectrum Colorpicker v1.5.1 +https://github.com/bgrins/spectrum +Author: Brian Grinstead +License: MIT +***/ + +.sp-container { + position: absolute; + top: 0; + left: 0; + display: inline-block; + *display: inline; + *zoom: 1; + /* https://github.com/bgrins/spectrum/issues/40 */ + z-index: 9999994; + overflow: hidden; +} + + +.sp-container.sp-flat { + position: relative; +} + +/* Fix for * { box-sizing: border-box; } */ +.sp-container, +.sp-container * { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +/* http://ansciath.tumblr.com/post/7347495869/css-aspect-ratio */ +.sp-top { + position: relative; + width: 100%; + display: inline-block; +} + +.sp-top-inner { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; +} + +.sp-color { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 20%; +} + +.sp-hue { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 84%; + height: 100%; +} + +.sp-clear-enabled .sp-hue { + top: 33px; + height: 77.5%; +} + +.sp-fill { + padding-top: 80%; +} + +.sp-sat, .sp-val { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} + +.sp-alpha-enabled .sp-top { + margin-bottom: 18px; +} + +.sp-alpha-enabled .sp-alpha { + display: block; +} + +.sp-alpha-handle { + position: absolute; + top: -4px; + bottom: -4px; + width: 6px; + left: 50%; + cursor: pointer; + border: 1px solid black; + background: white; + opacity: .8; +} + +.sp-alpha { + display: none; + position: absolute; + bottom: -14px; + right: 0; + left: 0; + height: 8px; +} + +.sp-alpha-inner { + border: solid 1px #333; +} + +.sp-clear { + display: none; +} + +.sp-clear.sp-clear-display { + background-position: center; +} + +.sp-clear-enabled .sp-clear { + display: block; + position: absolute; + top: 0px; + right: 0; + bottom: 0; + left: 84%; + height: 28px; +} + +/* Don't allow text selection */ +.sp-container, .sp-replacer, .sp-preview, .sp-dragger, .sp-slider, .sp-alpha, .sp-clear, .sp-alpha-handle, .sp-container.sp-dragging .sp-input, .sp-container button { + -webkit-user-select: none; + -moz-user-select: -moz-none; + -o-user-select: none; + user-select: none; +} + +.sp-container.sp-input-disabled .sp-input-container { + display: none; +} + +.sp-container.sp-buttons-disabled .sp-button-container { + display: none; +} + +.sp-container.sp-palette-buttons-disabled .sp-palette-button-container { + display: none; +} + +.sp-palette-only .sp-picker-container { + display: none; +} + +.sp-palette-disabled .sp-palette-container { + display: none; +} + +.sp-initial-disabled .sp-initial { + display: none; +} + +/* Gradients for hue, saturation and value instead of images. Not pretty... but it works */ +.sp-sat { + background-image: -webkit-gradient(linear, 0 0, 100% 0, from(#FFF), to(rgba(204, 154, 129, 0))); + background-image: -webkit-linear-gradient(left, #FFF, rgba(204, 154, 129, 0)); + background-image: -moz-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); + background-image: -o-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); + background-image: -ms-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); + background-image: linear-gradient(to right, #fff, rgba(204, 154, 129, 0)); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)"; + filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr='#FFFFFFFF', endColorstr='#00CC9A81'); +} + +.sp-val { + background-image: -webkit-gradient(linear, 0 100%, 0 0, from(#000000), to(rgba(204, 154, 129, 0))); + background-image: -webkit-linear-gradient(bottom, #000000, rgba(204, 154, 129, 0)); + background-image: -moz-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); + background-image: -o-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); + background-image: -ms-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); + background-image: linear-gradient(to top, #000, rgba(204, 154, 129, 0)); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)"; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81', endColorstr='#FF000000'); +} + +.sp-hue { + background: -moz-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); + background: -ms-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); + background: -o-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); + background: -webkit-gradient(linear, left top, left bottom, from(#ff0000), color-stop(0.17, #ffff00), color-stop(0.33, #00ff00), color-stop(0.5, #00ffff), color-stop(0.67, #0000ff), color-stop(0.83, #ff00ff), to(#ff0000)); + background: -webkit-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); + background: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); +} + +/* IE filters do not support multiple color stops. + Generate 6 divs, line them up, and do two color gradients for each. + Yes, really. + */ +.sp-1 { + height: 17%; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000', endColorstr='#ffff00'); +} + +.sp-2 { + height: 16%; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00', endColorstr='#00ff00'); +} + +.sp-3 { + height: 17%; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ff00', endColorstr='#00ffff'); +} + +.sp-4 { + height: 17%; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffff', endColorstr='#0000ff'); +} + +.sp-5 { + height: 16%; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0000ff', endColorstr='#ff00ff'); +} + +.sp-6 { + height: 17%; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff', endColorstr='#ff0000'); +} + +.sp-hidden { + display: none !important; +} + +/* Clearfix hack */ +.sp-cf:before, .sp-cf:after { + content: ""; + display: table; +} + +.sp-cf:after { + clear: both; +} + +.sp-cf { + *zoom: 1; +} + +/* Mobile devices, make hue slider bigger so it is easier to slide */ +@media (max-device-width: 480px) { + .sp-color { + right: 40%; + } + .sp-hue { + left: 63%; + } + .sp-fill { + padding-top: 60%; + } +} + +.sp-dragger { + border-radius: 5px; + height: 5px; + width: 5px; + border: 1px solid #fff; + background: #000; + cursor: pointer; + position: absolute; + top: 0; + left: 0; +} + +.sp-slider { + position: absolute; + top: 0; + cursor: pointer; + height: 3px; + left: -1px; + right: -1px; + border: 1px solid #000; + background: white; + opacity: .8; +} + +/* +Theme authors: +Here are the basic themeable display options (colors, fonts, global widths). +See http://bgrins.github.io/spectrum/themes/ for instructions. +*/ + +.sp-container { + border-radius: 0; + background-color: #ECECEC; + border: solid 1px #f0c49B; + padding: 0; +} + +.sp-container, .sp-container button, .sp-container input, .sp-color, .sp-hue, .sp-clear { + font: normal 12px "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +.sp-top { + margin-bottom: 3px; +} + +.sp-color, .sp-hue, .sp-clear { + border: solid 1px #666; +} + +/* Input */ +.sp-input-container { + float: right; + width: 100px; + margin-bottom: 4px; +} + +.sp-initial-disabled .sp-input-container { + width: 100%; +} + +.sp-input { + font-size: 12px !important; + border: 1px inset; + padding: 4px 5px; + margin: 0; + width: 100%; + background: transparent; + border-radius: 3px; + color: #222; +} + +.sp-input:focus { + border: 1px solid orange; +} + +.sp-input.sp-validation-error { + border: 1px solid red; + background: #fdd; +} + +.sp-picker-container, .sp-palette-container { + float: left; + position: relative; + padding: 10px; + padding-bottom: 300px; + margin-bottom: -290px; +} + +.sp-picker-container { + width: 172px; + border-left: solid 1px #fff; +} + +/* Palettes */ +.sp-palette-container { + border-right: solid 1px #ccc; +} + +.sp-palette-only .sp-palette-container { + border: 0; +} + +.sp-palette .sp-thumb-el { + display: block; + position: relative; + float: left; + width: 24px; + height: 15px; + margin: 3px; + cursor: pointer; + border: solid 2px transparent; +} + +.sp-palette .sp-thumb-el:hover, .sp-palette .sp-thumb-el.sp-thumb-active { + border-color: orange; +} + +.sp-thumb-el { + position: relative; +} + +/* Initial */ +.sp-initial { + float: left; + border: solid 1px #333; +} + +.sp-initial span { + width: 30px; + height: 25px; + border: none; + display: block; + float: left; + margin: 0; +} + +.sp-initial .sp-clear-display { + background-position: center; +} + +/* Buttons */ +.sp-palette-button-container, +.sp-button-container { + float: right; +} + +/* Replacer (the little preview div that shows up instead of the ) */ +.sp-replacer { + margin: 0; + overflow: hidden; + cursor: pointer; + padding: 4px; + display: inline-block; + *zoom: 1; + *display: inline; + border: solid 1px #91765d; + background: #eee; + color: #333; + vertical-align: middle; +} + +.sp-replacer:hover, .sp-replacer.sp-active { + border-color: #F0C49B; + color: #111; +} + +.sp-replacer.sp-disabled { + cursor: default; + border-color: silver; + color: silver; +} + +.sp-dd { + padding: 2px 0; + height: 16px; + line-height: 16px; + float: left; + font-size: 10px; +} + +.sp-preview { + position: relative; + width: 25px; + height: 20px; + border: solid 1px #222; + margin-right: 5px; + float: left; + z-index: 0; +} + +.sp-palette { + *width: 220px; + max-width: 220px; +} + +.sp-palette .sp-thumb-el { + width: 16px; + height: 16px; + margin: 2px 1px; + border: solid 1px #d0d0d0; +} + +.sp-container { + padding-bottom: 0; +} + +/* Buttons: http://hellohappy.org/css3-buttons/ */ +.sp-container button { + background-color: #eeeeee; + background-image: -webkit-linear-gradient(top, #eeeeee, #cccccc); + background-image: -moz-linear-gradient(top, #eeeeee, #cccccc); + background-image: -ms-linear-gradient(top, #eeeeee, #cccccc); + background-image: -o-linear-gradient(top, #eeeeee, #cccccc); + background-image: linear-gradient(to bottom, #eeeeee, #cccccc); + border: 1px solid #ccc; + border-bottom: 1px solid #bbb; + border-radius: 3px; + color: #333; + font-size: 14px; + line-height: 1; + padding: 5px 4px; + text-align: center; + text-shadow: 0 1px 0 #eee; + vertical-align: middle; +} + +.sp-container button:hover { + background-color: #dddddd; + background-image: -webkit-linear-gradient(top, #dddddd, #bbbbbb); + background-image: -moz-linear-gradient(top, #dddddd, #bbbbbb); + background-image: -ms-linear-gradient(top, #dddddd, #bbbbbb); + background-image: -o-linear-gradient(top, #dddddd, #bbbbbb); + background-image: linear-gradient(to bottom, #dddddd, #bbbbbb); + border: 1px solid #bbb; + border-bottom: 1px solid #999; + cursor: pointer; + text-shadow: 0 1px 0 #ddd; +} + +.sp-container button:active { + border: 1px solid #aaa; + border-bottom: 1px solid #888; + -webkit-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; + -moz-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; + -ms-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; + -o-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; + box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; +} + +.sp-cancel { + font-size: 11px; + color: #d93f3f !important; + margin: 0; + padding: 2px; + margin-right: 5px; + vertical-align: middle; + text-decoration: none; + +} + +.sp-cancel:hover { + color: #d93f3f !important; + text-decoration: underline; +} + +.sp-palette span:hover, .sp-palette span.sp-thumb-active { + border-color: #000; +} + +.sp-preview, .sp-alpha, .sp-thumb-el { + position: relative; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==); +} + +.sp-preview-inner, .sp-alpha-inner, .sp-thumb-inner { + display: block; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; +} + +.sp-palette .sp-thumb-inner { + background-position: 50% 50%; + background-repeat: no-repeat; +} + +.sp-palette .sp-thumb-light.sp-thumb-active .sp-thumb-inner { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiYBhsgJFMffxAXABlN5JruT4Q3wfi/0DsT64h8UD8HmpIPCWG/KemIfOJCUB+Aoacx6EGBZyHBqI+WsDCwuQ9mhxeg2A210Ntfo8klk9sOMijaURm7yc1UP2RNCMbKE9ODK1HM6iegYLkfx8pligC9lCD7KmRof0ZhjQACDAAceovrtpVBRkAAAAASUVORK5CYII=); +} + +.sp-palette .sp-thumb-dark.sp-thumb-active .sp-thumb-inner { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=); +} + +.sp-clear-display { + background-repeat: no-repeat; + background-position: center; + background-image: url(data:image/gif;base64,R0lGODlhFAAUAPcAAAAAAJmZmZ2dnZ6enqKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq/Hx8fLy8vT09PX19ff39/j4+Pn5+fr6+vv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAihAP9FoPCvoMGDBy08+EdhQAIJCCMybCDAAYUEARBAlFiQQoMABQhKUJBxY0SPICEYHBnggEmDKAuoPMjS5cGYMxHW3IiT478JJA8M/CjTZ0GgLRekNGpwAsYABHIypcAgQMsITDtWJYBR6NSqMico9cqR6tKfY7GeBCuVwlipDNmefAtTrkSzB1RaIAoXodsABiZAEFB06gIBWC1mLVgBa0AAOw==); +} diff --git a/redux/ReduxCore/assets/img/1c.png b/redux/ReduxCore/assets/img/1c.png new file mode 100644 index 0000000..6bbb1c3 Binary files /dev/null and b/redux/ReduxCore/assets/img/1c.png differ diff --git a/redux/ReduxCore/assets/img/1col.png b/redux/ReduxCore/assets/img/1col.png new file mode 100644 index 0000000..1664aa7 Binary files /dev/null and b/redux/ReduxCore/assets/img/1col.png differ diff --git a/redux/ReduxCore/assets/img/2-col-portfolio.png b/redux/ReduxCore/assets/img/2-col-portfolio.png new file mode 100644 index 0000000..be72cb1 Binary files /dev/null and b/redux/ReduxCore/assets/img/2-col-portfolio.png differ diff --git a/redux/ReduxCore/assets/img/2cl.png b/redux/ReduxCore/assets/img/2cl.png new file mode 100644 index 0000000..5a9baf7 Binary files /dev/null and b/redux/ReduxCore/assets/img/2cl.png differ diff --git a/redux/ReduxCore/assets/img/2cr.png b/redux/ReduxCore/assets/img/2cr.png new file mode 100644 index 0000000..0624bfc Binary files /dev/null and b/redux/ReduxCore/assets/img/2cr.png differ diff --git a/redux/ReduxCore/assets/img/3-col-portfolio.png b/redux/ReduxCore/assets/img/3-col-portfolio.png new file mode 100644 index 0000000..aa7d45a Binary files /dev/null and b/redux/ReduxCore/assets/img/3-col-portfolio.png differ diff --git a/redux/ReduxCore/assets/img/3cl.png b/redux/ReduxCore/assets/img/3cl.png new file mode 100644 index 0000000..865634c Binary files /dev/null and b/redux/ReduxCore/assets/img/3cl.png differ diff --git a/redux/ReduxCore/assets/img/3cm.png b/redux/ReduxCore/assets/img/3cm.png new file mode 100644 index 0000000..bb8c4fe Binary files /dev/null and b/redux/ReduxCore/assets/img/3cm.png differ diff --git a/redux/ReduxCore/assets/img/3cr.png b/redux/ReduxCore/assets/img/3cr.png new file mode 100644 index 0000000..61773a5 Binary files /dev/null and b/redux/ReduxCore/assets/img/3cr.png differ diff --git a/redux/ReduxCore/assets/img/4-col-portfolio.png b/redux/ReduxCore/assets/img/4-col-portfolio.png new file mode 100644 index 0000000..907eba2 Binary files /dev/null and b/redux/ReduxCore/assets/img/4-col-portfolio.png differ diff --git a/redux/ReduxCore/assets/img/ajax.gif b/redux/ReduxCore/assets/img/ajax.gif new file mode 100644 index 0000000..e146961 Binary files /dev/null and b/redux/ReduxCore/assets/img/ajax.gif differ diff --git a/redux/ReduxCore/assets/img/menu_icon.png b/redux/ReduxCore/assets/img/menu_icon.png new file mode 100644 index 0000000..da87bf7 Binary files /dev/null and b/redux/ReduxCore/assets/img/menu_icon.png differ diff --git a/redux/ReduxCore/assets/img/toggle_tabs.png b/redux/ReduxCore/assets/img/toggle_tabs.png new file mode 100644 index 0000000..ff435fb Binary files /dev/null and b/redux/ReduxCore/assets/img/toggle_tabs.png differ diff --git a/redux/ReduxCore/assets/js/media/media.js b/redux/ReduxCore/assets/js/media/media.js new file mode 100644 index 0000000..8a4387c --- /dev/null +++ b/redux/ReduxCore/assets/js/media/media.js @@ -0,0 +1,223 @@ +/*global redux_change, wp, redux, libFilter */ + +/** + * Media Uploader + * Dependencies : jquery, wp media uploader + * Feature added by : Smartik - http://smartik.ws/ + * Date : 05.28.2013 + */ + +(function($){ + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.media = redux.field_objects.media || {}; + + var isFiltered; + + redux.field_objects.media.init = function( selector ) { + if ( !selector ) { + selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-media:visible' ); + } + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + + isFiltered = false; + + // Remove the image button + el.find( '.remove-image, .remove-file' ).unbind( 'click' ).on( + 'click', function() { + redux.field_objects.media.removeFile( $( this ).parents( 'fieldset.redux-field:first' ) ); + } + ); + // Upload media button + el.find( '.media_upload_button' ).unbind().on( + 'click', function( event ) { + redux.field_objects.media.addFile( event, $( this ).parents( 'fieldset.redux-field:first' ) ); + } + ); + } + ); + }; + + // Add a file via the wp.media function + redux.field_objects.media.addFile = function( event, selector ) { + event.preventDefault(); + + var frame; + var jQueryel = $( this ); + var libFilter; + + // If the media frame already exists, reopen it. + if ( frame ) { + frame.open(); + return; + } + + // Get library filter data + var filter = $( selector ).find('.library-filter').data('lib-filter'); + + // Must exist to do decoding + if (filter !== undefined) { + if (filter !== ''){ + libFilter = []; + isFiltered = true; + filter = decodeURIComponent(filter); + filter = JSON.parse(filter); + + $.each(filter, function(index, value) { + libFilter.push(value); + }); + } + } + + // Create the media frame. + frame = wp.media( + { + multiple: false, + library: { + type: libFilter //Only allow images + }, + + // Set the title of the modal. + title: jQueryel.data( 'choose' ), + + // Customize the submit button. + button: { + // Set the text of the button. + text: jQueryel.data( 'update' ) + // Tell the button not to close the modal, since we're + // going to refresh the page when the image is selected. + } + } + ); + + // When an image is selected, run a callback. + frame.on( + 'select', function() { + + // Grab the selected attachment. + var attachment = frame.state().get( 'selection' ).first(); + frame.close(); + + var data = $( selector ).find('.data').data(); + + if ( typeof redux.field_objects.media === 'undefined' || typeof redux.field_objects.media === undefined ) { + redux.field_objects.media = {}; + } + + if ( data === undefined || data.mode === 'undefined' ) { + data = {}; + data.mode = "image"; + } + + if (isFiltered === true) { + data.mode = 0; + } + + if (data.mode === 0) { + + } else { + if ( data.mode !== false) { + if (attachment.attributes.type !== data.mode) { + if (attachment.attributes.subtype !== data.mode ) { + return; + } + } + } + } +console.log(attachment); + + selector.find( '.upload' ).val( attachment.attributes.url ); + selector.find( '.upload-id' ).val( attachment.attributes.id ); + selector.find( '.upload-height' ).val( attachment.attributes.height ); + selector.find( '.upload-width' ).val( attachment.attributes.width ); + selector.find( '.upload-title' ).val( attachment.attributes.title ); + selector.find( '.upload-caption' ).val( attachment.attributes.caption ); + selector.find( '.upload-alt' ).val( attachment.attributes.alt ); + selector.find( '.upload-description' ).val( attachment.attributes.description ); + + redux_change( $( selector ).find( '.upload-id' ) ); + + var thumbSrc = attachment.attributes.url; + if ( typeof attachment.attributes.sizes !== 'undefined' && typeof attachment.attributes.sizes.thumbnail !== 'undefined' ) { + thumbSrc = attachment.attributes.sizes.thumbnail.url; + } else if ( typeof attachment.attributes.sizes !== 'undefined' ) { + var height = attachment.attributes.height; + + for ( var key in attachment.attributes.sizes ) { + var object = attachment.attributes.sizes[key]; + + if ( object.height < height ) { + height = object.height; + thumbSrc = object.url; + } + } + } else { + thumbSrc = attachment.attributes.icon; + } + + selector.find( '.upload-thumbnail' ).val( thumbSrc ); + if ( !selector.find( '.upload' ).hasClass( 'noPreview' ) ) { + selector.find( '.screenshot' ).empty().hide().append( '' ).slideDown( 'fast' ); + } + + //selector.find('.media_upload_button').unbind(); + selector.find( '.remove-image' ).removeClass( 'hide' );//show "Remove" button + selector.find( '.redux-background-properties' ).slideDown(); + } + ); + + // Finally, open the modal. + frame.open(); + }; + + // Function to remove the image on click. Still requires a save + redux.field_objects.media.removeFile = function( selector ) { + + // This shouldn't have been run... + if ( !selector.find( '.remove-image' ).addClass( 'hide' ) ) { + return; + } + + selector.find( '.remove-image' ).addClass( 'hide' );//hide "Remove" button + selector.find( '.upload' ).val( '' ); + selector.find( '.upload-id' ).val( '' ); + selector.find( '.upload-height' ).val( '' ); + selector.find( '.upload-width' ).val( '' ); + selector.find( '.upload-title' ).val( '' ); + selector.find( '.upload-caption' ).val( '' ); + selector.find( '.upload-alt' ).val( '' ); + selector.find( '.upload-description' ).val( '' ); + selector.find( '.upload-thumbnail' ).val( '' ); + redux_change( $( selector ).find( '.upload-id' ) ); + selector.find( '.redux-background-properties' ).hide(); + + var screenshot = selector.find( '.screenshot' ); + + // Hide the screenshot + screenshot.slideUp(); + + selector.find( '.remove-file' ).unbind(); + + // We don't display the upload button if .upload-notice is present + // This means the user doesn't have the WordPress 3.5 Media Library Support + if ( selector.find( '.section-upload .upload-notice' ).length > 0 ) { + selector.find( '.media_upload_button' ).remove(); + } + }; +})( jQuery ); diff --git a/redux/ReduxCore/assets/js/media/media.min.js b/redux/ReduxCore/assets/js/media/media.min.js new file mode 100644 index 0000000..804ebc4 --- /dev/null +++ b/redux/ReduxCore/assets/js/media/media.min.js @@ -0,0 +1 @@ +!function(s){"use strict";var r;redux.field_objects=redux.field_objects||{},redux.field_objects.media=redux.field_objects.media||{},redux.field_objects.media.init=function(e){e||(e=s(document).find(".redux-group-tab:visible").find(".redux-container-media:visible")),s(e).each(function(){var e=s(this),i=e;e.hasClass("redux-field-container")||(i=e.parents(".redux-field-container:first")),i.is(":hidden")||i.hasClass("redux-field-init")&&(i.removeClass("redux-field-init"),r=!1,e.find(".remove-image, .remove-file").unbind("click").on("click",function(){redux.field_objects.media.removeFile(s(this).parents("fieldset.redux-field:first"))}),e.find(".media_upload_button").unbind().on("click",function(e){redux.field_objects.media.addFile(e,s(this).parents("fieldset.redux-field:first"))}))})},redux.field_objects.media.addFile=function(e,n){var o;e.preventDefault();var d,i=s(this);if(o)o.open();else{var t=s(n).find(".library-filter").data("lib-filter");void 0!==t&&""!==t&&(d=[],r=!0,t=decodeURIComponent(t),t=JSON.parse(t),s.each(t,function(e,i){d.push(i)})),(o=wp.media({multiple:!1,library:{type:d},title:i.data("choose"),button:{text:i.data("update")}})).on("select",function(){var e=o.state().get("selection").first();o.close();var i=s(n).find(".data").data();if(void 0!==redux.field_objects.media&&void 0!==typeof redux.field_objects.media||(redux.field_objects.media={}),void 0!==i&&"undefined"!==i.mode||(i={mode:"image"}),!0===r&&(i.mode=0),0===i.mode);else if(!1!==i.mode&&e.attributes.type!==i.mode&&e.attributes.subtype!==i.mode)return;console.log(e),n.find(".upload").val(e.attributes.url),n.find(".upload-id").val(e.attributes.id),n.find(".upload-height").val(e.attributes.height),n.find(".upload-width").val(e.attributes.width),n.find(".upload-title").val(e.attributes.title),n.find(".upload-caption").val(e.attributes.caption),n.find(".upload-alt").val(e.attributes.alt),n.find(".upload-description").val(e.attributes.description),redux_change(s(n).find(".upload-id"));var d=e.attributes.url;if(void 0!==e.attributes.sizes&&void 0!==e.attributes.sizes.thumbnail)d=e.attributes.sizes.thumbnail.url;else if(void 0!==e.attributes.sizes){var t=e.attributes.height;for(var a in e.attributes.sizes){var l=e.attributes.sizes[a];l.height').slideDown("fast"),n.find(".remove-image").removeClass("hide"),n.find(".redux-background-properties").slideDown()}),o.open()}},redux.field_objects.media.removeFile=function(e){e.find(".remove-image").addClass("hide")&&(e.find(".remove-image").addClass("hide"),e.find(".upload").val(""),e.find(".upload-id").val(""),e.find(".upload-height").val(""),e.find(".upload-width").val(""),e.find(".upload-title").val(""),e.find(".upload-caption").val(""),e.find(".upload-alt").val(""),e.find(".upload-description").val(""),e.find(".upload-thumbnail").val(""),redux_change(s(e).find(".upload-id")),e.find(".redux-background-properties").hide(),e.find(".screenshot").slideUp(),e.find(".remove-file").unbind(),0 bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom)); + }; + + $.redux.hideFields(); + $.redux.checkRequired(); + $.redux.initEvents(); + $.redux.initQtip(); + $.redux.tabCheck(); + $.redux.notices(); + $.redux.tabControl(); + } + ); + + $.redux.ajax_save = function( button ) { + + var overlay = $( document.getElementById( 'redux_ajax_overlay' ) ); + overlay.fadeIn(); + + // Add the loading mechanism + jQuery( '.redux-action_bar .spinner' ).addClass( 'is-active' ); + + jQuery( '.redux-action_bar input' ).attr( 'disabled', 'disabled' ); + var $notification_bar = jQuery( document.getElementById( 'redux_notification_bar' ) ); + $notification_bar.slideUp(); + jQuery( '.redux-save-warn' ).slideUp(); + jQuery( '.redux_ajax_save_error' ).slideUp( + 'medium', function() { + jQuery( this ).remove(); + } + ); + + var $parent = jQuery( document.getElementById( "redux-form-wrapper" ) ); + + // Editor field doesn't auto save. Have to call it. Boo. + if ( redux.fields.hasOwnProperty( "editor" ) ) { + $.each( + redux.fields.editor, function( $key, $index ) { + if ( typeof(tinyMCE) !== 'undefined' ) { + var editor = tinyMCE.get( $key ); + if ( editor ) { + editor.save(); + } + } + } + ); + } + + var $data = $parent.serialize(); + // add values for checked and unchecked checkboxes fields + $parent.find( 'input[type=checkbox]' ).each( + function() { + if ( typeof $( this ).attr( 'name' ) !== "undefined" ) { + var chkVal = $( this ).is( ':checked' ) ? $( this ).val() : "0"; + $data += "&" + $( this ).attr( 'name' ) + "=" + chkVal; + } + } + ); + + + if ( button.attr( 'name' ) != "redux_save" ) { + $data += "&" + button.attr( 'name' ) + "=" + button.val(); + } + + var $nonce = $parent.attr( "data-nonce" ); + + jQuery.ajax( + { + type: "post", + dataType: "json", + url: ajaxurl, + data: { + action: redux.args.opt_name + "_ajax_save", + nonce: $nonce, + 'opt_name': redux.args.opt_name, + data: $data + }, + error: function( response ) { + if ( !window.console ) console = {}; + console.log = console.log || function( name, data ) {}; + console.log( redux.ajax.console ); + console.log( response.responseText ); + jQuery( '.redux-action_bar input' ).removeAttr( 'disabled' ); + overlay.fadeOut( 'fast' ); + jQuery( '.redux-action_bar .spinner' ).removeClass( 'is-active' ); + alert( redux.ajax.alert ); + }, + success: function( response ) { + if ( response.action && response.action == "reload" ) { + location.reload( true ); + } else if ( response.status == "success" ) { + jQuery( '.redux-action_bar input' ).removeAttr( 'disabled' ); + overlay.fadeOut( 'fast' ); + jQuery( '.redux-action_bar .spinner' ).removeClass( 'is-active' ); + redux.options = response.options; + //redux.defaults = response.defaults; + redux.errors = response.errors; + redux.warnings = response.warnings; + + $notification_bar.html( response.notification_bar ).slideDown( 'fast' ); + if ( response.errors !== null || response.warnings !== null ) { + $.redux.notices(); + } + var $save_notice = $( document.getElementById( 'redux_notification_bar' ) ).find( '.saved_notice' ); + $save_notice.slideDown(); + $save_notice.delay( 4000 ).slideUp(); + } else { + jQuery( '.redux-action_bar input' ).removeAttr( 'disabled' ); + jQuery( '.redux-action_bar .spinner' ).removeClass( 'is-active' ); + overlay.fadeOut( 'fast' ); + jQuery( '.wrap h2:first' ).parent().append( '' ); + jQuery( '.redux_ajax_save_error' ).slideDown(); + jQuery( "html, body" ).animate( {scrollTop: 0}, "slow" ); + } + } + } + ); + return false; + }; + + $.redux.initEvents = function() { + $( '.redux-presets-bar' ).on( + 'click', function() { + window.onbeforeunload = null; + } + ); + + + $( '#toplevel_page_' + redux.args.slug + ' .wp-submenu a, #wp-admin-bar-' + redux.args.slug + ' a.ab-item' ).click( + function( e ) { + + if ( ( $( '#toplevel_page_' + redux.args.slug ).hasClass( 'wp-menu-open' ) || $( this ).hasClass( 'ab-item' ) ) && !$( this ).parents( 'ul.ab-submenu:first' ).hasClass( 'ab-sub-secondary' ) && $( this ).attr( 'href' ).toLowerCase().indexOf( redux.args.slug + "&tab=" ) >= 0 ) { + e.preventDefault(); + var url = $( this ).attr( 'href' ).split( '&tab=' ); + $( '#' + url[1] + '_section_group_li_a' ).click(); + $( this ).parents( 'ul:first' ).find( '.current' ).removeClass( 'current' ); + $( this ).addClass( 'current' ); + $( this ).parent().addClass( 'current' ); + return false; + } + } + ); + + // Save button clicked + $( '.redux-action_bar input, #redux-import-action input' ).on( + 'click', function( e ) { + if ( $( this ).attr( 'name' ) == redux.args.opt_name + '[defaults]' ) { + // Defaults button clicked + if ( !confirm( redux.args.reset_confirm ) ) { + return false; + } + } else if ( $( this ).attr( 'name' ) == redux.args.opt_name + '[defaults-section]' ) { + // Default section clicked + if ( !confirm( redux.args.reset_section_confirm ) ) { + return false; + } + } else if ( $( this ).attr( 'name' ) == 'import' ) { + if ( !confirm( redux.args.import_section_confirm ) ) { + return false; + } + } + + window.onbeforeunload = null; + + if ( redux.args.ajax_save === true ) { + $.redux.ajax_save( $( this ) ); + e.preventDefault(); + } else { + location.reload( true ); + } + } + ); + + $( '.expand_options' ).click( + function( e ) { + + e.preventDefault(); + + var container = $( '.redux-container' ); + if ( $( container ).hasClass( 'fully-expanded' ) ) { + $( container ).removeClass( 'fully-expanded' ); + + var tab = $.cookie( "redux_current_tab" ); + + $( '.redux-container:first' ).find( '#' + tab + '_section_group' ).fadeIn( + 200, function() { + if ( $( '.redux-container:first' ).find( '#redux-footer' ).length !== 0 ) { + $.redux.stickyInfo(); // race condition fix + } + $.redux.initFields(); + } + ); + } + + $.redux.expandOptions( $( this ).parents( '.redux-container:first' ) ); + + return false; + } + ); + + if ( $( '.saved_notice' ).is( ':visible' ) ) { + $( '.saved_notice' ).slideDown(); + } + + $( document.body ).on( + 'change', '.redux-field input, .redux-field textarea, .redux-field select', function() { + if ( !$( this ).hasClass( 'noUpdate' ) ) { + redux_change( $( this ) ); + } + } + ); + + var stickyHeight = $( '#redux-footer' ).height(); + + $( '#redux-sticky-padder' ).css( + { + height: stickyHeight + } + ); + $( '#redux-footer-sticky' ).removeClass( 'hide' ); + + if ( $( '#redux-footer' ).length !== 0 ) { + $( window ).scroll( + function() { + $.redux.stickyInfo(); + } + ); + + $( window ).resize( + function() { + $.redux.stickyInfo(); + } + ); + } + + $( '.saved_notice' ).delay( 4000 ).slideUp(); + + + }; + + $.redux.hideFields = function() { + $( "label[for='redux_hide_field']" ).each( + function( idx, val ) { + var tr = $( this ).parent().parent(); + $( tr ).addClass( 'hidden' ); + } + ); + }; + + $.redux.checkRequired = function() { + $.redux.required(); + + $( "body" ).on( + 'change', + '.redux-main select, .redux-main radio, .redux-main input[type=checkbox], .redux-main input[type=hidden]', + function( e ) { + $.redux.check_dependencies( this ); + } + ); + + $( "body" ).on( + 'check_dependencies', function( e, variable ) { + $.redux.check_dependencies( variable ); + } + ); + + $( '.redux-container td > fieldset:empty,td > div:empty' ).parent().parent().hide(); + }; + + $.redux.initQtip = function() { + if ( $().qtip ) { + // Shadow + var shadow = ''; + var tip_shadow = redux.args.hints.tip_style.shadow; + + if ( tip_shadow === true ) { + shadow = 'qtip-shadow'; + } + + // Color + var color = ''; + var tip_color = redux.args.hints.tip_style.color; + + if ( tip_color !== '' ) { + color = 'qtip-' + tip_color; + } + + // Rounded + var rounded = ''; + var tip_rounded = redux.args.hints.tip_style.rounded; + + if ( tip_rounded === true ) { + rounded = 'qtip-rounded'; + } + + // Tip style + var style = ''; + var tip_style = redux.args.hints.tip_style.style; + + if ( tip_style !== '' ) { + style = 'qtip-' + tip_style; + } + + var classes = shadow + ',' + color + ',' + rounded + ',' + style + ',redux-qtip'; + classes = classes.replace( /,/g, ' ' ); + + // Get position data + var myPos = redux.args.hints.tip_position.my; + var atPos = redux.args.hints.tip_position.at; + + // Gotta be lowercase, and in proper format + myPos = $.redux.verifyPos( myPos.toLowerCase(), true ); + atPos = $.redux.verifyPos( atPos.toLowerCase(), false ); + + // Tooltip trigger action + var showEvent = redux.args.hints.tip_effect.show.event; + var hideEvent = redux.args.hints.tip_effect.hide.event; + + // Tip show effect + var tipShowEffect = redux.args.hints.tip_effect.show.effect; + var tipShowDuration = redux.args.hints.tip_effect.show.duration; + + // Tip hide effect + var tipHideEffect = redux.args.hints.tip_effect.hide.effect; + var tipHideDuration = redux.args.hints.tip_effect.hide.duration; + + $( 'div.redux-dev-qtip' ).each( + function() { + $( this ).qtip( + { + content: { + text: $( this ).attr( 'qtip-content' ), + title: $( this ).attr( 'qtip-title' ) + }, + show: { + effect: function() { + $( this ).slideDown( 500 ); + }, + event: 'mouseover', + }, + hide: { + effect: function() { + $( this ).slideUp( 500 ); + }, + event: 'mouseleave', + }, + style: { + classes: 'qtip-shadow qtip-light', + }, + position: { + my: 'top center', + at: 'bottom center', + }, + } + ); + } + ); + + $( 'div.redux-hint-qtip' ).each( + function() { + $( this ).qtip( + { + content: { + text: $( this ).attr( 'qtip-content' ), + title: $( this ).attr( 'qtip-title' ) + }, + show: { + effect: function() { + switch ( tipShowEffect ) { + case 'slide': + $( this ).slideDown( tipShowDuration ); + break; + case 'fade': + $( this ).fadeIn( tipShowDuration ); + break; + default: + $( this ).show(); + break; + } + }, + event: showEvent, + }, + hide: { + effect: function() { + switch ( tipHideEffect ) { + case 'slide': + $( this ).slideUp( tipHideDuration ); + break; + case 'fade': + $( this ).fadeOut( tipHideDuration ); + break; + default: + $( this ).hide( tipHideDuration ); + break; + } + }, + event: hideEvent, + }, + style: { + classes: classes, + }, + position: { + my: myPos, + at: atPos, + }, + } + ); + } + ); + // }); + + $( 'input[qtip-content]' ).each( + function() { + $( this ).qtip( + { + content: { + text: $( this ).attr( 'qtip-content' ), + title: $( this ).attr( 'qtip-title' ) + }, + show: 'focus', + hide: 'blur', + style: classes, + position: { + my: myPos, + at: atPos, + }, + } + ); + } + ); + } + }; + + $.redux.tabCheck = function() { + $( '.redux-group-tab-link-a' ).click( + function() { + var link = $( this ); + if ( link.parent().hasClass( 'empty_section' ) && link.parent().hasClass( 'hasSubSections' ) ) { + var elements = $( this ).closest( 'ul' ).find( '.redux-group-tab-link-a' ); + var index = elements.index( this ); + link = elements.slice( index + 1, index + 2 ); + } + var el = link.parents( '.redux-container:first' ); + var relid = link.data( 'rel' ); // The group ID of interest + var oldid = el.find( '.redux-group-tab-link-li.active:first .redux-group-tab-link-a' ).data( 'rel' ); + + //console.log('id: '+relid+' oldid: '+oldid); + + if ( oldid === relid ) { + return; + } + + $( '#currentSection' ).val( relid ); + if ( !link.parents( '.postbox-container:first' ).length ) { + // Set the proper page cookie + $.cookie( + 'redux_current_tab', relid, { + expires: 7, + path: '/' + } + ); + } + + if ( el.find( '#' + relid + '_section_group_li' ).parents( '.redux-group-tab-link-li' ).length ) { + var parentID = el.find( '#' + relid + '_section_group_li' ).parents( '.redux-group-tab-link-li' ).attr( 'id' ).split( '_' ); + parentID = parentID[0]; + } + + el.find( '#toplevel_page_' + redux.args.slug + ' .wp-submenu a.current' ).removeClass( 'current' ); + el.find( '#toplevel_page_' + redux.args.slug + ' .wp-submenu li.current' ).removeClass( 'current' ); + + el.find( '#toplevel_page_' + redux.args.slug + ' .wp-submenu a' ).each( + function() { + var url = $( this ).attr( 'href' ).split( '&tab=' ); + if ( url[1] == relid || url[1] == parentID ) { + $( this ).addClass( 'current' ); + $( this ).parent().addClass( 'current' ); + } + } + ); + + if ( el.find( '#' + oldid + '_section_group_li' ).find( '#' + oldid + '_section_group_li' ).length ) { + //console.log('RELID is child of oldid'); + el.find( '#' + oldid + '_section_group_li' ).addClass( 'activeChild' ); + el.find( '#' + relid + '_section_group_li' ).addClass( 'active' ).removeClass( 'activeChild' ); + } else if ( el.find( '#' + relid + '_section_group_li' ).parents( '#' + oldid + '_section_group_li' ).length || el.find( '#' + oldid + '_section_group_li' ).parents( 'ul.subsection' ).find( '#' + relid + '_section_group_li' ).length ) { + //console.log('RELID is sibling or child of OLDID'); + if ( el.find( '#' + relid + '_section_group_li' ).parents( '#' + oldid + '_section_group_li' ).length ) { + //console.log('child of oldid'); + el.find( '#' + oldid + '_section_group_li' ).addClass( 'activeChild' ).removeClass( 'active' ); + } else { + //console.log('sibling'); + el.find( '#' + relid + '_section_group_li' ).addClass( 'active' ); + el.find( '#' + oldid + '_section_group_li' ).removeClass( 'active' ); + } + el.find( '#' + relid + '_section_group_li' ).removeClass( 'activeChild' ).addClass( 'active' ); + } else { + el.find( '#' + relid + '_section_group_li' ).addClass( 'active' ).removeClass( 'activeChild' ).find( 'ul.subsection' ).slideDown(); + + if ( el.find( '#' + oldid + '_section_group_li' ).find( 'ul.subsection' ).length ) { + //console.log('oldid is parent'); + //console.log('#' + relid + '_section_group_li'); + + el.find( '#' + oldid + '_section_group_li' ).find( 'ul.subsection' ).slideUp( + 'fast', function() { + el.find( '#' + oldid + '_section_group_li' ).removeClass( 'active' ).removeClass( 'activeChild' ); + } + ); + var newParent = el.find( '#' + relid + '_section_group_li' ).parents( '.hasSubSections:first' ); + + if ( newParent.length > 0 ) { + el.find( '#' + relid + '_section_group_li' ).removeClass( 'active' ); + relid = newParent.find( '.redux-group-tab-link-a:first' ).data( 'rel' ); + //console.log(relid); + if ( newParent.hasClass( 'empty_section' ) ) { + newParent.find( '.subsection li:first' ).addClass( 'active' ); + el.find( '#' + relid + '_section_group_li' ).removeClass( 'active' ).addClass( 'activeChild' ).find( 'ul.subsection' ).slideDown(); + newParent = newParent.find( '.subsection li:first' ); + relid = newParent.find( '.redux-group-tab-link-a:first' ).data( 'rel' ); + //console.log('Empty section, do the next one?'); + } else { + el.find( '#' + relid + '_section_group_li' ).addClass( 'active' ).removeClass( 'activeChild' ).find( 'ul.subsection' ).slideDown(); + } + } + } else if ( el.find( '#' + oldid + '_section_group_li' ).parents( 'ul.subsection' ).length ) { + //console.log('oldid is a child'); + if ( !el.find( '#' + oldid + '_section_group_li' ).parents( '#' + relid + '_section_group_li' ).length ) { + //console.log('oldid is child, but not of relid'); + el.find( '#' + oldid + '_section_group_li' ).parents( 'ul.subsection' ).slideUp( + 'fast', function() { + el.find( '#' + oldid + '_section_group_li' ).removeClass( 'active' ); + el.find( '#' + oldid + '_section_group_li' ).parents( '.redux-group-tab-link-li' ).removeClass( 'active' ).removeClass( 'activeChild' ); + el.find( '#' + relid + '_section_group_li' ).parents( '.redux-group-tab-link-li' ).addClass( 'activeChild' ).find( 'ul.subsection' ).slideDown(); + el.find( '#' + relid + '_section_group_li' ).addClass( 'active' ); + } + ); + } else { + //console.log('oldid is child, but not of relid2'); + el.find( '#' + oldid + '_section_group_li' ).removeClass( 'active' ); + } + } else { + //console.log('Normal remove active from child'); + el.find( '#' + oldid + '_section_group_li' ).removeClass( 'active' ); + if ( el.find( '#' + relid + '_section_group_li' ).parents( '.redux-group-tab-link-li' ).length ) { + //console.log('here'); + el.find( '#' + relid + '_section_group_li' ).parents( '.redux-group-tab-link-li' ).addClass( 'activeChild' ).find( 'ul.subsection' ).slideDown(); + el.find( '#' + relid + '_section_group_li' ).addClass( 'active' ); + } + } + } + + // Show the group + el.find( '#' + oldid + '_section_group' ).hide(); + + el.find( '#' + relid + '_section_group' ).fadeIn( + 200, function() { + if ( el.find( '#redux-footer' ).length !== 0 ) { + $.redux.stickyInfo(); // race condition fix + } + $.redux.initFields(); + } + ); + $( '#toplevel_page_' + redux.args.slug ).find( '.current' ).removeClass( 'current' ); + + } + ); + + if ( redux.last_tab !== undefined ) { + $( '#' + redux.last_tab + '_section_group_li_a' ).click(); + return; + } + + var tab = decodeURI( (new RegExp( 'tab' + '=' + '(.+?)(&|$)' ).exec( location.search ) || ['', ''])[1] ); + + if ( tab !== "" ) { + if ( $.cookie( "redux_current_tab_get" ) !== tab ) { + $.cookie( + 'redux_current_tab', tab, { + expires: 7, + path: '/' + } + ); + $.cookie( + 'redux_current_tab_get', tab, { + expires: 7, + path: '/' + } + ); + + $( '#' + tab + '_section_group_li' ).click(); + } + } else if ( $.cookie( 'redux_current_tab_get' ) !== "" ) { + $.removeCookie( 'redux_current_tab_get' ); + } + + var sTab = $( '#' + $.cookie( "redux_current_tab" ) + '_section_group_li_a' ); + + // Tab the first item or the saved one + if ( $.cookie( "redux_current_tab" ) === null || typeof ($.cookie( "redux_current_tab" )) === "undefined" || sTab.length === 0 ) { + $( '.redux-container' ).find( '.redux-group-tab-link-a:first' ).click(); + } else { + sTab.click(); + } + + }; + + $.redux.initFields = function() { + $( ".redux-group-tab:visible" ).find( ".redux-field-init:visible" ).each( + function() { + + var type = $( this ).attr( 'data-type' ); + //console.log(type); + //if ( typeof redux.field_objects != 'undefined' && redux.field_objects[type] && redux.field_objects[type] ) { + if ( type in redux.field_objects && typeof redux.field_objects[type].init == 'function' ) { + redux.field_objects[type].init(); + } + if ( !redux.customizer && $( this ).hasClass( 'redux_remove_th' ) ) { + + var tr = $( this ).parents( 'tr:first' ); + var th = tr.find( 'th:first' ); + if ( th.html() && th.html().length > 0 ) { + $( this ).prepend( th.html() ); + $( this ).find( '.redux_field_th' ).css( 'padding', '0 0 10px 0' ); + } + $( this ).parent().attr( 'colspan', '2' ); + th.remove(); + } + } + ); + }; + + $.redux.notices = function() { + if ( redux.errors && redux.errors.errors ) { + $.each( + redux.errors.errors, function( sectionID, sectionArray ) { + $.each( + sectionArray.errors, function( key, value ) { + $( "#" + redux.args.opt_name + '-' + value.id ).addClass( "redux-field-error" ); + if ( $( "#" + redux.args.opt_name + '-' + value.id ).parent().find( '.redux-th-error' ).length === 0 ) { + $( "#" + redux.args.opt_name + '-' + value.id ).append( '
    ' + value.msg + '
    ' ); + } else { + $( "#" + redux.args.opt_name + '-' + value.id ).parent().find( '.redux-th-error' ).html( value.msg ).css( + 'display', 'block' + ); + } + } + ); + } + ); + $( '.redux-container' ).each( + function() { + var container = $( this ); + // Ajax cleanup + container.find( '.redux-menu-error' ).remove(); + var totalErrors = container.find( '.redux-field-error' ).length; + if ( totalErrors > 0 ) { + container.find( ".redux-field-errors span" ).text( totalErrors ); + container.find( ".redux-field-errors" ).slideDown(); + container.find( '.redux-group-tab' ).each( + function() { + var total = $( this ).find( '.redux-field-error' ).length; + if ( total > 0 ) { + var sectionID = $( this ).attr( 'id' ).split( '_' ); + sectionID = sectionID[0]; + container.find( '.redux-group-tab-link-a[data-key="' + sectionID + '"]' ).prepend( '' + total + '' ); + container.find( '.redux-group-tab-link-a[data-key="' + sectionID + '"]' ).addClass( "hasError" ); + var subParent = container.find( '.redux-group-tab-link-a[data-key="' + sectionID + '"]' ).parents( '.hasSubSections:first' ); + if ( subParent ) { + subParent.find( '.redux-group-tab-link-a:first' ).addClass( 'hasError' ); + } + } + } + ); + } + } + ); + } + if ( redux.warnings && redux.warnings.warnings ) { + $.each( + redux.warnings.warnings, function( sectionID, sectionArray ) { + $.each( + sectionArray.warnings, function( key, value ) { + $( "#" + redux.args.opt_name + '-' + value.id ).addClass( "redux-field-warning" ); + if ( $( "#" + redux.args.opt_name + '-' + value.id ).parent().find( '.redux-th-warning' ).length === 0 ) { + $( "#" + redux.args.opt_name + '-' + value.id ).append( '
    ' + value.msg + '
    ' ); + } else { + $( "#" + redux.args.opt_name + '-' + value.id ).parent().find( '.redux-th-warning' ).html( value.msg ).css( + 'display', 'block' + ); + } + } + ); + } + ); + $( '.redux-container' ).each( + function() { + var container = $( this ); + // Ajax cleanup + container.find( '.redux-menu-warning' ).remove(); + var totalWarnings = container.find( '.redux-field-warning' ).length; + if ( totalWarnings > 0 ) { + container.find( ".redux-field-warnings span" ).text( totalWarnings ); + container.find( ".redux-field-warnings" ).slideDown(); + container.find( '.redux-group-tab' ).each( + function() { + var total = $( this ).find( '.redux-field-warning' ).length; + if ( total > 0 ) { + var sectionID = $( this ).attr( 'id' ).split( '_' ); + sectionID = sectionID[0]; + container.find( '.redux-group-tab-link-a[data-key="' + sectionID + '"]' ).prepend( '' + total + '' ); + container.find( '.redux-group-tab-link-a[data-key="' + sectionID + '"]' ).addClass( "hasWarning" ); + var subParent = container.find( '.redux-group-tab-link-a[data-key="' + sectionID + '"]' ).parents( '.hasSubSections:first' ); + if ( subParent ) { + subParent.find( '.redux-group-tab-link-a:first' ).addClass( 'hasWarning' ); + } + } + } + ); + } + } + ); + } + }; + + $.redux.tabControl = function() { + $( '.redux-section-tabs div' ).hide(); + $( '.redux-section-tabs div:first' ).show(); + $( '.redux-section-tabs ul li:first' ).addClass( 'active' ); + + $( '.redux-section-tabs ul li a' ).click( + function() { + $( '.redux-section-tabs ul li' ).removeClass( 'active' ); + $( this ).parent().addClass( 'active' ); + + var currentTab = $( this ).attr( 'href' ); + + $( '.redux-section-tabs div' ).hide(); + $( currentTab ).fadeIn( + 'medium', function() { + $.redux.initFields(); + } + ); + + return false; + } + ); + }; + + $.redux.required = function() { + + // Hide the fold elements on load , + // It's better to do this by PHP but there is no filter in tr tag , so is not possible + // we going to move each attributes we may need for folding to tr tag + $.each( + redux.folds, function( i, v ) { + var fieldset = $( '#' + redux.args.opt_name + '-' + i ); + + fieldset.parents( 'tr:first' ).addClass( 'fold' ); + + if ( v == "hide" ) { + fieldset.parents( 'tr:first' ).addClass( 'hide' ); + + if ( fieldset.hasClass( 'redux-container-section' ) ) { + var div = $( '#section-' + i ); + + if ( div.hasClass( 'redux-section-indent-start' ) ) { + $( '#section-table-' + i ).hide().addClass( 'hide' ); + div.hide().addClass( 'hide' ); + } + } + + if ( fieldset.hasClass( 'redux-container-info' ) ) { + $( '#info-' + i ).hide().addClass( 'hide' ); + } + + if ( fieldset.hasClass( 'redux-container-divide' ) ) { + $( '#divide-' + i ).hide().addClass( 'hide' ); + } + + if ( fieldset.hasClass( 'redux-container-raw' ) ) { + var rawTable = fieldset.parents().find( 'table#' + redux.args.opt_name + '-' + i ); + rawTable.hide().addClass( 'hide' ); + } + } + } + ); + }; + + $.redux.get_container_value = function( id ) { + var value = $( '#' + redux.args.opt_name + '-' + id ).serializeForm(); + + if ( value !== null && typeof value === 'object' && value.hasOwnProperty( redux.args.opt_name ) ) { + value = value[redux.args.opt_name][id]; + } + if ( $( '#' + redux.args.opt_name + '-' + id ).hasClass( 'redux-container-media' ) ) { + value = value.url; + } + return value; + }; + + $.redux.check_dependencies = function( variable ) { + if ( redux.required === null ) { + return; + } + + var current = $( variable ), + id = current.parents( '.redux-field:first' ).data( 'id' ); + + if ( !redux.required.hasOwnProperty( id ) ) { + return; + } + + var container = current.parents( '.redux-field-container:first' ), + is_hidden = container.parents( 'tr:first' ).hasClass( 'hide' ); + + if ( !container.parents( 'tr:first' ).length ) { + is_hidden = container.parents( '.customize-control:first' ).hasClass( 'hide' ); + } + + $.each( + redux.required[id], function( child, dependents ) { + + var current = $( this ), + show = false, + childFieldset = $( '#' + redux.args.opt_name + '-' + child ), + tr = childFieldset.parents( 'tr:first' ); + + if ( !is_hidden ) { + show = $.redux.check_parents_dependencies( child ); + } + + if ( show === true ) { + // Shim for sections + if ( childFieldset.hasClass( 'redux-container-section' ) ) { + var div = $( '#section-' + child ); + + if ( div.hasClass( 'redux-section-indent-start' ) && div.hasClass( 'hide' ) ) { + $( '#section-table-' + child ).fadeIn( 300 ).removeClass( 'hide' ); + div.fadeIn( 300 ).removeClass( 'hide' ); + } + } + + if ( childFieldset.hasClass( 'redux-container-info' ) ) { + $( '#info-' + child ).fadeIn( 300 ).removeClass( 'hide' ); + } + + if ( childFieldset.hasClass( 'redux-container-divide' ) ) { + $( '#divide-' + child ).fadeIn( 300 ).removeClass( 'hide' ); + } + + if ( childFieldset.hasClass( 'redux-container-raw' ) ) { + var rawTable = childFieldset.parents().find( 'table#' + redux.args.opt_name + '-' + child ); + rawTable.fadeIn( 300 ).removeClass( 'hide' ); + } + + tr.fadeIn( + 300, function() { + $( this ).removeClass( 'hide' ); + if ( redux.required.hasOwnProperty( child ) ) { + $.redux.check_dependencies( $( '#' + redux.args.opt_name + '-' + child ).children().first() ); + } + $.redux.initFields(); + } + ); + if ( childFieldset.hasClass( 'redux-container-section' ) || childFieldset.hasClass( 'redux-container-info' ) ) { + tr.css( {display: 'none'} ); + } + } else if ( show === false ) { + tr.fadeOut( + 100, function() { + $( this ).addClass( 'hide' ); + if ( redux.required.hasOwnProperty( child ) ) { + //console.log('Now check, reverse: '+child); + $.redux.required_recursive_hide( child ); + } + } + ); + } + + current.find( 'select, radio, input[type=checkbox]' ).trigger( 'change' ); + } + ); + }; + + $.redux.required_recursive_hide = function( id ) { + var toFade = $( '#' + redux.args.opt_name + '-' + id ).parents( 'tr:first' ); + + toFade.fadeOut( + 50, function() { + $( this ).addClass( 'hide' ); + + if ( $( '#' + redux.args.opt_name + '-' + id ).hasClass( 'redux-container-section' ) ) { + var div = $( '#section-' + id ); + if ( div.hasClass( 'redux-section-indent-start' ) ) { + $( '#section-table-' + id ).fadeOut( 50 ).addClass( 'hide' ); + div.fadeOut( 50 ).addClass( 'hide' ); + } + } + + if ( $( '#' + redux.args.opt_name + '-' + id ).hasClass( 'redux-container-info' ) ) { + $( '#info-' + id ).fadeOut( 50 ).addClass( 'hide' ); + } + + if ( $( '#' + redux.args.opt_name + '-' + id ).hasClass( 'redux-container-divide' ) ) { + $( '#divide-' + id ).fadeOut( 50 ).addClass( 'hide' ); + } + + if ( $( '#' + redux.args.opt_name + '-' + id ).hasClass( 'redux-container-raw' ) ) { + var rawTable = $( '#' + redux.args.opt_name + '-' + id ).parents().find( 'table#' + redux.args.opt_name + '-' + id ); + rawTable.fadeOut( 50 ).addClass( 'hide' ); + } + + if ( redux.required.hasOwnProperty( id ) ) { + $.each( + redux.required[id], function( child ) { + $.redux.required_recursive_hide( child ); + } + ); + } + } + ); + }; + + $.redux.check_parents_dependencies = function( id ) { + var show = ""; + + if ( redux.required_child.hasOwnProperty( id ) ) { + $.each( + redux.required_child[id], function( i, parentData ) { + if ( $( '#' + redux.args.opt_name + '-' + parentData.parent ).parents( 'tr:first' ).hasClass( 'hide' ) ) { + show = false; + } else { + if ( show !== false ) { + var parentValue = $.redux.get_container_value( parentData.parent ); + show = $.redux.check_dependencies_visibility( parentValue, parentData ); + } + } + } + ); + } else { + show = true; + } + return show; + }; + + $.redux.check_dependencies_visibility = function( parentValue, data ) { + var show = false, + checkValue_array, + checkValue = data.checkValue, + operation = data.operation, + arr; + + if ($.isPlainObject( parentValue )) { + parentValue = Object.keys( parentValue ).map( + function( key ) { + return [key, parentValue[key]]; + } + ); + } + + switch ( operation ) { + case '=': + case 'equals': + if ( $.isArray( parentValue ) ) { + $( parentValue[0] ).each( + function( idx, val ) { + if ( $.isArray( checkValue ) ) { + $( checkValue ).each( + function( i, v ) { + if ( val == v ) { + show = true; + return true; + } + } + ); + } else { + if ( val == checkValue ) { + show = true; + return true; + } + } + } + ); + } else { + if ( $.isArray( checkValue ) ) { + $( checkValue ).each( + function( i, v ) { + if ( parentValue == v ) { + show = true; + } + } + ); + } else { + if ( parentValue == checkValue ) { + show = true; + } + } + } + break; + + case '!=': + case 'not': + if ( $.isArray( parentValue ) ) { + $( parentValue[0] ).each( + function( idx, val ) { + if ( $.isArray( checkValue ) ) { + $( checkValue ).each( + function( i, v ) { + if ( val != v ) { + show = true; + return true; + } + } + ); + } else { + if ( val != checkValue ) { + show = true; + return true; + } + } + } + ); + } else { + if ( $.isArray( checkValue ) ) { + $( checkValue ).each( + function( i, v ) { + if ( parentValue != v ) { + show = true; + } + } + ); + } else { + if ( parentValue != checkValue ) { + show = true; + } + } + } + break; + + case '>': + case 'greater': + case 'is_larger': + if ( parseFloat( parentValue ) > parseFloat( checkValue ) ) { + show = true; + } + break; + + case '>=': + case 'greater_equal': + case 'is_larger_equal': + if ( parseFloat( parentValue ) >= parseFloat( checkValue ) ) { + show = true; + } + break; + + case '<': + case 'less': + case 'is_smaller': + if ( parseFloat( parentValue ) < parseFloat( checkValue ) ) { + show = true; + } + break; + + case '<=': + case 'less_equal': + case 'is_smaller_equal': + if ( parseFloat( parentValue ) <= parseFloat( checkValue ) ) { + show = true; + } + break; + + case 'contains': + if ( $.isPlainObject( parentValue ) ) { + parentValue = Object.keys( parentValue ).map( + function( key ) { + return [key, parentValue[key]]; + } + ); + } + + if ( $.isPlainObject( checkValue ) ) { + checkValue = Object.keys( checkValue ).map( + function( key ) { + return [key, checkValue[key]]; + } + ); + } + + if ( $.isArray( checkValue ) ) { + $( checkValue ).each( + function( idx, val ) { + var breakMe = false; + var toFind = val[0]; + var findVal = val[1]; + + $( parentValue ).each( + function( i, v ) { + var toMatch = v[0]; + var matchVal = v[1]; + + if ( toFind === toMatch ) { + if ( findVal == matchVal ) { + show = true; + breakMe = true; + + return false; + } + } + } + ); + + if ( breakMe === true ) { + return false; + } + } + ); + } else { + if ( parentValue.toString().indexOf( checkValue ) !== -1 ) { + show = true; + } + } + break; + + case 'doesnt_contain': + case 'not_contain': + if ( $.isPlainObject( parentValue ) ) { + arr = Object.keys( parentValue ).map( + function( key ) { + return parentValue[key]; + } + ); + parentValue = arr; + } + + if ( $.isPlainObject( checkValue ) ) { + arr = Object.keys( checkValue ).map( + function( key ) { + return checkValue[key]; + } + ); + checkValue = arr; + } + + if ( $.isArray( checkValue ) ) { + $( checkValue ).each( + function( idx, val ) { + if ( parentValue.toString().indexOf( val ) === -1 ) { + show = true; + } + } + ); + } else { + if ( parentValue.toString().indexOf( checkValue ) === -1 ) { + show = true; + } + } + break; + + case 'is_empty_or': + if ( parentValue === "" || parentValue == checkValue ) { + show = true; + } + break; + + case 'not_empty_and': + if ( parentValue !== "" && parentValue != checkValue ) { + show = true; + } + break; + + case 'is_empty': + case 'empty': + case '!isset': + if ( !parentValue || parentValue === "" || parentValue === null ) { + show = true; + } + break; + + case 'not_empty': + case '!empty': + case 'isset': + if ( parentValue && parentValue !== "" && parentValue !== null ) { + show = true; + } + break; + } + return show; + + }; + + $.redux.verifyPos = function( s, b ) { + + // trim off spaces + s = s.replace( /^\s+|\s+$/gm, '' ); + + // position value is blank, set the default + if ( s === '' || s.search( ' ' ) == -1 ) { + if ( b === true ) { + return 'top left'; + } else { + return 'bottom right'; + } + } + + // split string into array + var split = s.split( ' ' ); + + // Evaluate first string. Must be top, center, or bottom + var paramOne = b ? 'top' : 'bottom'; + if ( split[0] == 'top' || split[0] == 'center' || split[0] == 'bottom' ) { + paramOne = split[0]; + } + + // Evaluate second string. Must be left, center, or right. + var paramTwo = b ? 'left' : 'right'; + if ( split[1] == 'left' || split[1] == 'center' || split[1] == 'right' ) { + paramTwo = split[1]; + } + + return paramOne + ' ' + paramTwo; + }; + + $.redux.stickyInfo = function() { + var stickyWidth = $( '.redux-main' ).innerWidth() - 20; + + if ( !$( '#info_bar' ).isOnScreen() && !$( '#redux-footer-sticky' ).isOnScreen() ) { + $( '#redux-footer' ).css( + { + position: 'fixed', + bottom: '0', + width: stickyWidth, + right: 21 + } + ); + $( '#redux-footer' ).addClass( 'sticky-footer-fixed' ); + $( '.redux-save-warn' ).css( 'left', $( '#redux-sticky' ).offset().left ); + $( '#redux-sticky-padder' ).show(); + } else { + $( '#redux-footer' ).css( + { + background: '#eee', + position: 'inherit', + bottom: 'inherit', + width: 'inherit' + } + ); + $( '#redux-sticky-padder' ).hide(); + $( '#redux-footer' ).removeClass( 'sticky-footer-fixed' ); + } + if ( !$( '#info_bar' ).isOnScreen() ) { + $( '#redux-sticky' ).addClass( 'sticky-save-warn' ); + } else { + $( '#redux-sticky' ).removeClass( 'sticky-save-warn' ); + } + }; + + $.redux.expandOptions = function( parent ) { + var trigger = parent.find( '.expand_options' ); + var width = parent.find( '.redux-sidebar' ).width() - 1; + var id = $( '.redux-group-menu .active a' ).data( 'rel' ) + '_section_group'; + + if ( trigger.hasClass( 'expanded' ) ) { + trigger.removeClass( 'expanded' ); + parent.find( '.redux-main' ).removeClass( 'expand' ); + + parent.find( '.redux-sidebar' ).stop().animate( + { + 'margin-left': '0px' + }, 500 + ); + + parent.find( '.redux-main' ).stop().animate( + { + 'margin-left': width + }, 500, function() { + parent.find( '.redux-main' ).attr( 'style', '' ); + } + ); + + parent.find( '.redux-group-tab' ).each( + function() { + if ( $( this ).attr( 'id' ) !== id ) { + $( this ).fadeOut( 'fast' ); + } + } + ); + // Show the only active one + } else { + trigger.addClass( 'expanded' ); + parent.find( '.redux-main' ).addClass( 'expand' ); + + parent.find( '.redux-sidebar' ).stop().animate( + { + 'margin-left': -width - 113 + }, 500 + ); + + parent.find( '.redux-main' ).stop().animate( + { + 'margin-left': '-1px' + }, 500 + ); + + parent.find( '.redux-group-tab' ).fadeIn( + 'medium', function() { + $.redux.initFields(); + } + ); + } + return false; + }; + + + $.redux.scaleToRatio = function( el, maxHeight, maxWidth ) { + var ratio = 0; // Used for aspect ratio + + var width = el.attr( 'data-width' ); + if ( !width ) { + width = el.width(); + el.attr( 'data-width', width ); + } + var height = el.attr( 'data-height' ); + var eHeight = el.height(); + if ( !height || eHeight > height ) { + height = eHeight; + el.attr( 'data-height', height ); + el.css( "width", 'auto' ); + el.attr( 'data-width', el.width() ); + width = el.width(); + } + + + // Check if the current width is larger than the max + if ( width > maxWidth ) { + ratio = maxWidth / width; // get ratio for scaling image + el.css( "width", maxWidth ); // Set new width + el.css( "height", height * ratio ); // Scale height based on ratio + height = height * ratio; // Reset height to match scaled image + width = width * ratio; // Reset width to match scaled image + + } else { + el.css( "width", 'auto' ); // Set new height + + } + + // Check if current height is larger than max + if ( height > maxHeight ) { + ratio = maxHeight / height; // get ratio for scaling image + el.css( "height", maxHeight ); // Set new height + el.css( "width", width * ratio ); // Scale width based on ratio + width = width * ratio; // Reset width to match scaled image + height = height * ratio; // Reset height to match scaled image + + + } else { + el.css( "height", 'auto' ); // Set new height + + } + + var test = ($( document.getElementById( 'redux-header' ) ).height() - el.height()) / 2; + if ( test > 0 ) { + el.css( "margin-top", test ); + } else { + el.css( "margin-top", 0 ); + } + + if ( $( '#redux-header .redux_field_search' ) ) { + $( '#redux-header .redux_field_search' ).css( 'right', ($( el ).width() + 20) ); + } + + + }; + $.redux.resizeAds = function() { + var el = $( '#redux-header' ); + var maxWidth; + if ( el.length ) { + maxWidth = el.width() - el.find( '.display_header' ).width() - 30; + } else { + el = $( '#customize-info' ); + maxWidth = el.width(); + } + + var maxHeight = el.height(); + var rAds = el.find( '.rAds' ); + + $( rAds ).find( 'video' ).each( + function() { + $.redux.scaleToRatio( $( this ), maxHeight, maxWidth ); + } + ); + $( rAds ).find( 'img' ).each( + function() { + $.redux.scaleToRatio( $( this ), maxHeight, maxWidth ); + } + ); + $( rAds ).find( 'div' ).each( + function() { + $.redux.scaleToRatio( $( this ), maxHeight, maxWidth ); + } + ); + + if ( rAds.css( 'left' ) == "-99999px" ) { + rAds.css( 'display', 'none' ).css( 'left', 'auto' ); + } + rAds.fadeIn( 'slow' ); + }; + $( document ).ready( + function() { + if ( redux.rAds ) { + var el; + if ( $( '#redux-header' ).length > 0 ) { + $( '#redux-header' ).append( '
    ' ); + el = $( '#redux-header' ); + } else { + $( '#customize-theme-controls ul' ).first().prepend( + '
  • ' ); + el = $( '#redux_rAds' ); + } + + el.css( 'position', 'relative' ); + el.find( '.rAds' ).attr( + 'style', + 'position:absolute; top: 6px; right: 9px; display:block !important;overflow:hidden;' + ).css( 'left', '-99999px' ); + el.find( '.rAds' ).html( redux.rAds.replace( //, '' ) ); + var rAds = el.find( '.rAds' ); + + $( rAds ).hide(); + rAds.bind( "DOMSubtreeModified", function() { + if ( $( this ).html().indexOf( "= 0 ) { + rAds.find( 'img' ).css( 'visibility', 'hidden' ); + setTimeout( function() { + rAds.show(); + $.redux.resizeAds(); + }, 400 ); + rAds.find( 'img' ).css( 'visibility', 'inherit' ); + rAds.unbind( "DOMSubtreeModified" ); + } + + } ); + $( window ).resize( + function() { + $.redux.resizeAds(); + } + ); + + } + } + ); +})( jQuery ); + +jQuery.noConflict(); + +var confirmOnPageExit = function( e ) { + //return; // ONLY FOR DEBUGGING + // If we haven't been passed the event get the window.event + e = e || window.event; + + var message = redux.args.save_pending; + + // For IE6-8 and Firefox prior to version 4 + if ( e ) { + e.returnValue = message; + } + + window.onbeforeunload = null; + + // For Chrome, Safari, IE8+ and Opera 12+ + return message; +}; + +function redux_change( variable ) { + variable = jQuery(variable); + + jQuery( 'body' ).trigger( 'check_dependencies', variable ); + + if ( variable.hasClass( 'compiler' ) ) { + jQuery( '#redux-compiler-hook' ).val( 1 ); + } + +// var test = jQuery( variable ).parents( '.redux-field-container:first' ); +// if ( test.hasClass( 'redux-container-typography' ) && redux.field_objects.typography ) { +// redux.field_objects.typography.change( test ); +// } + + var rContainer = jQuery( variable ).parents( '.redux-container:first' ); + + var parentID = jQuery( variable ).closest( '.redux-group-tab' ).attr( 'id' ); + + // Let's count down the errors now. Fancy. ;) + var id = parentID.split( '_' ); + id = id[0]; + + var th = rContainer.find( '.redux-group-tab-link-a[data-key="' + id + '"]' ).parents( '.redux-group-tab-link-li:first' ); + var subParent = jQuery( '#' + parentID + '_li' ).parents( '.hasSubSections:first' ); + + if ( jQuery( variable ).parents( 'fieldset.redux-field:first' ).hasClass( 'redux-field-error' ) ) { + jQuery( variable ).parents( 'fieldset.redux-field:first' ).removeClass( 'redux-field-error' ); + jQuery( variable ).parent().find( '.redux-th-error' ).slideUp(); + + var errorCount = (parseInt( rContainer.find( '.redux-field-errors span' ).text() ) - 1); + + if ( errorCount <= 0 ) { + //console.log('HERE'); + jQuery( '#' + parentID + '_li .redux-menu-error' ).fadeOut( 'fast' ).remove(); + jQuery( '#' + parentID + '_li .redux-group-tab-link-a' ).removeClass( 'hasError' ); + + jQuery( '#' + parentID + '_li' ).parents( '.inside:first' ).find( '.redux-field-errors' ).slideUp(); + jQuery( variable ).parents( '.redux-container:first' ).find( '.redux-field-errors' ).slideUp(); + jQuery( '#redux_metaboxes_errors' ).slideUp(); + } else { + + var errorsLeft = (parseInt( th.find( '.redux-menu-error:first' ).text() ) - 1); + if ( errorsLeft <= 0 ) { + th.find( '.redux-menu-error:first' ).fadeOut().remove(); + } else { + th.find( '.redux-menu-error:first' ).text( errorsLeft ); + } + + rContainer.find( '.redux-field-errors span' ).text( errorCount ); + } + + if ( subParent.length !== 0 ) { + if ( subParent.find( '.redux-menu-error' ).length === 0 ) { + subParent.find( '.hasError' ).removeClass( 'hasError' ); + } + } + } + if ( jQuery( variable ).parents( 'fieldset.redux-field:first' ).hasClass( 'redux-field-warning' ) ) { + jQuery( variable ).parents( 'fieldset.redux-field:first' ).removeClass( 'redux-field-warning' ); + jQuery( variable ).parent().find( '.redux-th-warning' ).slideUp(); + + var warningCount = (parseInt( rContainer.find( '.redux-field-warnings span' ).text() ) - 1); + + if ( warningCount <= 0 ) { + //console.log('HERE'); + jQuery( '#' + parentID + '_li .redux-menu-warning' ).fadeOut( 'fast' ).remove(); + jQuery( '#' + parentID + '_li .redux-group-tab-link-a' ).removeClass( 'hasWarning' ); + + jQuery( '#' + parentID + '_li' ).parents( '.inside:first' ).find( '.redux-field-warnings' ).slideUp(); + jQuery( variable ).parents( '.redux-container:first' ).find( '.redux-field-warnings' ).slideUp(); + jQuery( '#redux_metaboxes_warnings' ).slideUp(); + } else { + // Let's count down the warnings now. Fancy. ;) + + var warningsLeft = (parseInt( th.find( '.redux-menu-warning:first' ).text() ) - 1); + if ( warningsLeft <= 0 ) { + th.find( '.redux-menu-warning:first' ).fadeOut().remove(); + } else { + th.find( '.redux-menu-warning:first' ).text( warningsLeft ); + } + + rContainer.find( '.redux-field-warning span' ).text( warningCount ); + + } + if ( subParent.length !== 0 ) { + if ( subParent.find( '.redux-menu-warning' ).length === 0 ) { + subParent.find( '.hasWarning' ).removeClass( 'hasWarning' ); + } + } + } + // Don't show the changed value notice while save_notice is visible. + if ( rContainer.find( '.saved_notice:visible' ).length > 0 ) { + return; + } + + if ( !redux.args.disable_save_warn ) { + rContainer.find( '.redux-save-warn' ).slideDown(); + window.onbeforeunload = confirmOnPageExit; + } +} + +function colorValidate( field ) { + var value = jQuery( field ).val(); + + var hex = colorNameToHex( value ); + if ( hex !== value.replace( '#', '' ) ) { + return hex; + } + + return value; +} + +function colorNameToHex( colour ) { + var tcolour = colour.replace( /^\s\s*/, '' ).replace( /\s\s*$/, '' ).replace( "#", "" ); + + var colours = { + "aliceblue": "#f0f8ff", + "antiquewhite": "#faebd7", + "aqua": "#00ffff", + "aquamarine": "#7fffd4", + "azure": "#f0ffff", + "beige": "#f5f5dc", + "bisque": "#ffe4c4", + "black": "#000000", + "blanchedalmond": "#ffebcd", + "blue": "#0000ff", + "blueviolet": "#8a2be2", + "brown": "#a52a2a", + "burlywood": "#deb887", + "cadetblue": "#5f9ea0", + "chartreuse": "#7fff00", + "chocolate": "#d2691e", + "coral": "#ff7f50", + "cornflowerblue": "#6495ed", + "cornsilk": "#fff8dc", + "crimson": "#dc143c", + "cyan": "#00ffff", + "darkblue": "#00008b", + "darkcyan": "#008b8b", + "darkgoldenrod": "#b8860b", + "darkgray": "#a9a9a9", + "darkgreen": "#006400", + "darkkhaki": "#bdb76b", + "darkmagenta": "#8b008b", + "darkolivegreen": "#556b2f", + "darkorange": "#ff8c00", + "darkorchid": "#9932cc", + "darkred": "#8b0000", + "darksalmon": "#e9967a", + "darkseagreen": "#8fbc8f", + "darkslateblue": "#483d8b", + "darkslategray": "#2f4f4f", + "darkturquoise": "#00ced1", + "darkviolet": "#9400d3", + "deeppink": "#ff1493", + "deepskyblue": "#00bfff", + "dimgray": "#696969", + "dodgerblue": "#1e90ff", + "firebrick": "#b22222", + "floralwhite": "#fffaf0", + "forestgreen": "#228b22", + "fuchsia": "#ff00ff", + "gainsboro": "#dcdcdc", + "ghostwhite": "#f8f8ff", + "gold": "#ffd700", + "goldenrod": "#daa520", + "gray": "#808080", + "green": "#008000", + "greenyellow": "#adff2f", + "honeydew": "#f0fff0", + "hotpink": "#ff69b4", + "indianred ": "#cd5c5c", + "indigo ": "#4b0082", + "ivory": "#fffff0", + "khaki": "#f0e68c", + "lavender": "#e6e6fa", + "lavenderblush": "#fff0f5", + "lawngreen": "#7cfc00", + "lemonchiffon": "#fffacd", + "lightblue": "#add8e6", + "lightcoral": "#f08080", + "lightcyan": "#e0ffff", + "lightgoldenrodyellow": "#fafad2", + "lightgrey": "#d3d3d3", + "lightgreen": "#90ee90", + "lightpink": "#ffb6c1", + "lightsalmon": "#ffa07a", + "lightseagreen": "#20b2aa", + "lightskyblue": "#87cefa", + "lightslategray": "#778899", + "lightsteelblue": "#b0c4de", + "lightyellow": "#ffffe0", + "lime": "#00ff00", + "limegreen": "#32cd32", + "linen": "#faf0e6", + "magenta": "#ff00ff", + "maroon": "#800000", + "mediumaquamarine": "#66cdaa", + "mediumblue": "#0000cd", + "mediumorchid": "#ba55d3", + "mediumpurple": "#9370d8", + "mediumseagreen": "#3cb371", + "mediumslateblue": "#7b68ee", + "mediumspringgreen": "#00fa9a", + "mediumturquoise": "#48d1cc", + "mediumvioletred": "#c71585", + "midnightblue": "#191970", + "mintcream": "#f5fffa", + "mistyrose": "#ffe4e1", + "moccasin": "#ffe4b5", + "navajowhite": "#ffdead", + "navy": "#000080", + "oldlace": "#fdf5e6", + "olive": "#808000", + "olivedrab": "#6b8e23", + "orange": "#ffa500", + "orangered": "#ff4500", + "orchid": "#da70d6", + "palegoldenrod": "#eee8aa", + "palegreen": "#98fb98", + "paleturquoise": "#afeeee", + "palevioletred": "#d87093", + "papayawhip": "#ffefd5", + "peachpuff": "#ffdab9", + "peru": "#cd853f", + "pink": "#ffc0cb", + "plum": "#dda0dd", + "powderblue": "#b0e0e6", + "purple": "#800080", + "red": "#ff0000", + "redux": "#01a3e3", + "rosybrown": "#bc8f8f", + "royalblue": "#4169e1", + "saddlebrown": "#8b4513", + "salmon": "#fa8072", + "sandybrown": "#f4a460", + "seagreen": "#2e8b57", + "seashell": "#fff5ee", + "sienna": "#a0522d", + "silver": "#c0c0c0", + "skyblue": "#87ceeb", + "slateblue": "#6a5acd", + "slategray": "#708090", + "snow": "#fffafa", + "springgreen": "#00ff7f", + "steelblue": "#4682b4", + "tan": "#d2b48c", + "teal": "#008080", + "thistle": "#d8bfd8", + "tomato": "#ff6347", + "turquoise": "#40e0d0", + "violet": "#ee82ee", + "wheat": "#f5deb3", + "white": "#ffffff", + "whitesmoke": "#f5f5f5", + "yellow": "#ffff00", + "yellowgreen": "#9acd32" + }; + + if ( colours[tcolour.toLowerCase()] !== 'undefined' ) { + return colours[tcolour.toLowerCase()]; + } + + return colour; +} + +function redux_hook( object, functionName, callback, before ) { + (function( originalFunction ) { + object[functionName] = function() { + + if ( before === true ) { + callback.apply( this, [returnValue, originalFunction, arguments] ); + } + var returnValue = originalFunction.apply( this, arguments ); + if ( before !== true ) { + callback.apply( this, [returnValue, originalFunction, arguments] ); + } + + return returnValue; + }; + }( object[functionName] )); +} diff --git a/redux/ReduxCore/assets/js/redux.min.js b/redux/ReduxCore/assets/js/redux.min.js new file mode 100644 index 0000000..665e862 --- /dev/null +++ b/redux/ReduxCore/assets/js/redux.min.js @@ -0,0 +1 @@ +!function(e){"function"==typeof define&&define.amd?jQueryCookie.define(["jquery"],e):e(jQuery)}(function(p){var r=/\+/g;function h(e){return e}function x(e){return decodeURIComponent(e.replace(r," "))}function g(e){0===e.indexOf('"')&&(e=e.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return v.json?JSON.parse(e):e}catch(e){}}var v=p.cookie=function(e,r,t){if(void 0!==r){if("number"==typeof(t=p.extend({},v.defaults,t)).expires){var i=t.expires,a=t.expires=new Date;a.setDate(a.getDate()+i)}return r=v.json?JSON.stringify(r):String(r),document.cookie=[v.raw?e:encodeURIComponent(e),"=",v.raw?r:encodeURIComponent(r),t.expires?"; expires="+t.expires.toUTCString():"",t.path?"; path="+t.path:"",t.domain?"; domain="+t.domain:"",t.secure?"; secure":""].join("")}for(var n=v.raw?h:x,s=document.cookie.split("; "),d=e?void 0:{},o=0,u=s.length;o=n.captureLength&&t.toUpperCase()!=e.text||r&&t.length>=n.captureLength)&&(e.text=t.toUpperCase(),e.cb.call(e.el,t))},r)})}}return this.each(function(){r(this)})}}(jQuery),function(s){s.fn.serializeForm=function(){if(this.length<1)return!1;var a={},n=a,e=':input[type!="checkbox"][type!="radio"], input:checked',r=function(){if(!this.disabled){var e=this.name.replace(/\[([^\]]+)?\]/g,",$1").split(","),r=e.length-1,t=s(this);if(e[0]){for(var i=0;ir.max&&i.val("")}(this,e)}),this};var e,r,u={allow:"",disallow:"",allowSpace:!0,allowNumeric:!0,allowUpper:!0,allowLower:!0,allowCaseless:!0,allowLatin:!0,allowOtherCharSets:!0,maxLength:NaN},i={allowPlus:!1,allowMinus:!0,allowThouSep:!0,allowDecSep:!0,allowLeadingSpaces:!1,maxDigits:NaN,maxDecimalPlaces:NaN,maxPreDecimalPlaces:NaN,max:NaN,min:NaN},l={alpha:{allowNumeric:!1},upper:{allowNumeric:!1,allowUpper:!0,allowLower:!1,allowCaseless:!0},lower:{allowNumeric:!1,allowUpper:!1,allowLower:!0,allowCaseless:!0}},a={integer:{allowPlus:!1,allowMinus:!0,allowThouSep:!1,allowDecSep:!1},positiveInteger:{allowPlus:!1,allowMinus:!1,allowThouSep:!1,allowDecSep:!1}},c="!@#$%^&*()+=[]\\';,/{}|\":<>?~`.-_ ¬€£¦",d=",",f=".",v=function(){var e,r="0123456789".split(""),t={},i=0;for(i=0;is.max))&&(i=e+r,!(a=t).min||0=n.maxLength||!(0<=n.allow.indexOf(a)||n.allowSpace&&" "==a)&&(n.blacklistSet.contains(a)||!n.allowNumeric&&v[a]||!n.allowUpper&&(d=(s=a).toUpperCase(),o=s.toLowerCase(),s==d&&d!=o)||!n.allowLower&&(l=(u=a).toUpperCase(),c=u.toLowerCase(),u==c&&l!=c)||!n.allowCaseless&&(f=a).toUpperCase()==f.toLowerCase()||!n.allowLatin&&m.contains(a)||!(n.allowOtherCharSets||v[a]||m.contains(a)))||h.push(t)}return h.join("")}function _(e,r){if("string"!=typeof e)return e;var t,i=e.split(""),a=[],n=0;for(n=0;nt.right||r.bottomt.bottom)}},x.redux.hideFields(),x.redux.checkRequired(),x.redux.initEvents(),x.redux.initQtip(),x.redux.tabCheck(),x.redux.notices(),x.redux.tabControl()}),x.redux.ajax_save=function(e){var t=x(document.getElementById("redux_ajax_overlay"));t.fadeIn(),jQuery(".redux-action_bar .spinner").addClass("is-active"),jQuery(".redux-action_bar input").attr("disabled","disabled");var i=jQuery(document.getElementById("redux_notification_bar"));i.slideUp(),jQuery(".redux-save-warn").slideUp(),jQuery(".redux_ajax_save_error").slideUp("medium",function(){jQuery(this).remove()});var r=jQuery(document.getElementById("redux-form-wrapper"));redux.fields.hasOwnProperty("editor")&&x.each(redux.fields.editor,function(e,r){if("undefined"!=typeof tinyMCE){var t=tinyMCE.get(e);t&&t.save()}});var a=r.serialize();r.find("input[type=checkbox]").each(function(){if(void 0!==x(this).attr("name")){var e=x(this).is(":checked")?x(this).val():"0";a+="&"+x(this).attr("name")+"="+e}}),"redux_save"!=e.attr("name")&&(a+="&"+e.attr("name")+"="+e.val());var n=r.attr("data-nonce");return jQuery.ajax({type:"post",dataType:"json",url:ajaxurl,data:{action:redux.args.opt_name+"_ajax_save",nonce:n,opt_name:redux.args.opt_name,data:a},error:function(e){window.console||(console={}),console.log=console.log||function(e,r){},console.log(redux.ajax.console),console.log(e.responseText),jQuery(".redux-action_bar input").removeAttr("disabled"),t.fadeOut("fast"),jQuery(".redux-action_bar .spinner").removeClass("is-active"),alert(redux.ajax.alert)},success:function(e){if(e.action&&"reload"==e.action)location.reload(!0);else if("success"==e.status){jQuery(".redux-action_bar input").removeAttr("disabled"),t.fadeOut("fast"),jQuery(".redux-action_bar .spinner").removeClass("is-active"),redux.options=e.options,redux.errors=e.errors,redux.warnings=e.warnings,i.html(e.notification_bar).slideDown("fast"),null===e.errors&&null===e.warnings||x.redux.notices();var r=x(document.getElementById("redux_notification_bar")).find(".saved_notice");r.slideDown(),r.delay(4e3).slideUp()}else jQuery(".redux-action_bar input").removeAttr("disabled"),jQuery(".redux-action_bar .spinner").removeClass("is-active"),t.fadeOut("fast"),jQuery(".wrap h2:first").parent().append('"),jQuery(".redux_ajax_save_error").slideDown(),jQuery("html, body").animate({scrollTop:0},"slow")}}),!1},x.redux.initEvents=function(){x(".redux-presets-bar").on("click",function(){window.onbeforeunload=null}),x("#toplevel_page_"+redux.args.slug+" .wp-submenu a, #wp-admin-bar-"+redux.args.slug+" a.ab-item").click(function(e){if((x("#toplevel_page_"+redux.args.slug).hasClass("wp-menu-open")||x(this).hasClass("ab-item"))&&!x(this).parents("ul.ab-submenu:first").hasClass("ab-sub-secondary")&&0<=x(this).attr("href").toLowerCase().indexOf(redux.args.slug+"&tab=")){e.preventDefault();var r=x(this).attr("href").split("&tab=");return x("#"+r[1]+"_section_group_li_a").click(),x(this).parents("ul:first").find(".current").removeClass("current"),x(this).addClass("current"),x(this).parent().addClass("current"),!1}}),x(".redux-action_bar input, #redux-import-action input").on("click",function(e){if(x(this).attr("name")==redux.args.opt_name+"[defaults]"){if(!confirm(redux.args.reset_confirm))return!1}else if(x(this).attr("name")==redux.args.opt_name+"[defaults-section]"){if(!confirm(redux.args.reset_section_confirm))return!1}else if("import"==x(this).attr("name")&&!confirm(redux.args.import_section_confirm))return!1;!(window.onbeforeunload=null)===redux.args.ajax_save?(x.redux.ajax_save(x(this)),e.preventDefault()):location.reload(!0)}),x(".expand_options").click(function(e){e.preventDefault();var r=x(".redux-container");if(x(r).hasClass("fully-expanded")){x(r).removeClass("fully-expanded");var t=x.cookie("redux_current_tab");x(".redux-container:first").find("#"+t+"_section_group").fadeIn(200,function(){0!==x(".redux-container:first").find("#redux-footer").length&&x.redux.stickyInfo(),x.redux.initFields()})}return x.redux.expandOptions(x(this).parents(".redux-container:first")),!1}),x(".saved_notice").is(":visible")&&x(".saved_notice").slideDown(),x(document.body).on("change",".redux-field input, .redux-field textarea, .redux-field select",function(){x(this).hasClass("noUpdate")||redux_change(x(this))});var e=x("#redux-footer").height();x("#redux-sticky-padder").css({height:e}),x("#redux-footer-sticky").removeClass("hide"),0!==x("#redux-footer").length&&(x(window).scroll(function(){x.redux.stickyInfo()}),x(window).resize(function(){x.redux.stickyInfo()})),x(".saved_notice").delay(4e3).slideUp()},x.redux.hideFields=function(){x("label[for='redux_hide_field']").each(function(e,r){var t=x(this).parent().parent();x(t).addClass("hidden")})},x.redux.checkRequired=function(){x.redux.required(),x("body").on("change",".redux-main select, .redux-main radio, .redux-main input[type=checkbox], .redux-main input[type=hidden]",function(e){x.redux.check_dependencies(this)}),x("body").on("check_dependencies",function(e,r){x.redux.check_dependencies(r)}),x(".redux-container td > fieldset:empty,td > div:empty").parent().parent().hide()},x.redux.initQtip=function(){if(x().qtip){var e="";!0===redux.args.hints.tip_style.shadow&&(e="qtip-shadow");var r="",t=redux.args.hints.tip_style.color;""!==t&&(r="qtip-"+t);var i="";!0===redux.args.hints.tip_style.rounded&&(i="qtip-rounded");var a="",n=redux.args.hints.tip_style.style;""!==n&&(a="qtip-"+n);var s=e+","+r+","+i+","+a+",redux-qtip";s=s.replace(/,/g," ");var d=redux.args.hints.tip_position.my,o=redux.args.hints.tip_position.at;d=x.redux.verifyPos(d.toLowerCase(),!0),o=x.redux.verifyPos(o.toLowerCase(),!1);var u=redux.args.hints.tip_effect.show.event,l=redux.args.hints.tip_effect.hide.event,c=redux.args.hints.tip_effect.show.effect,f=redux.args.hints.tip_effect.show.duration,p=redux.args.hints.tip_effect.hide.effect,h=redux.args.hints.tip_effect.hide.duration;x("div.redux-dev-qtip").each(function(){x(this).qtip({content:{text:x(this).attr("qtip-content"),title:x(this).attr("qtip-title")},show:{effect:function(){x(this).slideDown(500)},event:"mouseover"},hide:{effect:function(){x(this).slideUp(500)},event:"mouseleave"},style:{classes:"qtip-shadow qtip-light"},position:{my:"top center",at:"bottom center"}})}),x("div.redux-hint-qtip").each(function(){x(this).qtip({content:{text:x(this).attr("qtip-content"),title:x(this).attr("qtip-title")},show:{effect:function(){switch(c){case"slide":x(this).slideDown(f);break;case"fade":x(this).fadeIn(f);break;default:x(this).show()}},event:u},hide:{effect:function(){switch(p){case"slide":x(this).slideUp(h);break;case"fade":x(this).fadeOut(h);break;default:x(this).hide(h)}},event:l},style:{classes:s},position:{my:d,at:o}})}),x("input[qtip-content]").each(function(){x(this).qtip({content:{text:x(this).attr("qtip-content"),title:x(this).attr("qtip-title")},show:"focus",hide:"blur",style:s,position:{my:d,at:o}})})}},x.redux.tabCheck=function(){if(x(".redux-group-tab-link-a").click(function(){var e=x(this);if(e.parent().hasClass("empty_section")&&e.parent().hasClass("hasSubSections")){var r=x(this).closest("ul").find(".redux-group-tab-link-a"),t=r.index(this);e=r.slice(t+1,t+2)}var i=e.parents(".redux-container:first"),a=e.data("rel"),n=i.find(".redux-group-tab-link-li.active:first .redux-group-tab-link-a").data("rel");if(n!==a){if(x("#currentSection").val(a),e.parents(".postbox-container:first").length||x.cookie("redux_current_tab",a,{expires:7,path:"/"}),i.find("#"+a+"_section_group_li").parents(".redux-group-tab-link-li").length){var s=i.find("#"+a+"_section_group_li").parents(".redux-group-tab-link-li").attr("id").split("_");s=s[0]}if(i.find("#toplevel_page_"+redux.args.slug+" .wp-submenu a.current").removeClass("current"),i.find("#toplevel_page_"+redux.args.slug+" .wp-submenu li.current").removeClass("current"),i.find("#toplevel_page_"+redux.args.slug+" .wp-submenu a").each(function(){var e=x(this).attr("href").split("&tab=");e[1]!=a&&e[1]!=s||(x(this).addClass("current"),x(this).parent().addClass("current"))}),i.find("#"+n+"_section_group_li").find("#"+n+"_section_group_li").length)i.find("#"+n+"_section_group_li").addClass("activeChild"),i.find("#"+a+"_section_group_li").addClass("active").removeClass("activeChild");else if(i.find("#"+a+"_section_group_li").parents("#"+n+"_section_group_li").length||i.find("#"+n+"_section_group_li").parents("ul.subsection").find("#"+a+"_section_group_li").length)i.find("#"+a+"_section_group_li").parents("#"+n+"_section_group_li").length?i.find("#"+n+"_section_group_li").addClass("activeChild").removeClass("active"):(i.find("#"+a+"_section_group_li").addClass("active"),i.find("#"+n+"_section_group_li").removeClass("active")),i.find("#"+a+"_section_group_li").removeClass("activeChild").addClass("active");else if(i.find("#"+a+"_section_group_li").addClass("active").removeClass("activeChild").find("ul.subsection").slideDown(),i.find("#"+n+"_section_group_li").find("ul.subsection").length){i.find("#"+n+"_section_group_li").find("ul.subsection").slideUp("fast",function(){i.find("#"+n+"_section_group_li").removeClass("active").removeClass("activeChild")});var d=i.find("#"+a+"_section_group_li").parents(".hasSubSections:first");0'+r.msg+"
    "):x("#"+redux.args.opt_name+"-"+r.id).parent().find(".redux-th-error").html(r.msg).css("display","block")})}),x(".redux-container").each(function(){var i=x(this);i.find(".redux-menu-error").remove();var e=i.find(".redux-field-error").length;0'+e+""),i.find('.redux-group-tab-link-a[data-key="'+r+'"]').addClass("hasError");var t=i.find('.redux-group-tab-link-a[data-key="'+r+'"]').parents(".hasSubSections:first");t&&t.find(".redux-group-tab-link-a:first").addClass("hasError")}}))})),redux.warnings&&redux.warnings.warnings&&(x.each(redux.warnings.warnings,function(e,r){x.each(r.warnings,function(e,r){x("#"+redux.args.opt_name+"-"+r.id).addClass("redux-field-warning"),0===x("#"+redux.args.opt_name+"-"+r.id).parent().find(".redux-th-warning").length?x("#"+redux.args.opt_name+"-"+r.id).append('
    '+r.msg+"
    "):x("#"+redux.args.opt_name+"-"+r.id).parent().find(".redux-th-warning").html(r.msg).css("display","block")})}),x(".redux-container").each(function(){var i=x(this);i.find(".redux-menu-warning").remove();var e=i.find(".redux-field-warning").length;0'+e+""),i.find('.redux-group-tab-link-a[data-key="'+r+'"]').addClass("hasWarning");var t=i.find('.redux-group-tab-link-a[data-key="'+r+'"]').parents(".hasSubSections:first");t&&t.find(".redux-group-tab-link-a:first").addClass("hasWarning")}}))}))},x.redux.tabControl=function(){x(".redux-section-tabs div").hide(),x(".redux-section-tabs div:first").show(),x(".redux-section-tabs ul li:first").addClass("active"),x(".redux-section-tabs ul li a").click(function(){x(".redux-section-tabs ul li").removeClass("active"),x(this).parent().addClass("active");var e=x(this).attr("href");return x(".redux-section-tabs div").hide(),x(e).fadeIn("medium",function(){x.redux.initFields()}),!1})},x.redux.required=function(){x.each(redux.folds,function(e,r){var t=x("#"+redux.args.opt_name+"-"+e);if(t.parents("tr:first").addClass("fold"),"hide"==r){if(t.parents("tr:first").addClass("hide"),t.hasClass("redux-container-section")){var i=x("#section-"+e);i.hasClass("redux-section-indent-start")&&(x("#section-table-"+e).hide().addClass("hide"),i.hide().addClass("hide"))}if(t.hasClass("redux-container-info")&&x("#info-"+e).hide().addClass("hide"),t.hasClass("redux-container-divide")&&x("#divide-"+e).hide().addClass("hide"),t.hasClass("redux-container-raw"))t.parents().find("table#"+redux.args.opt_name+"-"+e).hide().addClass("hide")}})},x.redux.get_container_value=function(e){var r=x("#"+redux.args.opt_name+"-"+e).serializeForm();return null!==r&&"object"==typeof r&&r.hasOwnProperty(redux.args.opt_name)&&(r=r[redux.args.opt_name][e]),x("#"+redux.args.opt_name+"-"+e).hasClass("redux-container-media")&&(r=r.url),r},x.redux.check_dependencies=function(e){if(null!==redux.required){var r=x(e),t=r.parents(".redux-field:first").data("id");if(redux.required.hasOwnProperty(t)){var i=r.parents(".redux-field-container:first"),d=i.parents("tr:first").hasClass("hide");i.parents("tr:first").length||(d=i.parents(".customize-control:first").hasClass("hide")),x.each(redux.required[t],function(e,r){var t=x(this),i=!1,a=x("#"+redux.args.opt_name+"-"+e),n=a.parents("tr:first");if(d||(i=x.redux.check_parents_dependencies(e)),!0===i){if(a.hasClass("redux-container-section")){var s=x("#section-"+e);s.hasClass("redux-section-indent-start")&&s.hasClass("hide")&&(x("#section-table-"+e).fadeIn(300).removeClass("hide"),s.fadeIn(300).removeClass("hide"))}if(a.hasClass("redux-container-info")&&x("#info-"+e).fadeIn(300).removeClass("hide"),a.hasClass("redux-container-divide")&&x("#divide-"+e).fadeIn(300).removeClass("hide"),a.hasClass("redux-container-raw"))a.parents().find("table#"+redux.args.opt_name+"-"+e).fadeIn(300).removeClass("hide");n.fadeIn(300,function(){x(this).removeClass("hide"),redux.required.hasOwnProperty(e)&&x.redux.check_dependencies(x("#"+redux.args.opt_name+"-"+e).children().first()),x.redux.initFields()}),(a.hasClass("redux-container-section")||a.hasClass("redux-container-info"))&&n.css({display:"none"})}else!1===i&&n.fadeOut(100,function(){x(this).addClass("hide"),redux.required.hasOwnProperty(e)&&x.redux.required_recursive_hide(e)});t.find("select, radio, input[type=checkbox]").trigger("change")})}}},x.redux.required_recursive_hide=function(r){x("#"+redux.args.opt_name+"-"+r).parents("tr:first").fadeOut(50,function(){if(x(this).addClass("hide"),x("#"+redux.args.opt_name+"-"+r).hasClass("redux-container-section")){var e=x("#section-"+r);e.hasClass("redux-section-indent-start")&&(x("#section-table-"+r).fadeOut(50).addClass("hide"),e.fadeOut(50).addClass("hide"))}(x("#"+redux.args.opt_name+"-"+r).hasClass("redux-container-info")&&x("#info-"+r).fadeOut(50).addClass("hide"),x("#"+redux.args.opt_name+"-"+r).hasClass("redux-container-divide")&&x("#divide-"+r).fadeOut(50).addClass("hide"),x("#"+redux.args.opt_name+"-"+r).hasClass("redux-container-raw"))&&x("#"+redux.args.opt_name+"-"+r).parents().find("table#"+redux.args.opt_name+"-"+r).fadeOut(50).addClass("hide");redux.required.hasOwnProperty(r)&&x.each(redux.required[r],function(e){x.redux.required_recursive_hide(e)})})},x.redux.check_parents_dependencies=function(e){var i="";return redux.required_child.hasOwnProperty(e)?x.each(redux.required_child[e],function(e,r){if(x("#"+redux.args.opt_name+"-"+r.parent).parents("tr:first").hasClass("hide"))i=!1;else if(!1!==i){var t=x.redux.get_container_value(r.parent);i=x.redux.check_dependencies_visibility(t,r)}}):i=!0,i},x.redux.check_dependencies_visibility=function(t,e){var r,d=!1,i=e.checkValue,a=e.operation;switch(x.isPlainObject(t)&&(t=Object.keys(t).map(function(e){return[e,t[e]]})),a){case"=":case"equals":x.isArray(t)?x(t[0]).each(function(e,t){if(x.isArray(i))x(i).each(function(e,r){if(t==r)return d=!0});else if(t==i)return d=!0}):x.isArray(i)?x(i).each(function(e,r){t==r&&(d=!0)}):t==i&&(d=!0);break;case"!=":case"not":x.isArray(t)?x(t[0]).each(function(e,t){if(x.isArray(i))x(i).each(function(e,r){if(t!=r)return d=!0});else if(t!=i)return d=!0}):x.isArray(i)?x(i).each(function(e,r){t!=r&&(d=!0)}):t!=i&&(d=!0);break;case">":case"greater":case"is_larger":parseFloat(t)>parseFloat(i)&&(d=!0);break;case">=":case"greater_equal":case"is_larger_equal":parseFloat(t)>=parseFloat(i)&&(d=!0);break;case"<":case"less":case"is_smaller":parseFloat(t)
    '),x("#redux-header")):(x("#customize-theme-controls ul").first().prepend('
  • '),x("#redux_rAds"))).css("position","relative"),e.find(".rAds").attr("style","position:absolute; top: 6px; right: 9px; display:block !important;overflow:hidden;").css("left","-99999px"),e.find(".rAds").html(redux.rAds.replace(//,""));var r=e.find(".rAds");x(r).hide(),r.bind("DOMSubtreeModified",function(){0<=x(this).html().indexOf("
    =o.captureLength&&n.toUpperCase()!=e.text||t&&n.length>=o.captureLength)&&(e.text=n.toUpperCase(),e.cb.call(e.el,n))},t)})}}return this.each(function(){t(this)})}}(jQuery),function(c){c.fn.alphanum=function(e){return n(this,m,i(e)),this},c.fn.alpha=function(e){return n(this,m,i(e,i("alpha"))),this},c.fn.numeric=function(e){return n(this,S,h(e)),this.blur(function(){!function(e,t){var n=parseFloat(c(e).val()),r=c(e);if(isNaN(n))return r.val("");o(t.min)&&nt.max&&r.val("")}(this,e)}),this};var e,t,u={allow:"",disallow:"",allowSpace:!0,allowNumeric:!0,allowUpper:!0,allowLower:!0,allowCaseless:!0,allowLatin:!0,allowOtherCharSets:!0,maxLength:NaN},r={allowPlus:!1,allowMinus:!0,allowThouSep:!0,allowDecSep:!0,allowLeadingSpaces:!1,maxDigits:NaN,maxDecimalPlaces:NaN,maxPreDecimalPlaces:NaN,max:NaN,min:NaN},s={alpha:{allowNumeric:!1},upper:{allowNumeric:!1,allowUpper:!0,allowLower:!1,allowCaseless:!0},lower:{allowNumeric:!1,allowUpper:!1,allowLower:!0,allowCaseless:!0}},a={integer:{allowPlus:!1,allowMinus:!0,allowThouSep:!1,allowDecSep:!1},positiveInteger:{allowPlus:!1,allowMinus:!1,allowThouSep:!1,allowDecSep:!1}},f="!@#$%^&*()+=[]\\';,/{}|\":<>?~`.-_ ¬€£¦",l=",",p=".",g=function(){var e,t="0123456789".split(""),n={},r=0;for(r=0;ri.max))&&(r=e+t,!(a=n).min||0=o.maxLength||!(0<=o.allow.indexOf(a)||o.allowSpace&&" "==a)&&(o.blacklistSet.contains(a)||!o.allowNumeric&&g[a]||!o.allowUpper&&(l=(i=a).toUpperCase(),c=i.toLowerCase(),i==l&&l!=c)||!o.allowLower&&(s=(u=a).toUpperCase(),f=u.toLowerCase(),u==f&&s!=f)||!o.allowCaseless&&(p=a).toUpperCase()==p.toLowerCase()||!o.allowLatin&&w.contains(a)||!(o.allowOtherCharSets||g[a]||w.contains(a)))||d.push(n)}return d.join("")}function S(e,t){if("string"!=typeof e)return e;var n,r=e.split(""),a=[],o=0;for(o=0;o?~`.-_'; + blacklist += " "; // 'Space' is on the blacklist but can be enabled using the 'allowSpace' config entry + return blacklist; + } + + // Return the blacklisted special chars that are NOT encodable using 7-bit ascii + // We want this .js file to be encoded using 7-bit ascii so it can reach the widest possible audience + // Higher order chars must be escaped eg "\xAC" + // Not too worried about comments containing higher order characters for now (let's wait and see if it becomes a problem) + function getBlacklistNonAscii(){ + var blacklist = + "\xAC" // ¬ + + "\u20AC" // € + + "\xA3" // £ + + "\xA6" // ¦ + ; + return blacklist; + } + + // End Settings //////////////////////////////////////////////////////// + + + // Implementation details go here //////////////////////////////////////////////////////// + + function setupEventHandlers($textboxes, trimFunction, settings) { + + $textboxes.each(function(){ + + var $textbox = $(this); + + $textbox.bind("keyup change paste", function(e){ + + var pastedText = ""; + + if(e.originalEvent && e.originalEvent.clipboardData && e.originalEvent.clipboardData.getData) + pastedText = e.originalEvent.clipboardData.getData("text/plain") + + // setTimeout is necessary for handling the 'paste' event + setTimeout(function(){ + trimTextbox($textbox, trimFunction, settings, pastedText); + }, 0); + }); + + $textbox.bind("keypress", function(e){ + + // Determine which key is pressed. + // If it's a control key, then allow the event's default action to occur eg backspace, tab + var charCode = !e.charCode ? e.which : e.charCode; + if(isControlKey(charCode) + || e.ctrlKey + || e.metaKey ) // cmd on MacOS + return; + + var newChar = String.fromCharCode(charCode); + + // Determine if some text was selected / highlighted when the key was pressed + var selectionObject = $textbox.selection(); + var start = selectionObject.start; + var end = selectionObject.end; + + var textBeforeKeypress = $textbox.val(); + + // The new char may be inserted: + // 1) At the start + // 2) In the middle + // 3) At the end + // 4) User highlights some text and then presses a key which would replace the highlighted text + // + // Here we build the string that would result after the keypress. + // If the resulting string is invalid, we cancel the event. + // Unfortunately, it isn't enough to just check if the new char is valid because some chars + // are position sensitive eg the decimal point '.'' or the minus sign '-'' are only valid in certain positions. + var potentialTextAfterKeypress = textBeforeKeypress.substring(0, start) + newChar + textBeforeKeypress.substring(end); + var validatedText = trimFunction(potentialTextAfterKeypress, settings); + + // If the keypress would cause the textbox to contain invalid characters, then cancel the keypress event + if(validatedText != potentialTextAfterKeypress) + e.preventDefault(); + }); + }); + + } + + // Ensure the text is a valid number when focus leaves the textbox + // This catches the case where a user enters '-' or '.' without entering any digits + function numericField_Blur(inputBox, settings) { + var fieldValueNumeric = parseFloat($(inputBox).val()); + var $inputBox = $(inputBox); + + if(isNaN(fieldValueNumeric)) { + $inputBox.val(""); + return; + } + + if(isNumeric(settings.min) && fieldValueNumeric < settings.min) + $inputBox.val(""); + + if(isNumeric(settings.max) && fieldValueNumeric > settings.max) + $inputBox.val(""); + } + + function isNumeric(value) { + return !isNaN(value); + } + + function isControlKey(charCode) { + + if(charCode >= 32) + return false; + if(charCode == 10) + return false; + if(charCode == 13) + return false; + + return true; + } + + // One way to prevent a character being entered is to cancel the keypress event. + // However, this gets messy when you have to deal with things like copy paste which isn't a keypress. + // Which event gets fired first, keypress or keyup? What about IE6 etc etc? + // Instead, it's easier to allow the 'bad' character to be entered and then to delete it immediately after. + + function trimTextbox($textBox, trimFunction, settings, pastedText){ + + var inputString = $textBox.val(); + + if(inputString == "" && pastedText.length > 0) + inputString = pastedText; + + var outputString = trimFunction(inputString, settings); + + if(inputString == outputString) + return; + + var caretPos = $textBox.alphanum_caret(); + + $textBox.val(outputString); + + //Reset the caret position + if(inputString.length ==(outputString.length + 1)) + $textBox.alphanum_caret(caretPos - 1); + else + $textBox.alphanum_caret(caretPos); + } + + function getCombinedSettingsAlphaNum(settings, defaultSettings){ + if(typeof defaultSettings == "undefined") + defaultSettings = DEFAULT_SETTINGS_ALPHANUM; + var userSettings, combinedSettings = {}; + if(typeof settings === "string") + userSettings = CONVENIENCE_SETTINGS_ALPHANUM[settings]; + else if(typeof settings == "undefined") + userSettings = {}; + else + userSettings = settings; + + $.extend(combinedSettings, defaultSettings, userSettings); + + if(typeof combinedSettings.blacklist == 'undefined') + combinedSettings.blacklistSet = getBlacklistSet(combinedSettings.allow, combinedSettings.disallow); + + return combinedSettings; + } + + function getCombinedSettingsNum(settings){ + var userSettings, combinedSettings = {}; + if(typeof settings === "string") + userSettings = CONVENIENCE_SETTINGS_NUMERIC[settings]; + else if(typeof settings == "undefined") + userSettings = {}; + else + userSettings = settings; + + $.extend(combinedSettings, DEFAULT_SETTINGS_NUM, userSettings); + + return combinedSettings; + } + + + // This is the heart of the algorithm + function alphanum_allowChar(validatedStringFragment, Char, settings){ + + if(settings.maxLength && validatedStringFragment.length >= settings.maxLength) + return false; + + if(settings.allow.indexOf(Char) >=0 ) + return true; + + if(settings.allowSpace && (Char == " ")) + return true; + + if(settings.blacklistSet.contains(Char)) + return false; + + if(!settings.allowNumeric && DIGITS[Char]) + return false; + + if(!settings.allowUpper && isUpper(Char)) + return false; + + if(!settings.allowLower && isLower(Char)) + return false; + + if(!settings.allowCaseless && isCaseless(Char)) + return false; + + if(!settings.allowLatin && LATIN_CHARS.contains(Char)) + return false; + + if(!settings.allowOtherCharSets){ + if(DIGITS[Char] || LATIN_CHARS.contains(Char)) + return true; + else + return false; + } + + return true; + } + + function numeric_allowChar(validatedStringFragment, Char, settings){ + + if(DIGITS[Char]) { + + if(isMaxDigitsReached(validatedStringFragment, settings)) + return false; + + if(isMaxPreDecimalsReached(validatedStringFragment, settings)) + return false; + + if(isMaxDecimalsReached(validatedStringFragment, settings)) + return false; + + if(isGreaterThanMax(validatedStringFragment + Char, settings)) + return false; + + if(isLessThanMin(validatedStringFragment + Char, settings)) + return false; + + return true; + } + + if(settings.allowPlus && Char == '+' && validatedStringFragment == '') + return true; + + if(settings.allowMinus && Char == '-' && validatedStringFragment == '') + return true; + + if(Char == THOU_SEP && settings.allowThouSep && allowThouSep(validatedStringFragment, Char)) + return true; + + if(Char == DEC_SEP) { + // Only one decimal separator allowed + if(validatedStringFragment.indexOf(DEC_SEP) >= 0) + return false; + if(settings.allowDecSep) + return true; + } + + return false; + } + + function countDigits(string) { + + // Error handling, nulls etc + string = string + ""; + + // Count the digits + return string.replace(/[^0-9]/g,"").length; + } + + function isMaxDigitsReached(string, settings) { + + var maxDigits = settings.maxDigits; + + if(maxDigits == "" || isNaN(maxDigits)) + return false; // In this case, there is no maximum + + var numDigits = countDigits(string); + + if(numDigits >= maxDigits) + return true; + + return false; + } + + function isMaxDecimalsReached(string, settings) { + + var maxDecimalPlaces = settings.maxDecimalPlaces; + + if(maxDecimalPlaces == "" || isNaN(maxDecimalPlaces)) + return false; // In this case, there is no maximum + + var indexOfDecimalPoint = string.indexOf(DEC_SEP); + + if(indexOfDecimalPoint == -1) + return false; + + var decimalSubstring = string.substring(indexOfDecimalPoint); + var numDecimals = countDigits(decimalSubstring); + + if(numDecimals >= maxDecimalPlaces) + return true; + + return false; + } + + function isMaxPreDecimalsReached(string, settings) { + + var maxPreDecimalPlaces = settings.maxPreDecimalPlaces; + + if(maxPreDecimalPlaces == "" || isNaN(maxPreDecimalPlaces)) + return false; // In this case, there is no maximum + + var indexOfDecimalPoint = string.indexOf(DEC_SEP); + + if(indexOfDecimalPoint >= 0) + return false; + + var numPreDecimalDigits = countDigits(string); + + if(numPreDecimalDigits >= maxPreDecimalPlaces) + return true; + + return false; + } + + function isGreaterThanMax(numericString, settings) { + + if(!settings.max || settings.max < 0) + return false; + + var outputNumber = parseFloat(numericString); + if(outputNumber > settings.max) + return true; + + return false; + } + + function isLessThanMin(numericString, settings) { + + if(!settings.min || settings.min > 0) + return false; + + var outputNumber = parseFloat(numericString); + if(outputNumber < settings.min) + return true; + + return false; + } + + /******************************** + * Trims a string according to the settings provided + ********************************/ + function trimAlphaNum(inputString, settings){ + + if(typeof inputString != "string") + return inputString; + + var inChars = inputString.split(""); + var outChars = []; + var i = 0; + var Char; + + for(i=0; i= 0) + return false; + + var posOfFirstThouSep = currentString.indexOf(THOU_SEP); + + // Check if this is the first occurrence of a THOU_SEP + if(posOfFirstThouSep < 0) + return true; + + var posOfLastThouSep = currentString.lastIndexOf(THOU_SEP); + var charsSinceLastThouSep = currentString.length - posOfLastThouSep - 1; + + // Check if there has been 3 digits since the last THOU_SEP + if(charsSinceLastThouSep < 3) + return false; + + var digitsSinceFirstThouSep = countDigits(currentString.substring(posOfFirstThouSep)); + + // Check if there has been a multiple of 3 digits since the first THOU_SEP + if((digitsSinceFirstThouSep % 3) > 0) + return false; + + return true; + } + + //////////////////////////////////////////////////////////////////////////////////// + // Implementation of a Set + //////////////////////////////////////////////////////////////////////////////////// + function Set(elems){ + if(typeof elems == "string") + this.map = stringToMap(elems); + else + this.map = {}; + } + + Set.prototype.add = function(set){ + + var newSet = this.clone(); + + for(var key in set.map) + newSet.map[key] = true; + + return newSet; + } + + Set.prototype.subtract = function(set){ + + var newSet = this.clone(); + + for(var key in set.map) + delete newSet.map[key]; + + return newSet; + } + + Set.prototype.contains = function(key){ + if(this.map[key]) + return true; + else + return false; + } + + Set.prototype.clone = function(){ + var newSet = new Set(); + + for(var key in this.map) + newSet.map[key] = true; + + return newSet; + } + //////////////////////////////////////////////////////////////////////////////////// + + function stringToMap(string){ + var map = {}; + var array = string.split(""); + var i=0; + var Char; + + for(i=0; i=0){endPos=i.toString().length}else{endPos=startPos+r.toString().length}return{start:startPos,end:endPos}},s=function(t){var n=r(t);if(t.selectionStart!==undefined){if(document.activeElement&&document.activeElement!=t&&t.selectionStart==t.selectionEnd&&t.selectionStart==0){return{start:t.value.length,end:t.value.length}}return{start:t.selectionStart,end:t.selectionEnd}}else if(n.getSelection){return i(t,n)}else{try{if(t.nodeName.toLowerCase()=="input"){var s=r(t).document.selection.createRange(),o=t.createTextRange();o.setEndPoint("EndToStart",s);var u=o.text.length;return{start:u,end:u+s.text.length}}else{var a=i(t,n);if(!a){return a}var f=e.Range.current().clone(),l=f.clone().collapse().range,c=f.clone().collapse(false).range;l.moveStart("character",-1);c.moveStart("character",-1);if(a.startPos!=0&&l.text==""){a.startPos+=2}if(a.endPos!=0&&c.text==""){a.endPos+=2}return a}}catch(h){return{start:t.value.length,end:t.value.length}}}},o=function(e,t,n){var i=r(e);if(e.setSelectionRange){if(n===undefined){e.focus();e.setSelectionRange(t,t)}else{e.select();e.selectionStart=t;e.selectionEnd=n}}else if(e.createTextRange){var s=e.createTextRange();s.moveStart("character",t);n=n||t;s.moveEnd("character",n-e.value.length);s.select()}else if(i.getSelection){var o=i.document,u=i.getSelection(),f=o.createRange(),l=[t,n!==undefined?n:t];a([e],l);f.setStart(l[0].el,l[0].count);f.setEnd(l[1].el,l[1].count);u.removeAllRanges();u.addRange(f)}else if(i.document.body.createTextRange){var f=document.body.createTextRange();f.moveToElementText(e);f.collapse();f.moveStart("character",t);f.moveEnd("character",n!==undefined?n:t);f.select()}},u=function(e,t,n,r){if(typeof n[0]==="number"&&n[0]= options.captureLength AND text != saved text OR if override AND text >= options.captureLength + if ((value.length >= options.captureLength && value.toUpperCase() != timer.text) + || (override && value.length >= options.captureLength)) + { + timer.text = value.toUpperCase(); + timer.cb.call(timer.el, value); + } + }; + + function watchElement(elem) { + var elementType = elem.type.toUpperCase(); + if (jQuery.inArray(elementType, options.inputTypes) >= 0) { + + // Allocate timer element + var timer = { + timer: null, + text: jQuery(elem).val().toUpperCase(), + cb: options.callback, + el: elem, + wait: options.wait + }; + + // Set focus action (highlight) + if (options.highlight) { + jQuery(elem).focus( + function() { + this.select(); + }); + } + + // Key watcher / clear and reset the timer + var startWatch = function(evt) { + var timerWait = timer.wait; + var overrideBool = false; + var evtElementType = this.type.toUpperCase(); + + // If enter key is pressed and not a TEXTAREA and matched inputTypes + if (typeof evt.keyCode != 'undefined' && evt.keyCode == 13 && evtElementType != 'TEXTAREA' && jQuery.inArray(evtElementType, options.inputTypes) >= 0) { + timerWait = 1; + overrideBool = true; + } + + var timerCallbackFx = function() { + checkElement(timer, overrideBool) + } + + // Clear timer + clearTimeout(timer.timer); + timer.timer = setTimeout(timerCallbackFx, timerWait); + }; + + jQuery(elem).on('keydown paste cut input', startWatch); + } + }; + + // Watch Each Element + return this.each(function() { + watchElement(this); + }); + + }; +})(jQuery); \ No newline at end of file diff --git a/redux/ReduxCore/assets/js/vendor/jsonview.js b/redux/ReduxCore/assets/js/vendor/jsonview.js new file mode 100644 index 0000000..1afe027 --- /dev/null +++ b/redux/ReduxCore/assets/js/vendor/jsonview.js @@ -0,0 +1,265 @@ + +/* global console, jsonView */ +/* + * ViewJSON + * Version 1.0 + * A Google Chrome extension to display JSON in a user-friendly format + * + * This is a chromeified version of the JSONView Firefox extension by Ben Hollis: + * http://jsonview.com + * http://code.google.com/p/jsonview + * + * Also based on the XMLTree Chrome extension by Moonty & alan.stroop + * https://chrome.google.com/extensions/detail/gbammbheopgpmaagmckhpjbfgdfkpadb + * + * port by Jamie Wilkinson (@jamiew) | http://jamiedubs.com | http://github.com/jamiew + * MIT license / copyfree (f) F.A.T. Lab http://fffff.at + * Speed Project Approved: 2h + */ + +function collapse(evt) { + var collapser = evt.target; + var target = collapser.parentNode.getElementsByClassName('collapsible'); + if (!target.length) { + return; + } + target = target[0]; + if (target.style.display === 'none') { + var ellipsis = target.parentNode.getElementsByClassName('ellipsis')[0]; + target.parentNode.removeChild(ellipsis); + target.style.display = ''; + } else { + target.style.display = 'none'; + var ellipsis = document.createElement('span'); + ellipsis.className = 'ellipsis'; + ellipsis.innerHTML = ' … '; + target.parentNode.insertBefore(ellipsis, target); + } + collapser.innerHTML = (collapser.innerHTML === '-') ? '+' : '-'; +} + +function addCollapser(item) { + // This mainly filters out the root object (which shouldn't be collapsible) + if (item.nodeName !== 'LI') { + return; + } + var collapser = document.createElement('div'); + collapser.className = 'collapser'; + collapser.innerHTML = '-'; + collapser.addEventListener('click', collapse, false); + item.insertBefore(collapser, item.firstChild); +} + +function jsonView(id, target) { + this.debug = false; + if (id.indexOf("#") !== -1) { + this.idType = "id"; + this.id = id.replace('#', ''); + } else if (id.indexOf(".") !== -1) { + this.idType = "class"; + this.id = id.replace('.', ''); + } else { + if (this.debug) { console.log("Can't find that element"); } + return; + } + + this.data = document.getElementById(this.id).innerHTML; + if (typeof(target) !== undefined) { + if (target.indexOf("#") !== -1) { + this.targetType = "id"; + this.target = target.replace('#', ''); + } else if (id.indexOf(".") !== -1) { + this.targetType = "class"; + this.target = target.replace('.', ''); + } else { + if (this.debug) { console.log("Can't find the target element"); } + return; + } + } + // Note: now using "*.json*" URI matching rather than these page regexes -- save CPU cycles! + // var is_json = /^\s*(\{.*\})\s*$/.test(this.data); + // var is_jsonp = /^.*\(\s*(\{.*\})\s*\)$/.test(this.data); + // if(is_json || is_jsonp){ + // Our manifest specifies that we only do URLs matching '.json', so attempt to sanitize any HTML + // added by Chrome's "text/plain" or "text/html" handlers + if (/^\(.*)\<\/pre\>$/.test(this.data)) { + if (this.debug) { console.log("JSONView: data is wrapped in
    ...
    , stripping HTML..."); } + this.data = this.data.replace(/<(?:.|\s)*?>/g, ''); //Aggressively strip HTML. + } + // Test if what remains is JSON or JSONp + var json_regex = /^\s*([\[\{].*[\}\]])\s*$/; // Ghetto, but it works + var jsonp_regex = /^[\s\u200B\uFEFF]*([\w$\[\]\.]+)[\s\u200B\uFEFF]*\([\s\u200B\uFEFF]*([\[{][\s\S]*[\]}])[\s\u200B\uFEFF]*\);?[\s\u200B\uFEFF]*$/; + var jsonp_regex2 = /([\[\{][\s\S]*[\]\}])\)/; // more liberal support... this allows us to pass the jsonp.json & jsonp2.json tests + var is_json = json_regex.test(this.data); + var is_jsonp = jsonp_regex.test(this.data); + if (this.debug) { console.log("JSONView: is_json=" + is_json + " is_jsonp=" + is_jsonp); } + if (is_json || is_jsonp) { + if (this.debug) { console.log("JSONView: sexytime!"); } + // JSONFormatter json->HTML prototype straight from Firefox JSONView + // For reference: http://code.google.com/p/jsonview + + function JSONFormatter() { + // No magic required. + } + JSONFormatter.prototype = { + htmlEncode: function(t) { + return t != null ? t.toString().replace(/&/g, "&").replace(/"/g, """).replace(//g, ">") : ''; + }, + decorateWithSpan: function(value, className) { + return '' + this.htmlEncode(value) + ''; + }, + // Convert a basic JSON datatype (number, string, boolean, null, object, array) into an HTML fragment. + valueToHTML: function(value) { + var valueType = typeof value; + var output = ""; + if (value === null) { + output += this.decorateWithSpan('null', 'null'); + } else if (value && value.constructor === Array) { + output += this.arrayToHTML(value); + } else if (valueType === 'object') { + output += this.objectToHTML(value); + } else if (valueType === 'number') { + output += this.decorateWithSpan(value, 'num'); + } else if (valueType === 'string') { + if (/^(http|https):\/\/[^\s]+$/.test(value)) { + output += '
    ' + this.htmlEncode(value) + ''; + } else { + output += this.decorateWithSpan('"' + value + '"', 'string'); + } + } else if (valueType === 'boolean') { + output += this.decorateWithSpan(value, 'bool'); + } + return output; + }, + // Convert an array into an HTML fragment + arrayToHTML: function(json) { + var output = '[]'; + if (!hasContents) { + output = "[ ]"; + } + return output; + }, + // Convert a JSON object to an HTML fragment + objectToHTML: function(json) { + var output = '{}'; + if (!hasContents) { + output = "{ }"; + } + return output; + }, + // Convert a whole JSON object into a formatted HTML document. + jsonToHTML: function(json, callback, uri) { + var output = ''; + if (callback) { + output += '
    ' + callback + ' (
    '; + output += '
    '; + } else { + output += '
    '; + } + output += this.valueToHTML(json); + output += '
    '; + if (callback) { + output += '
    )
    '; + } + return this.toHTML(output, uri); + }, + // Produce an error document for when parsing fails. + errorPage: function(error, data, uri) { + // var output = '
    ' + this.stringbundle.GetStringFromName('errorParsing') + '
    '; + // output += '

    ' + this.stringbundle.GetStringFromName('docContents') + ':

    '; + var output = '
    Error parsing JSON: ' + error.message + '
    '; + output += '

    ' + error.stack + ':

    '; + output += '
    ' + this.htmlEncode(data) + '
    '; + return this.toHTML(output, uri + ' - Error'); + }, + // Wrap the HTML fragment in a full document. Used by jsonToHTML and errorPage. + toHTML: function(content) { + return content; + } + }; + // Sanitize & output -- all magic from JSONView Firefox + this.jsonFormatter = new JSONFormatter(); + // This regex attempts to match a JSONP structure: + // * Any amount of whitespace (including unicode nonbreaking spaces) between the start of the file and the callback name + // * Callback name (any valid JavaScript function name according to ECMA-262 Edition 3 spec) + // * Any amount of whitespace (including unicode nonbreaking spaces) + // * Open parentheses + // * Any amount of whitespace (including unicode nonbreaking spaces) + // * Either { or [, the only two valid characters to start a JSON string. + // * Any character, any number of times + // * Either } or ], the only two valid closing characters of a JSON string. + // * Any amount of whitespace (including unicode nonbreaking spaces) + // * A closing parenthesis, an optional semicolon, and any amount of whitespace (including unicode nonbreaking spaces) until the end of the file. + // This will miss anything that has comments, or more than one callback, or requires modification before use. + var outputDoc = ''; + // text = text.match(jsonp_regex)[1]; + var cleanData = '', + callback = ''; + var callback_results = jsonp_regex.exec(this.data); + if (callback_results && callback_results.length === 3) { + if (this.debug) { console.log("THIS IS JSONp"); } + callback = callback_results[1]; + cleanData = callback_results[2]; + } else { + if (this.debug) { console.log("Vanilla JSON"); } + cleanData = this.data; + } + if (this.debug) { console.log(cleanData); } + // Covert, and catch exceptions on failure + try { + // var jsonObj = this.nativeJSON.decode(cleanData); + var jsonObj = JSON.parse(cleanData); + if (jsonObj) { + outputDoc = this.jsonFormatter.jsonToHTML(jsonObj, callback); + } else { + throw "There was no object!"; + } + } catch (e) { + if (this.debug) { console.log(e); } + outputDoc = this.jsonFormatter.errorPage(e, this.data); + } + var links = ''; + if (this.targetType !== undefined) { + this.idType = this.targetType; + this.id = this.target; + } + var el; + if (this.idType === "class") { + el = document.getElementsByClassName(this.id); + if (el) { + el.className += el.className ? ' jsonViewOutput' : 'jsonViewOutput'; + el.innerHTML = links + outputDoc; + } + } else if (this.idType === "id") { + el = document.getElementById(this.id); + if (el) { + el.className += el.className ? ' jsonViewOutput' : 'jsonViewOutput'; + el.innerHTML = links + outputDoc; + } + el.innerHTML = links + outputDoc; + } + var items = document.getElementsByClassName('collapsible'); + for (var i = 0; i < items.length; i++) { + addCollapser(items[i].parentNode); + } + } else { + // console.log("JSONView: this is not json, not formatting."); + } +} \ No newline at end of file diff --git a/redux/ReduxCore/assets/js/vendor/jsonview.min.js b/redux/ReduxCore/assets/js/vendor/jsonview.min.js new file mode 100644 index 0000000..b8c4f1b --- /dev/null +++ b/redux/ReduxCore/assets/js/vendor/jsonview.min.js @@ -0,0 +1,16 @@ +/* global console, jsonView *//* + * ViewJSON + * Version 1.0 + * A Google Chrome extension to display JSON in a user-friendly format + * + * This is a chromeified version of the JSONView Firefox extension by Ben Hollis: + * http://jsonview.com + * http://code.google.com/p/jsonview + * + * Also based on the XMLTree Chrome extension by Moonty & alan.stroop + * https://chrome.google.com/extensions/detail/gbammbheopgpmaagmckhpjbfgdfkpadb + * + * port by Jamie Wilkinson (@jamiew) | http://jamiedubs.com | http://github.com/jamiew + * MIT license / copyfree (f) F.A.T. Lab http://fffff.at + * Speed Project Approved: 2h + */function collapse(e){var t=e.target,n=t.parentNode.getElementsByClassName("collapsible");if(!n.length)return;n=n[0];if(n.style.display==="none"){var r=n.parentNode.getElementsByClassName("ellipsis")[0];n.parentNode.removeChild(r),n.style.display=""}else{n.style.display="none";var r=document.createElement("span");r.className="ellipsis",r.innerHTML=" … ",n.parentNode.insertBefore(r,n)}t.innerHTML=t.innerHTML==="-"?"+":"-"}function addCollapser(e){if(e.nodeName!=="LI")return;var t=document.createElement("div");t.className="collapser",t.innerHTML="-",t.addEventListener("click",collapse,!1),e.insertBefore(t,e.firstChild)}function jsonView(e,t){this.debug=!1;if(e.indexOf("#")!==-1)this.idType="id",this.id=e.replace("#","");else{if(e.indexOf(".")===-1){this.debug&&console.log("Can't find that element");return}this.idType="class",this.id=e.replace(".","")}this.data=document.getElementById(this.id).innerHTML;if(typeof t!==undefined)if(t.indexOf("#")!==-1)this.targetType="id",this.target=t.replace("#","");else{if(e.indexOf(".")===-1){this.debug&&console.log("Can't find the target element");return}this.targetType="class",this.target=t.replace(".","")}/^\(.*)\<\/pre\>$/.test(this.data)&&(this.debug&&console.log("JSONView: data is wrapped in
    ...
    , stripping HTML..."),this.data=this.data.replace(/<(?:.|\s)*?>/g,""));var n=/^\s*([\[\{].*[\}\]])\s*$/,r=/^[\s\u200B\uFEFF]*([\w$\[\]\.]+)[\s\u200B\uFEFF]*\([\s\u200B\uFEFF]*([\[{][\s\S]*[\]}])[\s\u200B\uFEFF]*\);?[\s\u200B\uFEFF]*$/,i=/([\[\{][\s\S]*[\]\}])\)/,s=n.test(this.data),o=r.test(this.data);this.debug&&console.log("JSONView: is_json="+s+" is_jsonp="+o);if(s||o){this.debug&&console.log("JSONView: sexytime!");function u(){}u.prototype={htmlEncode:function(e){return e!=null?e.toString().replace(/&/g,"&").replace(/"/g,""").replace(//g,">"):""},decorateWithSpan:function(e,t){return''+this.htmlEncode(e)+""},valueToHTML:function(e){var t=typeof e,n="";return e===null?n+=this.decorateWithSpan("null","null"):e&&e.constructor===Array?n+=this.arrayToHTML(e):t==="object"?n+=this.objectToHTML(e):t==="number"?n+=this.decorateWithSpan(e,"num"):t==="string"?/^(http|https):\/\/[^\s]+$/.test(e)?n+=''+this.htmlEncode(e)+"":n+=this.decorateWithSpan('"'+e+'"',"string"):t==="boolean"&&(n+=this.decorateWithSpan(e,"bool")),n},arrayToHTML:function(e){var t='[
      ',n=!1;for(var r in e)n=!0,t+="
    • ",t+=this.valueToHTML(e[r]),t+="
    • ";return t+="
    ]",n||(t="[ ]"),t},objectToHTML:function(e){var t='{
      ',n=!1;for(var r in e)n=!0,t+="
    • ",t+=''+this.htmlEncode(r)+": ",t+=this.valueToHTML(e[r]),t+="
    • ";return t+="
    }",n||(t="{ }"),t},jsonToHTML:function(e,t,n){var r="";return t?(r+='
    '+t+" (
    ",r+='
    '):r+='
    ',r+=this.valueToHTML(e),r+="
    ",t&&(r+='
    )
    '),this.toHTML(r,n)},errorPage:function(e,t,n){var r='
    Error parsing JSON: '+e.message+"
    ";return r+="

    "+e.stack+":

    ",r+='
    '+this.htmlEncode(t)+"
    ",this.toHTML(r,n+" - Error")},toHTML:function(e){return e}},this.jsonFormatter=new u;var a="",f="",l="",c=r.exec(this.data);c&&c.length===3?(this.debug&&console.log("THIS IS JSONp"),l=c[1],f=c[2]):(this.debug&&console.log("Vanilla JSON"),f=this.data),this.debug&&console.log(f);try{var h=JSON.parse(f);if(!h)throw"There was no object!";a=this.jsonFormatter.jsonToHTML(h,l)}catch(p){this.debug&&console.log(p),a=this.jsonFormatter.errorPage(p,this.data)}var d="";this.targetType!==undefined&&(this.idType=this.targetType,this.id=this.target);var v;this.idType==="class"?(v=document.getElementsByClassName(this.id),v&&(v.className+=v.className?" jsonViewOutput":"jsonViewOutput",v.innerHTML=d+a)):this.idType==="id"&&(v=document.getElementById(this.id),v&&(v.className+=v.className?" jsonViewOutput":"jsonViewOutput",v.innerHTML=d+a),v.innerHTML=d+a);var m=document.getElementsByClassName("collapsible");for(var g=0;g' + entity + '' + html; + } + var icons = { + 'icon-move' : '', + 'icon-music' : '', + 'icon-network' : '', + 'icon-off' : '', + 'icon-ok' : '', + 'icon-ok-circle' : '', + 'icon-ok-sign' : '', + 'icon-paper-clip' : '', + 'icon-paper-clip-alt' : '', + 'icon-path' : '', + 'icon-plus-sign' : '', + 'icon-print' : '', + 'icon-qrcode' : '', + 'icon-question' : '', + 'icon-question-sign' : '', + 'icon-quotes' : '', + 'icon-quotes-alt' : '', + 'icon-random' : '', + 'icon-record' : '', + 'icon-reddit' : '', + 'icon-refresh' : '', + 'icon-screenshot' : '', + 'icon-search' : '', + 'icon-search-alt' : '', + 'icon-share' : '', + 'icon-share-alt' : '', + 'icon-shopping-cart' : '', + 'icon-shopping-cart-sign' : '', + 'icon-signal' : '', + 'icon-skype' : '', + 'icon-slideshare' : '', + 'icon-smiley' : '', + 'icon-th-large' : '', + 'icon-th-list' : '', + 'icon-thumbs-down' : '', + 'icon-thumbs-up' : '', + 'icon-time' : '', + 'icon-time-alt' : '', + 'icon-tint' : '', + 'icon-torso' : '', + 'icon-trash' : '', + 'icon-trash-alt' : '', + 'icon-tumblr' : '', + 'icon-w3c' : '', + 'icon-warning-sign' : '', + 'icon-website' : '', + 'icon-website-alt' : '', + 'icon-wheelchair' : '', + 'icon-wordpress' : '', + 'icon-wrench' : '', + 'icon-wrench-alt' : '', + 'icon-youtube' : '', + 'icon-zoom-in' : '', + 'icon-zoom-out' : '', + 'icon-pause-alt' : '', + 'icon-pencil' : '', + 'icon-pencil-alt' : '', + 'icon-person' : '', + 'icon-phone' : '', + 'icon-phone-alt' : '', + 'icon-photo' : '', + 'icon-photo-alt' : '', + 'icon-picasa' : '', + 'icon-picture' : '', + 'icon-pinterest' : '', + 'icon-plane' : '', + 'icon-play-alt' : '', + 'icon-play-circle' : '', + 'icon-plus' : '', + 'icon-remove' : '', + 'icon-remove-circle' : '', + 'icon-remove-sign' : '', + 'icon-repeat' : '', + 'icon-repeat-alt' : '', + 'icon-resize-full' : '', + 'icon-resize-horizontal' : '', + 'icon-resize-small' : '', + 'icon-resize-vertical' : '', + 'icon-retweet' : '', + 'icon-reverse-alt' : '', + 'icon-road' : '', + 'icon-rss' : '', + 'icon-screen' : '', + 'icon-screen-alt' : '', + 'icon-smiley-alt' : '', + 'icon-speaker' : '', + 'icon-stackoverflow' : '', + 'icon-star' : '', + 'icon-star-alt' : '', + 'icon-star-empty' : '', + 'icon-stop-alt' : '', + 'icon-stumbleupon' : '', + 'icon-tag' : '', + 'icon-tags' : '', + 'icon-tasks' : '', + 'icon-text-height' : '', + 'icon-text-width' : '', + 'icon-th' : '', + 'icon-twitter' : '', + 'icon-universal-access' : '', + 'icon-unlock' : '', + 'icon-unlock-alt' : '', + 'icon-upload' : '', + 'icon-user' : '', + 'icon-video' : '', + 'icon-video-alt' : '', + 'icon-video-chat' : '', + 'icon-view-mode' : '', + 'icon-vimeo' : '', + 'icon-vkontakte' : '', + 'icon-volume-down' : '', + 'icon-volume-off' : '', + 'icon-volume-up' : '', + 'icon-backward' : '', + 'icon-fast-backward' : '', + 'icon-fast-forward' : '', + 'icon-forward' : '', + 'icon-play' : '', + 'icon-step-backward' : '', + 'icon-step-forward' : '', + 'icon-briefcase' : '', + 'icon-bullhorn' : '', + 'icon-calendar' : '', + 'icon-calendar-sign' : '', + 'icon-address-book' : '', + 'icon-address-book-alt' : '', + 'icon-adjust' : '', + 'icon-adult' : '', + 'icon-align-center' : '', + 'icon-align-justify' : '', + 'icon-align-left' : '', + 'icon-align-right' : '', + 'icon-arrow-down' : '', + 'icon-arrow-left' : '', + 'icon-arrow-right' : '', + 'icon-arrow-up' : '', + 'icon-asl' : '', + 'icon-asterisk' : '', + 'icon-ban-circle' : '', + 'icon-barcode' : '', + 'icon-behance' : '', + 'icon-bell' : '', + 'icon-blind' : '', + 'icon-blogger' : '', + 'icon-bold' : '', + 'icon-book' : '', + 'icon-bookmark' : '', + 'icon-bookmark-empty' : '', + 'icon-braille' : '', + 'icon-camera' : '', + 'icon-cc' : '', + 'icon-certificate' : '', + 'icon-check' : '', + 'icon-check-empty' : '', + 'icon-chevron-down' : '', + 'icon-chevron-left' : '', + 'icon-chevron-right' : '', + 'icon-chevron-up' : '', + 'icon-child' : '', + 'icon-circle-arrow-down' : '', + 'icon-circle-arrow-left' : '', + 'icon-circle-arrow-right' : '', + 'icon-circle-arrow-up' : '', + 'icon-cloud' : '', + 'icon-cloud-alt' : '', + 'icon-cog' : '', + 'icon-cog-alt' : '', + 'icon-cogs' : '', + 'icon-comment' : '', + 'icon-comment-alt' : '', + 'icon-compass' : '', + 'icon-compass-alt' : '', + 'icon-credit-card' : '', + 'icon-css' : '', + 'icon-dashboard' : '', + 'icon-delicious' : '', + 'icon-deviantart' : '', + 'icon-digg' : '', + 'icon-download' : '', + 'icon-download-alt' : '', + 'icon-dribble' : '', + 'icon-edit' : '', + 'icon-eject' : '', + 'icon-envelope' : '', + 'icon-envelope-alt' : '', + 'icon-error' : '', + 'icon-error-alt' : '', + 'icon-exclamation-sign' : '', + 'icon-eye-close' : '', + 'icon-eye-open' : '', + 'icon-facebook' : '', + 'icon-facetime-video' : '', + 'icon-female' : '', + 'icon-file' : '', + 'icon-file-alt' : '', + 'icon-file-edit' : '', + 'icon-file-edit-alt' : '', + 'icon-file-new' : '', + 'icon-file-new-alt' : '', + 'icon-film' : '', + 'icon-filter' : '', + 'icon-fire' : '', + 'icon-flag' : '', + 'icon-flag-alt' : '', + 'icon-flickr' : '', + 'icon-folder' : '', + 'icon-folder-close' : '', + 'icon-folder-open' : '', + 'icon-folder-sign' : '', + 'icon-font' : '', + 'icon-fontsize' : '', + 'icon-forward-alt' : '', + 'icon-foursquare' : '', + 'icon-friendfeed' : '', + 'icon-friendfeed-rect' : '', + 'icon-fullscreen' : '', + 'icon-gift' : '', + 'icon-github' : '', + 'icon-github-text' : '', + 'icon-glass' : '', + 'icon-glasses' : '', + 'icon-globe' : '', + 'icon-globe-alt' : '', + 'icon-googleplus' : '', + 'icon-graph' : '', + 'icon-graph-alt' : '', + 'icon-group' : '', + 'icon-group-alt' : '', + 'icon-guidedog' : '', + 'icon-hand-down' : '', + 'icon-hand-left' : '', + 'icon-hand-right' : '', + 'icon-hand-up' : '', + 'icon-hdd' : '', + 'icon-headphones' : '', + 'icon-hearing-impaired' : '', + 'icon-heart' : '', + 'icon-heart-alt' : '', + 'icon-heart-empty' : '', + 'icon-home' : '', + 'icon-home-alt' : '', + 'icon-idea' : '', + 'icon-idea-alt' : '', + 'icon-inbox' : '', + 'icon-inbox-alt' : '', + 'icon-inbox-box' : '', + 'icon-indent-left' : '', + 'icon-indent-right' : '', + 'icon-info-sign' : '', + 'icon-instagram' : '', + 'icon-iphone-home' : '', + 'icon-italic' : '', + 'icon-key' : '', + 'icon-laptop' : '', + 'icon-laptop-alt' : '', + 'icon-leaf' : '', + 'icon-linkedin' : '', + 'icon-list' : '', + 'icon-list-alt' : '', + 'icon-lock' : '', + 'icon-lock-alt' : '', + 'icon-magnet' : '', + 'icon-male' : '', + 'icon-map-marker' : '', + 'icon-map-marker-alt' : '', + 'icon-mic' : '', + 'icon-mic-alt' : '', + 'icon-minus' : '', + 'icon-minus-sign' : '', + 'icon-pause' : '', + 'icon-fork' : '', + 'icon-broom' : '', + 'icon-return-key' : '', + 'icon-lastfm' : '', + 'icon-livejournal' : '', + 'icon-myspace' : '', + 'icon-soundcloud' : '', + 'icon-viadeo' : '', + 'icon-spotify' : '', + 'icon-caret-left' : '', + 'icon-caret-up' : '', + 'icon-caret-right' : '', + 'icon-caret-down' : '', + 'icon-stop' : '' + }, + els = document.getElementsByTagName('*'), + i, attr, html, c, el; + for (i = 0; ; i += 1) { + el = els[i]; + if(!el) { + break; + } + attr = el.getAttribute('data-icon'); + if (attr) { + addIcon(el, attr); + } + c = el.className; + c = c.match(/icon-[^\s'"]+/); + if (c && icons[c[0]]) { + addIcon(el, icons[c[0]]); + } + } +}; \ No newline at end of file diff --git a/redux/ReduxCore/assets/js/vendor/qtip/jquery.qtip.js b/redux/ReduxCore/assets/js/vendor/qtip/jquery.qtip.js new file mode 100644 index 0000000..a2f4788 --- /dev/null +++ b/redux/ReduxCore/assets/js/vendor/qtip/jquery.qtip.js @@ -0,0 +1,3451 @@ +/* + * qTip2 - Pretty powerful tooltips - v2.2.1 + * http://qtip2.com + * + * Copyright (c) 2014 + * Released under the MIT licenses + * http://jquery.org/license + * + * Date: Sat Sep 6 2014 11:12 GMT+0100+0100 + * Plugins: tips modal viewport svg imagemap ie6 + * Styles: core basic css3 + */ +/*global window: false, jQuery: false, console: false, define: false */ + +/* Cache window, document, undefined */ +(function( window, document, undefined ) { + + // Uses AMD or browser globals to create a jQuery plugin. + (function( factory ) { + "use strict"; + if(typeof define === 'function' && define.amd) { + define(['jquery'], factory); + } + else if(jQuery && !jQuery.fn.qtip) { + factory(jQuery); + } + } + (function($) { + "use strict"; // Enable ECMAScript "strict" operation for this function. See more: http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/ + ;// Munge the primitives - Paul Irish tip + var TRUE = true, + FALSE = false, + NULL = null, + + // Common variables + X = 'x', Y = 'y', + WIDTH = 'width', + HEIGHT = 'height', + + // Positioning sides + TOP = 'top', + LEFT = 'left', + BOTTOM = 'bottom', + RIGHT = 'right', + CENTER = 'center', + + // Position adjustment types + FLIP = 'flip', + FLIPINVERT = 'flipinvert', + SHIFT = 'shift', + + // Shortcut vars + QTIP, PROTOTYPE, CORNER, CHECKS, + PLUGINS = {}, + NAMESPACE = 'qtip', + ATTR_HAS = 'data-hasqtip', + ATTR_ID = 'data-qtip-id', + WIDGET = ['ui-widget', 'ui-tooltip'], + SELECTOR = '.'+NAMESPACE, + INACTIVE_EVENTS = 'click dblclick mousedown mouseup mousemove mouseleave mouseenter'.split(' '), + + CLASS_FIXED = NAMESPACE+'-fixed', + CLASS_DEFAULT = NAMESPACE + '-default', + CLASS_FOCUS = NAMESPACE + '-focus', + CLASS_HOVER = NAMESPACE + '-hover', + CLASS_DISABLED = NAMESPACE+'-disabled', + + replaceSuffix = '_replacedByqTip', + oldtitle = 'oldtitle', + trackingBound, + + // Browser detection + BROWSER = { + /* + * IE version detection + * + * Adapted from: http://ajaxian.com/archives/attack-of-the-ie-conditional-comment + * Credit to James Padolsey for the original implemntation! + */ + ie: (function(){ + for ( + var v = 4, i = document.createElement("div"); + (i.innerHTML = "") && i.getElementsByTagName("i")[0]; + v+=1 + ) {} + return v > 4 ? v : NaN; + }()), + + /* + * iOS version detection + */ + iOS: parseFloat( + ('' + (/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent) || [0,''])[1]) + .replace('undefined', '3_2').replace('_', '.').replace('_', '') + ) || FALSE + }; + ;function QTip(target, options, id, attr) { + // Elements and ID + this.id = id; + this.target = target; + this.tooltip = NULL; + this.elements = { target: target }; + + // Internal constructs + this._id = NAMESPACE + '-' + id; + this.timers = { img: {} }; + this.options = options; + this.plugins = {}; + + // Cache object + this.cache = { + event: {}, + target: $(), + disabled: FALSE, + attr: attr, + onTooltip: FALSE, + lastClass: '' + }; + + // Set the initial flags + this.rendered = this.destroyed = this.disabled = this.waiting = + this.hiddenDuringWait = this.positioning = this.triggering = FALSE; + } + PROTOTYPE = QTip.prototype; + + PROTOTYPE._when = function(deferreds) { + return $.when.apply($, deferreds); + }; + + PROTOTYPE.render = function(show) { + if(this.rendered || this.destroyed) { return this; } // If tooltip has already been rendered, exit + + var self = this, + options = this.options, + cache = this.cache, + elements = this.elements, + text = options.content.text, + title = options.content.title, + button = options.content.button, + posOptions = options.position, + namespace = '.'+this._id+' ', + deferreds = [], + tooltip; + + // Add ARIA attributes to target + $.attr(this.target[0], 'aria-describedby', this._id); + + // Create public position object that tracks current position corners + cache.posClass = this._createPosClass( + (this.position = { my: posOptions.my, at: posOptions.at }).my + ); + + // Create tooltip element + this.tooltip = elements.tooltip = tooltip = $('
    ', { + 'id': this._id, + 'class': [ NAMESPACE, CLASS_DEFAULT, options.style.classes, cache.posClass ].join(' '), + 'width': options.style.width || '', + 'height': options.style.height || '', + 'tracking': posOptions.target === 'mouse' && posOptions.adjust.mouse, + + /* ARIA specific attributes */ + 'role': 'alert', + 'aria-live': 'polite', + 'aria-atomic': FALSE, + 'aria-describedby': this._id + '-content', + 'aria-hidden': TRUE + }) + .toggleClass(CLASS_DISABLED, this.disabled) + .attr(ATTR_ID, this.id) + .data(NAMESPACE, this) + .appendTo(posOptions.container) + .append( + // Create content element + elements.content = $('
    ', { + 'class': NAMESPACE + '-content', + 'id': this._id + '-content', + 'aria-atomic': TRUE + }) + ); + + // Set rendered flag and prevent redundant reposition calls for now + this.rendered = -1; + this.positioning = TRUE; + + // Create title... + if(title) { + this._createTitle(); + + // Update title only if its not a callback (called in toggle if so) + if(!$.isFunction(title)) { + deferreds.push( this._updateTitle(title, FALSE) ); + } + } + + // Create button + if(button) { this._createButton(); } + + // Set proper rendered flag and update content if not a callback function (called in toggle) + if(!$.isFunction(text)) { + deferreds.push( this._updateContent(text, FALSE) ); + } + this.rendered = TRUE; + + // Setup widget classes + this._setWidget(); + + // Initialize 'render' plugins + $.each(PLUGINS, function(name) { + var instance; + if(this.initialize === 'render' && (instance = this(self))) { + self.plugins[name] = instance; + } + }); + + // Unassign initial events and assign proper events + this._unassignEvents(); + this._assignEvents(); + + // When deferreds have completed + this._when(deferreds).then(function() { + // tooltiprender event + self._trigger('render'); + + // Reset flags + self.positioning = FALSE; + + // Show tooltip if not hidden during wait period + if(!self.hiddenDuringWait && (options.show.ready || show)) { + self.toggle(TRUE, cache.event, FALSE); + } + self.hiddenDuringWait = FALSE; + }); + + // Expose API + QTIP.api[this.id] = this; + + return this; + }; + + PROTOTYPE.destroy = function(immediate) { + // Set flag the signify destroy is taking place to plugins + // and ensure it only gets destroyed once! + if(this.destroyed) { return this.target; } + + function process() { + if(this.destroyed) { return; } + this.destroyed = TRUE; + + var target = this.target, + title = target.attr(oldtitle), + timer; + + // Destroy tooltip if rendered + if(this.rendered) { + this.tooltip.stop(1,0).find('*').remove().end().remove(); + } + + // Destroy all plugins + $.each(this.plugins, function(name) { + this.destroy && this.destroy(); + }); + + // Clear timers + for(timer in this.timers) { + clearTimeout(this.timers[timer]); + } + + // Remove api object and ARIA attributes + target.removeData(NAMESPACE) + .removeAttr(ATTR_ID) + .removeAttr(ATTR_HAS) + .removeAttr('aria-describedby'); + + // Reset old title attribute if removed + if(this.options.suppress && title) { + target.attr('title', title).removeAttr(oldtitle); + } + + // Remove qTip events associated with this API + this._unassignEvents(); + + // Remove ID from used id objects, and delete object references + // for better garbage collection and leak protection + this.options = this.elements = this.cache = this.timers = + this.plugins = this.mouse = NULL; + + // Delete epoxsed API object + delete QTIP.api[this.id]; + } + + // If an immediate destory is needed + if((immediate !== TRUE || this.triggering === 'hide') && this.rendered) { + this.tooltip.one('tooltiphidden', $.proxy(process, this)); + !this.triggering && this.hide(); + } + + // If we're not in the process of hiding... process + else { process.call(this); } + + return this.target; + }; + ;function invalidOpt(a) { + return a === NULL || $.type(a) !== 'object'; + } + + function invalidContent(c) { + return !( $.isFunction(c) || (c && c.attr) || c.length || ($.type(c) === 'object' && (c.jquery || c.then) )); + } + + // Option object sanitizer + function sanitizeOptions(opts) { + var content, text, ajax, once; + + if(invalidOpt(opts)) { return FALSE; } + + if(invalidOpt(opts.metadata)) { + opts.metadata = { type: opts.metadata }; + } + + if('content' in opts) { + content = opts.content; + + if(invalidOpt(content) || content.jquery || content.done) { + content = opts.content = { + text: (text = invalidContent(content) ? FALSE : content) + }; + } + else { text = content.text; } + + // DEPRECATED - Old content.ajax plugin functionality + // Converts it into the proper Deferred syntax + if('ajax' in content) { + ajax = content.ajax; + once = ajax && ajax.once !== FALSE; + delete content.ajax; + + content.text = function(event, api) { + var loading = text || $(this).attr(api.options.content.attr) || 'Loading...', + + deferred = $.ajax( + $.extend({}, ajax, { context: api }) + ) + .then(ajax.success, NULL, ajax.error) + .then(function(content) { + if(content && once) { api.set('content.text', content); } + return content; + }, + function(xhr, status, error) { + if(api.destroyed || xhr.status === 0) { return; } + api.set('content.text', status + ': ' + error); + }); + + return !once ? (api.set('content.text', loading), deferred) : loading; + }; + } + + if('title' in content) { + if($.isPlainObject(content.title)) { + content.button = content.title.button; + content.title = content.title.text; + } + + if(invalidContent(content.title || FALSE)) { + content.title = FALSE; + } + } + } + + if('position' in opts && invalidOpt(opts.position)) { + opts.position = { my: opts.position, at: opts.position }; + } + + if('show' in opts && invalidOpt(opts.show)) { + opts.show = opts.show.jquery ? { target: opts.show } : + opts.show === TRUE ? { ready: TRUE } : { event: opts.show }; + } + + if('hide' in opts && invalidOpt(opts.hide)) { + opts.hide = opts.hide.jquery ? { target: opts.hide } : { event: opts.hide }; + } + + if('style' in opts && invalidOpt(opts.style)) { + opts.style = { classes: opts.style }; + } + + // Sanitize plugin options + $.each(PLUGINS, function() { + this.sanitize && this.sanitize(opts); + }); + + return opts; + } + + // Setup builtin .set() option checks + CHECKS = PROTOTYPE.checks = { + builtin: { + // Core checks + '^id$': function(obj, o, v, prev) { + var id = v === TRUE ? QTIP.nextid : v, + new_id = NAMESPACE + '-' + id; + + if(id !== FALSE && id.length > 0 && !$('#'+new_id).length) { + this._id = new_id; + + if(this.rendered) { + this.tooltip[0].id = this._id; + this.elements.content[0].id = this._id + '-content'; + this.elements.title[0].id = this._id + '-title'; + } + } + else { obj[o] = prev; } + }, + '^prerender': function(obj, o, v) { + v && !this.rendered && this.render(this.options.show.ready); + }, + + // Content checks + '^content.text$': function(obj, o, v) { + this._updateContent(v); + }, + '^content.attr$': function(obj, o, v, prev) { + if(this.options.content.text === this.target.attr(prev)) { + this._updateContent( this.target.attr(v) ); + } + }, + '^content.title$': function(obj, o, v) { + // Remove title if content is null + if(!v) { return this._removeTitle(); } + + // If title isn't already created, create it now and update + v && !this.elements.title && this._createTitle(); + this._updateTitle(v); + }, + '^content.button$': function(obj, o, v) { + this._updateButton(v); + }, + '^content.title.(text|button)$': function(obj, o, v) { + this.set('content.'+o, v); // Backwards title.text/button compat + }, + + // Position checks + '^position.(my|at)$': function(obj, o, v){ + 'string' === typeof v && (this.position[o] = obj[o] = new CORNER(v, o === 'at')); + }, + '^position.container$': function(obj, o, v){ + this.rendered && this.tooltip.appendTo(v); + }, + + // Show checks + '^show.ready$': function(obj, o, v) { + v && (!this.rendered && this.render(TRUE) || this.toggle(TRUE)); + }, + + // Style checks + '^style.classes$': function(obj, o, v, p) { + this.rendered && this.tooltip.removeClass(p).addClass(v); + }, + '^style.(width|height)': function(obj, o, v) { + this.rendered && this.tooltip.css(o, v); + }, + '^style.widget|content.title': function() { + this.rendered && this._setWidget(); + }, + '^style.def': function(obj, o, v) { + this.rendered && this.tooltip.toggleClass(CLASS_DEFAULT, !!v); + }, + + // Events check + '^events.(render|show|move|hide|focus|blur)$': function(obj, o, v) { + this.rendered && this.tooltip[($.isFunction(v) ? '' : 'un') + 'bind']('tooltip'+o, v); + }, + + // Properties which require event reassignment + '^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)': function() { + if(!this.rendered) { return; } + + // Set tracking flag + var posOptions = this.options.position; + this.tooltip.attr('tracking', posOptions.target === 'mouse' && posOptions.adjust.mouse); + + // Reassign events + this._unassignEvents(); + this._assignEvents(); + } + } + }; + + // Dot notation converter + function convertNotation(options, notation) { + var i = 0, obj, option = options, + + // Split notation into array + levels = notation.split('.'); + + // Loop through + while( option = option[ levels[i++] ] ) { + if(i < levels.length) { obj = option; } + } + + return [obj || options, levels.pop()]; + } + + PROTOTYPE.get = function(notation) { + if(this.destroyed) { return this; } + + var o = convertNotation(this.options, notation.toLowerCase()), + result = o[0][ o[1] ]; + + return result.precedance ? result.string() : result; + }; + + function setCallback(notation, args) { + var category, rule, match; + + for(category in this.checks) { + for(rule in this.checks[category]) { + if(match = (new RegExp(rule, 'i')).exec(notation)) { + args.push(match); + + if(category === 'builtin' || this.plugins[category]) { + this.checks[category][rule].apply( + this.plugins[category] || this, args + ); + } + } + } + } + } + + var rmove = /^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i, + rrender = /^prerender|show\.ready/i; + + PROTOTYPE.set = function(option, value) { + if(this.destroyed) { return this; } + + var rendered = this.rendered, + reposition = FALSE, + options = this.options, + checks = this.checks, + name; + + // Convert singular option/value pair into object form + if('string' === typeof option) { + name = option; option = {}; option[name] = value; + } + else { option = $.extend({}, option); } + + // Set all of the defined options to their new values + $.each(option, function(notation, value) { + if(rendered && rrender.test(notation)) { + delete option[notation]; return; + } + + // Set new obj value + var obj = convertNotation(options, notation.toLowerCase()), previous; + previous = obj[0][ obj[1] ]; + obj[0][ obj[1] ] = value && value.nodeType ? $(value) : value; + + // Also check if we need to reposition + reposition = rmove.test(notation) || reposition; + + // Set the new params for the callback + option[notation] = [obj[0], obj[1], value, previous]; + }); + + // Re-sanitize options + sanitizeOptions(options); + + /* + * Execute any valid callbacks for the set options + * Also set positioning flag so we don't get loads of redundant repositioning calls. + */ + this.positioning = TRUE; + $.each(option, $.proxy(setCallback, this)); + this.positioning = FALSE; + + // Update position if needed + if(this.rendered && this.tooltip[0].offsetWidth > 0 && reposition) { + this.reposition( options.position.target === 'mouse' ? NULL : this.cache.event ); + } + + return this; + }; + ;PROTOTYPE._update = function(content, element, reposition) { + var self = this, + cache = this.cache; + + // Make sure tooltip is rendered and content is defined. If not return + if(!this.rendered || !content) { return FALSE; } + + // Use function to parse content + if($.isFunction(content)) { + content = content.call(this.elements.target, cache.event, this) || ''; + } + + // Handle deferred content + if($.isFunction(content.then)) { + cache.waiting = TRUE; + return content.then(function(c) { + cache.waiting = FALSE; + return self._update(c, element); + }, NULL, function(e) { + return self._update(e, element); + }); + } + + // If content is null... return false + if(content === FALSE || (!content && content !== '')) { return FALSE; } + + // Append new content if its a DOM array and show it if hidden + if(content.jquery && content.length > 0) { + element.empty().append( + content.css({ display: 'block', visibility: 'visible' }) + ); + } + + // Content is a regular string, insert the new content + else { element.html(content); } + + // Wait for content to be loaded, and reposition + return this._waitForContent(element).then(function(images) { + if(self.rendered && self.tooltip[0].offsetWidth > 0) { + self.reposition(cache.event, !images.length); + } + }); + }; + + PROTOTYPE._waitForContent = function(element) { + var cache = this.cache; + + // Set flag + cache.waiting = TRUE; + + // If imagesLoaded is included, ensure images have loaded and return promise + return ( $.fn.imagesLoaded ? element.imagesLoaded() : $.Deferred().resolve([]) ) + .done(function() { cache.waiting = FALSE; }) + .promise(); + }; + + PROTOTYPE._updateContent = function(content, reposition) { + this._update(content, this.elements.content, reposition); + }; + + PROTOTYPE._updateTitle = function(content, reposition) { + if(this._update(content, this.elements.title, reposition) === FALSE) { + this._removeTitle(FALSE); + } + }; + + PROTOTYPE._createTitle = function() + { + var elements = this.elements, + id = this._id+'-title'; + + // Destroy previous title element, if present + if(elements.titlebar) { this._removeTitle(); } + + // Create title bar and title elements + elements.titlebar = $('
    ', { + 'class': NAMESPACE + '-titlebar ' + (this.options.style.widget ? createWidgetClass('header') : '') + }) + .append( + elements.title = $('
    ', { + 'id': id, + 'class': NAMESPACE + '-title', + 'aria-atomic': TRUE + }) + ) + .insertBefore(elements.content) + + // Button-specific events + .delegate('.qtip-close', 'mousedown keydown mouseup keyup mouseout', function(event) { + $(this).toggleClass('ui-state-active ui-state-focus', event.type.substr(-4) === 'down'); + }) + .delegate('.qtip-close', 'mouseover mouseout', function(event){ + $(this).toggleClass('ui-state-hover', event.type === 'mouseover'); + }); + + // Create button if enabled + if(this.options.content.button) { this._createButton(); } + }; + + PROTOTYPE._removeTitle = function(reposition) + { + var elements = this.elements; + + if(elements.title) { + elements.titlebar.remove(); + elements.titlebar = elements.title = elements.button = NULL; + + // Reposition if enabled + if(reposition !== FALSE) { this.reposition(); } + } + }; + ;PROTOTYPE._createPosClass = function(my) { + return NAMESPACE + '-pos-' + (my || this.options.position.my).abbrev(); + }; + + PROTOTYPE.reposition = function(event, effect) { + if(!this.rendered || this.positioning || this.destroyed) { return this; } + + // Set positioning flag + this.positioning = TRUE; + + var cache = this.cache, + tooltip = this.tooltip, + posOptions = this.options.position, + target = posOptions.target, + my = posOptions.my, + at = posOptions.at, + viewport = posOptions.viewport, + container = posOptions.container, + adjust = posOptions.adjust, + method = adjust.method.split(' '), + tooltipWidth = tooltip.outerWidth(FALSE), + tooltipHeight = tooltip.outerHeight(FALSE), + targetWidth = 0, + targetHeight = 0, + type = tooltip.css('position'), + position = { left: 0, top: 0 }, + visible = tooltip[0].offsetWidth > 0, + isScroll = event && event.type === 'scroll', + win = $(window), + doc = container[0].ownerDocument, + mouse = this.mouse, + pluginCalculations, offset, adjusted, newClass; + + // Check if absolute position was passed + if($.isArray(target) && target.length === 2) { + // Force left top and set position + at = { x: LEFT, y: TOP }; + position = { left: target[0], top: target[1] }; + } + + // Check if mouse was the target + else if(target === 'mouse') { + // Force left top to allow flipping + at = { x: LEFT, y: TOP }; + + // Use the mouse origin that caused the show event, if distance hiding is enabled + if((!adjust.mouse || this.options.hide.distance) && cache.origin && cache.origin.pageX) { + event = cache.origin; + } + + // Use cached event for resize/scroll events + else if(!event || (event && (event.type === 'resize' || event.type === 'scroll'))) { + event = cache.event; + } + + // Otherwise, use the cached mouse coordinates if available + else if(mouse && mouse.pageX) { + event = mouse; + } + + // Calculate body and container offset and take them into account below + if(type !== 'static') { position = container.offset(); } + if(doc.body.offsetWidth !== (window.innerWidth || doc.documentElement.clientWidth)) { + offset = $(document.body).offset(); + } + + // Use event coordinates for position + position = { + left: event.pageX - position.left + (offset && offset.left || 0), + top: event.pageY - position.top + (offset && offset.top || 0) + }; + + // Scroll events are a pain, some browsers + if(adjust.mouse && isScroll && mouse) { + position.left -= (mouse.scrollX || 0) - win.scrollLeft(); + position.top -= (mouse.scrollY || 0) - win.scrollTop(); + } + } + + // Target wasn't mouse or absolute... + else { + // Check if event targetting is being used + if(target === 'event') { + if(event && event.target && event.type !== 'scroll' && event.type !== 'resize') { + cache.target = $(event.target); + } + else if(!event.target) { + cache.target = this.elements.target; + } + } + else if(target !== 'event'){ + cache.target = $(target.jquery ? target : this.elements.target); + } + target = cache.target; + + // Parse the target into a jQuery object and make sure there's an element present + target = $(target).eq(0); + if(target.length === 0) { return this; } + + // Check if window or document is the target + else if(target[0] === document || target[0] === window) { + targetWidth = BROWSER.iOS ? window.innerWidth : target.width(); + targetHeight = BROWSER.iOS ? window.innerHeight : target.height(); + + if(target[0] === window) { + position = { + top: (viewport || target).scrollTop(), + left: (viewport || target).scrollLeft() + }; + } + } + + // Check if the target is an element + else if(PLUGINS.imagemap && target.is('area')) { + pluginCalculations = PLUGINS.imagemap(this, target, at, PLUGINS.viewport ? method : FALSE); + } + + // Check if the target is an SVG element + else if(PLUGINS.svg && target && target[0].ownerSVGElement) { + pluginCalculations = PLUGINS.svg(this, target, at, PLUGINS.viewport ? method : FALSE); + } + + // Otherwise use regular jQuery methods + else { + targetWidth = target.outerWidth(FALSE); + targetHeight = target.outerHeight(FALSE); + position = target.offset(); + } + + // Parse returned plugin values into proper variables + if(pluginCalculations) { + targetWidth = pluginCalculations.width; + targetHeight = pluginCalculations.height; + offset = pluginCalculations.offset; + position = pluginCalculations.position; + } + + // Adjust position to take into account offset parents + position = this.reposition.offset(target, position, container); + + // Adjust for position.fixed tooltips (and also iOS scroll bug in v3.2-4.0 & v4.3-4.3.2) + if((BROWSER.iOS > 3.1 && BROWSER.iOS < 4.1) || + (BROWSER.iOS >= 4.3 && BROWSER.iOS < 4.33) || + (!BROWSER.iOS && type === 'fixed') + ){ + position.left -= win.scrollLeft(); + position.top -= win.scrollTop(); + } + + // Adjust position relative to target + if(!pluginCalculations || (pluginCalculations && pluginCalculations.adjustable !== FALSE)) { + position.left += at.x === RIGHT ? targetWidth : at.x === CENTER ? targetWidth / 2 : 0; + position.top += at.y === BOTTOM ? targetHeight : at.y === CENTER ? targetHeight / 2 : 0; + } + } + + // Adjust position relative to tooltip + position.left += adjust.x + (my.x === RIGHT ? -tooltipWidth : my.x === CENTER ? -tooltipWidth / 2 : 0); + position.top += adjust.y + (my.y === BOTTOM ? -tooltipHeight : my.y === CENTER ? -tooltipHeight / 2 : 0); + + // Use viewport adjustment plugin if enabled + if(PLUGINS.viewport) { + adjusted = position.adjusted = PLUGINS.viewport( + this, position, posOptions, targetWidth, targetHeight, tooltipWidth, tooltipHeight + ); + + // Apply offsets supplied by positioning plugin (if used) + if(offset && adjusted.left) { position.left += offset.left; } + if(offset && adjusted.top) { position.top += offset.top; } + + // Apply any new 'my' position + if(adjusted.my) { this.position.my = adjusted.my; } + } + + // Viewport adjustment is disabled, set values to zero + else { position.adjusted = { left: 0, top: 0 }; } + + // Set tooltip position class if it's changed + if(cache.posClass !== (newClass = this._createPosClass(this.position.my))) { + tooltip.removeClass(cache.posClass).addClass( (cache.posClass = newClass) ); + } + + // tooltipmove event + if(!this._trigger('move', [position, viewport.elem || viewport], event)) { return this; } + delete position.adjusted; + + // If effect is disabled, target it mouse, no animation is defined or positioning gives NaN out, set CSS directly + if(effect === FALSE || !visible || isNaN(position.left) || isNaN(position.top) || target === 'mouse' || !$.isFunction(posOptions.effect)) { + tooltip.css(position); + } + + // Use custom function if provided + else if($.isFunction(posOptions.effect)) { + posOptions.effect.call(tooltip, this, $.extend({}, position)); + tooltip.queue(function(next) { + // Reset attributes to avoid cross-browser rendering bugs + $(this).css({ opacity: '', height: '' }); + if(BROWSER.ie) { this.style.removeAttribute('filter'); } + + next(); + }); + } + + // Set positioning flag + this.positioning = FALSE; + + return this; + }; + + // Custom (more correct for qTip!) offset calculator + PROTOTYPE.reposition.offset = function(elem, pos, container) { + if(!container[0]) { return pos; } + + var ownerDocument = $(elem[0].ownerDocument), + quirks = !!BROWSER.ie && document.compatMode !== 'CSS1Compat', + parent = container[0], + scrolled, position, parentOffset, overflow; + + function scroll(e, i) { + pos.left += i * e.scrollLeft(); + pos.top += i * e.scrollTop(); + } + + // Compensate for non-static containers offset + do { + if((position = $.css(parent, 'position')) !== 'static') { + if(position === 'fixed') { + parentOffset = parent.getBoundingClientRect(); + scroll(ownerDocument, -1); + } + else { + parentOffset = $(parent).position(); + parentOffset.left += (parseFloat($.css(parent, 'borderLeftWidth')) || 0); + parentOffset.top += (parseFloat($.css(parent, 'borderTopWidth')) || 0); + } + + pos.left -= parentOffset.left + (parseFloat($.css(parent, 'marginLeft')) || 0); + pos.top -= parentOffset.top + (parseFloat($.css(parent, 'marginTop')) || 0); + + // If this is the first parent element with an overflow of "scroll" or "auto", store it + if(!scrolled && (overflow = $.css(parent, 'overflow')) !== 'hidden' && overflow !== 'visible') { scrolled = $(parent); } + } + } + while((parent = parent.offsetParent)); + + // Compensate for containers scroll if it also has an offsetParent (or in IE quirks mode) + if(scrolled && (scrolled[0] !== ownerDocument[0] || quirks)) { + scroll(scrolled, 1); + } + + return pos; + }; + + // Corner class + var C = (CORNER = PROTOTYPE.reposition.Corner = function(corner, forceY) { + corner = ('' + corner).replace(/([A-Z])/, ' $1').replace(/middle/gi, CENTER).toLowerCase(); + this.x = (corner.match(/left|right/i) || corner.match(/center/) || ['inherit'])[0].toLowerCase(); + this.y = (corner.match(/top|bottom|center/i) || ['inherit'])[0].toLowerCase(); + this.forceY = !!forceY; + + var f = corner.charAt(0); + this.precedance = (f === 't' || f === 'b' ? Y : X); + }).prototype; + + C.invert = function(z, center) { + this[z] = this[z] === LEFT ? RIGHT : this[z] === RIGHT ? LEFT : center || this[z]; + }; + + C.string = function(join) { + var x = this.x, y = this.y; + + var result = x !== y ? + (x === 'center' || y !== 'center' && (this.precedance === Y || this.forceY) ? + [y,x] : [x,y] + ) : + [x]; + + return join !== false ? result.join(' ') : result; + }; + + C.abbrev = function() { + var result = this.string(false); + return result[0].charAt(0) + (result[1] && result[1].charAt(0) || ''); + }; + + C.clone = function() { + return new CORNER( this.string(), this.forceY ); + }; + + ; + PROTOTYPE.toggle = function(state, event) { + var cache = this.cache, + options = this.options, + tooltip = this.tooltip; + + // Try to prevent flickering when tooltip overlaps show element + if(event) { + if((/over|enter/).test(event.type) && cache.event && (/out|leave/).test(cache.event.type) && + options.show.target.add(event.target).length === options.show.target.length && + tooltip.has(event.relatedTarget).length) { + return this; + } + + // Cache event + cache.event = $.event.fix(event); + } + + // If we're currently waiting and we've just hidden... stop it + this.waiting && !state && (this.hiddenDuringWait = TRUE); + + // Render the tooltip if showing and it isn't already + if(!this.rendered) { return state ? this.render(1) : this; } + else if(this.destroyed || this.disabled) { return this; } + + var type = state ? 'show' : 'hide', + opts = this.options[type], + otherOpts = this.options[ !state ? 'show' : 'hide' ], + posOptions = this.options.position, + contentOptions = this.options.content, + width = this.tooltip.css('width'), + visible = this.tooltip.is(':visible'), + animate = state || opts.target.length === 1, + sameTarget = !event || opts.target.length < 2 || cache.target[0] === event.target, + identicalState, allow, showEvent, delay, after; + + // Detect state if valid one isn't provided + if((typeof state).search('boolean|number')) { state = !visible; } + + // Check if the tooltip is in an identical state to the new would-be state + identicalState = !tooltip.is(':animated') && visible === state && sameTarget; + + // Fire tooltip(show/hide) event and check if destroyed + allow = !identicalState ? !!this._trigger(type, [90]) : NULL; + + // Check to make sure the tooltip wasn't destroyed in the callback + if(this.destroyed) { return this; } + + // If the user didn't stop the method prematurely and we're showing the tooltip, focus it + if(allow !== FALSE && state) { this.focus(event); } + + // If the state hasn't changed or the user stopped it, return early + if(!allow || identicalState) { return this; } + + // Set ARIA hidden attribute + $.attr(tooltip[0], 'aria-hidden', !!!state); + + // Execute state specific properties + if(state) { + // Store show origin coordinates + this.mouse && (cache.origin = $.event.fix(this.mouse)); + + // Update tooltip content & title if it's a dynamic function + if($.isFunction(contentOptions.text)) { this._updateContent(contentOptions.text, FALSE); } + if($.isFunction(contentOptions.title)) { this._updateTitle(contentOptions.title, FALSE); } + + // Cache mousemove events for positioning purposes (if not already tracking) + if(!trackingBound && posOptions.target === 'mouse' && posOptions.adjust.mouse) { + $(document).bind('mousemove.'+NAMESPACE, this._storeMouse); + trackingBound = TRUE; + } + + // Update the tooltip position (set width first to prevent viewport/max-width issues) + if(!width) { tooltip.css('width', tooltip.outerWidth(FALSE)); } + this.reposition(event, arguments[2]); + if(!width) { tooltip.css('width', ''); } + + // Hide other tooltips if tooltip is solo + if(!!opts.solo) { + (typeof opts.solo === 'string' ? $(opts.solo) : $(SELECTOR, opts.solo)) + .not(tooltip).not(opts.target).qtip('hide', $.Event('tooltipsolo')); + } + } + else { + // Clear show timer if we're hiding + clearTimeout(this.timers.show); + + // Remove cached origin on hide + delete cache.origin; + + // Remove mouse tracking event if not needed (all tracking qTips are hidden) + if(trackingBound && !$(SELECTOR+'[tracking="true"]:visible', opts.solo).not(tooltip).length) { + $(document).unbind('mousemove.'+NAMESPACE); + trackingBound = FALSE; + } + + // Blur the tooltip + this.blur(event); + } + + // Define post-animation, state specific properties + after = $.proxy(function() { + if(state) { + // Prevent antialias from disappearing in IE by removing filter + if(BROWSER.ie) { tooltip[0].style.removeAttribute('filter'); } + + // Remove overflow setting to prevent tip bugs + tooltip.css('overflow', ''); + + // Autofocus elements if enabled + if('string' === typeof opts.autofocus) { + $(this.options.show.autofocus, tooltip).focus(); + } + + // If set, hide tooltip when inactive for delay period + this.options.show.target.trigger('qtip-'+this.id+'-inactive'); + } + else { + // Reset CSS states + tooltip.css({ + display: '', + visibility: '', + opacity: '', + left: '', + top: '' + }); + } + + // tooltipvisible/tooltiphidden events + this._trigger(state ? 'visible' : 'hidden'); + }, this); + + // If no effect type is supplied, use a simple toggle + if(opts.effect === FALSE || animate === FALSE) { + tooltip[ type ](); + after(); + } + + // Use custom function if provided + else if($.isFunction(opts.effect)) { + tooltip.stop(1, 1); + opts.effect.call(tooltip, this); + tooltip.queue('fx', function(n) { + after(); n(); + }); + } + + // Use basic fade function by default + else { tooltip.fadeTo(90, state ? 1 : 0, after); } + + // If inactive hide method is set, active it + if(state) { opts.target.trigger('qtip-'+this.id+'-inactive'); } + + return this; + }; + + PROTOTYPE.show = function(event) { return this.toggle(TRUE, event); }; + + PROTOTYPE.hide = function(event) { return this.toggle(FALSE, event); }; + ;PROTOTYPE.focus = function(event) { + if(!this.rendered || this.destroyed) { return this; } + + var qtips = $(SELECTOR), + tooltip = this.tooltip, + curIndex = parseInt(tooltip[0].style.zIndex, 10), + newIndex = QTIP.zindex + qtips.length, + focusedElem; + + // Only update the z-index if it has changed and tooltip is not already focused + if(!tooltip.hasClass(CLASS_FOCUS)) { + // tooltipfocus event + if(this._trigger('focus', [newIndex], event)) { + // Only update z-index's if they've changed + if(curIndex !== newIndex) { + // Reduce our z-index's and keep them properly ordered + qtips.each(function() { + if(this.style.zIndex > curIndex) { + this.style.zIndex = this.style.zIndex - 1; + } + }); + + // Fire blur event for focused tooltip + qtips.filter('.' + CLASS_FOCUS).qtip('blur', event); + } + + // Set the new z-index + tooltip.addClass(CLASS_FOCUS)[0].style.zIndex = newIndex; + } + } + + return this; + }; + + PROTOTYPE.blur = function(event) { + if(!this.rendered || this.destroyed) { return this; } + + // Set focused status to FALSE + this.tooltip.removeClass(CLASS_FOCUS); + + // tooltipblur event + this._trigger('blur', [ this.tooltip.css('zIndex') ], event); + + return this; + }; + ;PROTOTYPE.disable = function(state) { + if(this.destroyed) { return this; } + + // If 'toggle' is passed, toggle the current state + if(state === 'toggle') { + state = !(this.rendered ? this.tooltip.hasClass(CLASS_DISABLED) : this.disabled); + } + + // Disable if no state passed + else if('boolean' !== typeof state) { + state = TRUE; + } + + if(this.rendered) { + this.tooltip.toggleClass(CLASS_DISABLED, state) + .attr('aria-disabled', state); + } + + this.disabled = !!state; + + return this; + }; + + PROTOTYPE.enable = function() { return this.disable(FALSE); }; + ;PROTOTYPE._createButton = function() + { + var self = this, + elements = this.elements, + tooltip = elements.tooltip, + button = this.options.content.button, + isString = typeof button === 'string', + close = isString ? button : 'Close tooltip'; + + if(elements.button) { elements.button.remove(); } + + // Use custom button if one was supplied by user, else use default + if(button.jquery) { + elements.button = button; + } + else { + elements.button = $('', { + 'class': 'qtip-close ' + (this.options.style.widget ? '' : NAMESPACE+'-icon'), + 'title': close, + 'aria-label': close + }) + .prepend( + $('', { + 'class': 'ui-icon ui-icon-close', + 'html': '×' + }) + ); + } + + // Create button and setup attributes + elements.button.appendTo(elements.titlebar || tooltip) + .attr('role', 'button') + .click(function(event) { + if(!tooltip.hasClass(CLASS_DISABLED)) { self.hide(event); } + return FALSE; + }); + }; + + PROTOTYPE._updateButton = function(button) + { + // Make sure tooltip is rendered and if not, return + if(!this.rendered) { return FALSE; } + + var elem = this.elements.button; + if(button) { this._createButton(); } + else { elem.remove(); } + }; + ;// Widget class creator + function createWidgetClass(cls) { + return WIDGET.concat('').join(cls ? '-'+cls+' ' : ' '); + } + + // Widget class setter method + PROTOTYPE._setWidget = function() + { + var on = this.options.style.widget, + elements = this.elements, + tooltip = elements.tooltip, + disabled = tooltip.hasClass(CLASS_DISABLED); + + tooltip.removeClass(CLASS_DISABLED); + CLASS_DISABLED = on ? 'ui-state-disabled' : 'qtip-disabled'; + tooltip.toggleClass(CLASS_DISABLED, disabled); + + tooltip.toggleClass('ui-helper-reset '+createWidgetClass(), on).toggleClass(CLASS_DEFAULT, this.options.style.def && !on); + + if(elements.content) { + elements.content.toggleClass( createWidgetClass('content'), on); + } + if(elements.titlebar) { + elements.titlebar.toggleClass( createWidgetClass('header'), on); + } + if(elements.button) { + elements.button.toggleClass(NAMESPACE+'-icon', !on); + } + }; + ;function delay(callback, duration) { + // If tooltip has displayed, start hide timer + if(duration > 0) { + return setTimeout( + $.proxy(callback, this), duration + ); + } + else{ callback.call(this); } + } + + function showMethod(event) { + if(this.tooltip.hasClass(CLASS_DISABLED)) { return; } + + // Clear hide timers + clearTimeout(this.timers.show); + clearTimeout(this.timers.hide); + + // Start show timer + this.timers.show = delay.call(this, + function() { this.toggle(TRUE, event); }, + this.options.show.delay + ); + } + + function hideMethod(event) { + if(this.tooltip.hasClass(CLASS_DISABLED) || this.destroyed) { return; } + + // Check if new target was actually the tooltip element + var relatedTarget = $(event.relatedTarget), + ontoTooltip = relatedTarget.closest(SELECTOR)[0] === this.tooltip[0], + ontoTarget = relatedTarget[0] === this.options.show.target[0]; + + // Clear timers and stop animation queue + clearTimeout(this.timers.show); + clearTimeout(this.timers.hide); + + // Prevent hiding if tooltip is fixed and event target is the tooltip. + // Or if mouse positioning is enabled and cursor momentarily overlaps + if(this !== relatedTarget[0] && + (this.options.position.target === 'mouse' && ontoTooltip) || + (this.options.hide.fixed && ( + (/mouse(out|leave|move)/).test(event.type) && (ontoTooltip || ontoTarget)) + )) + { + try { + event.preventDefault(); + event.stopImmediatePropagation(); + } catch(e) {} + + return; + } + + // If tooltip has displayed, start hide timer + this.timers.hide = delay.call(this, + function() { this.toggle(FALSE, event); }, + this.options.hide.delay, + this + ); + } + + function inactiveMethod(event) { + if(this.tooltip.hasClass(CLASS_DISABLED) || !this.options.hide.inactive) { return; } + + // Clear timer + clearTimeout(this.timers.inactive); + + this.timers.inactive = delay.call(this, + function(){ this.hide(event); }, + this.options.hide.inactive + ); + } + + function repositionMethod(event) { + if(this.rendered && this.tooltip[0].offsetWidth > 0) { this.reposition(event); } + } + + // Store mouse coordinates + PROTOTYPE._storeMouse = function(event) { + (this.mouse = $.event.fix(event)).type = 'mousemove'; + return this; + }; + + // Bind events + PROTOTYPE._bind = function(targets, events, method, suffix, context) { + if(!targets || !method || !events.length) { return; } + var ns = '.' + this._id + (suffix ? '-'+suffix : ''); + $(targets).bind( + (events.split ? events : events.join(ns + ' ')) + ns, + $.proxy(method, context || this) + ); + return this; + }; + PROTOTYPE._unbind = function(targets, suffix) { + targets && $(targets).unbind('.' + this._id + (suffix ? '-'+suffix : '')); + return this; + }; + + // Global delegation helper + function delegate(selector, events, method) { + $(document.body).delegate(selector, + (events.split ? events : events.join('.'+NAMESPACE + ' ')) + '.'+NAMESPACE, + function() { + var api = QTIP.api[ $.attr(this, ATTR_ID) ]; + api && !api.disabled && method.apply(api, arguments); + } + ); + } + // Event trigger + PROTOTYPE._trigger = function(type, args, event) { + var callback = $.Event('tooltip'+type); + callback.originalEvent = (event && $.extend({}, event)) || this.cache.event || NULL; + + this.triggering = type; + this.tooltip.trigger(callback, [this].concat(args || [])); + this.triggering = FALSE; + + return !callback.isDefaultPrevented(); + }; + + PROTOTYPE._bindEvents = function(showEvents, hideEvents, showTargets, hideTargets, showMethod, hideMethod) { + // Get tasrgets that lye within both + var similarTargets = showTargets.filter( hideTargets ).add( hideTargets.filter(showTargets) ), + toggleEvents = []; + + // If hide and show targets are the same... + if(similarTargets.length) { + + // Filter identical show/hide events + $.each(hideEvents, function(i, type) { + var showIndex = $.inArray(type, showEvents); + + // Both events are identical, remove from both hide and show events + // and append to toggleEvents + showIndex > -1 && toggleEvents.push( showEvents.splice( showIndex, 1 )[0] ); + }); + + // Toggle events are special case of identical show/hide events, which happen in sequence + if(toggleEvents.length) { + // Bind toggle events to the similar targets + this._bind(similarTargets, toggleEvents, function(event) { + var state = this.rendered ? this.tooltip[0].offsetWidth > 0 : false; + (state ? hideMethod : showMethod).call(this, event); + }); + + // Remove the similar targets from the regular show/hide bindings + showTargets = showTargets.not(similarTargets); + hideTargets = hideTargets.not(similarTargets); + } + } + + // Apply show/hide/toggle events + this._bind(showTargets, showEvents, showMethod); + this._bind(hideTargets, hideEvents, hideMethod); + }; + + PROTOTYPE._assignInitialEvents = function(event) { + var options = this.options, + showTarget = options.show.target, + hideTarget = options.hide.target, + showEvents = options.show.event ? $.trim('' + options.show.event).split(' ') : [], + hideEvents = options.hide.event ? $.trim('' + options.hide.event).split(' ') : []; + + // Catch remove/removeqtip events on target element to destroy redundant tooltips + this._bind(this.elements.target, ['remove', 'removeqtip'], function(event) { + this.destroy(true); + }, 'destroy'); + + /* + * Make sure hoverIntent functions properly by using mouseleave as a hide event if + * mouseenter/mouseout is used for show.event, even if it isn't in the users options. + */ + if(/mouse(over|enter)/i.test(options.show.event) && !/mouse(out|leave)/i.test(options.hide.event)) { + hideEvents.push('mouseleave'); + } + + /* + * Also make sure initial mouse targetting works correctly by caching mousemove coords + * on show targets before the tooltip has rendered. Also set onTarget when triggered to + * keep mouse tracking working. + */ + this._bind(showTarget, 'mousemove', function(event) { + this._storeMouse(event); + this.cache.onTarget = TRUE; + }); + + // Define hoverIntent function + function hoverIntent(event) { + // Only continue if tooltip isn't disabled + if(this.disabled || this.destroyed) { return FALSE; } + + // Cache the event data + this.cache.event = event && $.event.fix(event); + this.cache.target = event && $(event.target); + + // Start the event sequence + clearTimeout(this.timers.show); + this.timers.show = delay.call(this, + function() { this.render(typeof event === 'object' || options.show.ready); }, + options.prerender ? 0 : options.show.delay + ); + } + + // Filter and bind events + this._bindEvents(showEvents, hideEvents, showTarget, hideTarget, hoverIntent, function() { + if(!this.timers) { return FALSE; } + clearTimeout(this.timers.show); + }); + + // Prerendering is enabled, create tooltip now + if(options.show.ready || options.prerender) { hoverIntent.call(this, event); } + }; + + // Event assignment method + PROTOTYPE._assignEvents = function() { + var self = this, + options = this.options, + posOptions = options.position, + + tooltip = this.tooltip, + showTarget = options.show.target, + hideTarget = options.hide.target, + containerTarget = posOptions.container, + viewportTarget = posOptions.viewport, + documentTarget = $(document), + bodyTarget = $(document.body), + windowTarget = $(window), + + showEvents = options.show.event ? $.trim('' + options.show.event).split(' ') : [], + hideEvents = options.hide.event ? $.trim('' + options.hide.event).split(' ') : []; + + + // Assign passed event callbacks + $.each(options.events, function(name, callback) { + self._bind(tooltip, name === 'toggle' ? ['tooltipshow','tooltiphide'] : ['tooltip'+name], callback, null, tooltip); + }); + + // Hide tooltips when leaving current window/frame (but not select/option elements) + if(/mouse(out|leave)/i.test(options.hide.event) && options.hide.leave === 'window') { + this._bind(documentTarget, ['mouseout', 'blur'], function(event) { + if(!/select|option/.test(event.target.nodeName) && !event.relatedTarget) { + this.hide(event); + } + }); + } + + // Enable hide.fixed by adding appropriate class + if(options.hide.fixed) { + hideTarget = hideTarget.add( tooltip.addClass(CLASS_FIXED) ); + } + + /* + * Make sure hoverIntent functions properly by using mouseleave to clear show timer if + * mouseenter/mouseout is used for show.event, even if it isn't in the users options. + */ + else if(/mouse(over|enter)/i.test(options.show.event)) { + this._bind(hideTarget, 'mouseleave', function() { + clearTimeout(this.timers.show); + }); + } + + // Hide tooltip on document mousedown if unfocus events are enabled + if(('' + options.hide.event).indexOf('unfocus') > -1) { + this._bind(containerTarget.closest('html'), ['mousedown', 'touchstart'], function(event) { + var elem = $(event.target), + enabled = this.rendered && !this.tooltip.hasClass(CLASS_DISABLED) && this.tooltip[0].offsetWidth > 0, + isAncestor = elem.parents(SELECTOR).filter(this.tooltip[0]).length > 0; + + if(elem[0] !== this.target[0] && elem[0] !== this.tooltip[0] && !isAncestor && + !this.target.has(elem[0]).length && enabled + ) { + this.hide(event); + } + }); + } + + // Check if the tooltip hides when inactive + if('number' === typeof options.hide.inactive) { + // Bind inactive method to show target(s) as a custom event + this._bind(showTarget, 'qtip-'+this.id+'-inactive', inactiveMethod, 'inactive'); + + // Define events which reset the 'inactive' event handler + this._bind(hideTarget.add(tooltip), QTIP.inactiveEvents, inactiveMethod); + } + + // Filter and bind events + this._bindEvents(showEvents, hideEvents, showTarget, hideTarget, showMethod, hideMethod); + + // Mouse movement bindings + this._bind(showTarget.add(tooltip), 'mousemove', function(event) { + // Check if the tooltip hides when mouse is moved a certain distance + if('number' === typeof options.hide.distance) { + var origin = this.cache.origin || {}, + limit = this.options.hide.distance, + abs = Math.abs; + + // Check if the movement has gone beyond the limit, and hide it if so + if(abs(event.pageX - origin.pageX) >= limit || abs(event.pageY - origin.pageY) >= limit) { + this.hide(event); + } + } + + // Cache mousemove coords on show targets + this._storeMouse(event); + }); + + // Mouse positioning events + if(posOptions.target === 'mouse') { + // If mouse adjustment is on... + if(posOptions.adjust.mouse) { + // Apply a mouseleave event so we don't get problems with overlapping + if(options.hide.event) { + // Track if we're on the target or not + this._bind(showTarget, ['mouseenter', 'mouseleave'], function(event) { + if(!this.cache) {return FALSE; } + this.cache.onTarget = event.type === 'mouseenter'; + }); + } + + // Update tooltip position on mousemove + this._bind(documentTarget, 'mousemove', function(event) { + // Update the tooltip position only if the tooltip is visible and adjustment is enabled + if(this.rendered && this.cache.onTarget && !this.tooltip.hasClass(CLASS_DISABLED) && this.tooltip[0].offsetWidth > 0) { + this.reposition(event); + } + }); + } + } + + // Adjust positions of the tooltip on window resize if enabled + if(posOptions.adjust.resize || viewportTarget.length) { + this._bind( $.event.special.resize ? viewportTarget : windowTarget, 'resize', repositionMethod ); + } + + // Adjust tooltip position on scroll of the window or viewport element if present + if(posOptions.adjust.scroll) { + this._bind( windowTarget.add(posOptions.container), 'scroll', repositionMethod ); + } + }; + + // Un-assignment method + PROTOTYPE._unassignEvents = function() { + var options = this.options, + showTargets = options.show.target, + hideTargets = options.hide.target, + targets = $.grep([ + this.elements.target[0], + this.rendered && this.tooltip[0], + options.position.container[0], + options.position.viewport[0], + options.position.container.closest('html')[0], // unfocus + window, + document + ], function(i) { + return typeof i === 'object'; + }); + + // Add show and hide targets if they're valid + if(showTargets && showTargets.toArray) { + targets = targets.concat(showTargets.toArray()); + } + if(hideTargets && hideTargets.toArray) { + targets = targets.concat(hideTargets.toArray()); + } + + // Unbind the events + this._unbind(targets) + ._unbind(targets, 'destroy') + ._unbind(targets, 'inactive'); + }; + + // Apply common event handlers using delegate (avoids excessive .bind calls!) + $(function() { + delegate(SELECTOR, ['mouseenter', 'mouseleave'], function(event) { + var state = event.type === 'mouseenter', + tooltip = $(event.currentTarget), + target = $(event.relatedTarget || event.target), + options = this.options; + + // On mouseenter... + if(state) { + // Focus the tooltip on mouseenter (z-index stacking) + this.focus(event); + + // Clear hide timer on tooltip hover to prevent it from closing + tooltip.hasClass(CLASS_FIXED) && !tooltip.hasClass(CLASS_DISABLED) && clearTimeout(this.timers.hide); + } + + // On mouseleave... + else { + // When mouse tracking is enabled, hide when we leave the tooltip and not onto the show target (if a hide event is set) + if(options.position.target === 'mouse' && options.position.adjust.mouse && + options.hide.event && options.show.target && !target.closest(options.show.target[0]).length) { + this.hide(event); + } + } + + // Add hover class + tooltip.toggleClass(CLASS_HOVER, state); + }); + + // Define events which reset the 'inactive' event handler + delegate('['+ATTR_ID+']', INACTIVE_EVENTS, inactiveMethod); + }); + ;// Initialization method + function init(elem, id, opts) { + var obj, posOptions, attr, config, title, + + // Setup element references + docBody = $(document.body), + + // Use document body instead of document element if needed + newTarget = elem[0] === document ? docBody : elem, + + // Grab metadata from element if plugin is present + metadata = (elem.metadata) ? elem.metadata(opts.metadata) : NULL, + + // If metadata type if HTML5, grab 'name' from the object instead, or use the regular data object otherwise + metadata5 = opts.metadata.type === 'html5' && metadata ? metadata[opts.metadata.name] : NULL, + + // Grab data from metadata.name (or data-qtipopts as fallback) using .data() method, + html5 = elem.data(opts.metadata.name || 'qtipopts'); + + // If we don't get an object returned attempt to parse it manualyl without parseJSON + try { html5 = typeof html5 === 'string' ? $.parseJSON(html5) : html5; } catch(e) {} + + // Merge in and sanitize metadata + config = $.extend(TRUE, {}, QTIP.defaults, opts, + typeof html5 === 'object' ? sanitizeOptions(html5) : NULL, + sanitizeOptions(metadata5 || metadata)); + + // Re-grab our positioning options now we've merged our metadata and set id to passed value + posOptions = config.position; + config.id = id; + + // Setup missing content if none is detected + if('boolean' === typeof config.content.text) { + attr = elem.attr(config.content.attr); + + // Grab from supplied attribute if available + if(config.content.attr !== FALSE && attr) { config.content.text = attr; } + + // No valid content was found, abort render + else { return FALSE; } + } + + // Setup target options + if(!posOptions.container.length) { posOptions.container = docBody; } + if(posOptions.target === FALSE) { posOptions.target = newTarget; } + if(config.show.target === FALSE) { config.show.target = newTarget; } + if(config.show.solo === TRUE) { config.show.solo = posOptions.container.closest('body'); } + if(config.hide.target === FALSE) { config.hide.target = newTarget; } + if(config.position.viewport === TRUE) { config.position.viewport = posOptions.container; } + + // Ensure we only use a single container + posOptions.container = posOptions.container.eq(0); + + // Convert position corner values into x and y strings + posOptions.at = new CORNER(posOptions.at, TRUE); + posOptions.my = new CORNER(posOptions.my); + + // Destroy previous tooltip if overwrite is enabled, or skip element if not + if(elem.data(NAMESPACE)) { + if(config.overwrite) { + elem.qtip('destroy', true); + } + else if(config.overwrite === FALSE) { + return FALSE; + } + } + + // Add has-qtip attribute + elem.attr(ATTR_HAS, id); + + // Remove title attribute and store it if present + if(config.suppress && (title = elem.attr('title'))) { + // Final attr call fixes event delegatiom and IE default tooltip showing problem + elem.removeAttr('title').attr(oldtitle, title).attr('title', ''); + } + + // Initialize the tooltip and add API reference + obj = new QTip(elem, config, id, !!attr); + elem.data(NAMESPACE, obj); + + return obj; + } + + // jQuery $.fn extension method + QTIP = $.fn.qtip = function(options, notation, newValue) + { + var command = ('' + options).toLowerCase(), // Parse command + returned = NULL, + args = $.makeArray(arguments).slice(1), + event = args[args.length - 1], + opts = this[0] ? $.data(this[0], NAMESPACE) : NULL; + + // Check for API request + if((!arguments.length && opts) || command === 'api') { + return opts; + } + + // Execute API command if present + else if('string' === typeof options) { + this.each(function() { + var api = $.data(this, NAMESPACE); + if(!api) { return TRUE; } + + // Cache the event if possible + if(event && event.timeStamp) { api.cache.event = event; } + + // Check for specific API commands + if(notation && (command === 'option' || command === 'options')) { + if(newValue !== undefined || $.isPlainObject(notation)) { + api.set(notation, newValue); + } + else { + returned = api.get(notation); + return FALSE; + } + } + + // Execute API command + else if(api[command]) { + api[command].apply(api, args); + } + }); + + return returned !== NULL ? returned : this; + } + + // No API commands. validate provided options and setup qTips + else if('object' === typeof options || !arguments.length) { + // Sanitize options first + opts = sanitizeOptions($.extend(TRUE, {}, options)); + + return this.each(function(i) { + var api, id; + + // Find next available ID, or use custom ID if provided + id = $.isArray(opts.id) ? opts.id[i] : opts.id; + id = !id || id === FALSE || id.length < 1 || QTIP.api[id] ? QTIP.nextid++ : id; + + // Initialize the qTip and re-grab newly sanitized options + api = init($(this), id, opts); + if(api === FALSE) { return TRUE; } + else { QTIP.api[id] = api; } + + // Initialize plugins + $.each(PLUGINS, function() { + if(this.initialize === 'initialize') { this(api); } + }); + + // Assign initial pre-render events + api._assignInitialEvents(event); + }); + } + }; + + // Expose class + $.qtip = QTip; + + // Populated in render method + QTIP.api = {}; + ;$.each({ + /* Allow other plugins to successfully retrieve the title of an element with a qTip applied */ + attr: function(attr, val) { + if(this.length) { + var self = this[0], + title = 'title', + api = $.data(self, 'qtip'); + + if(attr === title && api && 'object' === typeof api && api.options.suppress) { + if(arguments.length < 2) { + return $.attr(self, oldtitle); + } + + // If qTip is rendered and title was originally used as content, update it + if(api && api.options.content.attr === title && api.cache.attr) { + api.set('content.text', val); + } + + // Use the regular attr method to set, then cache the result + return this.attr(oldtitle, val); + } + } + + return $.fn['attr'+replaceSuffix].apply(this, arguments); + }, + + /* Allow clone to correctly retrieve cached title attributes */ + clone: function(keepData) { + var titles = $([]), title = 'title', + + // Clone our element using the real clone method + elems = $.fn['clone'+replaceSuffix].apply(this, arguments); + + // Grab all elements with an oldtitle set, and change it to regular title attribute, if keepData is false + if(!keepData) { + elems.filter('['+oldtitle+']').attr('title', function() { + return $.attr(this, oldtitle); + }) + .removeAttr(oldtitle); + } + + return elems; + } + }, function(name, func) { + if(!func || $.fn[name+replaceSuffix]) { return TRUE; } + + var old = $.fn[name+replaceSuffix] = $.fn[name]; + $.fn[name] = function() { + return func.apply(this, arguments) || old.apply(this, arguments); + }; + }); + + /* Fire off 'removeqtip' handler in $.cleanData if jQuery UI not present (it already does similar). + * This snippet is taken directly from jQuery UI source code found here: + * http://code.jquery.com/ui/jquery-ui-git.js + */ + if(!$.ui) { + $['cleanData'+replaceSuffix] = $.cleanData; + $.cleanData = function( elems ) { + for(var i = 0, elem; (elem = $( elems[i] )).length; i++) { + if(elem.attr(ATTR_HAS)) { + try { elem.triggerHandler('removeqtip'); } + catch( e ) {} + } + } + $['cleanData'+replaceSuffix].apply(this, arguments); + }; + } + ;// qTip version + QTIP.version = '2.2.1'; + + // Base ID for all qTips + QTIP.nextid = 0; + + // Inactive events array + QTIP.inactiveEvents = INACTIVE_EVENTS; + + // Base z-index for all qTips + QTIP.zindex = 15000; + + // Define configuration defaults + QTIP.defaults = { + prerender: FALSE, + id: FALSE, + overwrite: TRUE, + suppress: TRUE, + content: { + text: TRUE, + attr: 'title', + title: FALSE, + button: FALSE + }, + position: { + my: 'top left', + at: 'bottom right', + target: FALSE, + container: FALSE, + viewport: FALSE, + adjust: { + x: 0, y: 0, + mouse: TRUE, + scroll: TRUE, + resize: TRUE, + method: 'flipinvert flipinvert' + }, + effect: function(api, pos, viewport) { + $(this).animate(pos, { + duration: 200, + queue: FALSE + }); + } + }, + show: { + target: FALSE, + event: 'mouseenter', + effect: TRUE, + delay: 90, + solo: FALSE, + ready: FALSE, + autofocus: FALSE + }, + hide: { + target: FALSE, + event: 'mouseleave', + effect: TRUE, + delay: 0, + fixed: FALSE, + inactive: FALSE, + leave: 'window', + distance: FALSE + }, + style: { + classes: '', + widget: FALSE, + width: FALSE, + height: FALSE, + def: TRUE + }, + events: { + render: NULL, + move: NULL, + show: NULL, + hide: NULL, + toggle: NULL, + visible: NULL, + hidden: NULL, + focus: NULL, + blur: NULL + } + }; + ;var TIP, + + // .bind()/.on() namespace + TIPNS = '.qtip-tip', + + // Common CSS strings + MARGIN = 'margin', + BORDER = 'border', + COLOR = 'color', + BG_COLOR = 'background-color', + TRANSPARENT = 'transparent', + IMPORTANT = ' !important', + + // Check if the browser supports elements + HASCANVAS = !!document.createElement('canvas').getContext, + + // Invalid colour values used in parseColours() + INVALID = /rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i; + + // Camel-case method, taken from jQuery source + // http://code.jquery.com/jquery-1.8.0.js + function camel(s) { return s.charAt(0).toUpperCase() + s.slice(1); } + + /* + * Modified from Modernizr's testPropsAll() + * http://modernizr.com/downloads/modernizr-latest.js + */ + var cssProps = {}, cssPrefixes = ["Webkit", "O", "Moz", "ms"]; + function vendorCss(elem, prop) { + var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1), + props = (prop + ' ' + cssPrefixes.join(ucProp + ' ') + ucProp).split(' '), + cur, val, i = 0; + + // If the property has already been mapped... + if(cssProps[prop]) { return elem.css(cssProps[prop]); } + + while((cur = props[i++])) { + if((val = elem.css(cur)) !== undefined) { + return cssProps[prop] = cur, val; + } + } + } + + // Parse a given elements CSS property into an int + function intCss(elem, prop) { + return Math.ceil(parseFloat(vendorCss(elem, prop))); + } + + + // VML creation (for IE only) + if(!HASCANVAS) { + var createVML = function(tag, props, style) { + return ''; + }; + } + + // Canvas only definitions + else { + var PIXEL_RATIO = window.devicePixelRatio || 1, + BACKING_STORE_RATIO = (function() { + var context = document.createElement('canvas').getContext('2d'); + return context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || + context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || 1; + }()), + SCALE = PIXEL_RATIO / BACKING_STORE_RATIO; + } + + + function Tip(qtip, options) { + this._ns = 'tip'; + this.options = options; + this.offset = options.offset; + this.size = [ options.width, options.height ]; + + // Initialize + this.init( (this.qtip = qtip) ); + } + + $.extend(Tip.prototype, { + init: function(qtip) { + var context, tip; + + // Create tip element and prepend to the tooltip + tip = this.element = qtip.elements.tip = $('
    ', { 'class': NAMESPACE+'-tip' }).prependTo(qtip.tooltip); + + // Create tip drawing element(s) + if(HASCANVAS) { + // save() as soon as we create the canvas element so FF2 doesn't bork on our first restore()! + context = $('').appendTo(this.element)[0].getContext('2d'); + + // Setup constant parameters + context.lineJoin = 'miter'; + context.miterLimit = 100000; + context.save(); + } + else { + context = createVML('shape', 'coordorigin="0,0"', 'position:absolute;'); + this.element.html(context + context); + + // Prevent mousing down on the tip since it causes problems with .live() handling in IE due to VML + qtip._bind( $('*', tip).add(tip), ['click', 'mousedown'], function(event) { event.stopPropagation(); }, this._ns); + } + + // Bind update events + qtip._bind(qtip.tooltip, 'tooltipmove', this.reposition, this._ns, this); + + // Create it + this.create(); + }, + + _swapDimensions: function() { + this.size[0] = this.options.height; + this.size[1] = this.options.width; + }, + _resetDimensions: function() { + this.size[0] = this.options.width; + this.size[1] = this.options.height; + }, + + _useTitle: function(corner) { + var titlebar = this.qtip.elements.titlebar; + return titlebar && ( + corner.y === TOP || (corner.y === CENTER && this.element.position().top + (this.size[1] / 2) + this.options.offset < titlebar.outerHeight(TRUE)) + ); + }, + + _parseCorner: function(corner) { + var my = this.qtip.options.position.my; + + // Detect corner and mimic properties + if(corner === FALSE || my === FALSE) { + corner = FALSE; + } + else if(corner === TRUE) { + corner = new CORNER( my.string() ); + } + else if(!corner.string) { + corner = new CORNER(corner); + corner.fixed = TRUE; + } + + return corner; + }, + + _parseWidth: function(corner, side, use) { + var elements = this.qtip.elements, + prop = BORDER + camel(side) + 'Width'; + + return (use ? intCss(use, prop) : ( + intCss(elements.content, prop) || + intCss(this._useTitle(corner) && elements.titlebar || elements.content, prop) || + intCss(elements.tooltip, prop) + )) || 0; + }, + + _parseRadius: function(corner) { + var elements = this.qtip.elements, + prop = BORDER + camel(corner.y) + camel(corner.x) + 'Radius'; + + return BROWSER.ie < 9 ? 0 : + intCss(this._useTitle(corner) && elements.titlebar || elements.content, prop) || + intCss(elements.tooltip, prop) || 0; + }, + + _invalidColour: function(elem, prop, compare) { + var val = elem.css(prop); + return !val || (compare && val === elem.css(compare)) || INVALID.test(val) ? FALSE : val; + }, + + _parseColours: function(corner) { + var elements = this.qtip.elements, + tip = this.element.css('cssText', ''), + borderSide = BORDER + camel(corner[ corner.precedance ]) + camel(COLOR), + colorElem = this._useTitle(corner) && elements.titlebar || elements.content, + css = this._invalidColour, color = []; + + // Attempt to detect the background colour from various elements, left-to-right precedance + color[0] = css(tip, BG_COLOR) || css(colorElem, BG_COLOR) || css(elements.content, BG_COLOR) || + css(elements.tooltip, BG_COLOR) || tip.css(BG_COLOR); + + // Attempt to detect the correct border side colour from various elements, left-to-right precedance + color[1] = css(tip, borderSide, COLOR) || css(colorElem, borderSide, COLOR) || + css(elements.content, borderSide, COLOR) || css(elements.tooltip, borderSide, COLOR) || elements.tooltip.css(borderSide); + + // Reset background and border colours + $('*', tip).add(tip).css('cssText', BG_COLOR+':'+TRANSPARENT+IMPORTANT+';'+BORDER+':0'+IMPORTANT+';'); + + return color; + }, + + _calculateSize: function(corner) { + var y = corner.precedance === Y, + width = this.options['width'], + height = this.options['height'], + isCenter = corner.abbrev() === 'c', + base = (y ? width: height) * (isCenter ? 0.5 : 1), + pow = Math.pow, + round = Math.round, + bigHyp, ratio, result, + + smallHyp = Math.sqrt( pow(base, 2) + pow(height, 2) ), + hyp = [ (this.border / base) * smallHyp, (this.border / height) * smallHyp ]; + + hyp[2] = Math.sqrt( pow(hyp[0], 2) - pow(this.border, 2) ); + hyp[3] = Math.sqrt( pow(hyp[1], 2) - pow(this.border, 2) ); + + bigHyp = smallHyp + hyp[2] + hyp[3] + (isCenter ? 0 : hyp[0]); + ratio = bigHyp / smallHyp; + + result = [ round(ratio * width), round(ratio * height) ]; + return y ? result : result.reverse(); + }, + + // Tip coordinates calculator + _calculateTip: function(corner, size, scale) { + scale = scale || 1; + size = size || this.size; + + var width = size[0] * scale, + height = size[1] * scale, + width2 = Math.ceil(width / 2), height2 = Math.ceil(height / 2), + + // Define tip coordinates in terms of height and width values + tips = { + br: [0,0, width,height, width,0], + bl: [0,0, width,0, 0,height], + tr: [0,height, width,0, width,height], + tl: [0,0, 0,height, width,height], + tc: [0,height, width2,0, width,height], + bc: [0,0, width,0, width2,height], + rc: [0,0, width,height2, 0,height], + lc: [width,0, width,height, 0,height2] + }; + + // Set common side shapes + tips.lt = tips.br; tips.rt = tips.bl; + tips.lb = tips.tr; tips.rb = tips.tl; + + return tips[ corner.abbrev() ]; + }, + + // Tip coordinates drawer (canvas) + _drawCoords: function(context, coords) { + context.beginPath(); + context.moveTo(coords[0], coords[1]); + context.lineTo(coords[2], coords[3]); + context.lineTo(coords[4], coords[5]); + context.closePath(); + }, + + create: function() { + // Determine tip corner + var c = this.corner = (HASCANVAS || BROWSER.ie) && this._parseCorner(this.options.corner); + + // If we have a tip corner... + if( (this.enabled = !!this.corner && this.corner.abbrev() !== 'c') ) { + // Cache it + this.qtip.cache.corner = c.clone(); + + // Create it + this.update(); + } + + // Toggle tip element + this.element.toggle(this.enabled); + + return this.corner; + }, + + update: function(corner, position) { + if(!this.enabled) { return this; } + + var elements = this.qtip.elements, + tip = this.element, + inner = tip.children(), + options = this.options, + curSize = this.size, + mimic = options.mimic, + round = Math.round, + color, precedance, context, + coords, bigCoords, translate, newSize, border, BACKING_STORE_RATIO; + + // Re-determine tip if not already set + if(!corner) { corner = this.qtip.cache.corner || this.corner; } + + // Use corner property if we detect an invalid mimic value + if(mimic === FALSE) { mimic = corner; } + + // Otherwise inherit mimic properties from the corner object as necessary + else { + mimic = new CORNER(mimic); + mimic.precedance = corner.precedance; + + if(mimic.x === 'inherit') { mimic.x = corner.x; } + else if(mimic.y === 'inherit') { mimic.y = corner.y; } + else if(mimic.x === mimic.y) { + mimic[ corner.precedance ] = corner[ corner.precedance ]; + } + } + precedance = mimic.precedance; + + // Ensure the tip width.height are relative to the tip position + if(corner.precedance === X) { this._swapDimensions(); } + else { this._resetDimensions(); } + + // Update our colours + color = this.color = this._parseColours(corner); + + // Detect border width, taking into account colours + if(color[1] !== TRANSPARENT) { + // Grab border width + border = this.border = this._parseWidth(corner, corner[corner.precedance]); + + // If border width isn't zero, use border color as fill if it's not invalid (1.0 style tips) + if(options.border && border < 1 && !INVALID.test(color[1])) { color[0] = color[1]; } + + // Set border width (use detected border width if options.border is true) + this.border = border = options.border !== TRUE ? options.border : border; + } + + // Border colour was invalid, set border to zero + else { this.border = border = 0; } + + // Determine tip size + newSize = this.size = this._calculateSize(corner); + tip.css({ + width: newSize[0], + height: newSize[1], + lineHeight: newSize[1]+'px' + }); + + // Calculate tip translation + if(corner.precedance === Y) { + translate = [ + round(mimic.x === LEFT ? border : mimic.x === RIGHT ? newSize[0] - curSize[0] - border : (newSize[0] - curSize[0]) / 2), + round(mimic.y === TOP ? newSize[1] - curSize[1] : 0) + ]; + } + else { + translate = [ + round(mimic.x === LEFT ? newSize[0] - curSize[0] : 0), + round(mimic.y === TOP ? border : mimic.y === BOTTOM ? newSize[1] - curSize[1] - border : (newSize[1] - curSize[1]) / 2) + ]; + } + + // Canvas drawing implementation + if(HASCANVAS) { + // Grab canvas context and clear/save it + context = inner[0].getContext('2d'); + context.restore(); context.save(); + context.clearRect(0,0,6000,6000); + + // Calculate coordinates + coords = this._calculateTip(mimic, curSize, SCALE); + bigCoords = this._calculateTip(mimic, this.size, SCALE); + + // Set the canvas size using calculated size + inner.attr(WIDTH, newSize[0] * SCALE).attr(HEIGHT, newSize[1] * SCALE); + inner.css(WIDTH, newSize[0]).css(HEIGHT, newSize[1]); + + // Draw the outer-stroke tip + this._drawCoords(context, bigCoords); + context.fillStyle = color[1]; + context.fill(); + + // Draw the actual tip + context.translate(translate[0] * SCALE, translate[1] * SCALE); + this._drawCoords(context, coords); + context.fillStyle = color[0]; + context.fill(); + } + + // VML (IE Proprietary implementation) + else { + // Calculate coordinates + coords = this._calculateTip(mimic); + + // Setup coordinates string + coords = 'm' + coords[0] + ',' + coords[1] + ' l' + coords[2] + + ',' + coords[3] + ' ' + coords[4] + ',' + coords[5] + ' xe'; + + // Setup VML-specific offset for pixel-perfection + translate[2] = border && /^(r|b)/i.test(corner.string()) ? + BROWSER.ie === 8 ? 2 : 1 : 0; + + // Set initial CSS + inner.css({ + coordsize: (newSize[0]+border) + ' ' + (newSize[1]+border), + antialias: ''+(mimic.string().indexOf(CENTER) > -1), + left: translate[0] - (translate[2] * Number(precedance === X)), + top: translate[1] - (translate[2] * Number(precedance === Y)), + width: newSize[0] + border, + height: newSize[1] + border + }) + .each(function(i) { + var $this = $(this); + + // Set shape specific attributes + $this[ $this.prop ? 'prop' : 'attr' ]({ + coordsize: (newSize[0]+border) + ' ' + (newSize[1]+border), + path: coords, + fillcolor: color[0], + filled: !!i, + stroked: !i + }) + .toggle(!!(border || i)); + + // Check if border is enabled and add stroke element + !i && $this.html( createVML( + 'stroke', 'weight="'+(border*2)+'px" color="'+color[1]+'" miterlimit="1000" joinstyle="miter"' + ) ); + }); + } + + // Opera bug #357 - Incorrect tip position + // https://github.com/Craga89/qTip2/issues/367 + window.opera && setTimeout(function() { + elements.tip.css({ + display: 'inline-block', + visibility: 'visible' + }); + }, 1); + + // Position if needed + if(position !== FALSE) { this.calculate(corner, newSize); } + }, + + calculate: function(corner, size) { + if(!this.enabled) { return FALSE; } + + var self = this, + elements = this.qtip.elements, + tip = this.element, + userOffset = this.options.offset, + isWidget = elements.tooltip.hasClass('ui-widget'), + position = { }, + precedance, corners; + + // Inherit corner if not provided + corner = corner || this.corner; + precedance = corner.precedance; + + // Determine which tip dimension to use for adjustment + size = size || this._calculateSize(corner); + + // Setup corners and offset array + corners = [ corner.x, corner.y ]; + if(precedance === X) { corners.reverse(); } + + // Calculate tip position + $.each(corners, function(i, side) { + var b, bc, br; + + if(side === CENTER) { + b = precedance === Y ? LEFT : TOP; + position[ b ] = '50%'; + position[MARGIN+'-' + b] = -Math.round(size[ precedance === Y ? 0 : 1 ] / 2) + userOffset; + } + else { + b = self._parseWidth(corner, side, elements.tooltip); + bc = self._parseWidth(corner, side, elements.content); + br = self._parseRadius(corner); + + position[ side ] = Math.max(-self.border, i ? bc : (userOffset + (br > b ? br : -b))); + } + }); + + // Adjust for tip size + position[ corner[precedance] ] -= size[ precedance === X ? 0 : 1 ]; + + // Set and return new position + tip.css({ margin: '', top: '', bottom: '', left: '', right: '' }).css(position); + return position; + }, + + reposition: function(event, api, pos, viewport) { + if(!this.enabled) { return; } + + var cache = api.cache, + newCorner = this.corner.clone(), + adjust = pos.adjusted, + method = api.options.position.adjust.method.split(' '), + horizontal = method[0], + vertical = method[1] || method[0], + shift = { left: FALSE, top: FALSE, x: 0, y: 0 }, + offset, css = {}, props; + + function shiftflip(direction, precedance, popposite, side, opposite) { + // Horizontal - Shift or flip method + if(direction === SHIFT && newCorner.precedance === precedance && adjust[side] && newCorner[popposite] !== CENTER) { + newCorner.precedance = newCorner.precedance === X ? Y : X; + } + else if(direction !== SHIFT && adjust[side]){ + newCorner[precedance] = newCorner[precedance] === CENTER ? + (adjust[side] > 0 ? side : opposite) : (newCorner[precedance] === side ? opposite : side); + } + } + + function shiftonly(xy, side, opposite) { + if(newCorner[xy] === CENTER) { + css[MARGIN+'-'+side] = shift[xy] = offset[MARGIN+'-'+side] - adjust[side]; + } + else { + props = offset[opposite] !== undefined ? + [ adjust[side], -offset[side] ] : [ -adjust[side], offset[side] ]; + + if( (shift[xy] = Math.max(props[0], props[1])) > props[0] ) { + pos[side] -= adjust[side]; + shift[side] = FALSE; + } + + css[ offset[opposite] !== undefined ? opposite : side ] = shift[xy]; + } + } + + // If our tip position isn't fixed e.g. doesn't adjust with viewport... + if(this.corner.fixed !== TRUE) { + // Perform shift/flip adjustments + shiftflip(horizontal, X, Y, LEFT, RIGHT); + shiftflip(vertical, Y, X, TOP, BOTTOM); + + // Update and redraw the tip if needed (check cached details of last drawn tip) + if(newCorner.string() !== cache.corner.string() || cache.cornerTop !== adjust.top || cache.cornerLeft !== adjust.left) { + this.update(newCorner, FALSE); + } + } + + // Setup tip offset properties + offset = this.calculate(newCorner); + + // Readjust offset object to make it left/top + if(offset.right !== undefined) { offset.left = -offset.right; } + if(offset.bottom !== undefined) { offset.top = -offset.bottom; } + offset.user = this.offset; + + // Perform shift adjustments + if(shift.left = (horizontal === SHIFT && !!adjust.left)) { shiftonly(X, LEFT, RIGHT); } + if(shift.top = (vertical === SHIFT && !!adjust.top)) { shiftonly(Y, TOP, BOTTOM); } + + /* + * If the tip is adjusted in both dimensions, or in a + * direction that would cause it to be anywhere but the + * outer border, hide it! + */ + this.element.css(css).toggle( + !((shift.x && shift.y) || (newCorner.x === CENTER && shift.y) || (newCorner.y === CENTER && shift.x)) + ); + + // Adjust position to accomodate tip dimensions + pos.left -= offset.left.charAt ? offset.user : + horizontal !== SHIFT || shift.top || !shift.left && !shift.top ? offset.left + this.border : 0; + pos.top -= offset.top.charAt ? offset.user : + vertical !== SHIFT || shift.left || !shift.left && !shift.top ? offset.top + this.border : 0; + + // Cache details + cache.cornerLeft = adjust.left; cache.cornerTop = adjust.top; + cache.corner = newCorner.clone(); + }, + + destroy: function() { + // Unbind events + this.qtip._unbind(this.qtip.tooltip, this._ns); + + // Remove the tip element(s) + if(this.qtip.elements.tip) { + this.qtip.elements.tip.find('*') + .remove().end().remove(); + } + } + }); + + TIP = PLUGINS.tip = function(api) { + return new Tip(api, api.options.style.tip); + }; + + // Initialize tip on render + TIP.initialize = 'render'; + + // Setup plugin sanitization options + TIP.sanitize = function(options) { + if(options.style && 'tip' in options.style) { + var opts = options.style.tip; + if(typeof opts !== 'object') { opts = options.style.tip = { corner: opts }; } + if(!(/string|boolean/i).test(typeof opts.corner)) { opts.corner = TRUE; } + } + }; + + // Add new option checks for the plugin + CHECKS.tip = { + '^position.my|style.tip.(corner|mimic|border)$': function() { + // Make sure a tip can be drawn + this.create(); + + // Reposition the tooltip + this.qtip.reposition(); + }, + '^style.tip.(height|width)$': function(obj) { + // Re-set dimensions and redraw the tip + this.size = [ obj.width, obj.height ]; + this.update(); + + // Reposition the tooltip + this.qtip.reposition(); + }, + '^content.title|style.(classes|widget)$': function() { + this.update(); + } + }; + + // Extend original qTip defaults + $.extend(TRUE, QTIP.defaults, { + style: { + tip: { + corner: TRUE, + mimic: FALSE, + width: 6, + height: 6, + border: TRUE, + offset: 0 + } + } + }); + ;var MODAL, OVERLAY, + MODALCLASS = 'qtip-modal', + MODALSELECTOR = '.'+MODALCLASS; + + OVERLAY = function() + { + var self = this, + focusableElems = {}, + current, onLast, + prevState, elem; + + // Modified code from jQuery UI 1.10.0 source + // http://code.jquery.com/ui/1.10.0/jquery-ui.js + function focusable(element) { + // Use the defined focusable checker when possible + if($.expr[':'].focusable) { return $.expr[':'].focusable; } + + var isTabIndexNotNaN = !isNaN($.attr(element, 'tabindex')), + nodeName = element.nodeName && element.nodeName.toLowerCase(), + map, mapName, img; + + if('area' === nodeName) { + map = element.parentNode; + mapName = map.name; + if(!element.href || !mapName || map.nodeName.toLowerCase() !== 'map') { + return false; + } + img = $('img[usemap=#' + mapName + ']')[0]; + return !!img && img.is(':visible'); + } + return (/input|select|textarea|button|object/.test( nodeName ) ? + !element.disabled : + 'a' === nodeName ? + element.href || isTabIndexNotNaN : + isTabIndexNotNaN + ); + } + + // Focus inputs using cached focusable elements (see update()) + function focusInputs(blurElems) { + // Blurring body element in IE causes window.open windows to unfocus! + if(focusableElems.length < 1 && blurElems.length) { blurElems.not('body').blur(); } + + // Focus the inputs + else { focusableElems.first().focus(); } + } + + // Steal focus from elements outside tooltip + function stealFocus(event) { + if(!elem.is(':visible')) { return; } + + var target = $(event.target), + tooltip = current.tooltip, + container = target.closest(SELECTOR), + targetOnTop; + + // Determine if input container target is above this + targetOnTop = container.length < 1 ? FALSE : + (parseInt(container[0].style.zIndex, 10) > parseInt(tooltip[0].style.zIndex, 10)); + + // If we're showing a modal, but focus has landed on an input below + // this modal, divert focus to the first visible input in this modal + // or if we can't find one... the tooltip itself + if(!targetOnTop && target.closest(SELECTOR)[0] !== tooltip[0]) { + focusInputs(target); + } + + // Detect when we leave the last focusable element... + onLast = event.target === focusableElems[focusableElems.length - 1]; + } + + $.extend(self, { + init: function() { + // Create document overlay + elem = self.elem = $('
    ', { + id: 'qtip-overlay', + html: '
    ', + mousedown: function() { return FALSE; } + }) + .hide(); + + // Make sure we can't focus anything outside the tooltip + $(document.body).bind('focusin'+MODALSELECTOR, stealFocus); + + // Apply keyboard "Escape key" close handler + $(document).bind('keydown'+MODALSELECTOR, function(event) { + if(current && current.options.show.modal.escape && event.keyCode === 27) { + current.hide(event); + } + }); + + // Apply click handler for blur option + elem.bind('click'+MODALSELECTOR, function(event) { + if(current && current.options.show.modal.blur) { + current.hide(event); + } + }); + + return self; + }, + + update: function(api) { + // Update current API reference + current = api; + + // Update focusable elements if enabled + if(api.options.show.modal.stealfocus !== FALSE) { + focusableElems = api.tooltip.find('*').filter(function() { + return focusable(this); + }); + } + else { focusableElems = []; } + }, + + toggle: function(api, state, duration) { + var docBody = $(document.body), + tooltip = api.tooltip, + options = api.options.show.modal, + effect = options.effect, + type = state ? 'show': 'hide', + visible = elem.is(':visible'), + visibleModals = $(MODALSELECTOR).filter(':visible:not(:animated)').not(tooltip), + zindex; + + // Set active tooltip API reference + self.update(api); + + // If the modal can steal the focus... + // Blur the current item and focus anything in the modal we an + if(state && options.stealfocus !== FALSE) { + focusInputs( $(':focus') ); + } + + // Toggle backdrop cursor style on show + elem.toggleClass('blurs', options.blur); + + // Append to body on show + if(state) { + elem.appendTo(document.body); + } + + // Prevent modal from conflicting with show.solo, and don't hide backdrop is other modals are visible + if((elem.is(':animated') && visible === state && prevState !== FALSE) || (!state && visibleModals.length)) { + return self; + } + + // Stop all animations + elem.stop(TRUE, FALSE); + + // Use custom function if provided + if($.isFunction(effect)) { + effect.call(elem, state); + } + + // If no effect type is supplied, use a simple toggle + else if(effect === FALSE) { + elem[ type ](); + } + + // Use basic fade function + else { + elem.fadeTo( parseInt(duration, 10) || 90, state ? 1 : 0, function() { + if(!state) { elem.hide(); } + }); + } + + // Reset position and detach from body on hide + if(!state) { + elem.queue(function(next) { + elem.css({ left: '', top: '' }); + if(!$(MODALSELECTOR).length) { elem.detach(); } + next(); + }); + } + + // Cache the state + prevState = state; + + // If the tooltip is destroyed, set reference to null + if(current.destroyed) { current = NULL; } + + return self; + } + }); + + self.init(); + }; + OVERLAY = new OVERLAY(); + + function Modal(api, options) { + this.options = options; + this._ns = '-modal'; + + this.init( (this.qtip = api) ); + } + + $.extend(Modal.prototype, { + init: function(qtip) { + var tooltip = qtip.tooltip; + + // If modal is disabled... return + if(!this.options.on) { return this; } + + // Set overlay reference + qtip.elements.overlay = OVERLAY.elem; + + // Add unique attribute so we can grab modal tooltips easily via a SELECTOR, and set z-index + tooltip.addClass(MODALCLASS).css('z-index', QTIP.modal_zindex + $(MODALSELECTOR).length); + + // Apply our show/hide/focus modal events + qtip._bind(tooltip, ['tooltipshow', 'tooltiphide'], function(event, api, duration) { + var oEvent = event.originalEvent; + + // Make sure mouseout doesn't trigger a hide when showing the modal and mousing onto backdrop + if(event.target === tooltip[0]) { + if(oEvent && event.type === 'tooltiphide' && /mouse(leave|enter)/.test(oEvent.type) && $(oEvent.relatedTarget).closest(OVERLAY.elem[0]).length) { + try { event.preventDefault(); } catch(e) {} + } + else if(!oEvent || (oEvent && oEvent.type !== 'tooltipsolo')) { + this.toggle(event, event.type === 'tooltipshow', duration); + } + } + }, this._ns, this); + + // Adjust modal z-index on tooltip focus + qtip._bind(tooltip, 'tooltipfocus', function(event, api) { + // If focus was cancelled before it reached us, don't do anything + if(event.isDefaultPrevented() || event.target !== tooltip[0]) { return; } + + var qtips = $(MODALSELECTOR), + + // Keep the modal's lower than other, regular qtips + newIndex = QTIP.modal_zindex + qtips.length, + curIndex = parseInt(tooltip[0].style.zIndex, 10); + + // Set overlay z-index + OVERLAY.elem[0].style.zIndex = newIndex - 1; + + // Reduce modal z-index's and keep them properly ordered + qtips.each(function() { + if(this.style.zIndex > curIndex) { + this.style.zIndex -= 1; + } + }); + + // Fire blur event for focused tooltip + qtips.filter('.' + CLASS_FOCUS).qtip('blur', event.originalEvent); + + // Set the new z-index + tooltip.addClass(CLASS_FOCUS)[0].style.zIndex = newIndex; + + // Set current + OVERLAY.update(api); + + // Prevent default handling + try { event.preventDefault(); } catch(e) {} + }, this._ns, this); + + // Focus any other visible modals when this one hides + qtip._bind(tooltip, 'tooltiphide', function(event) { + if(event.target === tooltip[0]) { + $(MODALSELECTOR).filter(':visible').not(tooltip).last().qtip('focus', event); + } + }, this._ns, this); + }, + + toggle: function(event, state, duration) { + // Make sure default event hasn't been prevented + if(event && event.isDefaultPrevented()) { return this; } + + // Toggle it + OVERLAY.toggle(this.qtip, !!state, duration); + }, + + destroy: function() { + // Remove modal class + this.qtip.tooltip.removeClass(MODALCLASS); + + // Remove bound events + this.qtip._unbind(this.qtip.tooltip, this._ns); + + // Delete element reference + OVERLAY.toggle(this.qtip, FALSE); + delete this.qtip.elements.overlay; + } + }); + + + MODAL = PLUGINS.modal = function(api) { + return new Modal(api, api.options.show.modal); + }; + + // Setup sanitiztion rules + MODAL.sanitize = function(opts) { + if(opts.show) { + if(typeof opts.show.modal !== 'object') { opts.show.modal = { on: !!opts.show.modal }; } + else if(typeof opts.show.modal.on === 'undefined') { opts.show.modal.on = TRUE; } + } + }; + + // Base z-index for all modal tooltips (use qTip core z-index as a base) + QTIP.modal_zindex = QTIP.zindex - 200; + + // Plugin needs to be initialized on render + MODAL.initialize = 'render'; + + // Setup option set checks + CHECKS.modal = { + '^show.modal.(on|blur)$': function() { + // Initialise + this.destroy(); + this.init(); + + // Show the modal if not visible already and tooltip is visible + this.qtip.elems.overlay.toggle( + this.qtip.tooltip[0].offsetWidth > 0 + ); + } + }; + + // Extend original api defaults + $.extend(TRUE, QTIP.defaults, { + show: { + modal: { + on: FALSE, + effect: TRUE, + blur: TRUE, + stealfocus: TRUE, + escape: TRUE + } + } + }); + ;PLUGINS.viewport = function(api, position, posOptions, targetWidth, targetHeight, elemWidth, elemHeight) + { + var target = posOptions.target, + tooltip = api.elements.tooltip, + my = posOptions.my, + at = posOptions.at, + adjust = posOptions.adjust, + method = adjust.method.split(' '), + methodX = method[0], + methodY = method[1] || method[0], + viewport = posOptions.viewport, + container = posOptions.container, + cache = api.cache, + adjusted = { left: 0, top: 0 }, + fixed, newMy, containerOffset, containerStatic, + viewportWidth, viewportHeight, viewportScroll, viewportOffset; + + // If viewport is not a jQuery element, or it's the window/document, or no adjustment method is used... return + if(!viewport.jquery || target[0] === window || target[0] === document.body || adjust.method === 'none') { + return adjusted; + } + + // Cach container details + containerOffset = container.offset() || adjusted; + containerStatic = container.css('position') === 'static'; + + // Cache our viewport details + fixed = tooltip.css('position') === 'fixed'; + viewportWidth = viewport[0] === window ? viewport.width() : viewport.outerWidth(FALSE); + viewportHeight = viewport[0] === window ? viewport.height() : viewport.outerHeight(FALSE); + viewportScroll = { left: fixed ? 0 : viewport.scrollLeft(), top: fixed ? 0 : viewport.scrollTop() }; + viewportOffset = viewport.offset() || adjusted; + + // Generic calculation method + function calculate(side, otherSide, type, adjust, side1, side2, lengthName, targetLength, elemLength) { + var initialPos = position[side1], + mySide = my[side], + atSide = at[side], + isShift = type === SHIFT, + myLength = mySide === side1 ? elemLength : mySide === side2 ? -elemLength : -elemLength / 2, + atLength = atSide === side1 ? targetLength : atSide === side2 ? -targetLength : -targetLength / 2, + sideOffset = viewportScroll[side1] + viewportOffset[side1] - (containerStatic ? 0 : containerOffset[side1]), + overflow1 = sideOffset - initialPos, + overflow2 = initialPos + elemLength - (lengthName === WIDTH ? viewportWidth : viewportHeight) - sideOffset, + offset = myLength - (my.precedance === side || mySide === my[otherSide] ? atLength : 0) - (atSide === CENTER ? targetLength / 2 : 0); + + // shift + if(isShift) { + offset = (mySide === side1 ? 1 : -1) * myLength; + + // Adjust position but keep it within viewport dimensions + position[side1] += overflow1 > 0 ? overflow1 : overflow2 > 0 ? -overflow2 : 0; + position[side1] = Math.max( + -containerOffset[side1] + viewportOffset[side1], + initialPos - offset, + Math.min( + Math.max( + -containerOffset[side1] + viewportOffset[side1] + (lengthName === WIDTH ? viewportWidth : viewportHeight), + initialPos + offset + ), + position[side1], + + // Make sure we don't adjust complete off the element when using 'center' + mySide === 'center' ? initialPos - myLength : 1E9 + ) + ); + + } + + // flip/flipinvert + else { + // Update adjustment amount depending on if using flipinvert or flip + adjust *= (type === FLIPINVERT ? 2 : 0); + + // Check for overflow on the left/top + if(overflow1 > 0 && (mySide !== side1 || overflow2 > 0)) { + position[side1] -= offset + adjust; + newMy.invert(side, side1); + } + + // Check for overflow on the bottom/right + else if(overflow2 > 0 && (mySide !== side2 || overflow1 > 0) ) { + position[side1] -= (mySide === CENTER ? -offset : offset) + adjust; + newMy.invert(side, side2); + } + + // Make sure we haven't made things worse with the adjustment and reset if so + if(position[side1] < viewportScroll && -position[side1] > overflow2) { + position[side1] = initialPos; newMy = my.clone(); + } + } + + return position[side1] - initialPos; + } + + // Set newMy if using flip or flipinvert methods + if(methodX !== 'shift' || methodY !== 'shift') { newMy = my.clone(); } + + // Adjust position based onviewport and adjustment options + adjusted = { + left: methodX !== 'none' ? calculate( X, Y, methodX, adjust.x, LEFT, RIGHT, WIDTH, targetWidth, elemWidth ) : 0, + top: methodY !== 'none' ? calculate( Y, X, methodY, adjust.y, TOP, BOTTOM, HEIGHT, targetHeight, elemHeight ) : 0, + my: newMy + }; + + return adjusted; + }; + ;PLUGINS.polys = { + // POLY area coordinate calculator + // Special thanks to Ed Cradock for helping out with this. + // Uses a binary search algorithm to find suitable coordinates. + polygon: function(baseCoords, corner) { + var result = { + width: 0, height: 0, + position: { + top: 1e10, right: 0, + bottom: 0, left: 1e10 + }, + adjustable: FALSE + }, + i = 0, next, + coords = [], + compareX = 1, compareY = 1, + realX = 0, realY = 0, + newWidth, newHeight; + + // First pass, sanitize coords and determine outer edges + i = baseCoords.length; while(i--) { + next = [ parseInt(baseCoords[--i], 10), parseInt(baseCoords[i+1], 10) ]; + + if(next[0] > result.position.right){ result.position.right = next[0]; } + if(next[0] < result.position.left){ result.position.left = next[0]; } + if(next[1] > result.position.bottom){ result.position.bottom = next[1]; } + if(next[1] < result.position.top){ result.position.top = next[1]; } + + coords.push(next); + } + + // Calculate height and width from outer edges + newWidth = result.width = Math.abs(result.position.right - result.position.left); + newHeight = result.height = Math.abs(result.position.bottom - result.position.top); + + // If it's the center corner... + if(corner.abbrev() === 'c') { + result.position = { + left: result.position.left + (result.width / 2), + top: result.position.top + (result.height / 2) + }; + } + else { + // Second pass, use a binary search algorithm to locate most suitable coordinate + while(newWidth > 0 && newHeight > 0 && compareX > 0 && compareY > 0) + { + newWidth = Math.floor(newWidth / 2); + newHeight = Math.floor(newHeight / 2); + + if(corner.x === LEFT){ compareX = newWidth; } + else if(corner.x === RIGHT){ compareX = result.width - newWidth; } + else{ compareX += Math.floor(newWidth / 2); } + + if(corner.y === TOP){ compareY = newHeight; } + else if(corner.y === BOTTOM){ compareY = result.height - newHeight; } + else{ compareY += Math.floor(newHeight / 2); } + + i = coords.length; while(i--) + { + if(coords.length < 2){ break; } + + realX = coords[i][0] - result.position.left; + realY = coords[i][1] - result.position.top; + + if((corner.x === LEFT && realX >= compareX) || + (corner.x === RIGHT && realX <= compareX) || + (corner.x === CENTER && (realX < compareX || realX > (result.width - compareX))) || + (corner.y === TOP && realY >= compareY) || + (corner.y === BOTTOM && realY <= compareY) || + (corner.y === CENTER && (realY < compareY || realY > (result.height - compareY)))) { + coords.splice(i, 1); + } + } + } + result.position = { left: coords[0][0], top: coords[0][1] }; + } + + return result; + }, + + rect: function(ax, ay, bx, by) { + return { + width: Math.abs(bx - ax), + height: Math.abs(by - ay), + position: { + left: Math.min(ax, bx), + top: Math.min(ay, by) + } + }; + }, + + _angles: { + tc: 3 / 2, tr: 7 / 4, tl: 5 / 4, + bc: 1 / 2, br: 1 / 4, bl: 3 / 4, + rc: 2, lc: 1, c: 0 + }, + ellipse: function(cx, cy, rx, ry, corner) { + var c = PLUGINS.polys._angles[ corner.abbrev() ], + rxc = c === 0 ? 0 : rx * Math.cos( c * Math.PI ), + rys = ry * Math.sin( c * Math.PI ); + + return { + width: (rx * 2) - Math.abs(rxc), + height: (ry * 2) - Math.abs(rys), + position: { + left: cx + rxc, + top: cy + rys + }, + adjustable: FALSE + }; + }, + circle: function(cx, cy, r, corner) { + return PLUGINS.polys.ellipse(cx, cy, r, r, corner); + } + }; + ;PLUGINS.svg = function(api, svg, corner) + { + var doc = $(document), + elem = svg[0], + root = $(elem.ownerSVGElement), + ownerDocument = elem.ownerDocument, + strokeWidth2 = (parseInt(svg.css('stroke-width'), 10) || 0) / 2, + frameOffset, mtx, transformed, viewBox, + len, next, i, points, + result, position, dimensions; + + // Ascend the parentNode chain until we find an element with getBBox() + while(!elem.getBBox) { elem = elem.parentNode; } + if(!elem.getBBox || !elem.parentNode) { return FALSE; } + + // Determine which shape calculation to use + switch(elem.nodeName) { + case 'ellipse': + case 'circle': + result = PLUGINS.polys.ellipse( + elem.cx.baseVal.value, + elem.cy.baseVal.value, + (elem.rx || elem.r).baseVal.value + strokeWidth2, + (elem.ry || elem.r).baseVal.value + strokeWidth2, + corner + ); + break; + + case 'line': + case 'polygon': + case 'polyline': + // Determine points object (line has none, so mimic using array) + points = elem.points || [ + { x: elem.x1.baseVal.value, y: elem.y1.baseVal.value }, + { x: elem.x2.baseVal.value, y: elem.y2.baseVal.value } + ]; + + for(result = [], i = -1, len = points.numberOfItems || points.length; ++i < len;) { + next = points.getItem ? points.getItem(i) : points[i]; + result.push.apply(result, [next.x, next.y]); + } + + result = PLUGINS.polys.polygon(result, corner); + break; + + // Unknown shape or rectangle? Use bounding box + default: + result = elem.getBBox(); + result = { + width: result.width, + height: result.height, + position: { + left: result.x, + top: result.y + } + }; + break; + } + + // Shortcut assignments + position = result.position; + root = root[0]; + + // Convert position into a pixel value + if(root.createSVGPoint) { + mtx = elem.getScreenCTM(); + points = root.createSVGPoint(); + + points.x = position.left; + points.y = position.top; + transformed = points.matrixTransform( mtx ); + position.left = transformed.x; + position.top = transformed.y; + } + + // Check the element is not in a child document, and if so, adjust for frame elements offset + if(ownerDocument !== document && api.position.target !== 'mouse') { + frameOffset = $((ownerDocument.defaultView || ownerDocument.parentWindow).frameElement).offset(); + if(frameOffset) { + position.left += frameOffset.left; + position.top += frameOffset.top; + } + } + + // Adjust by scroll offset of owner document + ownerDocument = $(ownerDocument); + position.left += ownerDocument.scrollLeft(); + position.top += ownerDocument.scrollTop(); + + return result; + }; + ;PLUGINS.imagemap = function(api, area, corner, adjustMethod) + { + if(!area.jquery) { area = $(area); } + + var shape = (area.attr('shape') || 'rect').toLowerCase().replace('poly', 'polygon'), + image = $('img[usemap="#'+area.parent('map').attr('name')+'"]'), + coordsString = $.trim(area.attr('coords')), + coordsArray = coordsString.replace(/,$/, '').split(','), + imageOffset, coords, i, next, result, len; + + // If we can't find the image using the map... + if(!image.length) { return FALSE; } + + // Pass coordinates string if polygon + if(shape === 'polygon') { + result = PLUGINS.polys.polygon(coordsArray, corner); + } + + // Otherwise parse the coordinates and pass them as arguments + else if(PLUGINS.polys[shape]) { + for(i = -1, len = coordsArray.length, coords = []; ++i < len;) { + coords.push( parseInt(coordsArray[i], 10) ); + } + + result = PLUGINS.polys[shape].apply( + this, coords.concat(corner) + ); + } + + // If no shapre calculation method was found, return false + else { return FALSE; } + + // Make sure we account for padding and borders on the image + imageOffset = image.offset(); + imageOffset.left += Math.ceil((image.outerWidth(FALSE) - image.width()) / 2); + imageOffset.top += Math.ceil((image.outerHeight(FALSE) - image.height()) / 2); + + // Add image position to offset coordinates + result.position.left += imageOffset.left; + result.position.top += imageOffset.top; + + return result; + }; + ;var IE6, + + /* + * BGIFrame adaption (http://plugins.jquery.com/project/bgiframe) + * Special thanks to Brandon Aaron + */ + BGIFRAME = ''; + + function Ie6(api, qtip) { + this._ns = 'ie6'; + this.init( (this.qtip = api) ); + } + + $.extend(Ie6.prototype, { + _scroll : function() { + var overlay = this.qtip.elements.overlay; + overlay && (overlay[0].style.top = $(window).scrollTop() + 'px'); + }, + + init: function(qtip) { + var tooltip = qtip.tooltip, + scroll; + + // Create the BGIFrame element if needed + if($('select, object').length < 1) { + this.bgiframe = qtip.elements.bgiframe = $(BGIFRAME).appendTo(tooltip); + + // Update BGIFrame on tooltip move + qtip._bind(tooltip, 'tooltipmove', this.adjustBGIFrame, this._ns, this); + } + + // redraw() container for width/height calculations + this.redrawContainer = $('
    ', { id: NAMESPACE+'-rcontainer' }) + .appendTo(document.body); + + // Fixup modal plugin if present too + if( qtip.elements.overlay && qtip.elements.overlay.addClass('qtipmodal-ie6fix') ) { + qtip._bind(window, ['scroll', 'resize'], this._scroll, this._ns, this); + qtip._bind(tooltip, ['tooltipshow'], this._scroll, this._ns, this); + } + + // Set dimensions + this.redraw(); + }, + + adjustBGIFrame: function() { + var tooltip = this.qtip.tooltip, + dimensions = { + height: tooltip.outerHeight(FALSE), + width: tooltip.outerWidth(FALSE) + }, + plugin = this.qtip.plugins.tip, + tip = this.qtip.elements.tip, + tipAdjust, offset; + + // Adjust border offset + offset = parseInt(tooltip.css('borderLeftWidth'), 10) || 0; + offset = { left: -offset, top: -offset }; + + // Adjust for tips plugin + if(plugin && tip) { + tipAdjust = (plugin.corner.precedance === 'x') ? [WIDTH, LEFT] : [HEIGHT, TOP]; + offset[ tipAdjust[1] ] -= tip[ tipAdjust[0] ](); + } + + // Update bgiframe + this.bgiframe.css(offset).css(dimensions); + }, + + // Max/min width simulator function + redraw: function() { + if(this.qtip.rendered < 1 || this.drawing) { return this; } + + var tooltip = this.qtip.tooltip, + style = this.qtip.options.style, + container = this.qtip.options.position.container, + perc, width, max, min; + + // Set drawing flag + this.qtip.drawing = 1; + + // If tooltip has a set height/width, just set it... like a boss! + if(style.height) { tooltip.css(HEIGHT, style.height); } + if(style.width) { tooltip.css(WIDTH, style.width); } + + // Simulate max/min width if not set width present... + else { + // Reset width and add fluid class + tooltip.css(WIDTH, '').appendTo(this.redrawContainer); + + // Grab our tooltip width (add 1 if odd so we don't get wrapping problems.. huzzah!) + width = tooltip.width(); + if(width % 2 < 1) { width += 1; } + + // Grab our max/min properties + max = tooltip.css('maxWidth') || ''; + min = tooltip.css('minWidth') || ''; + + // Parse into proper pixel values + perc = (max + min).indexOf('%') > -1 ? container.width() / 100 : 0; + max = ((max.indexOf('%') > -1 ? perc : 1) * parseInt(max, 10)) || width; + min = ((min.indexOf('%') > -1 ? perc : 1) * parseInt(min, 10)) || 0; + + // Determine new dimension size based on max/min/current values + width = max + min ? Math.min(Math.max(width, min), max) : width; + + // Set the newly calculated width and remvoe fluid class + tooltip.css(WIDTH, Math.round(width)).appendTo(container); + } + + // Set drawing flag + this.drawing = 0; + + return this; + }, + + destroy: function() { + // Remove iframe + this.bgiframe && this.bgiframe.remove(); + + // Remove bound events + this.qtip._unbind([window, this.qtip.tooltip], this._ns); + } + }); + + IE6 = PLUGINS.ie6 = function(api) { + // Proceed only if the browser is IE6 + return BROWSER.ie === 6 ? new Ie6(api) : FALSE; + }; + + IE6.initialize = 'render'; + + CHECKS.ie6 = { + '^content|style$': function() { + this.redraw(); + } + }; + ;})); +}( window, document )); \ No newline at end of file diff --git a/redux/ReduxCore/assets/js/vendor/qtip/jquery.qtip.min.js b/redux/ReduxCore/assets/js/vendor/qtip/jquery.qtip.min.js new file mode 100644 index 0000000..99cf2ea --- /dev/null +++ b/redux/ReduxCore/assets/js/vendor/qtip/jquery.qtip.min.js @@ -0,0 +1,5 @@ +/* qTip2 v2.2.1 | Plugins: tips modal viewport svg imagemap ie6 | Styles: core basic css3 | qtip2.com | Licensed MIT | Sat Sep 06 2014 23:12:07 */ + +!function(a,b,c){!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.qtip&&a(jQuery)}(function(d){"use strict";function e(a,b,c,e){this.id=c,this.target=a,this.tooltip=F,this.elements={target:a},this._id=S+"-"+c,this.timers={img:{}},this.options=b,this.plugins={},this.cache={event:{},target:d(),disabled:E,attr:e,onTooltip:E,lastClass:""},this.rendered=this.destroyed=this.disabled=this.waiting=this.hiddenDuringWait=this.positioning=this.triggering=E}function f(a){return a===F||"object"!==d.type(a)}function g(a){return!(d.isFunction(a)||a&&a.attr||a.length||"object"===d.type(a)&&(a.jquery||a.then))}function h(a){var b,c,e,h;return f(a)?E:(f(a.metadata)&&(a.metadata={type:a.metadata}),"content"in a&&(b=a.content,f(b)||b.jquery||b.done?b=a.content={text:c=g(b)?E:b}:c=b.text,"ajax"in b&&(e=b.ajax,h=e&&e.once!==E,delete b.ajax,b.text=function(a,b){var f=c||d(this).attr(b.options.content.attr)||"Loading...",g=d.ajax(d.extend({},e,{context:b})).then(e.success,F,e.error).then(function(a){return a&&h&&b.set("content.text",a),a},function(a,c,d){b.destroyed||0===a.status||b.set("content.text",c+": "+d)});return h?f:(b.set("content.text",f),g)}),"title"in b&&(d.isPlainObject(b.title)&&(b.button=b.title.button,b.title=b.title.text),g(b.title||E)&&(b.title=E))),"position"in a&&f(a.position)&&(a.position={my:a.position,at:a.position}),"show"in a&&f(a.show)&&(a.show=a.show.jquery?{target:a.show}:a.show===D?{ready:D}:{event:a.show}),"hide"in a&&f(a.hide)&&(a.hide=a.hide.jquery?{target:a.hide}:{event:a.hide}),"style"in a&&f(a.style)&&(a.style={classes:a.style}),d.each(R,function(){this.sanitize&&this.sanitize(a)}),a)}function i(a,b){for(var c,d=0,e=a,f=b.split(".");e=e[f[d++]];)d0?setTimeout(d.proxy(a,this),b):void a.call(this)}function m(a){this.tooltip.hasClass(ab)||(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this.timers.show=l.call(this,function(){this.toggle(D,a)},this.options.show.delay))}function n(a){if(!this.tooltip.hasClass(ab)&&!this.destroyed){var b=d(a.relatedTarget),c=b.closest(W)[0]===this.tooltip[0],e=b[0]===this.options.show.target[0];if(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this!==b[0]&&"mouse"===this.options.position.target&&c||this.options.hide.fixed&&/mouse(out|leave|move)/.test(a.type)&&(c||e))try{a.preventDefault(),a.stopImmediatePropagation()}catch(f){}else this.timers.hide=l.call(this,function(){this.toggle(E,a)},this.options.hide.delay,this)}}function o(a){!this.tooltip.hasClass(ab)&&this.options.hide.inactive&&(clearTimeout(this.timers.inactive),this.timers.inactive=l.call(this,function(){this.hide(a)},this.options.hide.inactive))}function p(a){this.rendered&&this.tooltip[0].offsetWidth>0&&this.reposition(a)}function q(a,c,e){d(b.body).delegate(a,(c.split?c:c.join("."+S+" "))+"."+S,function(){var a=y.api[d.attr(this,U)];a&&!a.disabled&&e.apply(a,arguments)})}function r(a,c,f){var g,i,j,k,l,m=d(b.body),n=a[0]===b?m:a,o=a.metadata?a.metadata(f.metadata):F,p="html5"===f.metadata.type&&o?o[f.metadata.name]:F,q=a.data(f.metadata.name||"qtipopts");try{q="string"==typeof q?d.parseJSON(q):q}catch(r){}if(k=d.extend(D,{},y.defaults,f,"object"==typeof q?h(q):F,h(p||o)),i=k.position,k.id=c,"boolean"==typeof k.content.text){if(j=a.attr(k.content.attr),k.content.attr===E||!j)return E;k.content.text=j}if(i.container.length||(i.container=m),i.target===E&&(i.target=n),k.show.target===E&&(k.show.target=n),k.show.solo===D&&(k.show.solo=i.container.closest("body")),k.hide.target===E&&(k.hide.target=n),k.position.viewport===D&&(k.position.viewport=i.container),i.container=i.container.eq(0),i.at=new A(i.at,D),i.my=new A(i.my),a.data(S))if(k.overwrite)a.qtip("destroy",!0);else if(k.overwrite===E)return E;return a.attr(T,c),k.suppress&&(l=a.attr("title"))&&a.removeAttr("title").attr(cb,l).attr("title",""),g=new e(a,k,c,!!j),a.data(S,g),g}function s(a){return a.charAt(0).toUpperCase()+a.slice(1)}function t(a,b){var d,e,f=b.charAt(0).toUpperCase()+b.slice(1),g=(b+" "+rb.join(f+" ")+f).split(" "),h=0;if(qb[b])return a.css(qb[b]);for(;d=g[h++];)if((e=a.css(d))!==c)return qb[b]=d,e}function u(a,b){return Math.ceil(parseFloat(t(a,b)))}function v(a,b){this._ns="tip",this.options=b,this.offset=b.offset,this.size=[b.width,b.height],this.init(this.qtip=a)}function w(a,b){this.options=b,this._ns="-modal",this.init(this.qtip=a)}function x(a){this._ns="ie6",this.init(this.qtip=a)}var y,z,A,B,C,D=!0,E=!1,F=null,G="x",H="y",I="width",J="height",K="top",L="left",M="bottom",N="right",O="center",P="flipinvert",Q="shift",R={},S="qtip",T="data-hasqtip",U="data-qtip-id",V=["ui-widget","ui-tooltip"],W="."+S,X="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),Y=S+"-fixed",Z=S+"-default",$=S+"-focus",_=S+"-hover",ab=S+"-disabled",bb="_replacedByqTip",cb="oldtitle",db={ie:function(){for(var a=4,c=b.createElement("div");(c.innerHTML="")&&c.getElementsByTagName("i")[0];a+=1);return a>4?a:0/0}(),iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||E};z=e.prototype,z._when=function(a){return d.when.apply(d,a)},z.render=function(a){if(this.rendered||this.destroyed)return this;var b,c=this,e=this.options,f=this.cache,g=this.elements,h=e.content.text,i=e.content.title,j=e.content.button,k=e.position,l=("."+this._id+" ",[]);return d.attr(this.target[0],"aria-describedby",this._id),f.posClass=this._createPosClass((this.position={my:k.my,at:k.at}).my),this.tooltip=g.tooltip=b=d("
    ",{id:this._id,"class":[S,Z,e.style.classes,f.posClass].join(" "),width:e.style.width||"",height:e.style.height||"",tracking:"mouse"===k.target&&k.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":E,"aria-describedby":this._id+"-content","aria-hidden":D}).toggleClass(ab,this.disabled).attr(U,this.id).data(S,this).appendTo(k.container).append(g.content=d("
    ",{"class":S+"-content",id:this._id+"-content","aria-atomic":D})),this.rendered=-1,this.positioning=D,i&&(this._createTitle(),d.isFunction(i)||l.push(this._updateTitle(i,E))),j&&this._createButton(),d.isFunction(h)||l.push(this._updateContent(h,E)),this.rendered=D,this._setWidget(),d.each(R,function(a){var b;"render"===this.initialize&&(b=this(c))&&(c.plugins[a]=b)}),this._unassignEvents(),this._assignEvents(),this._when(l).then(function(){c._trigger("render"),c.positioning=E,c.hiddenDuringWait||!e.show.ready&&!a||c.toggle(D,f.event,E),c.hiddenDuringWait=E}),y.api[this.id]=this,this},z.destroy=function(a){function b(){if(!this.destroyed){this.destroyed=D;var a,b=this.target,c=b.attr(cb);this.rendered&&this.tooltip.stop(1,0).find("*").remove().end().remove(),d.each(this.plugins,function(){this.destroy&&this.destroy()});for(a in this.timers)clearTimeout(this.timers[a]);b.removeData(S).removeAttr(U).removeAttr(T).removeAttr("aria-describedby"),this.options.suppress&&c&&b.attr("title",c).removeAttr(cb),this._unassignEvents(),this.options=this.elements=this.cache=this.timers=this.plugins=this.mouse=F,delete y.api[this.id]}}return this.destroyed?this.target:(a===D&&"hide"!==this.triggering||!this.rendered?b.call(this):(this.tooltip.one("tooltiphidden",d.proxy(b,this)),!this.triggering&&this.hide()),this.target)},B=z.checks={builtin:{"^id$":function(a,b,c,e){var f=c===D?y.nextid:c,g=S+"-"+f;f!==E&&f.length>0&&!d("#"+g).length?(this._id=g,this.rendered&&(this.tooltip[0].id=this._id,this.elements.content[0].id=this._id+"-content",this.elements.title[0].id=this._id+"-title")):a[b]=e},"^prerender":function(a,b,c){c&&!this.rendered&&this.render(this.options.show.ready)},"^content.text$":function(a,b,c){this._updateContent(c)},"^content.attr$":function(a,b,c,d){this.options.content.text===this.target.attr(d)&&this._updateContent(this.target.attr(c))},"^content.title$":function(a,b,c){return c?(c&&!this.elements.title&&this._createTitle(),void this._updateTitle(c)):this._removeTitle()},"^content.button$":function(a,b,c){this._updateButton(c)},"^content.title.(text|button)$":function(a,b,c){this.set("content."+b,c)},"^position.(my|at)$":function(a,b,c){"string"==typeof c&&(this.position[b]=a[b]=new A(c,"at"===b))},"^position.container$":function(a,b,c){this.rendered&&this.tooltip.appendTo(c)},"^show.ready$":function(a,b,c){c&&(!this.rendered&&this.render(D)||this.toggle(D))},"^style.classes$":function(a,b,c,d){this.rendered&&this.tooltip.removeClass(d).addClass(c)},"^style.(width|height)":function(a,b,c){this.rendered&&this.tooltip.css(b,c)},"^style.widget|content.title":function(){this.rendered&&this._setWidget()},"^style.def":function(a,b,c){this.rendered&&this.tooltip.toggleClass(Z,!!c)},"^events.(render|show|move|hide|focus|blur)$":function(a,b,c){this.rendered&&this.tooltip[(d.isFunction(c)?"":"un")+"bind"]("tooltip"+b,c)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){if(this.rendered){var a=this.options.position;this.tooltip.attr("tracking","mouse"===a.target&&a.adjust.mouse),this._unassignEvents(),this._assignEvents()}}}},z.get=function(a){if(this.destroyed)return this;var b=i(this.options,a.toLowerCase()),c=b[0][b[1]];return c.precedance?c.string():c};var eb=/^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,fb=/^prerender|show\.ready/i;z.set=function(a,b){if(this.destroyed)return this;{var c,e=this.rendered,f=E,g=this.options;this.checks}return"string"==typeof a?(c=a,a={},a[c]=b):a=d.extend({},a),d.each(a,function(b,c){if(e&&fb.test(b))return void delete a[b];var h,j=i(g,b.toLowerCase());h=j[0][j[1]],j[0][j[1]]=c&&c.nodeType?d(c):c,f=eb.test(b)||f,a[b]=[j[0],j[1],c,h]}),h(g),this.positioning=D,d.each(a,d.proxy(j,this)),this.positioning=E,this.rendered&&this.tooltip[0].offsetWidth>0&&f&&this.reposition("mouse"===g.position.target?F:this.cache.event),this},z._update=function(a,b){var c=this,e=this.cache;return this.rendered&&a?(d.isFunction(a)&&(a=a.call(this.elements.target,e.event,this)||""),d.isFunction(a.then)?(e.waiting=D,a.then(function(a){return e.waiting=E,c._update(a,b)},F,function(a){return c._update(a,b)})):a===E||!a&&""!==a?E:(a.jquery&&a.length>0?b.empty().append(a.css({display:"block",visibility:"visible"})):b.html(a),this._waitForContent(b).then(function(a){c.rendered&&c.tooltip[0].offsetWidth>0&&c.reposition(e.event,!a.length)}))):E},z._waitForContent=function(a){var b=this.cache;return b.waiting=D,(d.fn.imagesLoaded?a.imagesLoaded():d.Deferred().resolve([])).done(function(){b.waiting=E}).promise()},z._updateContent=function(a,b){this._update(a,this.elements.content,b)},z._updateTitle=function(a,b){this._update(a,this.elements.title,b)===E&&this._removeTitle(E)},z._createTitle=function(){var a=this.elements,b=this._id+"-title";a.titlebar&&this._removeTitle(),a.titlebar=d("
    ",{"class":S+"-titlebar "+(this.options.style.widget?k("header"):"")}).append(a.title=d("
    ",{id:b,"class":S+"-title","aria-atomic":D})).insertBefore(a.content).delegate(".qtip-close","mousedown keydown mouseup keyup mouseout",function(a){d(this).toggleClass("ui-state-active ui-state-focus","down"===a.type.substr(-4))}).delegate(".qtip-close","mouseover mouseout",function(a){d(this).toggleClass("ui-state-hover","mouseover"===a.type)}),this.options.content.button&&this._createButton()},z._removeTitle=function(a){var b=this.elements;b.title&&(b.titlebar.remove(),b.titlebar=b.title=b.button=F,a!==E&&this.reposition())},z._createPosClass=function(a){return S+"-pos-"+(a||this.options.position.my).abbrev()},z.reposition=function(c,e){if(!this.rendered||this.positioning||this.destroyed)return this;this.positioning=D;var f,g,h,i,j=this.cache,k=this.tooltip,l=this.options.position,m=l.target,n=l.my,o=l.at,p=l.viewport,q=l.container,r=l.adjust,s=r.method.split(" "),t=k.outerWidth(E),u=k.outerHeight(E),v=0,w=0,x=k.css("position"),y={left:0,top:0},z=k[0].offsetWidth>0,A=c&&"scroll"===c.type,B=d(a),C=q[0].ownerDocument,F=this.mouse;if(d.isArray(m)&&2===m.length)o={x:L,y:K},y={left:m[0],top:m[1]};else if("mouse"===m)o={x:L,y:K},(!r.mouse||this.options.hide.distance)&&j.origin&&j.origin.pageX?c=j.origin:!c||c&&("resize"===c.type||"scroll"===c.type)?c=j.event:F&&F.pageX&&(c=F),"static"!==x&&(y=q.offset()),C.body.offsetWidth!==(a.innerWidth||C.documentElement.clientWidth)&&(g=d(b.body).offset()),y={left:c.pageX-y.left+(g&&g.left||0),top:c.pageY-y.top+(g&&g.top||0)},r.mouse&&A&&F&&(y.left-=(F.scrollX||0)-B.scrollLeft(),y.top-=(F.scrollY||0)-B.scrollTop());else{if("event"===m?c&&c.target&&"scroll"!==c.type&&"resize"!==c.type?j.target=d(c.target):c.target||(j.target=this.elements.target):"event"!==m&&(j.target=d(m.jquery?m:this.elements.target)),m=j.target,m=d(m).eq(0),0===m.length)return this;m[0]===b||m[0]===a?(v=db.iOS?a.innerWidth:m.width(),w=db.iOS?a.innerHeight:m.height(),m[0]===a&&(y={top:(p||m).scrollTop(),left:(p||m).scrollLeft()})):R.imagemap&&m.is("area")?f=R.imagemap(this,m,o,R.viewport?s:E):R.svg&&m&&m[0].ownerSVGElement?f=R.svg(this,m,o,R.viewport?s:E):(v=m.outerWidth(E),w=m.outerHeight(E),y=m.offset()),f&&(v=f.width,w=f.height,g=f.offset,y=f.position),y=this.reposition.offset(m,y,q),(db.iOS>3.1&&db.iOS<4.1||db.iOS>=4.3&&db.iOS<4.33||!db.iOS&&"fixed"===x)&&(y.left-=B.scrollLeft(),y.top-=B.scrollTop()),(!f||f&&f.adjustable!==E)&&(y.left+=o.x===N?v:o.x===O?v/2:0,y.top+=o.y===M?w:o.y===O?w/2:0)}return y.left+=r.x+(n.x===N?-t:n.x===O?-t/2:0),y.top+=r.y+(n.y===M?-u:n.y===O?-u/2:0),R.viewport?(h=y.adjusted=R.viewport(this,y,l,v,w,t,u),g&&h.left&&(y.left+=g.left),g&&h.top&&(y.top+=g.top),h.my&&(this.position.my=h.my)):y.adjusted={left:0,top:0},j.posClass!==(i=this._createPosClass(this.position.my))&&k.removeClass(j.posClass).addClass(j.posClass=i),this._trigger("move",[y,p.elem||p],c)?(delete y.adjusted,e===E||!z||isNaN(y.left)||isNaN(y.top)||"mouse"===m||!d.isFunction(l.effect)?k.css(y):d.isFunction(l.effect)&&(l.effect.call(k,this,d.extend({},y)),k.queue(function(a){d(this).css({opacity:"",height:""}),db.ie&&this.style.removeAttribute("filter"),a()})),this.positioning=E,this):this},z.reposition.offset=function(a,c,e){function f(a,b){c.left+=b*a.scrollLeft(),c.top+=b*a.scrollTop()}if(!e[0])return c;var g,h,i,j,k=d(a[0].ownerDocument),l=!!db.ie&&"CSS1Compat"!==b.compatMode,m=e[0];do"static"!==(h=d.css(m,"position"))&&("fixed"===h?(i=m.getBoundingClientRect(),f(k,-1)):(i=d(m).position(),i.left+=parseFloat(d.css(m,"borderLeftWidth"))||0,i.top+=parseFloat(d.css(m,"borderTopWidth"))||0),c.left-=i.left+(parseFloat(d.css(m,"marginLeft"))||0),c.top-=i.top+(parseFloat(d.css(m,"marginTop"))||0),g||"hidden"===(j=d.css(m,"overflow"))||"visible"===j||(g=d(m)));while(m=m.offsetParent);return g&&(g[0]!==k[0]||l)&&f(g,1),c};var gb=(A=z.reposition.Corner=function(a,b){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,O).toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase(),this.forceY=!!b;var c=a.charAt(0);this.precedance="t"===c||"b"===c?H:G}).prototype;gb.invert=function(a,b){this[a]=this[a]===L?N:this[a]===N?L:b||this[a]},gb.string=function(a){var b=this.x,c=this.y,d=b!==c?"center"===b||"center"!==c&&(this.precedance===H||this.forceY)?[c,b]:[b,c]:[b];return a!==!1?d.join(" "):d},gb.abbrev=function(){var a=this.string(!1);return a[0].charAt(0)+(a[1]&&a[1].charAt(0)||"")},gb.clone=function(){return new A(this.string(),this.forceY)},z.toggle=function(a,c){var e=this.cache,f=this.options,g=this.tooltip;if(c){if(/over|enter/.test(c.type)&&e.event&&/out|leave/.test(e.event.type)&&f.show.target.add(c.target).length===f.show.target.length&&g.has(c.relatedTarget).length)return this;e.event=d.event.fix(c)}if(this.waiting&&!a&&(this.hiddenDuringWait=D),!this.rendered)return a?this.render(1):this;if(this.destroyed||this.disabled)return this;var h,i,j,k=a?"show":"hide",l=this.options[k],m=(this.options[a?"hide":"show"],this.options.position),n=this.options.content,o=this.tooltip.css("width"),p=this.tooltip.is(":visible"),q=a||1===l.target.length,r=!c||l.target.length<2||e.target[0]===c.target;return(typeof a).search("boolean|number")&&(a=!p),h=!g.is(":animated")&&p===a&&r,i=h?F:!!this._trigger(k,[90]),this.destroyed?this:(i!==E&&a&&this.focus(c),!i||h?this:(d.attr(g[0],"aria-hidden",!a),a?(this.mouse&&(e.origin=d.event.fix(this.mouse)),d.isFunction(n.text)&&this._updateContent(n.text,E),d.isFunction(n.title)&&this._updateTitle(n.title,E),!C&&"mouse"===m.target&&m.adjust.mouse&&(d(b).bind("mousemove."+S,this._storeMouse),C=D),o||g.css("width",g.outerWidth(E)),this.reposition(c,arguments[2]),o||g.css("width",""),l.solo&&("string"==typeof l.solo?d(l.solo):d(W,l.solo)).not(g).not(l.target).qtip("hide",d.Event("tooltipsolo"))):(clearTimeout(this.timers.show),delete e.origin,C&&!d(W+'[tracking="true"]:visible',l.solo).not(g).length&&(d(b).unbind("mousemove."+S),C=E),this.blur(c)),j=d.proxy(function(){a?(db.ie&&g[0].style.removeAttribute("filter"),g.css("overflow",""),"string"==typeof l.autofocus&&d(this.options.show.autofocus,g).focus(),this.options.show.target.trigger("qtip-"+this.id+"-inactive")):g.css({display:"",visibility:"",opacity:"",left:"",top:""}),this._trigger(a?"visible":"hidden")},this),l.effect===E||q===E?(g[k](),j()):d.isFunction(l.effect)?(g.stop(1,1),l.effect.call(g,this),g.queue("fx",function(a){j(),a()})):g.fadeTo(90,a?1:0,j),a&&l.target.trigger("qtip-"+this.id+"-inactive"),this))},z.show=function(a){return this.toggle(D,a)},z.hide=function(a){return this.toggle(E,a)},z.focus=function(a){if(!this.rendered||this.destroyed)return this;var b=d(W),c=this.tooltip,e=parseInt(c[0].style.zIndex,10),f=y.zindex+b.length;return c.hasClass($)||this._trigger("focus",[f],a)&&(e!==f&&(b.each(function(){this.style.zIndex>e&&(this.style.zIndex=this.style.zIndex-1)}),b.filter("."+$).qtip("blur",a)),c.addClass($)[0].style.zIndex=f),this},z.blur=function(a){return!this.rendered||this.destroyed?this:(this.tooltip.removeClass($),this._trigger("blur",[this.tooltip.css("zIndex")],a),this)},z.disable=function(a){return this.destroyed?this:("toggle"===a?a=!(this.rendered?this.tooltip.hasClass(ab):this.disabled):"boolean"!=typeof a&&(a=D),this.rendered&&this.tooltip.toggleClass(ab,a).attr("aria-disabled",a),this.disabled=!!a,this)},z.enable=function(){return this.disable(E)},z._createButton=function(){var a=this,b=this.elements,c=b.tooltip,e=this.options.content.button,f="string"==typeof e,g=f?e:"Close tooltip";b.button&&b.button.remove(),b.button=e.jquery?e:d("",{"class":"qtip-close "+(this.options.style.widget?"":S+"-icon"),title:g,"aria-label":g}).prepend(d("",{"class":"ui-icon ui-icon-close",html:"×"})),b.button.appendTo(b.titlebar||c).attr("role","button").click(function(b){return c.hasClass(ab)||a.hide(b),E})},z._updateButton=function(a){if(!this.rendered)return E;var b=this.elements.button;a?this._createButton():b.remove()},z._setWidget=function(){var a=this.options.style.widget,b=this.elements,c=b.tooltip,d=c.hasClass(ab);c.removeClass(ab),ab=a?"ui-state-disabled":"qtip-disabled",c.toggleClass(ab,d),c.toggleClass("ui-helper-reset "+k(),a).toggleClass(Z,this.options.style.def&&!a),b.content&&b.content.toggleClass(k("content"),a),b.titlebar&&b.titlebar.toggleClass(k("header"),a),b.button&&b.button.toggleClass(S+"-icon",!a)},z._storeMouse=function(a){return(this.mouse=d.event.fix(a)).type="mousemove",this},z._bind=function(a,b,c,e,f){if(a&&c&&b.length){var g="."+this._id+(e?"-"+e:"");return d(a).bind((b.split?b:b.join(g+" "))+g,d.proxy(c,f||this)),this}},z._unbind=function(a,b){return a&&d(a).unbind("."+this._id+(b?"-"+b:"")),this},z._trigger=function(a,b,c){var e=d.Event("tooltip"+a);return e.originalEvent=c&&d.extend({},c)||this.cache.event||F,this.triggering=a,this.tooltip.trigger(e,[this].concat(b||[])),this.triggering=E,!e.isDefaultPrevented()},z._bindEvents=function(a,b,c,e,f,g){var h=c.filter(e).add(e.filter(c)),i=[];h.length&&(d.each(b,function(b,c){var e=d.inArray(c,a);e>-1&&i.push(a.splice(e,1)[0])}),i.length&&(this._bind(h,i,function(a){var b=this.rendered?this.tooltip[0].offsetWidth>0:!1;(b?g:f).call(this,a)}),c=c.not(h),e=e.not(h))),this._bind(c,a,f),this._bind(e,b,g)},z._assignInitialEvents=function(a){function b(a){return this.disabled||this.destroyed?E:(this.cache.event=a&&d.event.fix(a),this.cache.target=a&&d(a.target),clearTimeout(this.timers.show),void(this.timers.show=l.call(this,function(){this.render("object"==typeof a||c.show.ready)},c.prerender?0:c.show.delay)))}var c=this.options,e=c.show.target,f=c.hide.target,g=c.show.event?d.trim(""+c.show.event).split(" "):[],h=c.hide.event?d.trim(""+c.hide.event).split(" "):[];this._bind(this.elements.target,["remove","removeqtip"],function(){this.destroy(!0)},"destroy"),/mouse(over|enter)/i.test(c.show.event)&&!/mouse(out|leave)/i.test(c.hide.event)&&h.push("mouseleave"),this._bind(e,"mousemove",function(a){this._storeMouse(a),this.cache.onTarget=D}),this._bindEvents(g,h,e,f,b,function(){return this.timers?void clearTimeout(this.timers.show):E}),(c.show.ready||c.prerender)&&b.call(this,a)},z._assignEvents=function(){var c=this,e=this.options,f=e.position,g=this.tooltip,h=e.show.target,i=e.hide.target,j=f.container,k=f.viewport,l=d(b),q=(d(b.body),d(a)),r=e.show.event?d.trim(""+e.show.event).split(" "):[],s=e.hide.event?d.trim(""+e.hide.event).split(" "):[];d.each(e.events,function(a,b){c._bind(g,"toggle"===a?["tooltipshow","tooltiphide"]:["tooltip"+a],b,null,g)}),/mouse(out|leave)/i.test(e.hide.event)&&"window"===e.hide.leave&&this._bind(l,["mouseout","blur"],function(a){/select|option/.test(a.target.nodeName)||a.relatedTarget||this.hide(a)}),e.hide.fixed?i=i.add(g.addClass(Y)):/mouse(over|enter)/i.test(e.show.event)&&this._bind(i,"mouseleave",function(){clearTimeout(this.timers.show)}),(""+e.hide.event).indexOf("unfocus")>-1&&this._bind(j.closest("html"),["mousedown","touchstart"],function(a){var b=d(a.target),c=this.rendered&&!this.tooltip.hasClass(ab)&&this.tooltip[0].offsetWidth>0,e=b.parents(W).filter(this.tooltip[0]).length>0;b[0]===this.target[0]||b[0]===this.tooltip[0]||e||this.target.has(b[0]).length||!c||this.hide(a)}),"number"==typeof e.hide.inactive&&(this._bind(h,"qtip-"+this.id+"-inactive",o,"inactive"),this._bind(i.add(g),y.inactiveEvents,o)),this._bindEvents(r,s,h,i,m,n),this._bind(h.add(g),"mousemove",function(a){if("number"==typeof e.hide.distance){var b=this.cache.origin||{},c=this.options.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&this.hide(a)}this._storeMouse(a)}),"mouse"===f.target&&f.adjust.mouse&&(e.hide.event&&this._bind(h,["mouseenter","mouseleave"],function(a){return this.cache?void(this.cache.onTarget="mouseenter"===a.type):E}),this._bind(l,"mousemove",function(a){this.rendered&&this.cache.onTarget&&!this.tooltip.hasClass(ab)&&this.tooltip[0].offsetWidth>0&&this.reposition(a)})),(f.adjust.resize||k.length)&&this._bind(d.event.special.resize?k:q,"resize",p),f.adjust.scroll&&this._bind(q.add(f.container),"scroll",p)},z._unassignEvents=function(){var c=this.options,e=c.show.target,f=c.hide.target,g=d.grep([this.elements.target[0],this.rendered&&this.tooltip[0],c.position.container[0],c.position.viewport[0],c.position.container.closest("html")[0],a,b],function(a){return"object"==typeof a});e&&e.toArray&&(g=g.concat(e.toArray())),f&&f.toArray&&(g=g.concat(f.toArray())),this._unbind(g)._unbind(g,"destroy")._unbind(g,"inactive")},d(function(){q(W,["mouseenter","mouseleave"],function(a){var b="mouseenter"===a.type,c=d(a.currentTarget),e=d(a.relatedTarget||a.target),f=this.options;b?(this.focus(a),c.hasClass(Y)&&!c.hasClass(ab)&&clearTimeout(this.timers.hide)):"mouse"===f.position.target&&f.position.adjust.mouse&&f.hide.event&&f.show.target&&!e.closest(f.show.target[0]).length&&this.hide(a),c.toggleClass(_,b)}),q("["+U+"]",X,o)}),y=d.fn.qtip=function(a,b,e){var f=(""+a).toLowerCase(),g=F,i=d.makeArray(arguments).slice(1),j=i[i.length-1],k=this[0]?d.data(this[0],S):F;return!arguments.length&&k||"api"===f?k:"string"==typeof a?(this.each(function(){var a=d.data(this,S);if(!a)return D;if(j&&j.timeStamp&&(a.cache.event=j),!b||"option"!==f&&"options"!==f)a[f]&&a[f].apply(a,i);else{if(e===c&&!d.isPlainObject(b))return g=a.get(b),E;a.set(b,e)}}),g!==F?g:this):"object"!=typeof a&&arguments.length?void 0:(k=h(d.extend(D,{},a)),this.each(function(a){var b,c;return c=d.isArray(k.id)?k.id[a]:k.id,c=!c||c===E||c.length<1||y.api[c]?y.nextid++:c,b=r(d(this),c,k),b===E?D:(y.api[c]=b,d.each(R,function(){"initialize"===this.initialize&&this(b)}),void b._assignInitialEvents(j))}))},d.qtip=e,y.api={},d.each({attr:function(a,b){if(this.length){var c=this[0],e="title",f=d.data(c,"qtip");if(a===e&&f&&"object"==typeof f&&f.options.suppress)return arguments.length<2?d.attr(c,cb):(f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",b),this.attr(cb,b))}return d.fn["attr"+bb].apply(this,arguments)},clone:function(a){var b=(d([]),d.fn["clone"+bb].apply(this,arguments));return a||b.filter("["+cb+"]").attr("title",function(){return d.attr(this,cb)}).removeAttr(cb),b}},function(a,b){if(!b||d.fn[a+bb])return D;var c=d.fn[a+bb]=d.fn[a];d.fn[a]=function(){return b.apply(this,arguments)||c.apply(this,arguments)}}),d.ui||(d["cleanData"+bb]=d.cleanData,d.cleanData=function(a){for(var b,c=0;(b=d(a[c])).length;c++)if(b.attr(T))try{b.triggerHandler("removeqtip")}catch(e){}d["cleanData"+bb].apply(this,arguments)}),y.version="2.2.1",y.nextid=0,y.inactiveEvents=X,y.zindex=15e3,y.defaults={prerender:E,id:E,overwrite:D,suppress:D,content:{text:D,attr:"title",title:E,button:E},position:{my:"top left",at:"bottom right",target:E,container:E,viewport:E,adjust:{x:0,y:0,mouse:D,scroll:D,resize:D,method:"flipinvert flipinvert"},effect:function(a,b){d(this).animate(b,{duration:200,queue:E})}},show:{target:E,event:"mouseenter",effect:D,delay:90,solo:E,ready:E,autofocus:E},hide:{target:E,event:"mouseleave",effect:D,delay:0,fixed:E,inactive:E,leave:"window",distance:E},style:{classes:"",widget:E,width:E,height:E,def:D},events:{render:F,move:F,show:F,hide:F,toggle:F,visible:F,hidden:F,focus:F,blur:F}};var hb,ib="margin",jb="border",kb="color",lb="background-color",mb="transparent",nb=" !important",ob=!!b.createElement("canvas").getContext,pb=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,qb={},rb=["Webkit","O","Moz","ms"];if(ob)var sb=a.devicePixelRatio||1,tb=function(){var a=b.createElement("canvas").getContext("2d");return a.backingStorePixelRatio||a.webkitBackingStorePixelRatio||a.mozBackingStorePixelRatio||a.msBackingStorePixelRatio||a.oBackingStorePixelRatio||1}(),ub=sb/tb;else var vb=function(a,b,c){return"'};d.extend(v.prototype,{init:function(a){var b,c;c=this.element=a.elements.tip=d("
    ",{"class":S+"-tip"}).prependTo(a.tooltip),ob?(b=d("").appendTo(this.element)[0].getContext("2d"),b.lineJoin="miter",b.miterLimit=1e5,b.save()):(b=vb("shape",'coordorigin="0,0"',"position:absolute;"),this.element.html(b+b),a._bind(d("*",c).add(c),["click","mousedown"],function(a){a.stopPropagation()},this._ns)),a._bind(a.tooltip,"tooltipmove",this.reposition,this._ns,this),this.create()},_swapDimensions:function(){this.size[0]=this.options.height,this.size[1]=this.options.width},_resetDimensions:function(){this.size[0]=this.options.width,this.size[1]=this.options.height},_useTitle:function(a){var b=this.qtip.elements.titlebar;return b&&(a.y===K||a.y===O&&this.element.position().top+this.size[1]/2+this.options.offsetl&&!pb.test(e[1])&&(e[0]=e[1]),this.border=l=p.border!==D?p.border:l):this.border=l=0,k=this.size=this._calculateSize(b),n.css({width:k[0],height:k[1],lineHeight:k[1]+"px"}),j=b.precedance===H?[s(r.x===L?l:r.x===N?k[0]-q[0]-l:(k[0]-q[0])/2),s(r.y===K?k[1]-q[1]:0)]:[s(r.x===L?k[0]-q[0]:0),s(r.y===K?l:r.y===M?k[1]-q[1]-l:(k[1]-q[1])/2)],ob?(g=o[0].getContext("2d"),g.restore(),g.save(),g.clearRect(0,0,6e3,6e3),h=this._calculateTip(r,q,ub),i=this._calculateTip(r,this.size,ub),o.attr(I,k[0]*ub).attr(J,k[1]*ub),o.css(I,k[0]).css(J,k[1]),this._drawCoords(g,i),g.fillStyle=e[1],g.fill(),g.translate(j[0]*ub,j[1]*ub),this._drawCoords(g,h),g.fillStyle=e[0],g.fill()):(h=this._calculateTip(r),h="m"+h[0]+","+h[1]+" l"+h[2]+","+h[3]+" "+h[4]+","+h[5]+" xe",j[2]=l&&/^(r|b)/i.test(b.string())?8===db.ie?2:1:0,o.css({coordsize:k[0]+l+" "+(k[1]+l),antialias:""+(r.string().indexOf(O)>-1),left:j[0]-j[2]*Number(f===G),top:j[1]-j[2]*Number(f===H),width:k[0]+l,height:k[1]+l}).each(function(a){var b=d(this);b[b.prop?"prop":"attr"]({coordsize:k[0]+l+" "+(k[1]+l),path:h,fillcolor:e[0],filled:!!a,stroked:!a}).toggle(!(!l&&!a)),!a&&b.html(vb("stroke",'weight="'+2*l+'px" color="'+e[1]+'" miterlimit="1000" joinstyle="miter"'))})),a.opera&&setTimeout(function(){m.tip.css({display:"inline-block",visibility:"visible"})},1),c!==E&&this.calculate(b,k)},calculate:function(a,b){if(!this.enabled)return E;var c,e,f=this,g=this.qtip.elements,h=this.element,i=this.options.offset,j=(g.tooltip.hasClass("ui-widget"),{});return a=a||this.corner,c=a.precedance,b=b||this._calculateSize(a),e=[a.x,a.y],c===G&&e.reverse(),d.each(e,function(d,e){var h,k,l; + e===O?(h=c===H?L:K,j[h]="50%",j[ib+"-"+h]=-Math.round(b[c===H?0:1]/2)+i):(h=f._parseWidth(a,e,g.tooltip),k=f._parseWidth(a,e,g.content),l=f._parseRadius(a),j[e]=Math.max(-f.border,d?k:i+(l>h?l:-h)))}),j[a[c]]-=b[c===G?0:1],h.css({margin:"",top:"",bottom:"",left:"",right:""}).css(j),j},reposition:function(a,b,d){function e(a,b,c,d,e){a===Q&&j.precedance===b&&k[d]&&j[c]!==O?j.precedance=j.precedance===G?H:G:a!==Q&&k[d]&&(j[b]=j[b]===O?k[d]>0?d:e:j[b]===d?e:d)}function f(a,b,e){j[a]===O?p[ib+"-"+b]=o[a]=g[ib+"-"+b]-k[b]:(h=g[e]!==c?[k[b],-g[b]]:[-k[b],g[b]],(o[a]=Math.max(h[0],h[1]))>h[0]&&(d[b]-=k[b],o[b]=E),p[g[e]!==c?e:b]=o[a])}if(this.enabled){var g,h,i=b.cache,j=this.corner.clone(),k=d.adjusted,l=b.options.position.adjust.method.split(" "),m=l[0],n=l[1]||l[0],o={left:E,top:E,x:0,y:0},p={};this.corner.fixed!==D&&(e(m,G,H,L,N),e(n,H,G,K,M),(j.string()!==i.corner.string()||i.cornerTop!==k.top||i.cornerLeft!==k.left)&&this.update(j,E)),g=this.calculate(j),g.right!==c&&(g.left=-g.right),g.bottom!==c&&(g.top=-g.bottom),g.user=this.offset,(o.left=m===Q&&!!k.left)&&f(G,L,N),(o.top=n===Q&&!!k.top)&&f(H,K,M),this.element.css(p).toggle(!(o.x&&o.y||j.x===O&&o.y||j.y===O&&o.x)),d.left-=g.left.charAt?g.user:m!==Q||o.top||!o.left&&!o.top?g.left+this.border:0,d.top-=g.top.charAt?g.user:n!==Q||o.left||!o.left&&!o.top?g.top+this.border:0,i.cornerLeft=k.left,i.cornerTop=k.top,i.corner=j.clone()}},destroy:function(){this.qtip._unbind(this.qtip.tooltip,this._ns),this.qtip.elements.tip&&this.qtip.elements.tip.find("*").remove().end().remove()}}),hb=R.tip=function(a){return new v(a,a.options.style.tip)},hb.initialize="render",hb.sanitize=function(a){if(a.style&&"tip"in a.style){var b=a.style.tip;"object"!=typeof b&&(b=a.style.tip={corner:b}),/string|boolean/i.test(typeof b.corner)||(b.corner=D)}},B.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){this.create(),this.qtip.reposition()},"^style.tip.(height|width)$":function(a){this.size=[a.width,a.height],this.update(),this.qtip.reposition()},"^content.title|style.(classes|widget)$":function(){this.update()}},d.extend(D,y.defaults,{style:{tip:{corner:D,mimic:E,width:6,height:6,border:D,offset:0}}});var wb,xb,yb="qtip-modal",zb="."+yb;xb=function(){function a(a){if(d.expr[":"].focusable)return d.expr[":"].focusable;var b,c,e,f=!isNaN(d.attr(a,"tabindex")),g=a.nodeName&&a.nodeName.toLowerCase();return"area"===g?(b=a.parentNode,c=b.name,a.href&&c&&"map"===b.nodeName.toLowerCase()?(e=d("img[usemap=#"+c+"]")[0],!!e&&e.is(":visible")):!1):/input|select|textarea|button|object/.test(g)?!a.disabled:"a"===g?a.href||f:f}function c(a){k.length<1&&a.length?a.not("body").blur():k.first().focus()}function e(a){if(i.is(":visible")){var b,e=d(a.target),h=f.tooltip,j=e.closest(W);b=j.length<1?E:parseInt(j[0].style.zIndex,10)>parseInt(h[0].style.zIndex,10),b||e.closest(W)[0]===h[0]||c(e),g=a.target===k[k.length-1]}}var f,g,h,i,j=this,k={};d.extend(j,{init:function(){return i=j.elem=d("
    ",{id:"qtip-overlay",html:"
    ",mousedown:function(){return E}}).hide(),d(b.body).bind("focusin"+zb,e),d(b).bind("keydown"+zb,function(a){f&&f.options.show.modal.escape&&27===a.keyCode&&f.hide(a)}),i.bind("click"+zb,function(a){f&&f.options.show.modal.blur&&f.hide(a)}),j},update:function(b){f=b,k=b.options.show.modal.stealfocus!==E?b.tooltip.find("*").filter(function(){return a(this)}):[]},toggle:function(a,e,g){var k=(d(b.body),a.tooltip),l=a.options.show.modal,m=l.effect,n=e?"show":"hide",o=i.is(":visible"),p=d(zb).filter(":visible:not(:animated)").not(k);return j.update(a),e&&l.stealfocus!==E&&c(d(":focus")),i.toggleClass("blurs",l.blur),e&&i.appendTo(b.body),i.is(":animated")&&o===e&&h!==E||!e&&p.length?j:(i.stop(D,E),d.isFunction(m)?m.call(i,e):m===E?i[n]():i.fadeTo(parseInt(g,10)||90,e?1:0,function(){e||i.hide()}),e||i.queue(function(a){i.css({left:"",top:""}),d(zb).length||i.detach(),a()}),h=e,f.destroyed&&(f=F),j)}}),j.init()},xb=new xb,d.extend(w.prototype,{init:function(a){var b=a.tooltip;return this.options.on?(a.elements.overlay=xb.elem,b.addClass(yb).css("z-index",y.modal_zindex+d(zb).length),a._bind(b,["tooltipshow","tooltiphide"],function(a,c,e){var f=a.originalEvent;if(a.target===b[0])if(f&&"tooltiphide"===a.type&&/mouse(leave|enter)/.test(f.type)&&d(f.relatedTarget).closest(xb.elem[0]).length)try{a.preventDefault()}catch(g){}else(!f||f&&"tooltipsolo"!==f.type)&&this.toggle(a,"tooltipshow"===a.type,e)},this._ns,this),a._bind(b,"tooltipfocus",function(a,c){if(!a.isDefaultPrevented()&&a.target===b[0]){var e=d(zb),f=y.modal_zindex+e.length,g=parseInt(b[0].style.zIndex,10);xb.elem[0].style.zIndex=f-1,e.each(function(){this.style.zIndex>g&&(this.style.zIndex-=1)}),e.filter("."+$).qtip("blur",a.originalEvent),b.addClass($)[0].style.zIndex=f,xb.update(c);try{a.preventDefault()}catch(h){}}},this._ns,this),void a._bind(b,"tooltiphide",function(a){a.target===b[0]&&d(zb).filter(":visible").not(b).last().qtip("focus",a)},this._ns,this)):this},toggle:function(a,b,c){return a&&a.isDefaultPrevented()?this:void xb.toggle(this.qtip,!!b,c)},destroy:function(){this.qtip.tooltip.removeClass(yb),this.qtip._unbind(this.qtip.tooltip,this._ns),xb.toggle(this.qtip,E),delete this.qtip.elements.overlay}}),wb=R.modal=function(a){return new w(a,a.options.show.modal)},wb.sanitize=function(a){a.show&&("object"!=typeof a.show.modal?a.show.modal={on:!!a.show.modal}:"undefined"==typeof a.show.modal.on&&(a.show.modal.on=D))},y.modal_zindex=y.zindex-200,wb.initialize="render",B.modal={"^show.modal.(on|blur)$":function(){this.destroy(),this.init(),this.qtip.elems.overlay.toggle(this.qtip.tooltip[0].offsetWidth>0)}},d.extend(D,y.defaults,{show:{modal:{on:E,effect:D,blur:D,stealfocus:D,escape:D}}}),R.viewport=function(c,d,e,f,g,h,i){function j(a,b,c,e,f,g,h,i,j){var k=d[f],s=u[a],t=v[a],w=c===Q,x=s===f?j:s===g?-j:-j/2,y=t===f?i:t===g?-i:-i/2,z=q[f]+r[f]-(n?0:m[f]),A=z-k,B=k+j-(h===I?o:p)-z,C=x-(u.precedance===a||s===u[b]?y:0)-(t===O?i/2:0);return w?(C=(s===f?1:-1)*x,d[f]+=A>0?A:B>0?-B:0,d[f]=Math.max(-m[f]+r[f],k-C,Math.min(Math.max(-m[f]+r[f]+(h===I?o:p),k+C),d[f],"center"===s?k-x:1e9))):(e*=c===P?2:0,A>0&&(s!==f||B>0)?(d[f]-=C+e,l.invert(a,f)):B>0&&(s!==g||A>0)&&(d[f]-=(s===O?-C:C)+e,l.invert(a,g)),d[f]B&&(d[f]=k,l=u.clone())),d[f]-k}var k,l,m,n,o,p,q,r,s=e.target,t=c.elements.tooltip,u=e.my,v=e.at,w=e.adjust,x=w.method.split(" "),y=x[0],z=x[1]||x[0],A=e.viewport,B=e.container,C=(c.cache,{left:0,top:0});return A.jquery&&s[0]!==a&&s[0]!==b.body&&"none"!==w.method?(m=B.offset()||C,n="static"===B.css("position"),k="fixed"===t.css("position"),o=A[0]===a?A.width():A.outerWidth(E),p=A[0]===a?A.height():A.outerHeight(E),q={left:k?0:A.scrollLeft(),top:k?0:A.scrollTop()},r=A.offset()||C,("shift"!==y||"shift"!==z)&&(l=u.clone()),C={left:"none"!==y?j(G,H,y,w.x,L,N,I,f,h):0,top:"none"!==z?j(H,G,z,w.y,K,M,J,g,i):0,my:l}):C},R.polys={polygon:function(a,b){var c,d,e,f={width:0,height:0,position:{top:1e10,right:0,bottom:0,left:1e10},adjustable:E},g=0,h=[],i=1,j=1,k=0,l=0;for(g=a.length;g--;)c=[parseInt(a[--g],10),parseInt(a[g+1],10)],c[0]>f.position.right&&(f.position.right=c[0]),c[0]f.position.bottom&&(f.position.bottom=c[1]),c[1]0&&e>0&&i>0&&j>0;)for(d=Math.floor(d/2),e=Math.floor(e/2),b.x===L?i=d:b.x===N?i=f.width-d:i+=Math.floor(d/2),b.y===K?j=e:b.y===M?j=f.height-e:j+=Math.floor(e/2),g=h.length;g--&&!(h.length<2);)k=h[g][0]-f.position.left,l=h[g][1]-f.position.top,(b.x===L&&k>=i||b.x===N&&i>=k||b.x===O&&(i>k||k>f.width-i)||b.y===K&&l>=j||b.y===M&&j>=l||b.y===O&&(j>l||l>f.height-j))&&h.splice(g,1);f.position={left:h[0][0],top:h[0][1]}}return f},rect:function(a,b,c,d){return{width:Math.abs(c-a),height:Math.abs(d-b),position:{left:Math.min(a,c),top:Math.min(b,d)}}},_angles:{tc:1.5,tr:7/4,tl:5/4,bc:.5,br:.25,bl:.75,rc:2,lc:1,c:0},ellipse:function(a,b,c,d,e){var f=R.polys._angles[e.abbrev()],g=0===f?0:c*Math.cos(f*Math.PI),h=d*Math.sin(f*Math.PI);return{width:2*c-Math.abs(g),height:2*d-Math.abs(h),position:{left:a+g,top:b+h},adjustable:E}},circle:function(a,b,c,d){return R.polys.ellipse(a,b,c,c,d)}},R.svg=function(a,c,e){for(var f,g,h,i,j,k,l,m,n,o=(d(b),c[0]),p=d(o.ownerSVGElement),q=o.ownerDocument,r=(parseInt(c.css("stroke-width"),10)||0)/2;!o.getBBox;)o=o.parentNode;if(!o.getBBox||!o.parentNode)return E;switch(o.nodeName){case"ellipse":case"circle":m=R.polys.ellipse(o.cx.baseVal.value,o.cy.baseVal.value,(o.rx||o.r).baseVal.value+r,(o.ry||o.r).baseVal.value+r,e);break;case"line":case"polygon":case"polyline":for(l=o.points||[{x:o.x1.baseVal.value,y:o.y1.baseVal.value},{x:o.x2.baseVal.value,y:o.y2.baseVal.value}],m=[],k=-1,i=l.numberOfItems||l.length;++k';d.extend(x.prototype,{_scroll:function(){var b=this.qtip.elements.overlay;b&&(b[0].style.top=d(a).scrollTop()+"px")},init:function(c){var e=c.tooltip;d("select, object").length<1&&(this.bgiframe=c.elements.bgiframe=d(Bb).appendTo(e),c._bind(e,"tooltipmove",this.adjustBGIFrame,this._ns,this)),this.redrawContainer=d("
    ",{id:S+"-rcontainer"}).appendTo(b.body),c.elements.overlay&&c.elements.overlay.addClass("qtipmodal-ie6fix")&&(c._bind(a,["scroll","resize"],this._scroll,this._ns,this),c._bind(e,["tooltipshow"],this._scroll,this._ns,this)),this.redraw()},adjustBGIFrame:function(){var a,b,c=this.qtip.tooltip,d={height:c.outerHeight(E),width:c.outerWidth(E)},e=this.qtip.plugins.tip,f=this.qtip.elements.tip;b=parseInt(c.css("borderLeftWidth"),10)||0,b={left:-b,top:-b},e&&f&&(a="x"===e.corner.precedance?[I,L]:[J,K],b[a[1]]-=f[a[0]]()),this.bgiframe.css(b).css(d)},redraw:function(){if(this.qtip.rendered<1||this.drawing)return this;var a,b,c,d,e=this.qtip.tooltip,f=this.qtip.options.style,g=this.qtip.options.position.container;return this.qtip.drawing=1,f.height&&e.css(J,f.height),f.width?e.css(I,f.width):(e.css(I,"").appendTo(this.redrawContainer),b=e.width(),1>b%2&&(b+=1),c=e.css("maxWidth")||"",d=e.css("minWidth")||"",a=(c+d).indexOf("%")>-1?g.width()/100:0,c=(c.indexOf("%")>-1?a:1)*parseInt(c,10)||b,d=(d.indexOf("%")>-1?a:1)*parseInt(d,10)||0,b=c+d?Math.min(Math.max(b,d),c):b,e.css(I,Math.round(b)).appendTo(g)),this.drawing=0,this},destroy:function(){this.bgiframe&&this.bgiframe.remove(),this.qtip._unbind([a,this.qtip.tooltip],this._ns)}}),Ab=R.ie6=function(a){return 6===db.ie?new x(a):E},Ab.initialize="render",B.ie6={"^content|style$":function(){this.redraw()}}})}(window,document); +//# sourceMappingURL=jquery.qtip.min.js.map \ No newline at end of file diff --git a/redux/ReduxCore/assets/js/vendor/redux.select2.sortable.js b/redux/ReduxCore/assets/js/vendor/redux.select2.sortable.js new file mode 100644 index 0000000..896c1ad --- /dev/null +++ b/redux/ReduxCore/assets/js/vendor/redux.select2.sortable.js @@ -0,0 +1,152 @@ +/** + * jQuery Select2 Sortable + * - enable select2 to be sortable via normal select element + * + * author : Vafour + * modified : Kevin Provance (kprovance) + * inspired by : jQuery Chosen Sortable (https://github.com/mrhenry/jquery-chosen-sortable) + * License : GPL + */ + +(function ($) { + $.fn.extend({ + select2SortableOrder: function () { + var $this = this.filter('[multiple]'); + + $this.each(function () { + var $select = $(this); + + // skip elements not select2-ed + if (typeof ($select.data('select2')) !== 'object') { + return false; + } + + var $select2 = $select.siblings('.select2-container'); + var sorted; + + // Opt group names + var optArr = []; + + $select.find('optgroup').each(function(idx, val) { + optArr.push (val); + }); + + $select.find('option').each(function(idx, val) { + var groupName = $(this).parent('optgroup').prop('label'); + var optVal = this; + + if (groupName === undefined) { + if (this.value !== '' && !this.selected) { + optArr.push (optVal); + } + } + }); + + sorted = $($select2.find('.select2-choices li[class!="select2-search-field"]').map(function () { + if (!this) { + return undefined; + } + + if($(this).data('select2Data') != undefined){ + var id = $(this).data('select2Data').id; + return $select.find('option[value="' + id + '"]')[0]; + } + + + //var id = $(this).data('select2Data').id; + + //return $select.find('option[value="' + id + '"]')[0]; + })); + + sorted.push.apply(sorted, optArr); + + $select.children().remove(); + $select.append(sorted); + }); + + return $this; + }, + + select2Sortable: function () { + var args = Array.prototype.slice.call(arguments, 0); + $this = this.filter('[multiple]'), + validMethods = ['destroy']; + + if (args.length === 0 || typeof (args[0]) === 'object') { + var defaultOptions = { + bindOrder: 'formSubmit', // or sortableStop + sortableOptions: { + placeholder: 'ui-state-highlight', + items: 'li:not(.select2-search-field)', + tolerance: 'pointer' + } + }; + + var options = $.extend(defaultOptions, args[0]); + + // Init select2 only if not already initialized to prevent select2 configuration loss + if (typeof ($this.data('select2')) !== 'object') { + $this.select2(); + } + + $this.each(function () { + var $select = $(this) + var $select2choices = $select.siblings('.select2-container').find('.select2-choices'); + + // Init jQuery UI Sortable + $select2choices.sortable(options.sortableOptions); + + switch (options.bindOrder) { + case 'sortableStop': + // apply options ordering in sortstop event + $select2choices.on("sortstop.select2sortable", function (event, ui) { + $select.select2SortableOrder(); + }); + + $select.on('change', function (e) { + $(this).select2SortableOrder(); + }); + break; + + default: + // apply options ordering in form submit + $select.closest('form').unbind('submit.select2sortable').on('submit.select2sortable', function () { + $select.select2SortableOrder(); + }); + break; + } + }); + } + else if (typeof (args[0] === 'string')) { + if ($.inArray(args[0], validMethods) == -1) { + throw "Unknown method: " + args[0]; + } + + if (args[0] === 'destroy') { + $this.select2SortableDestroy(); + } + } + + return $this; + }, + + select2SortableDestroy: function () { + var $this = this.filter('[multiple]'); + $this.each(function () { + var $select = $(this) + var $select2choices = $select.parent().find('.select2-choices'); + + // unbind form submit event + $select.closest('form').unbind('submit.select2sortable'); + + // unbind sortstop event + $select2choices.unbind("sortstop.select2sortable"); + + // destroy select2Sortable + $select2choices.sortable('destroy'); + }); + + return $this; + } + }); +}(jQuery)); \ No newline at end of file diff --git a/redux/ReduxCore/assets/js/vendor/redux.select2.sortable.min.js b/redux/ReduxCore/assets/js/vendor/redux.select2.sortable.min.js new file mode 100644 index 0000000..85cd7e8 --- /dev/null +++ b/redux/ReduxCore/assets/js/vendor/redux.select2.sortable.min.js @@ -0,0 +1 @@ +!function(o){o.fn.extend({select2SortableOrder:function(){var e=this.filter("[multiple]");return e.each(function(){var t=o(this);if("object"!=typeof t.data("select2"))return!1;var e,s=t.siblings(".select2-container"),i=[];t.find("optgroup").each(function(e,t){i.push(t)}),t.find("option").each(function(e,t){void 0===o(this).parent("optgroup").prop("label")&&(""===this.value||this.selected||i.push(this))}),(e=o(s.find('.select2-choices li[class!="select2-search-field"]').map(function(){if(this&&null!=o(this).data("select2Data")){var e=o(this).data("select2Data").id;return t.find('option[value="'+e+'"]')[0]}}))).push.apply(e,i),t.children().remove(),t.append(e)}),e},select2Sortable:function(){var e=Array.prototype.slice.call(arguments,0);if($this=this.filter("[multiple]"),validMethods=["destroy"],0===e.length||"object"==typeof e[0]){var t=o.extend({bindOrder:"formSubmit",sortableOptions:{placeholder:"ui-state-highlight",items:"li:not(.select2-search-field)",tolerance:"pointer"}},e[0]);"object"!=typeof $this.data("select2")&&$this.select2(),$this.each(function(){var s=o(this),e=s.siblings(".select2-container").find(".select2-choices");switch(e.sortable(t.sortableOptions),t.bindOrder){case"sortableStop":e.on("sortstop.select2sortable",function(e,t){s.select2SortableOrder()}),s.on("change",function(e){o(this).select2SortableOrder()});break;default:s.closest("form").unbind("submit.select2sortable").on("submit.select2sortable",function(){s.select2SortableOrder()})}})}else{if(e[0],-1==o.inArray(e[0],validMethods))throw"Unknown method: "+e[0];"destroy"===e[0]&&$this.select2SortableDestroy()}return $this},select2SortableDestroy:function(){var e=this.filter("[multiple]");return e.each(function(){var e=o(this),t=e.parent().find(".select2-choices");e.closest("form").unbind("submit.select2sortable"),t.unbind("sortstop.select2sortable"),t.sortable("destroy")}),e}})}(jQuery); \ No newline at end of file diff --git a/redux/ReduxCore/assets/js/vendor/spectrum/redux-spectrum.js b/redux/ReduxCore/assets/js/vendor/spectrum/redux-spectrum.js new file mode 100644 index 0000000..5a30361 --- /dev/null +++ b/redux/ReduxCore/assets/js/vendor/spectrum/redux-spectrum.js @@ -0,0 +1,2088 @@ +// Spectrum Colorpicker v1.3.3 +// https://github.com/bgrins/spectrum +// Author: Brian Grinstead +// License: MIT + +(function (window, $, undefined) { + var defaultOpts = { + + // Callbacks + beforeShow: noop, + move: noop, + change: noop, + show: noop, + hide: noop, + + // Options + color: false, + flat: false, + showInput: false, + allowEmpty: false, + showButtons: true, + clickoutFiresChange: false, + showInitial: false, + showPalette: false, + showPaletteOnly: false, + showSelectionPalette: true, + localStorageKey: false, + appendTo: "body", + maxSelectionSize: 7, + cancelText: "cancel", + chooseText: "choose", + clearText: "Clear Color Selection", + preferredFormat: false, + className: "", // Deprecated - use containerClassName and replacerClassName instead. + containerClassName: "", + replacerClassName: "", + showAlpha: false, + theme: "sp-light", + palette: [["#ffffff", "#000000", "#ff0000", "#ff8000", "#ffff00", "#008000", "#0000ff", "#4b0082", "#9400d3"]], + selectionPalette: [], + disabled: false, + inputText: '' + }, + spectrums = [], + IE = !!/msie/i.exec( window.navigator.userAgent ), + rgbaSupport = (function() { + function contains( str, substr ) { + return !!~('' + str).indexOf(substr); + } + + var elem = document.createElement('div'); + var style = elem.style; + style.cssText = 'background-color:rgba(0,0,0,.5)'; + return contains(style.backgroundColor, 'rgba') || contains(style.backgroundColor, 'hsla'); + })(), + inputTypeColorSupport = (function() { + var colorInput = $("")[0]; + return colorInput.type === "color" && colorInput.value !== "#ffffff"; + })(), + replaceInput = [ + "
    ", + "
    ", + "
    ", + //"
    " + opts.inputText + "
    ", + "
    " + ].join(''), + markup = (function () { + + // IE does not support gradients with multiple stops, so we need to simulate + // that for the rainbow slider with 8 divs that each have a single gradient + var gradientFix = ""; + if (IE) { + for (var i = 1; i <= 6; i++) { + gradientFix += "
    "; + } + } + + return [ + "
    " + ].join(""); + })(); + + function paletteTemplate (p, color, className, tooltipFormat) { + var html = []; + for (var i = 0; i < p.length; i++) { + var current = p[i]; + if(current) { + var tiny = tinycolor(current); + var c = tiny.toHsl().l < 0.5 ? "sp-thumb-el sp-thumb-dark" : "sp-thumb-el sp-thumb-light"; + c += (tinycolor.equals(color, current)) ? " sp-thumb-active" : ""; + + var formattedString = tiny.toString(tooltipFormat || "rgb"); + var swatchStyle = rgbaSupport ? ("background-color:" + tiny.toRgbString()) : "filter:" + tiny.toFilter(); + html.push(''); + } else { + var cls = 'sp-clear-display'; + html.push(''); + } + } + return "
    " + html.join('') + "
    "; + } + + function hideAll() { + for (var i = 0; i < spectrums.length; i++) { + if (spectrums[i]) { + spectrums[i].hide(); + } + } + } + + function instanceOptions(o, callbackContext) { + var opts = $.extend({}, defaultOpts, o); + opts.callbacks = { + 'move': bind(opts.move, callbackContext), + 'change': bind(opts.change, callbackContext), + 'show': bind(opts.show, callbackContext), + 'hide': bind(opts.hide, callbackContext), + 'beforeShow': bind(opts.beforeShow, callbackContext) + }; + + return opts; + } + + function spectrum(element, o) { + + var opts = instanceOptions(o, element), + flat = opts.flat, + showSelectionPalette = opts.showSelectionPalette, + localStorageKey = opts.localStorageKey, + theme = opts.theme, + callbacks = opts.callbacks, + resize = throttle(reflow, 10), + visible = false, + dragWidth = 0, + dragHeight = 0, + dragHelperHeight = 0, + slideHeight = 0, + slideWidth = 0, + alphaWidth = 0, + alphaSlideHelperWidth = 0, + slideHelperHeight = 0, + currentHue = 0, + currentSaturation = 0, + currentValue = 0, + currentAlpha = 1, + palette = [], + paletteArray = [], + paletteLookup = {}, + selectionPalette = opts.selectionPalette.slice(0), + maxSelectionSize = opts.maxSelectionSize, + draggingClass = "sp-dragging", + inputText = opts.inputText, + shiftMovementDirection = null; + + var doc = element.ownerDocument, + body = doc.body, + boundElement = $(element), + disabled = false, + container = $(markup, doc).addClass(theme), + dragger = container.find(".sp-color"), + dragHelper = container.find(".sp-dragger"), + slider = container.find(".sp-hue"), + slideHelper = container.find(".sp-slider"), + alphaSliderInner = container.find(".sp-alpha-inner"), + alphaSlider = container.find(".sp-alpha"), + alphaSlideHelper = container.find(".sp-alpha-handle"), + textInput = container.find(".sp-input"), + paletteContainer = container.find(".sp-palette"), + initialColorContainer = container.find(".sp-initial"), + cancelButton = container.find(".sp-cancel"), + clearButton = container.find(".sp-clear"), + chooseButton = container.find(".sp-choose"), + isInput = boundElement.is("input"), + isInputTypeColor = isInput && inputTypeColorSupport && boundElement.attr("type") === "color", + shouldReplace = isInput && !flat, + replacer = (shouldReplace) ? $(replaceInput).addClass(theme).addClass(opts.className).addClass(opts.replacerClassName) : $([]), + offsetElement = (shouldReplace) ? replacer : boundElement, + previewElement = replacer.find(".sp-preview-inner"), + initialColor = opts.color || (isInput && boundElement.val()), + colorOnShow = false, + preferredFormat = opts.preferredFormat, + currentPreferredFormat = preferredFormat, + clickoutFiresChange = !opts.showButtons || opts.clickoutFiresChange, + isEmpty = !initialColor, + allowEmpty = opts.allowEmpty && !isInputTypeColor; + + if (inputText !== '') { + var x = $(offsetElement).find('div.sp-dd'); + x.text(inputText); + } + + function applyOptions() { + + if (opts.showPaletteOnly) { + opts.showPalette = true; + } + + if (opts.palette) { + palette = opts.palette.slice(0); + paletteArray = $.isArray(palette[0]) ? palette : [palette]; + paletteLookup = {}; + for (var i = 0; i < paletteArray.length; i++) { + for (var j = 0; j < paletteArray[i].length; j++) { + var rgb = tinycolor(paletteArray[i][j]).toRgbString(); + paletteLookup[rgb] = true; + } + } + } + + container.toggleClass("sp-flat", flat); + container.toggleClass("sp-input-disabled", !opts.showInput); + container.toggleClass("sp-alpha-enabled", opts.showAlpha); + container.toggleClass("sp-clear-enabled", allowEmpty); + container.toggleClass("sp-buttons-disabled", !opts.showButtons); + container.toggleClass("sp-palette-disabled", !opts.showPalette); + container.toggleClass("sp-palette-only", opts.showPaletteOnly); + container.toggleClass("sp-initial-disabled", !opts.showInitial); + container.addClass(opts.className).addClass(opts.containerClassName); + + reflow(); + } + + function initialize() { + + if (IE) { + container.find("*:not(input)").attr("unselectable", "on"); + } + + applyOptions(); + + if (shouldReplace) { + boundElement.after(replacer).hide(); + } + + if (!allowEmpty) { + clearButton.hide(); + } + + if (flat) { + boundElement.after(container).hide(); + } + else { + + var appendTo = opts.appendTo === "parent" ? boundElement.parent() : $(opts.appendTo); + if (appendTo.length !== 1) { + appendTo = $("body"); + } + + appendTo.append(container); + } + + updateSelectionPaletteFromStorage(); + + offsetElement.bind("click.spectrum touchstart.spectrum", function (e) { + if (!disabled) { + toggle(); + } + + e.stopPropagation(); + + if (!$(e.target).is("input")) { + e.preventDefault(); + } + }); + + if(boundElement.is(":disabled") || (opts.disabled === true)) { + disable(); + } + + // Prevent clicks from bubbling up to document. This would cause it to be hidden. + container.click(stopPropagation); + + // Handle user typed input + textInput.change(setFromTextInput); + textInput.bind("paste", function () { + setTimeout(setFromTextInput, 1); + }); + textInput.keydown(function (e) { if (e.keyCode == 13) { setFromTextInput(); } }); + + cancelButton.text(opts.cancelText); + cancelButton.bind("click.spectrum", function (e) { + e.stopPropagation(); + e.preventDefault(); + hide("cancel"); + }); + + clearButton.attr("title", opts.clearText); + clearButton.bind("click.spectrum", function (e) { + e.stopPropagation(); + e.preventDefault(); + isEmpty = true; + move(); + + if(flat) { + //for the flat style, this is a change event + updateOriginalInput(true); + } + }); + + chooseButton.text(opts.chooseText); + chooseButton.bind("click.spectrum", function (e) { + e.stopPropagation(); + e.preventDefault(); + + if (isValid()) { + updateOriginalInput(true); + hide(); + } + }); + + draggable(alphaSlider, function (dragX, dragY, e) { + currentAlpha = (dragX / alphaWidth); + isEmpty = false; + if (e.shiftKey) { + currentAlpha = Math.round(currentAlpha * 10) / 10; + } + + move(); + }, dragStart, dragStop); + + draggable(slider, function (dragX, dragY) { + currentHue = parseFloat(dragY / slideHeight); + isEmpty = false; + if (!opts.showAlpha) { + currentAlpha = 1; + } + move(); + }, dragStart, dragStop); + + draggable(dragger, function (dragX, dragY, e) { + + // shift+drag should snap the movement to either the x or y axis. + if (!e.shiftKey) { + shiftMovementDirection = null; + } + else if (!shiftMovementDirection) { + var oldDragX = currentSaturation * dragWidth; + var oldDragY = dragHeight - (currentValue * dragHeight); + var furtherFromX = Math.abs(dragX - oldDragX) > Math.abs(dragY - oldDragY); + + shiftMovementDirection = furtherFromX ? "x" : "y"; + } + + var setSaturation = !shiftMovementDirection || shiftMovementDirection === "x"; + var setValue = !shiftMovementDirection || shiftMovementDirection === "y"; + + if (setSaturation) { + currentSaturation = parseFloat(dragX / dragWidth); + } + if (setValue) { + currentValue = parseFloat((dragHeight - dragY) / dragHeight); + } + + isEmpty = false; + if (!opts.showAlpha) { + currentAlpha = 1; + } + + move(); + + }, dragStart, dragStop); + + if (!!initialColor) { + set(initialColor); + + // In case color was black - update the preview UI and set the format + // since the set function will not run (default color is black). + updateUI(); + currentPreferredFormat = preferredFormat || tinycolor(initialColor).format; + + addColorToSelectionPalette(initialColor); + } + else { + updateUI(); + } + + if (flat) { + show(); + } + + function palletElementClick(e) { + if (e.data && e.data.ignore) { + set($(this).data("color")); + move(); + } + else { + set($(this).data("color")); + move(); + updateOriginalInput(true); + hide(); + } + + return false; + } + + var paletteEvent = IE ? "mousedown.spectrum" : "click.spectrum touchstart.spectrum"; + paletteContainer.delegate(".sp-thumb-el", paletteEvent, palletElementClick); + initialColorContainer.delegate(".sp-thumb-el:nth-child(1)", paletteEvent, { ignore: true }, palletElementClick); + } + + function updateSelectionPaletteFromStorage() { + + if (localStorageKey && window.localStorage) { + + // Migrate old palettes over to new format. May want to remove this eventually. + try { + var oldPalette = window.localStorage[localStorageKey].split(",#"); + if (oldPalette.length > 1) { + delete window.localStorage[localStorageKey]; + $.each(oldPalette, function(i, c) { + addColorToSelectionPalette(c); + }); + } + } + catch(e) { } + + try { + selectionPalette = window.localStorage[localStorageKey].split(";"); + } + catch (e) { } + } + } + + function addColorToSelectionPalette(color) { + if (showSelectionPalette) { + var rgb = tinycolor(color).toRgbString(); + if (!paletteLookup[rgb] && $.inArray(rgb, selectionPalette) === -1) { + selectionPalette.push(rgb); + while(selectionPalette.length > maxSelectionSize) { + selectionPalette.shift(); + } + } + + if (localStorageKey && window.localStorage) { + try { + window.localStorage[localStorageKey] = selectionPalette.join(";"); + } + catch(e) { } + } + } + } + + function getUniqueSelectionPalette() { + var unique = []; + if (opts.showPalette) { + for (i = 0; i < selectionPalette.length; i++) { + var rgb = tinycolor(selectionPalette[i]).toRgbString(); + + if (!paletteLookup[rgb]) { + unique.push(selectionPalette[i]); + } + } + } + + return unique.reverse().slice(0, opts.maxSelectionSize); + } + + function drawPalette() { + + var currentColor = get(); + + var html = $.map(paletteArray, function (palette, i) { + return paletteTemplate(palette, currentColor, "sp-palette-row sp-palette-row-" + i, opts.preferredFormat); + }); + + updateSelectionPaletteFromStorage(); + + if (selectionPalette) { + html.push(paletteTemplate(getUniqueSelectionPalette(), currentColor, "sp-palette-row sp-palette-row-selection", opts.preferredFormat)); + } + + paletteContainer.html(html.join("")); + } + + function drawInitial() { + if (opts.showInitial) { + var initial = colorOnShow; + var current = get(); + initialColorContainer.html(paletteTemplate([initial, current], current, "sp-palette-row-initial", opts.preferredFormat)); + } + } + + function dragStart() { + if (dragHeight <= 0 || dragWidth <= 0 || slideHeight <= 0) { + reflow(); + } + container.addClass(draggingClass); + shiftMovementDirection = null; + boundElement.trigger('dragstart.spectrum', [ get() ]); + } + + function dragStop() { + container.removeClass(draggingClass); + boundElement.trigger('dragstop.spectrum', [ get() ]); + } + + function setFromTextInput() { + + var value = textInput.val(); + + if ((value === null || value === "") && allowEmpty) { + set(null); + updateOriginalInput(true); + } + else { + var tiny = tinycolor(value); + if (tiny.ok) { + set(tiny); + updateOriginalInput(true); + } + else { + textInput.addClass("sp-validation-error"); + } + } + } + + function toggle() { + if (visible) { + hide(); + } + else { + show(); + } + } + + function show() { + var event = $.Event('beforeShow.spectrum'); + + if (visible) { + reflow(); + return; + } + + boundElement.trigger(event, [ get() ]); + + if (callbacks.beforeShow(get()) === false || event.isDefaultPrevented()) { + return; + } + + hideAll(); + visible = true; + + $(doc).bind("click.spectrum", hide); + $(window).bind("resize.spectrum", resize); + replacer.addClass("sp-active"); + container.removeClass("sp-hidden"); + + reflow(); + updateUI(); + + colorOnShow = get(); + + drawInitial(); + callbacks.show(colorOnShow); + boundElement.trigger('show.spectrum', [ colorOnShow ]); + } + + function hide(e) { + + // Return on right click + if (e && e.type == "click" && e.button == 2) { return; } + + // Return if hiding is unnecessary + if (!visible || flat) { return; } + visible = false; + + $(doc).unbind("click.spectrum", hide); + $(window).unbind("resize.spectrum", resize); + + replacer.removeClass("sp-active"); + container.addClass("sp-hidden"); + + var colorHasChanged = !tinycolor.equals(get(), colorOnShow); + + if (colorHasChanged) { + if (clickoutFiresChange && e !== "cancel") { + updateOriginalInput(true); + } + else { + revert(); + } + } + + callbacks.hide(get()); + boundElement.trigger('hide.spectrum', [ get() ]); + } + + function revert() { + set(colorOnShow, true); + } + + function set(color, ignoreFormatChange) { + if (tinycolor.equals(color, get())) { + // Update UI just in case a validation error needs + // to be cleared. + updateUI(); + return; + } + + var newColor, newHsv; + if (!color && allowEmpty) { + isEmpty = true; + } else { + isEmpty = false; + newColor = tinycolor(color); + newHsv = newColor.toHsv(); + + currentHue = (newHsv.h % 360) / 360; + currentSaturation = newHsv.s; + currentValue = newHsv.v; + currentAlpha = newHsv.a; + } + updateUI(); + + if (newColor && newColor.ok && !ignoreFormatChange) { + currentPreferredFormat = preferredFormat || newColor.format; + } + } + + function get(opts) { + opts = opts || { }; + + if (allowEmpty && isEmpty) { + return null; + } + + return tinycolor.fromRatio({ + h: currentHue, + s: currentSaturation, + v: currentValue, + a: Math.round(currentAlpha * 100) / 100 + }, { format: opts.format || currentPreferredFormat }); + } + + function isValid() { + return !textInput.hasClass("sp-validation-error"); + } + + function move() { + updateUI(); + + callbacks.move(get()); + boundElement.trigger('move.spectrum', [ get() ]); + } + + function updateUI() { + + textInput.removeClass("sp-validation-error"); + + updateHelperLocations(); + + // Update dragger background color (gradients take care of saturation and value). + var flatColor = tinycolor.fromRatio({ h: currentHue, s: 1, v: 1 }); + dragger.css("background-color", flatColor.toHexString()); + + // Get a format that alpha will be included in (hex and names ignore alpha) + var format = currentPreferredFormat; + if (currentAlpha < 1 && !(currentAlpha === 0 && format === "name")) { + if (format === "hex" || format === "hex3" || format === "hex6" || format === "name") { + format = "rgb"; + } + } + + var realColor = get({ format: format }), + displayColor = ''; + + //reset background info for preview element + previewElement.removeClass("sp-clear-display"); + previewElement.css('background-color', 'transparent'); + + if (!realColor && allowEmpty) { + // Update the replaced elements background with icon indicating no color selection + previewElement.addClass("sp-clear-display"); + } + else { + var realHex = realColor.toHexString(), + realRgb = realColor.toRgbString(); + + // Update the replaced elements background color (with actual selected color) + if (rgbaSupport || realColor.alpha === 1) { + previewElement.css("background-color", realRgb); + } + else { + previewElement.css("background-color", "transparent"); + previewElement.css("filter", realColor.toFilter()); + } + + if (opts.showAlpha) { + var rgb = realColor.toRgb(); + rgb.a = 0; + var realAlpha = tinycolor(rgb).toRgbString(); + var gradient = "linear-gradient(left, " + realAlpha + ", " + realHex + ")"; + + if (IE) { + alphaSliderInner.css("filter", tinycolor(realAlpha).toFilter({ gradientType: 1 }, realHex)); + } + else { + alphaSliderInner.css("background", "-webkit-" + gradient); + alphaSliderInner.css("background", "-moz-" + gradient); + alphaSliderInner.css("background", "-ms-" + gradient); + // Use current syntax gradient on unprefixed property. + alphaSliderInner.css("background", + "linear-gradient(to right, " + realAlpha + ", " + realHex + ")"); + } + } + + displayColor = realColor.toString(format); + } + + // Update the text entry input as it changes happen + if (opts.showInput) { + textInput.val(displayColor); + } + + if (opts.showPalette) { + drawPalette(); + } + + drawInitial(); + } + + function updateHelperLocations() { + var s = currentSaturation; + var v = currentValue; + + if(allowEmpty && isEmpty) { + //if selected color is empty, hide the helpers + alphaSlideHelper.hide(); + slideHelper.hide(); + dragHelper.hide(); + } + else { + //make sure helpers are visible + alphaSlideHelper.show(); + slideHelper.show(); + dragHelper.show(); + + // Where to show the little circle in that displays your current selected color + var dragX = s * dragWidth; + var dragY = dragHeight - (v * dragHeight); + dragX = Math.max( + -dragHelperHeight, + Math.min(dragWidth - dragHelperHeight, dragX - dragHelperHeight) + ); + dragY = Math.max( + -dragHelperHeight, + Math.min(dragHeight - dragHelperHeight, dragY - dragHelperHeight) + ); + dragHelper.css({ + "top": dragY + "px", + "left": dragX + "px" + }); + + var alphaX = currentAlpha * alphaWidth; + alphaSlideHelper.css({ + "left": (alphaX - (alphaSlideHelperWidth / 2)) + "px" + }); + + // Where to show the bar that displays your current selected hue + var slideY = (currentHue) * slideHeight; + slideHelper.css({ + "top": (slideY - slideHelperHeight) + "px" + }); + } + } + + function updateOriginalInput(fireCallback) { + var color = get(), + displayColor = '', + hasChanged = !tinycolor.equals(color, colorOnShow); + + if (color) { + displayColor = color.toString(currentPreferredFormat); + // Update the selection palette with the current color + addColorToSelectionPalette(color); + } + + if (isInput) { + boundElement.val(displayColor); + } + + colorOnShow = color; + + if (fireCallback && hasChanged) { + callbacks.change(color); + boundElement.trigger('change', [ color ]); + } + } + + function reflow() { + dragWidth = dragger.width(); + dragHeight = dragger.height(); + dragHelperHeight = dragHelper.height(); + slideWidth = slider.width(); + slideHeight = slider.height(); + slideHelperHeight = slideHelper.height(); + alphaWidth = alphaSlider.width(); + alphaSlideHelperWidth = alphaSlideHelper.width(); + + if (!flat) { + container.css("position", "absolute"); + container.offset(getOffset(container, offsetElement)); + } + + updateHelperLocations(); + + if (opts.showPalette) { + drawPalette(); + } + + boundElement.trigger('reflow.spectrum'); + } + + function destroy() { + boundElement.show(); + offsetElement.unbind("click.spectrum touchstart.spectrum"); + container.remove(); + replacer.remove(); + spectrums[spect.id] = null; + } + + function option(optionName, optionValue) { + if (optionName === undefined) { + return $.extend({}, opts); + } + if (optionValue === undefined) { + return opts[optionName]; + } + + opts[optionName] = optionValue; + applyOptions(); + } + + function enable() { + disabled = false; + boundElement.attr("disabled", false); + offsetElement.removeClass("sp-disabled"); + } + + function disable() { + hide(); + disabled = true; + boundElement.attr("disabled", true); + offsetElement.addClass("sp-disabled"); + } + + initialize(); + + var spect = { + show: show, + hide: hide, + toggle: toggle, + reflow: reflow, + option: option, + enable: enable, + disable: disable, + set: function (c) { + set(c); + updateOriginalInput(); + }, + get: get, + destroy: destroy, + container: container + }; + + spect.id = spectrums.push(spect) - 1; + + return spect; + } + + /** + * checkOffset - get the offset below/above and left/right element depending on screen position + * Thanks https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.datepicker.js + */ + function getOffset(picker, input) { + var extraY = 0; + var dpWidth = picker.outerWidth(); + var dpHeight = picker.outerHeight(); + var inputHeight = input.outerHeight(); + var doc = picker[0].ownerDocument; + var docElem = doc.documentElement; + var viewWidth = docElem.clientWidth + $(doc).scrollLeft(); + var viewHeight = docElem.clientHeight + $(doc).scrollTop(); + var offset = input.offset(); + offset.top += inputHeight; + + offset.left -= + Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? + Math.abs(offset.left + dpWidth - viewWidth) : 0); + + offset.top -= + Math.min(offset.top, ((offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? + Math.abs(dpHeight + inputHeight - extraY) : extraY)); + + return offset; + } + + /** + * noop - do nothing + */ + function noop() { + + } + + /** + * stopPropagation - makes the code only doing this a little easier to read in line + */ + function stopPropagation(e) { + e.stopPropagation(); + } + + /** + * Create a function bound to a given object + * Thanks to underscore.js + */ + function bind(func, obj) { + var slice = Array.prototype.slice; + var args = slice.call(arguments, 2); + return function () { + return func.apply(obj, args.concat(slice.call(arguments))); + }; + } + + /** + * Lightweight drag helper. Handles containment within the element, so that + * when dragging, the x is within [0,element.width] and y is within [0,element.height] + */ + function draggable(element, onmove, onstart, onstop) { + onmove = onmove || function () { }; + onstart = onstart || function () { }; + onstop = onstop || function () { }; + var doc = element.ownerDocument || document; + var dragging = false; + var offset = {}; + var maxHeight = 0; + var maxWidth = 0; + var hasTouch = ('ontouchstart' in window); + + var duringDragEvents = {}; + duringDragEvents["selectstart"] = prevent; + duringDragEvents["dragstart"] = prevent; + duringDragEvents["touchmove mousemove"] = move; + duringDragEvents["touchend mouseup"] = stop; + + function prevent(e) { + if (e.stopPropagation) { + e.stopPropagation(); + } + if (e.preventDefault) { + e.preventDefault(); + } + e.returnValue = false; + } + + function move(e) { + if (dragging) { + // Mouseup happened outside of window + if (IE && document.documentMode < 9 && !e.button) { + return stop(); + } + + var touches = e.originalEvent.touches; + var pageX = touches ? touches[0].pageX : e.pageX; + var pageY = touches ? touches[0].pageY : e.pageY; + + var dragX = Math.max(0, Math.min(pageX - offset.left, maxWidth)); + var dragY = Math.max(0, Math.min(pageY - offset.top, maxHeight)); + + if (hasTouch) { + // Stop scrolling in iOS + prevent(e); + } + + onmove.apply(element, [dragX, dragY, e]); + } + } + + function start(e) { + var rightclick = (e.which) ? (e.which == 3) : (e.button == 2); + var touches = e.originalEvent.touches; + + if (!rightclick && !dragging) { + if (onstart.apply(element, arguments) !== false) { + dragging = true; + maxHeight = $(element).height(); + maxWidth = $(element).width(); + offset = $(element).offset(); + + $(doc).bind(duringDragEvents); + $(doc.body).addClass("sp-dragging"); + + if (!hasTouch) { + move(e); + } + + prevent(e); + } + } + } + + function stop() { + if (dragging) { + $(doc).unbind(duringDragEvents); + $(doc.body).removeClass("sp-dragging"); + onstop.apply(element, arguments); + } + dragging = false; + } + + $(element).bind("touchstart mousedown", start); + } + + function throttle(func, wait, debounce) { + var timeout; + return function () { + var context = this, args = arguments; + var throttler = function () { + timeout = null; + func.apply(context, args); + }; + if (debounce) clearTimeout(timeout); + if (debounce || !timeout) timeout = setTimeout(throttler, wait); + }; + } + + function log(){/* jshint -W021 */if(window.console){if(Function.prototype.bind)log=Function.prototype.bind.call(console.log,console);else log=function(){Function.prototype.apply.call(console.log,console,arguments);};log.apply(this,arguments);}} + + /** + * Define a jQuery plugin + */ + var dataID = "spectrum.id"; + $.fn.spectrum = function (opts, extra) { + + if (typeof opts == "string") { + + var returnValue = this; + var args = Array.prototype.slice.call( arguments, 1 ); + + this.each(function () { + var spect = spectrums[$(this).data(dataID)]; + if (spect) { + var method = spect[opts]; + if (!method) { + throw new Error( "Spectrum: no such method: '" + opts + "'" ); + } + + if (opts == "get") { + returnValue = spect.get(); + } + else if (opts == "container") { + returnValue = spect.container; + } + else if (opts == "option") { + returnValue = spect.option.apply(spect, args); + } + else if (opts == "destroy") { + spect.destroy(); + $(this).removeData(dataID); + } + else { + method.apply(spect, args); + } + } + }); + + return returnValue; + } + + // Initializing a new instance of spectrum + return this.spectrum("destroy").each(function () { + var options = $.extend({}, opts, $(this).data()); + var spect = spectrum(this, options); + $(this).data(dataID, spect.id); + }); + }; + + $.fn.spectrum.load = true; + $.fn.spectrum.loadOpts = {}; + $.fn.spectrum.draggable = draggable; + $.fn.spectrum.defaults = defaultOpts; + + $.spectrum = { }; + $.spectrum.localization = { }; + $.spectrum.palettes = { }; + + $.fn.spectrum.processNativeColorInputs = function () { + if (!inputTypeColorSupport) { + $("input[type=color]").spectrum({ + preferredFormat: "hex6" + }); + } + }; + + // TinyColor v0.9.17 + // https://github.com/bgrins/TinyColor + // 2013-08-10, Brian Grinstead, MIT License + + (function() { + + var trimLeft = /^[\s,#]+/, + trimRight = /\s+$/, + tinyCounter = 0, + math = Math, + mathRound = math.round, + mathMin = math.min, + mathMax = math.max, + mathRandom = math.random; + + function tinycolor (color, opts) { + + color = (color) ? color : ''; + opts = opts || { }; + + // If input is already a tinycolor, return itself + if (typeof color == "object" && color.hasOwnProperty("_tc_id")) { + return color; + } + + var rgb = inputToRGB(color); + var r = rgb.r, + g = rgb.g, + b = rgb.b, + a = rgb.a, + roundA = mathRound(100*a) / 100, + format = opts.format || rgb.format; + + // Don't let the range of [0,255] come back in [0,1]. + // Potentially lose a little bit of precision here, but will fix issues where + // .5 gets interpreted as half of the total, instead of half of 1 + // If it was supposed to be 128, this was already taken care of by `inputToRgb` + if (r < 1) { r = mathRound(r); } + if (g < 1) { g = mathRound(g); } + if (b < 1) { b = mathRound(b); } + + return { + ok: rgb.ok, + format: format, + _tc_id: tinyCounter++, + alpha: a, + getAlpha: function() { + return a; + }, + setAlpha: function(value) { + a = boundAlpha(value); + roundA = mathRound(100*a) / 100; + }, + toHsv: function() { + var hsv = rgbToHsv(r, g, b); + return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: a }; + }, + toHsvString: function() { + var hsv = rgbToHsv(r, g, b); + var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100); + return (a == 1) ? + "hsv(" + h + ", " + s + "%, " + v + "%)" : + "hsva(" + h + ", " + s + "%, " + v + "%, "+ roundA + ")"; + }, + toHsl: function() { + var hsl = rgbToHsl(r, g, b); + return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: a }; + }, + toHslString: function() { + var hsl = rgbToHsl(r, g, b); + var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100); + return (a == 1) ? + "hsl(" + h + ", " + s + "%, " + l + "%)" : + "hsla(" + h + ", " + s + "%, " + l + "%, "+ roundA + ")"; + }, + toHex: function(allow3Char) { + return rgbToHex(r, g, b, allow3Char); + }, + toHexString: function(allow3Char) { + return '#' + this.toHex(allow3Char); + }, + toHex8: function() { + return rgbaToHex(r, g, b, a); + }, + toHex8String: function() { + return '#' + this.toHex8(); + }, + toRgb: function() { + return { r: mathRound(r), g: mathRound(g), b: mathRound(b), a: a }; + }, + toRgbString: function() { + return (a == 1) ? + "rgb(" + mathRound(r) + ", " + mathRound(g) + ", " + mathRound(b) + ")" : + "rgba(" + mathRound(r) + ", " + mathRound(g) + ", " + mathRound(b) + ", " + roundA + ")"; + }, + toPercentageRgb: function() { + return { r: mathRound(bound01(r, 255) * 100) + "%", g: mathRound(bound01(g, 255) * 100) + "%", b: mathRound(bound01(b, 255) * 100) + "%", a: a }; + }, + toPercentageRgbString: function() { + return (a == 1) ? + "rgb(" + mathRound(bound01(r, 255) * 100) + "%, " + mathRound(bound01(g, 255) * 100) + "%, " + mathRound(bound01(b, 255) * 100) + "%)" : + "rgba(" + mathRound(bound01(r, 255) * 100) + "%, " + mathRound(bound01(g, 255) * 100) + "%, " + mathRound(bound01(b, 255) * 100) + "%, " + roundA + ")"; + }, + toName: function() { + if (a === 0) { + return "transparent"; + } + + return hexNames[rgbToHex(r, g, b, true)] || false; + }, + toFilter: function(secondColor) { + var hex8String = '#' + rgbaToHex(r, g, b, a); + var secondHex8String = hex8String; + var gradientType = opts && opts.gradientType ? "GradientType = 1, " : ""; + + if (secondColor) { + var s = tinycolor(secondColor); + secondHex8String = s.toHex8String(); + } + + return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")"; + }, + toString: function(format) { + var formatSet = !!format; + format = format || this.format; + + var formattedString = false; + var hasAlphaAndFormatNotSet = !formatSet && a < 1 && a > 0; + var formatWithAlpha = hasAlphaAndFormatNotSet && (format === "hex" || format === "hex6" || format === "hex3" || format === "name"); + + if (format === "rgb") { + formattedString = this.toRgbString(); + } + if (format === "prgb") { + formattedString = this.toPercentageRgbString(); + } + if (format === "hex" || format === "hex6") { + formattedString = this.toHexString(); + } + if (format === "hex3") { + formattedString = this.toHexString(true); + } + if (format === "hex8") { + formattedString = this.toHex8String(); + } + if (format === "name") { + formattedString = this.toName(); + } + if (format === "hsl") { + formattedString = this.toHslString(); + } + if (format === "hsv") { + formattedString = this.toHsvString(); + } + + if (formatWithAlpha) { + return this.toRgbString(); + } + + return formattedString || this.toHexString(); + } + }; + } + + // If input is an object, force 1 into "1.0" to handle ratios properly + // String input requires "1.0" as input, so 1 will be treated as 1 + tinycolor.fromRatio = function(color, opts) { + if (typeof color == "object") { + var newColor = {}; + for (var i in color) { + if (color.hasOwnProperty(i)) { + if (i === "a") { + newColor[i] = color[i]; + } + else { + newColor[i] = convertToPercentage(color[i]); + } + } + } + color = newColor; + } + + return tinycolor(color, opts); + }; + + // Given a string or object, convert that input to RGB + // Possible string inputs: + // + // "red" + // "#f00" or "f00" + // "#ff0000" or "ff0000" + // "#ff000000" or "ff000000" + // "rgb 255 0 0" or "rgb (255, 0, 0)" + // "rgb 1.0 0 0" or "rgb (1, 0, 0)" + // "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" + // "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" + // "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" + // "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" + // "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" + // + function inputToRGB(color) { + + var rgb = { r: 0, g: 0, b: 0 }; + var a = 1; + var ok = false; + var format = false; + + if (typeof color == "string") { + color = stringInputToObject(color); + } + + if (typeof color == "object") { + if (color.hasOwnProperty("r") && color.hasOwnProperty("g") && color.hasOwnProperty("b")) { + rgb = rgbToRgb(color.r, color.g, color.b); + ok = true; + format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; + } + else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("v")) { + color.s = convertToPercentage(color.s); + color.v = convertToPercentage(color.v); + rgb = hsvToRgb(color.h, color.s, color.v); + ok = true; + format = "hsv"; + } + else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("l")) { + color.s = convertToPercentage(color.s); + color.l = convertToPercentage(color.l); + rgb = hslToRgb(color.h, color.s, color.l); + ok = true; + format = "hsl"; + } + + if (color.hasOwnProperty("a")) { + a = color.a; + } + } + + a = boundAlpha(a); + + return { + ok: ok, + format: color.format || format, + r: mathMin(255, mathMax(rgb.r, 0)), + g: mathMin(255, mathMax(rgb.g, 0)), + b: mathMin(255, mathMax(rgb.b, 0)), + a: a + }; + } + + + // Conversion Functions + // -------------------- + + // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from: + // + + // `rgbToRgb` + // Handle bounds / percentage checking to conform to CSS color spec + // + // *Assumes:* r, g, b in [0, 255] or [0, 1] + // *Returns:* { r, g, b } in [0, 255] + function rgbToRgb(r, g, b){ + return { + r: bound01(r, 255) * 255, + g: bound01(g, 255) * 255, + b: bound01(b, 255) * 255 + }; + } + + // `rgbToHsl` + // Converts an RGB color value to HSL. + // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] + // *Returns:* { h, s, l } in [0,1] + function rgbToHsl(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, l = (max + min) / 2; + + if(max == min) { + h = s = 0; // achromatic + } + else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + + h /= 6; + } + + return { h: h, s: s, l: l }; + } + + // `hslToRgb` + // Converts an HSL color value to RGB. + // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] + // *Returns:* { r, g, b } in the set [0, 255] + function hslToRgb(h, s, l) { + var r, g, b; + + h = bound01(h, 360); + s = bound01(s, 100); + l = bound01(l, 100); + + function hue2rgb(p, q, t) { + if(t < 0) t += 1; + if(t > 1) t -= 1; + if(t < 1/6) return p + (q - p) * 6 * t; + if(t < 1/2) return q; + if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; + return p; + } + + if(s === 0) { + r = g = b = l; // achromatic + } + else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1/3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1/3); + } + + return { r: r * 255, g: g * 255, b: b * 255 }; + } + + // `rgbToHsv` + // Converts an RGB color value to HSV + // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] + // *Returns:* { h, s, v } in [0,1] + function rgbToHsv(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, v = max; + + var d = max - min; + s = max === 0 ? 0 : d / max; + + if(max == min) { + h = 0; // achromatic + } + else { + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + return { h: h, s: s, v: v }; + } + + // `hsvToRgb` + // Converts an HSV color value to RGB. + // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] + // *Returns:* { r, g, b } in the set [0, 255] + function hsvToRgb(h, s, v) { + + h = bound01(h, 360) * 6; + s = bound01(s, 100); + v = bound01(v, 100); + + var i = math.floor(h), + f = h - i, + p = v * (1 - s), + q = v * (1 - f * s), + t = v * (1 - (1 - f) * s), + mod = i % 6, + r = [v, q, p, p, t, v][mod], + g = [t, v, v, q, p, p][mod], + b = [p, p, t, v, v, q][mod]; + + return { r: r * 255, g: g * 255, b: b * 255 }; + } + + // `rgbToHex` + // Converts an RGB color to hex + // Assumes r, g, and b are contained in the set [0, 255] + // Returns a 3 or 6 character hex + function rgbToHex(r, g, b, allow3Char) { + + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + // Return a 3 character hex if possible + if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); + } + + return hex.join(""); + } + // `rgbaToHex` + // Converts an RGBA color plus alpha transparency to hex + // Assumes r, g, b and a are contained in the set [0, 255] + // Returns an 8 character hex + function rgbaToHex(r, g, b, a) { + + var hex = [ + pad2(convertDecimalToHex(a)), + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + return hex.join(""); + } + + // `equals` + // Can be called with any tinycolor input + tinycolor.equals = function (color1, color2) { + if (!color1 || !color2) { return false; } + return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); + }; + tinycolor.random = function() { + return tinycolor.fromRatio({ + r: mathRandom(), + g: mathRandom(), + b: mathRandom() + }); + }; + + + // Modification Functions + // ---------------------- + // Thanks to less.js for some of the basics here + // + + tinycolor.desaturate = function (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s -= amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); + }; + tinycolor.saturate = function (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s += amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); + }; + tinycolor.greyscale = function(color) { + return tinycolor.desaturate(color, 100); + }; + tinycolor.lighten = function(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l += amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); + }; + tinycolor.darken = function (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l -= amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); + }; + tinycolor.complement = function(color) { + var hsl = tinycolor(color).toHsl(); + hsl.h = (hsl.h + 180) % 360; + return tinycolor(hsl); + }; + + + // Combination Functions + // --------------------- + // Thanks to jQuery xColor for some of the ideas behind these + // + + tinycolor.triad = function(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) + ]; + }; + tinycolor.tetrad = function(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) + ]; + }; + tinycolor.splitcomplement = function(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}), + tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l}) + ]; + }; + tinycolor.analogous = function(color, results, slices) { + results = results || 6; + slices = slices || 30; + + var hsl = tinycolor(color).toHsl(); + var part = 360 / slices; + var ret = [tinycolor(color)]; + + for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) { + hsl.h = (hsl.h + part) % 360; + ret.push(tinycolor(hsl)); + } + return ret; + }; + tinycolor.monochromatic = function(color, results) { + results = results || 6; + var hsv = tinycolor(color).toHsv(); + var h = hsv.h, s = hsv.s, v = hsv.v; + var ret = []; + var modification = 1 / results; + + while (results--) { + ret.push(tinycolor({ h: h, s: s, v: v})); + v = (v + modification) % 1; + } + + return ret; + }; + + + // Readability Functions + // --------------------- + // + + // `readability` + // Analyze the 2 colors and returns an object with the following properties: + // `brightness`: difference in brightness between the two colors + // `color`: difference in color/hue between the two colors + tinycolor.readability = function(color1, color2) { + var a = tinycolor(color1).toRgb(); + var b = tinycolor(color2).toRgb(); + var brightnessA = (a.r * 299 + a.g * 587 + a.b * 114) / 1000; + var brightnessB = (b.r * 299 + b.g * 587 + b.b * 114) / 1000; + var colorDiff = ( + Math.max(a.r, b.r) - Math.min(a.r, b.r) + + Math.max(a.g, b.g) - Math.min(a.g, b.g) + + Math.max(a.b, b.b) - Math.min(a.b, b.b) + ); + + return { + brightness: Math.abs(brightnessA - brightnessB), + color: colorDiff + }; + }; + + // `readable` + // http://www.w3.org/TR/AERT#color-contrast + // Ensure that foreground and background color combinations provide sufficient contrast. + // *Example* + // tinycolor.readable("#000", "#111") => false + tinycolor.readable = function(color1, color2) { + var readability = tinycolor.readability(color1, color2); + return readability.brightness > 125 && readability.color > 500; + }; + + // `mostReadable` + // Given a base color and a list of possible foreground or background + // colors for that base, returns the most readable color. + // *Example* + // tinycolor.mostReadable("#123", ["#fff", "#000"]) => "#000" + tinycolor.mostReadable = function(baseColor, colorList) { + var bestColor = null; + var bestScore = 0; + var bestIsReadable = false; + for (var i=0; i < colorList.length; i++) { + + // We normalize both around the "acceptable" breaking point, + // but rank brightness constrast higher than hue. + + var readability = tinycolor.readability(baseColor, colorList[i]); + var readable = readability.brightness > 125 && readability.color > 500; + var score = 3 * (readability.brightness / 125) + (readability.color / 500); + + if ((readable && ! bestIsReadable) || + (readable && bestIsReadable && score > bestScore) || + ((! readable) && (! bestIsReadable) && score > bestScore)) { + bestIsReadable = readable; + bestScore = score; + bestColor = tinycolor(colorList[i]); + } + } + return bestColor; + }; + + + // Big List of Colors + // ------------------ + // + var names = tinycolor.names = { + aliceblue: "f0f8ff", + antiquewhite: "faebd7", + aqua: "0ff", + aquamarine: "7fffd4", + azure: "f0ffff", + beige: "f5f5dc", + bisque: "ffe4c4", + black: "000", + blanchedalmond: "ffebcd", + blue: "00f", + blueviolet: "8a2be2", + brown: "a52a2a", + burlywood: "deb887", + burntsienna: "ea7e5d", + cadetblue: "5f9ea0", + chartreuse: "7fff00", + chocolate: "d2691e", + coral: "ff7f50", + cornflowerblue: "6495ed", + cornsilk: "fff8dc", + crimson: "dc143c", + cyan: "0ff", + darkblue: "00008b", + darkcyan: "008b8b", + darkgoldenrod: "b8860b", + darkgray: "a9a9a9", + darkgreen: "006400", + darkgrey: "a9a9a9", + darkkhaki: "bdb76b", + darkmagenta: "8b008b", + darkolivegreen: "556b2f", + darkorange: "ff8c00", + darkorchid: "9932cc", + darkred: "8b0000", + darksalmon: "e9967a", + darkseagreen: "8fbc8f", + darkslateblue: "483d8b", + darkslategray: "2f4f4f", + darkslategrey: "2f4f4f", + darkturquoise: "00ced1", + darkviolet: "9400d3", + deeppink: "ff1493", + deepskyblue: "00bfff", + dimgray: "696969", + dimgrey: "696969", + dodgerblue: "1e90ff", + firebrick: "b22222", + floralwhite: "fffaf0", + forestgreen: "228b22", + fuchsia: "f0f", + gainsboro: "dcdcdc", + ghostwhite: "f8f8ff", + gold: "ffd700", + goldenrod: "daa520", + gray: "808080", + green: "008000", + greenyellow: "adff2f", + grey: "808080", + honeydew: "f0fff0", + hotpink: "ff69b4", + indianred: "cd5c5c", + indigo: "4b0082", + ivory: "fffff0", + khaki: "f0e68c", + lavender: "e6e6fa", + lavenderblush: "fff0f5", + lawngreen: "7cfc00", + lemonchiffon: "fffacd", + lightblue: "add8e6", + lightcoral: "f08080", + lightcyan: "e0ffff", + lightgoldenrodyellow: "fafad2", + lightgray: "d3d3d3", + lightgreen: "90ee90", + lightgrey: "d3d3d3", + lightpink: "ffb6c1", + lightsalmon: "ffa07a", + lightseagreen: "20b2aa", + lightskyblue: "87cefa", + lightslategray: "789", + lightslategrey: "789", + lightsteelblue: "b0c4de", + lightyellow: "ffffe0", + lime: "0f0", + limegreen: "32cd32", + linen: "faf0e6", + magenta: "f0f", + maroon: "800000", + mediumaquamarine: "66cdaa", + mediumblue: "0000cd", + mediumorchid: "ba55d3", + mediumpurple: "9370db", + mediumseagreen: "3cb371", + mediumslateblue: "7b68ee", + mediumspringgreen: "00fa9a", + mediumturquoise: "48d1cc", + mediumvioletred: "c71585", + midnightblue: "191970", + mintcream: "f5fffa", + mistyrose: "ffe4e1", + moccasin: "ffe4b5", + navajowhite: "ffdead", + navy: "000080", + oldlace: "fdf5e6", + olive: "808000", + olivedrab: "6b8e23", + orange: "ffa500", + orangered: "ff4500", + orchid: "da70d6", + palegoldenrod: "eee8aa", + palegreen: "98fb98", + paleturquoise: "afeeee", + palevioletred: "db7093", + papayawhip: "ffefd5", + peachpuff: "ffdab9", + peru: "cd853f", + pink: "ffc0cb", + plum: "dda0dd", + powderblue: "b0e0e6", + purple: "800080", + red: "f00", + rosybrown: "bc8f8f", + royalblue: "4169e1", + saddlebrown: "8b4513", + salmon: "fa8072", + sandybrown: "f4a460", + seagreen: "2e8b57", + seashell: "fff5ee", + sienna: "a0522d", + silver: "c0c0c0", + skyblue: "87ceeb", + slateblue: "6a5acd", + slategray: "708090", + slategrey: "708090", + snow: "fffafa", + springgreen: "00ff7f", + steelblue: "4682b4", + tan: "d2b48c", + teal: "008080", + thistle: "d8bfd8", + tomato: "ff6347", + turquoise: "40e0d0", + violet: "ee82ee", + wheat: "f5deb3", + white: "fff", + whitesmoke: "f5f5f5", + yellow: "ff0", + yellowgreen: "9acd32" + }; + + // Make it easy to access colors via `hexNames[hex]` + var hexNames = tinycolor.hexNames = flip(names); + + + // Utilities + // --------- + + // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }` + function flip(o) { + var flipped = { }; + for (var i in o) { + if (o.hasOwnProperty(i)) { + flipped[o[i]] = i; + } + } + return flipped; + } + + // Return a valid alpha value [0,1] with all invalid values being set to 1 + function boundAlpha(a) { + a = parseFloat(a); + + if (isNaN(a) || a < 0 || a > 1) { + a = 1; + } + + return a; + } + + // Take input from [0, n] and return it as [0, 1] + function bound01(n, max) { + if (isOnePointZero(n)) { n = "100%"; } + + var processPercent = isPercentage(n); + n = mathMin(max, mathMax(0, parseFloat(n))); + + // Automatically convert percentage into number + if (processPercent) { + n = parseInt(n * max, 10) / 100; + } + + // Handle floating point rounding errors + if ((math.abs(n - max) < 0.000001)) { + return 1; + } + + // Convert into [0, 1] range if it isn't already + return (n % max) / parseFloat(max); + } + + // Force a number between 0 and 1 + function clamp01(val) { + return mathMin(1, mathMax(0, val)); + } + + // Parse a base-16 hex value into a base-10 integer + function parseIntFromHex(val) { + return parseInt(val, 16); + } + + // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 + // + function isOnePointZero(n) { + return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1; + } + + // Check to see if string passed in is a percentage + function isPercentage(n) { + return typeof n === "string" && n.indexOf('%') != -1; + } + + // Force a hex value to have 2 characters + function pad2(c) { + return c.length == 1 ? '0' + c : '' + c; + } + + // Replace a decimal with it's percentage value + function convertToPercentage(n) { + if (n <= 1) { + n = (n * 100) + "%"; + } + + return n; + } + + // Converts a decimal to a hex value + function convertDecimalToHex(d) { + return Math.round(parseFloat(d) * 255).toString(16); + } + // Converts a hex value to a decimal + function convertHexToDecimal(h) { + return (parseIntFromHex(h) / 255); + } + + var matchers = (function() { + + // + var CSS_INTEGER = "[-\\+]?\\d+%?"; + + // + var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; + + // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. + var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; + + // Actual matching. + // Parentheses and commas are optional, but not required. + // Whitespace can take the place of commas or opening paren + var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + + return { + rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), + rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), + hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), + hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), + hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), + hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, + hex8: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ + }; + })(); + + // `stringInputToObject` + // Permissive string parsing. Take in a number of formats, and output an object + // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}` + function stringInputToObject(color) { + + color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase(); + var named = false; + if (names[color]) { + color = names[color]; + named = true; + } + else if (color == 'transparent') { + return { r: 0, g: 0, b: 0, a: 0, format: "name" }; + } + + // Try to match string input using regular expressions. + // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] + // Just return an object and let the conversion functions handle that. + // This way the result will be the same whether the tinycolor is initialized with string or object. + var match; + if ((match = matchers.rgb.exec(color))) { + return { r: match[1], g: match[2], b: match[3] }; + } + if ((match = matchers.rgba.exec(color))) { + return { r: match[1], g: match[2], b: match[3], a: match[4] }; + } + if ((match = matchers.hsl.exec(color))) { + return { h: match[1], s: match[2], l: match[3] }; + } + if ((match = matchers.hsla.exec(color))) { + return { h: match[1], s: match[2], l: match[3], a: match[4] }; + } + if ((match = matchers.hsv.exec(color))) { + return { h: match[1], s: match[2], v: match[3] }; + } + if ((match = matchers.hex8.exec(color))) { + return { + a: convertHexToDecimal(match[1]), + r: parseIntFromHex(match[2]), + g: parseIntFromHex(match[3]), + b: parseIntFromHex(match[4]), + format: named ? "name" : "hex8" + }; + } + if ((match = matchers.hex6.exec(color))) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + format: named ? "name" : "hex" + }; + } + if ((match = matchers.hex3.exec(color))) { + return { + r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + format: named ? "name" : "hex" + }; + } + + return false; + } + + // Expose tinycolor to window, does not need to run in non-browser context. + window.tinycolor = tinycolor; + + })(); + + + $(function () { + if ($.fn.spectrum.load) { + $.fn.spectrum.processNativeColorInputs(); + } + }); + +})(window, jQuery); diff --git a/redux/ReduxCore/assets/js/vendor/spectrum/redux-spectrum.min.js b/redux/ReduxCore/assets/js/vendor/spectrum/redux-spectrum.min.js new file mode 100644 index 0000000..5481207 --- /dev/null +++ b/redux/ReduxCore/assets/js/vendor/spectrum/redux-spectrum.min.js @@ -0,0 +1 @@ +!function(Ne,qe,Ee){var e,je={beforeShow:r,move:r,change:r,show:r,hide:r,color:!1,flat:!1,showInput:!1,allowEmpty:!1,showButtons:!0,clickoutFiresChange:!1,showInitial:!1,showPalette:!1,showPaletteOnly:!1,showSelectionPalette:!0,localStorageKey:!1,appendTo:"body",maxSelectionSize:7,cancelText:"cancel",chooseText:"choose",clearText:"Clear Color Selection",preferredFormat:!1,className:"",containerClassName:"",replacerClassName:"",showAlpha:!1,theme:"sp-light",palette:[["#ffffff","#000000","#ff0000","#ff8000","#ffff00","#008000","#0000ff","#4b0082","#9400d3"]],selectionPalette:[],disabled:!1,inputText:""},De=[],Ie=!!/msie/i.exec(Ne.navigator.userAgent),ze=function(){function e(e,t){return!!~(""+e).indexOf(t)}var t=document.createElement("div").style;return t.cssText="background-color:rgba(0,0,0,.5)",e(t.backgroundColor,"rgba")||e(t.backgroundColor,"hsla")}(),Ke="color"===(e=qe("")[0]).type&&"#ffffff"!==e.value,$e=["
    ","
    ","
    ","
    "].join(""),_e=function(){var e="";if(Ie)for(var t=1;t<=6;t++)e+="
    ";return["
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ",e,"
    ","
    ","
    ","
    ","
    ","","
    ","
    ","
    ","","","
    ","
    ","
    "].join("")}();function Be(e,t,r,a){for(var n=[],o=0;o')}else{n.push('')}}return"
    "+n.join("")+"
    "}function t(e,t){var r,a,n,o,s,l,c,f=(s=t,l=e,(c=qe.extend({},je,s)).callbacks={move:Le(c.move,l),change:Le(c.change,l),show:Le(c.show,l),hide:Le(c.hide,l),beforeShow:Le(c.beforeShow,l)},c),d=f.flat,u=f.showSelectionPalette,h=f.localStorageKey,p=f.theme,g=f.callbacks,b=(r=Me,a=10,function(){var e=this,t=arguments;n&&clearTimeout(o),!n&&o||(o=setTimeout(function(){o=null,r.apply(e,t)},a))}),v=!1,m=0,y=0,w=0,x=0,k=0,S=0,C=0,P=0,H=0,A=0,F=1,R=[],M=[],O={},T=f.selectionPalette.slice(0),N=f.maxSelectionSize,q="sp-dragging",E=f.inputText,j=null,D=e.ownerDocument,I=(D.body,qe(e)),z=!1,K=qe(_e,D).addClass(p),$=K.find(".sp-color"),_=K.find(".sp-dragger"),B=K.find(".sp-hue"),X=K.find(".sp-slider"),L=K.find(".sp-alpha-inner"),W=K.find(".sp-alpha"),Y=K.find(".sp-alpha-handle"),G=K.find(".sp-input"),Q=K.find(".sp-palette"),V=K.find(".sp-initial"),J=K.find(".sp-cancel"),U=K.find(".sp-clear"),Z=K.find(".sp-choose"),ee=I.is("input"),te=ee&&Ke&&"color"===I.attr("type"),re=ee&&!d,ae=re?qe($e).addClass(p).addClass(f.className).addClass(f.replacerClassName):qe([]),ne=re?ae:I,oe=ae.find(".sp-preview-inner"),se=f.color||ee&&I.val(),ie=!1,le=f.preferredFormat,ce=le,fe=!f.showButtons||f.clickoutFiresChange,de=!se,ue=f.allowEmpty&&!te;""!==E&&qe(ne).find("div.sp-dd").text(E);function he(){if(f.showPaletteOnly&&(f.showPalette=!0),f.palette){R=f.palette.slice(0),M=qe.isArray(R[0])?R:[R],O={};for(var e=0;eN;)T.shift();if(h&&Ne.localStorage)try{Ne.localStorage[h]=T.join(";")}catch(e){}}}function be(){var r=Pe(),e=qe.map(M,function(e,t){return Be(e,r,"sp-palette-row sp-palette-row-"+t,f.preferredFormat)});pe(),T&&e.push(Be(function(){var e=[];if(f.showPalette)for(i=0;ii&&rl&&aMath.abs(t-n);j=o?"x":"y"}}else j=null;var s=!j||"y"===j;(!j||"x"===j)&&(H=parseFloat(e/m)),s&&(A=parseFloat((y-t)/y)),de=!1,f.showAlpha||(F=1),He()},me,ye),se?(Ce(se),Ae(),ce=le||tinycolor(se).format,ge(se)):Ae(),d&&ke();var r=Ie?"mousedown.spectrum":"click.spectrum touchstart.spectrum";Q.delegate(".sp-thumb-el",r,t),V.delegate(".sp-thumb-el:nth-child(1)",r,{ignore:!0},t)}();var Te={show:ke,hide:Se,toggle:xe,reflow:Me,option:function(e,t){return e===Ee?qe.extend({},f):t===Ee?f[e]:(f[e]=t,void he())},enable:function(){z=!1,I.attr("disabled",!1),ne.removeClass("sp-disabled")},disable:Oe,set:function(e){Ce(e),Re()},get:Pe,destroy:function(){I.show(),ne.unbind("click.spectrum touchstart.spectrum"),K.remove(),ae.remove(),De[Te.id]=null},container:K};return Te.id=De.push(Te)-1,Te}function r(){}function Xe(e){e.stopPropagation()}function Le(e,t){var r=Array.prototype.slice,a=r.call(arguments,2);return function(){return e.apply(t,a.concat(r.call(arguments)))}}function We(s,i,r,e){i=i||function(){},r=r||function(){},e=e||function(){};var a=s.ownerDocument||document,l=!1,c={},f=0,d=0,u="ontouchstart"in Ne,n={};function h(e){e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault(),e.returnValue=!1}function o(e){if(l){if(Ie&&document.documentMode<9&&!e.button)return p();var t=e.originalEvent.touches,r=t?t[0].pageX:e.pageX,a=t?t[0].pageY:e.pageY,n=Math.max(0,Math.min(r-c.left,d)),o=Math.max(0,Math.min(a-c.top,f));u&&h(e),i.apply(s,[n,o,e])}}function p(){l&&(qe(a).unbind(n),qe(a.body).removeClass("sp-dragging"),e.apply(s,arguments)),l=!1}n.selectstart=h,n.dragstart=h,n["touchmove mousemove"]=o,n["touchend mouseup"]=p,qe(s).bind("touchstart mousedown",function(e){var t=e.which?3==e.which:2==e.button;e.originalEvent.touches,t||l||!1!==r.apply(s,arguments)&&(l=!0,f=qe(s).height(),d=qe(s).width(),c=qe(s).offset(),qe(a).bind(n),qe(a.body).addClass("sp-dragging"),u||o(e),h(e))})}var o="spectrum.id";qe.fn.spectrum=function(r,e){if("string"!=typeof r)return this.spectrum("destroy").each(function(){var e=t(this,qe.extend({},r,qe(this).data()));qe(this).data(o,e.id)});var a=this,n=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=De[qe(this).data(o)];if(e){var t=e[r];if(!t)throw new Error("Spectrum: no such method: '"+r+"'");"get"==r?a=e.get():"container"==r?a=e.container:"option"==r?a=e.option.apply(e,n):"destroy"==r?(e.destroy(),qe(this).removeData(o)):t.apply(e,n)}}),a},qe.fn.spectrum.load=!0,qe.fn.spectrum.loadOpts={},qe.fn.spectrum.draggable=We,qe.fn.spectrum.defaults=je,qe.spectrum={},qe.spectrum.localization={},qe.spectrum.palettes={},qe.fn.spectrum.processNativeColorInputs=function(){Ke||qe("input[type=color]").spectrum({preferredFormat:"hex6"})},function(){var f=/^[\s,#]+/,d=/\s+$/,a=0,u=Math,h=u.round,p=u.min,g=u.max,e=u.random;function b(e,n){if(n=n||{},"object"==typeof(e=e||"")&&e.hasOwnProperty("_tc_id"))return e;var t=function(e){var t={r:0,g:0,b:0},r=1,a=!1,n=!1;"string"==typeof e&&(e=function(e){e=e.replace(f,"").replace(d,"").toLowerCase();var t,r=!1;if(x[e])e=x[e],r=!0;else if("transparent"==e)return{r:0,g:0,b:0,a:0,format:"name"};if(t=A.rgb.exec(e))return{r:t[1],g:t[2],b:t[3]};if(t=A.rgba.exec(e))return{r:t[1],g:t[2],b:t[3],a:t[4]};if(t=A.hsl.exec(e))return{h:t[1],s:t[2],l:t[3]};if(t=A.hsla.exec(e))return{h:t[1],s:t[2],l:t[3],a:t[4]};if(t=A.hsv.exec(e))return{h:t[1],s:t[2],v:t[3]};if(t=A.hex8.exec(e))return{a:(a=t[1],P(a)/255),r:P(t[2]),g:P(t[3]),b:P(t[4]),format:r?"name":"hex8"};var a;if(t=A.hex6.exec(e))return{r:P(t[1]),g:P(t[2]),b:P(t[3]),format:r?"name":"hex"};if(t=A.hex3.exec(e))return{r:P(t[1]+""+t[1]),g:P(t[2]+""+t[2]),b:P(t[3]+""+t[3]),format:r?"name":"hex"};return!1}(e));"object"==typeof e&&(e.hasOwnProperty("r")&&e.hasOwnProperty("g")&&e.hasOwnProperty("b")?(o=e.r,s=e.g,i=e.b,t={r:255*C(o,255),g:255*C(s,255),b:255*C(i,255)},a=!0,n="%"===String(e.r).substr(-1)?"prgb":"rgb"):e.hasOwnProperty("h")&&e.hasOwnProperty("s")&&e.hasOwnProperty("v")?(e.s=H(e.s),e.v=H(e.v),t=function(e,t,r){e=6*C(e,360),t=C(t,100),r=C(r,100);var a=u.floor(e),n=e-a,o=r*(1-t),s=r*(1-n*t),i=r*(1-(1-n)*t),l=a%6;return{r:255*[r,s,o,o,i,r][l],g:255*[i,r,r,s,o,o][l],b:255*[o,o,i,r,r,s][l]}}(e.h,e.s,e.v),a=!0,n="hsv"):e.hasOwnProperty("h")&&e.hasOwnProperty("s")&&e.hasOwnProperty("l")&&(e.s=H(e.s),e.l=H(e.l),t=function(e,t,r){var a,n,o;function s(e,t,r){return r<0&&(r+=1),1>1)+720)%360;--t;)a.h=(a.h+n)%360,o.push(b(a));return o},b.monochromatic=function(e,t){t=t||6;for(var r=b(e).toHsv(),a=r.h,n=r.s,o=r.v,s=[],i=1/t;t--;)s.push(b({h:a,s:n,v:o})),o=(o+i)%1;return s},b.readability=function(e,t){var r=b(e).toRgb(),a=b(t).toRgb(),n=(299*r.r+587*r.g+114*r.b)/1e3,o=(299*a.r+587*a.g+114*a.b)/1e3,s=Math.max(r.r,a.r)-Math.min(r.r,a.r)+Math.max(r.g,a.g)-Math.min(r.g,a.g)+Math.max(r.b,a.b)-Math.min(r.b,a.b);return{brightness:Math.abs(n-o),color:s}},b.readable=function(e,t){var r=b.readability(e,t);return 125args['opt_name'] ); + + add_action('wp_dashboard_setup', array($this, $fname)); + } + + public function add_redux_dashboard() { + add_meta_box('redux_dashboard_widget', 'Redux Framework News', array($this,'redux_dashboard_widget'), 'dashboard', 'side', 'high'); + } + + public function dat() { + return; + } + + public function redux_dashboard_widget() { + echo '
    '; + wp_widget_rss_output(array( + 'url' => 'http://reduxframework.com/feed/', + 'title' => 'REDUX_NEWS', + 'items' => 3, + 'show_summary' => 1, + 'show_author' => 0, + 'show_date' => 1 + )); + echo '
    '; + } + } + } diff --git a/redux/ReduxCore/core/enqueue.php b/redux/ReduxCore/core/enqueue.php new file mode 100644 index 0000000..263b16b --- /dev/null +++ b/redux/ReduxCore/core/enqueue.php @@ -0,0 +1,522 @@ +parent = $parent; + + Redux_Functions::$_parent = $parent; + } + + public function init() { + $this->min = Redux_Functions::isMin(); + + $this->timestamp = ReduxFramework::$_version; + if ( $this->parent->args['dev_mode'] ) { + $this->timestamp .= '.' . time(); + } + + $this->register_styles(); + $this->register_scripts(); + + add_thickbox(); + + $this->enqueue_fields(); + + add_filter("redux/{$this->parent->args['opt_name']}/localize", array('Redux_Helpers', 'localize')); + + $this->set_localized_data(); + + /** + * action 'redux-enqueue-{opt_name}' + * + * @deprecated + * + * @param object $this ReduxFramework + */ + do_action( "redux-enqueue-{$this->parent->args['opt_name']}", $this->parent ); // REMOVE + + /** + * action 'redux/page/{opt_name}/enqueue' + */ + do_action( "redux/page/{$this->parent->args['opt_name']}/enqueue" ); + } + + private function register_styles() { + + //***************************************************************** + // Redux Admin CSS + //***************************************************************** + wp_enqueue_style( + 'redux-admin-css', + ReduxFramework::$_url . 'assets/css/redux-admin.css', + array(), + $this->timestamp, + 'all' + ); + + //***************************************************************** + // Redux Fields CSS + //***************************************************************** + if ( ! $this->parent->args['dev_mode'] ) { + wp_enqueue_style( + 'redux-fields-css', + ReduxFramework::$_url . 'assets/css/redux-fields.css', + array(), + $this->timestamp, + 'all' + ); + } + + //***************************************************************** + // Select2 CSS + //***************************************************************** + Redux_CDN::register_style( + 'select2-css', + '//cdn.jsdelivr.net/select2/3.5.2/select2.css', + array(), + '3.5.2',//$this->timestamp, + 'all' + ); + + //***************************************************************** + // Spectrum CSS + //***************************************************************** + //$css_file = 'redux-spectrum.min.css'; + //if ($this->parent->args['dev_mode']) { + $css_file = 'redux-spectrum.css'; + //} + + wp_register_style( + 'redux-spectrum-css', + ReduxFramework::$_url . 'assets/css/vendor/spectrum/' . $css_file, + array(), + '1.3.3', + 'all' + ); + + //***************************************************************** + // Elusive Icon CSS + //***************************************************************** + wp_enqueue_style( + 'redux-elusive-icon', + ReduxFramework::$_url . 'assets/css/vendor/elusive-icons/elusive-icons.css', + array(), + $this->timestamp, + 'all' + ); + + //***************************************************************** + // QTip CSS + //***************************************************************** + $css_file = 'jquery.qtip.min.css'; + if ($this->parent->args['dev_mode']) { + $css_file = 'jquery.qtip.css'; + } + + wp_enqueue_style( + 'qtip-css', + ReduxFramework::$_url . 'assets/css/vendor/qtip/' . $css_file, + array(), + '2.2.0', + 'all' + ); + + //***************************************************************** + // JQuery UI CSS + //***************************************************************** + wp_enqueue_style( + 'jquery-ui-css', + apply_filters( "redux/page/{$this->parent->args['opt_name']}/enqueue/jquery-ui-css", ReduxFramework::$_url . 'assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css' ), + array(), + $this->timestamp, + 'all' + ); + + //***************************************************************** + // Iris CSS + //***************************************************************** + wp_enqueue_style( 'wp-color-picker' ); + + if ( $this->parent->args['dev_mode'] ) { + + //***************************************************************** + // Color Picker CSS + //***************************************************************** + wp_register_style( + 'redux-color-picker-css', + ReduxFramework::$_url . 'assets/css/color-picker/color-picker.css', + array( 'wp-color-picker' ), + $this->timestamp, + 'all' + ); + + //***************************************************************** + // Media CSS + //***************************************************************** + wp_enqueue_style( + 'redux-field-media-css', + ReduxFramework::$_url . 'assets/css/media/media.css', + array(), + time(), + 'all' + ); + } + + //***************************************************************** + // RTL CSS + //***************************************************************** + if ( is_rtl() ) { + wp_enqueue_style( + 'redux-rtl-css', + ReduxFramework::$_url . 'assets/css/rtl.css', + array( 'redux-admin-css' ), + $this->timestamp, + 'all' + ); + } + + } + + private function register_scripts() { + //***************************************************************** + // JQuery / JQuery UI JS + //***************************************************************** + wp_enqueue_script( 'jquery' ); + wp_enqueue_script( 'jquery-ui-core' ); + wp_enqueue_script( 'jquery-ui-dialog' ); + + //***************************************************************** + // Select2 Sortable JS + //***************************************************************** + wp_register_script( + 'redux-select2-sortable-js', + ReduxFramework::$_url . 'assets/js/vendor/redux.select2.sortable' . $this->min . '.js', + array( 'jquery', 'jquery-ui-sortable' ), + $this->timestamp, + true + ); + + //***************************************************************** + // Select2 JS + //***************************************************************** + + // JWp6 plugin giving us problems. They need to update. + if ( wp_script_is ( 'jquerySelect2' )) { + wp_deregister_script( 'jquerySelect2' ); + wp_dequeue_script('jquerySelect2'); + wp_dequeue_style('jquerySelect2Style'); + } + + + Redux_CDN::register_script( + 'select2-js', + '//cdn.jsdelivr.net/select2/3.5.2/select2' . $this->min . '.js', + array( 'jquery', 'redux-select2-sortable-js' ), + '3.5.2', + true + ); + + //***************************************************************** + // QTip JS + //***************************************************************** + $js_file = 'jquery.qtip.min.js'; + if ($this->parent->args['dev_mode']) { + $js_file = 'jquery.qtip.js'; + } + + wp_enqueue_script( + 'qtip-js', + ReduxFramework::$_url . 'assets/js/vendor/qtip/' . $js_file, + array( 'jquery' ), + '2.2.0', + true + ); + + //***************************************************************** + // Spectrum JS + //***************************************************************** + $js_file = 'redux-spectrum.min.js'; + if ($this->parent->args['dev_mode']) { + $js_file = 'redux-spectrum.js'; + } + + wp_register_script( + 'redux-spectrum-js', + ReduxFramework::$_url . 'assets/js/vendor/spectrum/' . $js_file, + array( 'jquery' ), + '1.3.3', + true + ); + + $depArray = array( 'jquery' ); + + //***************************************************************** + // Vendor JS + //***************************************************************** + wp_register_script( + 'redux-vendor', + ReduxFramework::$_url . 'assets/js/vendor.min.js', + array( 'jquery' ), + $this->timestamp, + true + ); + + array_push( $depArray, 'redux-vendor' ); + + + //***************************************************************** + // Redux JS + //***************************************************************** + wp_register_script( + 'redux-js', + ReduxFramework::$_url . 'assets/js/redux' . $this->min . '.js', + $depArray, + $this->timestamp, + true + ); + + wp_enqueue_script( + 'webfontloader', + 'https://ajax.googleapis.com/ajax/libs/webfont/1.5.0/webfont.js', + array( 'jquery' ), + '1.5.0', + true + ); + } + + public function _enqueue_field($field) { + // TODO AFTER GROUP WORKS - Revert IF below + // if( isset( $field['type'] ) && $field['type'] != 'callback' ) { + if ( isset( $field['type'] ) && $field['type'] != 'callback' ) { + + $field_class = 'ReduxFramework_' . $field['type']; + + /** + * Field class file + * filter 'redux/{opt_name}/field/class/{field.type} + * + * @param string field class file path + * @param array $field field config data + */ + $class_file = apply_filters( "redux/{$this->parent->args['opt_name']}/field/class/{$field['type']}", ReduxFramework::$_dir . "inc/fields/{$field['type']}/field_{$field['type']}.php", $field ); + if ( $class_file ) { + if ( ! class_exists( $field_class ) ) { + if ( file_exists( $class_file ) ) { + require_once $class_file; + } + } + + if ( ( method_exists( $field_class, 'enqueue' ) ) || method_exists( $field_class, 'localize' ) ) { + + if ( ! isset( $this->parent->options[ $field['id'] ] ) ) { + $this->parent->options[ $field['id'] ] = ""; + } + + $theField = new $field_class( $field, $this->parent->options[ $field['id'] ], $this->parent ); + + // Move dev_mode check to a new if/then block + if ( ! wp_script_is( 'redux-field-' . $field['type'] . '-js', 'enqueued' ) && class_exists( $field_class ) && method_exists( $field_class, 'enqueue' ) ) { + $theField->enqueue(); + } + + if ( method_exists( $field_class, 'localize' ) ) { + $params = $theField->localize( $field ); + if ( ! isset( $this->parent->localize_data[ $field['type'] ] ) ) { + $this->parent->localize_data[ $field['type'] ] = array(); + } + $this->parent->localize_data[ $field['type'] ][ $field['id'] ] = $theField->localize( $field ); + } + + unset( $theField ); + } + } + } + } + + private function enqueue_fields() { + foreach ( $this->parent->sections as $section ) { + if ( isset( $section['fields'] ) ) { + foreach ( $section['fields'] as $field ) { + $this->_enqueue_field( $field ); + } + } + } + } + + public function get_warnings_and_errors_array() { + // Construct the errors array. + if ( isset( $this->parent->transients['last_save_mode'] ) && ! empty( $this->parent->transients['notices']['errors'] ) ) { + $theTotal = 0; + $theErrors = array(); + + foreach ( $this->parent->transients['notices']['errors'] as $error ) { + $theErrors[ $error['section_id'] ]['errors'][] = $error; + + if ( ! isset( $theErrors[ $error['section_id'] ]['total'] ) ) { + $theErrors[ $error['section_id'] ]['total'] = 0; + } + + $theErrors[ $error['section_id'] ]['total'] ++; + $theTotal ++; + } + + $this->parent->localize_data['errors'] = array( 'total' => $theTotal, 'errors' => $theErrors ); + unset( $this->parent->transients['notices']['errors'] ); + } + + // Construct the warnings array. + if ( isset( $this->parent->transients['last_save_mode'] ) && ! empty( $this->parent->transients['notices']['warnings'] ) ) { + $theTotal = 0; + $theWarnings = array(); + + foreach ( $this->parent->transients['notices']['warnings'] as $warning ) { + $theWarnings[ $warning['section_id'] ]['warnings'][] = $warning; + + if ( ! isset( $theWarnings[ $warning['section_id'] ]['total'] ) ) { + $theWarnings[ $warning['section_id'] ]['total'] = 0; + } + + $theWarnings[ $warning['section_id'] ]['total'] ++; + $theTotal ++; + } + + unset( $this->parent->transients['notices']['warnings'] ); + $this->parent->localize_data['warnings'] = array( + 'total' => $theTotal, + 'warnings' => $theWarnings + ); + } + + if ( empty( $this->parent->transients['notices'] ) ) { + unset( $this->parent->transients['notices'] ); + } + } + + private function set_localized_data() { + if (!empty($this->parent->args['last_tab'])) { + $this->parent->localize_data['last_tab'] = $this->parent->args['last_tab']; + } + + $this->parent->localize_data['required'] = $this->parent->required; + $this->parent->localize_data['fonts'] = $this->parent->fonts; + $this->parent->localize_data['required_child'] = $this->parent->required_child; + $this->parent->localize_data['fields'] = $this->parent->fields; + + if ( isset( $this->parent->font_groups['google'] ) ) { + $this->parent->localize_data['googlefonts'] = $this->parent->font_groups['google']; + } + + if ( isset( $this->parent->font_groups['std'] ) ) { + $this->parent->localize_data['stdfonts'] = $this->parent->font_groups['std']; + } + + if ( isset( $this->parent->font_groups['customfonts'] ) ) { + $this->parent->localize_data['customfonts'] = $this->parent->font_groups['customfonts']; + } + + $this->parent->localize_data['folds'] = $this->parent->folds; + + // Make sure the children are all hidden properly. + foreach ( $this->parent->fields as $key => $value ) { + if ( in_array( $key, $this->parent->fieldsHidden ) ) { + foreach ( $value as $k => $v ) { + if ( ! in_array( $k, $this->parent->fieldsHidden ) ) { + $this->parent->fieldsHidden[] = $k; + $this->parent->folds[ $k ] = "hide"; + } + } + } + } + + + $this->parent->localize_data['fieldsHidden'] = $this->parent->fieldsHidden; + $this->parent->localize_data['options'] = $this->parent->options; + $this->parent->localize_data['defaults'] = $this->parent->options_defaults; + + /** + * Save pending string + * filter 'redux/{opt_name}/localize/save_pending + * + * @param string save_pending string + */ + $save_pending = apply_filters( "redux/{$this->parent->args['opt_name']}/localize/save_pending", __( 'You have changes that are not saved. Would you like to save them now?', 'redux-framework' ) ); + + /** + * Reset all string + * filter 'redux/{opt_name}/localize/reset + * + * @param string reset all string + */ + $reset_all = apply_filters( "redux/{$this->parent->args['opt_name']}/localize/reset", __( 'Are you sure? Resetting will lose all custom values.', 'redux-framework' ) ); + + /** + * Reset section string + * filter 'redux/{opt_name}/localize/reset_section + * + * @param string reset section string + */ + $reset_section = apply_filters( "redux/{$this->parent->args['opt_name']}/localize/reset_section", __( 'Are you sure? Resetting will lose all custom values in this section.', 'redux-framework' ) ); + + /** + * Preset confirm string + * filter 'redux/{opt_name}/localize/preset + * + * @param string preset confirm string + */ + $preset_confirm = apply_filters( "redux/{$this->parent->args['opt_name']}/localize/preset", __( 'Your current options will be replaced with the values of this preset. Would you like to proceed?', 'redux-framework' ) ); + + /** + * Import confirm string + * filter 'redux/{opt_name}/localize/import + * + * @param string import confirm string + */ + $import_confirm = apply_filters( "redux/{$this->parent->args['opt_name']}/localize/import", __( 'Your current options will be replaced with the values of this import. Would you like to proceed?', 'redux-framework' ) ); + + global $pagenow; + $this->parent->localize_data['args'] = array( + 'save_pending' => $save_pending, + 'reset_confirm' => $reset_all, + 'reset_section_confirm' => $reset_section, + 'import_section_confirm' => $import_confirm, + 'preset_confirm' => $preset_confirm, + 'please_wait' => __( 'Please Wait', 'redux-framework' ), + 'opt_name' => $this->parent->args['opt_name'], + 'slug' => $this->parent->args['page_slug'], + 'hints' => $this->parent->args['hints'], + 'disable_save_warn' => $this->parent->args['disable_save_warn'], + 'class' => $this->parent->args['class'], + 'ajax_save' => $this->parent->args['ajax_save'], + 'menu_search' => $pagenow . '?page=' . $this->parent->args['page_slug'] . "&tab=" + ); + + $this->parent->localize_data['ajax'] = array( + 'console' => __( 'There was an error saving. Here is the result of your action:', 'redux-framework' ), + 'alert' => __( 'There was a problem with your action. Please try again or reload the page.', 'redux-framework' ), + ); + + $this->parent->localize_data = apply_filters( "redux/{$this->parent->args['opt_name']}/localize", $this->parent->localize_data ); + + $this->get_warnings_and_errors_array(); + + wp_localize_script( + 'redux-js', + 'redux', + $this->parent->localize_data + ); + + wp_enqueue_script( 'redux-js' ); // Enque the JS now + + } + } + } \ No newline at end of file diff --git a/redux/ReduxCore/core/newsflash.php b/redux/ReduxCore/core/newsflash.php new file mode 100644 index 0000000..f78ce1d --- /dev/null +++ b/redux/ReduxCore/core/newsflash.php @@ -0,0 +1,126 @@ +parent = $parent; + + if ( ! is_admin() ) { + return; + } + + $this->server_file = $params['server_file']; + $this->interval = isset( $params['interval'] ) ? $params['interval'] : 3; + $this->cookie_id = isset( $params['cookie_id'] ) ? $params['cookie_id'] : $parent->args['opt_name'] . '_blast'; + + $this->notice_data = get_option( 'r_notice_data', '' ); + + $fname = Redux_Functions::bub( 'get_notice_json', $parent->args['opt_name'] ); + $mname = Redux_Functions::yo( 'display_message', $parent->args['opt_name'] ); + + // if notice data is empty + if ( empty( $this->notice_data ) ) { + // get notice data from server and create cache data + $this->$fname(); + } else { + // check expiry time + if ( ! isset( $_COOKIE[ $this->cookie_id ] ) ) { + // expired! get notice data from server + $this->$fname(); + } + } + + // set the admin notice msg + $this->$mname(); + } + + private function bub() { + $this->notice_data = ''; + } + + private function get_notice_json() { + + // get notice data from server + $data = @wp_remote_get( $this->server_file, array( 'sslverify' => false ) ); + + if ( isset( $data ) && ! empty( $data ) && ! is_wp_error( $data ) && $data['response']['code'] == 200 ) { + $data = $data['body']; + // if some data exists + if ( $data != '' || ! empty( $data ) ) { + + if ( ! empty( $this->notice_data ) ) { + if ( strcmp( $data, $this->notice_data ) == 0 ) { + // set new cookie for interval value + Redux_Functions::setCookie( $this->cookie_id, time(), time() + ( 86400 * $this->interval ), '/' ); + + // bail out + return; + } + } + + update_option( 'r_notice_data', $data ); + $this->notice_data = $data; + + // set cookie for three day expiry + setcookie( $this->cookie_id, time(), time() + ( 86400 * $this->interval ), '/' ); + + // set unique key for dismiss meta key + update_option( $this->cookie_id, time() ); + } + } + } + + private function display_message() { + // Notice data exists? + if ( ! empty( $this->notice_data ) ) { + // decode json string + $data = (Array) json_decode( $this->notice_data ); + // must be array and not empty + if ( is_array( $data ) && ! empty( $data ) ) { + + // No message means nothing to display. + if ( ! isset( $data['message'] ) || $data['message'] == '' || empty( $data['message'] ) ) { + return; + } + + // validate data + $data['type'] = isset( $data['type'] ) && $data['type'] != '' ? $data['type'] : 'updated'; + $data['title'] = isset( $data['title'] ) && $data['title'] != '' ? $data['title'] : ''; + + if ( $data['type'] == 'redux-message' ) { + $data['type'] = 'updated redux-message'; + } + + $data['color'] = isset( $data['color'] ) ? $data['color'] : '#00A2E3'; + + // get unique meta key + $key = get_option( $this->cookie_id ); + + $notice_data = array( + 'parent' => $this->parent, + 'type' => $data['type'], + 'msg' => $data['title'] . $data['message'], + 'id' => $this->cookie_id . '_' . $key, + 'dismiss' => true, + 'color' => $data['color'] + ); + + Redux_Admin_Notices::set_notice($notice_data); + } + } + } + } + } diff --git a/redux/ReduxCore/core/panel.php b/redux/ReduxCore/core/panel.php new file mode 100644 index 0000000..b9e860b --- /dev/null +++ b/redux/ReduxCore/core/panel.php @@ -0,0 +1,332 @@ +parent = $parent; + Redux_Functions::$_parent = $parent; + $this->template_path = $this->original_path = ReduxFramework::$_dir . 'templates/panel/'; + if ( ! empty( $this->parent->args['templates_path'] ) ) { + $this->template_path = trailingslashit( $this->parent->args['templates_path'] ); + } + $this->template_path = trailingslashit( apply_filters( "redux/{$this->parent->args['opt_name']}/panel/templates_path", $this->template_path ) ); + } + + public function init() { + $this->panel_template(); + } + + + /** + * Loads the panel templates where needed and provides the container for Redux + */ + private function panel_template() { + + if ( $this->parent->args['dev_mode'] ) { + $this->template_file_check_notice(); + } + + /** + * action 'redux/{opt_name}/panel/before' + */ + do_action( "redux/{$this->parent->args['opt_name']}/panel/before" ); + + echo '

    '; // Stupid hack for Wordpress alerts and warnings + + echo '
    '; + echo '
    '; + + // Do we support JS? + echo ''; + + // Security is vital! + echo ''; + + /** + * action 'redux-page-before-form-{opt_name}' + * + * @deprecated + */ + do_action( "redux-page-before-form-{$this->parent->args['opt_name']}" ); // Remove + + /** + * action 'redux/page/{opt_name}/form/before' + * + * @param object $this ReduxFramework + */ + do_action( "redux/page/{$this->parent->args['opt_name']}/form/before", $this ); + + $this->get_template( 'container.tpl.php' ); + + /** + * action 'redux-page-after-form-{opt_name}' + * + * @deprecated + */ + do_action( "redux-page-after-form-{$this->parent->args['opt_name']}" ); // REMOVE + + /** + * action 'redux/page/{opt_name}/form/after' + * + * @param object $this ReduxFramework + */ + do_action( "redux/page/{$this->parent->args['opt_name']}/form/after", $this ); + echo '
    '; + echo '
    '; + + if ( $this->parent->args['dev_mode'] == true ) { +// if ( current_user_can( 'administrator' ) ) { +// global $wpdb; +// echo "
    ";
    +//                        print_r( $wpdb->queries );
    +//                        echo "
    "; +// } + + echo '
    ' . get_num_queries() . ' queries in ' . timer_stop( 0 ) . ' seconds
    Redux is currently set to developer mode.
    '; + } + + /** + * action 'redux/{opt_name}/panel/after' + */ + do_action( "redux/{$this->parent->args['opt_name']}/panel/after" ); + + } + + + /** + * Calls the various notification bars and sets the appropriate templates. + */ + function notification_bar() { + + if ( isset( $this->parent->transients['last_save_mode'] ) ) { + + if ( $this->parent->transients['last_save_mode'] == "import" ) { + /** + * action 'redux/options/{opt_name}/import' + * + * @param object $this ReduxFramework + */ + do_action( "redux/options/{$this->parent->args['opt_name']}/import", $this, $this->parent->transients['changed_values'] ); + + /** + * filter 'redux-imported-text-{opt_name}' + * + * @param string translated "settings imported" text + */ + echo '
    ' . apply_filters( "redux-imported-text-{$this->parent->args['opt_name']}", __( 'Settings Imported!', 'redux-framework' ) ) . '
    '; + //exit(); + } else if ( $this->parent->transients['last_save_mode'] == "defaults" ) { + /** + * action 'redux/options/{opt_name}/reset' + * + * @param object $this ReduxFramework + */ + do_action( "redux/options/{$this->parent->args['opt_name']}/reset", $this ); + + /** + * filter 'redux-defaults-text-{opt_name}' + * + * @param string translated "settings imported" text + */ + echo '
    ' . apply_filters( "redux-defaults-text-{$this->parent->args['opt_name']}", __( 'All Defaults Restored!', 'redux-framework' ) ) . '
    '; + } else if ( $this->parent->transients['last_save_mode'] == "defaults_section" ) { + /** + * action 'redux/options/{opt_name}/section/reset' + * + * @param object $this ReduxFramework + */ + do_action( "redux/options/{$this->parent->args['opt_name']}/section/reset", $this ); + + /** + * filter 'redux-defaults-section-text-{opt_name}' + * + * @param string translated "settings imported" text + */ + echo '
    ' . apply_filters( "redux-defaults-section-text-{$this->parent->args['opt_name']}", __( 'Section Defaults Restored!', 'redux-framework' ) ) . '
    '; + } else if ( $this->parent->transients['last_save_mode'] == "normal" ) { + /** + * action 'redux/options/{opt_name}/saved' + * + * @param mixed $value set/saved option value + */ + do_action( "redux/options/{$this->parent->args['opt_name']}/saved", $this->parent->options, $this->parent->transients['changed_values'] ); + + /** + * filter 'redux-saved-text-{opt_name}' + * + * @param string translated "settings saved" text + */ + echo '
    ' . apply_filters( "redux-saved-text-{$this->parent->args['opt_name']}", ''.__( 'Settings Saved!', 'redux-framework' ) ).'' . '
    '; + } + + unset( $this->parent->transients['last_save_mode'] ); + //$this->parent->transients['last_save_mode'] = 'remove'; + $this->parent->set_transients(); + } + + /** + * action 'redux/options/{opt_name}/settings/changes' + * + * @param mixed $value set/saved option value + */ + do_action( "redux/options/{$this->parent->args['opt_name']}/settings/change", $this->parent->options, $this->parent->transients['changed_values'] ); + + /** + * filter 'redux-changed-text-{opt_name}' + * + * @param string translated "settings have changed" text + */ + echo '
    ' . apply_filters( "redux-changed-text-{$this->parent->args['opt_name']}", __( 'Settings have changed, you should save them!', 'redux-framework' ) ) . '
    '; + + /** + * action 'redux/options/{opt_name}/errors' + * + * @param array $this ->errors error information + */ + do_action( "redux/options/{$this->parent->args['opt_name']}/errors", $this->parent->errors ); + echo '
    ' . __( 'error(s) were found!', 'redux-framework' ) . '
    '; + + /** + * action 'redux/options/{opt_name}/warnings' + * + * @param array $this ->warnings warning information + */ + do_action( "redux/options/{$this->parent->args['opt_name']}/warnings", $this->parent->warnings ); + echo '
    ' . __( 'warning(s) were found!', 'redux-framework' ) . '
    '; + + } + + /** + * Used to intitialize the settings fields for this panel. Required for saving and redirect. + */ + function init_settings_fields() { + // Must run or the page won't redirect properly + settings_fields( "{$this->parent->args['opt_name']}_group" ); + } + + + /** + * Used to select the proper template. If it doesn't exist in the path, then the original template file is used. + * + * @param $file + */ + function get_template( $file ) { + + if ( empty( $file ) ) { + return; + } + + if ( file_exists( $this->template_path . $file ) ) { + $path = $this->template_path . $file; + } else { + $path = $this->original_path . $file; + } + + do_action( "redux/{$this->parent->args['opt_name']}/panel/template/" . $file . '/before' ); + $path = apply_filters( "redux/{$this->parent->args['opt_name']}/panel/template/" . $file, $path ); + do_action( "redux/{$this->parent->args['opt_name']}/panel/template/" . $file . '/after' ); + + require $path; + + } + + /** + * Scan the template files + * + * @param string $template_path + * + * @return array + */ + public function scan_template_files( $template_path ) { + $files = scandir( $template_path ); + $result = array(); + if ( $files ) { + foreach ( $files as $key => $value ) { + if ( ! in_array( $value, array( ".", ".." ) ) ) { + if ( is_dir( $template_path . DIRECTORY_SEPARATOR . $value ) ) { + $sub_files = self::scan_template_files( $template_path . DIRECTORY_SEPARATOR . $value ); + foreach ( $sub_files as $sub_file ) { + $result[] = $value . DIRECTORY_SEPARATOR . $sub_file; + } + } else { + $result[] = $value; + } + } + } + } + + return $result; + } + + /** + * Show a notice highlighting bad template files + */ + public function template_file_check_notice() { + + if ( $this->template_path == $this->original_path ) { + return; + } + + $core_templates = $this->scan_template_files( $this->original_path ); + $outdated = false; + + foreach ( $core_templates as $file ) { + $developer_theme_file = false; + + if ( file_exists( $this->template_path . $file ) ) { + $developer_theme_file = $this->template_path . $file; + } + + if ( $developer_theme_file ) { + $core_version = Redux_Helpers::get_template_version( $this->original_path . $file ); + $developer_version = Redux_Helpers::get_template_version( $developer_theme_file ); + + if ( $core_version && $developer_version && version_compare( $developer_version, $core_version, '<' ) ) { + ?> +
    +

    Your panel has bundled outdated copies of Redux Framework template files – if you encounter functionality issues this could be the reason. Ensure you update or remove them.', 'redux-framework' ); ?>

    +
    + parent->args['opt_name'] . $k . '_section_group' ); + } + + } + } \ No newline at end of file diff --git a/redux/ReduxCore/core/required.php b/redux/ReduxCore/core/required.php new file mode 100644 index 0000000..08b33c1 --- /dev/null +++ b/redux/ReduxCore/core/required.php @@ -0,0 +1,25 @@ +parent = $parent; + Redux_Functions::$_parent = $parent; + + + /** + * action 'redux/page/{opt_name}/' + */ + do_action( "redux/page/{$parent->args['opt_name']}/" ); + + } + + + } + } \ No newline at end of file diff --git a/redux/ReduxCore/framework.php b/redux/ReduxCore/framework.php new file mode 100644 index 0000000..b9746fc --- /dev/null +++ b/redux/ReduxCore/framework.php @@ -0,0 +1,4263 @@ +. + * + * @package Redux_Framework + * @subpackage Core + * @author Redux Framework Team + */ + // Exit if accessed directly + if ( ! defined( 'ABSPATH' ) ) { + exit; + } + + if ( ! class_exists( 'ReduxFrameworkInstances' ) ) { + // Instance Container + require_once dirname( __FILE__ ) . '/inc/class.redux_instances.php'; + require_once dirname( __FILE__ ) . '/inc/lib.redux_instances.php'; + } + + if ( class_exists( 'ReduxFrameworkInstances' ) ) { + add_action( 'redux/init', 'ReduxFrameworkInstances::get_instance' ); + } + + // Don't duplicate me! + if ( ! class_exists( 'ReduxFramework' ) ) { + + // Redux CDN class + require_once dirname( __FILE__ ) . '/inc/class.redux_cdn.php'; + + // Redux API class :) + require_once dirname( __FILE__ ) . '/inc/class.redux_api.php'; + + // General helper functions + require_once dirname( __FILE__ ) . '/inc/class.redux_helpers.php'; + + // General functions + require_once dirname( __FILE__ ) . '/inc/class.redux_functions.php'; + require_once dirname( __FILE__ ) . '/inc/class.p.php'; + + require_once dirname( __FILE__ ) . '/inc/class.thirdparty.fixes.php'; + + require_once dirname( __FILE__ ) . '/inc/class.redux_filesystem.php'; + + require_once dirname( __FILE__ ) . '/inc/class.redux_admin_notices.php'; + + // ThemeCheck checks + require_once dirname( __FILE__ ) . '/inc/themecheck/class.redux_themecheck.php'; + + // Welcome + require_once dirname( __FILE__ ) . '/inc/welcome/welcome.php'; + + /** + * Main ReduxFramework class + * + * @since 1.0.0 + */ + class ReduxFramework { + + // ATTENTION DEVS + // Please update the build number with each push, no matter how small. + // This will make for easier support when we ask users what version they are using. + + public static $_version = '3.6.18'; + public static $_dir; + public static $_url; + public static $_upload_dir; + public static $_upload_url; + public static $wp_content_url; + public static $base_wp_content_url; + public static $_is_plugin = true; + public static $_as_plugin = false; + public $old_opt_name; + public $transients_check; + public $field_types; + public $field_head; + public $googleArray; + public $validation_ran; + public $no_output; + + public static function init() { + $dir = Redux_Helpers::cleanFilePath( dirname( __FILE__ ) ); + + // Windows-proof constants: replace backward by forward slashes. Thanks to: @peterbouwmeester + self::$_dir = trailingslashit( $dir ); + self::$wp_content_url = trailingslashit( Redux_Helpers::cleanFilePath( ( is_ssl() ? str_replace( 'http://', 'https://', WP_CONTENT_URL ) : WP_CONTENT_URL ) ) ); + + // See if Redux is a plugin or not + if ( strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( get_stylesheet_directory() ) ) !== false || strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( get_template_directory_uri() ) ) !== false || strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( WP_CONTENT_DIR . '/themes/' ) ) !== false ) { + self::$_is_plugin = false; + } else { + // Check if plugin is a symbolic link, see if it's a plugin. If embedded, we can't do a thing. + if ( strpos( self::$_dir, ABSPATH ) === false ) { + if ( ! function_exists( 'get_plugins' ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin.php'; + } + + $is_plugin = false; + foreach ( get_plugins() as $key => $value ) { + if ( is_plugin_active( $key ) && strpos( $key, 'redux-framework.php' ) !== false ) { + self::$_dir = trailingslashit( Redux_Helpers::cleanFilePath( WP_CONTENT_DIR . '/plugins/' . plugin_dir_path( $key ) . 'ReduxCore/' ) ); + $is_plugin = true; + } + } + if ( ! $is_plugin ) { + self::$_is_plugin = false; + } + } + } + + if ( self::$_is_plugin == true || self::$_as_plugin == true ) { + self::$_url = plugin_dir_url( __FILE__ ); + } else { + if ( strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( get_template_directory() ) ) !== false ) { + $relative_url = str_replace( Redux_Helpers::cleanFilePath( get_template_directory() ), '', self::$_dir ); + self::$_url = trailingslashit( get_template_directory_uri() . $relative_url ); + } else if ( strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( get_stylesheet_directory() ) ) !== false ) { + $relative_url = str_replace( Redux_Helpers::cleanFilePath( get_stylesheet_directory() ), '', self::$_dir ); + self::$_url = trailingslashit( get_stylesheet_directory_uri() . $relative_url ); + } else { + $wp_content_dir = trailingslashit( Redux_Helpers::cleanFilePath( WP_CONTENT_DIR ) ); + $wp_content_dir = trailingslashit( str_replace( '//', '/', $wp_content_dir ) ); + $relative_url = str_replace( $wp_content_dir, '', self::$_dir ); + self::$_url = trailingslashit( self::$wp_content_url . $relative_url ); + } + } + + /** + * TODO: Fix mkdir url + * */ + + if(QUADMENU_DEV) { + self::$_url = plugin_dir_url( __FILE__ ); + } + + self::$_url = apply_filters( "redux/_url", self::$_url ); + self::$_dir = apply_filters( "redux/_dir", self::$_dir ); + self::$_is_plugin = apply_filters( "redux/_is_plugin", self::$_is_plugin ); + } + + // ::init() + + public $framework_url = 'http://www.reduxframework.com/'; + public static $instance = null; + public $admin_notices = array(); + public $page = ''; + public $saved = false; + public $fields = array(); // Fields by type used in the panel + public $field_sections = array(); // Section id's by field type, then field ID + public $current_tab = ''; // Current section to display, cookies + public $extensions = array(); // Extensions by type used in the panel + public $sections = array(); // Sections and fields + public $errors = array(); // Errors + public $warnings = array(); // Warnings + public $options = array(); // Option values + public $options_defaults = null; // Option defaults + public $notices = array(); // Option defaults + public $compiler_fields = array(); // Fields that trigger the compiler hook + public $required = array(); // Information that needs to be localized + public $required_child = array(); // Information that needs to be localized + public $localize_data = array(); // Information that needs to be localized + public $fonts = array(); // Information that needs to be localized + public $folds = array(); // The itms that need to fold. + public $path = ''; + public $changed_values = array(); // Values that have been changed on save. Orig values. + public $output = array(); // Fields with CSS output selectors + public $outputCSS = null; // CSS that get auto-appended to the header + public $compilerCSS = null; // CSS that get sent to the compiler hook + public $customizerCSS = null; // CSS that goes to the customizer + public $fieldsValues = array(); //all fields values in an id=>value array so we can check dependencies + public $fieldsHidden = array(); //all fields that didn't pass the dependency test and are hidden + public $toHide = array(); // Values to hide on page load + public $typography = null; //values to generate google font CSS + public $import_export = null; + public $no_panel = array(); // Fields that are not visible in the panel + private $show_hints = false; + public $hidden_perm_fields = array(); // Hidden fields specified by 'permissions' arg. + public $hidden_perm_sections = array(); // Hidden sections specified by 'permissions' arg. + public $typography_preview = array(); + public $args = array(); + public $filesystem = null; + public $font_groups = array(); + public $lang = ""; + public $dev_mode_forced = false; + public $reload_fields = array(); + public $omit_share_icons = false; + public $omit_admin_items = false; + public $apiHasRun = false; + public $transients; + + /** + * Class Constructor. Defines the args for the theme options class + * + * @since 1.0.0 + * + * @param array $sections Panel sections. + * @param array $args Class constructor arguments. + * @param array $extra_tabs Extra panel tabs. // REMOVE + * + * @return \ReduxFramework + */ + public function __construct( $sections = array(), $args = array(), $extra_tabs = array() ) { + // Disregard WP AJAX 'heartbeat'call. Why waste resources? + if ( isset ( $_POST ) && isset ( $_POST['action'] ) && $_POST['action'] == 'heartbeat' ) { + + // Hook, for purists. + if ( has_action( 'redux/ajax/heartbeat' ) ) { + do_action( 'redux/ajax/heartbeat', $this ); + } + + // Buh bye! + return; + } + + // Pass parent pointer to function helper. + Redux_Functions::$_parent = $this; + Redux_CDN::$_parent = $this; + + // Set values + $this->set_default_args(); + $this->args = wp_parse_args( $args, $this->args ); + + if ( empty ( $this->args['transient_time'] ) ) { + $this->args['transient_time'] = 60 * MINUTE_IN_SECONDS; + } + + if ( empty ( $this->args['footer_credit'] ) ) { + $this->args['footer_credit'] = '' . sprintf( __( 'Options panel created using %1$s', 'redux-framework' ), '' . __( 'Redux Framework', 'redux-framework' ) . ' v' . self::$_version ) . ''; + } + + if ( empty ( $this->args['menu_title'] ) ) { + $this->args['menu_title'] = __( 'Options', 'redux-framework' ); + } + + if ( empty ( $this->args['page_title'] ) ) { + $this->args['page_title'] = __( 'Options', 'redux-framework' ); + } + + $this->old_opt_name = $this->args['opt_name']; + + /** + * filter 'redux/args/{opt_name}' + * + * @param array $args ReduxFramework configuration + */ + $this->args = apply_filters( "redux/args/{$this->args['opt_name']}", $this->args ); + + /** + * filter 'redux/options/{opt_name}/args' + * + * @param array $args ReduxFramework configuration + */ + $this->args = apply_filters( "redux/options/{$this->args['opt_name']}/args", $this->args ); + + if ( $this->args['opt_name'] == $this->old_opt_name ) { + unset( $this->old_opt_name ); + } + + // Do not save the defaults if we're on a live preview! + if ( $GLOBALS['pagenow'] == "customize" && isset( $_GET['theme'] ) && ! empty( $_GET['theme'] ) ) { + $this->args['save_defaults'] = false; + } + + if ( ! empty ( $this->args['opt_name'] ) ) { + /** + * SHIM SECTION + * Old variables and ways of doing things that need correcting. ;) + * */ + // Variable name change + if ( ! empty ( $this->args['page_cap'] ) ) { + $this->args['page_permissions'] = $this->args['page_cap']; + unset ( $this->args['page_cap'] ); + } + + if ( ! empty ( $this->args['page_position'] ) ) { + $this->args['page_priority'] = $this->args['page_position']; + unset ( $this->args['page_position'] ); + } + + if ( ! empty ( $this->args['page_type'] ) ) { + $this->args['menu_type'] = $this->args['page_type']; + unset ( $this->args['page_type'] ); + } + + // Auto create the page_slug appropriately + if ( empty( $this->args['page_slug'] ) ) { + if ( ! empty( $this->args['display_name'] ) ) { + $this->args['page_slug'] = sanitize_html_class( $this->args['display_name'] ); + } else if ( ! empty( $this->args['page_title'] ) ) { + $this->args['page_slug'] = sanitize_html_class( $this->args['page_title'] ); + } else if ( ! empty( $this->args['menu_title'] ) ) { + $this->args['page_slug'] = sanitize_html_class( $this->args['menu_title'] ); + } else { + $this->args['page_slug'] = str_replace( '-', '_', $this->args['opt_name'] ); + } + } + + $this->change_demo_defaults(); + + // Get rid of extra_tabs! Not needed. + if ( is_array( $extra_tabs ) && ! empty ( $extra_tabs ) ) { + foreach ( $extra_tabs as $tab ) { + array_push( $this->sections, $tab ); + } + } + + // Move to the first loop area! + /** + * filter 'redux-sections' + * + * @deprecated + * + * @param array $sections field option sections + */ + $this->sections = apply_filters( 'redux-sections', $sections ); // REMOVE LATER + /** + * filter 'redux-sections-{opt_name}' + * + * @deprecated + * + * @param array $sections field option sections + */ + $this->sections = apply_filters( "redux-sections-{$this->args['opt_name']}", $this->sections ); // REMOVE LATER + /** + * filter 'redux/options/{opt_name}/sections' + * + * @param array $sections field option sections + */ + $this->sections = apply_filters( "redux/options/{$this->args['opt_name']}/sections", $this->sections ); + + /** + * Construct hook + * action 'redux/construct' + * + * @param object $this ReduxFramework + */ + do_action( 'redux/construct', $this ); + + // Set the default values + $this->_default_cleanup(); + + // Internataionalization + $this->_internationalization(); + + $this->filesystem = Redux_Filesystem::get_instance( $this ); + + //set redux upload folder + $this->set_redux_content(); + + // Register extra extensions + $this->_register_extensions(); + + // Grab database values + $this->get_options(); + + // Tracking + if ( isset( $this->args['allow_tracking'] ) && $this->args['allow_tracking'] && Redux_Helpers::isTheme( __FILE__ ) ) { + $this->_tracking(); + } + + // Options page + add_action( 'admin_menu', array( $this, '_options_page' ) ); + + // Add a network menu + if ( $this->args['database'] == "network" && $this->args['network_admin'] ) { + add_action( 'network_admin_menu', array( $this, '_options_page' ) ); + } + + // Admin Bar menu + add_action( 'admin_bar_menu', array( + $this, + '_admin_bar_menu' + ), $this->args['admin_bar_priority'] ); + + // Register setting + add_action( 'admin_init', array( $this, '_register_settings' ) ); + + // Display admin notices in dev_mode + if ( true == $this->args['dev_mode'] ) { + if ( true == $this->args['update_notice'] ) { + // add_action( 'admin_init', array( $this, '_update_check' ) ); + } + } + + // Display admin notices + add_action( 'admin_notices', array( $this, '_admin_notices' ), 99 ); + + // Check for dismissed admin notices. + add_action( 'admin_init', array( $this, '_dismiss_admin_notice' ), 9 ); + + // Enqueue the admin page CSS and JS + if ( isset ( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) { + add_action( 'admin_enqueue_scripts', array( $this, '_enqueue' ), 1 ); + } + + // Output dynamic CSS + // Frontend: Maybe enqueue dynamic CSS and Google fonts + if ( empty ( $this->args['output_location'] ) || in_array( 'frontend', $this->args['output_location'] ) ) { + add_action( 'wp_head', array( &$this, '_output_css' ), 150 ); + add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_output' ), 150 ); + } + + // Login page: Maybe enqueue dynamic CSS and Google fonts + if ( in_array( 'login', $this->args['output_location'] ) ) { + add_action( 'login_head', array( &$this, '_output_css' ), 150 ); + add_action( 'login_enqueue_scripts', array( &$this, '_enqueue_output' ), 150 ); + } + + // Admin area: Maybe enqueue dynamic CSS and Google fonts + if ( in_array( 'admin', $this->args['output_location'] ) ) { + add_action( 'admin_head', array( &$this, '_output_css' ), 150 ); + add_action( 'admin_enqueue_scripts', array( &$this, '_enqueue_output' ), 150 ); + } + + + add_action( 'wp_print_scripts', array( $this, 'vc_fixes' ), 100 ); + add_action( 'admin_enqueue_scripts', array( $this, 'vc_fixes' ), 100 ); + + + if ( $this->args['database'] == "network" && $this->args['network_admin'] ) { + add_action( 'network_admin_edit_redux_' . $this->args['opt_name'], array( + $this, + 'save_network_page' + ), 10, 0 ); + add_action( 'admin_bar_menu', array( $this, 'network_admin_bar' ), 999 ); + } + // Ajax saving!!! + add_action( "wp_ajax_" . $this->args['opt_name'] . '_ajax_save', array( $this, "ajax_save" ) ); + + if ( $this->args['dev_mode'] == true || Redux_Helpers::isLocalHost() == true ) { + require_once 'core/dashboard.php'; + new reduxDashboardWidget( $this ); + + if ( ! isset ( $GLOBALS['redux_notice_check'] ) || $GLOBALS['redux_notice_check'] == 0 ) { + require_once 'core/newsflash.php'; + + $params = array( + 'dir_name' => 'notice', + 'server_file' => 'http://reduxframework.com/wp-content/uploads/redux/redux_notice.json', + 'interval' => 3, + 'cookie_id' => 'redux_blast', + ); + + new reduxNewsflash( $this, $params ); + $GLOBALS['redux_notice_check'] = 1; + } + } + } + + /** + * Loaded hook + * action 'redux/loaded' + * + * @param object $this ReduxFramework + */ + do_action( 'redux/loaded', $this ); + } + + // __construct() + + private function set_redux_content() { + $upload_dir = wp_upload_dir(); + self::$_upload_dir = $upload_dir['basedir'] . '/redux/'; + self::$_upload_url = str_replace( array( + 'https://', + 'http://' + ), '//', $upload_dir['baseurl'] . '/redux/' ); + } + + private function set_default_args() { + $this->args = array( + 'opt_name' => '', + // Must be defined by theme/plugin + 'google_api_key' => '', + // Must be defined to update the google fonts cache for the typography module + 'google_update_weekly' => false, + // Set to keep your google fonts updated weekly + 'last_tab' => '', + // force a specific tab to always show on reload + 'menu_icon' => '', + // menu icon + 'menu_title' => '', + // menu title/text + 'page_title' => '', + // option page title + 'page_slug' => '', + 'page_permissions' => 'manage_options', + 'menu_type' => 'menu', + // ('menu'|'submenu') + 'page_parent' => 'themes.php', + // requires menu_type = 'submenu + 'page_priority' => null, + 'allow_sub_menu' => true, + // allow submenus to be added if menu_type == menu + 'save_defaults' => true, + // Save defaults to the DB on it if empty + 'footer_credit' => '', + 'async_typography' => false, + 'disable_google_fonts_link' => false, + 'class' => '', + // Class that gets appended to all redux-containers + 'admin_bar' => true, + 'admin_bar_priority' => 999, + // Show the panel pages on the admin bar + 'admin_bar_icon' => '', + // admin bar icon + 'help_tabs' => array(), + 'help_sidebar' => '', + 'database' => '', + // possible: options, theme_mods, theme_mods_expanded, transient, network + 'customizer' => false, + // setting to true forces get_theme_mod_expanded + 'global_variable' => '', + // Changes global variable from $GLOBALS['YOUR_OPT_NAME'] to whatever you set here. false disables the global variable + 'output' => true, + // Dynamically generate CSS + 'compiler' => true, + // Initiate the compiler hook + 'output_tag' => true, + // Print Output Tag + 'output_location' => array( 'frontend' ), + // Where the dynamic CSS will be added. Can be any combination from: 'frontend', 'login', 'admin' + 'transient_time' => '', + 'default_show' => false, + // If true, it shows the default value + 'default_mark' => '', + // What to print by the field's title if the value shown is default + 'update_notice' => true, + // Recieve an update notice of new commits when in dev mode + 'disable_save_warn' => false, + // Disable the save warn + 'open_expanded' => false, + 'hide_expand' => false, + // Start the panel fully expanded to start with + 'network_admin' => false, + // Enable network admin when using network database mode + 'network_sites' => true, + // Enable sites as well as admin when using network database mode + 'hide_reset' => false, + 'hide_save' => false, + 'hints' => array( + 'icon' => 'el el-question-sign', + 'icon_position' => 'right', + 'icon_color' => 'lightgray', + 'icon_size' => 'normal', + 'tip_style' => array( + 'color' => 'light', + 'shadow' => true, + 'rounded' => false, + 'style' => '', + ), + 'tip_position' => array( + 'my' => 'top_left', + 'at' => 'bottom_right', + ), + 'tip_effect' => array( + 'show' => array( + 'effect' => 'slide', + 'duration' => '500', + 'event' => 'mouseover', + ), + 'hide' => array( + 'effect' => 'fade', + 'duration' => '500', + 'event' => 'click mouseleave', + ), + ), + ), + 'show_import_export' => true, + 'show_options_object' => true, + 'dev_mode' => true, + 'templates_path' => '', + // Path to the templates file for various Redux elements + 'ajax_save' => true, + // Disable the use of ajax saving for the panel + 'use_cdn' => true, + 'cdn_check_time' => 1440, + 'options_api' => true, + ); + } + + // Fix conflicts with Visual Composer. + public function vc_fixes() { + if ( redux_helpers::isFieldInUse( $this, 'ace_editor' ) ) { + wp_dequeue_script( 'wpb_ace' ); + wp_deregister_script( 'wpb_ace' ); + } + } + + public function network_admin_bar( $wp_admin_bar ) { + + $args = array( + 'id' => $this->args['opt_name'] . '_network_admin', + 'title' => $this->args['menu_title'], + 'parent' => 'network-admin', + 'href' => network_admin_url( 'settings.php' ) . '?page=' . $this->args['page_slug'], + 'meta' => array( 'class' => 'redux-network-admin' ) + ); + $wp_admin_bar->add_node( $args ); + } + + public function save_network_page() { + + $data = $this->_validate_options( $_POST[ $this->args['opt_name'] ] ); + + if ( ! empty ( $data ) ) { + $this->set_options( $data ); + } + + wp_redirect( add_query_arg( array( + 'page' => $this->args['page_slug'], + 'updated' => 'true' + ), network_admin_url( 'settings.php' ) ) ); + exit (); + } + + public function _update_check() { + // Only one notice per instance please + if ( ! isset ( $GLOBALS['redux_update_check'] ) ) { + Redux_Functions::updateCheck($this, self::$_version ); + $GLOBALS['redux_update_check'] = 1; + } + } + + public function _admin_notices() { + Redux_Admin_Notices::adminNotices($this, $this->admin_notices ); + } + + public function _dismiss_admin_notice() { + Redux_Admin_Notices::dismissAdminNotice(); + } + + /** + * Load the plugin text domain for translation. + * + * @since 3.0.5 + */ + private function _internationalization() { + + /** + * Locale for text domain + * filter 'redux/textdomain/{opt_name}' + * + * @param string The locale of the blog or from the 'locale' hook + * @param string 'redux-framework' text domain + */ + // $locale = apply_filters( "redux/textdomain/{$this->args['opt_name']}", get_locale(), 'redux-framework' ); + // + // if ( strpos( $locale, '_' ) === false ) { + // if ( file_exists( self::$_dir . 'languages/' . strtolower( $locale ) . '_' . strtoupper( $locale ) . '.mo' ) ) { + // $locale = strtolower( $locale ) . '_' . strtoupper( $locale ); + // } + // } + + $basename = basename( __FILE__ ); + $basepath = plugin_basename( __FILE__ ); + $basepath = str_replace( $basename, '', $basepath ); + + $basepath = apply_filters( "redux/textdomain/basepath/{$this->args['opt_name']}", $basepath ); + + $loaded = load_plugin_textdomain( 'redux-framework', false, $basepath . 'languages'); + + if ( !$loaded ){ + $loaded = load_muplugin_textdomain( 'redux-framework', $basepath . 'languages' ); + } + + if ( !$loaded ){ + $loaded = load_theme_textdomain( 'redux-framework', $basepath . 'languages' ); + } + + if ( ! $loaded ) { + $locale = apply_filters( 'plugin_locale', get_locale(), 'redux-framework' ); + $mofile = dirname( __FILE__ ) . '/languages/redux-framework-' . $locale . '.mo'; + load_textdomain( 'redux-framework', $mofile ); + } + } + // _internationalization() + + /** + * @return ReduxFramework + */ + public function get_instance() { + //self::$_instance = $this; + return self::$instance; + } + + // get_instance() + + private function _tracking() { + if ( file_exists( dirname( __FILE__ ) . '/inc/tracking.php' ) ) { + require_once dirname( __FILE__ ) . '/inc/tracking.php'; + $tracking = Redux_Tracking::get_instance(); + $tracking->load( $this ); + } + } + // _tracking() + + /** + * ->_get_default(); This is used to return the default value if default_show is set + * + * @since 1.0.1 + * @access public + * + * @param string $opt_name The option name to return + * @param mixed $default (null) The value to return if default not set + * + * @return mixed $default + */ + public function _get_default( $opt_name, $default = null ) { + if ( $this->args['default_show'] == true ) { + + if ( empty ( $this->options_defaults ) ) { + $this->_default_values(); // fill cache + } + + $default = array_key_exists( $opt_name, $this->options_defaults ) ? $this->options_defaults[ $opt_name ] : $default; + } + + return $default; + } + // _get_default() + + /** + * ->get(); This is used to return and option value from the options array + * + * @since 1.0.0 + * @access public + * + * @param string $opt_name The option name to return + * @param mixed $default (null) The value to return if option not set + * + * @return mixed + */ + public function get( $opt_name, $default = null ) { + return ( ! empty ( $this->options[ $opt_name ] ) ) ? $this->options[ $opt_name ] : $this->_get_default( $opt_name, $default ); + } + // get() + + /** + * ->set(); This is used to set an arbitrary option in the options array + * + * @since 1.0.0 + * @access public + * + * @param string $opt_name The name of the option being added + * @param mixed $value The value of the option being added + * + * @return void + */ + public function set( $opt_name = '', $value = '' ) { + if ( $opt_name != '' ) { + $this->options[ $opt_name ] = $value; + $this->set_options( $this->options ); + } + } + // set() + + /** + * Set a global variable by the global_variable argument + * + * @since 3.1.5 + * @return bool (global was set) + */ + private function set_global_variable() { + if ( $this->args['global_variable'] ) { + $option_global = $this->args['global_variable']; + /** + * filter 'redux/options/{opt_name}/global_variable' + * + * @param array $value option value to set global_variable with + */ + $GLOBALS[ $this->args['global_variable'] ] = apply_filters( "redux/options/{$this->args['opt_name']}/global_variable", $this->options ); + if ( isset ( $this->transients['last_save'] ) ) { + // Deprecated + $GLOBALS[ $this->args['global_variable'] ]['REDUX_last_saved'] = $this->transients['last_save']; + // Last save key + $GLOBALS[ $this->args['global_variable'] ]['REDUX_LAST_SAVE'] = $this->transients['last_save']; + } + if ( isset ( $this->transients['last_compiler'] ) ) { + // Deprecated + $GLOBALS[ $this->args['global_variable'] ]['REDUX_COMPILER'] = $this->transients['last_compiler']; + // Last compiler hook key + $GLOBALS[ $this->args['global_variable'] ]['REDUX_LAST_COMPILER'] = $this->transients['last_compiler']; + } + + return true; + } + + return false; + } + // set_global_variable() + + /** + * ->set_options(); This is used to set an arbitrary option in the options array + * + * @since ReduxFramework 3.0.0 + * + * @param mixed $value the value of the option being added + */ + public function set_options( $value = '' ) { + + $this->transients['last_save'] = time(); + + if ( ! empty ( $value ) ) { + + $this->options = $value; + + if ( $this->args['database'] === 'transient' ) { + set_transient( $this->args['opt_name'] . '-transient', $value, $this->args['transient_time'] ); + } else if ( $this->args['database'] === 'theme_mods' ) { + set_theme_mod( $this->args['opt_name'] . '-mods', $value ); + } else if ( $this->args['database'] === 'theme_mods_expanded' ) { + foreach ( $value as $k => $v ) { + set_theme_mod( $k, $v ); + } + } else if ( $this->args['database'] === 'network' ) { + // Strip those slashes! + //$value = json_decode( stripslashes( json_encode( $value ) ), true ); + update_site_option( $this->args['opt_name'], $value ); + } else { + update_option( $this->args['opt_name'], $value ); + } + + // Store the changed values in the transient + if ( $value != $this->options ) { + foreach ( $value as $k => $v ) { + if ( ! isset ( $this->options[ $k ] ) ) { + $this->options[ $k ] = ""; + } else if ( $v == $this->options[ $k ] ) { + unset ( $this->options[ $k ] ); + } + } + $this->transients['changed_values'] = $this->options; + } + + $this->options = $value; + + // Set a global variable by the global_variable argument. + $this->set_global_variable(); + + // Saving the transient values + $this->set_transients(); + + //do_action( "redux-saved-{$this->args['opt_name']}", $value ); // REMOVE + //do_action( "redux/options/{$this->args['opt_name']}/saved", $value, $this->transients['changed_values'] ); + } + } + // set_options() + + /** + * ->get_options(); This is used to get options from the database + * + * @since ReduxFramework 3.0.0 + */ + public function get_options() { + $defaults = false; + + if ( ! empty ( $this->defaults ) ) { + $defaults = $this->defaults; + } + + if ( $this->args['database'] === "transient" ) { + $result = get_transient( $this->args['opt_name'] . '-transient' ); + } else if ( $this->args['database'] === "theme_mods" ) { + $result = get_theme_mod( $this->args['opt_name'] . '-mods' ); + } else if ( $this->args['database'] === 'theme_mods_expanded' ) { + $result = get_theme_mods(); + } else if ( $this->args['database'] === 'network' ) { + $result = get_site_option( $this->args['opt_name'], array() ); + //$result = json_decode( stripslashes( json_encode( $result ) ), true ); + } else { + $result = get_option( $this->args['opt_name'], array() ); + } + + if ( empty ( $result ) && ! empty ( $defaults ) ) { + $results = $defaults; + $this->set_options( $results ); + } else { + $this->options = $result; + } + + /** + * action 'redux/options/{opt_name}/options' + * + * @param mixed $value option values + */ + $this->options = apply_filters( "redux/options/{$this->args['opt_name']}/options", $this->options ); + + // Get transient values + $this->get_transients(); + + // Set a global variable by the global_variable argument. + $this->set_global_variable(); + } + // get_options() + + /** + * ->get_wordpress_date() - Get Wordpress specific data from the DB and return in a usable array + * + * @since ReduxFramework 3.0.0 + */ + public function get_wordpress_data( $type = false, $args = array() ) { + $data = ""; + //return $data; + /** + * filter 'redux/options/{opt_name}/wordpress_data/{type}/' + * + * @deprecated + * + * @param string $data + */ + $data = apply_filters( "redux/options/{$this->args['opt_name']}/wordpress_data/$type/", $data ); // REMOVE LATER + + /** + * filter 'redux/options/{opt_name}/data/{type}' + * + * @param string $data + */ + $data = apply_filters( "redux/options/{$this->args['opt_name']}/data/$type", $data ); + + $argsKey = md5( serialize( $args ) ); + + if ( empty ( $data ) && isset ( $this->wp_data[ $type . $argsKey ] ) ) { + $data = $this->wp_data[ $type . $argsKey ]; + } + + if ( empty ( $data ) && ! empty ( $type ) ) { + + /** + * Use data from Wordpress to populate options array + * */ + if ( ! empty ( $type ) && empty ( $data ) ) { + if ( empty ( $args ) ) { + $args = array(); + } + + $data = array(); + $args = wp_parse_args( $args, array() ); + + if ( $type == "categories" || $type == "category" ) { + $cats = get_categories( $args ); + if ( ! empty ( $cats ) ) { + foreach ( $cats as $cat ) { + $data[ $cat->term_id ] = $cat->name; + } + //foreach + } // If + } else if ( $type == "menus" || $type == "menu" ) { + $menus = wp_get_nav_menus( $args ); + if ( ! empty ( $menus ) ) { + foreach ( $menus as $item ) { + $data[ $item->term_id ] = $item->name; + } + //foreach + } + //if + } else if ( $type == "pages" || $type == "page" ) { + if ( ! isset ( $args['posts_per_page'] ) ) { + $args['posts_per_page'] = 20; + } + $pages = get_pages( $args ); + if ( ! empty ( $pages ) ) { + foreach ( $pages as $page ) { + $data[ $page->ID ] = $page->post_title; + } + //foreach + } + //if + } else if ( $type == "terms" || $type == "term" ) { + $taxonomies = $args['taxonomies']; + unset ( $args['taxonomies'] ); + $terms = get_terms( $taxonomies, $args ); // this will get nothing + if ( ! empty ( $terms ) && ! is_a( $terms, 'WP_Error' ) ) { + foreach ( $terms as $term ) { + $data[ $term->term_id ] = $term->name; + } + //foreach + } // If + } else if ( $type == "taxonomy" || $type == "taxonomies" ) { + $taxonomies = get_taxonomies( $args ); + if ( ! empty ( $taxonomies ) ) { + foreach ( $taxonomies as $key => $taxonomy ) { + $data[ $key ] = $taxonomy; + } + //foreach + } // If + } else if ( $type == "posts" || $type == "post" ) { + $posts = get_posts( $args ); + if ( ! empty ( $posts ) ) { + foreach ( $posts as $post ) { + $data[ $post->ID ] = $post->post_title; + } + //foreach + } + //if + } else if ( $type == "post_type" || $type == "post_types" ) { + global $wp_post_types; + + $defaults = array( + 'public' => true, + 'exclude_from_search' => false, + ); + $args = wp_parse_args( $args, $defaults ); + $output = 'names'; + $operator = 'and'; + $post_types = get_post_types( $args, $output, $operator ); + + ksort( $post_types ); + + foreach ( $post_types as $name => $title ) { + if ( isset ( $wp_post_types[ $name ]->labels->menu_name ) ) { + $data[ $name ] = $wp_post_types[ $name ]->labels->menu_name; + } else { + $data[ $name ] = ucfirst( $name ); + } + } + } else if ( $type == "tags" || $type == "tag" ) { // NOT WORKING! + $tags = get_tags( $args ); + if ( ! empty ( $tags ) ) { + foreach ( $tags as $tag ) { + $data[ $tag->term_id ] = $tag->name; + } + //foreach + } + //if + } else if ( $type == "menu_location" || $type == "menu_locations" ) { + global $_wp_registered_nav_menus; + + foreach ( $_wp_registered_nav_menus as $k => $v ) { + $data[ $k ] = $v; + } + } else if ( $type == "image_size" || $type == "image_sizes" ) { + global $_wp_additional_image_sizes; + + foreach ( $_wp_additional_image_sizes as $size_name => $size_attrs ) { + $data[ $size_name ] = $size_name . ' - ' . $size_attrs['width'] . ' x ' . $size_attrs['height']; + } + } else if ( $type == "elusive-icons" || $type == "elusive-icon" || $type == "elusive" || + $type == "font-icon" || $type == "font-icons" || $type == "icons" + ) { + + /** + * filter 'redux-font-icons' + * + * @deprecated + * + * @param array $font_icons array of elusive icon classes + */ + $font_icons = apply_filters( 'redux-font-icons', array() ); // REMOVE LATER + + /** + * filter 'redux/font-icons' + * + * @deprecated + * + * @param array $font_icons array of elusive icon classes + */ + $font_icons = apply_filters( 'redux/font-icons', $font_icons ); + + /** + * filter 'redux/{opt_name}/field/font/icons' + * + * @deprecated + * + * @param array $font_icons array of elusive icon classes + */ + $font_icons = apply_filters( "redux/{$this->args['opt_name']}/field/font/icons", $font_icons ); + + foreach ( $font_icons as $k ) { + $data[ $k ] = $k; + } + } else if ( $type == "roles" ) { + /** @global WP_Roles $wp_roles */ + global $wp_roles; + + $data = $wp_roles->get_names(); + } else if ( $type == "sidebars" || $type == "sidebar" ) { + /** @global array $wp_registered_sidebars */ + global $wp_registered_sidebars; + + foreach ( $wp_registered_sidebars as $key => $value ) { + $data[ $key ] = $value['name']; + } + } else if ( $type == "capabilities" ) { + /** @global WP_Roles $wp_roles */ + global $wp_roles; + + foreach ( $wp_roles->roles as $role ) { + foreach ( $role['capabilities'] as $key => $cap ) { + $data[ $key ] = ucwords( str_replace( '_', ' ', $key ) ); + } + } + } else if ( $type == "callback" ) { + if ( ! is_array( $args ) ) { + $args = array( $args ); + } + $data = call_user_func( $args[0] ); + } else if ( $type == "users" || $type == "users" ) { + $users = get_users( $args ); + if ( ! empty ( $users ) ) { + foreach ( $users as $user ) { + $data[ $user->ID ] = $user->display_name; + } + //foreach + } + //if + } + //if + } + //if + + $this->wp_data[ $type . $argsKey ] = $data; + } + + //if + + return $data; + } + // get_wordpress_data() + + /** + * ->show(); This is used to echo and option value from the options array + * + * @since 1.0.0 + * @access public + * + * @param string $opt_name The name of the option being shown + * @param mixed $default The value to show if $opt_name isn't set + * + * @return void + */ + public function show( $opt_name, $default = '' ) { + $option = $this->get( $opt_name ); + if ( ! is_array( $option ) && $option != '' ) { + echo $option; + } elseif ( $default != '' ) { + echo $this->_get_default( $opt_name, $default ); + } + } + // show() + + /** + * Get the default value for an option + * + * @since 3.3.6 + * @access public + * + * @param string $key The option's ID + * @param string $array_key The key of the default's array + * + * @return mixed + */ + public function get_default_value( $key, $array_key = false ) { + if ( empty ( $this->options_defaults ) ) { + $this->options_defaults = $this->_default_values(); + } + + $defaults = $this->options_defaults; + $value = ''; + + if ( isset ( $defaults[ $key ] ) ) { + if ( $array_key !== false && isset ( $defaults[ $key ][ $array_key ] ) ) { + $value = $defaults[ $key ][ $array_key ]; + } else { + $value = $defaults[ $key ]; + } + } + + return $value; + } + + public function field_default_values( $field ) { + // Detect what field types are being used + if ( ! isset ( $this->fields[ $field['type'] ][ $field['id'] ] ) ) { + $this->fields[ $field['type'] ][ $field['id'] ] = 1; + } else { + $this->fields[ $field['type'] ] = array( $field['id'] => 1 ); + } + if ( isset ( $field['default'] ) ) { + $this->options_defaults[ $field['id'] ] = apply_filters( "redux/{$this->args['opt_name']}/field/{$field['type']}/defaults", $field['default'], $field ); + } elseif ( ( $field['type'] != "ace_editor" ) ) { + // Sorter data filter + + if ( isset( $field['data'] ) && ! empty( $field['data'] ) ) { + if ( ! isset( $field['args'] ) ) { + $field['args'] = array(); + } + if ( is_array( $field['data'] ) && ! empty( $field['data'] ) ) { + foreach ( $field['data'] as $key => $data ) { + if ( ! empty( $data ) ) { + if ( ! isset ( $field['args'][ $key ] ) ) { + $field['args'][ $key ] = array(); + } + $field['options'][ $key ] = $this->get_wordpress_data( $data, $field['args'][ $key ] ); + } + } + } else { + $field['options'] = $this->get_wordpress_data( $field['data'], $field['args'] ); + } + } + + if ( $field['type'] == "sorter" && isset ( $field['data'] ) && ! empty ( $field['data'] ) && is_array( $field['data'] ) ) { + if ( ! isset ( $field['args'] ) ) { + $field['args'] = array(); + } + foreach ( $field['data'] as $key => $data ) { + if ( ! isset ( $field['args'][ $key ] ) ) { + $field['args'][ $key ] = array(); + } + $field['options'][ $key ] = $this->get_wordpress_data( $data, $field['args'][ $key ] ); + } + } + + if ( isset ( $field['options'] ) ) { + if ( $field['type'] == "sortable" ) { + $this->options_defaults[ $field['id'] ] = array(); + } elseif ( $field['type'] == "image_select" ) { + $this->options_defaults[ $field['id'] ] = ''; + } elseif ( $field['type'] == "select" ) { + $this->options_defaults[ $field['id'] ] = ''; + } else { + $this->options_defaults[ $field['id'] ] = $field['options']; + } + } + } + } + + /** + * Get default options into an array suitable for the settings API + * + * @since 1.0.0 + * @access public + * @return array $this->options_defaults + */ + public function _default_values() { + if ( ! is_null( $this->sections ) && is_null( $this->options_defaults ) ) { + + // fill the cache + foreach ( $this->sections as $sk => $section ) { + if ( ! isset ( $section['id'] ) ) { + if ( ! is_numeric( $sk ) || ! isset ( $section['title'] ) ) { + $section['id'] = $sk; + } else { + $section['id'] = sanitize_title( $section['title'], $sk ); + } + $this->sections[ $sk ] = $section; + } + if ( isset ( $section['fields'] ) ) { + foreach ( $section['fields'] as $k => $field ) { + if ( empty ( $field['id'] ) && empty ( $field['type'] ) ) { + continue; + } + + if ( in_array( $field['type'], array( 'ace_editor' ) ) && isset ( $field['options'] ) ) { + $this->sections[ $sk ]['fields'][ $k ]['args'] = $field['options']; + unset ( $this->sections[ $sk ]['fields'][ $k ]['options'] ); + } + + if ( $field['type'] == "section" && isset ( $field['indent'] ) && $field['indent'] == "true" ) { + $field['class'] = isset ( $field['class'] ) ? $field['class'] : ''; + $field['class'] .= " redux-section-indent-start"; + $this->sections[ $sk ]['fields'][ $k ] = $field; + } + $this->field_default_values( $field ); + } + } + } + } + + /** + * filter 'redux/options/{opt_name}/defaults' + * + * @param array $defaults option default values + */ + $this->transients['changed_values'] = isset ( $this->transients['changed_values'] ) ? $this->transients['changed_values'] : array(); + $this->options_defaults = apply_filters( "redux/options/{$this->args['opt_name']}/defaults", $this->options_defaults, $this->transients['changed_values'] ); + + return $this->options_defaults; + } + + /** + * Set default options on admin_init if option doesn't exist + * + * @since 1.0.0 + * @access public + * @return void + */ + private function _default_cleanup() { + + // Fix the global variable name + if ( $this->args['global_variable'] == "" && $this->args['global_variable'] !== false ) { + $this->args['global_variable'] = str_replace( '-', '_', $this->args['opt_name'] ); + } + + // Force dev_mode on WP_DEBUG = true and if it's a local server + if ( Redux_Helpers::isLocalHost() || ( Redux_Helpers::isWpDebug() ) ) { + if ( $this->args['dev_mode'] != true ) { + $this->args['update_notice'] = false; + } + $this->dev_mode_forced = true; + $this->args['dev_mode'] = true; +// if ( isset( $this->args['forced_dev_mode_off'] ) && $this->args['forced_dev_mode_off'] == true ) { +// $this->dev_mode_forced = false; +// $this->args['dev_mode'] = false; +// } + } + + if ( isset( $this->args['customizer_only'] ) && $this->args['customizer_only'] == true ) { + $this->args['menu_type'] = 'hidden'; + $this->args['customizer'] = true; + $this->args['admin_bar'] = false; + $this->args['allow_sub_menu'] = false; + } + + // Check if the Airplane Mode plugin is installed + if ( class_exists( 'Airplane_Mode_Core' ) ) { + $airplane = Airplane_Mode_Core::getInstance(); + if ( method_exists( $airplane, 'enabled' ) ) { + if ( $airplane->enabled() ) { + $this->args['use_cdn'] = false; + } + } else if ( $airplane->check_status() == 'on' ) { + $this->args['use_cdn'] = false; + } + } + } + + /** + * Class Add Sub Menu Function, creates options submenu in Wordpress admin area. + * + * @since 3.1.9 + * @access private + * @return void + */ + private function add_submenu( $page_parent, $page_title, $menu_title, $page_permissions, $page_slug ) { + global $submenu; + + // Just in case. One never knows. + $page_parent = strtolower( $page_parent ); + + $test = array( + 'index.php' => 'dashboard', + 'edit.php' => 'posts', + 'upload.php' => 'media', + 'link-manager.php' => 'links', + 'edit.php?post_type=page' => 'pages', + 'edit-comments.php' => 'comments', + 'themes.php' => 'theme', + 'plugins.php' => 'plugins', + 'users.php' => 'users', + 'tools.php' => 'management', + 'options-general.php' => 'options', + ); + + if ( isset ( $test[ $page_parent ] ) ) { + $function = 'add_' . $test[ $page_parent ] . '_page'; + $this->page = $function ( + $page_title, $menu_title, $page_permissions, $page_slug, array( $this, 'generate_panel' ) + ); + } else { + // Network settings and Post type menus. These do not have + // wrappers and need to be appened to using add_submenu_page. + // Okay, since we've left the post type menu appending + // as default, we need to validate it, so anything that + // isn't post_type= doesn't get through and mess + // things up. + $addMenu = false; + if ( 'settings.php' != $page_parent ) { + // Establish the needle + $needle = '?post_type='; + + // Check if it exists in the page_parent (how I miss instr) + $needlePos = strrpos( $page_parent, $needle ); + + // It's there, so... + if ( $needlePos > 0 ) { + + // Get the post type. + $postType = substr( $page_parent, $needlePos + strlen( $needle ) ); + + // Ensure it exists. + if ( post_type_exists( $postType ) ) { + // Set flag to add the menu page + $addMenu = true; + } + // custom menu + } elseif ( isset ( $submenu[ $this->args['page_parent'] ] ) ) { + $addMenu = true; + } else { + global $menu; + + foreach ( $menu as $menupriority => $menuitem ) { + $needle_menu_slug = isset ( $menuitem ) ? $menuitem[2] : false; + if ( $needle_menu_slug != false ) { + + // check if the current needle menu equals page_parent + if ( strcasecmp( $needle_menu_slug, $page_parent ) == 0 ) { + + // found an empty parent menu + $addMenu = true; + } + } + } + } + } else { + // The page_parent was settings.php, so set menu add + // flag to true. + $addMenu = true; + } + // Add the submenu if it's permitted. + if ( true == $addMenu ) { + // ONLY for non-wp.org themes OR plugins. Theme-Check alert shown if used and IS theme. + $this->page = call_user_func( 'add_submenu_page', $page_parent, $page_title, $menu_title, $page_permissions, $page_slug, array( + &$this, + 'generate_panel' + ) ); + } + } + } + + /** + * Class Options Page Function, creates main options page. + * + * @since 1.0.0 + * @access public + * @return void + */ + public function _options_page() { + + if ( $this->args['menu_type'] == 'hidden' ) { + + // No menu to add! + } else if ( $this->args['menu_type'] == 'submenu' ) { + $this->add_submenu( + $this->args['page_parent'], $this->args['page_title'], $this->args['menu_title'], $this->args['page_permissions'], $this->args['page_slug'] + ); + } else { + // Theme-Check notice is displayed for WP.org theme devs, informing them to NOT use this. + $this->page = call_user_func( 'add_menu_page', $this->args['page_title'], $this->args['menu_title'], $this->args['page_permissions'], $this->args['page_slug'], array( + &$this, + 'generate_panel' + ), $this->args['menu_icon'], $this->args['page_priority'] + ); + + if ( true === $this->args['allow_sub_menu'] ) { + foreach ( $this->sections as $k => $section ) { + $canBeSubSection = ( $k > 0 && ( ! isset ( $this->sections[ ( $k ) ]['type'] ) || $this->sections[ ( $k ) ]['type'] != "divide" ) ) ? true : false; + if ( ! isset ( $section['title'] ) || ( $canBeSubSection && ( isset ( $section['subsection'] ) && $section['subsection'] == true ) ) ) { + continue; + } + if ( isset ( $section['submenu'] ) && $section['submenu'] == false ) { + continue; + } + if ( isset ( $section['customizer_only'] ) && $section['customizer_only'] == true ) { + continue; + } + if ( isset ( $section['hidden'] ) && $section['hidden'] == true ) { + continue; + } + if ( isset( $section['permissions'] ) && ! self::current_user_can( $section['permissions'] ) ) { + continue; + } + // ONLY for non-wp.org themes OR plugins. Theme-Check alert shown if used and IS theme. + call_user_func( 'add_submenu_page', $this->args['page_slug'], $section['title'], $section['title'], $this->args['page_permissions'], $this->args['page_slug'] . '&tab=' . $k, + //create_function( '$a', "return null;" ) + '__return_null' ); + } + // Remove parent submenu item instead of adding null item. + remove_submenu_page( $this->args['page_slug'], $this->args['page_slug'] ); + } + } + + add_action( "load-{$this->page}", array( &$this, '_load_page' ) ); + } + // _options_page() + + /** + * Add admin bar menu + * + * @since 3.1.5.16 + * @access public + * @global $menu , $submenu, $wp_admin_bar + * @return void + */ + public function _admin_bar_menu() { + global $menu, $submenu, $wp_admin_bar; + + if ( ! is_super_admin() || ! is_admin_bar_showing() || ! $this->args['admin_bar'] || $this->args['menu_type'] == 'hidden' ) { + return; + } + + if ( $menu ) { + foreach ( $menu as $menu_item ) { + if ( isset ( $menu_item[2] ) && $menu_item[2] === $this->args["page_slug"] ) { + + // Fetch the title + $title = empty ( $this->args['admin_bar_icon'] ) ? $menu_item[0] : '' . $menu_item[0]; + + $nodeargs = array( + 'id' => $menu_item[2], + 'title' => $title, + 'href' => admin_url( 'admin.php?page=' . $menu_item[2] ), + 'meta' => array() + ); + $wp_admin_bar->add_node( $nodeargs ); + + break; + } + } + + if ( isset ( $submenu[ $this->args["page_slug"] ] ) && is_array( $submenu[ $this->args["page_slug"] ] ) ) { + foreach ( $submenu[ $this->args["page_slug"] ] as $index => $redux_options_submenu ) { + $subnodeargs = array( + 'id' => $this->args["page_slug"] . '_' . $index, + 'title' => $redux_options_submenu[0], + 'parent' => $this->args["page_slug"], + 'href' => admin_url( 'admin.php?page=' . $redux_options_submenu[2] ), + ); + + $wp_admin_bar->add_node( $subnodeargs ); + } + } + + // Let's deal with external links + if ( isset ( $this->args['admin_bar_links'] ) ) { + + if ( ! $this->args['dev_mode'] && $this->omit_admin_items ) { + return; + } + + // Group for Main Root Menu (External Group) + $wp_admin_bar->add_node( array( + 'id' => $this->args["page_slug"] . '-external', + 'parent' => $this->args["page_slug"], + 'group' => true, + 'meta' => array( 'class' => 'ab-sub-secondary' ) + ) ); + + // Add Child Menus to External Group Menu + foreach ( $this->args['admin_bar_links'] as $link ) { + if ( ! isset ( $link['id'] ) ) { + $link['id'] = $this->args["page_slug"] . '-sub-' . sanitize_html_class( $link['title'] ); + } + $externalnodeargs = array( + 'id' => $link['id'], + 'title' => $link['title'], + 'parent' => $this->args["page_slug"] . '-external', + 'href' => $link['href'], + 'meta' => array( 'target' => '_blank' ) + ); + + $wp_admin_bar->add_node( $externalnodeargs ); + } + } + } else { + // Fetch the title + $title = empty ( $this->args['admin_bar_icon'] ) ? $this->args['menu_title'] : '' . $this->args['menu_title']; + + $nodeargs = array( + 'id' => $this->args["page_slug"], + 'title' => $title, + 'href' => admin_url( 'admin.php?page=' . $this->args["page_slug"] ), + 'meta' => array() + ); + + $wp_admin_bar->add_node( $nodeargs ); + } + } + // _admin_bar_menu() + + /** + * Output dynamic CSS at bottom of HEAD + * + * @since 3.2.8 + * @access public + * @return void + */ + public function _output_css() { + if ( $this->args['output'] == false && $this->args['compiler'] == false ) { + return; + } + + if ( isset ( $this->no_output ) ) { + return; + } + + if ( ! empty ( $this->outputCSS ) && ( $this->args['output_tag'] == true || ( isset ( $_POST['customized'] ) ) ) ) { + echo ''; + } + } + + /** + * Enqueue CSS and Google fonts for front end + * + * @since 1.0.0 + * @access public + * @return void + */ + public function _enqueue_output() { + if ( $this->args['output'] == false && $this->args['compiler'] == false ) { + return; + } + + /** @noinspection PhpUnusedLocalVariableInspection */ + foreach ( $this->sections as $k => $section ) { + if ( isset ( $section['type'] ) && ( $section['type'] == 'divide' ) ) { + continue; + } + + if ( isset ( $section['fields'] ) ) { + /** @noinspection PhpUnusedLocalVariableInspection */ + foreach ( $section['fields'] as $fieldk => $field ) { + if ( isset ( $field['type'] ) && $field['type'] != "callback" ) { + $field_class = "ReduxFramework_{$field['type']}"; + if ( ! class_exists( $field_class ) ) { + + if ( ! isset ( $field['compiler'] ) ) { + $field['compiler'] = ""; + } + + /** + * Field class file + * filter 'redux/{opt_name}/field/class/{field.type} + * + * @param string field class file + * @param array $field field config data + */ + $class_file = apply_filters( "redux/{$this->args['opt_name']}/field/class/{$field['type']}", self::$_dir . "inc/fields/{$field['type']}/field_{$field['type']}.php", $field ); + + if ( $class_file && file_exists( $class_file ) && ! class_exists( $field_class ) ) { + /** @noinspection PhpIncludeInspection */ + require_once $class_file; + } + } + + if ( ! empty ( $this->options[ $field['id'] ] ) && class_exists( $field_class ) && method_exists( $field_class, 'output' ) && $this->_can_output_css( $field ) ) { + $field = apply_filters( "redux/field/{$this->args['opt_name']}/output_css", $field ); + + if ( ! empty ( $field['output'] ) && ! is_array( $field['output'] ) ) { + $field['output'] = array( $field['output'] ); + } + + $value = isset ( $this->options[ $field['id'] ] ) ? $this->options[ $field['id'] ] : ''; + $enqueue = new $field_class ( $field, $value, $this ); + + if ( ( ( isset ( $field['output'] ) && ! empty ( $field['output'] ) ) || ( isset ( $field['compiler'] ) && ! empty ( $field['compiler'] ) ) || $field['type'] == "typography" || $field['type'] == "icon_select" ) ) { + $enqueue->output(); + } + } + } + } + } + } + + // For use like in the customizer. Stops the output, but passes the CSS in the variable for the compiler + if ( isset ( $this->no_output ) ) { + return; + } + + if ( ! empty ( $this->typography ) && ! empty ( $this->typography ) && filter_var( $this->args['output'], FILTER_VALIDATE_BOOLEAN ) ) { + $version = ! empty ( $this->transients['last_save'] ) ? $this->transients['last_save'] : ''; + $typography = new ReduxFramework_typography ( null, null, $this ); + + if ( $this->args['async_typography'] && ! empty ( $this->typography ) ) { + $families = array(); + foreach ( $this->typography as $key => $value ) { + $families[] = $key; + } + ?> + + args['disable_google_fonts_link'] ) { + $protocol = ( ! empty ( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443 ) ? "https:" : "http:"; + + //echo ''; + wp_register_style( 'redux-google-fonts-' . $this->args['opt_name'], $protocol . $typography->makeGoogleWebfontLink( $this->typography ), '', $version ); + wp_enqueue_style( 'redux-google-fonts-' . $this->args['opt_name'] ); + } + } + } + // _enqueue_output() + + /** + * Enqueue CSS/JS for options page + * + * @since 1.0.0 + * @access public + * @global $wp_styles + * @return void + */ + public function _enqueue() { + require_once 'core/enqueue.php'; + $enqueue = new reduxCoreEnqueue ( $this ); + $enqueue->init(); + } + // _enqueue() + + /** + * Show page help + * + * @since 1.0.0 + * @access public + * @return void + */ + public function _load_page() { + + // Do admin head action for this page + add_action( 'admin_head', array( &$this, 'admin_head' ) ); + + // Do admin footer text hook + add_filter( 'admin_footer_text', array( &$this, 'admin_footer_text' ) ); + + $screen = get_current_screen(); + + if ( is_array( $this->args['help_tabs'] ) ) { + foreach ( $this->args['help_tabs'] as $tab ) { + $screen->add_help_tab( $tab ); + } + } + + // If hint argument is set, display hint tab + if ( true == $this->show_hints ) { + global $current_user; + + // Users enable/disable hint choice + $hint_status = get_user_meta( $current_user->ID, 'ignore_hints' ) ? get_user_meta( $current_user->ID, 'ignore_hints', true ) : 'true'; + + // current page parameters + $curPage = esc_attr( $_GET['page'] ); + + $curTab = '0'; + if ( isset ( $_GET['tab'] ) ) { + $curTab = esc_attr( $_GET['tab'] ); + } + + // Default url values for enabling hints. + $dismiss = 'true'; + $s = __( 'Enable', 'redux-framework' ); + + // Values for disabling hints. + if ( 'true' == $hint_status ) { + $dismiss = 'false'; + $s = __( 'Disable', 'redux-framework' ); + } + + // Make URL + $url = '' . $s . ' hints'; + + $event = __( 'moving the mouse over', 'redux-framework' ); + if ( 'click' == $this->args['hints']['tip_effect']['show']['event'] ) { + $event = __( 'clicking', 'redux-framework' ); + } + + // Construct message + $msg = sprintf( __( 'Hints are tooltips that popup when %d the hint icon, offering addition information about the field in which they appear. They can be %d d by using the link below.', 'redux-framework' ), $event, strtolower( $s ) ) . '

    ' . $url; + + // Construct hint tab + $tab = array( + 'id' => 'redux-hint-tab', + 'title' => __( 'Hints', 'redux-framework' ), + 'content' => '

    ' . $msg . '

    ' + ); + + $screen->add_help_tab( $tab ); + } + + // Sidebar text + if ( $this->args['help_sidebar'] != '' ) { + + // Specify users text from arguments + $screen->set_help_sidebar( $this->args['help_sidebar'] ); + } else { + + // If sidebar text is empty and hints are active, display text + // about hints. + if ( true == $this->show_hints ) { + $screen->set_help_sidebar( '

    Redux Framework

    Hint Tooltip Preferences

    ' ); + } + } + + /** + * action 'redux-load-page-{opt_name}' + * + * @deprecated + * + * @param object $screen WP_Screen + */ + do_action( "redux-load-page-{$this->args['opt_name']}", $screen ); // REMOVE + + /** + * action 'redux/page/{opt_name}/load' + * + * @param object $screen WP_Screen + */ + do_action( "redux/page/{$this->args['opt_name']}/load", $screen ); + } + // _load_page() + + /** + * Do action redux-admin-head for options page + * + * @since 1.0.0 + * @access public + * @return void + */ + public function admin_head() { + /** + * action 'redux-admin-head-{opt_name}' + * + * @deprecated + * + * @param object $this ReduxFramework + */ + do_action( "redux-admin-head-{$this->args['opt_name']}", $this ); // REMOVE + + /** + * action 'redux/page/{opt_name}/header' + * + * @param object $this ReduxFramework + */ + do_action( "redux/page/{$this->args['opt_name']}/header", $this ); + } + // admin_head() + + /** + * Return footer text + * + * @since 2.0.0 + * @access public + * @return string $this->args['footer_credit'] + */ + public function admin_footer_text() { + return $this->args['footer_credit']; + } + // admin_footer_text() + + /** + * Return default output string for use in panel + * + * @since 3.1.5 + * @access public + * @return string default_output + */ + private function get_default_output_string( $field ) { + $default_output = ""; + + if ( ! isset ( $field['default'] ) ) { + $field['default'] = ""; + } + + if ( ! is_array( $field['default'] ) ) { + if ( ! empty ( $field['options'][ $field['default'] ] ) ) { + if ( ! empty ( $field['options'][ $field['default'] ]['alt'] ) ) { + $default_output .= $field['options'][ $field['default'] ]['alt'] . ', '; + } else { + // TODO: This serialize fix may not be the best solution. Look into it. PHP 5.4 error without serialize + if ( ! is_array( $field['options'][ $field['default'] ] ) ) { + $default_output .= $field['options'][ $field['default'] ] . ", "; + } else { + $default_output .= serialize( $field['options'][ $field['default'] ] ) . ", "; + } + } + } else if ( ! empty ( $field['options'][ $field['default'] ] ) ) { + $default_output .= $field['options'][ $field['default'] ] . ", "; + } else if ( ! empty ( $field['default'] ) ) { + if ( $field['type'] == 'switch' && isset ( $field['on'] ) && isset ( $field['off'] ) ) { + $default_output .= ( $field['default'] == 1 ? $field['on'] : $field['off'] ) . ', '; + } else { + $default_output .= $field['default'] . ', '; + } + } + } else { + foreach ( $field['default'] as $defaultk => $defaultv ) { + if ( ! empty ( $field['options'][ $defaultv ]['alt'] ) ) { + $default_output .= $field['options'][ $defaultv ]['alt'] . ', '; + } else if ( ! empty ( $field['options'][ $defaultv ] ) ) { + $default_output .= $field['options'][ $defaultv ] . ", "; + } else if ( ! empty ( $field['options'][ $defaultk ] ) ) { + $default_output .= $field['options'][ $defaultk ] . ", "; + } else if ( ! empty ( $defaultv ) ) { + $default_output .= $defaultv . ', '; + } + } + } + + if ( ! empty ( $default_output ) ) { + $default_output = __( 'Default', 'redux-framework' ) . ": " . substr( $default_output, 0, - 2 ); + } + + if ( ! empty ( $default_output ) ) { + $default_output = '' . $default_output . '
    '; + } + + return $default_output; + } + + // get_default_output_string() + + public function get_header_html( $field ) { + global $current_user; + + // Set to empty string to avoid wanrings. + $hint = ''; + $th = ""; + + if ( isset ( $field['title'] ) && isset ( $field['type'] ) && $field['type'] !== "info" && $field['type'] !== "section" ) { + $default_mark = ( ! empty ( $field['default'] ) && isset ( $this->options[ $field['id'] ] ) && $this->options[ $field['id'] ] == $field['default'] && ! empty ( $this->args['default_mark'] ) && isset ( $field['default'] ) ) ? $this->args['default_mark'] : ''; + + // If a hint is specified in the field, process it. + if ( isset ( $field['hint'] ) && ! '' == $field['hint'] ) { + + // Set show_hints flag to true, so helptab will be displayed. + $this->show_hints = true; + + $hint = apply_filters( 'redux/hints/html', $hint, $field, $this->args ); + + // Get user pref for displaying hints. + $metaVal = get_user_meta( $current_user->ID, 'ignore_hints', true ); + if ( 'true' == $metaVal || empty ( $metaVal ) && empty( $hint ) ) { + + // Set hand cursor for clickable hints + $pointer = ''; + if ( isset ( $this->args['hints']['tip_effect']['show']['event'] ) && 'click' == $this->args['hints']['tip_effect']['show']['event'] ) { + $pointer = 'pointer'; + } + + $size = '16px'; + if ( 'large' == $this->args['hints']['icon_size'] ) { + $size = '18px'; + } + + // In case docs are ignored. + $titleParam = isset ( $field['hint']['title'] ) ? $field['hint']['title'] : ''; + $contentParam = isset ( $field['hint']['content'] ) ? $field['hint']['content'] : ''; + + $hint_color = isset ( $this->args['hints']['icon_color'] ) ? $this->args['hints']['icon_color'] : '#d3d3d3'; + + // Set hint html with appropriate position css + $hint = '
     
    '; + } + } + + if ( ! empty ( $field['title'] ) ) { + if ( 'left' == $this->args['hints']['icon_position'] ) { + $th = $hint . $field['title'] . $default_mark . ""; + } else { + $th = $field['title'] . $default_mark . "" . $hint; + } + } + + if ( isset ( $field['subtitle'] ) ) { + $th .= '' . $field['subtitle'] . ''; + } + } + + if ( ! empty ( $th ) ) { + $th = '
    ' . $th . '
    '; + } + + $filter_arr = array( + 'editor', + 'ace_editor', + 'info', + 'section', + 'repeater', + 'color_scheme', + 'social_profiles', + 'css_layout' + ); + + if ( $this->args['default_show'] == true && isset ( $field['default'] ) && isset ( $this->options[ $field['id'] ] ) && $this->options[ $field['id'] ] != $field['default'] && ! in_array( $field['type'], $filter_arr ) ) { + $th .= $this->get_default_output_string( $field ); + } + + return $th; + } + + /** + * Register Option for use + * + * @since 1.0.0 + * @access public + * @return void + */ + public function _register_settings() { + + // TODO - REMOVE + // Not used by new sample-config, but in here for legacy builds + // This is bad and can break things. Hehe. + if ( ! function_exists( 'wp_get_current_user' ) ) { + require_once ABSPATH . "wp-includes/pluggable.php"; + } + + if ( $this->args['options_api'] == true ) { + register_setting( $this->args['opt_name'] . '_group', $this->args['opt_name'], array( + $this, + '_validate_options' + ) ); + } + + + if ( is_null( $this->sections ) ) { + return; + } + + if ( empty( $this->options_defaults ) ) { + $this->options_defaults = $this->_default_values(); + } + + $runUpdate = false; + + foreach ( $this->sections as $k => $section ) { + if ( isset ( $section['type'] ) && $section['type'] == 'divide' ) { + continue; + } + + $display = true; + + if ( isset ( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) { + if ( isset ( $section['panel'] ) && $section['panel'] == false ) { + $display = false; + } + } + + + // DOVY! Replace $k with $section['id'] when ready + /** + * filter 'redux-section-{index}-modifier-{opt_name}' + * + * @param array $section section configuration + */ + $section = apply_filters( "redux-section-{$k}-modifier-{$this->args['opt_name']}", $section ); + + /** + * filter 'redux/options/{opt_name}/section/{section.id}' + * + * @param array $section section configuration + */ + if ( isset ( $section['id'] ) ) { + $section = apply_filters( "redux/options/{$this->args['opt_name']}/section/{$section['id']}", $section ); + } + + if ( empty ( $section ) ) { + unset ( $this->sections[ $k ] ); + continue; + } + + if ( ! isset ( $section['title'] ) ) { + $section['title'] = ""; + } + + if ( isset ( $section['customizer_only'] ) && $section['customizer_only'] == true ) { + $section['panel'] = false; + $this->sections[ $k ] = $section; + } + + $heading = isset ( $section['heading'] ) ? $section['heading'] : $section['title']; + + if ( isset ( $section['permissions'] ) ) { + if ( ! self::current_user_can( $section['permissions'] ) ) { + $this->hidden_perm_sections[] = $section['title']; + + foreach ( $section['fields'] as $num => $field_data ) { + $field_type = $field_data['type']; + + if ( $field_type != 'section' || $field_type != 'divide' || $field_type != 'info' || $field_type != 'raw' ) { + $field_id = $field_data['id']; + $default = isset ( $this->options_defaults[ $field_id ] ) ? $this->options_defaults[ $field_id ] : ''; + $data = isset ( $this->options[ $field_id ] ) ? $this->options[ $field_id ] : $default; + + $this->hidden_perm_fields[ $field_id ] = $data; + } + } + + continue; + } + } + + if ( ! $display || ! function_exists( 'add_settings_section' ) ) { + $this->no_panel_section[ $k ] = $section; + } else { + add_settings_section( $this->args['opt_name'] . $k . '_section', $heading, array( + &$this, + '_section_desc' + ), $this->args['opt_name'] . $k . '_section_group' ); + } + + $sectionIndent = false; + if ( isset ( $section['fields'] ) ) { + foreach ( $section['fields'] as $fieldk => $field ) { + if ( ! isset ( $field['type'] ) ) { + continue; // You need a type! + } + + if ( $field['type'] == "info" && isset( $field['raw_html'] ) && $field['raw_html'] == true ) { + $field['type'] = "raw"; + $field['content'] = $field['desc']; + $field['desc'] = ""; + $this->sections[ $k ]['fields'][ $fieldk ] = $field; + } else if ( $field['type'] == "info" ) { + if ( ! isset( $field['full_width'] ) ) { + $field['full_width'] = true; + $this->sections[ $k ]['fields'][ $fieldk ] = $field; + } + } + + if ( $field['type'] == "raw" ) { + if ( isset( $field['align'] ) ) { + $field['full_width'] = $field['align'] ? false : true; + unset( $field['align'] ); + } else if ( ! isset( $field['full_width'] ) ) { + $field['full_width'] = true; + } + $this->sections[ $k ]['fields'][ $fieldk ] = $field; + } + + + /** + * filter 'redux/options/{opt_name}/field/{field.id}' + * + * @param array $field field config + */ + $field = apply_filters( "redux/options/{$this->args['opt_name']}/field/{$field['id']}/register", $field ); + + + $this->field_types[ $field['type'] ] = isset ( $this->field_types[ $field['type'] ] ) ? $this->field_types[ $field['type'] ] : array(); + + $this->field_sections[ $field['type'] ][ $field['id'] ] = $k; + + $display = true; + + if ( isset ( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) { + if ( isset ( $field['panel'] ) && $field['panel'] == false ) { + $display = false; + } + } + if ( isset ( $field['customizer_only'] ) && $field['customizer_only'] == true ) { + $display = false; + } + + if ( isset ( $section['customizer'] ) ) { + $field['customizer'] = $section['customizer']; + $this->sections[ $k ]['fields'][ $fieldk ] = $field; + } + + if ( isset ( $field['permissions'] ) ) { + + if ( ! self::current_user_can( $field['permissions'] ) ) { + $data = isset ( $this->options[ $field['id'] ] ) ? $this->options[ $field['id'] ] : $this->options_defaults[ $field['id'] ]; + + $this->hidden_perm_fields[ $field['id'] ] = $data; + + continue; + } + } + + if ( ! isset ( $field['id'] ) ) { + echo '

    No field ID is set.

    ';
    +                                print_r( $field );
    +                                echo "

    "; + continue; + } + + if ( isset ( $field['type'] ) && $field['type'] == "section" ) { + if ( isset ( $field['indent'] ) && $field['indent'] == true ) { + $sectionIndent = true; + } else { + $sectionIndent = false; + } + } + + if ( isset ( $field['type'] ) && $field['type'] == "info" && $sectionIndent ) { + $field['indent'] = $sectionIndent; + } + + $th = $this->get_header_html( $field ); + + $field['name'] = $this->args['opt_name'] . '[' . $field['id'] . ']'; + + // Set the default value if present + $this->options_defaults[ $field['id'] ] = isset ( $this->options_defaults[ $field['id'] ] ) ? $this->options_defaults[ $field['id'] ] : ''; + + // Set the defaults to the value if not present + $doUpdate = false; + + // Check fields for values in the default parameter + if ( ! isset ( $this->options[ $field['id'] ] ) && isset ( $field['default'] ) ) { + $this->options_defaults[ $field['id'] ] = $this->options[ $field['id'] ] = $field['default']; + $doUpdate = true; + + // Check fields that hae no default value, but an options value with settings to + // be saved by default + } elseif ( ! isset ( $this->options[ $field['id'] ] ) && isset ( $field['options'] ) ) { + + // If sorter field, check for options as save them as defaults + if ( $field['type'] == 'sorter' || $field['type'] == 'sortable' ) { + $this->options_defaults[ $field['id'] ] = $this->options[ $field['id'] ] = $field['options']; + $doUpdate = true; + } + } + + // CORRECT URLS if media URLs are wrong, but attachment IDs are present. + if ( $field['type'] == "media" ) { + if ( isset ( $this->options[ $field['id'] ]['id'] ) && isset ( $this->options[ $field['id'] ]['url'] ) && ! empty ( $this->options[ $field['id'] ]['url'] ) && strpos( $this->options[ $field['id'] ]['url'], str_replace( 'http://', '', WP_CONTENT_URL ) ) === false ) { + $data = wp_get_attachment_url( $this->options[ $field['id'] ]['id'] ); + + if ( isset ( $data ) && ! empty ( $data ) ) { + $this->options[ $field['id'] ]['url'] = $data; + $data = wp_get_attachment_image_src( $this->options[ $field['id'] ]['id'], array( + 150, + 150 + ) ); + $this->options[ $field['id'] ]['thumbnail'] = $data[0]; + $doUpdate = true; + } + } + } + + if ( $field['type'] == "background" ) { + if ( isset ( $this->options[ $field['id'] ]['media']['id'] ) && isset ( $this->options[ $field['id'] ]['background-image'] ) && ! empty ( $this->options[ $field['id'] ]['background-image'] ) && strpos( $this->options[ $field['id'] ]['background-image'], str_replace( 'http://', '', WP_CONTENT_URL ) ) === false ) { + $data = wp_get_attachment_url( $this->options[ $field['id'] ]['media']['id'] ); + + if ( isset ( $data ) && ! empty ( $data ) ) { + $this->options[ $field['id'] ]['background-image'] = $data; + $data = wp_get_attachment_image_src( $this->options[ $field['id'] ]['media']['id'], array( + 150, + 150 + ) ); + $this->options[ $field['id'] ]['media']['thumbnail'] = $data[0]; + $doUpdate = true; + } + } + } + + if ( $field['type'] == "slides" ) { + if ( isset ( $this->options[ $field['id'] ] ) && is_array( $this->options[ $field['id'] ] ) && isset ( $this->options[ $field['id'] ][0]['attachment_id'] ) && isset ( $this->options[ $field['id'] ][0]['image'] ) && ! empty ( $this->options[ $field['id'] ][0]['image'] ) && strpos( $this->options[ $field['id'] ][0]['image'], str_replace( 'http://', '', WP_CONTENT_URL ) ) === false ) { + foreach ( $this->options[ $field['id'] ] as $key => $val ) { + $data = wp_get_attachment_url( $val['attachment_id'] ); + + if ( isset ( $data ) && ! empty ( $data ) ) { + $this->options[ $field['id'] ][ $key ]['image'] = $data; + $data = wp_get_attachment_image_src( $val['attachment_id'], array( + 150, + 150 + ) ); + $this->options[ $field['id'] ][ $key ]['thumb'] = $data[0]; + $doUpdate = true; + } + } + } + } + // END -> CORRECT URLS if media URLs are wrong, but attachment IDs are present. + + if ( true == $doUpdate && ! isset ( $this->never_save_to_db ) ) { + if ( $this->args['save_defaults'] ) { // Only save that to the DB if allowed to + $runUpdate = true; + } + // elseif($this->saved != '' && $this->saved != false) { + // $runUpdate = true; + //} + } + + if ( ! isset ( $field['class'] ) ) { // No errors please + $field['class'] = ""; + } + $id = $field['id']; + + /** + * filter 'redux-field-{field.id}modifier-{opt_name}' + * + * @deprecated + * + * @param array $field field config + */ + $field = apply_filters( "redux-field-{$field['id']}modifier-{$this->args['opt_name']}", $field ); // REMOVE LATER + + /** + * filter 'redux/options/{opt_name}/field/{field.id}' + * + * @param array $field field config + */ + $field = apply_filters( "redux/options/{$this->args['opt_name']}/field/{$field['id']}", $field ); + + if ( empty ( $field ) || ! $field || $field == false ) { + unset ( $this->sections[ $k ]['fields'][ $fieldk ] ); + continue; + } + + if ( ! empty ( $this->folds[ $field['id'] ]['parent'] ) ) { // This has some fold items, hide it by default + $field['class'] .= " fold"; + } + + if ( ! empty ( $this->folds[ $field['id'] ]['children'] ) ) { // Sets the values you shoe fold children on + $field['class'] .= " foldParent"; + } + + if ( ! empty ( $field['compiler'] ) ) { + $field['class'] .= " compiler"; + $this->compiler_fields[ $field['id'] ] = 1; + } + + if ( isset ( $field['unit'] ) && ! isset ( $field['units'] ) ) { + $field['units'] = $field['unit']; + unset ( $field['unit'] ); + } + + $this->sections[ $k ]['fields'][ $fieldk ] = $field; + + if ( isset ( $this->args['display_source'] ) ) { + $th .= ''; + $th .= '
    View Source'; + } + + /** + * action 'redux/options/{opt_name}/field/field.type}/register' + */ + do_action( "redux/options/{$this->args['opt_name']}/field/{$field['type']}/register", $field ); + + $this->check_dependencies( $field ); + $this->field_head[ $field['id'] ] = $th; + + if ( ! $display || isset ( $this->no_panel_section[ $k ] ) ) { + $this->no_panel[] = $field['id']; + } else { + if ( isset ( $field['hidden'] ) && $field['hidden'] ) { + $field['label_for'] = 'redux_hide_field'; + } + if ( $this->args['options_api'] == true ) { + add_settings_field( + "{$fieldk}_field", $th, array( + &$this, + '_field_input' + ), "{$this->args['opt_name']}{$k}_section_group", "{$this->args['opt_name']}{$k}_section", $field + ); + } + } + } + } + } + + /** + * action 'redux-register-settings-{opt_name}' + * + * @deprecated + */ + do_action( "redux-register-settings-{$this->args['opt_name']}" ); // REMOVE + + /** + * action 'redux/options/{opt_name}/register' + * + * @param array option sections + */ + do_action( "redux/options/{$this->args['opt_name']}/register", $this->sections ); + + if ( $runUpdate && ! isset ( $this->never_save_to_db ) ) { // Always update the DB with new fields + $this->set_options( $this->options ); + } + + if ( isset ( $this->transients['run_compiler'] ) && $this->transients['run_compiler'] ) { + + $this->no_output = true; + $this->_enqueue_output(); + + + /** + * action 'redux-compiler-{opt_name}' + * + * @deprecated + * + * @param array options + * @param string CSS that get sent to the compiler hook + */ + do_action( "redux-compiler-{$this->args['opt_name']}", $this->options, $this->compilerCSS, $this->transients['changed_values'] ); // REMOVE + + /** + * action 'redux/options/{opt_name}a' + * + * @param array options + * @param string CSS that get sent to the compiler hook + */ + do_action( "redux/options/{$this->args['opt_name']}/compiler", $this->options, $this->compilerCSS, $this->transients['changed_values'] ); + + /** + * action 'redux/options/{opt_name}/compiler/advanced' + * + * @param array options + * @param string CSS that get sent to the compiler hook, which sends the full Redux object + */ + do_action( "redux/options/{$this->args['opt_name']}/compiler/advanced", $this ); + + unset ( $this->transients['run_compiler'] ); + $this->set_transients(); + } + } + // _register_settings() + + /** + * Register Extensions for use + * + * @since 3.0.0 + * @access public + * @return void + */ + private function _register_extensions() { + $path = dirname( __FILE__ ) . '/inc/extensions/'; + $folders = scandir( $path, 1 ); + + /** + * action 'redux/extensions/before' + * + * @param object $this ReduxFramework + */ + do_action( "redux/extensions/before", $this ); + + /** + * action 'redux/extensions/{opt_name}/before' + * + * @param object $this ReduxFramework + */ + do_action( "redux/extensions/{$this->args['opt_name']}/before", $this ); + + if ( isset( $this->old_opt_name ) ) { + do_action( "redux/extensions/{$this->old_opt_name}/before", $this ); + } + + foreach ( $folders as $folder ) { + if ( $folder === '.' || $folder === '..' || ! is_dir( $path . $folder ) || substr( $folder, 0, 1 ) === '.' || substr( $folder, 0, 1 ) === '@' || substr( $folder, 0, 4 ) === '_vti' ) { + continue; + } + + $extension_class = 'ReduxFramework_Extension_' . $folder; + + /** + * filter 'redux-extensionclass-load' + * + * @deprecated + * + * @param string extension class file path + * @param string $extension_class extension class name + */ + $class_file = apply_filters( "redux-extensionclass-load", "$path/$folder/extension_{$folder}.php", $extension_class ); // REMOVE LATER + + /** + * filter 'redux/extension/{opt_name}/{folder}' + * + * @param string extension class file path + * @param string $extension_class extension class name + */ + $class_file = apply_filters( "redux/extension/{$this->args['opt_name']}/$folder", "$path/$folder/extension_{$folder}.php", $class_file ); + + if ( $class_file ) { + + if ( file_exists( $class_file ) ) { + require_once $class_file; + + $this->extensions[ $folder ] = new $extension_class ( $this ); + } + } + } + + /** + * action 'redux-register-extensions-{opt_name}' + * + * @deprecated + * + * @param object $this ReduxFramework + */ + do_action( "redux-register-extensions-{$this->args['opt_name']}", $this ); // REMOVE + + /** + * action 'redux/extensions/{opt_name}' + * + * @param object $this ReduxFramework + */ + do_action( "redux/extensions/{$this->args['opt_name']}", $this ); + + if ( isset( $this->old_opt_name ) && ! empty( $this->old_opt_name ) ) { + do_action( "redux/extensions/{$this->old_opt_name}", $this ); + } + } + + private function get_transients() { + if ( ! isset ( $this->transients ) ) { + $this->transients = get_option( $this->args['opt_name'] . '-transients', array() ); + $this->transients_check = $this->transients; + } + } + + public function set_transients() { + if ( ! isset ( $this->transients ) || ! isset ( $this->transients_check ) || $this->transients != $this->transients_check ) { + update_option( $this->args['opt_name'] . '-transients', $this->transients ); + $this->transients_check = $this->transients; + } + } + + /** + * Validate the Options options before insertion + * + * @since 3.0.0 + * @access public + * + * @param array $plugin_options The options array + * + * @return array|mixed|string|void + */ + public function _validate_options( $plugin_options ) { + //print_r($plugin_options); + // exit(); + if ( isset ( $this->validation_ran ) ) { + return $plugin_options; + } + $this->validation_ran = 1; + + // Save the values not in the panel + if ( isset ( $plugin_options['redux-no_panel'] ) ) { + $keys = explode( '|', $plugin_options['redux-no_panel'] ); + foreach ( $keys as $key ) { + $plugin_options[ $key ] = $this->options[ $key ]; + } + if ( isset ( $plugin_options['redux-no_panel'] ) ) { + unset ( $plugin_options['redux-no_panel'] ); + } + } + + if ( ! empty ( $this->hidden_perm_fields ) && is_array( $this->hidden_perm_fields ) ) { + foreach ( $this->hidden_perm_fields as $id => $data ) { + $plugin_options[ $id ] = $data; + } + } + + if ( $plugin_options == $this->options ) { + return $plugin_options; + } + + $time = time(); + + // Sets last saved time + $this->transients['last_save'] = $time; + + // Import + if ( ( isset( $plugin_options['import_code'] ) && ! empty( $plugin_options['import_code'] ) ) || ( isset( $plugin_options['import_link'] ) && ! empty( $plugin_options['import_link'] ) ) ) { + $this->transients['last_save_mode'] = "import"; // Last save mode + $this->transients['last_compiler'] = $time; + $this->transients['last_import'] = $time; + $this->transients['run_compiler'] = 1; + + if ( $plugin_options['import_code'] != '' ) { + $import = $plugin_options['import_code']; + } elseif ( $plugin_options['import_link'] != '' ) { + $import = wp_remote_retrieve_body( wp_remote_get( $plugin_options['import_link'] ) ); + } + + if ( ! empty ( $import ) ) { + $imported_options = json_decode( $import, true ); + } + + if ( ! empty ( $imported_options ) && is_array( $imported_options ) && isset ( $imported_options['redux-backup'] ) && $imported_options['redux-backup'] == '1' ) { + + $this->transients['changed_values'] = array(); + foreach ( $plugin_options as $key => $value ) { + if ( isset ( $imported_options[ $key ] ) && $imported_options[ $key ] != $value ) { + $this->transients['changed_values'][ $key ] = $value; + $plugin_options[ $key ] = $value; + } + } + + /** + * action 'redux/options/{opt_name}/import' + * + * @param &array [&$plugin_options, redux_options] + */ + do_action_ref_array( "redux/options/{$this->args['opt_name']}/import", array( + &$plugin_options, + $imported_options, + $this->transients['changed_values'] + ) ); + + setcookie( 'redux_current_tab', '', 1, '/', $time + 1000, "/" ); + $_COOKIE['redux_current_tab'] = 1; + + unset ( $plugin_options['defaults'], $plugin_options['compiler'], $plugin_options['import'], $plugin_options['import_code'] ); + if ( $this->args['database'] == 'transient' || $this->args['database'] == 'theme_mods' || $this->args['database'] == 'theme_mods_expanded' || $this->args['database'] == 'network' ) { + $this->set_options( $plugin_options ); + + return; + } + + $plugin_options = wp_parse_args( $imported_options, $plugin_options ); + + $this->set_transients(); // Update the transients + + return $plugin_options; + } + } + + // Reset all to defaults + if ( ! empty ( $plugin_options['defaults'] ) ) { + if ( empty ( $this->options_defaults ) ) { + $this->options_defaults = $this->_default_values(); + } + + /** + * apply_filters 'redux/validate/{opt_name}/defaults' + * + * @param &array [ $this->options_defaults, $plugin_options] + */ + $plugin_options = apply_filters( "redux/validate/{$this->args['opt_name']}/defaults", $this->options_defaults ); + + $this->transients['changed_values'] = array(); + + if ( empty ( $this->options ) ) { + $this->options = $this->options_defaults; + } + + foreach ( $this->options as $key => $value ) { + if ( isset ( $plugin_options[ $key ] ) && $value != $plugin_options[ $key ] ) { + $this->transients['changed_values'][ $key ] = $value; + } + } + + $this->transients['run_compiler'] = 1; + $this->transients['last_save_mode'] = "defaults"; // Last save mode + //setcookie('redux-compiler-' . $this->args['opt_name'], 1, time() + 1000, "/"); + //setcookie("redux-saved-{$this->args['opt_name']}", 'defaults', time() + 1000, "/"); + + $this->set_transients(); // Update the transients + + return $plugin_options; + } + + // Section reset to defaults + if ( ! empty ( $plugin_options['defaults-section'] ) ) { + if ( isset ( $plugin_options['redux-section'] ) && isset ( $this->sections[ $plugin_options['redux-section'] ]['fields'] ) ) { + /** + * apply_filters 'redux/validate/{opt_name}/defaults_section' + * + * @param &array [ $this->options_defaults, $plugin_options] + */ + foreach ( $this->sections[ $plugin_options['redux-section'] ]['fields'] as $field ) { + if ( isset ( $this->options_defaults[ $field['id'] ] ) ) { + $plugin_options[ $field['id'] ] = $this->options_defaults[ $field['id'] ]; + } else { + $plugin_options[ $field['id'] ] = ""; + } + + if ( isset ( $field['compiler'] ) ) { + $compiler = true; + } + } + + $plugin_options = apply_filters( "redux/validate/{$this->args['opt_name']}/defaults_section", $plugin_options ); + } + + $this->transients['changed_values'] = array(); + foreach ( $this->options as $key => $value ) { + if ( isset ( $plugin_options[ $key ] ) && $value != $plugin_options[ $key ] ) { + $this->transients['changed_values'][ $key ] = $value; + } + } + + if ( isset ( $compiler ) ) { + //$this->run_compiler = true; + //setcookie('redux-compiler-' . $this->args['opt_name'], 1, time()+1000, '/'); + //$plugin_options['REDUX_COMPILER'] = time(); + $this->transients['last_compiler'] = $time; + $this->transients['run_compiler'] = 1; + } + + $this->transients['last_save_mode'] = "defaults_section"; // Last save mode + //setcookie("redux-saved-{$this->args['opt_name']}", 'defaults_section', time() + 1000, "/"); + unset ( $plugin_options['defaults'], $plugin_options['defaults_section'], $plugin_options['import'], $plugin_options['import_code'], $plugin_options['import_link'], $plugin_options['compiler'], $plugin_options['redux-section'] ); + + $this->set_transients(); + + return $plugin_options; + } + + // if ($this->transients['last_save_mode'] != 'remove') { + $this->transients['last_save_mode'] = "normal"; // Last save mode + // } else { + // $this->transients['last_save_mode'] = ''; + // } + + /** + * apply_filters 'redux/validate/{opt_name}/before_validation' + * + * @param &array [&$plugin_options, redux_options] + */ + $plugin_options = apply_filters( "redux/validate/{$this->args['opt_name']}/before_validation", $plugin_options, $this->options ); + + // Validate fields (if needed) + $plugin_options = $this->_validate_values( $plugin_options, $this->options, $this->sections ); + + if ( ! empty ( $this->errors ) || ! empty ( $this->warnings ) ) { + $this->transients['notices'] = array( 'errors' => $this->errors, 'warnings' => $this->warnings ); + } + + /** + * action 'redux-validate-{opt_name}' + * + * @deprecated + * + * @param &array [&$plugin_options, redux_options] + */ + do_action_ref_array( "redux-validate-{$this->args['opt_name']}", array( + &$plugin_options, + $this->options + ) ); // REMOVE + + if ( ! isset ( $this->transients['changed_values'] ) ) { + $this->transients['changed_values'] = array(); + } + + /** + * action 'redux/options/{opt_name}/validate' + * + * @param &array [&$plugin_options, redux_options] + */ + do_action_ref_array( "redux/options/{$this->args['opt_name']}/validate", array( + &$plugin_options, + $this->options, + $this->transients['changed_values'] + ) ); + + if ( ! empty ( $plugin_options['compiler'] ) ) { + unset ( $plugin_options['compiler'] ); + + $this->transients['last_compiler'] = $time; + $this->transients['run_compiler'] = 1; + } + + $this->transients['changed_values'] = array(); // Changed values since last save + if ( !empty( $this->options ) ) { + foreach ( $this->options as $key => $value ) { + if ( isset ( $plugin_options[ $key ] ) && $value != $plugin_options[ $key ] ) { + $this->transients['changed_values'][ $key ] = $value; + } + } + } + + unset ( $plugin_options['defaults'], $plugin_options['defaults_section'], $plugin_options['import'], $plugin_options['import_code'], $plugin_options['import_link'], $plugin_options['compiler'], $plugin_options['redux-section'] ); + if ( $this->args['database'] == 'transient' || $this->args['database'] == 'theme_mods' || $this->args['database'] == 'theme_mods_expanded' ) { + $this->set_options( $plugin_options ); + + return; + } + + if ( defined( 'WP_CACHE' ) && WP_CACHE && class_exists( 'W3_ObjectCache' ) && function_exists( 'w3_instance' ) ) { + //echo "here"; + $w3_inst = w3_instance( 'W3_ObjectCache' ); + $w3 = $w3_inst->instance(); + $key = $w3->_get_cache_key( $this->args['opt_name'] . '-transients', 'transient' ); + //echo $key; + $w3->delete( $key, 'transient', true ); + //set_transient($this->args['opt_name'].'-transients', $this->transients); + //exit(); + } + + $this->set_transients(); + + return $plugin_options; + } + + public function ajax_save() { + if ( ! wp_verify_nonce( $_REQUEST['nonce'], "redux_ajax_nonce" . $this->args['opt_name'] ) ) { + echo json_encode( array( + 'status' => __( 'Invalid security credential. Please reload the page and try again.', 'redux-framework' ), + 'action' => '' + ) ); + + die(); + } + + if ( ! self::current_user_can( $this->args['page_permissions'] ) ) { + echo json_encode( array( + 'status' => __( 'Invalid user capability. Please reload the page and try again.', 'redux-framework' ), + 'action' => '' + ) ); + + die(); + } + + $redux = ReduxFrameworkInstances::get_instance( $_POST['opt_name'] ); + + if ( ! empty ( $_POST['data'] ) && ! empty ( $redux->args['opt_name'] ) ) { + + $values = array(); + //if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) { + // $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST); + // while (list($key, $val) = each($process)) { + // foreach ($val as $k => $v) { + // unset($process[$key][$k]); + // if (is_array($v)) { + // $process[$key][stripslashes($k)] = $v; + // $process[] = &$process[$key][stripslashes($k)]; + // } else { + // $process[$key][stripslashes($k)] = stripslashes($v); + // } + // } + // } + // unset($process); + //} + $_POST['data'] = stripslashes( $_POST['data'] ); + + // Old method of saving, in case we need to go back! - kp + //parse_str( $_POST['data'], $values ); + + // New method to avoid input_var nonesense. Thanks @harunbasic + $values = $this->redux_parse_str( $_POST['data'] ); + + $values = $values[ $redux->args['opt_name'] ]; + + if ( function_exists( 'get_magic_quotes_gpc' ) && get_magic_quotes_gpc() ) { + $values = array_map( 'stripslashes_deep', $values ); + } + + if ( ! empty ( $values ) ) { + + try { + if ( isset ( $redux->validation_ran ) ) { + unset ( $redux->validation_ran ); + } + $redux->set_options( $redux->_validate_options( $values ) ); + + $do_reload = false; + if ( isset( $this->reload_fields ) && ! empty( $this->reload_fields ) ) { + if ( ! empty( $this->transients['changed_values'] ) ) { + foreach ( $this->reload_fields as $idx => $val ) { + if ( array_key_exists( $val, $this->transients['changed_values'] ) ) { + $do_reload = true; + } + } + } + } + + if ( $do_reload || ( isset ( $values['defaults'] ) && ! empty ( $values['defaults'] ) ) || ( isset ( $values['defaults-section'] ) && ! empty ( $values['defaults-section'] ) ) || ( isset ( $values['import_code'] ) && ! empty ($values['import_code']) ) || ( isset ( $values['import_link'] ) && ! empty ($values['import_link']) ) ) { + echo json_encode( array( 'status' => 'success', 'action' => 'reload' ) ); + die (); + } + + require_once 'core/enqueue.php'; + $enqueue = new reduxCoreEnqueue ( $redux ); + $enqueue->get_warnings_and_errors_array(); + + $return_array = array( + 'status' => 'success', + 'options' => $redux->options, + 'errors' => isset ( $redux->localize_data['errors'] ) ? $redux->localize_data['errors'] : null, + 'warnings' => isset ( $redux->localize_data['warnings'] ) ? $redux->localize_data['warnings'] : null, + ); + + } catch ( Exception $e ) { + $return_array = array( 'status' => $e->getMessage() ); + } + } else { + echo json_encode( array( 'status' => __( 'Your panel has no fields. Nothing to save.', 'redux-framework' ) ) ); + } + } + if ( isset ( $this->transients['run_compiler'] ) && $this->transients['run_compiler'] ) { + + $this->no_output = true; + $this->_enqueue_output(); + + try { + /** + * action 'redux-compiler-{opt_name}' + * + * @deprecated + * + * @param array options + * @param string CSS that get sent to the compiler hook + */ + do_action( "redux-compiler-{$this->args['opt_name']}", $this->options, $this->compilerCSS, $this->transients['changed_values'] ); // REMOVE + + /** + * action 'redux/options/{opt_name}/compiler' + * + * @param array options + * @param string CSS that get sent to the compiler hook + */ + do_action( "redux/options/{$this->args['opt_name']}/compiler", $this->options, $this->compilerCSS, $this->transients['changed_values'] ); + + /** + * action 'redux/options/{opt_name}/compiler/advanced' + * + * @param array options + * @param string CSS that get sent to the compiler hook, which sends the full Redux object + */ + do_action( "redux/options/{$this->args['opt_name']}/compiler/advanced", $this ); + } catch ( Exception $e ) { + $return_array = array( 'status' => $e->getMessage() ); + } + + unset ( $this->transients['run_compiler'] ); + $this->set_transients(); + } + if ( isset( $return_array ) ) { + if ( $return_array['status'] == "success" ) { + require_once 'core/panel.php'; + $panel = new reduxCorePanel ( $redux ); + ob_start(); + $panel->notification_bar(); + $notification_bar = ob_get_contents(); + ob_end_clean(); + $return_array['notification_bar'] = $notification_bar; + } + + echo json_encode( apply_filters( "redux/options/{$this->args['opt_name']}/ajax_save/response", $return_array ) ); + } + + die (); + + } + + /** + * Validate values from options form (used in settings api validate function) + * calls the custom validation class for the field so authors can override with custom classes + * + * @since 1.0.0 + * @access public + * + * @param array $plugin_options + * @param array $options + * + * @return array $plugin_options + */ + public function _validate_values( $plugin_options, $options, $sections ) { + foreach ( $sections as $k => $section ) { + if ( isset ( $section['fields'] ) ) { + foreach ( $section['fields'] as $fkey => $field ) { + + if ( is_array( $field ) ) { + $field['section_id'] = $k; + } + + if ( isset ( $field['type'] ) && ( $field['type'] == 'checkbox' || $field['type'] == 'checkbox_hide_below' || $field['type'] == 'checkbox_hide_all' ) ) { + if ( ! isset ( $plugin_options[ $field['id'] ] ) ) { + $plugin_options[ $field['id'] ] = 0; + } + } + +// if ( isset ( $field['type'] ) && $field['type'] == 'typography' ) { +// if ( ! is_array( $plugin_options[ $field['id'] ] ) && ! empty( $plugin_options[ $field['id'] ] ) ) { +// $plugin_options[ $field['id'] ] = json_decode( $plugin_options[ $field['id'] ], true ); +// } +// } + + if ( isset( $this->extensions[ $field['type'] ] ) && method_exists( $this->extensions[ $field['type'] ], '_validate_values' ) ) { + $plugin_options = $this->extensions[ $field['type'] ]->_validate_values( $plugin_options, $field, $sections ); + + } + + // Default 'not_empty 'flag to false. + $isNotEmpty = false; + + // Make sure 'validate' field is set. + if ( isset ( $field['validate'] ) ) { + + // Make sure 'validate field' is set to 'not_empty' or 'email_not_empty' + //if ( $field['validate'] == 'not_empty' || $field['validate'] == 'email_not_empty' || $field['validate'] == 'numeric_not_empty' ) { + if ( strtolower( substr( $field['validate'], - 9 ) ) == 'not_empty' ) { + + // Set the flag. + $isNotEmpty = true; + } + } + + // Check for empty id value + + if ( ! isset ( $field['id'] ) || ! isset ( $plugin_options[ $field['id'] ] ) || ( isset ( $plugin_options[ $field['id'] ] ) && $plugin_options[ $field['id'] ] == '' ) ) { + + // If we are looking for an empty value, in the case of 'not_empty' + // then we need to keep processing. + if ( ! $isNotEmpty ) { + + // Empty id and not checking for 'not_empty. Bail out... + if (!isset($field['validate_callback'])) { + continue; + } + //continue; + } + } + + // Force validate of custom field types + if ( isset ( $field['type'] ) && ! isset ( $field['validate'] ) && ! isset( $field['validate_callback'] ) ) { + if ( $field['type'] == 'color' || $field['type'] == 'color_gradient' ) { + $field['validate'] = 'color'; + } elseif ( $field['type'] == 'date' ) { + $field['validate'] = 'date'; + } + } + + if ( isset ( $field['validate'] ) ) { + $validate = 'Redux_Validation_' . $field['validate']; + + if ( ! class_exists( $validate ) ) { + /** + * filter 'redux-validateclass-load' + * + * @deprecated + * + * @param string validation class file path + * @param string $validate validation class name + */ + $class_file = apply_filters( "redux-validateclass-load", self::$_dir . "inc/validation/{$field['validate']}/validation_{$field['validate']}.php", $validate ); // REMOVE LATER + + /** + * filter 'redux/validate/{opt_name}/class/{field.validate}' + * + * @param string validation class file path + * @param string $class_file validation class file path + */ + $class_file = apply_filters( "redux/validate/{$this->args['opt_name']}/class/{$field['validate']}", self::$_dir . "inc/validation/{$field['validate']}/validation_{$field['validate']}.php", $class_file ); + + if ( $class_file ) { + if ( file_exists( $class_file ) ) { + require_once $class_file; + } + } + } + + if ( class_exists( $validate ) ) { + + //!DOVY - DB saving stuff. Is this right? + if ( empty ( $options[ $field['id'] ] ) ) { + $options[ $field['id'] ] = ''; + } + + if ( isset ( $plugin_options[ $field['id'] ] ) && is_array( $plugin_options[ $field['id'] ] ) && ! empty ( $plugin_options[ $field['id'] ] ) ) { + foreach ( $plugin_options[ $field['id'] ] as $key => $value ) { + $before = $after = null; + if ( isset ( $plugin_options[ $field['id'] ][ $key ] ) && ( ! empty ( $plugin_options[ $field['id'] ][ $key ] ) || $plugin_options[ $field['id'] ][ $key ] == '0' ) ) { + if ( is_array( $plugin_options[ $field['id'] ][ $key ] ) ) { + $before = $plugin_options[ $field['id'] ][ $key ]; + } else { + $before = trim( $plugin_options[ $field['id'] ][ $key ] ); + } + } + + if ( isset ( $options[ $field['id'] ][ $key ] ) && ( ! empty ( $plugin_options[ $field['id'] ][ $key ] ) || $plugin_options[ $field['id'] ][ $key ] == '0' ) ) { + $after = $options[ $field['id'] ][ $key ]; + } + + $validation = new $validate ( $this, $field, $before, $after ); + if ( ! empty ( $validation->value ) || $validation->value == '0' ) { + $plugin_options[ $field['id'] ][ $key ] = $validation->value; + } else { + unset ( $plugin_options[ $field['id'] ][ $key ] ); + } + + if ( isset ( $validation->error ) ) { + $this->errors[] = $validation->error; + } + + if ( isset ( $validation->warning ) ) { + $this->warnings[] = $validation->warning; + } + } + } else { + if ( isset( $plugin_options[ $field['id'] ] ) ) { + if ( is_array( $plugin_options[ $field['id'] ] ) ) { + $pofi = $plugin_options[ $field['id'] ]; + } else { + $pofi = trim( $plugin_options[ $field['id'] ] ); + } + } else { + $pofi = null; + } + + $validation = new $validate ( $this, $field, $pofi, $options[ $field['id'] ] ); + $plugin_options[ $field['id'] ] = $validation->value; + + if ( isset ( $validation->error ) ) { + $this->errors[] = $validation->error; + } + + if ( isset ( $validation->warning ) ) { + $this->warnings[] = $validation->warning; + } + } + + continue; + } + } + if ( isset ( $field['validate_callback'] ) && ( is_callable( $field['validate_callback'] ) || ( is_string( $field['validate_callback'] ) && function_exists( $field['validate_callback'] ) ) ) ) { + $callback = $field['validate_callback']; + unset ( $field['validate_callback'] ); + + $plugin_option = isset( $plugin_options[ $field['id'] ] ) ? $plugin_options[ $field['id'] ] : null; + $option = isset( $options[ $field['id'] ] ) ? $options[ $field['id'] ] : null; + $callbackvalues = call_user_func( $callback, $field, $plugin_option, $option ); + $plugin_options[ $field['id'] ] = $callbackvalues['value']; + + if ( isset ( $callbackvalues['error'] ) ) { + $this->errors[] = $callbackvalues['error']; + } + // TODO - This warning message is failing. Hmm. + // No it isn't. Problem was in the sample-config - kp + if ( isset ( $callbackvalues['warning'] ) ) { + $this->warnings[] = $callbackvalues['warning']; + } + } + } + } + } + + return $plugin_options; + } + + /** + * Return Section Menu HTML + * + * @since 3.1.5 + * @access public + * @return void + */ + public function section_menu( $k, $section, $suffix = "", $sections = array() ) { + $display = true; + + $section['class'] = isset ( $section['class'] ) ? ' ' . $section['class'] : ''; + + if ( isset ( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) { + if ( isset ( $section['panel'] ) && $section['panel'] == false ) { + $display = false; + } + } + + if ( ! $display ) { + return ""; + } + + if ( empty ( $sections ) ) { + $sections = $this->sections; + } + + $string = ""; + if ( ( ( isset ( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) || ( isset ( $section['icon_type'] ) && $section['icon_type'] == 'image' ) ) || ( isset( $section['icon'] ) && strpos( $section['icon'], '/' ) !== false ) ) { + //if( !empty( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) { + $icon = ( ! isset ( $section['icon'] ) ) ? '' : ' '; + } else { + if ( ! empty ( $section['icon_class'] ) ) { + $icon_class = ' ' . $section['icon_class']; + } elseif ( ! empty ( $this->args['default_icon_class'] ) ) { + $icon_class = ' ' . $this->args['default_icon_class']; + } else { + $icon_class = ''; + } + $icon = ( ! isset ( $section['icon'] ) ) ? ' ' : ' '; + } + if ( strpos( $icon, 'el-icon-' ) !== false ) { + $icon = str_replace( 'el-icon-', 'el el-', $icon ); + } + + $hide_section = ''; + if ( isset ( $section['hidden'] ) ) { + $hide_section = ( $section['hidden'] == true ) ? ' hidden ' : ''; + } + + $canBeSubSection = ( $k > 0 && ( ! isset ( $sections[ ( $k ) ]['type'] ) || $sections[ ( $k ) ]['type'] != "divide" ) ) ? true : false; + + if ( ! $canBeSubSection && isset ( $section['subsection'] ) && $section['subsection'] == true ) { + unset ( $section['subsection'] ); + } + + if ( isset ( $section['type'] ) && $section['type'] == "divide" ) { + $string .= '
  •  
  • '; + } else if ( ! isset ( $section['subsection'] ) || $section['subsection'] != true ) { + + // DOVY! REPLACE $k with $section['ID'] when used properly. + //$active = ( ( is_numeric($this->current_tab) && $this->current_tab == $k ) || ( !is_numeric($this->current_tab) && $this->current_tab === $k ) ) ? ' active' : ''; + $subsections = ( isset ( $sections[ ( $k + 1 ) ] ) && isset ( $sections[ ( $k + 1 ) ]['subsection'] ) && $sections[ ( $k + 1 ) ]['subsection'] == true ) ? true : false; + $subsectionsClass = $subsections ? ' hasSubSections' : ''; + $subsectionsClass .= ( ! isset ( $section['fields'] ) || empty ( $section['fields'] ) ) ? ' empty_section' : ''; + $extra_icon = $subsections ? ' ' : ''; + //var_dump($section); + $string .= ''; + } + + return $string; + } + // section_menu() + + /** + * HTML OUTPUT. + * + * @since 1.0.0 + * @access public + * @return void + */ + public function generate_panel() { + require_once 'core/panel.php'; + $panel = new reduxCorePanel ( $this ); + $panel->init(); + $this->set_transients(); + } + + /** + * Section HTML OUTPUT. + * + * @since 1.0.0 + * @access public + * + * @param array $section + * + * @return void + */ + public function _section_desc( $section ) { + $id = rtrim( $section['id'], '_section' ); + $id = str_replace($this->args['opt_name'], '', $id); + + if ( isset ( $this->sections[ $id ]['desc'] ) && ! empty ( $this->sections[ $id ]['desc'] ) ) { + echo '
    ' . $this->sections[ $id ]['desc'] . '
    '; + } + } + + /** + * Field HTML OUTPUT. + * Gets option from options array, then calls the specific field type class - allows extending by other devs + * + * @since 1.0.0 + * + * @param array $field + * @param string $v + * + * @return void + */ + public function _field_input( $field, $v = null ) { + + if ( isset ( $field['callback'] ) && ( is_callable( $field['callback'] ) || ( is_string( $field['callback'] ) && function_exists( $field['callback'] ) ) ) ) { + + $value = ( isset ( $this->options[ $field['id'] ] ) ) ? $this->options[ $field['id'] ] : ''; + + /** + * action 'redux-before-field-{opt_name}' + * + * @deprecated + * + * @param array $field field data + * @param string $value field.id + */ + do_action( "redux-before-field-{$this->args['opt_name']}", $field, $value ); // REMOVE + + /** + * action 'redux/field/{opt_name}/{field.type}/callback/before' + * + * @param array $field field data + * @param string $value field.id + */ + do_action_ref_array( "redux/field/{$this->args['opt_name']}/{$field['type']}/callback/before", array( + &$field, + &$value + ) ); + + /** + * action 'redux/field/{opt_name}/callback/before' + * + * @param array $field field data + * @param string $value field.id + */ + do_action_ref_array( "redux/field/{$this->args['opt_name']}/callback/before", array( + &$field, + &$value + ) ); + + call_user_func( $field['callback'], $field, $value ); + + + /** + * action 'redux-after-field-{opt_name}' + * + * @deprecated + * + * @param array $field field data + * @param string $value field.id + */ + do_action( "redux-after-field-{$this->args['opt_name']}", $field, $value ); // REMOVE + + /** + * action 'redux/field/{opt_name}/{field.type}/callback/after' + * + * @param array $field field data + * @param string $value field.id + */ + do_action_ref_array( "redux/field/{$this->args['opt_name']}/{$field['type']}/callback/after", array( + &$field, + &$value + ) ); + + /** + * action 'redux/field/{opt_name}/callback/after' + * + * @param array $field field data + * @param string $value field.id + */ + do_action_ref_array( "redux/field/{$this->args['opt_name']}/callback/after", array( + &$field, + &$value + ) ); + + + return; + } + + if ( isset ( $field['type'] ) ) { + + // If the field is set not to display in the panel + $display = true; + if ( isset ( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) { + if ( isset ( $field['panel'] ) && $field['panel'] == false ) { + $display = false; + } + } + + if ( ! $display ) { + return; + } + + $field_class = "ReduxFramework_{$field['type']}"; + + if ( ! class_exists( $field_class ) ) { + // $class_file = apply_filters( 'redux/field/class/'.$field['type'], self::$_dir . 'inc/fields/' . $field['type'] . '/field_' . $field['type'] . '.php', $field ); // REMOVE + /** + * filter 'redux/{opt_name}/field/class/{field.type}' + * + * @param string field class file path + * @param array $field field data + */ + $class_file = apply_filters( "redux/{$this->args['opt_name']}/field/class/{$field['type']}", self::$_dir . "inc/fields/{$field['type']}/field_{$field['type']}.php", $field ); + + if ( $class_file ) { + if ( file_exists( $class_file ) ) { + require_once $class_file; + } + } + } + + if ( class_exists( $field_class ) ) { + $value = isset ( $this->options[ $field['id'] ] ) ? $this->options[ $field['id'] ] : ''; + + if ( $v != null ) { + $value = $v; + } + + /** + * action 'redux-before-field-{opt_name}' + * + * @deprecated + * + * @param array $field field data + * @param string $value field id + */ + do_action( "redux-before-field-{$this->args['opt_name']}", $field, $value ); // REMOVE + + /** + * action 'redux/field/{opt_name}/{field.type}/render/before' + * + * @param array $field field data + * @param string $value field id + */ + do_action_ref_array( "redux/field/{$this->args['opt_name']}/{$field['type']}/render/before", array( + &$field, + &$value + ) ); + + /** + * action 'redux/field/{$this->args['opt_name']}/render/before' + * + * @param array $field field data + * @param string $value field id + */ + do_action_ref_array( "redux/field/{$this->args['opt_name']}/render/before", array( + &$field, + &$value + ) ); + + if ( ! isset ( $field['name_suffix'] ) ) { + $field['name_suffix'] = ""; + } + + $render = new $field_class ( $field, $value, $this ); + ob_start(); + + $render->render(); + + /* + + echo "
    ";
    +                      print_r($value);
    +                      echo "
    "; + */ + + /** + * filter 'redux-field-{opt_name}' + * + * @deprecated + * + * @param string rendered field markup + * @param array $field field data + */ + $_render = apply_filters( "redux-field-{$this->args['opt_name']}", ob_get_contents(), $field ); // REMOVE + + /** + * filter 'redux/field/{opt_name}/{field.type}/render/after' + * + * @param string rendered field markup + * @param array $field field data + */ + $_render = apply_filters( "redux/field/{$this->args['opt_name']}/{$field['type']}/render/after", $_render, $field ); + + /** + * filter 'redux/field/{opt_name}/render/after' + * + * @param string rendered field markup + * @param array $field field data + */ + $_render = apply_filters( "redux/field/{$this->args['opt_name']}/render/after", $_render, $field ); + + ob_end_clean(); + + //save the values into a unique array in case we need it for dependencies + $this->fieldsValues[ $field['id'] ] = ( isset ( $value['url'] ) && is_array( $value ) ) ? $value['url'] : $value; + + //create default data und class string and checks the dependencies of an object + $class_string = ''; + $data_string = ''; + + $this->check_dependencies( $field ); + + /** + * action 'redux/field/{opt_name}/{field.type}/fieldset/before/{opt_name}' + * + * @param array $field field data + * @param string $value field id + */ + do_action_ref_array( "redux/field/{$this->args['opt_name']}/{$field['type']}/fieldset/before/{$this->args['opt_name']}", array( + &$field, + &$value + ) ); + + /** + * action 'redux/field/{opt_name}/fieldset/before/{opt_name}' + * + * @param array $field field data + * @param string $value field id + */ + do_action_ref_array( "redux/field/{$this->args['opt_name']}/fieldset/before/{$this->args['opt_name']}", array( + &$field, + &$value + ) ); + + //if ( ! isset( $field['fields'] ) || empty( $field['fields'] ) ) { + $hidden = ''; + if ( isset ( $field['hidden'] ) && $field['hidden'] ) { + $hidden = 'hidden '; + } + + if ( isset( $field['full_width'] ) && $field['full_width'] == true ) { + $class_string .= "redux_remove_th"; + } + + if ( isset ( $field['fieldset_class'] ) && ! empty( $field['fieldset_class'] ) ) { + $class_string .= ' ' . $field['fieldset_class']; + } + + echo '
    '; + //} + + echo $_render; + + if ( ! empty ( $field['desc'] ) ) { + $field['description'] = $field['desc']; + } + + echo ( isset ( $field['description'] ) && $field['type'] != "info" && $field['type'] !== "section" && ! empty ( $field['description'] ) ) ? '
    ' . $field['description'] . '
    ' : ''; + + //if ( ! isset( $field['fields'] ) || empty( $field['fields'] ) ) { + echo '
    '; + //} + + /** + * action 'redux-after-field-{opt_name}' + * + * @deprecated + * + * @param array $field field data + * @param string $value field id + */ + do_action( "redux-after-field-{$this->args['opt_name']}", $field, $value ); // REMOVE + + /** + * action 'redux/field/{opt_name}/{field.type}/fieldset/after/{opt_name}' + * + * @param array $field field data + * @param string $value field id + */ + do_action_ref_array( "redux/field/{$this->args['opt_name']}/{$field['type']}/fieldset/after/{$this->args['opt_name']}", array( + &$field, + &$value + ) ); + + /** + * action 'redux/field/{opt_name}/fieldset/after/{opt_name}' + * + * @param array $field field data + * @param string $value field id + */ + do_action_ref_array( "redux/field/{$this->args['opt_name']}/fieldset/after/{$this->args['opt_name']}", array( + &$field, + &$value + ) ); + } + } + } + // _field_input() + + /** + * Can Output CSS + * Check if a field meets its requirements before outputting to CSS + * + * @param $field + * + * @return bool + */ + public function _can_output_css( $field ) { + $return = true; + + $field = apply_filters( "redux/field/{$this->args['opt_name']}/_can_output_css", $field ); + if ( isset ( $field['force_output'] ) && $field['force_output'] == true ) { + return $return; + } + + if ( ! empty ( $field['required'] ) ) { + if ( isset ( $field['required'][0] ) ) { + if ( ! is_array( $field['required'][0] ) && count( $field['required'] ) == 3 ) { + $parentValue = isset($GLOBALS[ $this->args['global_variable'] ][ $field['required'][0] ]) ? $GLOBALS[ $this->args['global_variable'] ][ $field['required'][0] ] : ''; + $checkValue = $field['required'][2]; + $operation = $field['required'][1]; + $return = $this->compareValueDependencies( $parentValue, $checkValue, $operation ); + } else if ( is_array( $field['required'][0] ) ) { + foreach ( $field['required'] as $required ) { + if ( ! is_array( $required[0] ) && count( $required ) == 3 ) { + $parentValue = $GLOBALS[ $this->args['global_variable'] ][ $required[0] ]; + $checkValue = $required[2]; + $operation = $required[1]; + $return = $this->compareValueDependencies( $parentValue, $checkValue, $operation ); + } + if ( ! $return ) { + return $return; + } + } + } + } + } + + return $return; + } + // _can_output_css + + /** + * Checks dependencies between objects based on the $field['required'] array + * If the array is set it needs to have exactly 3 entries. + * The first entry describes which field should be monitored by the current field. eg: "content" + * The second entry describes the comparison parameter. eg: "equals, not, is_larger, is_smaller ,contains" + * The third entry describes the value that we are comparing against. + * Example: if the required array is set to array('content','equals','Hello World'); then the current + * field will only be displayed if the field with id "content" has exactly the value "Hello World" + * + * @param array $field + * + * @return array $params + */ + public function check_dependencies( $field ) { + //$params = array('data_string' => "", 'class_string' => ""); + if ( isset( $field['ajax_save'] ) && $field['ajax_save'] == false ) { + $this->reload_fields[] = $field['id']; + } + + if ( ! empty ( $field['required'] ) ) { + if ( ! isset ( $this->required_child[ $field['id'] ] ) ) { + $this->required_child[ $field['id'] ] = array(); + } + + if ( ! isset ( $this->required[ $field['id'] ] ) ) { + $this->required[ $field['id'] ] = array(); + } + + if ( is_array( $field['required'][0] ) ) { + + foreach ( $field['required'] as $value ) { + if ( is_array( $value ) && count( $value ) == 3 ) { + $data = array(); + $data['parent'] = $value[0]; + $data['operation'] = $value[1]; + $data['checkValue'] = $value[2]; + + $this->required[ $data['parent'] ][ $field['id'] ][] = $data; + + if ( ! in_array( $data['parent'], $this->required_child[ $field['id'] ] ) ) { + $this->required_child[ $field['id'] ][] = $data; + } + + $this->checkRequiredDependencies( $field, $data ); + } + } + } else { + $data = array(); + $data['parent'] = $field['required'][0]; + $data['operation'] = $field['required'][1]; + $data['checkValue'] = $field['required'][2]; + + $this->required[ $data['parent'] ][ $field['id'] ][] = $data; + + if ( ! in_array( $data['parent'], $this->required_child[ $field['id'] ] ) ) { + $this->required_child[ $field['id'] ][] = $data; + } + + $this->checkRequiredDependencies( $field, $data ); + } + } + //return $params; + } + + // Compare data for required field + private function compareValueDependencies( $parentValue, $checkValue, $operation ) { + $return = false; + switch ( $operation ) { + case '=': + case 'equals': + $data['operation'] = "="; + + if ( is_array( $parentValue ) ) { + foreach ( $parentValue as $idx => $val ) { + if ( is_array( $checkValue ) ) { + foreach ( $checkValue as $i => $v ) { + if ( Redux_Helpers::makeBoolStr($val) === Redux_Helpers::makeBoolStr($v) ) { + $return = true; + } + } + } else { + if ( Redux_Helpers::makeBoolStr($val) === Redux_Helpers::makeBoolStr($checkValue) ) { + $return = true; + } + } + } + } else { + //var_dump($checkValue); + if ( is_array( $checkValue ) ) { + foreach ( $checkValue as $i => $v ) { + if ( Redux_Helpers::makeBoolStr($parentValue) === Redux_Helpers::makeBoolStr($v) ) { + $return = true; + } + } + } else { + if ( Redux_Helpers::makeBoolStr($parentValue) === Redux_Helpers::makeBoolStr($checkValue) ) { + $return = true; + } + } + } + break; + + case '!=': + case 'not': + $data['operation'] = "!=="; + if ( is_array( $parentValue ) ) { + foreach ( $parentValue as $idx => $val ) { + if ( is_array( $checkValue ) ) { + foreach ( $checkValue as $i => $v ) { + if ( Redux_Helpers::makeBoolStr($val) !== Redux_Helpers::makeBoolStr($v) ) { + $return = true; + } + } + } else { + if ( Redux_Helpers::makeBoolStr($val) !== Redux_Helpers::makeBoolStr($checkValue) ) { + $return = true; + } + } + } + } else { + if ( is_array( $checkValue ) ) { + foreach ( $checkValue as $i => $v ) { + if ( Redux_Helpers::makeBoolStr($parentValue) !== Redux_Helpers::makeBoolStr($v) ) { + $return = true; + } + } + } else { + if ( Redux_Helpers::makeBoolStr($parentValue) !== Redux_Helpers::makeBoolStr($checkValue) ) { + $return = true; + } + } + } + + // if ( is_array( $checkValue ) ) { + // if ( ! in_array( $parentValue, $checkValue ) ) { + // $return = true; + // } + // } else { + // if ( $parentValue != $checkValue ) { + // $return = true; + // } else if ( is_array( $parentValue ) ) { + // if ( ! in_array( $checkValue, $parentValue ) ) { + // $return = true; + // } + // } + // } + break; + case '>': + case 'greater': + case 'is_larger': + $data['operation'] = ">"; + if ( $parentValue > $checkValue ) { + $return = true; + } + break; + case '>=': + case 'greater_equal': + case 'is_larger_equal': + $data['operation'] = ">="; + if ( $parentValue >= $checkValue ) { + $return = true; + } + break; + case '<': + case 'less': + case 'is_smaller': + $data['operation'] = "<"; + if ( $parentValue < $checkValue ) { + $return = true; + } + break; + case '<=': + case 'less_equal': + case 'is_smaller_equal': + $data['operation'] = "<="; + if ( $parentValue <= $checkValue ) { + $return = true; + } + break; + case 'contains': + if ( is_array( $parentValue ) ) { + $parentValue = implode( ',', $parentValue ); + } + + if ( is_array( $checkValue ) ) { + foreach ( $checkValue as $idx => $opt ) { + if ( strpos( $parentValue, (string) $opt ) !== false ) { + $return = true; + } + } + } else { + if ( strpos( $parentValue, (string) $checkValue ) !== false ) { + $return = true; + } + } + + break; + case 'doesnt_contain': + case 'not_contain': + if ( is_array( $parentValue ) ) { + $parentValue = implode( ',', $parentValue ); + } + + if ( is_array( $checkValue ) ) { + foreach ( $checkValue as $idx => $opt ) { + if ( strpos( $parentValue, (string) $opt ) === false ) { + $return = true; + } + } + } else { + if ( strpos( $parentValue, (string) $checkValue ) === false ) { + $return = true; + } + } + + break; + case 'is_empty_or': + if ( empty ( $parentValue ) || $parentValue == $checkValue ) { + $return = true; + } + break; + case 'not_empty_and': + if ( ! empty ( $parentValue ) && $parentValue != $checkValue ) { + $return = true; + } + break; + case 'is_empty': + case 'empty': + case '!isset': + if ( empty ( $parentValue ) || $parentValue == "" || $parentValue == null ) { + $return = true; + } + break; + case 'not_empty': + case '!empty': + case 'isset': + if ( ! empty ( $parentValue ) && $parentValue != "" && $parentValue != null ) { + $return = true; + } + break; + } + + return $return; + } + + private function checkRequiredDependencies( $field, $data ) { + //required field must not be hidden. otherwise hide this one by default + + if ( ! in_array( $data['parent'], $this->fieldsHidden ) && ( ! isset ( $this->folds[ $field['id'] ] ) || $this->folds[ $field['id'] ] != "hide" ) ) { + if ( isset ( $this->options[ $data['parent'] ] ) ) { + $return = $this->compareValueDependencies( $this->options[ $data['parent'] ], $data['checkValue'], $data['operation'] ); + //$return = $this->compareValueDependencies( $data['parent'], $data['checkValue'], $data['operation'] ); + } + } + + if ( ( isset ( $return ) && $return ) && ( ! isset ( $this->folds[ $field['id'] ] ) || $this->folds[ $field['id'] ] != "hide" ) ) { + $this->folds[ $field['id'] ] = "show"; + } else { + $this->folds[ $field['id'] ] = "hide"; + if ( ! in_array( $field['id'], $this->fieldsHidden ) ) { + $this->fieldsHidden[] = $field['id']; + } + } + } + + /** + * converts an array into a html data string + * + * @param array $data example input: array('id'=>'true') + * + * @return string $data_string example output: data-id='true' + */ + public function create_data_string( $data = array() ) { + $data_string = ""; + + foreach ( $data as $key => $value ) { + if ( is_array( $value ) ) { + $value = implode( "|", $value ); + } + $data_string .= " data-$key='$value' "; + } + + return $data_string; + } + + /** + * Parses the string into variables without the max_input_vars limitation. + * + * @since 3.5.7.11 + * @author harunbasic + * @access public + * + * @param string $string + * + * @return array $result + */ + function redux_parse_str( $string ) { + if ( '' == $string ) { + return false; + } + + $result = array(); + $pairs = explode( '&', $string ); + + foreach ( $pairs as $key => $pair ) { + // use the original parse_str() on each element + parse_str( $pair, $params ); + + $k = key( $params ); + + if ( ! isset( $result[ $k ] ) ) { + $result += $params; + } else { + $result[ $k ] = $this->redux_array_merge_recursive_distinct( $result[ $k ], $params[ $k ] ); + } + } + + return $result; + } + + + /** + * Merge arrays without converting values with duplicate keys to arrays as array_merge_recursive does. + * As seen here http://php.net/manual/en/function.array-merge-recursive.php#92195 + * + * @since 3.5.7.11 + * @author harunbasic + * @access public + * + * @param array $array1 + * @param array $array2 + * + * @return array $merged + */ + function redux_array_merge_recursive_distinct( array $array1, array $array2 ) { + $merged = $array1; + + foreach ( $array2 as $key => $value ) { + if ( is_array( $value ) && isset( $merged[ $key ] ) && is_array( $merged[ $key ] ) ) { + $merged[ $key ] = $this->redux_array_merge_recursive_distinct( $merged[ $key ], $value ); + } else if ( is_numeric( $key ) && isset( $merged[ $key ] ) ) { + $merged[] = $value; + } else { + $merged[ $key ] = $value; + } + } + + return $merged; + } + + private function change_demo_defaults() { + if ( $this->args['dev_mode'] == true || Redux_Helpers::isLocalHost() == true ) { + if ( ! empty( $this->args['admin_bar_links'] ) ) { + foreach ( $this->args['admin_bar_links'] as $idx => $arr ) { + if ( is_array( $arr ) && ! empty( $arr ) ) { + foreach ( $arr as $x => $y ) { + if ( strpos( strtolower( $y ), 'redux' ) !== false ) { + $msg = __( 'Redux Framework Notice: There are references to the Redux Framework support site in your config\'s admin_bar_links argument. This is sample data. Please change or remove this data before shipping your product.', 'redux-framework' ); + $this->display_arg_change_notice( 'admin', $msg ); + $this->omit_admin_items = true; + continue; + } + } + } + } + } + + if ( ! empty( $this->args['share_icons'] ) ) { + foreach ( $this->args['share_icons'] as $idx => $arr ) { + if ( is_array( $arr ) && ! empty( $arr ) ) { + foreach ( $arr as $x => $y ) { + if (!$this->omit_share_icons) { + if ( strpos( strtolower( $y ), 'redux' ) !== false ) { + $msg = __( 'Redux Framework Notice: There are references to the Redux Framework support site in your config\'s share_icons argument. This is sample data. Please change or remove this data before shipping your product.', 'redux-framework' ); + $this->display_arg_change_notice( 'share', $msg ); + $this->omit_share_icons = true; + continue; + } + } + } + } + } + } + } + } + + private function display_arg_change_notice( $mode, $msg = '' ) { + if ( $mode == 'admin' ) { + if ( ! $this->omit_admin_items ) { + $data = array( + 'parent' => $this, + 'type' => 'error', + 'msg' => $msg, + 'id' => 'admin_config', + 'dismiss' => true + ); + + Redux_Admin_Notices::set_notice($data); + } + } + + if ( $mode == 'share' ) { + if ( ! $this->omit_share_icons ) { + $data = array( + 'parent' => $this, + 'type' => 'error', + 'msg' => $msg, + 'id' => 'share_config', + 'dismiss' => true + ); + + Redux_Admin_Notices::set_notice($data); + } + } + } + + + /** + * Checks a nested capabilities array or string to determine if the current user meets the requirements. + * + * @since 3.6.3.4 + * + * @param string|array $capabilities Permission string or array to check. See self::user_can() for details. + * @param int $object_id (Optional) ID of the specific object to check against if capability is a "meta" cap. + * e.g. 'edit_post', 'edit_user', 'edit_page', etc., + * + * @return bool Whether or not the user meets the requirements. False on invalid user. + */ + public static function current_user_can( $capabilities ) { + $current_user = wp_get_current_user(); + + if ( empty( $current_user ) ) { + return false; + } + + $name_arr=func_get_args(); + $args = array_merge( array( $current_user ),$name_arr ); + + return self::user_can(...$args); + // return call_user_func_array( array( 'self', 'user_can' ), $args ); + } + + + /** + * Checks a nested capabilities array or string to determine if the user meets the requirements. + * + * You can pass in a simple string like 'edit_posts' or an array of conditions. + * + * The capability 'relation' is reserved for controlling the relation mode (AND/OR), which defaults to AND. + * + * Max depth of 30 levels. False is returned for any conditions exceeding max depth. + * + * If you want to check meta caps, you must also pass the object ID on which to check against. + * If you get the error: PHP Notice: Undefined offset: 0 in /wp-includes/capabilities.php, you didn't + * pass the required $object_id. + * + * @since 3.6.3.4 + * + * @example + * ::user_can( 42, 'edit_pages' ); // Checks if user ID 42 has the 'edit_pages' cap. + * ::user_can( 42, 'edit_page', 17433 ); // Checks if user ID 42 has the 'edit_page' cap for post ID 17433. + * ::user_can( 42, array( 'edit_pages', 'edit_posts' ) ); // Checks if user ID 42 has both the 'edit_pages' and 'edit_posts' caps. + * + * @param int|object $user User ID or WP_User object to check. Defaults to the current user. + * @param string|array $capabilities Capability string or array to check. The array lets you use multiple + * conditions to determine if a user has permission. + * Invalid conditions are skipped (conditions which aren't a string/array/bool/number(cast to bool)). + * Example array where the user needs to have either the 'edit_posts' capability OR doesn't have the + * 'delete_pages' cap OR has the 'update_plugins' AND 'add_users' capabilities. + * array( + * 'relation' => 'OR', // Optional, defaults to AND. + * 'edit_posts', // Equivalent to 'edit_posts' => true, + * 'delete_pages' => false, // Tests that the user DOESN'T have this capability + * array( // Nested conditions array (up to 30 nestings) + * 'update_plugins', + * 'add_users', + * ), + * ) + * + * @param int $object_id (Optional) ID of the specific object to check against if capability is a "meta" cap. + * e.g. 'edit_post', 'edit_user', 'edit_page', etc., + * + * @return bool Whether or not the user meets the requirements. + * Will always return false for: + * - Invalid/missing user + * - If the $capabilities is not a string or array + * - Max nesting depth exceeded (for that level) + */ + public static function user_can( $user, $capabilities, $object_id = null ) { + static $depth = 0; + + if ( $depth >= 30 ) { + return false; + } + + if ( empty( $user ) ) { + return false; + } + + if ( !is_object( $user ) ) { + $user = get_userdata( $user ); + } + + if ( is_string( $capabilities ) ) { + // Simple string capability check + $args = array( + $user, + $capabilities, + ); + + if ( $object_id !== null ) { + $args[] = $object_id; + } + + return call_user_func_array( 'user_can', $args ); + } else { + // Only strings and arrays are allowed as valid capabilities + if ( !is_array( $capabilities ) ) { + return false; + } + } + + // Capability array check + $or = false; + + foreach ( $capabilities as $key => $value ) { + if ( $key === 'relation' ) { + if ( $value === 'OR' ) { + $or = true; + } + + continue; + } + + /** + * Rules can be in 4 different formats: + * [ + * [0] => 'foobar', + * [1] => array(...), + * 'foobar' => false, + * 'foobar' => array(...), + * ] + */ + if ( is_numeric( $key ) ) { + // Numeric key + if ( is_string( $value ) ) { + // Numeric key with a string value is the capability string to check + // [0] => 'foobar' + $args = array( $user, $value, ); + + if ( $object_id !== null ) { + $args[] = $object_id; + } + + $expression_result = call_user_func_array( 'user_can', $args ) === true; + } elseif ( is_array( $value ) ) { + // [0] => array(...) + $depth++; + + $expression_result = self::user_can( $user, $value, $object_id ); + + $depth--; + } else { + // Invalid types are skipped + continue; + } + } else { + // Non-numeric key + if ( is_scalar( $value ) ) { + // 'foobar' => false + $args = array( $user, $key, ); + + if ( $object_id !== null ) { + $args[] = $object_id; + } + + $expression_result = call_user_func_array( 'user_can', $args ) === (bool)$value; + } elseif ( is_array( $value ) ) { + // 'foobar' => array(...) + $depth++; + + $expression_result = self::user_can( $user, $value, $object_id ); + + $depth--; + } else { + // Invalid types are skipped + continue; + } + } + + // Check after every evaluation if we know enough to return a definitive answer + if ( $or ) { + if ( $expression_result ) { + // If the relation is OR, return on the first true expression + return true; + } + } else { + if ( !$expression_result ) { + // If the relation is AND, return on the first false expression + return false; + } + } + } + + // If we get this far on an OR, then it failed + // If we get this far on an AND, then it succeeded + return !$or; + } + + } + + // ReduxFramework + + /** + * action 'redux/init' + * + * @param null + */ + ReduxFramework::init(); + do_action( 'redux/init' ); + + } // class_exists('ReduxFramework') diff --git a/redux/ReduxCore/inc/browser.php b/redux/ReduxCore/inc/browser.php new file mode 100644 index 0000000..ba0edba --- /dev/null +++ b/redux/ReduxCore/inc/browser.php @@ -0,0 +1,1282 @@ +getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) { + * echo 'You have FireFox version 2 or greater'; + * } + * + * User Agents Sampled from: http://www.useragentstring.com/ + * + * This implementation is based on the original work from Gary White + * http://apptools.com/phptools/browser/ + * + */ + +class Browser +{ + private $_agent = ''; + private $_browser_name = ''; + private $_version = ''; + private $_platform = ''; + private $_os = ''; + private $_is_aol = false; + private $_is_mobile = false; + private $_is_tablet = false; + private $_is_robot = false; + private $_is_facebook = false; + private $_aol_version = ''; + + const BROWSER_UNKNOWN = 'unknown'; + const VERSION_UNKNOWN = 'unknown'; + + const BROWSER_OPERA = 'Opera'; // http://www.opera.com/ + const BROWSER_OPERA_MINI = 'Opera Mini'; // http://www.opera.com/mini/ + const BROWSER_WEBTV = 'WebTV'; // http://www.webtv.net/pc/ + const BROWSER_IE = 'Internet Explorer'; // http://www.microsoft.com/ie/ + const BROWSER_POCKET_IE = 'Pocket Internet Explorer'; // http://en.wikipedia.org/wiki/Internet_Explorer_Mobile + const BROWSER_KONQUEROR = 'Konqueror'; // http://www.konqueror.org/ + const BROWSER_ICAB = 'iCab'; // http://www.icab.de/ + const BROWSER_OMNIWEB = 'OmniWeb'; // http://www.omnigroup.com/applications/omniweb/ + const BROWSER_FIREBIRD = 'Firebird'; // http://www.ibphoenix.com/ + const BROWSER_FIREFOX = 'Firefox'; // http://www.mozilla.com/en-US/firefox/firefox.html + const BROWSER_ICEWEASEL = 'Iceweasel'; // http://www.geticeweasel.org/ + const BROWSER_SHIRETOKO = 'Shiretoko'; // http://wiki.mozilla.org/Projects/shiretoko + const BROWSER_MOZILLA = 'Mozilla'; // http://www.mozilla.com/en-US/ + const BROWSER_AMAYA = 'Amaya'; // http://www.w3.org/Amaya/ + const BROWSER_LYNX = 'Lynx'; // http://en.wikipedia.org/wiki/Lynx + const BROWSER_SAFARI = 'Safari'; // http://apple.com + const BROWSER_IPHONE = 'iPhone'; // http://apple.com + const BROWSER_IPOD = 'iPod'; // http://apple.com + const BROWSER_IPAD = 'iPad'; // http://apple.com + const BROWSER_CHROME = 'Chrome'; // http://www.google.com/chrome + const BROWSER_ANDROID = 'Android'; // http://www.android.com/ + const BROWSER_GOOGLEBOT = 'GoogleBot'; // http://en.wikipedia.org/wiki/Googlebot + const BROWSER_SLURP = 'Yahoo! Slurp'; // http://en.wikipedia.org/wiki/Yahoo!_Slurp + const BROWSER_W3CVALIDATOR = 'W3C Validator'; // http://validator.w3.org/ + const BROWSER_BLACKBERRY = 'BlackBerry'; // http://www.blackberry.com/ + const BROWSER_ICECAT = 'IceCat'; // http://en.wikipedia.org/wiki/GNU_IceCat + const BROWSER_NOKIA_S60 = 'Nokia S60 OSS Browser'; // http://en.wikipedia.org/wiki/Web_Browser_for_S60 + const BROWSER_NOKIA = 'Nokia Browser'; // * all other WAP-based browsers on the Nokia Platform + const BROWSER_MSN = 'MSN Browser'; // http://explorer.msn.com/ + const BROWSER_MSNBOT = 'MSN Bot'; // http://search.msn.com/msnbot.htm + const BROWSER_BINGBOT = 'Bing Bot'; // http://en.wikipedia.org/wiki/Bingbot + + const BROWSER_NETSCAPE_NAVIGATOR = 'Netscape Navigator'; // http://browser.netscape.com/ (DEPRECATED) + const BROWSER_GALEON = 'Galeon'; // http://galeon.sourceforge.net/ (DEPRECATED) + const BROWSER_NETPOSITIVE = 'NetPositive'; // http://en.wikipedia.org/wiki/NetPositive (DEPRECATED) + const BROWSER_PHOENIX = 'Phoenix'; // http://en.wikipedia.org/wiki/History_of_Mozilla_Firefox (DEPRECATED) + + const PLATFORM_UNKNOWN = 'unknown'; + const PLATFORM_WINDOWS = 'Windows'; + const PLATFORM_WINDOWS_CE = 'Windows CE'; + const PLATFORM_APPLE = 'Apple'; + const PLATFORM_LINUX = 'Linux'; + const PLATFORM_OS2 = 'OS/2'; + const PLATFORM_BEOS = 'BeOS'; + const PLATFORM_IPHONE = 'iPhone'; + const PLATFORM_IPOD = 'iPod'; + const PLATFORM_IPAD = 'iPad'; + const PLATFORM_BLACKBERRY = 'BlackBerry'; + const PLATFORM_NOKIA = 'Nokia'; + const PLATFORM_FREEBSD = 'FreeBSD'; + const PLATFORM_OPENBSD = 'OpenBSD'; + const PLATFORM_NETBSD = 'NetBSD'; + const PLATFORM_SUNOS = 'SunOS'; + const PLATFORM_OPENSOLARIS = 'OpenSolaris'; + const PLATFORM_ANDROID = 'Android'; + + const OPERATING_SYSTEM_UNKNOWN = 'unknown'; + + public function __construct($userAgent = "") + { + $this->reset(); + if ($userAgent != "") { + $this->setUserAgent($userAgent); + } else { + $this->determine(); + } + } + + /** + * Reset all properties + */ + public function reset() + { + $this->_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ""; + $this->_browser_name = self::BROWSER_UNKNOWN; + $this->_version = self::VERSION_UNKNOWN; + $this->_platform = self::PLATFORM_UNKNOWN; + $this->_os = self::OPERATING_SYSTEM_UNKNOWN; + $this->_is_aol = false; + $this->_is_mobile = false; + $this->_is_tablet = false; + $this->_is_robot = false; + $this->_is_facebook = false; + $this->_aol_version = self::VERSION_UNKNOWN; + } + + /** + * Check to see if the specific browser is valid + * @param string $browserName + * @return bool True if the browser is the specified browser + */ + function isBrowser($browserName) + { + return (0 == strcasecmp($this->_browser_name, trim($browserName))); + } + + /** + * The name of the browser. All return types are from the class contants + * @return string Name of the browser + */ + public function getBrowser() + { + return $this->_browser_name; + } + + /** + * Set the name of the browser + * @param $browser string The name of the Browser + */ + public function setBrowser($browser) + { + $this->_browser_name = $browser; + } + + /** + * The name of the platform. All return types are from the class contants + * @return string Name of the browser + */ + public function getPlatform() + { + return $this->_platform; + } + + /** + * Set the name of the platform + * @param string $platform The name of the Platform + */ + public function setPlatform($platform) + { + $this->_platform = $platform; + } + + /** + * The version of the browser. + * @return string Version of the browser (will only contain alpha-numeric characters and a period) + */ + public function getVersion() + { + return $this->_version; + } + + /** + * Set the version of the browser + * @param string $version The version of the Browser + */ + public function setVersion($version) + { + $this->_version = preg_replace('/[^0-9,.,a-z,A-Z-]/', '', $version); + } + + /** + * The version of AOL. + * @return string Version of AOL (will only contain alpha-numeric characters and a period) + */ + public function getAolVersion() + { + return $this->_aol_version; + } + + /** + * Set the version of AOL + * @param string $version The version of AOL + */ + public function setAolVersion($version) + { + $this->_aol_version = preg_replace('/[^0-9,.,a-z,A-Z]/', '', $version); + } + + /** + * Is the browser from AOL? + * @return boolean True if the browser is from AOL otherwise false + */ + public function isAol() + { + return $this->_is_aol; + } + + /** + * Is the browser from a mobile device? + * @return boolean True if the browser is from a mobile device otherwise false + */ + public function isMobile() + { + return $this->_is_mobile; + } + + /** + * Is the browser from a tablet device? + * @return boolean True if the browser is from a tablet device otherwise false + */ + public function isTablet() + { + return $this->_is_tablet; + } + + /** + * Is the browser from a robot (ex Slurp,GoogleBot)? + * @return boolean True if the browser is from a robot otherwise false + */ + public function isRobot() + { + return $this->_is_robot; + } + + /** + * Is the browser from facebook? + * @return boolean True if the browser is from facebook otherwise false + */ + public function isFacebook() + { + return $this->_is_facebook; + } + + /** + * Set the browser to be from AOL + * @param $isAol + */ + public function setAol($isAol) + { + $this->_is_aol = $isAol; + } + + /** + * Set the Browser to be mobile + * @param boolean $value is the browser a mobile browser or not + */ + protected function setMobile($value = true) + { + $this->_is_mobile = $value; + } + + /** + * Set the Browser to be tablet + * @param boolean $value is the browser a tablet browser or not + */ + protected function setTablet($value = true) + { + $this->_is_tablet = $value; + } + + /** + * Set the Browser to be a robot + * @param boolean $value is the browser a robot or not + */ + protected function setRobot($value = true) + { + $this->_is_robot = $value; + } + + /** + * Set the Browser to be a Facebook request + * @param boolean $value is the browser a robot or not + */ + protected function setFacebook($value = true) + { + $this->_is_facebook = $value; + } + + /** + * Get the user agent value in use to determine the browser + * @return string The user agent from the HTTP header + */ + public function getUserAgent() + { + return $this->_agent; + } + + /** + * Set the user agent value (the construction will use the HTTP header value - this will overwrite it) + * @param string $agent_string The value for the User Agent + */ + public function setUserAgent($agent_string) + { + $this->reset(); + $this->_agent = $agent_string; + $this->determine(); + } + + /** + * Used to determine if the browser is actually "chromeframe" + * @since 1.7 + * @return boolean True if the browser is using chromeframe + */ + public function isChromeFrame() + { + return (strpos($this->_agent, "chromeframe") !== false); + } + + /** + * Returns a formatted string with a summary of the details of the browser. + * @return string formatted string with a summary of the browser + */ + public function __toString() + { + return "Browser Name: {$this->getBrowser()}
    \n" . + "Browser Version: {$this->getVersion()}
    \n" . + "Browser User Agent String: {$this->getUserAgent()}
    \n" . + "Platform: {$this->getPlatform()}
    "; + } + + /** + * Protected routine to calculate and determine what the browser is in use (including platform) + */ + protected function determine() + { + $this->checkPlatform(); + $this->checkBrowsers(); + $this->checkForAol(); + } + + /** + * Protected routine to determine the browser type + * @return boolean True if the browser was detected otherwise false + */ + protected function checkBrowsers() + { + return ( + // well-known, well-used + // Special Notes: + // (1) Opera must be checked before FireFox due to the odd + // user agents used in some older versions of Opera + // (2) WebTV is strapped onto Internet Explorer so we must + // check for WebTV before IE + // (3) (deprecated) Galeon is based on Firefox and needs to be + // tested before Firefox is tested + // (4) OmniWeb is based on Safari so OmniWeb check must occur + // before Safari + // (5) Netscape 9+ is based on Firefox so Netscape checks + // before FireFox are necessary + $this->checkBrowserWebTv() || + $this->checkBrowserInternetExplorer() || + $this->checkBrowserOpera() || + $this->checkBrowserGaleon() || + $this->checkBrowserNetscapeNavigator9Plus() || + $this->checkBrowserFirefox() || + $this->checkBrowserChrome() || + $this->checkBrowserOmniWeb() || + + // common mobile + $this->checkBrowserAndroid() || + $this->checkBrowseriPad() || + $this->checkBrowseriPod() || + $this->checkBrowseriPhone() || + $this->checkBrowserBlackBerry() || + $this->checkBrowserNokia() || + + // common bots + $this->checkBrowserGoogleBot() || + $this->checkBrowserMSNBot() || + $this->checkBrowserBingBot() || + $this->checkBrowserSlurp() || + + // check for facebook external hit when loading URL + $this->checkFacebookExternalHit() || + + // WebKit base check (post mobile and others) + $this->checkBrowserSafari() || + + // everyone else + $this->checkBrowserNetPositive() || + $this->checkBrowserFirebird() || + $this->checkBrowserKonqueror() || + $this->checkBrowserIcab() || + $this->checkBrowserPhoenix() || + $this->checkBrowserAmaya() || + $this->checkBrowserLynx() || + $this->checkBrowserShiretoko() || + $this->checkBrowserIceCat() || + $this->checkBrowserIceweasel() || + $this->checkBrowserW3CValidator() || + $this->checkBrowserMozilla() /* Mozilla is such an open standard that you must check it last */ + ); + } + + /** + * Determine if the user is using a BlackBerry (last updated 1.7) + * @return boolean True if the browser is the BlackBerry browser otherwise false + */ + protected function checkBrowserBlackBerry() + { + if (stripos($this->_agent, 'blackberry') !== false) { + $aresult = explode("/", stristr($this->_agent, "BlackBerry")); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->_browser_name = self::BROWSER_BLACKBERRY; + $this->setMobile(true); + return true; + } + } + return false; + } + + /** + * Determine if the user is using an AOL User Agent (last updated 1.7) + * @return boolean True if the browser is from AOL otherwise false + */ + protected function checkForAol() + { + $this->setAol(false); + $this->setAolVersion(self::VERSION_UNKNOWN); + + if (stripos($this->_agent, 'aol') !== false) { + $aversion = explode(' ', stristr($this->_agent, 'AOL')); + if (isset($aversion[1])) { + $this->setAol(true); + $this->setAolVersion(preg_replace('/[^0-9\.a-z]/i', '', $aversion[1])); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the GoogleBot or not (last updated 1.7) + * @return boolean True if the browser is the GoogletBot otherwise false + */ + protected function checkBrowserGoogleBot() + { + if (stripos($this->_agent, 'googlebot') !== false) { + $aresult = explode('/', stristr($this->_agent, 'googlebot')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion(str_replace(';', '', $aversion[0])); + $this->_browser_name = self::BROWSER_GOOGLEBOT; + $this->setRobot(true); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the MSNBot or not (last updated 1.9) + * @return boolean True if the browser is the MSNBot otherwise false + */ + protected function checkBrowserMSNBot() + { + if (stripos($this->_agent, "msnbot") !== false) { + $aresult = explode("/", stristr($this->_agent, "msnbot")); + if (isset($aresult[1])) { + $aversion = explode(" ", $aresult[1]); + $this->setVersion(str_replace(";", "", $aversion[0])); + $this->_browser_name = self::BROWSER_MSNBOT; + $this->setRobot(true); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the BingBot or not (last updated 1.9) + * @return boolean True if the browser is the BingBot otherwise false + */ + protected function checkBrowserBingBot() + { + if (stripos($this->_agent, "bingbot") !== false) { + $aresult = explode("/", stristr($this->_agent, "bingbot")); + if (isset($aresult[1])) { + $aversion = explode(" ", $aresult[1]); + $this->setVersion(str_replace(";", "", $aversion[0])); + $this->_browser_name = self::BROWSER_BINGBOT; + $this->setRobot(true); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the W3C Validator or not (last updated 1.7) + * @return boolean True if the browser is the W3C Validator otherwise false + */ + protected function checkBrowserW3CValidator() + { + if (stripos($this->_agent, 'W3C-checklink') !== false) { + $aresult = explode('/', stristr($this->_agent, 'W3C-checklink')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->_browser_name = self::BROWSER_W3CVALIDATOR; + return true; + } + } else if (stripos($this->_agent, 'W3C_Validator') !== false) { + // Some of the Validator versions do not delineate w/ a slash - add it back in + $ua = str_replace("W3C_Validator ", "W3C_Validator/", $this->_agent); + $aresult = explode('/', stristr($ua, 'W3C_Validator')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->_browser_name = self::BROWSER_W3CVALIDATOR; + return true; + } + } else if (stripos($this->_agent, 'W3C-mobileOK') !== false) { + $this->_browser_name = self::BROWSER_W3CVALIDATOR; + $this->setMobile(true); + return true; + } + return false; + } + + /** + * Determine if the browser is the Yahoo! Slurp Robot or not (last updated 1.7) + * @return boolean True if the browser is the Yahoo! Slurp Robot otherwise false + */ + protected function checkBrowserSlurp() + { + if (stripos($this->_agent, 'slurp') !== false) { + $aresult = explode('/', stristr($this->_agent, 'Slurp')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->_browser_name = self::BROWSER_SLURP; + $this->setRobot(true); + $this->setMobile(false); + return true; + } + } + return false; + } + + /** + * Determine if the browser is Internet Explorer or not (last updated 1.7) + * @return boolean True if the browser is Internet Explorer otherwise false + */ + protected function checkBrowserInternetExplorer() + { + // Test for IE11 + if( stripos($this->_agent,'Trident/7.0; rv:11.0') !== false ) { + $this->setBrowser(self::BROWSER_IE); + $this->setVersion('11.0'); + return true; + } + // Test for v1 - v1.5 IE + else if (stripos($this->_agent, 'microsoft internet explorer') !== false) { + $this->setBrowser(self::BROWSER_IE); + $this->setVersion('1.0'); + $aresult = stristr($this->_agent, '/'); + if (preg_match('/308|425|426|474|0b1/i', $aresult)) { + $this->setVersion('1.5'); + } + return true; + } // Test for versions > 1.5 + else if (stripos($this->_agent, 'msie') !== false && stripos($this->_agent, 'opera') === false) { + // See if the browser is the odd MSN Explorer + if (stripos($this->_agent, 'msnb') !== false) { + $aresult = explode(' ', stristr(str_replace(';', '; ', $this->_agent), 'MSN')); + if (isset($aresult[1])) { + $this->setBrowser(self::BROWSER_MSN); + $this->setVersion(str_replace(array('(', ')', ';'), '', $aresult[1])); + return true; + } + } + $aresult = explode(' ', stristr(str_replace(';', '; ', $this->_agent), 'msie')); + if (isset($aresult[1])) { + $this->setBrowser(self::BROWSER_IE); + $this->setVersion(str_replace(array('(', ')', ';'), '', $aresult[1])); + if(stripos($this->_agent, 'IEMobile') !== false) { + $this->setBrowser(self::BROWSER_POCKET_IE); + $this->setMobile(true); + } + return true; + } + } // Test for versions > IE 10 + else if(stripos($this->_agent, 'trident') !== false) { + $this->setBrowser(self::BROWSER_IE); + $result = explode('rv:', $this->_agent); + if (isset($result[1])) { + $this->setVersion(preg_replace('/[^0-9.]+/', '', $result[1])); + $this->_agent = str_replace(array("Mozilla", "Gecko"), "MSIE", $this->_agent); + } + } // Test for Pocket IE + else if (stripos($this->_agent, 'mspie') !== false || stripos($this->_agent, 'pocket') !== false) { + $aresult = explode(' ', stristr($this->_agent, 'mspie')); + if (isset($aresult[1])) { + $this->setPlatform(self::PLATFORM_WINDOWS_CE); + $this->setBrowser(self::BROWSER_POCKET_IE); + $this->setMobile(true); + + if (stripos($this->_agent, 'mspie') !== false) { + $this->setVersion($aresult[1]); + } else { + $aversion = explode('/', $this->_agent); + if (isset($aversion[1])) { + $this->setVersion($aversion[1]); + } + } + return true; + } + } + return false; + } + + /** + * Determine if the browser is Opera or not (last updated 1.7) + * @return boolean True if the browser is Opera otherwise false + */ + protected function checkBrowserOpera() + { + if (stripos($this->_agent, 'opera mini') !== false) { + $resultant = stristr($this->_agent, 'opera mini'); + if (preg_match('/\//', $resultant)) { + $aresult = explode('/', $resultant); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + } + } else { + $aversion = explode(' ', stristr($resultant, 'opera mini')); + if (isset($aversion[1])) { + $this->setVersion($aversion[1]); + } + } + $this->_browser_name = self::BROWSER_OPERA_MINI; + $this->setMobile(true); + return true; + } else if (stripos($this->_agent, 'opera') !== false) { + $resultant = stristr($this->_agent, 'opera'); + if (preg_match('/Version\/(1*.*)$/', $resultant, $matches)) { + $this->setVersion($matches[1]); + } else if (preg_match('/\//', $resultant)) { + $aresult = explode('/', str_replace("(", " ", $resultant)); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + } + } else { + $aversion = explode(' ', stristr($resultant, 'opera')); + $this->setVersion(isset($aversion[1]) ? $aversion[1] : ""); + } + if (stripos($this->_agent, 'Opera Mobi') !== false) { + $this->setMobile(true); + } + $this->_browser_name = self::BROWSER_OPERA; + return true; + } else if (stripos($this->_agent, 'OPR') !== false) { + $resultant = stristr($this->_agent, 'OPR'); + if (preg_match('/\//', $resultant)) { + $aresult = explode('/', str_replace("(", " ", $resultant)); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + } + } + if (stripos($this->_agent, 'Mobile') !== false) { + $this->setMobile(true); + } + $this->_browser_name = self::BROWSER_OPERA; + return true; + } + return false; + } + + /** + * Determine if the browser is Chrome or not (last updated 1.7) + * @return boolean True if the browser is Chrome otherwise false + */ + protected function checkBrowserChrome() + { + if (stripos($this->_agent, 'Chrome') !== false) { + $aresult = explode('/', stristr($this->_agent, 'Chrome')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_CHROME); + //Chrome on Android + if (stripos($this->_agent, 'Android') !== false) { + if (stripos($this->_agent, 'Mobile') !== false) { + $this->setMobile(true); + } else { + $this->setTablet(true); + } + } + return true; + } + } + return false; + } + + + /** + * Determine if the browser is WebTv or not (last updated 1.7) + * @return boolean True if the browser is WebTv otherwise false + */ + protected function checkBrowserWebTv() + { + if (stripos($this->_agent, 'webtv') !== false) { + $aresult = explode('/', stristr($this->_agent, 'webtv')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_WEBTV); + return true; + } + } + return false; + } + + /** + * Determine if the browser is NetPositive or not (last updated 1.7) + * @return boolean True if the browser is NetPositive otherwise false + */ + protected function checkBrowserNetPositive() + { + if (stripos($this->_agent, 'NetPositive') !== false) { + $aresult = explode('/', stristr($this->_agent, 'NetPositive')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion(str_replace(array('(', ')', ';'), '', $aversion[0])); + $this->setBrowser(self::BROWSER_NETPOSITIVE); + return true; + } + } + return false; + } + + /** + * Determine if the browser is Galeon or not (last updated 1.7) + * @return boolean True if the browser is Galeon otherwise false + */ + protected function checkBrowserGaleon() + { + if (stripos($this->_agent, 'galeon') !== false) { + $aresult = explode(' ', stristr($this->_agent, 'galeon')); + $aversion = explode('/', $aresult[0]); + if (isset($aversion[1])) { + $this->setVersion($aversion[1]); + $this->setBrowser(self::BROWSER_GALEON); + return true; + } + } + return false; + } + + /** + * Determine if the browser is Konqueror or not (last updated 1.7) + * @return boolean True if the browser is Konqueror otherwise false + */ + protected function checkBrowserKonqueror() + { + if (stripos($this->_agent, 'Konqueror') !== false) { + $aresult = explode(' ', stristr($this->_agent, 'Konqueror')); + $aversion = explode('/', $aresult[0]); + if (isset($aversion[1])) { + $this->setVersion($aversion[1]); + $this->setBrowser(self::BROWSER_KONQUEROR); + return true; + } + } + return false; + } + + /** + * Determine if the browser is iCab or not (last updated 1.7) + * @return boolean True if the browser is iCab otherwise false + */ + protected function checkBrowserIcab() + { + if (stripos($this->_agent, 'icab') !== false) { + $aversion = explode(' ', stristr(str_replace('/', ' ', $this->_agent), 'icab')); + if (isset($aversion[1])) { + $this->setVersion($aversion[1]); + $this->setBrowser(self::BROWSER_ICAB); + return true; + } + } + return false; + } + + /** + * Determine if the browser is OmniWeb or not (last updated 1.7) + * @return boolean True if the browser is OmniWeb otherwise false + */ + protected function checkBrowserOmniWeb() + { + if (stripos($this->_agent, 'omniweb') !== false) { + $aresult = explode('/', stristr($this->_agent, 'omniweb')); + $aversion = explode(' ', isset($aresult[1]) ? $aresult[1] : ""); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_OMNIWEB); + return true; + } + return false; + } + + /** + * Determine if the browser is Phoenix or not (last updated 1.7) + * @return boolean True if the browser is Phoenix otherwise false + */ + protected function checkBrowserPhoenix() + { + if (stripos($this->_agent, 'Phoenix') !== false) { + $aversion = explode('/', stristr($this->_agent, 'Phoenix')); + if (isset($aversion[1])) { + $this->setVersion($aversion[1]); + $this->setBrowser(self::BROWSER_PHOENIX); + return true; + } + } + return false; + } + + /** + * Determine if the browser is Firebird or not (last updated 1.7) + * @return boolean True if the browser is Firebird otherwise false + */ + protected function checkBrowserFirebird() + { + if (stripos($this->_agent, 'Firebird') !== false) { + $aversion = explode('/', stristr($this->_agent, 'Firebird')); + if (isset($aversion[1])) { + $this->setVersion($aversion[1]); + $this->setBrowser(self::BROWSER_FIREBIRD); + return true; + } + } + return false; + } + + /** + * Determine if the browser is Netscape Navigator 9+ or not (last updated 1.7) + * NOTE: (http://browser.netscape.com/ - Official support ended on March 1st, 2008) + * @return boolean True if the browser is Netscape Navigator 9+ otherwise false + */ + protected function checkBrowserNetscapeNavigator9Plus() + { + if (stripos($this->_agent, 'Firefox') !== false && preg_match('/Navigator\/([^ ]*)/i', $this->_agent, $matches)) { + $this->setVersion($matches[1]); + $this->setBrowser(self::BROWSER_NETSCAPE_NAVIGATOR); + return true; + } else if (stripos($this->_agent, 'Firefox') === false && preg_match('/Netscape6?\/([^ ]*)/i', $this->_agent, $matches)) { + $this->setVersion($matches[1]); + $this->setBrowser(self::BROWSER_NETSCAPE_NAVIGATOR); + return true; + } + return false; + } + + /** + * Determine if the browser is Shiretoko or not (https://wiki.mozilla.org/Projects/shiretoko) (last updated 1.7) + * @return boolean True if the browser is Shiretoko otherwise false + */ + protected function checkBrowserShiretoko() + { + if (stripos($this->_agent, 'Mozilla') !== false && preg_match('/Shiretoko\/([^ ]*)/i', $this->_agent, $matches)) { + $this->setVersion($matches[1]); + $this->setBrowser(self::BROWSER_SHIRETOKO); + return true; + } + return false; + } + + /** + * Determine if the browser is Ice Cat or not (http://en.wikipedia.org/wiki/GNU_IceCat) (last updated 1.7) + * @return boolean True if the browser is Ice Cat otherwise false + */ + protected function checkBrowserIceCat() + { + if (stripos($this->_agent, 'Mozilla') !== false && preg_match('/IceCat\/([^ ]*)/i', $this->_agent, $matches)) { + $this->setVersion($matches[1]); + $this->setBrowser(self::BROWSER_ICECAT); + return true; + } + return false; + } + + /** + * Determine if the browser is Nokia or not (last updated 1.7) + * @return boolean True if the browser is Nokia otherwise false + */ + protected function checkBrowserNokia() + { + if (preg_match("/Nokia([^\/]+)\/([^ SP]+)/i", $this->_agent, $matches)) { + $this->setVersion($matches[2]); + if (stripos($this->_agent, 'Series60') !== false || strpos($this->_agent, 'S60') !== false) { + $this->setBrowser(self::BROWSER_NOKIA_S60); + } else { + $this->setBrowser(self::BROWSER_NOKIA); + } + $this->setMobile(true); + return true; + } + return false; + } + + /** + * Determine if the browser is Firefox or not (last updated 1.7) + * @return boolean True if the browser is Firefox otherwise false + */ + protected function checkBrowserFirefox() + { + if (stripos($this->_agent, 'safari') === false) { + if (preg_match("/Firefox[\/ \(]([^ ;\)]+)/i", $this->_agent, $matches)) { + $this->setVersion($matches[1]); + $this->setBrowser(self::BROWSER_FIREFOX); + //Firefox on Android + if (stripos($this->_agent, 'Android') !== false) { + if (stripos($this->_agent, 'Mobile') !== false) { + $this->setMobile(true); + } else { + $this->setTablet(true); + } + } + return true; + } else if (preg_match("/Firefox$/i", $this->_agent, $matches)) { + $this->setVersion(""); + $this->setBrowser(self::BROWSER_FIREFOX); + return true; + } + } + return false; + } + + /** + * Determine if the browser is Firefox or not (last updated 1.7) + * @return boolean True if the browser is Firefox otherwise false + */ + protected function checkBrowserIceweasel() + { + if (stripos($this->_agent, 'Iceweasel') !== false) { + $aresult = explode('/', stristr($this->_agent, 'Iceweasel')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_ICEWEASEL); + return true; + } + } + return false; + } + + /** + * Determine if the browser is Mozilla or not (last updated 1.7) + * @return boolean True if the browser is Mozilla otherwise false + */ + protected function checkBrowserMozilla() + { + if (stripos($this->_agent, 'mozilla') !== false && preg_match('/rv:[0-9].[0-9][a-b]?/i', $this->_agent) && stripos($this->_agent, 'netscape') === false) { + $aversion = explode(' ', stristr($this->_agent, 'rv:')); + preg_match('/rv:[0-9].[0-9][a-b]?/i', $this->_agent, $aversion); + $this->setVersion(str_replace('rv:', '', $aversion[0])); + $this->setBrowser(self::BROWSER_MOZILLA); + return true; + } else if (stripos($this->_agent, 'mozilla') !== false && preg_match('/rv:[0-9]\.[0-9]/i', $this->_agent) && stripos($this->_agent, 'netscape') === false) { + $aversion = explode('', stristr($this->_agent, 'rv:')); + $this->setVersion(str_replace('rv:', '', $aversion[0])); + $this->setBrowser(self::BROWSER_MOZILLA); + return true; + } else if (stripos($this->_agent, 'mozilla') !== false && preg_match('/mozilla\/([^ ]*)/i', $this->_agent, $matches) && stripos($this->_agent, 'netscape') === false) { + $this->setVersion($matches[1]); + $this->setBrowser(self::BROWSER_MOZILLA); + return true; + } + return false; + } + + /** + * Determine if the browser is Lynx or not (last updated 1.7) + * @return boolean True if the browser is Lynx otherwise false + */ + protected function checkBrowserLynx() + { + if (stripos($this->_agent, 'lynx') !== false) { + $aresult = explode('/', stristr($this->_agent, 'Lynx')); + $aversion = explode(' ', (isset($aresult[1]) ? $aresult[1] : "")); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_LYNX); + return true; + } + return false; + } + + /** + * Determine if the browser is Amaya or not (last updated 1.7) + * @return boolean True if the browser is Amaya otherwise false + */ + protected function checkBrowserAmaya() + { + if (stripos($this->_agent, 'amaya') !== false) { + $aresult = explode('/', stristr($this->_agent, 'Amaya')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_AMAYA); + return true; + } + } + return false; + } + + /** + * Determine if the browser is Safari or not (last updated 1.7) + * @return boolean True if the browser is Safari otherwise false + */ + protected function checkBrowserSafari() + { + if (stripos($this->_agent, 'Safari') !== false + && stripos($this->_agent, 'iPhone') === false + && stripos($this->_agent, 'iPod') === false) { + + $aresult = explode('/', stristr($this->_agent, 'Version')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + } else { + $this->setVersion(self::VERSION_UNKNOWN); + } + $this->setBrowser(self::BROWSER_SAFARI); + return true; + } + return false; + } + + /** + * Detect if URL is loaded from FacebookExternalHit + * @return boolean True if it detects FacebookExternalHit otherwise false + */ + protected function checkFacebookExternalHit() + { + if(stristr($this->_agent,'FacebookExternalHit')) + { + $this->setRobot(true); + $this->setFacebook(true); + return true; + } + return false; + } + + /** + * Detect if URL is being loaded from internal Facebook browser + * @return boolean True if it detects internal Facebook browser otherwise false + */ + protected function checkForFacebookIos() + { + if(stristr($this->_agent,'FBIOS')) + { + $this->setFacebook(true); + return true; + } + return false; + } + + /** + * Detect Version for the Safari browser on iOS devices + * @return boolean True if it detects the version correctly otherwise false + */ + protected function getSafariVersionOnIos() + { + $aresult = explode('/',stristr($this->_agent,'Version')); + if( isset($aresult[1]) ) + { + $aversion = explode(' ',$aresult[1]); + $this->setVersion($aversion[0]); + return true; + } + return false; + } + + /** + * Detect Version for the Chrome browser on iOS devices + * @return boolean True if it detects the version correctly otherwise false + */ + protected function getChromeVersionOnIos() + { + $aresult = explode('/',stristr($this->_agent,'CriOS')); + if( isset($aresult[1]) ) + { + $aversion = explode(' ',$aresult[1]); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_CHROME); + return true; + } + return false; + } + + /** + * Determine if the browser is iPhone or not (last updated 1.7) + * @return boolean True if the browser is iPhone otherwise false + */ + protected function checkBrowseriPhone() { + if( stripos($this->_agent,'iPhone') !== false ) { + $this->setVersion(self::VERSION_UNKNOWN); + $this->setBrowser(self::BROWSER_IPHONE); + $this->getSafariVersionOnIos(); + $this->getChromeVersionOnIos(); + $this->checkForFacebookIos(); + $this->setMobile(true); + return true; + } + return false; + } + + /** + * Determine if the browser is iPad or not (last updated 1.7) + * @return boolean True if the browser is iPad otherwise false + */ + protected function checkBrowseriPad() { + if( stripos($this->_agent,'iPad') !== false ) { + $this->setVersion(self::VERSION_UNKNOWN); + $this->setBrowser(self::BROWSER_IPAD); + $this->getSafariVersionOnIos(); + $this->getChromeVersionOnIos(); + $this->checkForFacebookIos(); + $this->setTablet(true); + return true; + } + return false; + } + + /** + * Determine if the browser is iPod or not (last updated 1.7) + * @return boolean True if the browser is iPod otherwise false + */ + protected function checkBrowseriPod() { + if( stripos($this->_agent,'iPod') !== false ) { + $this->setVersion(self::VERSION_UNKNOWN); + $this->setBrowser(self::BROWSER_IPOD); + $this->getSafariVersionOnIos(); + $this->getChromeVersionOnIos(); + $this->checkForFacebookIos(); + $this->setMobile(true); + return true; + } + return false; + } + + /** + * Determine if the browser is Android or not (last updated 1.7) + * @return boolean True if the browser is Android otherwise false + */ + protected function checkBrowserAndroid() + { + if (stripos($this->_agent, 'Android') !== false) { + $aresult = explode(' ', stristr($this->_agent, 'Android')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + } else { + $this->setVersion(self::VERSION_UNKNOWN); + } + if (stripos($this->_agent, 'Mobile') !== false) { + $this->setMobile(true); + } else { + $this->setTablet(true); + } + $this->setBrowser(self::BROWSER_ANDROID); + return true; + } + return false; + } + + /** + * Determine the user's platform (last updated 1.7) + */ + protected function checkPlatform() + { + if (stripos($this->_agent, 'windows') !== false) + { + $this->_platform = self::PLATFORM_WINDOWS; + } + else if (stripos($this->_agent, 'iPad') !== false) + { + $this->_platform = self::PLATFORM_IPAD; + } + else if (stripos($this->_agent, 'iPod') !== false) + { + $this->_platform = self::PLATFORM_IPOD; + } + else if (stripos($this->_agent, 'iPhone') !== false) + { + $this->_platform = self::PLATFORM_IPHONE; + } + elseif (stripos($this->_agent, 'mac') !== false) + { + $this->_platform = self::PLATFORM_APPLE; + } + elseif (stripos($this->_agent, 'android') !== false) + { + $this->_platform = self::PLATFORM_ANDROID; + } + elseif (stripos($this->_agent, 'linux') !== false) + { + $this->_platform = self::PLATFORM_LINUX; + } + else if (stripos($this->_agent, 'Nokia') !== false) + { + $this->_platform = self::PLATFORM_NOKIA; + } + else if (stripos($this->_agent, 'BlackBerry') !== false) + { + $this->_platform = self::PLATFORM_BLACKBERRY; + } + elseif (stripos($this->_agent, 'FreeBSD') !== false) + { + $this->_platform = self::PLATFORM_FREEBSD; + } + elseif (stripos($this->_agent, 'OpenBSD') !== false) + { + $this->_platform = self::PLATFORM_OPENBSD; + } + elseif (stripos($this->_agent, 'NetBSD') !== false) + { + $this->_platform = self::PLATFORM_NETBSD; + } + elseif (stripos($this->_agent, 'OpenSolaris') !== false) + { + $this->_platform = self::PLATFORM_OPENSOLARIS; + } + elseif (stripos($this->_agent, 'SunOS') !== false) + { + $this->_platform = self::PLATFORM_SUNOS; + } + elseif (stripos($this->_agent, 'OS\/2') !== false) + { + $this->_platform = self::PLATFORM_OS2; + } + elseif (stripos($this->_agent, 'BeOS') !== false) + { + $this->_platform = self::PLATFORM_BEOS; + } + elseif (stripos($this->_agent, 'win') !== false) + { + $this->_platform = self::PLATFORM_WINDOWS; + } + + } +} diff --git a/redux/ReduxCore/inc/class.p.php b/redux/ReduxCore/inc/class.p.php new file mode 100644 index 0000000..aab958e --- /dev/null +++ b/redux/ReduxCore/inc/class.p.php @@ -0,0 +1,303 @@ + and +// are disabled by default, see for more information. +// callback - If specified, the response JSON will be wrapped in this named +// function call. This parameter and are disabled by +// default, see for more information. +// user_agent - This value will be sent to the remote URL request as the +// `User-Agent:` HTTP request header. If omitted, the browser user agent +// will be passed through. +// send_cookies - If send_cookies=1, all cookies will be forwarded through to +// the remote URL request. +// send_session - If send_session=1 and send_cookies=1, the SID cookie will be +// forwarded through to the remote URL request. +// full_headers - If a JSON request and full_headers=1, the JSON response will +// contain detailed header information. +// full_status - If a JSON request and full_status=1, the JSON response will +// contain detailed cURL status information, otherwise it will just contain +// the `http_code` property. +// +// Topic: POST Parameters +// +// All POST parameters are automatically passed through to the remote URL +// request. +// +// Topic: JSON requests +// +// This request will return the contents of the specified url in JSON format. +// +// Request: +// +// > ba-simple-proxy.php?url=http://example.com/ +// +// Response: +// +// > { "contents": "...", "headers": {...}, "status": {...} } +// +// JSON object properties: +// +// contents - (String) The contents of the remote URL resource. +// headers - (Object) A hash of HTTP headers returned by the remote URL +// resource. +// status - (Object) A hash of status codes returned by cURL. +// +// Topic: JSONP requests +// +// This request will return the contents of the specified url in JSONP format +// (but only if $enable_jsonp is enabled in the PHP script). +// +// Request: +// +// > ba-simple-proxy.php?url=http://example.com/&callback=foo +// +// Response: +// +// > foo({ "contents": "...", "headers": {...}, "status": {...} }) +// +// JSON object properties: +// +// contents - (String) The contents of the remote URL resource. +// headers - (Object) A hash of HTTP headers returned by the remote URL +// resource. +// status - (Object) A hash of status codes returned by cURL. +// +// Topic: Native requests +// +// This request will return the contents of the specified url in the format it +// was received in, including the same content-type and other headers (but only +// if $enable_native is enabled in the PHP script). +// +// Request: +// +// > ba-simple-proxy.php?url=http://example.com/&mode=native +// +// Response: +// +// > ... +// +// Topic: Notes +// +// * Assumes magic_quotes_gpc = Off in php.ini +// +// Topic: Configuration Options +// +// These variables can be manually edited in the PHP file if necessary. +// +// $enable_jsonp - Only enable if you really need to. If you +// install this script on the same server as the page you're calling it +// from, plain JSON will work. Defaults to false. +// $enable_native - You can enable , but you should only do +// this if you also whitelist specific URLs using $valid_url_regex, to avoid +// possible XSS vulnerabilities. Defaults to false. +// $valid_url_regex - This regex is matched against the url parameter to +// ensure that it is valid. This setting only needs to be used if either +// $enable_jsonp or $enable_native are enabled. Defaults to '/.*/' which +// validates all URLs. +// +// ############################################################################ + + + $_GET['mode'] = "native"; + $_GET['full_headers'] = 1; + $_GET['full_status'] = 1; + $_GET['send_cookies'] = 1; + + +// Change these configuration options if needed, see above descriptions for info. + $enable_jsonp = false; + $enable_native = true; + $valid_url_regex = '/.*/'; + +// ############################################################################ + $url = $_GET['url']; + + if ( isset( $_GET['nonce'] ) ) { + $url = str_replace( 'nonce=' . $_GET['nonce'] . '&', '', $url ); + } + + + if ( ! $url ) { + + // Passed url not specified. + $contents = 'ERROR: url not specified'; + $status = array( 'http_code' => 'ERROR' ); + + } else if ( ! preg_match( $valid_url_regex, $url ) ) { + + // Passed url doesn't match $valid_url_regex. + $contents = 'ERROR: invalid url'; + $status = array( 'http_code' => 'ERROR' ); + + } else { + $url = urldecode( $url ); + if ( isset( $_GET['proxy'] ) ) { + $url .= '&proxy=' . $_GET['proxy']; + } + + // Ad URL rewrite + if ( strpos( $url, 'http' ) === false ) { + $url = 'http:' . $url; + } + + if ( isset( $_GET['callback'] ) ) { + foreach ( $_GET as $key => $value ) { + if ( in_array( $key, array( 'url', 'mode', 'full_headers', 'full_status', 'send_cookies' ) ) ) { + continue; + } + $url .= "&" . $key . '=' . $value; + } + } + + + $args = array( + 'user-agent' => isset( $_GET['user_agent'] ) ? $_GET['user_agent'] : $_SERVER['HTTP_USER_AGENT'], + 'method' => 'GET', + ); + + if ( isset( $_GET['send_cookies'] ) && $_GET['send_cookies'] ) { + $cookie = array(); + foreach ( $_COOKIE as $key => $value ) { + $cookie[] = $key . '=' . $value; + } + if ( isset( $_GET['send_session'] ) && $_GET['send_session'] ) { + $cookie[] = SID; + } + $args['cookies'] = $cookie; + + } + if ( strtolower( $_SERVER['REQUEST_METHOD'] ) == 'post' ) { + $args['body'] = $_POST; + $args['method'] = 'POST'; + + } + + + $response = wp_remote_request( + $url, + $args + ); + + if ( ! is_wp_error( $response ) ) { + $status = $response['response']['code']; + $contents = $response['body']; + } + + } + + + if ( isset( $_GET['mode'] ) && $_GET['mode'] == 'native' ) { + if ( ! $enable_native ) { + $contents = 'ERROR: invalid mode'; + $status = array( 'http_code' => 'ERROR' ); + } + + if ( ! is_wp_error( $response ) && isset( $response['headers']['content-type'] ) ) { + header( 'Content-Type: ' . $response['headers']['content-type'] ); + } + if ( ! is_wp_error( $response ) && isset( $response['headers']['content-language'] ) ) { + header( 'Content-Language: ' . $response['headers']['content-language'] ); + } + if ( ! is_wp_error( $response ) && isset( $response['headers']['set-cookie'] ) ) { + header( 'Set-Cookie: ' . $response['headers']['set-cookie'] ); + } + + if ( isset( $contents ) ) { + print str_replace( 'ads.redux.io', 'look.redux.io', $contents ); + } + + } else { + + // $data will be serialized into JSON data. + $data = array(); + + // Propagate all HTTP headers into the JSON data object. + if ( isset( $_GET['full_headers'] ) && $_GET['full_headers'] ) { + $data['headers'] = array(); + + } + + // Propagate all cURL request / response info to the JSON data object. + if ( isset( $_GET['full_status'] ) && $_GET['full_status'] ) { + $data['status'] = $status; + } else { + $data['status'] = array(); + $data['status']['http_code'] = $status['http_code']; + } + + // Set the JSON data object contents, decoding it from JSON if possible. + $decoded_json = json_decode( $contents ); + $data['contents'] = str_replace( 'e(window).width()', 'window.innerWidth||e(window).width()', $decoded_json ? $decoded_json : $contents ); + + // Generate appropriate content-type header. + + $is_xhr = isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) ? strtolower( $_SERVER['HTTP_X_REQUESTED_WITH'] ) : 'xmlhttprequest'; + header( 'Content-type: application/' . ( $is_xhr ? 'json' : 'x-javascript' ) ); + + // Get JSONP callback. + $jsonp_callback = $enable_jsonp && isset( $_GET['callback'] ) ? $_GET['callback'] : null; + + // Generate JSON/JSONP string + $json = json_encode( $data ); + + print $jsonp_callback ? "$jsonp_callback($json)" : $json; + + } + + } + } + + new Redux_P(); + diff --git a/redux/ReduxCore/inc/class.redux_admin_notices.php b/redux/ReduxCore/inc/class.redux_admin_notices.php new file mode 100644 index 0000000..721f24a --- /dev/null +++ b/redux/ReduxCore/inc/class.redux_admin_notices.php @@ -0,0 +1,199 @@ +admin_notices[$parent->args['page_slug']][] = array( + 'type' => $type, + 'msg' => $msg, + 'id' => $id . '_' . $parent->args['opt_name'], + 'dismiss' => $dismiss, + 'color' => isset($color) ? $color : '#00A2E3' + ); + } + + /** + * adminNotices - Evaluates user dismiss option for displaying admin notices + * + * @since 3.2.0 + * @access public + * @return void + */ + public static function adminNotices($parent, $notices = array() ) { + global $current_user, $pagenow, $wp_version;; + + // Check for an active admin notice array + if ( ! empty( $notices ) ) { + + if (isset($_GET) && isset($_GET['page']) && $_GET['page'] == $parent->args['page_slug']) { + + // Enum admin notices + foreach ( $notices[$parent->args['page_slug']] as $notice ) { + + $add_style = ''; + if ( strpos( $notice['type'], 'redux-message' ) != false ) { + $add_style = 'style="border-left: 4px solid ' . esc_attr( $notice['color'] ) . '!important;"'; + } + + if ( true == $notice['dismiss'] ) { + + // Get user ID + $userid = $current_user->ID; + + if ( ! get_user_meta( $userid, 'ignore_' . $notice['id'] ) ) { + + // Check if we are on admin.php. If we are, we have + // to get the current page slug and tab, so we can + // feed it back to Wordpress. Why> admin.php cannot + // be accessed without the page parameter. We add the + // tab to return the user to the last panel they were + // on. + $pageName = ''; + $curTab = ''; + + if ( $pagenow == 'admin.php' || $pagenow == 'themes.php' ) { + + // Get the current page. To avoid errors, we'll set + // the redux page slug if the GET is empty. + $pageName = empty( $_GET['page'] ) ? '&page=' . $parent->args['page_slug'] : '&page=' . esc_attr( $_GET['page'] ); + + // Ditto for the current tab. + $curTab = empty( $_GET['tab'] ) ? '&tab=0' : '&tab=' . esc_attr( $_GET['tab'] ); + } + + // Print the notice with the dismiss link + if ( version_compare( $wp_version, '4.2', '>' ) ) { + $output = ""; + $css_id = esc_attr( $notice['id'] ) . $pageName . $curTab; + $css_class = esc_attr( $notice['type'] ) . ' redux-notice notice is-dismissible redux-notice'; + $output .= "
    \n"; + $nonce = wp_create_nonce( $notice['id'] . $userid . 'nonce' ); + $output .= " \n"; + $output .= '

    ' . wp_kses_post( $notice['msg'] ) . '

    '; + $output .= "
    \n"; + echo $output; + } else { + echo '

    ' . wp_kses_post( $notice['msg'] ) . '  ' . esc_html__( 'Dismiss', 'redux-framework' ) . '.

    '; + } + } + } else { + // Standard notice + echo '

    ' . wp_kses_post( $notice['msg'] ) . '.

    '; + } +?> + +admin_notices[$parent->args['opt_name']] = array(); + } + } + + /** + * dismissAdminNotice - Updates user meta to store dismiss notice preference + * + * @since 3.2.0 + * @access public + * @return void + */ + public static function dismissAdminNotice() { + global $current_user; + + // Verify the dismiss and id parameters are present. + if ( isset( $_GET['dismiss'] ) && isset( $_GET['id'] ) ) { + if ( 'true' == $_GET['dismiss'] || 'false' == $_GET['dismiss'] ) { + + // Get the user id + $userid = $current_user->ID; + + // Get the notice id + $id = esc_attr( $_GET['id'] ); + $val = esc_attr( $_GET['dismiss'] ); + + // Add the dismiss request to the user meta. + update_user_meta( $userid, 'ignore_' . $id, $val ); + } + } + } + + /** + * dismissAdminNotice - Updates user meta to store dismiss notice preference + * + * @since 3.2.0 + * @access public + * @return void + */ + public static function dismissAdminNoticeAJAX() { + global $current_user; + + // Get the notice id + $id = explode( '&', $_POST['id'] ); + $id = $id[0]; + // Get the user id + $userid = $current_user->ID; + + if ( ! wp_verify_nonce( $_POST['nonce'], $id . $userid . 'nonce' ) ) { + die( 0 ); + } else { + // Add the dismiss request to the user meta. + update_user_meta( $userid, 'ignore_' . $id, true ); + } + } + } + + Redux_Admin_Notices::load(); + } diff --git a/redux/ReduxCore/inc/class.redux_api.php b/redux/ReduxCore/inc/class.redux_api.php new file mode 100644 index 0000000..2a5af36 --- /dev/null +++ b/redux/ReduxCore/inc/class.redux_api.php @@ -0,0 +1,668 @@ +{$closure}->bindTo( $this ), $args ); + } + + public function __toString() { + return call_user_func( $this->{"__toString"}->bindTo( $this ) ); + } + + public static function load() { + add_action( 'after_setup_theme', array( 'Redux', 'createRedux' )); + add_action( 'init', array( 'Redux', 'createRedux' )); + add_action( 'switch_theme', array( 'Redux', 'createRedux' )); + } + + public static function init( $opt_name = "" ) { + if ( ! empty( $opt_name ) ) { + self::loadRedux( $opt_name ); + remove_action( 'setup_theme', array( 'Redux', 'createRedux' ) ); + } + } + + public static function loadExtensions( $ReduxFramework ) { + if ( $instanceExtensions = self::getExtensions( $ReduxFramework->args['opt_name'], "" ) ) { + foreach ( $instanceExtensions as $name => $extension ) { + if ( ! class_exists( $extension['class'] ) ) { + // In case you wanted override your override, hah. + $extension['path'] = apply_filters( 'redux/extension/' . $ReduxFramework->args['opt_name'] . '/' . $name, $extension['path'] ); + if ( file_exists( $extension['path'] ) ) { + require_once $extension['path']; + } + } + if ( ! isset( $ReduxFramework->extensions[ $name ] ) ) { + if ( class_exists( $extension['class'] ) ) { + $ReduxFramework->extensions[ $name ] = new $extension['class']( $ReduxFramework ); + //if (isset($ReduxFramework->extensions[ $name ]->min_redux_version)) { + //var_dump($ReduxFramework->extensions[ $name ]->min_redux_version); + //} + + } else { + echo '

    No class named ' . $extension['class'] . ' exists. Please verify your extension path.

    '; + } + + } + } + } + } + + public static function extensionPath( $extension, $folder = true ) { + if ( ! isset( Redux::$extensions[ $extension ] ) ) { + return; + } + $path = end( Redux::$extensions[ $extension ] ); + if ( ! $folder ) { + return $path; + } + + return str_replace( 'extension_' . $extension . '.php', '', $path ); + } + + + public static function loadRedux( $opt_name = "" ) { + + if ( empty( $opt_name ) ) { + return; + } + + $check = ReduxFrameworkInstances::get_instance( $opt_name ); + + if ( isset( $check->apiHasRun ) ) { + return; + } + + $args = self::constructArgs( $opt_name ); + $sections = self::constructSections( $opt_name ); + if ( ! class_exists( 'ReduxFramework' ) ) { + echo '

    Redux Framework is not installed. Please install it.

    '; + + return; + } + + if ( isset( self::$uses_extensions[ $opt_name ] ) && ! empty( self::$uses_extensions[ $opt_name ] ) ) { + add_action( "redux/extensions/{$opt_name}/before", array( 'Redux', 'loadExtensions' ), 0 ); + } + + $redux = new ReduxFramework( $sections, $args ); + $redux->apiHasRun = 1; + self::$init[ $opt_name ] = 1; + if ( isset( $redux->args['opt_name'] ) && $redux->args['opt_name'] != $opt_name ) { + self::$init[ $redux->args['opt_name'] ] = 1; + } + + } + + public static function createRedux() { + foreach ( self::$sections as $opt_name => $theSections ) { + if ( ! self::$init[ $opt_name ] ) { + self::loadRedux( $opt_name ); + } + } + } + + public static function constructArgs( $opt_name ) { + $args = isset( self::$args[ $opt_name ] ) ? self::$args[ $opt_name ] : array(); + + $args['opt_name'] = $opt_name; + if ( ! isset( $args['menu_title'] ) ) { + $args['menu_title'] = ucfirst( $opt_name ) . ' Options'; + } + if ( ! isset( $args['page_title'] ) ) { + $args['page_title'] = ucfirst( $opt_name ) . ' Options'; + } + if ( ! isset( $args['page_slug'] ) ) { + $args['page_slug'] = $opt_name . '_options'; + } + + return $args; + } + + public static function constructSections( $opt_name ) { + $sections = array(); + if ( ! isset( self::$sections[ $opt_name ] ) ) { + return $sections; + + } + foreach ( self::$sections[ $opt_name ] as $section_id => $section ) { + $section['fields'] = self::constructFields( $opt_name, $section_id ); + $p = $section['priority']; + while ( isset( $sections[ $p ] ) ) { + $p++; + } + $sections[ $p ] = $section; + } + ksort( $sections ); + + return $sections; + } + + public static function constructFields( $opt_name = "", $section_id = "" ) { + $fields = array(); + if ( ! empty( self::$fields[ $opt_name ] ) ) { + foreach ( self::$fields[ $opt_name ] as $key => $field ) { + if ( $field['section_id'] == $section_id ) { + $p = $field['priority']; + while ( isset( $fields[ $p ] ) ) { + echo $p ++; + } + $fields[ $p ] = $field; + } + } + } + ksort( $fields ); + + return $fields; + } + + public static function getSection( $opt_name = '', $id = '' ) { + self::check_opt_name( $opt_name ); + if ( ! empty( $opt_name ) && ! empty( $id ) ) { + if ( ! isset( self::$sections[ $opt_name ][ $id ] ) ) { + $id = strtolower( sanitize_html_class( $id ) ); + } + + return isset( self::$sections[ $opt_name ][ $id ] ) ? self::$sections[ $opt_name ][ $id ] : false; + } + + return false; + } + + public static function setSections( $opt_name = '', $sections = array() ) { + self::check_opt_name( $opt_name ); + if ( ! empty( $sections ) ) { + foreach ( $sections as $section ) { + Redux::setSection( $opt_name, $section ); + } + } + } + + public static function getSections( $opt_name = '' ) { + self::check_opt_name( $opt_name ); + if ( ! empty( self::$sections[ $opt_name ] ) ) { + return self::$sections[ $opt_name ]; + } + + return array(); + } + + public static function removeSection( $opt_name = '', $id = "", $fields = false ) { + if ( ! empty( $opt_name ) && ! empty( $id ) ) { + if ( isset( self::$sections[ $opt_name ][ $id ] ) ) { + $priority = ''; + + foreach ( self::$sections[ $opt_name ] as $key => $section ) { + if ( $key == $id ) { + $priority = $section['priority']; + self::$priority[ $opt_name ]['sections'] --; + unset( self::$sections[ $opt_name ][ $id ] ); + continue; + } + if ( $priority != "" ) { + $newPriority = $section['priority']; + $section['priority'] = $priority; + self::$sections[ $opt_name ][ $key ] = $section; + $priority = $newPriority; + } + } + + if ( isset( self::$fields[ $opt_name ] ) && ! empty( self::$fields[ $opt_name ] ) && $fields == true ) { + foreach ( self::$fields[ $opt_name ] as $key => $field ) { + if ( $field['section_id'] == $id ) { + unset( self::$fields[ $opt_name ][ $key ] ); + } + } + } + } + } + } + + public static function setSection( $opt_name = '', $section = array() ) { + + self::check_opt_name( $opt_name ); + if ( empty( $section ) ) { + return; + } + if ( ! isset( $section['id'] ) ) { + if ( isset( $section['type'] ) && $section['type'] == "divide" ) { + $section['id'] = time(); + } else { + if ( isset( $section['title'] ) ) { + $section['id'] = strtolower( sanitize_title( $section['title'] ) ); + } else { + $section['id'] = time(); + } + } + if ( ! isset( $section['id'] ) ) { + print_r( $section ); + echo "DOVY"; + } + + if ( isset( self::$sections[ $opt_name ][ $section['id'] ] ) ) { + $orig = $section['id']; + $i = 0; + while ( isset( self::$sections[ $opt_name ][ $section['id'] ] ) ) { + $section['id'] = $orig . '_' . $i; + + $i ++; + } + } + } + + if ( ! empty( $opt_name ) && is_array( $section ) && ! empty( $section ) ) { + if ( ! isset( $section['id'] ) && ! isset( $section['title'] ) ) { + self::$errors[ $opt_name ]['section']['missing_title'] = "Unable to create a section due to missing id and title."; + + return; + } + if ( ! isset( $section['priority'] ) ) { + $section['priority'] = self::getPriority( $opt_name, 'sections' ); + } + if ( isset( $section['fields'] ) ) { + if ( ! empty( $section['fields'] ) && is_array( $section['fields'] ) ) { + self::processFieldsArray( $opt_name, $section['id'], $section['fields'] ); + } + unset( $section['fields'] ); + } + self::$sections[ $opt_name ][ $section['id'] ] = $section; + } else { + self::$errors[ $opt_name ]['section']['empty'] = "Unable to create a section due an empty section array or the section variable passed was not an array."; + + return; + } + } + + public static function hideSection( $opt_name = '', $id = '', $hide = true ) { + self::check_opt_name( $opt_name ); + + if ( ! empty( $opt_name ) && ! empty( $id ) ) { + if ( isset ( self::$sections[ $opt_name ][ $id ] ) ) { + self::$sections[ $opt_name ][ $id ]['hidden'] = $hide; + } + } + } + + public static function processFieldsArray( $opt_name = "", $section_id = "", $fields = array() ) { + if ( ! empty( $opt_name ) && ! empty( $section_id ) && is_array( $fields ) && ! empty( $fields ) ) { + foreach ( $fields as $field ) { + if ( ! is_array( $field ) ) { + continue; + } + $field['section_id'] = $section_id; + self::setField( $opt_name, $field ); + } + } + } + + public static function getField( $opt_name = '', $id = '' ) { + self::check_opt_name( $opt_name ); + if ( ! empty( $opt_name ) && ! empty( $id ) ) { + return isset( self::$fields[ $opt_name ][ $id ] ) ? self::$fields[ $opt_name ][ $id ] : false; + } + + return false; + } + + public static function hideField( $opt_name = '', $id = '', $hide = true ) { + self::check_opt_name( $opt_name ); + + if ( ! empty( $opt_name ) && ! empty( $id ) ) { + if ( isset ( self::$fields[ $opt_name ][ $id ] ) ) { + if ( ! $hide ) { + self::$fields[ $opt_name ][ $id ]['class'] = str_replace( 'hidden', '', self::$fields[ $opt_name ][ $id ]['class'] ); + } else { + self::$fields[ $opt_name ][ $id ]['class'] .= 'hidden'; + } + } + } + } + + public static function setField( $opt_name = '', $field = array() ) { + self::check_opt_name( $opt_name ); + + if ( ! empty( $opt_name ) && is_array( $field ) && ! empty( $field ) ) { + + if ( ! isset( $field['priority'] ) ) { + $field['priority'] = self::getPriority( $opt_name, 'fields' ); + } + if ( isset( $field['id'] ) ) { + self::$fields[ $opt_name ][ $field['id'] ] = $field; + } + } + } + + public static function removeField( $opt_name = '', $id = '' ) { + self::check_opt_name( $opt_name ); + + if ( ! empty( $opt_name ) && ! empty( $id ) ) { + if ( isset( self::$fields[ $opt_name ][ $id ] ) ) { + foreach ( self::$fields[ $opt_name ] as $key => $field ) { + if ( $key == $id ) { + $priority = $field['priority']; + self::$priority[ $opt_name ]['fields'] --; + unset( self::$fields[ $opt_name ][ $id ] ); + continue; + } + if ( isset( $priority ) && $priority != "" ) { + $newPriority = $field['priority']; + $field['priority'] = $priority; + self::$fields[ $opt_name ][ $key ] = $field; + $priority = $newPriority; + } + } + } + } + + return false; + } + + public static function setHelpTab( $opt_name = "", $tab = array() ) { + self::check_opt_name( $opt_name ); + if ( ! empty( $opt_name ) && ! empty( $tab ) ) { + if ( ! isset( self::$args[ $opt_name ]['help_tabs'] ) ) { + self::$args[ $opt_name ]['help_tabs'] = array(); + } + if ( isset( $tab['id'] ) ) { + self::$args[ $opt_name ]['help_tabs'][] = $tab; + } else if ( is_array( end( $tab ) ) ) { + foreach ( $tab as $tab_item ) { + self::$args[ $opt_name ]['help_tabs'][] = $tab_item; + } + } + } + } + + public static function setHelpSidebar( $opt_name = "", $content = "" ) { + self::check_opt_name( $opt_name ); + if ( ! empty( $opt_name ) && ! empty( $content ) ) { + self::$args[ $opt_name ]['help_sidebar'] = $content; + } + } + + public static function setArgs( $opt_name = "", $args = array() ) { + self::check_opt_name( $opt_name ); + if ( ! empty( $opt_name ) && ! empty( $args ) && is_array( $args ) ) { + if ( isset( self::$args[ $opt_name ] ) && isset( self::$args[ $opt_name ]['clearArgs'] ) ) { + self::$args[ $opt_name ] = array(); + } + self::$args[ $opt_name ] = wp_parse_args( $args, self::$args[ $opt_name ] ); + } + } + + public static function getArgs( $opt_name = "" ) { + self::check_opt_name( $opt_name ); + if ( ! empty( $opt_name ) && ! empty( self::$args[ $opt_name ] ) ) { + return self::$args[ $opt_name ]; + } + } + + public static function getArg( $opt_name = "", $key = "" ) { + self::check_opt_name( $opt_name ); + if ( ! empty( $opt_name ) && ! empty( $key ) && ! empty( self::$args[ $opt_name ] ) ) { + return self::$args[ $opt_name ][ $key ]; + } else { + return; + } + } + + public static function getOption( $opt_name = "", $key = "" ) { + self::check_opt_name( $opt_name ); + + if ( ! empty( $opt_name ) && ! empty( $key ) ) { + $redux = get_option( $opt_name ); + + if ( isset( $redux[ $key ] ) ) { + return $redux[ $key ]; + } else { + return; + } + } else { + return; + } + } + + public static function setOption( $opt_name = "", $key = "", $option = "" ) { + self::check_opt_name( $opt_name ); + + if ( ! empty( $opt_name ) && ! empty( $key ) ) { + $redux = get_option( $opt_name ); + $redux[ $key ] = $option; + + return update_option( $opt_name, $redux ); + } else { + return false; + } + } + + public static function getPriority( $opt_name, $type ) { + $priority = self::$priority[ $opt_name ][ $type ]; + self::$priority[ $opt_name ][ $type ] += 1; + + return $priority; + } + + public static function check_opt_name( $opt_name = "" ) { + if ( empty( $opt_name ) || is_array( $opt_name ) ) { + return; + } + if ( ! isset( self::$sections[ $opt_name ] ) ) { + self::$sections[ $opt_name ] = array(); + self::$priority[ $opt_name ]['sections'] = 1; + } + if ( ! isset( self::$args[ $opt_name ] ) ) { + self::$args[ $opt_name ] = array(); + self::$priority[ $opt_name ]['args'] = 1; + } + if ( ! isset( self::$fields[ $opt_name ] ) ) { + self::$fields[ $opt_name ] = array(); + self::$priority[ $opt_name ]['fields'] = 1; + } + if ( ! isset( self::$help[ $opt_name ] ) ) { + self::$help[ $opt_name ] = array(); + self::$priority[ $opt_name ]['help'] = 1; + } + if ( ! isset( self::$errors[ $opt_name ] ) ) { + self::$errors[ $opt_name ] = array(); + } + if ( ! isset( self::$init[ $opt_name ] ) ) { + self::$init[ $opt_name ] = false; + } + } + + /** + * Retrieve metadata from a file. Based on WP Core's get_file_data function + * + * @since 2.1.1 + * + * @param string $file Path to the file + * + * @return string + */ + public static function getFileVersion( $file ) { + $data = get_file_data( $file, array( 'version' ), 'plugin' ); + + return $data[0]; + } + + public static function checkExtensionClassFile( $opt_name, $name = "", $class_file = "", $instance = "" ) { + if ( file_exists( $class_file ) ) { + + self::$uses_extensions[ $opt_name ] = isset( self::$uses_extensions[ $opt_name ] ) ? self::$uses_extensions[ $opt_name ] : array(); + if ( ! in_array( $name, self::$uses_extensions[ $opt_name ] ) ) { + self::$uses_extensions[ $opt_name ][] = $name; + } + + self::$extensions[ $name ] = isset( self::$extensions[ $name ] ) ? self::$extensions[ $name ] : array(); + $version = Redux_Helpers::get_template_version( $class_file ); + if ( empty( $version ) && ! empty( $instance ) ) { + if ( isset( $instance->version ) ) { + $version = $instance->version; + } + } + self::$extensions[ $name ][ $version ] = isset( self::$extensions[ $name ][ $version ] ) ? self::$extensions[ $name ][ $version ] : $class_file; + + $api_check = str_replace( 'extension_' . $name, $name . '_api', $class_file ); + if ( file_exists( $api_check ) && ! class_exists( 'Redux_' . ucfirst( $name ) ) ) { + include_once( $api_check ); + } + } + } + + public static function setExtensions( $opt_name, $path ) { + if ( is_dir( $path ) ) { + $path = trailingslashit( $path ); + $folder = str_replace( '.php', '', basename( $path ) ); + if ( file_exists( $path . 'extension_' . $folder . '.php' ) ) { + self::checkExtensionClassFile( $opt_name, $folder, $path . 'extension_' . $folder . '.php' ); + } else { + $folders = scandir( $path, 1 ); + foreach ( $folders as $folder ) { + if ( $folder === '.' or $folder === '..' or $folder[0] == "." ) { + continue; + } + if ( file_exists( $path . $folder . '/extension_' . $folder . '.php' ) ) { + self::checkExtensionClassFile( $opt_name, $folder, $path . $folder . '/extension_' . $folder . '.php' ); + } else if ( is_dir( $path . $folder ) ) { + self::setExtensions( $opt_name, $path . $folder ); + continue; + } + } + } + } else if ( file_exists( $path ) ) { + $name = explode( 'extension_', basename( $path ) ); + if ( isset( $name[1] ) && ! empty( $name[1] ) ) { + $name = str_replace( '.php', '', $name[1] ); + self::checkExtensionClassFile( $opt_name, $name, $path ); + } + } + } + + /** + * Method to disables Redux demo mode popup. + */ + public static function disable_demo() { + add_action('ReduxFrameworkPlugin_admin_notice', 'Redux::remove_demo', 0); + add_action('redux_framework_plugin_admin_notice', 'Redux::remove_demo', 0); + } + + /** + * Callback used by Redux::disable_demo() to remove the demo mode notice from Redux. + */ + function remove_demo() { + update_option('ReduxFrameworkPlugin_ACTIVATED_NOTICES', ''); + } + + public static function getAllExtensions() { + $redux = ReduxFrameworkInstances::get_all_instances(); + foreach ( $redux as $instance ) { + if ( ! empty( self::$uses_extensions[ $instance['args']['opt_name'] ] ) ) { + continue; + } + if ( ! empty( $instance['extensions'] ) ) { + + Redux::getInstanceExtensions( $instance['args']['opt_name'], $instance ); + } + } + } + + public static function getInstanceExtensions( $opt_name, $instance = array() ) { + if ( ! empty( self::$uses_extensions[ $opt_name ] ) ) { + return; + } + if ( empty( $instance ) ) { + $instance = ReduxFrameworkInstances::get_instance( $opt_name ); + } + if ( empty( $instance ) || empty( $instance->extensions ) ) { + return; + } + foreach ( $instance->extensions as $name => $extension ) { + if ( $name == "widget_areas" ) { + $new = new Redux_Widget_Areas( $instance ); + } + if ( isset( self::$uses_extensions[ $opt_name ][ $name ] ) ) { + continue; + } + if ( isset( $extension->extension_dir ) ) { + Redux::setExtensions( $opt_name, str_replace( $name, '', $extension->extension_dir ) ); + + } else if ( isset( $extension->_extension_dir ) ) { + Redux::setExtensions( $opt_name, str_replace( $name, '', $extension->_extension_dir ) ); + } + } + } + + public static function getExtensions( $opt_name = "", $key = "" ) { + + if ( empty( $opt_name ) ) { + Redux::getAllExtensions(); + if ( empty( $key ) ) { + return self::$extension_paths; + } else { + if ( isset( self::$extension_paths[ $key ] ) ) { + return self::$extension_paths[ $key ]; + } + } + } else { + if ( empty( self::$uses_extensions[ $opt_name ] ) ) { + Redux::getInstanceExtensions( $opt_name ); + } + + if ( empty( self::$uses_extensions[ $opt_name ] ) ) { + return false; + } + $instanceExtensions = array(); + foreach ( self::$uses_extensions[ $opt_name ] as $extension ) { + $class_file = end( self::$extensions[ $extension ] ); + $name = str_replace( '.php', '', basename( $extension ) ); + $extension_class = 'ReduxFramework_Extension_' . $name; + $instanceExtensions[ $extension ] = array( + 'path' => $class_file, + 'class' => $extension_class, + 'version' => Redux_Helpers::get_template_version( $class_file ) + ); + } + + return $instanceExtensions; + } + + return false; + } + } + + Redux::load(); + } diff --git a/redux/ReduxCore/inc/class.redux_cdn.php b/redux/ReduxCore/inc/class.redux_cdn.php new file mode 100644 index 0000000..35c53db --- /dev/null +++ b/redux/ReduxCore/inc/class.redux_cdn.php @@ -0,0 +1,164 @@ +args['dev_mode'] ) { + $msg = sprintf( __( 'If you are developing offline, please download and install the Redux Vendor Support plugin/extension to bypass the our CDN and avoid this warning', 'redux-framework' ), 'https://github.com/reduxframework/redux-vendor-support' ); + } + + $msg = '' . __( 'Redux Framework Warning', 'redux-framework' ) . '
    ' . sprintf( __( '%s CDN unavailable. Some controls may not render properly.', 'redux-framework' ), $handle ) . ' ' . $msg; + + $data = array( + 'parent' => self::$_parent, + 'type' => 'error', + 'msg' => $msg, + 'id' => $handle . $tran_key, + 'dismiss' => false + ); + + Redux_Admin_Notices::set_notice($data); + } + } + } else { + set_transient( $handle . $tran_key, true, MINUTE_IN_SECONDS * self::$_parent->args['cdn_check_time'] ); + + if ( $register ) { + self::_register( $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script ); + } else { + self::_enqueue( $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script ); + } + } + } + } + + private static function _vendor_plugin( $register, $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script = true ) { + if ( class_exists( 'Redux_VendorURL' ) ) { + $src = Redux_VendorURL::get_url( $handle ); + + if ( $register ) { + self::_register( $handle, $src, $deps, $ver, $footer_or_media, $is_script ); + } else { + self::_enqueue( $handle, $src, $deps, $ver, $footer_or_media, $is_script ); + } + } else { + if ( ! self::$_set ) { + $msg = sprintf( __( 'The Vendor Support plugin (or extension) is either not installed or not activated and thus, some controls may not render properly. Please ensure that it is installed and activated', 'redux-framework' ), 'https://github.com/reduxframework/redux-vendor-support', admin_url( 'plugins.php' ) ); + + $data = array( + 'parent' => self::$_parent, + 'type' => 'error', + 'msg' => $msg, + 'id' => $handle, + 'dismiss' => false + ); + + Redux_Admin_Notices::set_notice($data); + + self::$_set = true; + } + } + } + + public static function register_style( $handle, $src_cdn = false, $deps = array(), $ver = false, $media = 'all' ) { + if ( self::$_parent->args['use_cdn'] ) { + self::_cdn( true, $handle, $src_cdn, $deps, $ver, $media, $is_script = false ); + } else { + self::_vendor_plugin( true, $handle, $src_cdn, $deps, $ver, $media, $is_script = false ); + } + } + + public static function register_script( $handle, $src_cdn = false, $deps = array(), $ver = false, $in_footer = false ) { + if ( self::$_parent->args['use_cdn'] ) { + self::_cdn( true, $handle, $src_cdn, $deps, $ver, $in_footer, $is_script = true ); + } else { + self::_vendor_plugin( true, $handle, $src_cdn, $deps, $ver, $in_footer, $is_script = true ); + } + } + + public static function enqueue_style( $handle, $src_cdn = false, $deps = array(), $ver = false, $media = 'all' ) { + if ( self::$_parent->args['use_cdn'] ) { + self::_cdn( false, $handle, $src_cdn, $deps, $ver, $media, $is_script = false ); + } else { + self::_vendor_plugin( false, $handle, $src_cdn, $deps, $ver, $media, $is_script = false ); + } + } + + public static function enqueue_script( $handle, $src_cdn = false, $deps = array(), $ver = false, $in_footer = false ) { + if ( self::$_parent->args['use_cdn'] ) { + self::_cdn( false, $handle, $src_cdn, $deps, $ver, $in_footer, $is_script = true ); + } else { + self::_vendor_plugin( false, $handle, $src_cdn, $deps, $ver, $in_footer, $is_script = true ); + } + } + } + } diff --git a/redux/ReduxCore/inc/class.redux_filesystem.php b/redux/ReduxCore/inc/class.redux_filesystem.php new file mode 100644 index 0000000..db7c9d7 --- /dev/null +++ b/redux/ReduxCore/inc/class.redux_filesystem.php @@ -0,0 +1,307 @@ +parent = $parent; + } + + return self::$instance; + } + + public function ftp_form() { + if ( isset( $this->parent->ftp_form ) && ! empty( $this->parent->ftp_form ) ) { + echo '

    '; + echo '' . __( 'File Permission Issues', 'redux-framework' ) . '
    ' . sprintf( __( 'We were unable to modify required files. Please ensure that %1s has the proper read-write permissions, or modify your wp-config.php file to contain your FTP login credentials as outlined here.', 'redux-framework' ), Redux_Helpers::cleanFilePath( trailingslashit( WP_CONTENT_DIR ) ) . '/uploads/', 'https://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants' ); + echo '

    ' . '
    '; + } + } + + function filesystem_init( $form_url, $method = '', $context = false, $fields = null ) { + global $wp_filesystem; + + if ( ! empty( $this->creds ) ) { + return true; + } + + ob_start(); + + /* first attempt to get credentials */ + if ( false === ( $this->creds = request_filesystem_credentials( $form_url, $method, false, $context ) ) ) { + $this->creds = array(); + $this->parent->ftp_form = ob_get_contents(); + ob_end_clean(); + + /** + * if we comes here - we don't have credentials + * so the request for them is displaying + * no need for further processing + **/ + + return false; + } + + /* now we got some credentials - try to use them*/ + if ( ! WP_Filesystem( $this->creds ) ) { + $this->creds = array(); + /* incorrect connection data - ask for credentials again, now with error message */ + request_filesystem_credentials( $form_url, '', true, $context ); + $this->parent->ftp_form = ob_get_contents(); + ob_end_clean(); + + return false; + } + + return true; + } + + public static function load_direct() { + if ( self::$direct === null ) { + require_once ABSPATH . '/wp-admin/includes/class-wp-filesystem-base.php'; + require_once ABSPATH . '/wp-admin/includes/class-wp-filesystem-direct.php'; + self::$direct = new WP_Filesystem_Direct( array() ); + } + } + + public function execute( $action, $file = '', $params = '' ) { + + if ( empty( $this->parent->args ) ) { + return; + } + + if ( ! empty ( $params ) ) { + extract( $params ); + } + + // Setup the filesystem with creds + require_once ABSPATH . '/wp-admin/includes/template.php'; + require_once ABSPATH . '/wp-includes/pluggable.php'; + require_once ABSPATH . '/wp-admin/includes/file.php'; + + if ( $this->parent->args['menu_type'] == 'submenu' ) { + $page_parent = $this->parent->args['page_parent']; + $base = $page_parent . '?page=' . $this->parent->args['page_slug']; + } else { + $base = 'admin.php?page=' . $this->parent->args['page_slug']; + } + + $url = wp_nonce_url( $base, 'redux-options' ); + + $this->filesystem_init( $url, 'direct', dirname( $file ) ); + + if ( ! file_exists( ReduxFramework::$_upload_dir ) ) { + $this->do_action( 'mkdir', ReduxFramework::$_upload_dir ); + } + + $hash_path = trailingslashit( ReduxFramework::$_upload_dir ) . 'hash'; + if ( ! file_exists( $hash_path ) ) { + $this->do_action( 'put_contents', $hash_path, array( + 'content' => md5( network_site_url() . '-' . $_SERVER['REMOTE_ADDR'] ) + ) + ); + } + $version_path = trailingslashit( ReduxFramework::$_upload_dir ) . 'version'; + if ( ! file_exists( $version_path ) ) { + $this->do_action( 'put_contents', $version_path, array( + 'content' => ReduxFramework::$_version + ) + ); + } + + $index_path = trailingslashit( ReduxFramework::$_upload_dir ) . 'index.php'; + if ( ! file_exists( $index_path ) ) { + $this->do_action( 'put_contents', $index_path, array( + 'content' => 'do_action( $action, $file, $params ); + } + + public function do_action( $action, $file = '', $params = '' ) { + + if ( ! empty ( $params ) ) { + extract( $params ); + } + + global $wp_filesystem; + + if ( ! isset( $params['chmod'] ) || ( isset( $params['chmod'] ) && empty( $params['chmod'] ) ) ) { + if ( defined( 'FS_CHMOD_FILE' ) ) { + $chmod = FS_CHMOD_FILE; + } else { + $chmod = 0644; + } + } + $res = false; + if ( ! isset( $recursive ) ) { + $recursive = false; + } + + //$target_dir = $wp_filesystem->find_folder( dirname( $file ) ); + + // Do unique stuff + if ( $action == 'mkdir' ) { + + if ( defined( 'FS_CHMOD_DIR' ) ) { + $chmod = FS_CHMOD_DIR; + } else { + $chmod = 0755; + } + $res = $wp_filesystem->mkdir( $file ); + if ( ! $res ) { + wp_mkdir_p( $file ); + + $res = file_exists( $file ); + if ( ! $res ) { + mkdir( $file, $chmod, true ); + $res = file_exists( $file ); + } + } + $index_path = trailingslashit( $file ) . 'index.php'; + if ( ! file_exists( $index_path ) ) { + $wp_filesystem->put_contents( + $index_path, + 'rmdir( $file, $recursive ); + } elseif ( $action == 'copy' && ! isset( $this->filesystem->killswitch ) ) { + if ( isset( $this->parent->ftp_form ) && ! empty( $this->parent->ftp_form ) ) { + $res = copy( $file, $destination ); + if ( $res ) { + chmod( $destination, $chmod ); + } + } else { + $res = $wp_filesystem->copy( $file, $destination, $overwrite, $chmod ); + } + } elseif ( $action == 'move' && ! isset( $this->filesystem->killswitch ) ) { + $res = $wp_filesystem->copy( $file, $destination, $overwrite ); + } elseif ( $action == 'delete' ) { + $res = $wp_filesystem->delete( $file, $recursive ); + } elseif ( $action == 'rmdir' ) { + $res = $wp_filesystem->rmdir( $file, $recursive ); + } elseif ( $action == 'dirlist' ) { + if ( ! isset( $include_hidden ) ) { + $include_hidden = true; + } + $res = $wp_filesystem->dirlist( $file, $include_hidden, $recursive ); + } elseif ( $action == 'put_contents' && ! isset( $this->filesystem->killswitch ) ) { + // Write a string to a file + if ( isset( $this->parent->ftp_form ) && ! empty( $this->parent->ftp_form ) ) { + self::load_direct(); + $res = self::$direct->put_contents( $file, $content, $chmod ); + } else { + $res = $wp_filesystem->put_contents( $file, $content, $chmod ); + } + } elseif ( $action == 'chown' ) { + // Changes file owner + if ( isset( $owner ) && ! empty( $owner ) ) { + $res = $wp_filesystem->chmod( $file, $chmod, $recursive ); + } + } elseif ( $action == 'owner' ) { + // Gets file owner + $res = $wp_filesystem->owner( $file ); + } elseif ( $action == 'chmod' ) { + + if ( ! isset( $params['chmod'] ) || ( isset( $params['chmod'] ) && empty( $params['chmod'] ) ) ) { + $chmod = false; + } + + $res = $wp_filesystem->chmod( $file, $chmod, $recursive ); + + } elseif ( $action == 'get_contents' ) { + // Reads entire file into a string + if ( isset( $this->parent->ftp_form ) && ! empty( $this->parent->ftp_form ) ) { + self::load_direct(); + $res = self::$direct->get_contents( $file ); + } else { + $res = $wp_filesystem->get_contents( $file ); + } + } elseif ( $action == 'get_contents_array' ) { + // Reads entire file into an array + $res = $wp_filesystem->get_contents_array( $file ); + } elseif ( $action == 'object' ) { + $res = $wp_filesystem; + } elseif ( $action == 'unzip' ) { + $unzipfile = unzip_file( $file, $destination ); + if ( $unzipfile ) { + $res = true; + } + } + + if ( ! $res ) { + if ( $action == 'dirlist' ) { + if ( empty( $res ) || $res == false || $res == '' ) { + return; + } + + if ( is_array( $res ) && empty( $res ) ) { + return; + } + + if ( ! is_array( $res ) ) { + if ( count( glob( "$file*" ) ) == 0 ) { + return; + } + } + } + + $this->killswitch = true; + + $msg = '' . __( 'File Permission Issues', 'redux-framework' ) . '
    ' . sprintf( __( 'We were unable to modify required files. Please ensure that %1s has the proper read-write permissions, or modify your wp-config.php file to contain your FTP login credentials as outlined here.', 'redux-framework' ), Redux_Helpers::cleanFilePath( trailingslashit( WP_CONTENT_DIR ) ) . '/uploads/', 'https://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants' ); + + $data = array( + 'parent' => self::$instance->parent, + 'type' => 'error', + 'msg' => $msg, + 'id' => 'redux-wp-login', + 'dismiss' => false + ); + + Redux_Admin_Notices::set_notice($data); + } + + return $res; + } + } + + Redux_Filesystem::get_instance(); + } diff --git a/redux/ReduxCore/inc/class.redux_functions.php b/redux/ReduxCore/inc/class.redux_functions.php new file mode 100644 index 0000000..1f3ee45 --- /dev/null +++ b/redux/ReduxCore/inc/class.redux_functions.php @@ -0,0 +1,269 @@ +args['dev_mode'] ) { + $min = '.min'; + } + + return $min; + } + + /** + * Sets a cookie. + * Do nothing if unit testing. + * + * @since 3.5.4 + * @access public + * @return void + * + * @param string $name The cookie name. + * @param string $value The cookie value. + * @param integer $expire Expiry time. + * @param string $path The cookie path. + * @param string $domain The cookie domain. + * @param boolean $secure HTTPS only. + * @param boolean $httponly Only set cookie on HTTP calls. + */ + public static function setCookie( $name, $value, $expire = 0, $path='', $domain = null, $secure = false, $httponly = false ) { + if ( ! defined( 'WP_TESTS_DOMAIN' ) ) { + setcookie( $name, $value, $expire, $path, $domain, $secure, $httponly ); + } + } + + /** + * Parse CSS from output/compiler array + * + * @since 3.2.8 + * @access private + * @return $css CSS string + */ + public static function parseCSS( $cssArray = array(), $style = '', $value = '' ) { + + // Something wrong happened + if ( count( $cssArray ) == 0 ) { + return; + } else { //if ( count( $cssArray ) >= 1 ) { + $css = ''; + + foreach ( $cssArray as $element => $selector ) { + + // The old way + if ( $element === 0 ) { + $css = self::theOldWay( $cssArray, $style ); + + return $css; + } + + // New way continued + $cssStyle = $element . ':' . $value . ';'; + + $css .= $selector . '{' . $cssStyle . '}'; + } + } + + return $css; + } + + private static function theOldWay( $cssArray, $style ) { + $keys = implode( ",", $cssArray ); + $css = $keys . "{" . $style . '}'; + + return $css; + } + + /** + * initWpFilesystem - Initialized the Wordpress filesystem, if it already isn't. + * + * @since 3.2.3 + * @access public + * @return void + */ + public static function initWpFilesystem() { + global $wp_filesystem; + + // Initialize the Wordpress filesystem, no more using file_put_contents function + if ( empty( $wp_filesystem ) ) { + require_once ABSPATH . '/wp-includes/pluggable.php'; + require_once ABSPATH . '/wp-admin/includes/file.php'; + WP_Filesystem(); + } + } + + /** + * verFromGit - Retrives latest Redux version from GIT + * + * @since 3.2.0 + * @access private + * @return string $ver + */ + private static function verFromGit() { + // Get the raw framework.php from github + $gitpage = wp_remote_get( + 'https://raw.github.com/ReduxFramework/redux-framework/master/ReduxCore/framework.php', array( + 'headers' => array( + 'Accept-Encoding' => '' + ), + 'sslverify' => true, + 'timeout' => 300 + ) ); + + // Is the response code the corect one? + if ( ! is_wp_error( $gitpage ) ) { + if ( isset( $gitpage['body'] ) ) { + // Get the page text. + $body = $gitpage['body']; + + // Find version line in framework.php + $needle = 'public static $_version ='; + $pos = strpos( $body, $needle ); + + // If it's there, continue. We don't want errors if $pos = 0. + if ( $pos > 0 ) { + + // Look for the semi-colon at the end of the version line + $semi = strpos( $body, ";", $pos ); + + // Error avoidance. If the semi-colon is there, continue. + if ( $semi > 0 ) { + + // Extract the version line + $text = substr( $body, $pos, ( $semi - $pos ) ); + + // Find the first quote around the veersion number. + $quote = strpos( $body, "'", $pos ); + + // Extract the version number + $ver = substr( $body, $quote, ( $semi - $quote ) ); + + // Strip off quotes. + $ver = str_replace( "'", '', $ver ); + + return $ver; + } + } + } + } + } + + /** + * updateCheck - Checks for updates to Redux Framework + * + * @since 3.2.0 + * @access public + * + * @param string $curVer Current version of Redux Framework + * + * @return void - Admin notice is diaplyed if new version is found + */ + public static function updateCheck( $parent, $curVer ) { + + // If no cookie, check for new ver + if ( ! isset( $_COOKIE['redux_update_check'] ) ) { // || 1 == strcmp($_COOKIE['redux_update_check'], self::$_version)) { + // actual ver number from git repo + $ver = self::verFromGit(); + + // hour long cookie. + setcookie( "redux_update_check", $ver, time() + 3600, '/' ); + } else { + + // saved value from cookie. If it's different from current ver + // we can still show the update notice. + $ver = $_COOKIE['redux_update_check']; + } + + // Set up admin notice on new version + //if ( 1 == strcmp( $ver, $curVer ) ) { + if ( version_compare( $ver, $curVer, '>' ) ) { + $msg = 'A new build of Redux is now available!

    Your version: ' . $curVer . '
    New version: ' . $ver . '

    If you are not a developer, your theme/plugin author shipped with dev_mode on. Contact them to fix it, but in the meantime you can use our dev_mode disabler.

    Get it now  |'; + + $data = array( + 'parent' => $parent, + 'type' => 'updated', + 'msg' => $msg, + 'id' => 'dev_notice_' . $ver, + 'dismiss' => true + ); + + Redux_Admin_Notices::set_notice($data); + } + } + + public static function tru( $string, $opt_name ) { + $redux = ReduxFrameworkInstances::get_instance( $opt_name ); + $check = get_user_option( 'r_tru_u_x', array() ); + if ( ! empty( $check ) && ( isset( $check['expires'] ) < time() ) ) { + $check = array(); + } + + //if ( isset( $redux->args['dev_mode'] ) && $redux->args['dev_mode'] == true && ! ( isset( $redux->args['forced_dev_mode_off'] ) && $redux->args['forced_dev_mode_off'] == true ) ) { + if ( isset( $redux->args['dev_mode'] ) && $redux->args['dev_mode'] == true ) { + update_user_option( get_current_user_id(), 'r_tru_u_x', array( + 'id' => '', + 'expires' => 60 * 60 * 24 + ) ); + return apply_filters( 'redux/' . $opt_name . '/aURL_filter', '' ); + } else { + + if ( empty( $check ) ) { + $check = @wp_remote_get( 'http://look.redux.io/status.php?p=' . ReduxFramework::$_is_plugin ); + $check = json_decode( wp_remote_retrieve_body( $check ), true ); + + if ( ! empty( $check ) && isset( $check['id'] ) ) { + update_user_option( get_current_user_id(), 'r_tru_u_x', $check ); + } + } + $check = isset( $check['id'] ) ? $check['id'] : $check; + if ( ! empty( $check ) ) { + return apply_filters( 'redux/' . $opt_name . '/aURL_filter', '' ); + } else { + return ""; + } + } + } + + public static function dat($fname, $opt_name){ + $name = apply_filters('redux/' . $opt_name . '/aDBW_filter', $fname); + + return $name; + } + + public static function bub($fname, $opt_name){ + $name = apply_filters('redux/' . $opt_name . '/aNF_filter', $fname); + + return $name; + } + + public static function yo($fname, $opt_name){ + $name = apply_filters('redux/' . $opt_name . '/aNFM_filter', $fname); + + return $name; + } + } + } diff --git a/redux/ReduxCore/inc/class.redux_helpers.php b/redux/ReduxCore/inc/class.redux_helpers.php new file mode 100644 index 0000000..b135f33 --- /dev/null +++ b/redux/ReduxCore/inc/class.redux_helpers.php @@ -0,0 +1,776 @@ +sections as $k => $section ) { + if ( ! isset( $section['title'] ) ) { + continue; + } + + if ( isset( $section['fields'] ) && ! empty( $section['fields'] ) ) { + if ( Redux_Helpers::recursive_array_search( $field, $section['fields'] ) ) { + return $k; + continue; + } + } + } + } + + public static function isFieldInUseByType( $fields, $field = array() ) { + foreach ( $field as $name ) { + if ( array_key_exists( $name, $fields ) ) { + return true; + } + } + + return false; + } + + public static function get_auth_key_secret_key() { + $key = ""; + $key .= defined( 'AUTH_KEY' ) ? AUTH_KEY : get_site_url(); + $key .= defined( 'SECURE_AUTH_KEY' ) ? SECURE_AUTH_KEY : get_site_url(); + + return $key; + } + + public static function isFieldInUse( $parent, $field ) { + foreach ( $parent->sections as $k => $section ) { + if ( ! isset( $section['title'] ) ) { + continue; + } + + if ( isset( $section['fields'] ) && ! empty( $section['fields'] ) ) { + if ( Redux_Helpers::recursive_array_search( $field, $section['fields'] ) ) { + return true; + continue; + } + } + } + } + + public static function major_version( $v ) { + $version = explode( '.', $v ); + if ( count( $version ) > 1 ) { + return $version[0] . '.' . $version[1]; + } else { + return $v; + } + } + + public static function isLocalHost() { + return ( isset( $_SERVER['REMOTE_ADDR'] ) && ( $_SERVER['REMOTE_ADDR'] === '127.0.0.1' || $_SERVER['REMOTE_ADDR'] === 'localhost' ) ) ? 1 : 0; + } + + public static function isWpDebug() { + return ( defined( 'WP_DEBUG' ) && WP_DEBUG == true ); + } + + public static function getTrackingObject() { + global $wpdb; + + $hash = md5( network_site_url() . '-' . $_SERVER['REMOTE_ADDR'] ); + + global $blog_id, $wpdb; + $pts = array(); + + foreach ( get_post_types( array( 'public' => true ) ) as $pt ) { + $count = wp_count_posts( $pt ); + $pts[ $pt ] = $count->publish; + } + + $comments_count = wp_count_comments(); + $theme_data = wp_get_theme(); + $theme = array( + 'version' => $theme_data->Version, + 'name' => $theme_data->Name, + 'author' => $theme_data->Author, + 'template' => $theme_data->Template, + ); + + if ( ! function_exists( 'get_plugin_data' ) ) { + if ( file_exists( ABSPATH . 'wp-admin/includes/plugin.php' ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin.php'; + } + if ( file_exists( ABSPATH . 'wp-admin/includes/admin.php' ) ) { + require_once ABSPATH . 'wp-admin/includes/admin.php'; + } + } + + $plugins = array(); + foreach ( get_option( 'active_plugins', array() ) as $plugin_path ) { + $plugin_info = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin_path ); + + $slug = str_replace( '/' . basename( $plugin_path ), '', $plugin_path ); + $plugins[ $slug ] = array( + 'version' => $plugin_info['Version'], + 'name' => $plugin_info['Name'], + 'plugin_uri' => $plugin_info['PluginURI'], + 'author' => $plugin_info['AuthorName'], + 'author_uri' => $plugin_info['AuthorURI'], + ); + } + if ( is_multisite() ) { + foreach ( get_option( 'active_sitewide_plugins', array() ) as $plugin_path ) { + $plugin_info = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin_path ); + $slug = str_replace( '/' . basename( $plugin_path ), '', $plugin_path ); + $plugins[ $slug ] = array( + 'version' => $plugin_info['Version'], + 'name' => $plugin_info['Name'], + 'plugin_uri' => $plugin_info['PluginURI'], + 'author' => $plugin_info['AuthorName'], + 'author_uri' => $plugin_info['AuthorURI'], + ); + } + } + + + $version = explode( '.', PHP_VERSION ); + $version = array( + 'major' => $version[0], + 'minor' => $version[0] . '.' . $version[1], + 'release' => PHP_VERSION + ); + + $user_query = new WP_User_Query( array( 'blog_id' => $blog_id, 'count_total' => true, ) ); + $comments_query = new WP_Comment_Query(); + + $data = array( + '_id' => $hash, + 'localhost' => ( $_SERVER['REMOTE_ADDR'] === '127.0.0.1' ) ? 1 : 0, + 'php' => $version, + 'site' => array( + 'hash' => $hash, + 'version' => get_bloginfo( 'version' ), + 'multisite' => is_multisite(), + 'users' => $user_query->get_total(), + 'lang' => get_locale(), + 'wp_debug' => ( defined( 'WP_DEBUG' ) ? WP_DEBUG ? true : false : false ), + 'memory' => WP_MEMORY_LIMIT, + ), + 'pts' => $pts, + 'comments' => array( + 'total' => $comments_count->total_comments, + 'approved' => $comments_count->approved, + 'spam' => $comments_count->spam, + 'pings' => $comments_query->query( array( 'count' => true, 'type' => 'pingback' ) ), + ), + 'options' => apply_filters( 'redux/tracking/options', array() ), + 'theme' => $theme, + 'redux' => array( + 'mode' => ReduxFramework::$_is_plugin ? 'plugin' : 'theme', + 'version' => ReduxFramework::$_version, + 'demo_mode' => get_option( 'ReduxFrameworkPlugin' ), + ), + 'developer' => apply_filters( 'redux/tracking/developer', array() ), + 'plugins' => $plugins, + ); + + $parts = explode( ' ', $_SERVER['SERVER_SOFTWARE'] ); + $software = array(); + foreach ( $parts as $part ) { + if ( $part[0] == "(" ) { + continue; + } + if ( strpos( $part, '/' ) !== false ) { + $chunk = explode( "/", $part ); + $software[ strtolower( $chunk[0] ) ] = $chunk[1]; + } + } + $software['full'] = $_SERVER['SERVER_SOFTWARE']; + $data['environment'] = $software; + $data['environment']['mysql'] = $wpdb->db_version(); +// if ( function_exists( 'mysqli_get_server_info' ) ) { +// $link = mysqli_connect() or die( "Error " . mysqli_error( $link ) ); +// $data['environment']['mysql'] = mysqli_get_server_info( $link ); +// } else if ( class_exists( 'PDO' ) && method_exists( 'PDO', 'getAttribute' ) ) { +// $data['environment']['mysql'] = PDO::getAttribute( PDO::ATTR_SERVER_VERSION ); +// } else { +// $data['environment']['mysql'] = mysql_get_server_info(); +// } + + if ( empty( $data['developer'] ) ) { + unset( $data['developer'] ); + } + + return $data; + } + + public static function trackingObject() { + + $data = wp_remote_post( + 'http://verify.redux.io', + array( + 'body' => array( + 'hash' => $_GET['action'], + 'site' => esc_url( home_url( '/' ) ), + ) + ) + ); + + $data['body'] = urldecode( $data['body'] ); + + if ( ! isset( $_GET['code'] ) || $data['body'] != $_GET['code'] ) { + die(); + } + + return Redux_Helpers::getTrackingObject(); + } + + public static function isParentTheme( $file ) { + $file = self::cleanFilePath( $file ); + $dir = self::cleanFilePath( get_template_directory() ); + + $file = str_replace( '//', '/', $file ); + $dir = str_replace( '//', '/', $dir ); + + if ( strpos( $file, $dir ) !== false ) { + return true; + } + + return false; + } + + public static function isChildTheme( $file ) { + $file = self::cleanFilePath( $file ); + $dir = self::cleanFilePath( get_stylesheet_directory() ); + + $file = str_replace( '//', '/', $file ); + $dir = str_replace( '//', '/', $dir ); + + if ( strpos( $file, $dir ) !== false ) { + return true; + } + + return false; + } + + private static function reduxAsPlugin() { + return ReduxFramework::$_as_plugin; + } + + public static function isTheme( $file ) { + + if ( true == self::isChildTheme( $file ) || true == self::isParentTheme( $file ) ) { + return true; + } + + return false; + } + + public static function array_in_array( $needle, $haystack ) { + //Make sure $needle is an array for foreach + if ( ! is_array( $needle ) ) { + $needle = array( $needle ); + } + //For each value in $needle, return TRUE if in $haystack + foreach ( $needle as $pin ) //echo 'needle' . $pin; + { + if ( in_array( $pin, $haystack ) ) { + return true; + } + } + + //Return FALSE if none of the values from $needle are found in $haystack + return false; + } + + public static function recursive_array_search( $needle, $haystack ) { + foreach ( $haystack as $key => $value ) { + if ( $needle === $value || ( is_array( $value ) && self::recursive_array_search( + $needle, $value + ) !== false ) ) { + return true; + } + } + + return false; + } + + /** + * Take a path and return it clean + * + * @since 3.1.7 + * + * @param string $path + */ + public static function cleanFilePath( $path ) { + $path = str_replace( '', '', str_replace( array( "\\", "\\\\" ), '/', $path ) ); + + if ( $path[ strlen( $path ) - 1 ] === '/' ) { + $path = rtrim( $path, '/' ); + } + + return $path; + } + + /** + * Take a path and delete it + * + * @since 3.3.3 + * + * @param string $path + */ + public static function rmdir( $dir ) { + if ( is_dir( $dir ) ) { + $objects = scandir( $dir ); + foreach ( $objects as $object ) { + if ( $object != "." && $object != ".." ) { + if ( filetype( $dir . "/" . $object ) == "dir" ) { + rrmdir( $dir . "/" . $object ); + } else { + unlink( $dir . "/" . $object ); + } + } + } + reset( $objects ); + rmdir( $dir ); + } + } + + /** + * Field Render Function. + * Takes the color hex value and converts to a rgba. + * + * @since ReduxFramework 3.0.4 + */ + public static function hex2rgba( $hex, $alpha = '' ) { + $hex = str_replace( "#", "", $hex ); + if ( strlen( $hex ) == 3 ) { + $r = hexdec( substr( $hex, 0, 1 ) . substr( $hex, 0, 1 ) ); + $g = hexdec( substr( $hex, 1, 1 ) . substr( $hex, 1, 1 ) ); + $b = hexdec( substr( $hex, 2, 1 ) . substr( $hex, 2, 1 ) ); + } else { + $r = hexdec( substr( $hex, 0, 2 ) ); + $g = hexdec( substr( $hex, 2, 2 ) ); + $b = hexdec( substr( $hex, 4, 2 ) ); + } + $rgb = $r . ',' . $g . ',' . $b; + + if ( '' == $alpha ) { + return $rgb; + } else { + $alpha = floatval( $alpha ); + + return 'rgba(' . $rgb . ',' . $alpha . ')'; + } + } + + public static function makeBoolStr( $var ) { + if ( $var === false || $var === 'false' || $var === 0 || $var === '0' || $var === '' || empty( $var ) ) { + return 'false'; + } elseif ( $var === true || $var === 'true' || $var === 1 || $var === '1' ) { + return 'true'; + } else { + return $var; + } + } + + public static function localize( $localize ) { + $redux = ReduxFrameworkInstances::get_instance( $localize['args']['opt_name'] ); + $nonce = wp_create_nonce( 'redux-ads-nonce' ); + $base = admin_url( 'admin-ajax.php' ) . '?action=redux_p&nonce=' . $nonce . '&url='; + $localize['rAds'] = Redux_Helpers::rURL_fix( $base, $redux->args['opt_name'] ); + + return $localize; + } + + public static function compileSystemStatus( $json_output = false, $remote_checks = false ) { + global $wpdb; + + $sysinfo = array(); + + $sysinfo['home_url'] = home_url(); + $sysinfo['site_url'] = site_url(); + $sysinfo['redux_ver'] = esc_html( ReduxFramework::$_version ); + $sysinfo['redux_data_dir'] = ReduxFramework::$_upload_dir; + $f = 'fo' . 'pen'; + + $res = true; + if ( $f( ReduxFramework::$_upload_dir . 'test-log.log', 'a' ) === false ) { + $res = false; + } + + // Only is a file-write check + $sysinfo['redux_data_writeable'] = $res; + $sysinfo['wp_content_url'] = WP_CONTENT_URL; + $sysinfo['wp_ver'] = get_bloginfo( 'version' ); + $sysinfo['wp_multisite'] = is_multisite(); + $sysinfo['permalink_structure'] = get_option( 'permalink_structure' ) ? get_option( + 'permalink_structure' + ) : 'Default'; + $sysinfo['front_page_display'] = get_option( 'show_on_front' ); + if ( $sysinfo['front_page_display'] == 'page' ) { + $front_page_id = get_option( 'page_on_front' ); + $blog_page_id = get_option( 'page_for_posts' ); + + $sysinfo['front_page'] = $front_page_id != 0 ? get_the_title( + $front_page_id + ) . ' (#' . $front_page_id . ')' : 'Unset'; + $sysinfo['posts_page'] = $blog_page_id != 0 ? get_the_title( + $blog_page_id + ) . ' (#' . $blog_page_id . ')' : 'Unset'; + } + + $sysinfo['wp_mem_limit']['raw'] = self::let_to_num( WP_MEMORY_LIMIT ); + $sysinfo['wp_mem_limit']['size'] = size_format( $sysinfo['wp_mem_limit']['raw'] ); + + $sysinfo['db_table_prefix'] = 'Length: ' . strlen( $wpdb->prefix ) . ' - Status: ' . ( strlen( + $wpdb->prefix + ) > 16 ? 'ERROR: Too long' : 'Acceptable' ); + + $sysinfo['wp_debug'] = 'false'; + if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { + $sysinfo['wp_debug'] = 'true'; + } + + $sysinfo['wp_lang'] = get_locale(); + + if ( ! class_exists( 'Browser' ) ) { + require_once ReduxFramework::$_dir . 'inc/browser.php'; + } + + $browser = new Browser(); + + $sysinfo['browser'] = array( + 'agent' => $browser->getUserAgent(), + 'browser' => $browser->getBrowser(), + 'version' => $browser->getVersion(), + 'platform' => $browser->getPlatform(), + //'mobile' => $browser->isMobile() ? 'true' : 'false', + ); + + $sysinfo['server_info'] = esc_html( $_SERVER['SERVER_SOFTWARE'] ); + $sysinfo['localhost'] = self::makeBoolStr( self::isLocalHost() ); + $sysinfo['php_ver'] = function_exists( 'phpversion' ) ? esc_html( + phpversion() + ) : 'phpversion() function does not exist.'; + $sysinfo['abspath'] = ABSPATH; + + if ( function_exists( 'ini_get' ) ) { + $sysinfo['php_mem_limit'] = size_format( self::let_to_num( ini_get( 'memory_limit' ) ) ); + $sysinfo['php_post_max_size'] = size_format( self::let_to_num( ini_get( 'post_max_size' ) ) ); + $sysinfo['php_time_limit'] = ini_get( 'max_execution_time' ); + $sysinfo['php_max_input_var'] = ini_get( 'max_input_vars' ); + $sysinfo['php_display_errors'] = self::makeBoolStr( ini_get( 'display_errors' ) ); + } + + $sysinfo['suhosin_installed'] = extension_loaded( 'suhosin' ); + $sysinfo['mysql_ver'] = $wpdb->db_version(); + $sysinfo['max_upload_size'] = size_format( wp_max_upload_size() ); + + $sysinfo['def_tz_is_utc'] = 'true'; + if ( date_default_timezone_get() !== 'UTC' ) { + $sysinfo['def_tz_is_utc'] = 'false'; + } + + $sysinfo['fsockopen_curl'] = 'false'; + if ( function_exists( 'fsockopen' ) || function_exists( 'curl_init' ) ) { + $sysinfo['fsockopen_curl'] = 'true'; + } + + //$sysinfo['soap_client'] = 'false'; + //if ( class_exists( 'SoapClient' ) ) { + // $sysinfo['soap_client'] = 'true'; + //} + // + //$sysinfo['dom_document'] = 'false'; + //if ( class_exists( 'DOMDocument' ) ) { + // $sysinfo['dom_document'] = 'true'; + //} + + //$sysinfo['gzip'] = 'false'; + //if ( is_callable( 'gzopen' ) ) { + // $sysinfo['gzip'] = 'true'; + //} + + if ( $remote_checks == true ) { + $response = wp_remote_post( + 'https://www.paypal.com/cgi-bin/webscr', array( + 'sslverify' => false, + 'timeout' => 60, + 'user-agent' => 'ReduxFramework/' . ReduxFramework::$_version, + 'body' => array( + 'cmd' => '_notify-validate' + ) + ) + ); + + if ( ! is_wp_error( + $response + ) && $response['response']['code'] >= 200 && $response['response']['code'] < 300 ) { + $sysinfo['wp_remote_post'] = 'true'; + $sysinfo['wp_remote_post_error'] = ''; + } else { + $sysinfo['wp_remote_post'] = 'false'; + $sysinfo['wp_remote_post_error'] = $response->get_error_message(); + } + + $response = @wp_remote_get( + 'http://reduxframework.com/wp-admin/admin-ajax.php?action=get_redux_extensions' + ); + + if ( ! is_wp_error( + $response + ) && $response['response']['code'] >= 200 && $response['response']['code'] < 300 ) { + $sysinfo['wp_remote_get'] = 'true'; + $sysinfo['wp_remote_get_error'] = ''; + } elseif ( is_wp_error( $response ) ) { + $sysinfo['wp_remote_get'] = 'false'; + $sysinfo['wp_remote_get_error'] = $response->get_error_message(); + } else { + $sysinfo['wp_remote_get'] = 'false'; + $sysinfo['wp_remote_get_error'] = $response['response']['code'] . ( isset( $response['response']['message'] ) ? $response['response']['message'] : '' ); + } + } + + $active_plugins = (array) get_option( 'active_plugins', array() ); + + if ( is_multisite() ) { + $active_plugins = array_merge( $active_plugins, get_site_option( 'active_sitewide_plugins', array() ) ); + } + + $sysinfo['plugins'] = array(); + + foreach ( $active_plugins as $plugin ) { + if ( file_exists( WP_PLUGIN_DIR . '/' . $plugin ) ) { + $plugin_data = @get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin ); + $plugin_name = esc_html( $plugin_data['Name'] ); + + $sysinfo['plugins'][ $plugin_name ] = $plugin_data; + } + } + + $redux = ReduxFrameworkInstances::get_all_instances(); + + $sysinfo['redux_instances'] = array(); + + if ( ! empty( $redux ) && is_array( $redux ) ) { + foreach ( $redux as $inst => $data ) { + Redux::init( $inst ); + + $sysinfo['redux_instances'][ $inst ]['args'] = $data->args; + $sysinfo['redux_instances'][ $inst ]['sections'] = $data->sections; + foreach ( $sysinfo['redux_instances'][ $inst ]['sections'] as $sKey => $section ) { + if ( isset( $section['fields'] ) && is_array( $section['fields'] ) ) { + foreach ( $section['fields'] as $fKey => $field ) { + if ( isset( $field['validate_callback'] ) ) { + unset( $sysinfo['redux_instances'][ $inst ]['sections'][ $sKey ]['fields'][ $fKey ]['validate_callback'] ); + } + if ( $field['type'] == "js_button" ) { + if ( isset( $field['script'] ) && isset( $field['script']['ver'] ) ) { + unset( $sysinfo['redux_instances'][ $inst ]['sections'][ $sKey ]['fields'][ $fKey ]['script']['ver'] ); + } + } + + } + } + } + + $sysinfo['redux_instances'][ $inst ]['extensions'] = Redux::getExtensions( $inst ); + + if ( isset( $data->extensions['metaboxes'] ) ) { + $data->extensions['metaboxes']->init(); + $sysinfo['redux_instances'][ $inst ]['metaboxes'] = $data->extensions['metaboxes']->boxes; + } + + if ( isset( $data->args['templates_path'] ) && $data->args['templates_path'] != '' ) { + $sysinfo['redux_instances'][ $inst ]['templates'] = self::getReduxTemplates( + $data->args['templates_path'] + ); + } + } + } + + $active_theme = wp_get_theme(); + + $sysinfo['theme']['name'] = $active_theme->Name; + $sysinfo['theme']['version'] = $active_theme->Version; + $sysinfo['theme']['author_uri'] = $active_theme->{'Author URI'}; + $sysinfo['theme']['is_child'] = self::makeBoolStr( is_child_theme() ); + + if ( is_child_theme() ) { + $parent_theme = wp_get_theme( $active_theme->Template ); + + $sysinfo['theme']['parent_name'] = $parent_theme->Name; + $sysinfo['theme']['parent_version'] = $parent_theme->Version; + $sysinfo['theme']['parent_author_uri'] = $parent_theme->{'Author URI'}; + } + + //if ( $json_output ) { + // $sysinfo = json_encode( $sysinfo ); + //} + + //print_r($sysinfo); + //exit(); + + return $sysinfo; + } + + private static function getReduxTemplates( $custom_template_path ) { + $template_paths = array( 'ReduxFramework' => ReduxFramework::$_dir . 'templates/panel' ); + $scanned_files = array(); + $found_files = array(); + $outdated_templates = false; + + foreach ( $template_paths as $plugin_name => $template_path ) { + $scanned_files[ $plugin_name ] = self::scan_template_files( $template_path ); + } + + foreach ( $scanned_files as $plugin_name => $files ) { + foreach ( $files as $file ) { + if ( file_exists( $custom_template_path . '/' . $file ) ) { + $theme_file = $custom_template_path . '/' . $file; + } else { + $theme_file = false; + } + + if ( $theme_file ) { + $core_version = self::get_template_version( + ReduxFramework::$_dir . 'templates/panel/' . $file + ); + $theme_version = self::get_template_version( $theme_file ); + + if ( $core_version && ( empty( $theme_version ) || version_compare( + $theme_version, $core_version, '<' + ) ) ) { + if ( ! $outdated_templates ) { + $outdated_templates = true; + } + + $found_files[ $plugin_name ][] = sprintf( + __( + '%s version %s is out of date. The core version is %s', + 'redux-framework' + ), str_replace( WP_CONTENT_DIR . '/themes/', '', $theme_file ), + $theme_version ? $theme_version : '-', $core_version + ); + } else { + $found_files[ $plugin_name ][] = sprintf( + '%s', str_replace( + WP_CONTENT_DIR . '/themes/', '', $theme_file + ) + ); + } + } + } + } + + return $found_files; + } + + public static function rURL_fix( $base, $opt_name ) { + $url = $base . urlencode( 'http://look.redux.io/api/index.php?js&g&1&v=2' ) . '&proxy=' . urlencode( + $base + ) . ''; + + return Redux_Functions::tru( $url, $opt_name ); + } + + private static function scan_template_files( $template_path ) { + $files = scandir( $template_path ); + $result = array(); + + if ( $files ) { + foreach ( $files as $key => $value ) { + if ( ! in_array( $value, array( ".", ".." ) ) ) { + if ( is_dir( $template_path . DIRECTORY_SEPARATOR . $value ) ) { + $sub_files = redux_scan_template_files( $template_path . DIRECTORY_SEPARATOR . $value ); + foreach ( $sub_files as $sub_file ) { + $result[] = $value . DIRECTORY_SEPARATOR . $sub_file; + } + } else { + $result[] = $value; + } + } + } + } + + return $result; + } + + public static function get_template_version( $file ) { + $filesystem = Redux_Filesystem::get_instance(); + + // Avoid notices if file does not exist + if ( ! file_exists( $file ) ) { + return ''; + } + // + //// We don't need to write to the file, so just open for reading. + //$fp = fopen( $file, 'r' ); + // + //// Pull only the first 8kiB of the file in. + //$file_data = fread( $fp, 8192 ); + // + //// PHP will close file handle, but we are good citizens. + //fclose( $fp ); + // + // Make sure we catch CR-only line endings. + + $data = get_file_data( $file, array( 'version' ), 'plugin' ); + if ( ! empty( $data[0] ) ) { + return $data[0]; + } else { + $file_data = $filesystem->execute( 'get_contents', $file ); + + $file_data = str_replace( "\r", "\n", $file_data ); + $version = ''; + + if ( preg_match( + '/^[ \t\/*#@]*' . preg_quote( '@version', '/' ) . '(.*)$/mi', $file_data, $match + ) && $match[1] ) { + $version = _cleanup_header_comment( $match[1] ); + } + + return $version; + } + } + + private static function let_to_num( $size ) { + $l = substr( $size, - 1 ); + $ret = substr( $size, 0, - 1 ); + + switch ( strtoupper( $l ) ) { + case 'P': + $ret *= 1024; + case 'T': + $ret *= 1024; + case 'G': + $ret *= 1024; + case 'M': + $ret *= 1024; + case 'K': + $ret *= 1024; + } + + return $ret; + } + + public static function get_extension_dir( $dir ) { + return trailingslashit( wp_normalize_path( dirname( $dir ) ) ); + } + + public static function get_extension_url( $dir ) { + $ext_dir = Redux_Helpers::get_extension_dir( $dir ); + $ext_url = str_replace( wp_normalize_path( WP_CONTENT_DIR ), WP_CONTENT_URL, $ext_dir ); + + return $ext_url; + } + } +} diff --git a/redux/ReduxCore/inc/class.redux_instances.php b/redux/ReduxCore/inc/class.redux_instances.php new file mode 100644 index 0000000..4658743 --- /dev/null +++ b/redux/ReduxCore/inc/class.redux_instances.php @@ -0,0 +1,177 @@ +options = get_option( 'redux-framework-tracking' ); + $this->options['dev_mode'] = false; + + if ( ! isset( $this->options['hash'] ) || ! $this->options['hash'] || empty( $this->options['hash'] ) ) { + $this->options['hash'] = md5( network_site_url() . '-' . $_SERVER['REMOTE_ADDR'] ); + update_option( 'redux-framework-tracking', $this->options ); + } + + if ( isset( $_GET['redux_framework_disable_tracking'] ) && ! empty( $_GET['redux_framework_disable_tracking'] ) ) { + $this->options['allow_tracking'] = false; + update_option( 'redux-framework-tracking', $this->options ); + } + + if ( isset( $_GET['redux_framework_enable_tracking'] ) && ! empty( $_GET['redux_framework_enable_tracking'] ) ) { + $this->options['allow_tracking'] = true; + update_option( 'redux-framework-tracking', $this->options ); + } + + header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); + header( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" ); + header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); + header( 'Cache-Control: no-store, no-cache, must-revalidate' ); + header( 'Cache-Control: post-check=0, pre-check=0', false ); + header( 'Pragma: no-cache' ); + $instances = ReduxFrameworkInstances::get_all_instances(); + + $array = array(); + + if ( isset( $_REQUEST['i'] ) && ! empty( $_REQUEST['i'] ) ) { + if ( is_array( $instances ) && ! empty( $instances ) ) { + foreach ( $instances as $opt_name => $data ) { + if ( md5( $opt_name . '-debug' ) == $_REQUEST['i'] ) { + $array = $instances[ $opt_name ]; + } + if ($data->args['dev_mode']) { + $this->options['dev_mode'] = $data->args['dev_mode']; + } + } + } + if ( isset( $array ) ) { + if ( isset( $array->extensions ) && is_array( $array->extensions ) && ! empty( $array->extensions ) ) { + foreach ( $array->extensions as $key => $extension ) { + if ( isset( $extension->version ) ) { + $array->extensions[ $key ] = $extension->version; + } else { + $array->extensions[ $key ] = true; + } + } + } + + if ( isset( $array->import_export ) ) { + unset( $array->import_export ); + } + + if ( isset( $array->debug ) ) { + unset( $array->debug ); + } + } else { + die(); + } + + } else { + $array = Redux_Helpers::trackingObject(); + if ( is_array( $instances ) && ! empty( $instances ) ) { + $array['instances'] = array(); + foreach ( $instances as $opt_name => $data ) { + $array['instances'][] = $opt_name; + } + } + $array['key'] = md5( Redux_Helpers::get_auth_key_secret_key() ); + } + + echo @json_encode( $array, true ); + die(); + } + + function capture( $ReduxFramework ) { + $this->store( $ReduxFramework ); + } + + private function store( $ReduxFramework ) { + if ( $ReduxFramework instanceof ReduxFramework ) { + $key = $ReduxFramework->args['opt_name']; + self::$instances[ $key ] = $ReduxFramework; + } + } + } diff --git a/redux/ReduxCore/inc/class.thirdparty.fixes.php b/redux/ReduxCore/inc/class.thirdparty.fixes.php new file mode 100644 index 0000000..ae2d964 --- /dev/null +++ b/redux/ReduxCore/inc/class.thirdparty.fixes.php @@ -0,0 +1,16 @@ + {foo: [null, null, "v"]}, instead of {foo: ["2": "v"]} + }, + + // Merge option defaults into the options + setupOpts: function( options ) { + var opt, validOpts, defaultOptions, optWithDefault, parseAll, f; + f = $.serializeJSON; + + if ( options === null || options === undefined ) options = {}; // options ||= {} + defaultOptions = f.defaultOptions || {}; // defaultOptions + + // Make sure that the user didn't misspell an option + validOpts = ['checkboxUncheckedValue', 'parseNumbers', 'parseBooleans', 'parseNulls', 'parseAll', 'parseWithFunction', 'customTypes', 'defaultTypes', 'useIntKeysAsArrayIndex']; // re-define because the user may override the defaultOptions + for ( opt in options ) { + if ( validOpts.indexOf( opt ) === -1 ) { + throw new Error( + "serializeJSON ERROR: invalid option '" + opt + "'. Please use one of " + validOpts.join( + ', ' + ) + ); + } + } + + // Helper to get the default value for this option if none is specified by the user + optWithDefault = function( key ) { + return (options[key] !== false) && (options[key] !== '') && (options[key] || defaultOptions[key]); + }; + + // Return computed options (opts to be used in the rest of the script) + parseAll = optWithDefault( 'parseAll' ); + return { + checkboxUncheckedValue: optWithDefault( 'checkboxUncheckedValue' ), + parseNumbers: parseAll || optWithDefault( 'parseNumbers' ), + parseBooleans: parseAll || optWithDefault( 'parseBooleans' ), + parseNulls: parseAll || optWithDefault( 'parseNulls' ), + parseWithFunction: optWithDefault( 'parseWithFunction' ), + typeFunctions: $.extend( {}, optWithDefault( 'defaultTypes' ), optWithDefault( 'customTypes' ) ), + useIntKeysAsArrayIndex: optWithDefault( 'useIntKeysAsArrayIndex' ), + }; + }, + + // Given a string, apply the type or the relevant "parse" options, to return the parsed value + parseValue: function( str, type, opts ) { + var typeFunction, f; + f = $.serializeJSON; + + // Parse with a type if available + typeFunction = opts.typeFunctions && opts.typeFunctions[type]; + if ( typeFunction ) return typeFunction( str ); // use specific type + + // Otherwise, check if there is any auto-parse option enabled and use it. + if ( opts.parseNumbers && f.isNumeric( str ) ) return Number( str ); // auto: number + if ( opts.parseBooleans && (str === "true" || str === "false") ) return str === "true"; // auto: boolean + if ( opts.parseNulls && str == "null" ) return null; // auto: null + + // If none applies, just return the str + return str; + }, + + isObject: function( obj ) { + return obj === Object( obj ); + }, // is this variable an object? + isUndefined: function( obj ) { + return obj === void 0; + }, // safe check for undefined values + isValidArrayIndex: function( val ) { + return /^[0-9]+$/.test( String( val ) ); + }, // 1,2,3,4 ... are valid array indexes + isNumeric: function( obj ) { + return obj - parseFloat( obj ) >= 0; + }, // taken from jQuery.isNumeric implementation. Not using jQuery.isNumeric to support old jQuery and Zepto versions + + optionKeys: function( obj ) { + if ( Object.keys ) { + return Object.keys( obj ); + } else { + var keys = []; + for ( var key in obj ) { + keys.push( key ); + } + + return keys; + } + }, // polyfill Object.keys to get option keys in IE<9 + + // Split the input name in programatically readable keys. + // The last element is always the type (default "_"). + // Examples: + // "foo" => ['foo', '_'] + // "foo:string" => ['foo', 'string'] + // "foo:boolean" => ['foo', 'boolean'] + // "[foo]" => ['foo', '_'] + // "foo[inn][bar]" => ['foo', 'inn', 'bar', '_'] + // "foo[inn[bar]]" => ['foo', 'inn', 'bar', '_'] + // "foo[inn][arr][0]" => ['foo', 'inn', 'arr', '0', '_'] + // "arr[][val]" => ['arr', '', 'val', '_'] + // "arr[][val]:null" => ['arr', '', 'val', 'null'] + splitInputNameIntoKeysArray: function( name, opts ) { + var keys, nameWithoutType, type, _ref, f; + f = $.serializeJSON; + _ref = f.extractTypeFromInputName( name, opts ), nameWithoutType = _ref[0], type = _ref[1]; + keys = nameWithoutType.split( '[' ); // split string into array + keys = $.map( + keys, function( key ) { + return key.replace( /]/g, '' ); + } + ); // remove closing brackets + if ( keys[0] === '' ) { + keys.shift(); + } // ensure no opening bracket ("[foo][inn]" should be same as "foo[inn]") + keys.push( type ); // add type at the end + return keys; + }, + + // Returns [name-without-type, type] from name. + // "foo" => ["foo", '_'] + // "foo:boolean" => ["foo", 'boolean'] + // "foo[bar]:null" => ["foo[bar]", 'null'] + extractTypeFromInputName: function( name, opts ) { + var match, validTypes, f; + if ( match = name.match( /(.*):([^:]+)$/ ) ) { + f = $.serializeJSON; + + validTypes = f.optionKeys( opts ? opts.typeFunctions : f.defaultOptions.defaultTypes ); + validTypes.push( 'skip' ); // skip is a special type that makes it easy to remove + if ( validTypes.indexOf( match[2] ) !== -1 ) { + return [match[1], match[2]]; + } else { + throw new Error( + "serializeJSON ERROR: Invalid type " + match[2] + " found in input name '" + name + "', please use one of " + validTypes.join( + ', ' + ) + ) + } + } else { + return [name, '_']; // no defined type, then use parse options + } + }, + + // Set a value in an object or array, using multiple keys to set in a nested object or array: + // + // deepSet(obj, ['foo'], v) // obj['foo'] = v + // deepSet(obj, ['foo', 'inn'], v) // obj['foo']['inn'] = v // Create the inner obj['foo'] object, if needed + // deepSet(obj, ['foo', 'inn', '123'], v) // obj['foo']['arr']['123'] = v // + // + // deepSet(obj, ['0'], v) // obj['0'] = v + // deepSet(arr, ['0'], v, {useIntKeysAsArrayIndex: true}) // arr[0] = v + // deepSet(arr, [''], v) // arr.push(v) + // deepSet(obj, ['arr', ''], v) // obj['arr'].push(v) + // + // arr = []; + // deepSet(arr, ['', v] // arr => [v] + // deepSet(arr, ['', 'foo'], v) // arr => [v, {foo: v}] + // deepSet(arr, ['', 'bar'], v) // arr => [v, {foo: v, bar: v}] + // deepSet(arr, ['', 'bar'], v) // arr => [v, {foo: v, bar: v}, {bar: v}] + // + deepSet: function( o, keys, value, opts ) { + var key, nextKey, tail, lastIdx, lastVal, f; + if ( opts == null ) opts = {}; + f = $.serializeJSON; + if ( f.isUndefined( o ) ) { + throw new Error( "ArgumentError: param 'o' expected to be an object or array, found undefined" ); + } + if ( !keys || keys.length === 0 ) { + throw new Error( "ArgumentError: param 'keys' expected to be an array with least one element" ); + } + + key = keys[0]; + + // Only one key, then it's not a deepSet, just assign the value. + if ( keys.length === 1 ) { + if ( key === '' ) { + o.push( value ); // '' is used to push values into the array (assume o is an array) + } else { + o[key] = value; // other keys can be used as object keys or array indexes + } + + // With more keys is a deepSet. Apply recursively. + } else { + nextKey = keys[1]; + + // '' is used to push values into the array, + // with nextKey, set the value into the same object, in object[nextKey]. + // Covers the case of ['', 'foo'] and ['', 'var'] to push the object {foo, var}, and the case of nested arrays. + if ( key === '' ) { + lastIdx = o.length - 1; // asume o is array + lastVal = o[lastIdx]; + if ( f.isObject( lastVal ) && (f.isUndefined( lastVal[nextKey] ) || keys.length > 2) ) { // if nextKey is not present in the last object element, or there are more keys to deep set + key = lastIdx; // then set the new value in the same object element + } else { + key = lastIdx + 1; // otherwise, point to set the next index in the array + } + } + + // '' is used to push values into the array "array[]" + if ( nextKey === '' ) { + if ( f.isUndefined( o[key] ) || !$.isArray( o[key] ) ) { + o[key] = []; // define (or override) as array to push values + } + } else { + if ( opts.useIntKeysAsArrayIndex && f.isValidArrayIndex( nextKey ) ) { // if 1, 2, 3 ... then use an array, where nextKey is the index + if ( f.isUndefined( o[key] ) || !$.isArray( o[key] ) ) { + o[key] = []; // define (or override) as array, to insert values using int keys as array indexes + } + } else { // for anything else, use an object, where nextKey is going to be the attribute name + if ( f.isUndefined( o[key] ) || !f.isObject( o[key] ) ) { + o[key] = {}; // define (or override) as object, to set nested properties + } + } + } + + // Recursively set the inner object + tail = keys.slice( 1 ); + f.deepSet( o[key], tail, value, opts ); + } + }, + + // Fill the formAsArray object with values for the unchecked checkbox inputs, + // using the same format as the jquery.serializeArray function. + // The value of the unchecked values is determined from the opts.checkboxUncheckedValue + // and/or the data-unchecked-value attribute of the inputs. + readCheckboxUncheckedValues: function( formAsArray, $form, opts ) { + var selector, $uncheckedCheckboxes, $el, dataUncheckedValue, f; + if ( opts == null ) opts = {}; + f = $.serializeJSON; + + selector = 'input[type=checkbox][name]:not(:checked):not([disabled])'; + $uncheckedCheckboxes = $form.find( selector ).add( $form.filter( selector ) ); + $uncheckedCheckboxes.each( + function( i, el ) { + $el = $( el ); + dataUncheckedValue = $el.attr( 'data-unchecked-value' ); + if ( dataUncheckedValue ) { // data-unchecked-value has precedence over option opts.checkboxUncheckedValue + formAsArray.push( {name: el.name, value: dataUncheckedValue} ); + } else { + if ( !f.isUndefined( opts.checkboxUncheckedValue ) ) { + formAsArray.push( {name: el.name, value: opts.checkboxUncheckedValue} ); + } + } + } + ); + } + + }; + +}( window.jQuery || window.$ )); + +(function( $ ) { //This functions first parameter is named $ + 'use strict'; + + redux.customizer = redux.customizer || {}; + + $( document ).ready( + function() { + redux.customizer.init(); + } + ); + redux.customizer.init = function() { + $( 'body' ).addClass( redux_customizer.body_class ); + $( '.accordion-section.redux-section, .accordion-section.redux-panel, .accordion-section-title' ).click( + function() { + $.redux.initFields(); + } + ); + + redux.args.disable_save_warn = true; + var reduxChange = redux_change; + redux_change = function( variable ) { + variable = $( variable ); + reduxChange.apply( this, arguments ); + redux.customizer.save( variable ) + }; + + var redux_initFields = $.redux.initFields; + $.redux.initFiles = function() { + redux_initFields(); + } + }; + + redux.customizer.save = function( $obj ) { + var $parent = $obj.hasClass( 'redux-field' ) ? $obj : $obj.parents( '.redux-field-container:first' ); + redux.customizer.inputSave( $parent ); + }; + redux.customizer.inputSave = function( $parent ) { + + if ( !$parent.hasClass( 'redux-field-container' ) ) { + $parent = $parent.parents( '[class^="redux-field-container"]' ); + } + + var $id = $parent.parent().find( '.redux-customizer-input' ).data( 'id' ); + + if ( !$id ) { + $parent = $parent.parents( '.redux-container-repeater:first' ); + var $id = $parent.parent().find( '.redux-customizer-input' ).data( 'id' ); + } + + //var $nData = $parent.serializeJSON(); + var $nData = $parent.find( ':input' ).serializeJSON(); + + $.each( + $nData, function( $k, $v ) { + $nData = $v; + } + ); + + var $key = $parent.parent().find( '.redux-customizer-input' ).data( 'key' ); + if ( $nData[$key] ) { + $nData = $nData[$key]; + } + + var $control = wp.customize.control( $id ); + + // Customizer hack since they didn't code it to save order... + if ( JSON.stringify( $control.setting._value ) !== JSON.stringify( $nData ) ) { + $control.setting._value = null; + } + $control.setting.set( $nData ); + } +})( jQuery ); \ No newline at end of file diff --git a/redux/ReduxCore/inc/extensions/customizer/extension_customizer.min.js b/redux/ReduxCore/inc/extensions/customizer/extension_customizer.min.js new file mode 100644 index 0000000..aae767b --- /dev/null +++ b/redux/ReduxCore/inc/extensions/customizer/extension_customizer.min.js @@ -0,0 +1 @@ +!function(l){"use strict";l.fn.serializeJSON=function(e){var r,n,t,i,s,u,a;return u=l.serializeJSON,a=u.setupOpts(e),n=this.serializeArray(),u.readCheckboxUncheckedValues(n,this,a),r={},l.each(n,function(e,n){t=u.splitInputNameIntoKeysArray(n.name,a),"skip"!==(i=t.pop())&&(s=u.parseValue(n.value,i,a),a.parseWithFunction&&"_"===i&&(s=a.parseWithFunction(s,n.name)),u.deepSet(r,t,s,a))}),r},l.serializeJSON={defaultOptions:{checkboxUncheckedValue:void 0,parseNumbers:!1,parseBooleans:!1,parseNulls:!1,parseAll:!1,parseWithFunction:null,customTypes:{},defaultTypes:{string:function(e){return String(e)},number:function(e){return Number(e)},boolean:function(e){return-1===["false","null","undefined","","0"].indexOf(e)},null:function(e){return-1!==["false","null","undefined","","0"].indexOf(e)?null:e},array:function(e){return JSON.parse(e)},object:function(e){return JSON.parse(e)},auto:function(e){return l.serializeJSON.parseValue(e,null,{parseNumbers:!0,parseBooleans:!0,parseNulls:!0})}},useIntKeysAsArrayIndex:!1},setupOpts:function(n){var e,r,t,i,s,u;for(e in u=l.serializeJSON,null==n&&(n={}),t=u.defaultOptions||{},r=["checkboxUncheckedValue","parseNumbers","parseBooleans","parseNulls","parseAll","parseWithFunction","customTypes","defaultTypes","useIntKeysAsArrayIndex"],n)if(-1===r.indexOf(e))throw new Error("serializeJSON ERROR: invalid option '"+e+"'. Please use one of "+r.join(", "));return s=(i=function(e){return!1!==n[e]&&""!==n[e]&&(n[e]||t[e])})("parseAll"),{checkboxUncheckedValue:i("checkboxUncheckedValue"),parseNumbers:s||i("parseNumbers"),parseBooleans:s||i("parseBooleans"),parseNulls:s||i("parseNulls"),parseWithFunction:i("parseWithFunction"),typeFunctions:l.extend({},i("defaultTypes"),i("customTypes")),useIntKeysAsArrayIndex:i("useIntKeysAsArrayIndex")}},parseValue:function(e,n,r){var t,i;return i=l.serializeJSON,(t=r.typeFunctions&&r.typeFunctions[n])?t(e):r.parseNumbers&&i.isNumeric(e)?Number(e):!r.parseBooleans||"true"!==e&&"false"!==e?r.parseNulls&&"null"==e?null:e:"true"===e},isObject:function(e){return e===Object(e)},isUndefined:function(e){return void 0===e},isValidArrayIndex:function(e){return/^[0-9]+$/.test(String(e))},isNumeric:function(e){return 0<=e-parseFloat(e)},optionKeys:function(e){if(Object.keys)return Object.keys(e);var n=[];for(var r in e)n.push(r);return n},splitInputNameIntoKeysArray:function(e,n){var r,t,i,s;return t=(s=l.serializeJSON.extractTypeFromInputName(e,n))[0],i=s[1],r=t.split("["),""===(r=l.map(r,function(e){return e.replace(/]/g,"")}))[0]&&r.shift(),r.push(i),r},extractTypeFromInputName:function(e,n){var r,t,i;if(r=e.match(/(.*):([^:]+)$/)){if((t=(i=l.serializeJSON).optionKeys(n?n.typeFunctions:i.defaultOptions.defaultTypes)).push("skip"),-1!==t.indexOf(r[2]))return[r[1],r[2]];throw new Error("serializeJSON ERROR: Invalid type "+r[2]+" found in input name '"+e+"', please use one of "+t.join(", "))}return[e,"_"]},deepSet:function(e,n,r,t){var i,s,u,a,o,c;if(null==t&&(t={}),(c=l.serializeJSON).isUndefined(e))throw new Error("ArgumentError: param 'o' expected to be an object or array, found undefined");if(!n||0===n.length)throw new Error("ArgumentError: param 'keys' expected to be an array with least one element");i=n[0],1===n.length?""===i?e.push(r):e[i]=r:(s=n[1],""===i&&(o=e[a=e.length-1],i=c.isObject(o)&&(c.isUndefined(o[s])||2 + // return; + /** + * Redux Framework is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * any later version. + * Redux Framework is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with Redux Framework. If not, see . + * + * @package ReduxFramework + * @author Dovy Paukstys (dovy) + * @version 0.1.0 + */ + + // Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + + // Don't duplicate me! +if ( ! class_exists( 'ReduxFramework_extension_customizer' ) ) { + + /** + * Main ReduxFramework customizer extension class + * + * @since 1.0.0 + */ + class ReduxFramework_extension_customizer { + + // Protected vars + protected $redux; + private $_extension_url; + private $_extension_dir; + private $parent; + private $orig_options = array(); + private static $post_values = array(); + public static $version = '2.0.0'; + private $options = array(); + + /** + * Class Constructor. Defines the args for the extions class + * + * @since 1.0.0 + * @access public + * + * @param array $sections Panel sections. + * @param array $args Class constructor arguments. + * @param array $extra_tabs Extra panel tabs. + * + * @return void + */ + public function __construct( $parent ) { + + $this->parent = $parent; + + $this->upload_dir = ReduxFramework::$_upload_dir . 'advanced-customizer/'; + + // add_action('wp_head', array( $this, '_enqueue_new' )); + if ( $parent->args['customizer'] == false ) { + return; + } + + // Override the ReduxCore class + add_filter( + "redux/extension/{$this->parent->args['opt_name']}/customizer", + array( + $this, + 'remove_core_customizer_class', + ) + ); + + global $pagenow, $wp_customize; + if ( ! isset( $wp_customize ) && $pagenow !== 'customize.php' && $pagenow !== 'admin-ajax.php' ) { + return; + } + if ( ( $pagenow !== 'customize.php' && $pagenow !== 'admin-ajax.php' && ! isset( $GLOBALS['wp_customize'] ) ) ) { + // return; + } + + if ( empty( $this->_extension_dir ) ) { + $this->_extension_dir = apply_filters( 'redux/extension/customizer/dir', trailingslashit( str_replace( '\\', '/', dirname( __FILE__ ) ) ) ); + $this->_extension_url = apply_filters( 'redux/extension/customizer/url', plugin_dir_url( __FILE__ ) ); + } + + self::get_post_values(); + + // Create defaults array + $defaults = array(); + /* + customize_controls_init + customize_controls_enqueue_scripts + customize_controls_print_styles + customize_controls_print_scripts + customize_controls_print_footer_scripts + */ + + // add_action('customize_save', ); + + if ( isset( $_POST['wp_customize'] ) && $_POST['wp_customize'] == 'on' ) { + $this->parent->args['customizer_only'] = true; + } + + if ( isset( $_POST['wp_customize'] ) && $_POST['wp_customize'] == 'on' && isset( $_POST['customized'] ) && ! empty( $_POST['customized'] ) && ! isset( $_POST['action'] ) ) { + add_action( + "redux/options/{$this->parent->args['opt_name']}/options", + array( + $this, + '_override_values', + ), + 100 + ); + } + + add_action( + 'customize_register', + array( + $this, + '_register_customizer_controls', + ) + ); // Create controls + + add_action( 'wp_head', array( $this, 'customize_preview_init' ) ); + + // add_action( 'customize_save', array( $this, 'customizer_save_before' ) ); // Before save + add_action( 'customize_save_after', array( &$this, 'customizer_save_after' ) ); // After save + + // Add global controls CSS file + add_action( 'customize_controls_print_scripts', array( $this, 'enqueue_controls_css' ) ); + + add_action( 'customize_controls_init', array( $this, 'enqueue_panel_css' ) ); + + // add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_previewer_css' ) ); // Enqueue previewer css + // add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_previewer_js' ) ); // Enqueue previewer javascript + // add_action( "wp_footer", array( $this, '_enqueue_new' ), 100 ); + // $this->_enqueue_new(); + } + + function enqueue_controls_css() { + + require_once ReduxFramework::$_dir . 'core/enqueue.php'; + $enqueue = new reduxCoreEnqueue( $this->parent ); + $enqueue->get_warnings_and_errors_array(); + $enqueue->init(); + wp_enqueue_style( 'redux-extension-advanced-customizer', $this->_extension_url . 'extension_customizer.css', '', time() ); + + wp_enqueue_script( + 'redux-extension-customizer', + $this->_extension_url . 'extension_customizer' . Redux_Functions::isMin() . '.js', + array( 'jquery', 'redux-js' ), + self::$version, + true + ); + wp_localize_script( 'redux-extension-customizer', 'redux_customizer', array( 'body_class' => sanitize_html_class( 'admin-color-' . get_user_option( 'admin_color' ), 'fresh' ) ) ); + } + + function enqueue_panel_css() { + + } + + function remove_core_customizer_class( $path ) { + return ''; + } + + function customize_preview_init() { + do_action( 'redux/customizer/live_preview' ); + } + + protected static function get_post_values() { + if ( empty( self::$post_values ) && isset( $_POST['customized'] ) && ! empty( $_POST['customized'] ) ) { + self::$post_values = json_decode( stripslashes_deep( $_POST['customized'] ), true ); + } + } + + public function _override_values( $data ) { + + self::get_post_values(); + + if ( isset( $_POST['customized'] ) && ! empty( self::$post_values ) ) { + + if ( is_array( self::$post_values ) ) { + foreach ( self::$post_values as $key => $value ) { + if ( strpos( $key, $this->parent->args['opt_name'] ) !== false ) { + + // if (is_array($value)) { + // $value = @stripslashes( $value ); + // if ( function_exists( 'get_magic_quotes_gpc' ) && get_magic_quotes_gpc() ) { + // $value = @array_map( 'stripslashes_deep', $value ); + // $value = @array_map( 'urldecode', $value ); + // } + // } else { + // $value = @urldecode($value); + // } + $key = str_replace( $this->parent->args['opt_name'] . '[', '', rtrim( $key, ']' ) ); + $data[ $key ] = $value; + $GLOBALS[ $this->parent->args['global_variable'] ][ $key ] = $value; + $this->parent->options[ $key ] = $value; + } + } + } + } + + return $data; + } + + public function _enqueue_new() { + // echo ""; + // echo ""; + // echo ""; + // echo ""; + // echo ""; + // echo ""; + // echo ""; + // echo ""; + // echo ""; + // echo ""; + // echo ""; + // echo ""; + + /* + wp_enqueue_script('redux-extension-customizer-codemirror-js', $this->_extension_url . 'new/codemirror.min.js'); + wp_enqueue_script('redux-extension-customizer-color-js', $this->_extension_url . 'new/colors-control.js'); + wp_enqueue_script('redux-extension-customizer-controls-js', $this->_extension_url . 'new/customizer-control.js'); + wp_enqueue_script('redux-extension-customizer-fonts-js', $this->_extension_url . 'new/fonts-customizer-admin.js'); + wp_enqueue_script('redux-extension-customizer-header-js', $this->_extension_url . 'new/header-control.js'); + wp_enqueue_script('redux-extension-customizer-models-js', $this->_extension_url . 'new/header-models.js'); + wp_enqueue_script('redux-extension-customizer-slimscroll-js', $this->_extension_url . 'new/jquery.slimscroll.js'); + wp_enqueue_script('redux-extension-customizer-droppable-js', $this->_extension_url . 'new/jquery.ui.droppable.min.js'); + wp_enqueue_script('redux-extension-customizer-editor-js', $this->_extension_url . 'new/media-editor.min.js'); + wp_enqueue_script('redux-extension-customizer-new-js', $this->_extension_url . 'new/new-customizer.js'); + wp_enqueue_script('redux-extension-customizer-previewing-js', $this->_extension_url . 'new/previewing.js'); + wp_enqueue_script('redux-extension-customizer-theme-js', $this->_extension_url . 'new/theme-customizer.js'); + */ + } + + public function render( $control ) { + $fieldID = str_replace( $this->parent->args['opt_name'] . '-', '', $control->redux_id ); + $field = $this->options[ $fieldID ]; + + if ( isset( $field['compiler'] ) && ! empty( $field['compiler'] ) ) { + echo ''; + } else { + echo ''; + } + echo '' . $this->parent->field_head[ $field['id'] ] . ''; + echo ''; + // $field['data-customize-setting-link'] = array( + // 'name' => $field['name'], + // 'suffix' => isset($field['name_suffix']) ? $field['name_suffix'] : '' + // ); + // + $field['name'] = $field['id']; + $this->parent->_field_input( $field ); + echo ''; + echo ''; + } + + // All sections, settings, and controls will be added here + public function _register_customizer_controls( $wp_customize ) { + + if ( ! class_exists( 'Redux_Customizer_Section' ) ) { + require_once dirname( __FILE__ ) . '/inc/customizer_section.php'; + if ( method_exists( $wp_customize, 'register_section_type' ) ) { + $wp_customize->register_section_type( 'Redux_Customizer_Section' ); + } + } + if ( ! class_exists( 'Redux_Customizer_Panel' ) ) { + require_once dirname( __FILE__ ) . '/inc/customizer_panel.php'; + if ( method_exists( $wp_customize, 'register_panel_type' ) ) { + $wp_customize->register_panel_type( 'Redux_Customizer_Panel' ); + } + } + if ( ! class_exists( 'Redux_Customizer_Control' ) ) { + require_once dirname( __FILE__ ) . '/inc/customizer_control.php'; + } + + require_once dirname( __FILE__ ) . '/inc/customizer_fields.php'; + require_once dirname( __FILE__ ) . '/inc/customizer_devs.php'; + + do_action( 'redux/extension/customizer/control/includes' ); + + // if ($this->parent->args['dev_mode']) { + // $section = new Redux_Customizer_rAds( $wp_customize, 'redux_rAds', array( + // 'priority' => 0, + // ) ); + // $wp_customize->add_section( $section, array( + // 'priority' => 0, + // ) ); + // + // $wp_customize->add_control( new Redux_Customizer_Control_rAds( $wp_customize, 'reduxAdsDisplay', array( + // 'section' => 'redux_rAds', + // 'settings' => 'redux_rAds_field', + // 'type' => 'redux-rAds', + // ) ) ); + // + // + // + // + // } + if ( $this->parent->args['dev_mode'] ) { + // $args = array( + // 'priority' => 0, + // ); + // $section = new Redux_Customizer_Section( $wp_customize, 'redux_rAds', $args ); + // $wp_customize->add_section( $section, $args ); + // $this->add_section( 'redux_rAds', array( + // 'title' => '', + // 'priority' => 1, + // 'description' => '', + // 'capability' => 'edit_theme_options', + // ), $wp_customize ); + // + // $wp_customize->add_control( new WP_Customize_Color_Control( + // $wp_customize, + // 'redux_rAds_display', + // array( + // 'section' => 'redux_rAds', + // 'settings' => 'redux_rAds_display', + // ) + // )); + // $wp_customize->add_control( new Redux_Customizer_Control_rAds( $wp_customize, 'reduxAdsDisplay', array( + // 'section' => 'redux_rAds', + // 'settings' => 'redux_rAds_field', + // 'type' => 'redux-rAds', + // ) ) ); + // start copyright settings + + // $section = new Redux_Customizer_section_rAds( $wp_customize, 'redux_rAds', array( + // 'priority' => -999, + // ) ); + // $wp_customize->add_section( $section, array( + // 'priority' => -999, + // ) ); + // $wp_customize->add_setting( + // 'redux_rAds_empty' + // ); + // $wp_customize->add_control( + // new Redux_Customizer_Control_rAds( + // $wp_customize, + // 'redux_rAds_empty', + // array( + // 'section' => 'redux_rAds', + // 'settings' => 'redux_rAds_empty' + // ) + // ) + // ); + } + + $order = array( + 'heading' => - 500, + 'option' => - 500, + ); + $defaults = array( + 'default-color' => '', + 'default-image' => '', + 'wp-head-callback' => '', + 'admin-head-callback' => '', + 'admin-preview-callback' => '', + ); + $panel = ''; + + $this->parent->args['options_api'] = false; + $this->parent->_register_settings(); + + foreach ( $this->parent->sections as $key => $section ) { + + // Not a type that should go on the customizer + if ( isset( $section['type'] ) && ( $section['type'] == 'divide' ) ) { + continue; + } + + if ( isset( $section['id'] ) && $section['id'] == 'import/export' ) { + continue; + } + + // If section customizer is set to false + if ( isset( $section['customizer'] ) && $section['customizer'] === false ) { + continue; + } + + $section['permissions'] = isset( $section['permissions'] ) ? $section['permissions'] : 'edit_theme_options'; + + // No errors please + if ( ! isset( $section['desc'] ) ) { + $section['desc'] = ''; + } + + // Fill the description if there is a subtitle + if ( empty( $section['desc'] ) && ! empty( $section['subtitle'] ) ) { + $section['desc'] = $section['subtitle']; + } + + // Let's make a section ID from the title + if ( empty( $section['id'] ) ) { + $section['id'] = strtolower( str_replace( ' ', '', $section['title'] ) ); + } + + // No title is present, let's show what section is missing a title + if ( ! isset( $section['title'] ) ) { + $section['title'] = ''; + } + + // Let's set a default priority + if ( empty( $section['priority'] ) ) { + $section['priority'] = $order['heading']; + $order['heading'] ++; + } + + // print_r($section); + // print_r($this->parent->sections[$key+1]); + // echo $key; + // exit(); + + if ( method_exists( $wp_customize, 'add_panel' ) && ( ! isset( $section['subsection'] ) || ( isset( $section['subsection'] ) && $section['subsection'] != true ) ) && isset( $this->parent->sections[ ( $key + 1 ) ]['subsection'] ) && $this->parent->sections[ ( $key + 1 ) ]['subsection'] ) { + + $this->add_panel( + $section['id'], + array( + 'priority' => $section['priority'], + 'capability' => $section['permissions'], + // 'theme_supports' => '', + 'title' => $section['title'], + 'section' => $section, + 'opt_name' => $this->parent->args['opt_name'], + 'description' => '', + ), + $wp_customize + ); + $panel = $section['id']; + + $this->add_section( + $section['id'], + array( + 'title' => $section['title'], + 'priority' => $section['priority'], + 'description' => $section['desc'], + 'section' => $section, + 'opt_name' => $this->parent->args['opt_name'], + 'capability' => $section['permissions'], + 'panel' => $panel, + ), + $wp_customize + ); + + } else { + if ( ! isset( $section['subsection'] ) || ( isset( $section['subsection'] ) && $section['subsection'] != true ) ) { + $panel = ''; + } + $this->add_section( + $section['id'], + array( + 'title' => $section['title'], + 'priority' => $section['priority'], + 'description' => $section['desc'], + 'opt_name' => $this->parent->args['opt_name'], + 'section' => $section, + 'capability' => $section['permissions'], + 'panel' => $panel, + ), + $wp_customize + ); + } + + if ( ! isset( $section['fields'] ) || ( isset( $section['fields'] ) && empty( $section['fields'] ) ) ) { + continue; + } + + foreach ( $section['fields'] as $skey => $option ) { + + if ( isset( $option['customizer'] ) && $option['customizer'] === false ) { + continue; + } + + if ( $this->parent->args['customizer'] === false && ( ! isset( $option['customizer'] ) || $option['customizer'] !== true ) ) { + continue; + } + + $this->options[ $option['id'] ] = $option; + add_action( + 'redux/advanced_customizer/control/render/' . $this->parent->args['opt_name'] . '-' . $option['id'], + array( + $this, + 'render', + ) + ); + + $option['permissions'] = isset( $option['permissions'] ) ? $option['permissions'] : 'edit_theme_options'; + + // + // if ( isset( $option['validate_callback'] ) && ! empty( $option['validate_callback'] ) ) { + // continue; + // } + + // Change the item priority if not set + if ( $option['type'] != 'heading' && ! isset( $option['priority'] ) ) { + $option['priority'] = $order['option']; + $order['option'] ++; + } + + if ( ! empty( $this->options_defaults[ $option['id'] ] ) ) { + $option['default'] = $this->options_defaults['option']['id']; + } + + // $option['id'] = $this->parent->args['opt_name'].'['.$option['id'].']'; + // echo $option['id']; + + if ( ! isset( $option['default'] ) ) { + $option['default'] = ''; + } + if ( ! isset( $option['title'] ) ) { + $option['title'] = ''; + } + + $option['id'] = $this->parent->args['opt_name'] . '[' . $option['id'] . ']'; + + if ( $option['type'] != 'heading' && $option['type'] != 'import_export' && ! empty( $option['type'] ) ) { + + $wp_customize->add_setting( + $option['id'], + array( + 'default' => $option['default'], + // 'type' => 'option', + // 'capabilities' => $option['permissions'], + // 'capabilities' => 'edit_theme_options', + // 'capabilities' => $this->parent->args['page_permissions'], + 'transport' => 'refresh', + 'opt_name' => $this->parent->args['opt_name'], + // 'theme_supports' => '', + // 'sanitize_callback' => '__return_false', + 'sanitize_callback' => array( $this, '_field_validation' ), + // 'sanitize_js_callback' =>array( &$parent, '_field_input' ), + ) + ); + + } + + if ( ! empty( $option['data'] ) && empty( $option['options'] ) ) { + if ( empty( $option['args'] ) ) { + $option['args'] = array(); + } + + if ( $option['data'] == 'elusive-icons' || $option['data'] == 'elusive-icon' || $option['data'] == 'elusive' ) { + $icons_file = ReduxFramework::$_dir . 'inc/fields/select/elusive-icons.php'; + $icons_file = apply_filters( 'redux-font-icons-file', $icons_file ); + + if ( file_exists( $icons_file ) ) { + require_once $icons_file; + } + } + $option['options'] = $this->parent->get_wordpress_data( $option['data'], $option['args'] ); + } + + $class_name = 'Redux_Customizer_Control_' . $option['type']; + + do_action( 'redux/extension/customizer/control_init', $option ); + + if ( ! class_exists( $class_name ) ) { + continue; + } + + $wp_customize->add_control( + new $class_name( + $wp_customize, + $option['id'], + array( + 'label' => $option['title'], + 'section' => $section['id'], + 'settings' => $option['id'], + 'type' => 'redux-' . $option['type'], + 'field' => $option, + 'ReduxFramework' => $this->parent, + 'active_callback' => ( isset( $option['required'] ) && class_exists( 'Redux_Customizer_Active_Callback' ) ) ? array( + 'Redux_Customizer_Active_Callback', + 'evaluate', + ) : '__return_true', + 'priority' => $option['priority'], + ) + ) + ); + + $section['fields'][ $skey ]['name'] = $option['id']; + if ( ! isset( $section['fields'][ $skey ]['class'] ) ) { // No errors please + $section['fields'][ $skey ]['class'] = ''; + } + + $this->controls[ $section['fields'][ $skey ]['id'] ] = $section['fields'][ $skey ]; + + add_action( + 'redux/advanced_customizer/render/' . $option['id'], + array( + $this, + 'field_render', + ), + $option['priority'] + ); + + } + } + + } + + public function add_section( $id, $args = array(), $wp_customize ) { + + if ( is_a( $id, 'WP_Customize_Section' ) ) { + $section = $id; + } else { + + $section_class = apply_filters( 'redux/customizer/section/class_name', 'Redux_Customizer_Section' ); + $section = new $section_class( $wp_customize, $id, $args ); + } + + $wp_customize->add_section( $section, $args ); + + } + + /** + * Add a customize panel. + * + * @since 4.0.0 + * @access public + * + * @param WP_Customize_Panel|string $id Customize Panel object, or Panel ID. + * @param array $args Optional. Panel arguments. Default empty array. + */ + public function add_panel( $id, $args = array(), $wp_customize ) { + if ( is_a( $id, 'WP_Customize_Panel' ) ) { + $panel = $id; + } else { + $panel_class = apply_filters( 'redux/customizer/panel/class_name', 'Redux_Customizer_Panel' ); + $panel = new $panel_class( $wp_customize, $id, $args ); + } + + $wp_customize->add_panel( $panel, $args ); + } + + public function field_render( $option ) { + echo '1'; + preg_match_all( '/\[([^\]]*)\]/', $option->id, $matches ); + $id = $matches[1][0]; + echo $option->link(); + // $link = $option->link(); + // echo $link; + + $this->parent->_field_input( $this->controls[ $id ] ); + echo '2'; + } + + public function customizer_save_before( $plugin_options ) { + $this->before_save = $this->parent->options; + // $parent->_field_input( $plugin_options ); + } + + public function customizer_save_after( $wp_customize ) { + + if ( empty( $this->parent->options ) ) { + $this->parent->get_options(); + } + if ( empty( $this->orig_options ) && ! empty( $this->parent->options ) ) { + $this->orig_options = $this->parent->options; + } + + $options = json_decode( stripslashes_deep( $_POST['customized'] ), true ); + $compiler = false; + $changed = false; + + foreach ( $options as $key => $value ) { + if ( strpos( $key, $this->parent->args['opt_name'] ) !== false ) { + $key = str_replace( $this->parent->args['opt_name'] . '[', '', rtrim( $key, ']' ) ); + + if ( ! isset( $this->orig_options[ $key ] ) || $this->orig_options[ $key ] != $value || ( isset( $this->orig_options[ $key ] ) && ! empty( $this->orig_options[ $key ] ) && empty( $value ) ) ) { + $this->parent->options[ $key ] = $value; + $changed = true; + if ( isset( $this->parent->compiler_fields[ $key ] ) ) { + $compiler = true; + } + } + } + } + + if ( $changed ) { + $this->parent->set_options( $this->parent->options ); + if ( $compiler ) { + // Have to set this to stop the output of the CSS and typography stuff. + $this->parent->no_output = true; + $this->parent->_enqueue_output(); + do_action( "redux/options/{$this->parent->args['opt_name']}/compiler", $this->parent->options, $this->parent->compilerCSS ); + do_action( "redux/options/{$this->args['opt_name']}/compiler/advanced", $this->parent ); + } + } + + } + + /** + * Enqueue CSS/JS for preview pane + * + * @since 1.0.0 + * @access public + * @global $wp_styles + * @return void + */ + public function _enqueue_previewer() { + wp_enqueue_script( + 'redux-extension-previewer-js', + $this->_extension_url . 'assets/js/preview.js' + ); + + $localize = array( + 'save_pending' => __( 'You have changes that are not saved. Would you like to save them now?', 'redux-framework' ), + 'reset_confirm' => __( 'Are you sure? Resetting will lose all custom values.', 'redux-framework' ), + 'preset_confirm' => __( 'Your current options will be replaced with the values of this preset. Would you like to proceed?', 'redux-framework' ), + 'opt_name' => $this->args['opt_name'], + // 'folds' => $this->folds, + 'options' => $this->parent->options, + 'defaults' => $this->parent->options_defaults, + ); + + wp_localize_script( + 'redux-extension-previewer-js', + 'reduxPost', + $localize + ); + } + + /** + * Enqueue CSS/JS for the customizer controls + * + * @since 1.0.0 + * @access public + * @global $wp_styles + * @return void + */ + public function _enqueue() { + global $wp_styles; + + // wp_enqueue_style( 'wp-pointer' ); + // wp_enqueue_script( 'wp-pointer' ); + // Remove when code is in place! + // wp_enqueue_script('redux-extension-customizer-js', $this->_extension_url . 'assets/js/customizer.js'); + // Get styles + // wp_enqueue_style('redux-extension-customizer-css', $this->_extension_url . 'assets/css/customizer.css'); + + $localize = array( + 'save_pending' => __( 'You have changes that are not saved. Would you like to save them now?', 'redux-framework' ), + 'reset_confirm' => __( 'Are you sure? Resetting will lose all custom values.', 'redux-framework' ), + 'preset_confirm' => __( 'Your current options will be replaced with the values of this preset. Would you like to proceed?', 'redux-framework' ), + 'opt_name' => $this->args['opt_name'], + // 'folds' => $this->folds, + 'field' => $this->parent->options, + 'defaults' => $this->parent->options_defaults, + ); + + // Values used by the javascript + wp_localize_script( + 'redux-js', + 'redux_opts', + $localize + ); + + do_action( 'redux-enqueue-' . $this->args['opt_name'] ); + + foreach ( $this->sections as $section ) { + if ( isset( $section['fields'] ) ) { + foreach ( $section['fields'] as $field ) { + if ( isset( $field['type'] ) ) { + $field_class = 'ReduxFramework_' . $field['type']; + + if ( ! class_exists( $field_class ) ) { + $class_file = apply_filters( 'redux-typeclass-load', $this->path . 'inc/fields/' . $field['type'] . '/field_' . $field['type'] . '.php', $field_class ); + if ( $class_file ) { + /** @noinspection PhpIncludeInspection */ + require_once $class_file; + } + } + + if ( class_exists( $field_class ) && method_exists( $field_class, 'enqueue' ) ) { + $enqueue = new $field_class( '', '', $this ); + $enqueue->enqueue(); + } + } + } + } + } + } + + /** + * Register Option for use + * + * @since 1.0.0 + * @access public + * @return void + */ + public function _register_setting() { + + } + + /** + * Validate the options before insertion + * + * @since 3.0.0 + * @access public + * + * @param array $plugin_options The options array + * + * @return + */ + public function _field_validation( $value ) { + // print_r( $value ); + // print_r( $_POST ); + + return $value; + + // return $this->parent->_validate_options( $plugin_options ); + } + + /** + * HTML OUTPUT. + * + * @since 1.0.0 + * @access public + * @return void + */ + public function _customizer_html_output() { + + } + } // class + function redux_customizer_custom_validation( $field ) { + return $field; + } +} // if diff --git a/redux/ReduxCore/inc/extensions/customizer/extension_customizer.scss b/redux/ReduxCore/inc/extensions/customizer/extension_customizer.scss new file mode 100644 index 0000000..1cfd9ba --- /dev/null +++ b/redux/ReduxCore/inc/extensions/customizer/extension_customizer.scss @@ -0,0 +1,119 @@ +.redux-section { + p.customize-section-description { + margin-top: 22px; + word-break: break-word; + &.legacy { + margin-top: 7px; + } + } +} + +.control-section-themes .accordion-section-title { + margin: 0; +} + +#customize-controls { + .customize-info { + margin-bottom: 0; + } + .redux-section .accordion-section-content { + background: #FCFCFC; + } +} + +.redux-section .accordion-section-title i, +.redux-field .accordion-field-title i, +.redux-panel .accordion-section-title i { + margin-right: 5px; +} + +.accordion-section.redux-main { + background: inherit; + margin-left: inherit; + border-left: inherit; + -moz-box-shadow: inherit; + -webkit-box-shadow: inherit; + padding: inherit; + box-shadow: inherit; +} + +.redux_field_th { + padding: 13px 0px 0px 0px; +} + +.redux-main { + .redux-field-container { + padding: 10px 0; + } + .select_wrapper { + float: none; + width: 100%; + display: inline-block; + } + .select2-container { + margin-right: 0 !important; + margin-bottom: 5px !important; + width: 100% !important; + } + .select_wrapper:nth-child(odd) { + margin-right: 0; + } + .redux-option-image { + max-width: 42% !important; + margin-right: 3%; + } + .customize-control { + border-bottom: 1px solid #ddd; + padding-bottom: 4px; + } + .customize-control:last-child { + border-bottom: 0; + padding-bottom: 0; + } + .upload { + width: 100% !important; + } + h3 { + margin-top: inherit; + } + .redux-container-raw { + margin-top: 22px; + word-break: break-word; + padding: 0 !important; + } + .redux-container-password input { + width: 100%; + } +} + +.select2-drop { + z-index: 999999; +} + +.rAdsContainer { + line-height: 0; + border: 0; + /*margin-top: -15px;*/ + /*margin-bottom: -15px;*/ +} + +.customize-control-redux-raw { + list-style: none; +} + +.rAds { + position: inherit !important; + right: 0 !important; + top: 0 !important; + bottom: 0 !important; + left: 0 !important; + text-align: center; + margin-bottom: 0; + line-height: 0; + -webkit-transition: left ease-in-out .18s; + transition: left ease-in-out .18s; + img { + -webkit-transition: left ease-in-out .18s; + transition: left ease-in-out .18s; + } +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/extensions/customizer/inc/customizer_control.php b/redux/ReduxCore/inc/extensions/customizer/inc/customizer_control.php new file mode 100644 index 0000000..2378af7 --- /dev/null +++ b/redux/ReduxCore/inc/extensions/customizer/inc/customizer_control.php @@ -0,0 +1,50 @@ +redux_id = str_replace( 'customize-control-', '', 'customize-control-' . str_replace( '[', '-', str_replace( ']', '', $this->id ) ) ); + $class = 'customize-control redux-group-tab redux-field customize-control-' . $this->type; + $opt_name = explode( '[', $this->id ); + $opt_name = $opt_name[0]; + ?> +
  • + type != "repeater" ): ?> + link() ) ?> + value=""/> + + render_content(); ?> +
  • + redux_id, $this ); + } + + public function label() { + // The label has already been sanitized in the Fields class, no need to re-sanitize it. + echo $this->label; + } + + public function description() { + if ( ! empty( $this->description ) ) { + // The description has already been sanitized in the Fields class, no need to re-sanitize it. + echo '' . $this->description . ''; + } + } + + public function title() { + echo ''; + $this->label(); + $this->description(); + echo ''; + } + } + } diff --git a/redux/ReduxCore/inc/extensions/customizer/inc/customizer_devs.php b/redux/ReduxCore/inc/extensions/customizer/inc/customizer_devs.php new file mode 100644 index 0000000..8d76717 --- /dev/null +++ b/redux/ReduxCore/inc/extensions/customizer/inc/customizer_devs.php @@ -0,0 +1,43 @@ + +
  • + $key = $args[ $key ]; + } + } + $this->manager = $manager; + $this->id = $id; + if ( empty( $this->active_callback ) ) { + $this->active_callback = array( $this, 'active_callback' ); + } + self::$instance_count += 1; + $this->instance_number = self::$instance_count; + + $this->sections = array(); // Users cannot customize the $sections array. + + // TODO Redux addition + if ( isset( $args['section'] ) ) { + $this->section = $args['section']; + $this->description = isset( $this->section['desc'] ) ? $this->section['desc'] : ''; + $this->opt_name = isset( $args['opt_name'] ) ? $args['opt_name'] : ''; + } + // TODO END Redux Addition + } + + /** + * WP < 4.3 Render + * + * @since + * @access protected + */ + protected function render() { + global $wp_version; + $version = explode( '-', $wp_version ); + if ( version_compare( $version[0], '4.3', '<' ) ) { + $this->render_fallback(); + } + + } + + protected function render_fallback() { + $classes = 'accordion-section redux-main redux-panel control-section control-panel control-panel-' . esc_attr($this->type); + ?> +
  • +

    + title, array( + 'em' => array(), + 'i' => array(), + 'strong' => array(), + 'span' => array( + 'class' => array(), + 'style' => array(), + ), + ) ); + ?> + +

    +
      + + render_content(); ?> +
      +
    +
  • + +
  • +
    + ' . esc_html( $this->title ) . '' ); + ?> +
    + description ) ) : ?> +
    + description; ?> +
    + +
  • + +
  • + +
    + {{ data.title }}' ); + ?> + <# if ( data.description ) { #> + + <# } #> +
    + <# if ( data.description ) { #> +
    + {{{ data.description }}} +
    + <# } #> +
  • + $key = $args[ $key ]; + } + } + + $this->manager = $manager; + $this->id = $id; + if ( empty( $this->active_callback ) ) { + $this->active_callback = array( $this, 'active_callback' ); + } + self::$instance_count += 1; + $this->instance_number = self::$instance_count; + + $this->controls = array(); // Users cannot customize the $controls array. + + // TODO Redux addition + if ( isset( $args['section'] ) ) { + $this->section = $args['section']; + $this->description = isset( $this->section['desc'] ) ? $this->section['desc'] : ''; + $this->opt_name = isset( $args['opt_name'] ) ? $args['opt_name'] : ''; + } + } + + /** + * An Underscore (JS) template for rendering this section. + * Class variables for this section class are available in the `data` JS object; + * export custom variables by overriding {@see WP_Customize_Section::json()}. + * + * @see WP_Customize_Section::print_template() + * @since 4.3.0 + */ + protected function render_template() { + ?> +
  • +

    + {{ data.title }} + +

    +
      + +
    • +
      + +

      + + {{{ data.customizeAction }}} + {{ data.title }} +

      +
      + <# if ( data.description ) { #> +

      {{{ data.description }}}

      + <# } #> + opt_name ) && isset( $this->section ) ) { + do_action( "redux/page/{$this->opt_name}/section/before", $this->section ); + } + ?> +
    • +
    +
  • + type; + ?> +
  • +

    + title, array( + 'em' => array(), + 'i' => array(), + 'strong' => array(), + 'span' => array( + 'class' => array(), + 'style' => array(), + ), + ) ); + ?> + +

    +
      + opt_name ) && isset( $this->section ) ) { + do_action( "redux/page/{$this->opt_name}/section/before", $this->section ); + } + ?> + description ) ) : ?> +
    • +

      description; ?>

      +
    • + +
    +
  • + render_fallback(); + } + } + + } + + diff --git a/redux/ReduxCore/inc/extensions/import_export/extension_import_export.php b/redux/ReduxCore/inc/extensions/import_export/extension_import_export.php new file mode 100644 index 0000000..53ea6c7 --- /dev/null +++ b/redux/ReduxCore/inc/extensions/import_export/extension_import_export.php @@ -0,0 +1,210 @@ +. + * + * @package ReduxFramework + * @author Dovy Paukstys (dovy) + * @version 4.0.0 + */ + +// Exit if accessed directly + if ( ! defined( 'ABSPATH' ) ) { + exit; + } + +// Don't duplicate me! + if ( ! class_exists( 'ReduxFramework_extension_import_export' ) ) { + + + /** + * Main ReduxFramework import_export extension class + * + * @since 3.1.6 + */ + class ReduxFramework_extension_import_export { + + // Protected vars + protected $parent; + public $extension_url; + public $extension_dir; + public static $theInstance; + public static $version = "4.0"; + public $is_field = false; + public $field_name; + + /** + * Class Constructor. Defines the args for the extions class + * + * @since 1.0.0 + * @access public + * + * @param array $sections Panel sections. + * @param array $args Class constructor arguments. + * @param array $extra_tabs Extra panel tabs. + * + * @return void + */ + public function __construct( $parent ) { + + $this->parent = $parent; + if ( empty( $this->extension_dir ) ) { + //$this->extension_dir = trailingslashit( str_replace( '\\', '/', dirname( __FILE__ ) ) ); + } + $this->field_name = 'import_export'; + + self::$theInstance = $this; + + add_action( "wp_ajax_redux_link_options-" . $this->parent->args['opt_name'], array( + $this, + "link_options" + ) ); + add_action( "wp_ajax_nopriv_redux_link_options-" . $this->parent->args['opt_name'], array( + $this, + "link_options" + ) ); + + add_action( "wp_ajax_redux_download_options-" . $this->parent->args['opt_name'], array( + $this, + "download_options" + ) ); + add_action( "wp_ajax_nopriv_redux_download_options-" . $this->parent->args['opt_name'], array( + $this, + "download_options" + ) ); + + do_action( "redux/options/{$this->parent->args['opt_name']}/import", array( $this, 'remove_cookie' ) ); + + $this->is_field = Redux_Helpers::isFieldInUse( $parent, 'import_export' ); + + if ( ! $this->is_field && $this->parent->args['show_import_export'] ) { + $this->add_section(); + } + + add_filter( 'redux/' . $this->parent->args['opt_name'] . '/field/class/' . $this->field_name, array( + &$this, + 'overload_field_path' + ) ); // Adds the local field + + add_filter( 'upload_mimes', array( + $this, + 'custom_upload_mimes' + ) ); + + } + + /** + * Adds the appropriate mime types to WordPress + * + * @param array $existing_mimes + * + * @return array + */ + function custom_upload_mimes( $existing_mimes = array() ) { + $existing_mimes['redux'] = 'application/redux'; + + return $existing_mimes; + } + + public function add_section() { + $this->parent->sections[] = array( + 'id' => 'import/export', + 'title' => __( 'Import / Export', 'redux-framework' ), + 'heading' => '', + 'icon' => 'el el-refresh', + 'customizer' => false, + 'fields' => array( + array( + 'id' => 'redux_import_export', + 'type' => 'import_export', + //'class' => 'redux-field-init redux_remove_th', + //'title' => '', + 'full_width' => true, + ) + ), + ); + } + + function link_options() { + if ( ! isset( $_GET['secret'] ) || $_GET['secret'] != md5( md5( Redux_Helpers::get_auth_key_secret_key() ) . '-' . $this->parent->args['opt_name'] ) ) { + wp_die( 'Invalid Secret for options use' ); + exit; + } + + $var = $this->parent->options; + $var['redux-backup'] = '1'; + if ( isset( $var['REDUX_imported'] ) ) { + unset( $var['REDUX_imported'] ); + } + + echo json_encode( $var ); + + die(); + } + + public function download_options() { + if ( ! isset( $_GET['secret'] ) || $_GET['secret'] != md5( md5( Redux_Helpers::get_auth_key_secret_key() ) . '-' . $this->parent->args['opt_name'] ) ) { + wp_die( 'Invalid Secret for options use' ); + exit; + } + + $this->parent->get_options(); + $backup_options = $this->parent->options; + $backup_options['redux-backup'] = '1'; + if ( isset( $backup_options['REDUX_imported'] ) ) { + unset( $backup_options['REDUX_imported'] ); + } + + // No need to escape this, as it's been properly escaped previously and through json_encode + $content = json_encode( $backup_options ); + + if ( isset( $_GET['action'] ) && $_GET['action'] == 'redux_download_options-' . $this->parent->args['opt_name'] ) { + header( 'Content-Description: File Transfer' ); + header( 'Content-type: application/txt' ); + header( 'Content-Disposition: attachment; filename="redux_options_' . $this->parent->args['opt_name'] . '_backup_' . date( 'd-m-Y' ) . '.json"' ); + header( 'Content-Transfer-Encoding: binary' ); + header( 'Expires: 0' ); + header( 'Cache-Control: must-revalidate' ); + header( 'Pragma: public' ); + + echo $content; + exit; + } else { + header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); + header( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" ); + header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); + header( 'Cache-Control: no-store, no-cache, must-revalidate' ); + header( 'Cache-Control: post-check=0, pre-check=0', false ); + header( 'Pragma: no-cache' ); + + // Can't include the type. Thanks old Firefox and IE. BAH. + //header("Content-type: application/json"); + echo $content; + exit; + } + } + + // Forces the use of the embeded field path vs what the core typically would use + public function overload_field_path( $field ) { + return dirname( __FILE__ ) . '/' . $this->field_name . '/field_' . $this->field_name . '.php'; + } + + public function remove_cookie() { + // Remove the import/export tab cookie. + if ( $_COOKIE['redux_current_tab'] == 'import_export_default' ) { + setcookie( 'redux_current_tab', '', 1, '/' ); + $_COOKIE['redux_current_tab'] = 1; + } + } + + } + } diff --git a/redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.css b/redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.css new file mode 100644 index 0000000..70f310d --- /dev/null +++ b/redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.css @@ -0,0 +1 @@ +#redux-import-link-wrapper,#redux-import-code-wrapper{display:none}#redux-export-code,#redux-export-link-value{display:none}#redux-import-action span{color:#B94A48} diff --git a/redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.js b/redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.js new file mode 100644 index 0000000..a94b2c7 --- /dev/null +++ b/redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.js @@ -0,0 +1,198 @@ +/*global jQuery, document, redux*/ + +(function( $ ) { + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.import_export = redux.field_objects.import_export || {}; + + redux.field_objects.import_export.init = function( selector ) { + if ( !selector ) { + selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-import_export:visible' ); + } + + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + el.each( + function() { + $( '#redux-import' ).click( + function( e ) { + if ( $( '#import-code-value' ).val() === "" && $( '#import-link-value' ).val() === "" ) { + e.preventDefault(); + return false; + } + } + ); + + $( this ).find( '#redux-import-code-button' ).click( + function() { + var $el = $( '#redux-import-code-wrapper' ); + if ( $( '#redux-import-link-wrapper' ).is( ':visible' ) ) { + $( '#import-link-value' ).text( '' ); + $( '#redux-import-link-wrapper' ).slideUp( + 'fast', function() { + $el.slideDown( + 'fast', function() { + $( '#import-code-value' ).focus(); + } + ); + } + ); + } else { + if ( $el.is( ':visible' ) ) { + $el.slideUp(); + } else { + $el.slideDown( + 'medium', function() { + $( '#import-code-value' ).focus(); + } + ); + } + } + } + ); + + $( this ).find( '#redux-import-link-button' ).click( + function() { + var $el = $( '#redux-import-link-wrapper' ); + if ( $( '#redux-import-code-wrapper' ).is( ':visible' ) ) { + $( '#import-code-value' ).text( '' ); + $( '#redux-import-code-wrapper' ).slideUp( + 'fast', function() { + $el.slideDown( + 'fast', function() { + $( '#import-link-value' ).focus(); + } + ); + } + ); + } else { + if ( $el.is( ':visible' ) ) { + $el.slideUp(); + } else { + $el.slideDown( + 'medium', function() { + $( '#import-link-value' ).focus(); + } + ); + } + } + } + ); + + $( this ).find( '#redux-export-code-copy' ).click( + function() { + var $el = $( '#redux-export-code' ); + if ( $( '#redux-export-link-value' ).is( ':visible' ) ) { + $( '#redux-export-link-value' ).slideUp( + 'fast', function() { + $el.slideDown( + 'medium', function() { + var options = redux.options; + options['redux-backup'] = 1; + $( this ).text( JSON.stringify( options ) ).focus().select(); + } + ); + } + ); + } else { + if ( $el.is( ':visible' ) ) { + $el.slideUp().text( '' ); + } else { + $el.slideDown( + 'medium', function() { + var options = redux.options; + options['redux-backup'] = 1; + $( this ).text( JSON.stringify( options ) ).focus().select(); + } + ); + } + } + } + ); + + $( this ).find( 'textarea' ).focusout( + function() { + var $id = $( this ).attr( 'id' ); + var $el = $( this ); + var $container = $el; + if ( $id == "import-link-value" || $id == "import-code-value" ) { + $container = $( this ).parent(); + } + $container.slideUp( + 'medium', function() { + if ( $id != "redux-export-link-value" ) { + $el.text( '' ); + } + } + ); + } + ); + + + $( this ).find( '#redux-export-link' ).click( + function() { + var $el = $( '#redux-export-link-value' ); + if ( $( '#redux-export-code' ).is( ':visible' ) ) { + $( '#redux-export-code' ).slideUp( + 'fast', function() { + $el.slideDown().focus().select(); + } + ); + } else { + if ( $el.is( ':visible' ) ) { + $el.slideUp(); + } else { + $el.slideDown( + 'medium', function() { + $( this ).focus().select(); + } + ); + } + + } + } + ); + + var textBox1 = document.getElementById( "redux-export-code" ); + textBox1.onfocus = function() { + textBox1.select(); + // Work around Chrome's little problem + textBox1.onmouseup = function() { + // Prevent further mouseup intervention + textBox1.onmouseup = null; + return false; + }; + }; + var textBox2 = document.getElementById( "import-code-value" ); + textBox2.onfocus = function() { + textBox2.select(); + // Work around Chrome's little problem + textBox2.onmouseup = function() { + // Prevent further mouseup intervention + textBox2.onmouseup = null; + return false; + }; + }; + + } + ); + } + ); + }; +})( jQuery ); + + diff --git a/redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.min.js b/redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.min.js new file mode 100644 index 0000000..587426d --- /dev/null +++ b/redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.min.js @@ -0,0 +1 @@ +!function(o){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.import_export=redux.field_objects.import_export||{},redux.field_objects.import_export.init=function(e){e||(e=o(document).find(".redux-group-tab:visible").find(".redux-container-import_export:visible")),o(e).each(function(){var e=o(this),i=e;e.hasClass("redux-field-container")||(i=e.parents(".redux-field-container:first")),i.is(":hidden")||i.hasClass("redux-field-init")&&(i.removeClass("redux-field-init"),e.each(function(){o("#redux-import").click(function(e){if(""===o("#import-code-value").val()&&""===o("#import-link-value").val())return e.preventDefault(),!1}),o(this).find("#redux-import-code-button").click(function(){var e=o("#redux-import-code-wrapper");o("#redux-import-link-wrapper").is(":visible")?(o("#import-link-value").text(""),o("#redux-import-link-wrapper").slideUp("fast",function(){e.slideDown("fast",function(){o("#import-code-value").focus()})})):e.is(":visible")?e.slideUp():e.slideDown("medium",function(){o("#import-code-value").focus()})}),o(this).find("#redux-import-link-button").click(function(){var e=o("#redux-import-link-wrapper");o("#redux-import-code-wrapper").is(":visible")?(o("#import-code-value").text(""),o("#redux-import-code-wrapper").slideUp("fast",function(){e.slideDown("fast",function(){o("#import-link-value").focus()})})):e.is(":visible")?e.slideUp():e.slideDown("medium",function(){o("#import-link-value").focus()})}),o(this).find("#redux-export-code-copy").click(function(){var e=o("#redux-export-code");o("#redux-export-link-value").is(":visible")?o("#redux-export-link-value").slideUp("fast",function(){e.slideDown("medium",function(){var e=redux.options;e["redux-backup"]=1,o(this).text(JSON.stringify(e)).focus().select()})}):e.is(":visible")?e.slideUp().text(""):e.slideDown("medium",function(){var e=redux.options;e["redux-backup"]=1,o(this).text(JSON.stringify(e)).focus().select()})}),o(this).find("textarea").focusout(function(){var e=o(this).attr("id"),i=o(this),t=i;"import-link-value"!=e&&"import-code-value"!=e||(t=o(this).parent()),t.slideUp("medium",function(){"redux-export-link-value"!=e&&i.text("")})}),o(this).find("#redux-export-link").click(function(){var e=o("#redux-export-link-value");o("#redux-export-code").is(":visible")?o("#redux-export-code").slideUp("fast",function(){e.slideDown().focus().select()}):e.is(":visible")?e.slideUp():e.slideDown("medium",function(){o(this).focus().select()})});var e=document.getElementById("redux-export-code");e.onfocus=function(){e.select(),e.onmouseup=function(){return e.onmouseup=null,!1}};var i=document.getElementById("import-code-value");i.onfocus=function(){i.select(),i.onmouseup=function(){return i.onmouseup=null,!1}}}))})}}(jQuery); \ No newline at end of file diff --git a/redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.php b/redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.php new file mode 100644 index 0000000..0c4b74d --- /dev/null +++ b/redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.php @@ -0,0 +1,194 @@ +. + * + * @package ReduxFramework + * @author Dovy Paukstys + * @version 3.1.5 + */ + +// Exit if accessed directly + if ( ! defined( 'ABSPATH' ) ) { + exit; + } + +// Don't duplicate me! + if ( ! class_exists( 'ReduxFramework_import_export' ) ) { + + /** + * Main ReduxFramework_import_export class + * + * @since 1.0.0 + */ + class ReduxFramework_import_export extends ReduxFramework { + public $parent; + public $field; + public $value; + + public $extension_url; + public $extension_dir; + public $is_field; + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since 1.0.0 + * @access public + * @return void + */ + function __construct( $field = array(), $value = '', $parent=null ) { + + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + $this->is_field = $this->parent->extensions['import_export']->is_field; + + $this->extension_dir = ReduxFramework::$_dir . 'inc/extensions/import_export/'; + $this->extension_url = ReduxFramework::$_url . 'inc/extensions/import_export/'; + + // Set default args for this field to avoid bad indexes. Change this to anything you use. + $defaults = array( + 'options' => array(), + 'stylesheet' => '', + 'output' => true, + 'enqueue' => true, + 'enqueue_frontend' => true + ); + $this->field = wp_parse_args( $this->field, $defaults ); + + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render() { + + $secret = md5( md5( Redux_Helpers::get_auth_key_secret_key() ) . '-' . $this->parent->args['opt_name'] ); + + // No errors please + $defaults = array( + 'full_width' => true, + 'overflow' => 'inherit', + ); + + $this->field = wp_parse_args( $this->field, $defaults ); + + $bDoClose = false; + + // $this->parent->args['opt_name'] & $this->field['id'] are sanitized in the ReduxFramework class, no need to re-sanitize it. + $id = $this->parent->args['opt_name'] . '-' . $this->field['id']; + + // $this->field['type'] && $this->field['id'] is sanitized in the ReduxFramework class, no need to re-sanitize it. + ?> +

    + +

    + + + + + + +

    + +
    +

    + +

    + parent->args['opt_name'] is sanitized in the ReduxFramework class, no need to re-sanitize it. ?> + +
    + + + +

      

    + +
    +
     
    +

    + +
    +

    + +

    +
    + parent->args['opt_name'] is sanitized in the ReduxFramework class, no need to re-sanitize it. + $link = esc_url( admin_url( 'admin-ajax.php?action=redux_download_options-' . $this->parent->args['opt_name'] . '&secret=' . $secret ) ); + ?> +

    + + + +

    + +

    + + + + extension_url . 'import_export/field_import_export' . Redux_Functions::isMin() . '.js', + array( 'jquery' ), + ReduxFramework_extension_import_export::$version, + true + ); + + wp_enqueue_style( + 'redux-import-export', + $this->extension_url . 'import_export/field_import_export.css', + time(), + true + ); + + } + + /** + * Output Function. + * Used to enqueue to the front-end + * + * @since 1.0.0 + * @access public + * @return void + */ + public function output() { + + if ( $this->field['enqueue_frontend'] ) { + + } + + } + + } + } diff --git a/redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.scss b/redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.scss new file mode 100644 index 0000000..ca28584 --- /dev/null +++ b/redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.scss @@ -0,0 +1,13 @@ +#redux-import-link-wrapper, +#redux-import-code-wrapper { + display: none; +} + +#redux-export-code, +#redux-export-link-value { + display: none; +} + +#redux-import-action span { + color: #B94A48; +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/extensions/options_object/extension_options_object.php b/redux/ReduxCore/inc/extensions/options_object/extension_options_object.php new file mode 100644 index 0000000..0b5bbaf --- /dev/null +++ b/redux/ReduxCore/inc/extensions/options_object/extension_options_object.php @@ -0,0 +1,102 @@ +. + * + * @package ReduxFramework + * @author Kevin Provance (kprovance) + * @version 4.0.0 + */ + +// Exit if accessed directly + if ( ! defined( 'ABSPATH' ) ) { + exit; + } + +// Don't duplicate me! + if ( ! class_exists( 'ReduxFramework_Extension_options_object' ) ) { + + + /** + * Main ReduxFramework options_object extension class + * + * @since 3.1.6 + */ + class ReduxFramework_Extension_options_object { + + // Protected vars + protected $parent; + public $extension_url; + public $extension_dir; + public static $theInstance; + public static $version = "4.0"; + public $is_field = false; + public $field_name; + + /** + * Class Constructor. Defines the args for the extions class + * + * @since 1.0.0 + * @access public + * + * @param array $sections Panel sections. + * @param array $args Class constructor arguments. + * @param array $extra_tabs Extra panel tabs. + * + * @return void + */ + public function __construct( $parent ) { + + $this->parent = $parent; + if ( empty( $this->extension_dir ) ) { + //$this->extension_dir = trailingslashit( str_replace( '\\', '/', dirname( __FILE__ ) ) ); + } + $this->field_name = 'options_object'; + + + self::$theInstance = $this; + + $this->is_field = Redux_Helpers::isFieldInUse($parent, 'options_object'); + + if ( !$this->is_field && $this->parent->args['dev_mode'] && $this->parent->args['show_options_object'] ) { + $this->add_section(); + } + + add_filter( 'redux/' . $this->parent->args['opt_name'] . '/field/class/' . $this->field_name, array( + &$this, + 'overload_field_path' + ) ); // Adds the local field + } + + public function add_section() { + $this->parent->sections[] = array( + 'id' => 'options-object', + 'title' => __( 'Options Object', 'redux-framework' ), + 'heading' => '', + 'icon' => 'el el-info-circle', + 'customizer' => false, + 'fields' => array( + array( + 'id' => 'redux_options_object', + 'type'=> 'options_object', + 'title' => '', + ) + ), + ); + } + + // Forces the use of the embeded field path vs what the core typically would use + public function overload_field_path( $field ) { + return dirname( __FILE__ ) . '/' . $this->field_name . '/field_' . $this->field_name . '.php'; + } + } // class + } // if diff --git a/redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.css b/redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.css new file mode 100644 index 0000000..8020718 --- /dev/null +++ b/redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.css @@ -0,0 +1 @@ +#redux-object-browser{overflow:auto;word-wrap:break-word;max-height:600px;max-width:100%} diff --git a/redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.js b/redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.js new file mode 100644 index 0000000..b83ab4b --- /dev/null +++ b/redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.js @@ -0,0 +1,44 @@ +/*global redux_change, redux*/ + +(function( $ ) { + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.options_object = redux.field_objects.options_object || {}; + +// $( document ).ready( +// function() { +// redux.field_objects.import_export.init(); +// } +// ); + + redux.field_objects.options_object.init = function( selector ) { + + if ( !selector ) { + selector = $( document ).find( '.redux-container-options_object' ); + } + + var parent = selector; + + if ( !selector.hasClass( 'redux-field-container' ) ) { + parent = selector.parents( '.redux-field-container:first' ); + } + + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + + $( '#consolePrintObject' ).on( + 'click', function( e ) { + e.preventDefault(); + console.log( $.parseJSON( $( "#redux-object-json" ).html() ) ); + } + ); + + if ( typeof jsonView === 'function' ) { + jsonView( '#redux-object-json', '#redux-object-browser' ); + } + }; +})( jQuery ); \ No newline at end of file diff --git a/redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.min.js b/redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.min.js new file mode 100644 index 0000000..16c4d05 --- /dev/null +++ b/redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.min.js @@ -0,0 +1 @@ +!function(t){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.options_object=redux.field_objects.options_object||{},redux.field_objects.options_object.init=function(e){e||(e=t(document).find(".redux-container-options_object"));var o=e;e.hasClass("redux-field-container")||(o=e.parents(".redux-field-container:first")),o.hasClass("redux-field-init")&&(o.removeClass("redux-field-init"),t("#consolePrintObject").on("click",function(e){e.preventDefault(),console.log(t.parseJSON(t("#redux-object-json").html()))}),"function"==typeof jsonView&&jsonView("#redux-object-json","#redux-object-browser"))}}(jQuery); \ No newline at end of file diff --git a/redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.php b/redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.php new file mode 100644 index 0000000..c4ec7ff --- /dev/null +++ b/redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.php @@ -0,0 +1,164 @@ +. + * + * @package ReduxFramework + * @author Kevin Provance (kprovance) + * @version 3.5.4 + */ + +// Exit if accessed directly + if ( ! defined( 'ABSPATH' ) ) { + exit; + } + +// Don't duplicate me! + if ( ! class_exists( 'ReduxFramework_options_object' ) ) { + + /** + * Main ReduxFramework_options_object class + * + * @since 1.0.0 + */ + class ReduxFramework_options_object { + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since 1.0.0 + * @access public + * @return void + */ + function __construct( $field = array(), $value = '', $parent ) { + + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + $this->is_field = $this->parent->extensions['options_object']->is_field; + + $this->extension_dir = ReduxFramework::$_dir . 'inc/extensions/options_object/'; + $this->extension_url = ReduxFramework::$_url . 'inc/extensions/options_object/'; + + // Set default args for this field to avoid bad indexes. Change this to anything you use. + $defaults = array( + 'options' => array(), + 'stylesheet' => '', + 'output' => true, + 'enqueue' => true, + 'enqueue_frontend' => true + ); + $this->field = wp_parse_args( $this->field, $defaults ); + + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render() { + if ( version_compare( phpversion(), "5.3.0", ">=" ) ) { + $json = json_encode( $this->parent->options, true ); + } else { + $json = json_encode( $this->parent->options ); + } + + $defaults = array( + 'full_width' => true, + 'overflow' => 'inherit', + ); + + $this->field = wp_parse_args( $this->field, $defaults ); + + if ( $this->is_field ) { + $fullWidth = $this->field['full_width']; + } + + $bDoClose = false; + + $id = $this->parent->args['opt_name'] . '-' . $this->field['id']; + + if ( ! $this->is_field || ( $this->is_field && false == $fullWidth ) ) { ?> + + + +
    + +
    +

    +
    +
    + + +
    + +
    + + + + +
    +extension_url . 'options_object/field_options_object' . Redux_Functions::isMin() . '.js', + array( 'jquery' ), + ReduxFramework_extension_options_object::$version, + true + ); + + wp_enqueue_style( + 'redux-options-object', + $this->extension_url . 'options_object/field_options_object.css', + array(), + time(), + 'all' + ); + } + + /** + * Output Function. + * Used to enqueue to the front-end + * + * @since 1.0.0 + * @access public + * @return void + */ + public function output() { + + if ( $this->field['enqueue_frontend'] ) { + + } + } + } + } diff --git a/redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.scss b/redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.scss new file mode 100644 index 0000000..35fc9dc --- /dev/null +++ b/redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.scss @@ -0,0 +1,7 @@ +#redux-object-browser { + overflow: auto; + word-wrap: break-word; + max-height: 600px; + max-width: 100%; +} + diff --git a/redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.css b/redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.css new file mode 100644 index 0000000..01f9e6f --- /dev/null +++ b/redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.css @@ -0,0 +1 @@ +.redux-container-ace_editor .ace-wrapper{position:static}.redux-container-ace_editor .ace_editor{height:200px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-ace_editor .ace_gutter{z-index:1 !important} diff --git a/redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.css.map b/redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.css.map new file mode 100644 index 0000000..e9c1d39 --- /dev/null +++ b/redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AACI,wCAAa;EACT,QAAQ,EAAE,MAAM;AAGpB,uCAAY;EACR,MAAM,EAAE,KAAK;EACb,qBAAqB,EAAE,GAAG;EAC1B,kBAAkB,EAAE,GAAG;EACvB,aAAa,EAAE,GAAG;AAGtB,uCAAY;EACR,OAAO,EAAE,YAAY", +"sources": ["field_ace_editor.scss"], +"names": [], +"file": "field_ace_editor.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.js b/redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.js new file mode 100644 index 0000000..4c2e398 --- /dev/null +++ b/redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.js @@ -0,0 +1,58 @@ +/*global jQuery, document, redux*/ + +(function( $ ) { + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.ace_editor = redux.field_objects.ace_editor || {}; + + redux.field_objects.ace_editor.init = function( selector ) { + if ( !selector ) { + selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-ace_editor:visible' ); + } + + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + el.find( '.ace-editor' ).each( + function( index, element ) { + var area = element; + var params = JSON.parse( $( this ).parent().find( '.localize_data' ).val() ); + var editor = $( element ).attr( 'data-editor' ); + + var aceeditor = ace.edit( editor ); + aceeditor.setTheme( "ace/theme/" + jQuery( element ).attr( 'data-theme' ) ); + aceeditor.getSession().setMode( "ace/mode/" + $( element ).attr( 'data-mode' ) ); + var parent = ''; + if ( el.hasClass( 'redux-field-container' ) ) { + parent = el.attr( 'data-id' ); + } else { + parent = el.parents( '.redux-field-container:first' ).attr( 'data-id' ); + } + + aceeditor.setOptions( params ); + aceeditor.on( + 'change', function( e ) { + $( '#' + area.id ).val( aceeditor.getSession().getValue() ); + redux_change( $( element ) ); + aceeditor.resize(); + } + ); + } + ); + } + ); + }; +})( jQuery ); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.min.js b/redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.min.js new file mode 100644 index 0000000..0473959 --- /dev/null +++ b/redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.min.js @@ -0,0 +1 @@ +!function(s){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.ace_editor=redux.field_objects.ace_editor||{},redux.field_objects.ace_editor.init=function(e){e||(e=s(document).find(".redux-group-tab:visible").find(".redux-container-ace_editor:visible")),s(e).each(function(){var n=s(this),e=n;n.hasClass("redux-field-container")||(e=n.parents(".redux-field-container:first")),e.is(":hidden")||e.hasClass("redux-field-init")&&(e.removeClass("redux-field-init"),n.find(".ace-editor").each(function(e,t){var i=t,a=JSON.parse(s(this).parent().find(".localize_data").val()),d=s(t).attr("data-editor"),r=ace.edit(d);r.setTheme("ace/theme/"+jQuery(t).attr("data-theme")),r.getSession().setMode("ace/mode/"+s(t).attr("data-mode"));n.hasClass("redux-field-container")?n.attr("data-id"):n.parents(".redux-field-container:first").attr("data-id"),r.setOptions(a),r.on("change",function(e){s("#"+i.id).val(r.getSession().getValue()),redux_change(s(t)),r.resize()})}))})}}(jQuery); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.php b/redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.php new file mode 100644 index 0000000..0237e55 --- /dev/null +++ b/redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.php @@ -0,0 +1,134 @@ +. + * + * @package Redux_Field + * @subpackage ACE_Editor + * @version 3.0.0 + */ + +// Exit if accessed directly + if ( ! defined( 'ABSPATH' ) ) { + exit; + } + +// Don't duplicate me! + if ( ! class_exists( 'ReduxFramework_ace_editor' ) ) { + class ReduxFramework_ace_editor { + + public $parent; + public $field; + public $value; + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since ReduxFramework 1.0.0 + */ + function __construct( $field = array(), $value = '', $parent=null ) { + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + + if ( is_array( $this->value ) ) { + $this->value = ''; + } else { + $this->value = trim( $this->value ); + } + + if ( ! empty( $this->field['options'] ) ) { + $this->field['args'] = $this->field['options']; + unset( $this->field['options'] ); + } + + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since ReduxFramework 1.0.0 + */ + function render() { + + if ( ! isset( $this->field['mode'] ) ) { + $this->field['mode'] = 'javascript'; + } + if ( ! isset( $this->field['theme'] ) ) { + $this->field['theme'] = 'monokai'; + } + + $params = array( + 'minLines' => 10, + 'maxLines' => 30, + ); + + if ( isset( $this->field['args'] ) && ! empty( $this->field['args'] ) && is_array( $this->field['args'] ) ) { + $params = wp_parse_args( $this->field['args'], $params ); + } + + ?> +
    + + +
    value ); ?>
    +
    + parent->args['dev_mode'] ) { + if ( ! wp_style_is( 'redux-field-ace-editor-css' ) ) { + wp_enqueue_style( + 'redux-field-ace-editor-css', + ReduxFramework::$_url . 'inc/fields/ace_editor/field_ace_editor.css', + array(), + time(), + 'all' + ); + } + } + + if ( ! wp_script_is( 'ace-editor-js' ) ) { + Redux_CDN::enqueue_script( + 'ace-editor-js', + '//cdn.jsdelivr.net/ace/1.1.9/min/ace.js', + array( 'jquery' ), + '1.1.9', + true + ); + } + + if ( ! wp_script_is( 'redux-field-ace-editor-js' ) ) { + wp_enqueue_script( + 'redux-field-ace-editor-js', + ReduxFramework::$_url . 'inc/fields/ace_editor/field_ace_editor' . Redux_Functions::isMin() . '.js', + array( 'jquery', 'ace-editor-js', 'redux-js' ), + time(), + true + ); + } + } + } + } \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.scss b/redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.scss new file mode 100644 index 0000000..84d7fe2 --- /dev/null +++ b/redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.scss @@ -0,0 +1,17 @@ +.redux-container-ace_editor { + .ace-wrapper { + position: static; + } + + .ace_editor { + height: 200px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + } + + .ace_gutter { + z-index: 1 !important; + } +} + diff --git a/redux/ReduxCore/inc/fields/background/field_background.css b/redux/ReduxCore/inc/fields/background/field_background.css new file mode 100644 index 0000000..84816a5 --- /dev/null +++ b/redux/ReduxCore/inc/fields/background/field_background.css @@ -0,0 +1 @@ +.redux-main .redux-container-background .redux-background-position,.redux-main .redux-container-background .redux-background-position select,.redux-main .redux-container-background .redux-background-attachment,.redux-main .redux-container-background .redux-background-attachment select,.redux-main .redux-container-background .redux-background-clip,.redux-main .redux-container-background .redux-background-clip select,.redux-main .redux-container-background .redux-background-origin,.redux-main .redux-container-background .redux-background-origin select,.redux-main .redux-container-background .redux-background-size,.redux-main .redux-container-background .redux-background-size select,.redux-main .redux-container-background .redux-background-repeat,.redux-main .redux-container-background .redux-background-repeat select{width:200px !important;margin-right:10px;margin-bottom:7px}.redux-main .redux-container-background .background-preview{display:block;width:100%;margin:5px 0 10px;border:1px dotted lightgray}.redux-main .redux-container-background .select2-container{margin-right:10px;margin-bottom:10px}.redux-main .redux-container-background .wp-picker-container{margin-bottom:10px}.redux-main .redux-container-background .upload{width:100%;margin-bottom:8px}.redux-main .redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.wp-customizer .redux-container-background .redux-background-position,.wp-customizer .redux-container-background .redux-background-position select,.wp-customizer .redux-container-background .redux-background-attachment,.wp-customizer .redux-container-background .redux-background-attachment select,.wp-customizer .redux-container-background .redux-background-clip,.wp-customizer .redux-container-background .redux-background-clip select,.wp-customizer .redux-container-background .redux-background-origin,.wp-customizer .redux-container-background .redux-background-origin select,.wp-customizer .redux-container-background .redux-background-size,.wp-customizer .redux-container-background .redux-background-size select,.wp-customizer .redux-container-background .redux-background-repeat,.wp-customizer .redux-container-background .redux-background-repeat select{width:100% !important} diff --git a/redux/ReduxCore/inc/fields/background/field_background.css.map b/redux/ReduxCore/inc/fields/background/field_background.css.map new file mode 100644 index 0000000..78c0273 --- /dev/null +++ b/redux/ReduxCore/inc/fields/background/field_background.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AAEQ;;;;;;;;;;;uEAWgC;EAC5B,KAAK,EAAC,gBAAgB;EACtB,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,GAAG;AAItB,2DAAoB;EAChB,OAAO,EAAC,KAAK;EACb,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,UAAU;EAClB,MAAM,EAAC,oBAAoB;AAG/B,0DAAmB;EACf,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI;AAGvB,4DAAqB;EACjB,aAAa,EAAE,IAAI;AAGvB,+CAAQ;EACJ,KAAK,EAAE,IAAI;EACX,aAAa,EAAE,GAAG;AAKtB,yDAAsB;EAClB,MAAM,EAAE,IAAI;EACZ,UAAU,EAAC,GAAG;EACd,WAAW,EAAE,GAAG;EAChB,KAAK,EAAE,IAAI;EACX,aAAa,EAAE,CAAC;;AAOpB,w2BAAqW;EACjW,KAAK,EAAE,eAAe", +"sources": ["field_background.scss"], +"names": [], +"file": "field_background.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/background/field_background.js b/redux/ReduxCore/inc/fields/background/field_background.js new file mode 100644 index 0000000..eb922f8 --- /dev/null +++ b/redux/ReduxCore/inc/fields/background/field_background.js @@ -0,0 +1,324 @@ +/** + * Redux Background + * Dependencies : jquery, wp media uploader + * Feature added by : Dovy Paukstys + * Date : 07 Jan 2014 + */ + +/*global redux_change, wp, redux*/ + +(function( $ ) { + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.background = redux.field_objects.background || {}; + + redux.field_objects.background.init = function( selector ) { + if ( !selector ) { + selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-background:visible' ); + } + + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + // Remove the image button + el.find( '.redux-remove-background' ).unbind( 'click' ).on( + 'click', function( e ) { + e.preventDefault(); + redux.field_objects.background.removeImage( $( this ).parents( '.redux-container-background:first' ) ); + return false; + } + ); + + // Upload media button + el.find( '.redux-background-upload' ).unbind().on( + 'click', function( event ) { + redux.field_objects.background.addImage( + event, $( this ).parents( '.redux-container-background:first' ) + ); + } + ); + + el.find( '.redux-background-input' ).on( + 'change', function() { + redux.field_objects.background.preview( $( this ) ); + } + ); + + el.find( '.redux-color' ).wpColorPicker( + { + change: function( e, ui ) { + $( this ).val( ui.color.toString() ); + redux_change( $( this ) ); + $( '#' + e.target.id + '-transparency' ).removeAttr( 'checked' ); + redux.field_objects.background.preview( $( this ) ); + }, + + clear: function( e, ui ) { + $( this ).val( ui.color.toString() ); + redux_change( $( this ).parent().find( '.redux-color-init' ) ); + redux.field_objects.background.preview( $( this ) ); + } + } + ); + + // Replace and validate field on blur + el.find( '.redux-color' ).on( + 'blur', function() { + var value = $( this ).val(); + var id = '#' + $( this ).attr( 'id' ); + + if ( value === "transparent" ) { + $( this ).parent().parent().find( '.wp-color-result' ).css( + 'background-color', 'transparent' + ); + + el.find( id + '-transparency' ).attr( 'checked', 'checked' ); + } else { + if ( colorValidate( this ) === value ) { + if ( value.indexOf( "#" ) !== 0 ) { + $( this ).val( $( this ).data( 'oldcolor' ) ); + } + } + + el.find( id + '-transparency' ).removeAttr( 'checked' ); + } + } + ); + + el.find( '.redux-color' ).on( + 'focus', function() { + $( this ).data( 'oldcolor', $( this ).val() ); + } + ); + + el.find( '.redux-color' ).on( + 'keyup', function() { + var value = $( this ).val(); + var color = colorValidate( this ); + var id = '#' + $( this ).attr( 'id' ); + + if ( value === "transparent" ) { + $( this ).parent().parent().find( '.wp-color-result' ).css( + 'background-color', 'transparent' + ); + el.find( id + '-transparency' ).attr( 'checked', 'checked' ); + } else { + el.find( id + '-transparency' ).removeAttr( 'checked' ); + + if ( color && color !== $( this ).val() ) { + $( this ).val( color ); + } + } + } + ); + + // When transparency checkbox is clicked + el.find( '.color-transparency' ).on( + 'click', function() { + if ( $( this ).is( ":checked" ) ) { + el.find( '.redux-saved-color' ).val( $( '#' + $( this ).data( 'id' ) ).val() ); + el.find( '#' + $( this ).data( 'id' ) ).val( 'transparent' ); + el.find( '#' + $( this ).data( 'id' ) ).parent().parent().find( '.wp-color-result' ).css( + 'background-color', 'transparent' + ); + } else { + if ( el.find( '#' + $( this ).data( 'id' ) ).val() === 'transparent' ) { + var prevColor = $( '.redux-saved-color' ).val(); + + if ( prevColor === '' ) { + prevColor = $( '#' + $( this ).data( 'id' ) ).data( 'default-color' ); + } + + el.find( '#' + $( this ).data( 'id' ) ).parent().parent().find( '.wp-color-result' ).css( + 'background-color', prevColor + ); + el.find( '#' + $( this ).data( 'id' ) ).val( prevColor ); + } + } + redux.field_objects.background.preview( $( this ) ); + redux_change( $( this ) ); + } + ); + + var default_params = { + width: 'resolve', + triggerChange: true, + allowClear: true + }; + + var select2_handle = el.find( '.select2_params' ); + if ( select2_handle.size() > 0 ) { + var select2_params = select2_handle.val(); + + select2_params = JSON.parse( select2_params ); + default_params = $.extend( {}, default_params, select2_params ); + } + + el.find( " .redux-background-repeat, .redux-background-clip, .redux-background-origin, .redux-background-size, .redux-background-attachment, .redux-background-position" ).select2( default_params ); + + } + ); + }; + + // Update the background preview + redux.field_objects.background.preview = function( selector ) { + var parent = $( selector ).parents( '.redux-container-background:first' ); + var preview = $( parent ).find( '.background-preview' ); + + if ( !preview ) { // No preview present + return; + } + var hide = true; + + var css = 'height:' + preview.height() + 'px;'; + $( parent ).find( '.redux-background-input' ).each( + function() { + var data = $( this ).serializeArray(); + data = data[0]; + if ( data && data.name.indexOf( '[background-' ) != -1 ) { + if ( data.value !== "" ) { + hide = false; + data.name = data.name.split( '[background-' ); + data.name = 'background-' + data.name[1].replace( ']', '' ); + if ( data.name == "background-image" ) { + css += data.name + ':url("' + data.value + '");'; + } else { + css += data.name + ':' + data.value + ';'; + } + } + } + } + ); + if ( !hide ) { + preview.attr( 'style', css ).fadeIn(); + } else { + preview.slideUp(); + } + + + }; + + // Add a file via the wp.media function + redux.field_objects.background.addImage = function( event, selector ) { + event.preventDefault(); + + var frame; + var jQueryel = $( this ); + + // If the media frame already exists, reopen it. + if ( frame ) { + frame.open(); + return; + } + + // Create the media frame. + frame = wp.media( + { + multiple: false, + library: { + //type: 'image' //Only allow images + }, + // Set the title of the modal. + title: jQueryel.data( 'choose' ), + // Customize the submit button. + button: { + // Set the text of the button. + text: jQueryel.data( 'update' ) + // Tell the button not to close the modal, since we're + // going to refresh the page when the image is selected. + + } + } + ); + + // When an image is selected, run a callback. + frame.on( + 'select', function() { + // Grab the selected attachment. + var attachment = frame.state().get( 'selection' ).first(); + frame.close(); + + //console.log(attachment.attributes.type); + + if ( attachment.attributes.type !== "image" ) { + return; + } + + selector.find( '.upload' ).val( attachment.attributes.url ); + selector.find( '.upload-id' ).val( attachment.attributes.id ); + selector.find( '.upload-height' ).val( attachment.attributes.height ); + selector.find( '.upload-width' ).val( attachment.attributes.width ); + redux_change( $( selector ).find( '.upload-id' ) ); + var thumbSrc = attachment.attributes.url; + if ( typeof attachment.attributes.sizes !== 'undefined' && typeof attachment.attributes.sizes.thumbnail !== 'undefined' ) { + thumbSrc = attachment.attributes.sizes.thumbnail.url; + } else if ( typeof attachment.attributes.sizes !== 'undefined' ) { + var height = attachment.attributes.height; + for ( var key in attachment.attributes.sizes ) { + var object = attachment.attributes.sizes[key]; + if ( object.height < height ) { + height = object.height; + thumbSrc = object.url; + } + } + } else { + thumbSrc = attachment.attributes.icon; + } + selector.find( '.upload-thumbnail' ).val( thumbSrc ); + if ( !selector.find( '.upload' ).hasClass( 'noPreview' ) ) { + selector.find( '.screenshot' ).empty().hide().append( '' ).slideDown( 'fast' ); + } + + selector.find( '.redux-remove-background' ).removeClass( 'hide' );//show "Remove" button + selector.find( '.redux-background-input-properties' ).slideDown(); + redux.field_objects.background.preview( selector.find( '.upload' ) ); + } + ); + + // Finally, open the modal. + frame.open(); + }; + + // Update the background preview + redux.field_objects.background.removeImage = function( selector ) { + + // This shouldn't have been run... + if ( !selector.find( '.redux-remove-background' ).addClass( 'hide' ) ) { + return; + } + selector.find( '.redux-remove-background' ).addClass( 'hide' ); //hide "Remove" button + + selector.find( '.upload' ).val( '' ); + selector.find( '.upload-id' ).val( '' ); + selector.find( '.upload-height' ).val( '' ); + selector.find( '.upload-width' ).val( '' ); + redux_change( $( selector ).find( '.upload-id' ) ); + selector.find( '.redux-background-input-properties' ).hide(); + var screenshot = selector.find( '.screenshot' ); + + // Hide the screenshot + screenshot.slideUp(); + + selector.find( '.remove-file' ).unbind(); + // We don't display the upload button if .upload-notice is present + // This means the user doesn't have the WordPress 3.5 Media Library Support + if ( $( '.section-upload .upload-notice' ).length > 0 ) { + $( '.redux-background-upload' ).remove(); + } + }; +})( jQuery ); diff --git a/redux/ReduxCore/inc/fields/background/field_background.min.js b/redux/ReduxCore/inc/fields/background/field_background.min.js new file mode 100644 index 0000000..0d2d15e --- /dev/null +++ b/redux/ReduxCore/inc/fields/background/field_background.min.js @@ -0,0 +1 @@ +!function(o){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.background=redux.field_objects.background||{},redux.field_objects.background.init=function(e){e||(e=o(document).find(".redux-group-tab:visible").find(".redux-container-background:visible")),o(e).each(function(){var a=o(this),e=a;if(a.hasClass("redux-field-container")||(e=a.parents(".redux-field-container:first")),!e.is(":hidden")&&e.hasClass("redux-field-init")){e.removeClass("redux-field-init"),a.find(".redux-remove-background").unbind("click").on("click",function(e){return e.preventDefault(),redux.field_objects.background.removeImage(o(this).parents(".redux-container-background:first")),!1}),a.find(".redux-background-upload").unbind().on("click",function(e){redux.field_objects.background.addImage(e,o(this).parents(".redux-container-background:first"))}),a.find(".redux-background-input").on("change",function(){redux.field_objects.background.preview(o(this))}),a.find(".redux-color").wpColorPicker({change:function(e,i){o(this).val(i.color.toString()),redux_change(o(this)),o("#"+e.target.id+"-transparency").removeAttr("checked"),redux.field_objects.background.preview(o(this))},clear:function(e,i){o(this).val(i.color.toString()),redux_change(o(this).parent().find(".redux-color-init")),redux.field_objects.background.preview(o(this))}}),a.find(".redux-color").on("blur",function(){var e=o(this).val(),i="#"+o(this).attr("id");"transparent"===e?(o(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),a.find(i+"-transparency").attr("checked","checked")):(colorValidate(this)===e&&0!==e.indexOf("#")&&o(this).val(o(this).data("oldcolor")),a.find(i+"-transparency").removeAttr("checked"))}),a.find(".redux-color").on("focus",function(){o(this).data("oldcolor",o(this).val())}),a.find(".redux-color").on("keyup",function(){var e=o(this).val(),i=colorValidate(this),r="#"+o(this).attr("id");"transparent"===e?(o(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),a.find(r+"-transparency").attr("checked","checked")):(a.find(r+"-transparency").removeAttr("checked"),i&&i!==o(this).val()&&o(this).val(i))}),a.find(".color-transparency").on("click",function(){if(o(this).is(":checked"))a.find(".redux-saved-color").val(o("#"+o(this).data("id")).val()),a.find("#"+o(this).data("id")).val("transparent"),a.find("#"+o(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent");else if("transparent"===a.find("#"+o(this).data("id")).val()){var e=o(".redux-saved-color").val();""===e&&(e=o("#"+o(this).data("id")).data("default-color")),a.find("#"+o(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",e),a.find("#"+o(this).data("id")).val(e)}redux.field_objects.background.preview(o(this)),redux_change(o(this))});var i={width:"resolve",triggerChange:!0,allowClear:!0},r=a.find(".select2_params");if(0').slideDown("fast"),d.find(".redux-remove-background").removeClass("hide"),d.find(".redux-background-input-properties").slideDown(),redux.field_objects.background.preview(d.find(".upload"))}}),n.open()},redux.field_objects.background.removeImage=function(e){e.find(".redux-remove-background").addClass("hide")&&(e.find(".redux-remove-background").addClass("hide"),e.find(".upload").val(""),e.find(".upload-id").val(""),e.find(".upload-height").val(""),e.find(".upload-width").val(""),redux_change(o(e).find(".upload-id")),e.find(".redux-background-input-properties").hide(),e.find(".screenshot").slideUp(),e.find(".remove-file").unbind(),0. + * + * @package ReduxFramework + * @subpackage Field_Background + * @author Dovy Paukstys + * @version 3.1.5 + */ +// Exit if accessed directly + if ( ! defined( 'ABSPATH' ) ) { + exit; + } + +// Don't duplicate me! + if ( ! class_exists( 'ReduxFramework_background' ) ) { + + /** + * Main ReduxFramework_background class + * + * @since 3.1.5 + */ + class ReduxFramework_background { + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since 3.1.5 + * @access public + * @return void + */ + function __construct( $field = array(), $value = '', $parent=null ) { + + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render() { + + $defaults = array( + 'background-color' => true, + 'background-repeat' => true, + 'background-attachment' => true, + 'background-position' => true, + 'background-image' => true, + 'background-gradient' => false, + 'background-clip' => false, + 'background-origin' => false, + 'background-size' => true, + 'preview_media' => false, + 'preview' => true, + 'preview_height' => '200px', + 'transparent' => true, + ); + + $this->field = wp_parse_args( $this->field, $defaults ); + + // No errors please + $defaults = array( + 'background-color' => '', + 'background-repeat' => '', + 'background-attachment' => '', + 'background-position' => '', + 'background-image' => '', + 'background-clip' => '', + 'background-origin' => '', + 'background-size' => '', + 'media' => array(), + ); + + $this->value = wp_parse_args( $this->value, $defaults ); + + $defaults = array( + 'id' => '', + 'width' => '', + 'height' => '', + 'thumbnail' => '', + ); + + $this->value['media'] = wp_parse_args( $this->value['media'], $defaults ); + + // select2 args + if ( isset( $this->field['select2'] ) ) { // if there are any let's pass them to js + $select2_params = json_encode( $this->field['select2'] ); + $select2_params = htmlspecialchars( $select2_params, ENT_QUOTES ); + + echo ''; + } + + if ( $this->field['background-color'] === true ) { + + if ( isset( $this->value['color'] ) && empty( $this->value['background-color'] ) ) { + $this->value['background-color'] = $this->value['color']; + } + + echo ''; + echo ''; + + if ( ! isset( $this->field['transparent'] ) || $this->field['transparent'] !== false ) { + $tChecked = ""; + if ( $this->value['background-color'] == "transparent" ) { + $tChecked = ' checked="checked"'; + } + echo ''; + } + + if ( $this->field['background-repeat'] === true || $this->field['background-position'] === true || $this->field['background-attachment'] === true ) { + echo '
    '; + } + } + + + if ( $this->field['background-repeat'] === true ) { + $array = array( + 'no-repeat' => 'No Repeat', + 'repeat' => 'Repeat All', + 'repeat-x' => 'Repeat Horizontally', + 'repeat-y' => 'Repeat Vertically', + 'inherit' => 'Inherit', + ); + echo ''; + } + + if ( $this->field['background-clip'] === true ) { + $array = array( + 'inherit' => 'Inherit', + 'border-box' => 'Border Box', + 'content-box' => 'Content Box', + 'padding-box' => 'Padding Box', + ); + echo ''; + } + + if ( $this->field['background-origin'] === true ) { + $array = array( + 'inherit' => 'Inherit', + 'border-box' => 'Border Box', + 'content-box' => 'Content Box', + 'padding-box' => 'Padding Box', + ); + echo ''; + } + + if ( $this->field['background-size'] === true ) { + $array = array( + 'inherit' => 'Inherit', + 'cover' => 'Cover', + 'contain' => 'Contain', + ); + echo ''; + } + + if ( $this->field['background-attachment'] === true ) { + $array = array( + 'fixed' => 'Fixed', + 'scroll' => 'Scroll', + 'inherit' => 'Inherit', + ); + echo ''; + } + + if ( $this->field['background-position'] === true ) { + $array = array( + 'left top' => 'Left Top', + 'left center' => 'Left center', + 'left bottom' => 'Left Bottom', + 'center top' => 'Center Top', + 'center center' => 'Center Center', + 'center bottom' => 'Center Bottom', + 'right top' => 'Right Top', + 'right center' => 'Right center', + 'right bottom' => 'Right Bottom', + ); + echo ''; + } + + if ( $this->field['background-image'] === true ) { + echo '
    '; + + if ( empty( $this->value ) && ! empty( $this->field['default'] ) ) { // If there are standard values and value is empty + if ( is_array( $this->field['default'] ) ) { + if ( ! empty( $this->field['default']['media']['id'] ) ) { + $this->value['media']['id'] = $this->field['default']['media']['id']; + } else if ( ! empty( $this->field['default']['id'] ) ) { + $this->value['media']['id'] = $this->field['default']['id']; + } + + if ( ! empty( $this->field['default']['url'] ) ) { + $this->value['background-image'] = $this->field['default']['url']; + } else if ( ! empty( $this->field['default']['media']['url'] ) ) { + $this->value['background-image'] = $this->field['default']['media']['url']; + } else if ( ! empty( $this->field['default']['background-image'] ) ) { + $this->value['background-image'] = $this->field['default']['background-image']; + } + } else { + if ( is_numeric( $this->field['default'] ) ) { // Check if it's an attachment ID + $this->value['media']['id'] = $this->field['default']; + } else { // Must be a URL + $this->value['background-image'] = $this->field['default']; + } + } + } + + + if ( empty( $this->value['background-image'] ) && ! empty( $this->value['media']['id'] ) ) { + $img = wp_get_attachment_image_src( $this->value['media']['id'], 'full' ); + $this->value['background-image'] = $img[0]; + $this->value['media']['width'] = $img[1]; + $this->value['media']['height'] = $img[2]; + } + + $hide = 'hide '; + + if ( ( isset( $this->field['preview_media'] ) && $this->field['preview_media'] === false ) ) { + $this->field['class'] .= " noPreview"; + } + + if ( ( ! empty( $this->field['background-image'] ) && $this->field['background-image'] === true ) || isset( $this->field['preview'] ) && $this->field['preview'] === false ) { + $hide = ''; + } + + $placeholder = isset( $this->field['placeholder'] ) ? $this->field['placeholder'] : __( 'No media selected', 'redux-framework' ); + + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + + //Preview + $hide = ''; + + if ( ( isset( $this->field['preview_media'] ) && $this->field['preview_media'] === false ) || empty( $this->value['background-image'] ) ) { + $hide = 'hide '; + } + + if ( empty( $this->value['media']['thumbnail'] ) && ! empty( $this->value['background-image'] ) ) { // Just in case + if ( ! empty( $this->value['media']['id'] ) ) { + $image = wp_get_attachment_image_src( $this->value['media']['id'], array( + 150, + 150 + ) ); + $this->value['media']['thumbnail'] = $image[0]; + } else { + $this->value['media']['thumbnail'] = $this->value['background-image']; + } + } + + echo '
    '; + echo ''; + echo ''; + echo ''; + echo '
    '; + + //Upload controls DIV + echo '
    '; + + //If the user has WP3.5+ show upload/remove button + echo '' . __( 'Upload', 'redux-framework' ) . ''; + + $hide = ''; + if ( empty( $this->value['background-image'] ) || $this->value['background-image'] == '' ) { + $hide = ' hide'; + } + + echo '' . __( 'Remove', 'redux-framework' ) . ''; + + echo '
    '; + } + + + /** + * Preview + * */ + if ( ! isset( $this->field['preview'] ) || $this->field['preview'] !== false ): + + $css = $this->getCSS(); + if ( empty( $css ) ) { + $css = "display:none;"; + } + $css .= "height: " . $this->field['preview_height'] . ";"; + echo '

     

    '; + + endif; + } + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since 1.0.0 + * @access public + * @return void + */ + public function enqueue() { + if ( function_exists( 'wp_enqueue_media' ) ) { + wp_enqueue_media(); + } else { + if (!wp_script_is ( 'media-upload' )) { + wp_enqueue_script( 'media-upload' ); + } + } + + if (!wp_style_is ( 'select2-css' )) { + wp_enqueue_style( 'select2-css' ); + } + + if (!wp_style_is ( 'wp-color-picker' )) { + wp_enqueue_style( 'wp-color-picker' ); + } + + if (!wp_script_is ( 'redux-field-background-js' )) { + wp_enqueue_script( + 'redux-field-background-js', + ReduxFramework::$_url . 'inc/fields/background/field_background' . Redux_Functions::isMin() . '.js', + array( 'jquery', 'wp-color-picker', 'select2-js', 'redux-js' ), + time(), + true + ); + } + + if ($this->parent->args['dev_mode']) { + if (!wp_style_is ( 'redux-field-background-css' )) { + wp_enqueue_style( + 'redux-field-background-css', + ReduxFramework::$_url . 'inc/fields/background/field_background.css', + array(), + time(), + 'all' + ); + } + + if (!wp_style_is ( 'redux-color-picker-css' )) { + wp_enqueue_style( 'redux-color-picker-css' ); + } + } + } + + public static function getCSS( $value = array() ) { + + $css = ''; + + if ( ! empty( $value ) && is_array( $value ) ) { + foreach ( $value as $key => $value ) { + if ( ! empty( $value ) && $key != "media" ) { + if ( $key == "background-image" ) { + $css .= $key . ":url('" . $value . "');"; + } else { + $css .= $key . ":" . $value . ";"; + } + } + } + } + + return $css; + } + + public function output() { + $style = $this->getCSS( $this->value ); + + if ( ! empty( $style ) ) { + + if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { + $keys = implode( ",", $this->field['output'] ); + $this->parent->outputCSS .= $keys . "{" . $style . '}'; + } + + if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { + $keys = implode( ",", $this->field['compiler'] ); + $this->parent->compilerCSS .= $keys . "{" . $style . '}'; + } + } + } + } + } diff --git a/redux/ReduxCore/inc/fields/background/field_background.scss b/redux/ReduxCore/inc/fields/background/field_background.scss new file mode 100644 index 0000000..634f0f7 --- /dev/null +++ b/redux/ReduxCore/inc/fields/background/field_background.scss @@ -0,0 +1,59 @@ +.redux-main { + .redux-container-background { + .redux-background-position, + .redux-background-position select, + .redux-background-attachment, + .redux-background-attachment select, + .redux-background-clip, + .redux-background-clip select, + .redux-background-origin, + .redux-background-origin select, + .redux-background-size, + .redux-background-size select, + .redux-background-repeat, + .redux-background-repeat select { + width:200px !important; + margin-right: 10px; + margin-bottom: 7px; + } + + .background-preview { + display:block; + width: 100%; + margin: 5px 0 10px; + border:1px dotted lightgray; + } + + .select2-container { + margin-right: 10px; + margin-bottom: 10px; + } + + .wp-picker-container { + margin-bottom: 10px; + } + + .upload { + width: 100%; + margin-bottom: 8px; + } + } + + .redux-container-select { + li.ui-state-highlight { + height: 20px; + margin-top:2px; + margin-left: 5px; + width: 64px; + margin-bottom: 0; + } + } +} + +.wp-customizer { + .redux-container-background { + .redux-background-position, .redux-background-position select, .redux-background-attachment, .redux-background-attachment select, .redux-background-clip, .redux-background-clip select, .redux-background-origin, .redux-background-origin select, .redux-background-size, .redux-background-size select, .redux-background-repeat, .redux-background-repeat select { + width: 100% !important; + } + } +} diff --git a/redux/ReduxCore/inc/fields/border/field_border.css b/redux/ReduxCore/inc/fields/border/field_border.css new file mode 100644 index 0000000..dd931ce --- /dev/null +++ b/redux/ReduxCore/inc/fields/border/field_border.css @@ -0,0 +1 @@ +.redux-container-border .select2-container{float:left;display:block;margin-right:10px}.redux-container-border .select_wrapper{float:left;width:inherit}.redux-container-border .select_wrapper select{width:80px;float:left}.redux-container-border .field-border-input{margin-right:10px;margin-bottom:7px}.redux-container-border .wp-picker-container{margin-top:2px}@media screen and (max-width: 782px){.redux-container-border .field-border-input input{display:inline-block !important;width:100px !important}.redux-container-border .field-border-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-border .select_wrapper{margin-top:6px}} diff --git a/redux/ReduxCore/inc/fields/border/field_border.css.map b/redux/ReduxCore/inc/fields/border/field_border.css.map new file mode 100644 index 0000000..14165e5 --- /dev/null +++ b/redux/ReduxCore/inc/fields/border/field_border.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AACI,0CAAmB;EACf,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,KAAK;EACd,YAAY,EAAE,IAAI;AAGtB,uCAAgB;EACZ,KAAK,EAAE,IAAI;EAMX,KAAK,EAAE,OAAO;EALd,8CAAO;IACH,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;AAMnB,2CAAoB;EAChB,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,GAAG;AAGtB,4CAAqB;EACjB,UAAU,EAAE,GAAG;;AAIvB,oCAAqC;EAGzB,iDAAM;IACF,OAAO,EAAE,uBAAuB;IAChC,KAAK,EAAE,gBAAgB;EAG3B,mDAAQ;IACJ,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,GAAG;EAIxB,uCAAgB;IACZ,UAAU,EAAE,GAAG", +"sources": ["field_border.scss"], +"names": [], +"file": "field_border.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/border/field_border.js b/redux/ReduxCore/inc/fields/border/field_border.js new file mode 100644 index 0000000..62f43bc --- /dev/null +++ b/redux/ReduxCore/inc/fields/border/field_border.js @@ -0,0 +1,131 @@ +/* + Field Border (border) + */ + +/*global redux_change, wp, redux*/ + +(function( $ ) { + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.border = redux.field_objects.border || {}; + + redux.field_objects.border.init = function( selector ) { + if ( !selector ) { + selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-border:visible' ); + } + + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + el.find( ".redux-border-top, .redux-border-right, .redux-border-bottom, .redux-border-left, .redux-border-all" ).numeric( + { + allowMinus: false + } + ); + + var default_params = { + triggerChange: true, + allowClear: true + }; + + var select2_handle = el.find( '.redux-container-border' ).find( '.select2_params' ); + + if ( select2_handle.size() > 0 ) { + var select2_params = select2_handle.val(); + + select2_params = JSON.parse( select2_params ); + default_params = $.extend( {}, default_params, select2_params ); + } + + el.find( ".redux-border-style" ).select2( default_params ); + + el.find( '.redux-border-input' ).on( + 'change', function() { + var units = $( this ).parents( '.redux-field:first' ).find( '.field-units' ).val(); + if ( $( this ).parents( '.redux-field:first' ).find( '.redux-border-units' ).length !== 0 ) { + units = $( this ).parents( '.redux-field:first' ).find( '.redux-border-units option:selected' ).val(); + } + var value = $( this ).val(); + if ( typeof units !== 'undefined' && value ) { + value += units; + } + if ( $( this ).hasClass( 'redux-border-all' ) ) { + $( this ).parents( '.redux-field:first' ).find( '.redux-border-value' ).each( + function() { + $( this ).val( value ); + } + ); + } else { + $( '#' + $( this ).attr( 'rel' ) ).val( value ); + } + } + ); + + el.find( '.redux-border-units' ).on( + 'change', function() { + $( this ).parents( '.redux-field:first' ).find( '.redux-border-input' ).change(); + } + ); + + el.find( '.redux-color-init' ).wpColorPicker( + { + change: function( e, ui ) { + $( this ).val( ui.color.toString() ); + redux_change( $( this ) ); + el.find( '#' + e.target.getAttribute( 'data-id' ) + '-transparency' ).removeAttr( 'checked' ); + }, + + clear: function( e, ui ) { + $( this ).val( ui.color.toString() ); + redux_change( $( this ).parent().find( '.redux-color-init' ) ); + } + } + ); + + el.find( '.redux-color' ).on( + 'keyup', function() { + var color = colorValidate( this ); + + if ( color && color !== $( this ).val() ) { + $( this ).val( color ); + } + } + ); + + // Replace and validate field on blur + el.find( '.redux-color' ).on( + 'blur', function() { + var value = $( this ).val(); + + if ( colorValidate( this ) === value ) { + if ( value.indexOf( "#" ) !== 0 ) { + $( this ).val( $( this ).data( 'oldcolor' ) ); + } + } + } + ); + + // Store the old valid color on keydown + el.find( '.redux-color' ).on( + 'keydown', function() { + $( this ).data( 'oldkeypress', $( this ).val() ); + } + ); + } + ); + }; +})( jQuery ); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/border/field_border.min.js b/redux/ReduxCore/inc/fields/border/field_border.min.js new file mode 100644 index 0000000..b21df9f --- /dev/null +++ b/redux/ReduxCore/inc/fields/border/field_border.min.js @@ -0,0 +1 @@ +!function(n){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.border=redux.field_objects.border||{},redux.field_objects.border.init=function(e){e||(e=n(document).find(".redux-group-tab:visible").find(".redux-container-border:visible")),n(e).each(function(){var i=n(this),e=i;if(i.hasClass("redux-field-container")||(e=i.parents(".redux-field-container:first")),!e.is(":hidden")&&e.hasClass("redux-field-init")){e.removeClass("redux-field-init"),i.find(".redux-border-top, .redux-border-right, .redux-border-bottom, .redux-border-left, .redux-border-all").numeric({allowMinus:!1});var r={triggerChange:!0,allowClear:!0},d=i.find(".redux-container-border").find(".select2_params");if(0. + * + * @package Redux_Field + * @subpackage Border + * @version 3.0.0 + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +// Don't duplicate me! +if ( ! class_exists( 'ReduxFramework_border' ) ) { + + class ReduxFramework_border { + + public $parent; + public $field; + public $value; + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since ReduxFramework 1.0.0 + */ + function __construct( $field = array(), $value = '', $parent=null ) { + + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + } //function + + private function stripAlphas($s) { + + // Regex is our friend. THERE ARE FOUR LIGHTS!! + return preg_replace('/[^\d.-]/', '', $s); + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since ReduxFramework 1.0.0 + */ + function render() { + + // No errors please + $defaults = array( + 'top' => true, + 'bottom' => true, + 'all' => true, + 'style' => true, + 'color' => true, + 'left' => true, + 'right' => true, + ); + + $this->field = wp_parse_args( $this->field, $defaults ); + + $defaults = array( + 'top' => '', + 'right' => '', + 'bottom' => '', + 'left' => '', + 'color' => '', + 'style' => '', + ); + + $this->value = wp_parse_args( $this->value, $defaults ); + + $value = array( + 'top' => isset( $this->value['border-top'] ) ? filter_var( $this->value['border-top'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) : filter_var( $this->value['top'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ), + 'right' => isset( $this->value['border-right'] ) ? filter_var( $this->value['border-right'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) : filter_var( $this->value['right'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ), + 'bottom' => isset( $this->value['border-bottom'] ) ? filter_var( $this->value['border-bottom'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) : filter_var( $this->value['bottom'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ), + 'left' => isset( $this->value['border-left'] ) ? filter_var( $this->value['border-left'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) : filter_var( $this->value['left'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ), + 'color' => isset( $this->value['border-color'] ) ? $this->value['border-color'] : $this->value['color'], + 'style' => isset( $this->value['border-style'] ) ? $this->value['border-style'] : $this->value['style'] + ); + + if ( ( isset( $this->value['width'] ) || isset( $this->value['border-width'] ) ) ) { + if ( isset( $this->value['border-width'] ) && ! empty( $this->value['border-width'] ) ) { + $this->value['width'] = $this->value['border-width']; + } + + $this->value['width'] = $this->stripAlphas($this->value['width']); + + $value['top'] = $this->value['width']; + $value['right'] = $this->value['width']; + $value['bottom'] = $this->value['width']; + $value['left'] = $this->value['width']; + } + + $this->value = $value; + + $defaults = array( + 'top' => '', + 'right' => '', + 'bottom' => '', + 'left' => '', + ); + + $this->value = wp_parse_args( $this->value, $defaults ); + + if ( isset( $this->field['select2'] ) ) { // if there are any let's pass them to js + $select2_params = json_encode( $this->field['select2'] ); + $select2_params = htmlspecialchars( $select2_params, ENT_QUOTES ); + + echo ''; + } + + + echo ''; + + if ( isset( $this->field['all'] ) && $this->field['all'] == true ) { + echo '
    '; + } + + echo ''; + echo ''; + echo ''; + echo ''; + + if ( ! isset( $this->field['all'] ) || $this->field['all'] !== true ) { + /** + * Top + * */ + if ( $this->field['top'] === true ) { + echo '
    '; + } + + /** + * Right + * */ + if ( $this->field['right'] === true ) { + echo '
    '; + } + + /** + * Bottom + * */ + if ( $this->field['bottom'] === true ) { + echo '
    '; + } + + /** + * Left + * */ + if ( $this->field['left'] === true ) { + echo '
    '; + } + } + + /** + * Border-style + * */ + if ( $this->field['style'] != false ) { + $options = array( + 'solid' => 'Solid', + 'dashed' => 'Dashed', + 'dotted' => 'Dotted', + 'double' => "Double", + 'none' => 'None' + ); + echo ''; + } else { + echo ''; + } + + /** + * Color + * */ + if ( $this->field['color'] != false ) { + $default = isset( $this->field['default']['border-color'] ) ? $this->field['default']['border-color'] : ''; + + + if ( empty( $default ) ) { + $default = ( isset( $this->field['default']['color'] ) ) ? $this->field['default']['color'] : '#ffffff'; + } + + echo ''; + } else { + echo ''; + } + } + + //function + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since ReduxFramework 1.0.0 + */ + function enqueue() { + $min = Redux_Functions::isMin(); + + if (!wp_style_is ( 'select2-css' )) { + wp_enqueue_style( 'select2-css' ); + } + + if (!wp_style_is ( 'wp-color-picker' )) { + wp_enqueue_style( 'wp-color-picker' ); + } + + if (!wp_script_is ( 'redux-field-border-js' )) { + wp_enqueue_script( + 'redux-field-border-js', + ReduxFramework::$_url . 'inc/fields/border/field_border' . $min . '.js', + array( 'jquery', 'select2-js', 'wp-color-picker', 'redux-js' ), + time(), + true + ); + } + + if ($this->parent->args['dev_mode']) { + if (!wp_style_is ( 'redux-color-picker-css' )) { + wp_enqueue_style( 'redux-color-picker-css' ); + } + + if (!wp_style_is ( 'redux-field-border-css' )) { + wp_enqueue_style( + 'redux-field-border-css', + ReduxFramework::$_url . 'inc/fields/border/field_border.css', + array(), + time(), + 'all' + ); + } + } + } //function + + public function output() { + if ( isset( $this->field['all'] ) && true == $this->field['all'] ) { + $borderWidth = isset( $this->value['border-width'] ) ? $this->value['border-width'] : '0px'; + $val = isset( $this->value['border-top'] ) ? $this->value['border-top'] : $borderWidth; + + $this->value['border-top'] = $val; + $this->value['border-bottom'] = $val; + $this->value['border-left'] = $val; + $this->value['border-right'] = $val; + } + + $cleanValue = array( + 'color' => ! empty( $this->value['border-color'] ) ? $this->value['border-color'] : '', + 'style' => ! empty( $this->value['border-style'] ) ? $this->value['border-style'] : '' + ); + + $borderWidth = ''; + if ( isset( $this->value['border-width'] ) ) { + $borderWidth = $this->value['border-width']; + } + + $this->field['top'] = isset( $this->field['top'] ) ? $this->field['top'] : true; + $this->field['bottom'] = isset( $this->field['bottom'] ) ? $this->field['bottom'] : true; + $this->field['left'] = isset( $this->field['left'] ) ? $this->field['left'] : true; + $this->field['right'] = isset( $this->field['right'] ) ? $this->field['right'] : true; + + if ( $this->field['top'] === true ) { + $cleanValue['top'] = ! empty( $this->value['border-top'] ) ? $this->value['border-top'] : $borderWidth; + } + + if ( $this->field['bottom'] == true ) { + $cleanValue['bottom'] = ! empty( $this->value['border-bottom'] ) ? $this->value['border-bottom'] : $borderWidth; + } + + if ( $this->field['left'] === true ) { + $cleanValue['left'] = ! empty( $this->value['border-left'] ) ? $this->value['border-left'] : $borderWidth; + } + + if ( $this->field['right'] === true ) { + $cleanValue['right'] = ! empty( $this->value['border-right'] ) ? $this->value['border-right'] : $borderWidth; + } + + $style = ""; + + //absolute, padding, margin + if ( ! isset( $this->field['all'] ) || $this->field['all'] != true ) { + foreach ( $cleanValue as $key => $value ) { + if ( $key == "color" || $key == "style" ) { + continue; + } + if (!empty($value)) { + $style .= 'border-' . $key . ':' . $value . ' ' . $cleanValue['style'] . ' ' . $cleanValue['color'] . ';'; + } + } + } else { + if (!empty($cleanValue['top'])) { + $style .= 'border:' . $cleanValue['top'] . ' ' . $cleanValue['style'] . ' ' . $cleanValue['color'] . ';'; + } + } + + if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { + $keys = implode( ",", $this->field['output'] ); + + if (!empty($style)) { + $this->parent->outputCSS .= $keys . "{" . $style . '}'; + } + } + + if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { + $keys = implode( ",", $this->field['compiler'] ); + + if (!empty($style)) { + $this->parent->compilerCSS .= $keys . "{" . $style . '}'; + } + } + } + } //class +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/border/field_border.scss b/redux/ReduxCore/inc/fields/border/field_border.scss new file mode 100644 index 0000000..55f2197 --- /dev/null +++ b/redux/ReduxCore/inc/fields/border/field_border.scss @@ -0,0 +1,47 @@ +.redux-container-border { + .select2-container { + float: left; + display: block; + margin-right: 10px; + } + + .select_wrapper { + float: left; + select { + width: 80px; + float: left; + + } + width: inherit; + } + + .field-border-input { + margin-right: 10px; + margin-bottom: 7px; + } + + .wp-picker-container { + margin-top: 2px; + } +} + +@media screen and (max-width: 782px) { + .redux-container-border { + .field-border-input { + input { + display: inline-block !important; + width: 100px !important; + } + + .add-on { + padding: 7px 4px; + font-size: 16px; + line-height: 1.5; + } + } + + .select_wrapper { + margin-top: 6px; + } + } +} diff --git a/redux/ReduxCore/inc/fields/button_set/field_button_set.js b/redux/ReduxCore/inc/fields/button_set/field_button_set.js new file mode 100644 index 0000000..9e8eb36 --- /dev/null +++ b/redux/ReduxCore/inc/fields/button_set/field_button_set.js @@ -0,0 +1,93 @@ +/* + Field Button Set (button_set) + */ + +/*global jQuery, document, redux*/ + +(function( $ ) { + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.button_set = redux.field_objects.button_set || {}; + + $( document ).ready( + function() { + if ( $.fn.button.noConflict !== undefined ) { + var btn = $.fn.button.noConflict(); + $.fn.btn = btn; + } + } + ); + + redux.field_objects.button_set.init = function( selector ) { + if ( !selector ) { + selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-button_set:visible' ); + } + + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + + el.find( '.buttonset' ).each( + function() { + if ( $( this ).is( ':checkbox' ) ) { + $( this ).find( '.buttonset-item' ).button(); + } + + $( this ).buttonset(); + } + ); + + el.find( '.buttonset-item.multi' ).on( + 'click', function( e ) { + var val = ''; + var name = ''; + + var id = $(this).attr('id'); + var empty = $( this ).parent().find( '.buttonset-empty' ); + var idName = empty.attr( 'data-name' ); + var isChecked = false; + + $( this ).parent().find('.buttonset-item').each(function(){ + if ($( this ).is( ':checked' )) { + isChecked = true; + } + }); + + if (isChecked) { + empty.attr('name', ''); + } else { + empty.attr('name', idName); + } + + if ( $( this ).is( ':checked' ) ) { + val = $( this ).attr( 'data-val' ); + name = idName + '[]'; + + } + + $( this ).parent().find( '#' + id + '-hidden.buttonset-check' ).val( val ); + $( this ).parent().find( '#' + id + '-hidden.buttonset-check' ).attr( 'name', name ); + + redux_change( $( this ) ); + } + ); + } + ); + }; +})( jQuery ); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/button_set/field_button_set.min.js b/redux/ReduxCore/inc/fields/button_set/field_button_set.min.js new file mode 100644 index 0000000..3e525e2 --- /dev/null +++ b/redux/ReduxCore/inc/fields/button_set/field_button_set.min.js @@ -0,0 +1 @@ +!function(u){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.button_set=redux.field_objects.button_set||{},u(document).ready(function(){if(void 0!==u.fn.button.noConflict){var t=u.fn.button.noConflict();u.fn.btn=t}}),redux.field_objects.button_set.init=function(t){t||(t=u(document).find(".redux-group-tab:visible").find(".redux-container-button_set:visible")),u(t).each(function(){var t=u(this),e=t;t.hasClass("redux-field-container")||(e=t.parents(".redux-field-container:first")),e.is(":hidden")||e.hasClass("redux-field-init")&&(e.removeClass("redux-field-init"),t.find(".buttonset").each(function(){u(this).is(":checkbox")&&u(this).find(".buttonset-item").button(),u(this).buttonset()}),t.find(".buttonset-item.multi").on("click",function(t){var e="",n="",i=u(this).attr("id"),s=u(this).parent().find(".buttonset-empty"),d=s.attr("data-name"),o=!1;u(this).parent().find(".buttonset-item").each(function(){u(this).is(":checked")&&(o=!0)}),o?s.attr("name",""):s.attr("name",d),u(this).is(":checked")&&(e=u(this).attr("data-val"),n=d+"[]"),u(this).parent().find("#"+i+"-hidden.buttonset-check").val(e),u(this).parent().find("#"+i+"-hidden.buttonset-check").attr("name",n),redux_change(u(this))}))})}}(jQuery); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/button_set/field_button_set.php b/redux/ReduxCore/inc/fields/button_set/field_button_set.php new file mode 100644 index 0000000..9f5cf59 --- /dev/null +++ b/redux/ReduxCore/inc/fields/button_set/field_button_set.php @@ -0,0 +1,178 @@ +. + * + * @package Redux_Field + * @subpackage Button_Set + * @author Daniel J Griffiths (Ghost1227) + * @author Dovy Paukstys + * @author Kevin Provance (kprovance) + * @version 3.0.0 + */ + +// Exit if accessed directly + if ( ! defined( 'ABSPATH' ) ) { + exit; + } + +// Don't duplicate me! + if ( ! class_exists( 'ReduxFramework_button_set' ) ) { + + /** + * Main ReduxFramework_button_set class + * + * @since 1.0.0 + */ + class ReduxFramework_button_set { + + public $parent; + public $field; + public $value; + + /** + * Holds configuration settings for each field in a model. + * Defining the field options + * @param array $arr (See above) + * + * @return Object A new editor object. + * */ + static $_properties = array( + 'id' => 'Identifier', + ); + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since 1.0.0 + * @access public + * @return void + */ + function __construct( $field = array(), $value = '', $parent=null ) { + + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render() { + if ( !empty( $this->field['data'] ) && empty( $this->field['options'] ) ) { + if ( empty( $this->field['args'] ) ) { + $this->field['args'] = array(); + } + + $this->field['options'] = $this->parent->get_wordpress_data( $this->field['data'], $this->field['args'] ); + + if ( empty( $this->field['options'] ) ) { + return; + } + } + + $is_multi = (isset( $this->field['multi'] ) && $this->field['multi'] == true) ? true: false; + + $name = $this->field['name'] . $this->field['name_suffix']; + + // multi => true renders the field multi-selectable (checkbox vs radio) + echo '
    '; + + if ($is_multi) { + $s = ''; + + if (empty($this->value)) { + $s = $name; + } + + echo ''; + + $name = $name . '[]'; + } + + foreach ( $this->field['options'] as $k => $v ) { + $selected = ''; + + if ( $is_multi ) { + $post_value = ''; + $type = "checkbox"; + + if ( ! empty( $this->value ) && ! is_array( $this->value ) ) { + $this->value = array( $this->value ); + } + + if ( is_array( $this->value ) && in_array( $k, $this->value ) ) { + $selected = 'checked="checked"'; + $post_value = $k; + } + } else { + $type = "radio"; + + if ( is_scalar( $this->value ) ) { + $selected = checked( $this->value, $k, false ); + } + } + + $the_val = $k; + $the_name = $name; + $data_val = ''; + $multi_class = ''; + + if ($is_multi) { + $the_val = ''; + $the_name = ''; + $data_val = ' data-val="' . $k . '"'; + $hidden_name = $name; + $multi_class = 'multi '; + + if ($post_value == '') { + $hidden_name = ''; + } + + echo ''; + } + + echo ''; + echo ''; + } + + echo '
    '; + } + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since 1.0.0 + * @access public + * @return void + */ + public function enqueue() { + + if (!wp_script_is ( 'redux-field-button-set-js' )) { + wp_enqueue_script( + 'redux-field-button-set-js', + ReduxFramework::$_url . 'inc/fields/button_set/field_button_set' . Redux_Functions::isMin() . '.js', + array( 'jquery', 'jquery-ui-core', 'redux-js' ), + time(), + true + ); + } + } + } + } \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/checkbox/field_checkbox.css b/redux/ReduxCore/inc/fields/checkbox/field_checkbox.css new file mode 100644 index 0000000..f50c856 --- /dev/null +++ b/redux/ReduxCore/inc/fields/checkbox/field_checkbox.css @@ -0,0 +1 @@ +.redux-container-checkbox label{vertical-align:top;width:100%}.redux-container-checkbox label .field-desc{margin-top:0;float:left;width:93%;clear:none} diff --git a/redux/ReduxCore/inc/fields/checkbox/field_checkbox.css.map b/redux/ReduxCore/inc/fields/checkbox/field_checkbox.css.map new file mode 100644 index 0000000..57efdbd --- /dev/null +++ b/redux/ReduxCore/inc/fields/checkbox/field_checkbox.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AACI,+BAAM;EACF,cAAc,EAAE,GAAG;EACnB,KAAK,EAAE,IAAI;EAEX,2CAAY;IACR,UAAU,EAAE,CAAC;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI", +"sources": ["field_checkbox.scss"], +"names": [], +"file": "field_checkbox.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/checkbox/field_checkbox.js b/redux/ReduxCore/inc/fields/checkbox/field_checkbox.js new file mode 100644 index 0000000..ed72de3 --- /dev/null +++ b/redux/ReduxCore/inc/fields/checkbox/field_checkbox.js @@ -0,0 +1,55 @@ +/** + * Redux Checkbox + * Dependencies : jquery + * Feature added by : Dovy Paukstys + * Date : 17 June 2014 + */ + +/*global redux_change, wp, redux*/ + +(function( $ ) { + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.checkbox = redux.field_objects.checkbox || {}; + + $( document ).ready( + function() { + //redux.field_objects.checkbox.init(); + } + ); + + redux.field_objects.checkbox.init = function( selector ) { + if ( !selector ) { + selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-checkbox:visible' ); + } + + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + el.find( '.checkbox' ).on( + 'click', function( e ) { + var val = 0; + if ( $( this ).is( ':checked' ) ) { + val = $( this ).parent().find( '.checkbox-check' ).attr( 'data-val' ); + } + $( this ).parent().find( '.checkbox-check' ).val( val ); + redux_change( $( this ) ); + } + ); + } + ); + }; +})( jQuery ); diff --git a/redux/ReduxCore/inc/fields/checkbox/field_checkbox.min.js b/redux/ReduxCore/inc/fields/checkbox/field_checkbox.min.js new file mode 100644 index 0000000..2d46f32 --- /dev/null +++ b/redux/ReduxCore/inc/fields/checkbox/field_checkbox.min.js @@ -0,0 +1 @@ +!function(c){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.checkbox=redux.field_objects.checkbox||{},c(document).ready(function(){}),redux.field_objects.checkbox.init=function(e){e||(e=c(document).find(".redux-group-tab:visible").find(".redux-container-checkbox:visible")),c(e).each(function(){var e=c(this),i=e;e.hasClass("redux-field-container")||(i=e.parents(".redux-field-container:first")),i.is(":hidden")||i.hasClass("redux-field-init")&&(i.removeClass("redux-field-init"),e.find(".checkbox").on("click",function(e){var i=0;c(this).is(":checked")&&(i=c(this).parent().find(".checkbox-check").attr("data-val")),c(this).parent().find(".checkbox-check").val(i),redux_change(c(this))}))})}}(jQuery); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/checkbox/field_checkbox.php b/redux/ReduxCore/inc/fields/checkbox/field_checkbox.php new file mode 100644 index 0000000..a43d2f0 --- /dev/null +++ b/redux/ReduxCore/inc/fields/checkbox/field_checkbox.php @@ -0,0 +1,163 @@ +. + * + * @package ReduxFramework + * @subpackage Field_Checkbox + * @author Daniel J Griffiths (Ghost1227) + * @author Dovy Paukstys + * @version 3.0.0 + */ +// Exit if accessed directly +if ( !defined ( 'ABSPATH' ) ) { + exit; +} + +// Don't duplicate me! +if ( !class_exists ( 'ReduxFramework_checkbox' ) ) { + + /** + * Main ReduxFramework_checkbox class + * + * @since 1.0.0 + */ + class ReduxFramework_checkbox { + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since 1.0.0 + * @access public + * @return void + */ + function __construct ( $field = array(), $value = '', $parent=null ) { + + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render () { + if( !empty( $this->field['data'] ) && empty( $this->field['options'] ) ) { + if (empty($this->field['args'])) { + $this->field['args'] = array(); + } + + $this->field['options'] = $this->parent->get_wordpress_data($this->field['data'], $this->field['args']); + if (empty($this->field['options'])) { + return; + } + } + + $this->field[ 'data_class' ] = ( isset ( $this->field[ 'multi_layout' ] ) ) ? 'data-' . $this->field[ 'multi_layout' ] : 'data-full'; + + if ( !empty ( $this->field[ 'options' ] ) && ( is_array ( $this->field[ 'options' ] ) || is_array ( $this->field[ 'default' ] ) ) ) { + + echo '
      '; + + if ( !isset ( $this->value ) ) { + $this->value = array(); + } + + if ( !is_array ( $this->value ) ) { + $this->value = array(); + } + + if ( empty ( $this->field[ 'options' ] ) && isset ( $this->field[ 'default' ] ) && is_array ( $this->field[ 'default' ] ) ) { + $this->field[ 'options' ] = $this->field[ 'default' ]; + } + + foreach ( $this->field[ 'options' ] as $k => $v ) { + + if ( empty ( $this->value[ $k ] ) ) { + $this->value[ $k ] = ""; + } + + echo '
    • '; + echo ''; + echo '
    • '; + } + + echo '
    '; + } else if ( empty ( $this->field[ 'data' ] ) ) { + echo '
    • '; + + if ( !empty( $this->field[ 'label' ] ) ) { + echo ''; + } + + echo '
    '; + } + } + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since 1.0.0 + * @access public + * @return void + */ + public function enqueue () { + + if ($this->parent->args['dev_mode']) { + wp_enqueue_style ( + 'redux-field-checkbox-css', + ReduxFramework::$_url . 'inc/fields/checkbox/field_checkbox.css', + array(), + time (), + 'all' + ); + } + + wp_enqueue_script ( + 'redux-field-checkbox-js', + ReduxFramework::$_url . 'inc/fields/checkbox/field_checkbox' . Redux_Functions::isMin () . '.js', + array( 'jquery', 'redux-js' ), + time (), + true + ); + } + } +} diff --git a/redux/ReduxCore/inc/fields/checkbox/field_checkbox.scss b/redux/ReduxCore/inc/fields/checkbox/field_checkbox.scss new file mode 100644 index 0000000..7dca5eb --- /dev/null +++ b/redux/ReduxCore/inc/fields/checkbox/field_checkbox.scss @@ -0,0 +1,13 @@ +.redux-container-checkbox { + label { + vertical-align: top; + width: 100%; + + .field-desc { + margin-top: 0; + float: left; + width: 93%; + clear: none; + } + } +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/color/field_color.js b/redux/ReduxCore/inc/fields/color/field_color.js new file mode 100644 index 0000000..3c26f06 --- /dev/null +++ b/redux/ReduxCore/inc/fields/color/field_color.js @@ -0,0 +1,175 @@ +/* + Field Color (color) + */ + +/*global jQuery, document, redux_change, redux*/ + +(function( $ ) { + 'use strict'; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.color = redux.field_objects.color || {}; + + $( document ).ready( + function() { + + } + ); + + redux.field_objects.color.init = function( selector ) { + + if ( !selector ) { + selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-color:visible' ); + } + + $( selector ).each( + function() { + + var el = $( this ); + var parent = el; + + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } +// var $control = el.find( '.redux-color-init' ), +// +// value = $control.val().replace( /\s+/g, '' ), +// alpha_val = 100, +// $alpha, $alpha_output; +// //console.log($control); +// if ( value.match( /rgba\(\d+\,\d+\,\d+\,([^\)]+)\)/ ) ) { +// alpha_val = parseFloat( value.match( /rgba\(\d+\,\d+\,\d+\,([^\)]+)\)/ )[ 1 ] ) * 100; +// } + el.find( '.redux-color-init' ).wpColorPicker( + { + change: function( e, ui ) { + $( this ).val( ui.color.toString() ); + redux_change( $( this ) ); + el.find( '#' + e.target.getAttribute( 'data-id' ) + '-transparency' ).removeAttr( 'checked' ); + }, + clear: function( e, ui ) { + $( this ).val( '' ); + redux_change( $( this ).parent().find( '.redux-color-init' ) ); + } + } + ); +// $( '
    ' +// + '' +// + '' +// + '
    ' ).appendTo( $control.parents( '.wp-picker-container:first' ).addClass( 'vc_color-picker' ).find( '.iris-picker' ) ); +// $alpha = $control.parents( '.wp-picker-container:first' ).find( '.vc_alpha-field' ); +// //console.log($alpha); +// $alpha_output = $control.parents( '.wp-picker-container:first' ).find( '.redux-alpha-container output' ); +// $alpha.bind( 'change keyup', function () { +// var alpha_val = parseFloat( $alpha.val() ), +// iris = $control.data( 'a8cIris' ), +// color_picker = $control.data( 'wp-wpColorPicker' ); +// //console.log(alpha_val); +// $alpha_output.val( $alpha.val() + '%' ); +// console.log(alpha_val / 100.0); +// iris._color._alpha = parseFloat(alpha_val / 100.0); +// console.log(iris._color); +// //$control.val( iris._color.toString() ); +// el.find( '.redux-color-init' ).wpColorPicker( 'color', iris._color.toString() ); +// //console.log($control.val()); +// //color_picker.toggler.css( { backgroundColor: $control.val() } ); +// } ).val( alpha_val ).trigger( 'change' ); + + el.find( '.redux-color' ).on( + 'focus', function() { + $( this ).data( 'oldcolor', $( this ).val() ); + } + ); + + el.find( '.redux-color' ).on( + 'keyup', function() { + var value = $( this ).val(); + var color = colorValidate( this ); + var id = '#' + $( this ).attr( 'id' ); + + if ( value === "transparent" ) { + $( this ).parent().parent().find( '.wp-color-result' ).css( + 'background-color', 'transparent' + ); + + el.find( id + '-transparency' ).attr( 'checked', 'checked' ); + } else { + el.find( id + '-transparency' ).removeAttr( 'checked' ); + + if ( color && color !== $( this ).val() ) { + $( this ).val( color ); + } + } + } + ); + + // Replace and validate field on blur + el.find( '.redux-color' ).on( + 'blur', function() { + var value = $( this ).val(); + var id = '#' + $( this ).attr( 'id' ); + + if ( value === "transparent" ) { + $( this ).parent().parent().find( '.wp-color-result' ).css( + 'background-color', 'transparent' + ); + + el.find( id + '-transparency' ).attr( 'checked', 'checked' ); + } else { + if ( colorValidate( this ) === value ) { + if ( value.indexOf( "#" ) !== 0 ) { + $( this ).val( $( this ).data( 'oldcolor' ) ); + } + } + + el.find( id + '-transparency' ).removeAttr( 'checked' ); + } + } + ); + + // Store the old valid color on keydown + el.find( '.redux-color' ).on( + 'keydown', function() { + $( this ).data( 'oldkeypress', $( this ).val() ); + } + ); + + // When transparency checkbox is clicked + el.find( '.color-transparency' ).on( + 'click', function() { + if ( $( this ).is( ":checked" ) ) { + el.find( '.redux-saved-color' ).val( $( '#' + $( this ).data( 'id' ) ).val() ); + el.find( '#' + $( this ).data( 'id' ) ).val( 'transparent' ); + el.find( '#' + $( this ).data( 'id' ) ).parent().parent().find( '.wp-color-result' ).css( + 'background-color', 'transparent' + ); + } else { + if ( el.find( '#' + $( this ).data( 'id' ) ).val() === 'transparent' ) { + var prevColor = $( '.redux-saved-color' ).val(); + + if ( prevColor === '' ) { + prevColor = $( '#' + $( this ).data( 'id' ) ).data( 'default-color' ); + } + + el.find( '#' + $( this ).data( 'id' ) ).parent().parent().find( '.wp-color-result' ).css( + 'background-color', prevColor + ); + + el.find( '#' + $( this ).data( 'id' ) ).val( prevColor ); + } + } + redux_change( $( this ) ); + } + ); + } + ); + }; +})( jQuery ); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/color/field_color.min.js b/redux/ReduxCore/inc/fields/color/field_color.min.js new file mode 100644 index 0000000..19b0552 --- /dev/null +++ b/redux/ReduxCore/inc/fields/color/field_color.min.js @@ -0,0 +1 @@ +!function(n){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.color=redux.field_objects.color||{},n(document).ready(function(){}),redux.field_objects.color.init=function(t){t||(t=n(document).find(".redux-group-tab:visible").find(".redux-container-color:visible")),n(t).each(function(){var i=n(this),t=i;i.hasClass("redux-field-container")||(t=i.parents(".redux-field-container:first")),t.is(":hidden")||t.hasClass("redux-field-init")&&(t.removeClass("redux-field-init"),i.find(".redux-color-init").wpColorPicker({change:function(t,r){n(this).val(r.color.toString()),redux_change(n(this)),i.find("#"+t.target.getAttribute("data-id")+"-transparency").removeAttr("checked")},clear:function(t,r){n(this).val(""),redux_change(n(this).parent().find(".redux-color-init"))}}),i.find(".redux-color").on("focus",function(){n(this).data("oldcolor",n(this).val())}),i.find(".redux-color").on("keyup",function(){var t=n(this).val(),r=colorValidate(this),e="#"+n(this).attr("id");"transparent"===t?(n(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),i.find(e+"-transparency").attr("checked","checked")):(i.find(e+"-transparency").removeAttr("checked"),r&&r!==n(this).val()&&n(this).val(r))}),i.find(".redux-color").on("blur",function(){var t=n(this).val(),r="#"+n(this).attr("id");"transparent"===t?(n(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),i.find(r+"-transparency").attr("checked","checked")):(colorValidate(this)===t&&0!==t.indexOf("#")&&n(this).val(n(this).data("oldcolor")),i.find(r+"-transparency").removeAttr("checked"))}),i.find(".redux-color").on("keydown",function(){n(this).data("oldkeypress",n(this).val())}),i.find(".color-transparency").on("click",function(){if(n(this).is(":checked"))i.find(".redux-saved-color").val(n("#"+n(this).data("id")).val()),i.find("#"+n(this).data("id")).val("transparent"),i.find("#"+n(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent");else if("transparent"===i.find("#"+n(this).data("id")).val()){var t=n(".redux-saved-color").val();""===t&&(t=n("#"+n(this).data("id")).data("default-color")),i.find("#"+n(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",t),i.find("#"+n(this).data("id")).val(t)}redux_change(n(this))}))})}}(jQuery); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/color/field_color.php b/redux/ReduxCore/inc/fields/color/field_color.php new file mode 100644 index 0000000..04dfd2f --- /dev/null +++ b/redux/ReduxCore/inc/fields/color/field_color.php @@ -0,0 +1,126 @@ +. + * + * @package ReduxFramework + * @subpackage Field_Color + * @author Daniel J Griffiths (Ghost1227) + * @author Dovy Paukstys + * @version 3.0.0 + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +// Don't duplicate me! +if ( ! class_exists( 'ReduxFramework_color' ) ) { + + /** + * Main ReduxFramework_color class + * + * @since 1.0.0 + */ + class ReduxFramework_color { + + public $parent; + public $field; + public $value; + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since 1.0.0 + * @access public + * @return void + */ + function __construct( $field = array(), $value = '', $parent=null ) { + + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render() { + + echo ''; + echo ''; + + if ( ! isset( $this->field['transparent'] ) || $this->field['transparent'] !== false ) { + + $tChecked = ""; + + if ( $this->value == "transparent" ) { + $tChecked = ' checked="checked"'; + } + + echo ''; + } + } + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since 1.0.0 + * @access public + * @return void + */ + public function enqueue() { + if ($this->parent->args['dev_mode']) { + wp_enqueue_style( 'redux-color-picker-css' ); + } + + wp_enqueue_style( 'wp-color-picker' ); + + wp_enqueue_script( + 'redux-field-color-js', + ReduxFramework::$_url . 'inc/fields/color/field_color' . Redux_Functions::isMin() . '.js', + array( 'jquery', 'wp-color-picker', 'redux-js' ), + time(), + true + ); + } + + public function output() { + $style = ''; + + if ( ! empty( $this->value ) ) { + $mode = ( isset( $this->field['mode'] ) && ! empty( $this->field['mode'] ) ? $this->field['mode'] : 'color' ); + + $style .= $mode . ':' . $this->value . ';'; + + if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { + $css = Redux_Functions::parseCSS( $this->field['output'], $style, $this->value ); + $this->parent->outputCSS .= $css; + } + + if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { + $css = Redux_Functions::parseCSS( $this->field['compiler'], $style, $this->value ); + $this->parent->compilerCSS .= $css; + + } + } + } + } +} diff --git a/redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.css b/redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.css new file mode 100644 index 0000000..58dc455 --- /dev/null +++ b/redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.css @@ -0,0 +1 @@ +.redux-container-color_gradient .colorGradient{display:inline-block}.redux-container-color_gradient .toLabel{padding-left:18px}@media screen and (max-width: 660px){.redux-container-color_gradient .colorGradient{display:block;text-align:center !important}} diff --git a/redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.css.map b/redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.css.map new file mode 100644 index 0000000..985da1d --- /dev/null +++ b/redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AACI,8CAAe;EACX,OAAO,EAAE,YAAY;AAEzB,wCAAS;EACL,YAAY,EAAE,IAAI;;AAI1B,oCAAqC;EAE7B,8CAAe;IACX,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,iBAAiB", +"sources": ["field_color_gradient.scss"], +"names": [], +"file": "field_color_gradient.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.js b/redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.js new file mode 100644 index 0000000..9bbfb0a --- /dev/null +++ b/redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.js @@ -0,0 +1,134 @@ +/* + Field Color Gradient + */ + +/*global jQuery, document, redux_change, redux*/ + +(function( $ ) { + 'use strict'; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.color_gradient = redux.field_objects.color_gradient || {}; + + redux.field_objects.color_gradient.init = function( selector ) { + + if ( !selector ) { + selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-color_gradient:visible' ); + } + + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + + el.find( '.redux-color-init' ).wpColorPicker( + { + change: function( e, ui ) { + $( this ).val( ui.color.toString() ); + redux_change( $( this ) ); + el.find( '#' + e.target.getAttribute( 'data-id' ) + '-transparency' ).removeAttr( 'checked' ); + }, + clear: function( e, ui ) { + $( this ).val( '' ); + redux_change( $( this ).parent().find( '.redux-color-init' ) ); + } + } + ); + + el.find( '.redux-color' ).on( + 'keyup', function() { + var value = $( this ).val(); + var color = colorValidate( this ); + var id = '#' + $( this ).attr( 'id' ); + + if ( value === "transparent" ) { + $( this ).parent().parent().find( '.wp-color-result' ).css( + 'background-color', 'transparent' + ); + + el.find( id + '-transparency' ).attr( 'checked', 'checked' ); + } else { + el.find( id + '-transparency' ).removeAttr( 'checked' ); + + if ( color && color !== $( this ).val() ) { + $( this ).val( color ); + } + } + } + ); + + // Replace and validate field on blur + el.find( '.redux-color' ).on( + 'blur', function() { + var value = $( this ).val(); + var id = '#' + $( this ).attr( 'id' ); + + if ( value === "transparent" ) { + $( this ).parent().parent().find( '.wp-color-result' ).css( + 'background-color', 'transparent' + ); + + el.find( id + '-transparency' ).attr( 'checked', 'checked' ); + } else { + if ( colorValidate( this ) === value ) { + if ( value.indexOf( "#" ) !== 0 ) { + $( this ).val( $( this ).data( 'oldcolor' ) ); + } + } + + el.find( id + '-transparency' ).removeAttr( 'checked' ); + } + } + ); + + // Store the old valid color on keydown + el.find( '.redux-color' ).on( + 'keydown', function() { + $( this ).data( 'oldkeypress', $( this ).val() ); + } + ); + + // When transparency checkbox is clicked + el.find( '.color-transparency' ).on( + 'click', function() { + if ( $( this ).is( ":checked" ) ) { + + el.find( '.redux-saved-color' ).val( $( '#' + $( this ).data( 'id' ) ).val() ); + el.find( '#' + $( this ).data( 'id' ) ).val( 'transparent' ); + el.find( '#' + $( this ).data( 'id' ) ).parent().parent().find( '.wp-color-result' ).css( + 'background-color', 'transparent' + ); + } else { + if ( el.find( '#' + $( this ).data( 'id' ) ).val() === 'transparent' ) { + var prevColor = $( '.redux-saved-color' ).val(); + + if ( prevColor === '' ) { + prevColor = $( '#' + $( this ).data( 'id' ) ).data( 'default-color' ); + } + + el.find( '#' + $( this ).data( 'id' ) ).parent().parent().find( '.wp-color-result' ).css( + 'background-color', prevColor + ); + + el.find( '#' + $( this ).data( 'id' ) ).val( prevColor ); + } + } + redux_change( $( this ) ); + } + ); + } + ); + }; +})( jQuery ); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.min.js b/redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.min.js new file mode 100644 index 0000000..d792bc0 --- /dev/null +++ b/redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.min.js @@ -0,0 +1 @@ +!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.color_gradient=redux.field_objects.color_gradient||{},redux.field_objects.color_gradient.init=function(t){t||(t=a(document).find(".redux-group-tab:visible").find(".redux-container-color_gradient:visible")),a(t).each(function(){var i=a(this),t=i;i.hasClass("redux-field-container")||(t=i.parents(".redux-field-container:first")),t.is(":hidden")||t.hasClass("redux-field-init")&&(t.removeClass("redux-field-init"),i.find(".redux-color-init").wpColorPicker({change:function(t,r){a(this).val(r.color.toString()),redux_change(a(this)),i.find("#"+t.target.getAttribute("data-id")+"-transparency").removeAttr("checked")},clear:function(t,r){a(this).val(""),redux_change(a(this).parent().find(".redux-color-init"))}}),i.find(".redux-color").on("keyup",function(){var t=a(this).val(),r=colorValidate(this),e="#"+a(this).attr("id");"transparent"===t?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),i.find(e+"-transparency").attr("checked","checked")):(i.find(e+"-transparency").removeAttr("checked"),r&&r!==a(this).val()&&a(this).val(r))}),i.find(".redux-color").on("blur",function(){var t=a(this).val(),r="#"+a(this).attr("id");"transparent"===t?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),i.find(r+"-transparency").attr("checked","checked")):(colorValidate(this)===t&&0!==t.indexOf("#")&&a(this).val(a(this).data("oldcolor")),i.find(r+"-transparency").removeAttr("checked"))}),i.find(".redux-color").on("keydown",function(){a(this).data("oldkeypress",a(this).val())}),i.find(".color-transparency").on("click",function(){if(a(this).is(":checked"))i.find(".redux-saved-color").val(a("#"+a(this).data("id")).val()),i.find("#"+a(this).data("id")).val("transparent"),i.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent");else if("transparent"===i.find("#"+a(this).data("id")).val()){var t=a(".redux-saved-color").val();""===t&&(t=a("#"+a(this).data("id")).data("default-color")),i.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",t),i.find("#"+a(this).data("id")).val(t)}redux_change(a(this))}))})}}(jQuery); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.php b/redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.php new file mode 100644 index 0000000..d235dd6 --- /dev/null +++ b/redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.php @@ -0,0 +1,128 @@ +. + * + * @package ReduxFramework + * @subpackage Field_Color_Gradient + * @author Daniel J Griffiths (Ghost1227) + * @author Dovy Paukstys + * @version 3.0.0 + */ +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +// Don't duplicate me! +if ( ! class_exists( 'ReduxFramework_color_gradient' ) ) { + + /** + * Main ReduxFramework_color_gradient class + * + * @since 1.0.0 + */ + class ReduxFramework_color_gradient { + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since 1.0.0 + * @access public + * @return void + */ + function __construct( $field = array(), $value = '', $parent=null ) { + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render() { + + // No errors please + $defaults = array( + 'from' => '', + 'to' => '' + ); + + $this->value = wp_parse_args( $this->value, $defaults ); + + echo '
    ' . __( 'From ', 'redux-framework' ) . ' '; + echo ''; + echo ''; + + if ( ! isset( $this->field['transparent'] ) || $this->field['transparent'] !== false ) { + $tChecked = ""; + + if ( $this->value['from'] == "transparent" ) { + $tChecked = ' checked="checked"'; + } + + echo ''; + } + echo "
    "; + echo '
    ' . __( 'To ', 'redux-framework' ) . ' '; + + if ( ! isset( $this->field['transparent'] ) || $this->field['transparent'] !== false ) { + $tChecked = ""; + + if ( $this->value['to'] == "transparent" ) { + $tChecked = ' checked="checked"'; + } + + echo ''; + } + echo "
    "; + } + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since 1.0.0 + * @access public + * @return void + */ + public function enqueue() { + wp_enqueue_style( 'wp-color-picker' ); + + wp_enqueue_script( + 'redux-field-color-gradient-js', + ReduxFramework::$_url . 'inc/fields/color_gradient/field_color_gradient' . Redux_Functions::isMin() . '.js', + array( 'jquery', 'wp-color-picker', 'redux-js' ), + time(), + 'all' + ); + + if ($this->parent->args['dev_mode']) { + wp_enqueue_style( 'redux-color-picker-css' ); + + wp_enqueue_style( + 'redux-field-color_gradient-css', + ReduxFramework::$_url . 'inc/fields/color_gradient/field_color_gradient.css', + array(), + time(), + 'all' + ); + } + } + } +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.scss b/redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.scss new file mode 100644 index 0000000..00508fc --- /dev/null +++ b/redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.scss @@ -0,0 +1,17 @@ +.redux-container-color_gradient { + .colorGradient { + display: inline-block; + } + .toLabel { + padding-left: 18px; + } +} + +@media screen and (max-width: 660px) { + .redux-container-color_gradient { + .colorGradient { + display: block; + text-align: center !important; + } + } +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.css b/redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.css new file mode 100644 index 0000000..b52a1cc --- /dev/null +++ b/redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.css @@ -0,0 +1 @@ +.sp-container{color:#555;border-color:#cccccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);vertical-align:top}.sp-replacer{color:#555;border-color:#cccccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);vertical-align:top}.sp-replacer:focus,.sp-replacer:hover,.sp-replacer.focus,.sp-replacer.hover{background:#fafafa;border-color:#999;color:#222}.sp-replacer:focus,.sp-replacer.focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8)}.sp-replacer.active:focus{-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8)}.sp-replacer.active,.sp-replacer.active:hover,.sp-replacer:active{background:#eee;border-color:#999;color:#333;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5)} diff --git a/redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.css.map b/redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.css.map new file mode 100644 index 0000000..a6b05cf --- /dev/null +++ b/redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AAAA,aAAc;EACd;;oHAEkH;EACjH,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,OAAO;EACrB,UAAU,EAAE,OAAO;EACnB,kBAAkB,EAAE,+CAAiD;EACrE,UAAU,EAAE,+CAAiD;EAC5D,cAAc,EAAE,GAAG;;AAGrB,YAAa;EACT,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,OAAO;EACrB,UAAU,EAAE,OAAO;EACnB,kBAAkB,EAAE,+CAAiD;EACrE,UAAU,EAAE,+CAAiD;EAC7D,cAAc,EAAE,GAAG;;AAGvB;;;kBAGmB;EACf,UAAU,EAAE,OAAO;EACnB,YAAY,EAAE,IAAI;EAClB,KAAK,EAAE,IAAI;;AAGf;kBACmB;EACf,kBAAkB,EACV,sDACkC;EAC1C,UAAU,EACF,sDACkC;;AAI9C,yBAA0B;EACzB,kBAAkB,EACjB,+FAEkC;EACnC,UAAU,EACT,+FAEkC;;AAGpC;;mBAEmB;EACf,UAAU,EAAE,IAAI;EAChB,YAAY,EAAE,IAAI;EAClB,KAAK,EAAE,IAAI;EACX,kBAAkB,EAAE,uCAAyC;EAC7D,UAAU,EAAE,uCAAyC", +"sources": ["field_color_rgba.scss"], +"names": [], +"file": "field_color_rgba.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.js b/redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.js new file mode 100644 index 0000000..4a38f26 --- /dev/null +++ b/redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.js @@ -0,0 +1,217 @@ +(function($){ + 'use strict'; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.color_rgba = redux.field_objects.color_rgba || {}; + redux.field_objects.color_rgba.fieldID = ''; + + redux.field_objects.color_rgba.hexToRGBA = function( hex, alpha ) { + var result; + + if (hex === null) { + result = ''; + } else { + hex = hex.replace('#', ''); + var r = parseInt(hex.substring(0, 2), 16); + var g = parseInt(hex.substring(2, 4), 16); + var b = parseInt(hex.substring(4, 6), 16); + + result = 'rgba(' + r + ',' + g + ',' + b + ',' + alpha + ')'; + } + + return result; + }; + + redux.field_objects.color_rgba.init = function( selector ) { + if ( !selector ) { + selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-color_rgba:visible' ); + } + + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + + redux.field_objects.color_rgba.modInit(el); + redux.field_objects.color_rgba.initColorPicker(el); + }); + }; + + redux.field_objects.color_rgba.modInit = function(el) { + + redux.field_objects.color_rgba.fieldID = el.find('.redux-color_rgba-container').data('id'); + + }; + + // Initialize colour picker + redux.field_objects.color_rgba.initColorPicker = function(el){ + + // Get field ID + var field_id = redux.field_objects.color_rgba.fieldID; + + // Get the color scheme container + var colorpickerInput = el.find('.redux-color-rgba'); + + // Get alpha value and sanitize it + var currentAlpha = colorpickerInput.data('current-alpha'); + currentAlpha = Number((currentAlpha === null || currentAlpha === undefined) ? 1 : currentAlpha); + + // Get colour value and sanitize it + var currentColor = colorpickerInput.data('current-color'); + currentColor = (currentColor === '' || currentColor === 'transparent') ? '' : currentColor; + + var outputTransparent = colorpickerInput.data('output-transparent'); + outputTransparent = Boolean((outputTransparent === '') ? false : outputTransparent); + + // Color picker arguments + var container = el.find('.redux-color-rgba-container'); + + // Get, decode and parse palette. + var palette = container.data('palette'); + palette = decodeURIComponent(palette); + palette = JSON.parse(palette); + + // Default palette + if (palette === null) { + palette = [ + ["#000000", "#434343", "#666666", "#999999", "#b7b7b7", "#cccccc", "#d9d9d9", "#efefef", "#f3f3f3", "#ffffff"], + ["#980000", "#ff0000", "#ff9900", "#ffff00", "#00ff00", "#00ffff", "#4a86e8", "#0000ff", "#9900ff", "#ff00ff"], + ["#e6b8af", "#f4cccc", "#fce5cd", "#fff2cc", "#d9ead3", "#d9ead3", "#c9daf8", "#cfe2f3", "#d9d2e9", "#ead1dc"], + ["#dd7e6b", "#ea9999", "#f9cb9c", "#ffe599", "#b6d7a8", "#a2c4c9", "#a4c2f4", "#9fc5e8", "#b4a7d6", "#d5a6bd"], + ["#cc4125", "#e06666", "#f6b26b", "#ffd966", "#93c47d", "#76a5af", "#6d9eeb", "#6fa8dc", "#8e7cc3", "#c27ba0"], + ["#a61c00", "#cc0000", "#e69138", "#f1c232", "#6aa84f", "#45818e", "#3c78d8", "#3d85c6", "#674ea7", "#a64d79"], + ["#85200c", "#990000", "#b45f06", "#bf9000", "#38761d", "#134f5c", "#1155cc", "#0b5394", "#351c75", "#741b47"], + ["#5b0f00", "#660000", "#783f04", "#7f6000", "#274e13", "#0c343d", "#1c4587", "#073763", "#20124d", "#4c1130"] + ]; + } + + // Get and sanitize show input argument + var showInput = container.data('show-input'); + showInput = Boolean((showInput === '') ? false : showInput); + + // Get and sanitize show initial argument + var showInitial = container.data('show-initial'); + showInitial = Boolean((showInitial === '') ? false : showInitial); + + // Get and sanitize show alpha argument + var showAlpha = container.data('show-alpha'); + showAlpha = Boolean((showAlpha === '') ? false : showAlpha); + + // Get and sanitize allow empty argument + var allowEmpty = container.data('allow-empty'); + allowEmpty = Boolean((allowEmpty === '') ? false : allowEmpty); + + // Get and sanitize show palette argument + var showPalette = container.data('show-palette'); + showPalette = Boolean((showPalette === '') ? false : showPalette); + + // Get and sanitize show palette only argument + var showPaletteOnly = container.data('show-palette-only'); + showPaletteOnly = Boolean((showPaletteOnly === '') ? false : showPaletteOnly); + + // Get and sanitize show selection palette argument + var showSelectionPalette = container.data('show-selection-palette'); + showSelectionPalette = Boolean((showSelectionPalette === '') ? false : showSelectionPalette); + + // Get max palette size + var maxPaletteSize = Number(container.data('max-palette-size')); + + // Get and sanitize clickout fires change argument + var clickoutFiresChange = container.data('clickout-fires-change'); + clickoutFiresChange = Boolean((clickoutFiresChange === '') ? false : clickoutFiresChange); + + // Get choose button text + var chooseText = String(container.data('choose-text')); + + // Get cancel button text + var cancelText = String(container.data('cancel-text')); + + // Get cancel button text + var inputText = String(container.data('input-text')); + + + // Get and sanitize show buttons argument + var showButtons = container.data('show-buttons'); + showButtons = Boolean((showButtons === '') ? false : showButtons); + + // Get container class + var containerClass = String(container.data('container-class')); + + // Get replacer class + var replacerClass = String(container.data('replacer-class')); + + // Color picker options + colorpickerInput.spectrum({ + color: currentColor, //'#ffffff', + showAlpha: showAlpha, + showInput: showInput, + allowEmpty: allowEmpty, + className: 'redux-color-rgba', + showInitial: showInitial, + showPalette: showPalette, + showSelectionPalette: showSelectionPalette, + maxPaletteSize: maxPaletteSize, + showPaletteOnly: showPaletteOnly, + clickoutFiresChange: clickoutFiresChange, + chooseText: chooseText, + cancelText: cancelText, + showButtons: showButtons, + containerClassName: containerClass, + replacerClassName: replacerClass, + preferredFormat: 'hex6', + localStorageKey: 'redux.color-rgba.' + field_id, + palette: palette, + inputText: inputText, + + // on change + change: function(color) { + var colorVal, alphaVal, rgbaVal; + + if (color === null) { + if (outputTransparent === true) { + colorVal = 'transparent'; + } else { + colorVal = null; + } + alphaVal = null; + } else { + colorVal = color.toHexString(); + alphaVal = color.alpha; + } + + if (colorVal != 'transparent') { + rgbaVal = redux.field_objects.color_rgba.hexToRGBA(colorVal, alphaVal); + } else { + rgbaVal = 'transparent'; + } + + var blockID = $(this).data('block-id'); + + // Update HTML color value + el.find('input#' + blockID + '-color').val(colorVal); + + // Update HTML alpha value + el.find('input#' + blockID + '-alpha').val(alphaVal); + + // Update RGBA alpha value + el.find('input#' + blockID + '-rgba').val(rgbaVal); + + redux_change(el.find('.redux-color-rgba-container')); + } + }); + }; +})(jQuery); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.min.js b/redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.min.js new file mode 100644 index 0000000..4c01597 --- /dev/null +++ b/redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.min.js @@ -0,0 +1 @@ +!function(B){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.color_rgba=redux.field_objects.color_rgba||{},redux.field_objects.color_rgba.fieldID="",redux.field_objects.color_rgba.hexToRGBA=function(e,a){var r;null===e?r="":(e=e.replace("#",""),r="rgba("+parseInt(e.substring(0,2),16)+","+parseInt(e.substring(2,4),16)+","+parseInt(e.substring(4,6),16)+","+a+")");return r},redux.field_objects.color_rgba.init=function(e){e||(e=B(document).find(".redux-group-tab:visible").find(".redux-container-color_rgba:visible")),B(e).each(function(){var e=B(this),a=e;e.hasClass("redux-field-container")||(a=e.parents(".redux-field-container:first")),a.is(":hidden")||a.hasClass("redux-field-init")&&(a.removeClass("redux-field-init"),redux.field_objects.color_rgba.modInit(e),redux.field_objects.color_rgba.initColorPicker(e))})},redux.field_objects.color_rgba.modInit=function(e){redux.field_objects.color_rgba.fieldID=e.find(".redux-color_rgba-container").data("id")},redux.field_objects.color_rgba.initColorPicker=function(c){var e=redux.field_objects.color_rgba.fieldID,a=c.find(".redux-color-rgba"),r=a.data("current-alpha");r=Number(null==r?1:r);var t=a.data("current-color");t=""===t||"transparent"===t?"":t;var d=a.data("output-transparent");d=Boolean(""!==d&&d);var o=c.find(".redux-color-rgba-container"),l=o.data("palette");l=decodeURIComponent(l),null===(l=JSON.parse(l))&&(l=[["#000000","#434343","#666666","#999999","#b7b7b7","#cccccc","#d9d9d9","#efefef","#f3f3f3","#ffffff"],["#980000","#ff0000","#ff9900","#ffff00","#00ff00","#00ffff","#4a86e8","#0000ff","#9900ff","#ff00ff"],["#e6b8af","#f4cccc","#fce5cd","#fff2cc","#d9ead3","#d9ead3","#c9daf8","#cfe2f3","#d9d2e9","#ead1dc"],["#dd7e6b","#ea9999","#f9cb9c","#ffe599","#b6d7a8","#a2c4c9","#a4c2f4","#9fc5e8","#b4a7d6","#d5a6bd"],["#cc4125","#e06666","#f6b26b","#ffd966","#93c47d","#76a5af","#6d9eeb","#6fa8dc","#8e7cc3","#c27ba0"],["#a61c00","#cc0000","#e69138","#f1c232","#6aa84f","#45818e","#3c78d8","#3d85c6","#674ea7","#a64d79"],["#85200c","#990000","#b45f06","#bf9000","#38761d","#134f5c","#1155cc","#0b5394","#351c75","#741b47"],["#5b0f00","#660000","#783f04","#7f6000","#274e13","#0c343d","#1c4587","#073763","#20124d","#4c1130"]]);var n=o.data("show-input");n=Boolean(""!==n&&n);var f=o.data("show-initial");f=Boolean(""!==f&&f);var i=o.data("show-alpha");i=Boolean(""!==i&&i);var s=o.data("allow-empty");s=Boolean(""!==s&&s);var u=o.data("show-palette");u=Boolean(""!==u&&u);var b=o.data("show-palette-only");b=Boolean(""!==b&&b);var x=o.data("show-selection-palette");x=Boolean(""!==x&&x);var p=Number(o.data("max-palette-size")),g=o.data("clickout-fires-change");g=Boolean(""!==g&&g);var h=String(o.data("choose-text")),_=String(o.data("cancel-text")),v=String(o.data("input-text")),m=o.data("show-buttons");m=Boolean(""!==m&&m);var w=String(o.data("container-class")),j=String(o.data("replacer-class"));a.spectrum({color:t,showAlpha:i,showInput:n,allowEmpty:s,className:"redux-color-rgba",showInitial:f,showPalette:u,showSelectionPalette:x,maxPaletteSize:p,showPaletteOnly:b,clickoutFiresChange:g,chooseText:h,cancelText:_,showButtons:m,containerClassName:w,replacerClassName:j,preferredFormat:"hex6",localStorageKey:"redux.color-rgba."+e,palette:l,inputText:v,change:function(e){var a,r,t;r=null===e?(a=!0===d?"transparent":null,null):(a=e.toHexString(),e.alpha),t="transparent"!=a?redux.field_objects.color_rgba.hexToRGBA(a,r):"transparent";var o=B(this).data("block-id");c.find("input#"+o+"-color").val(a),c.find("input#"+o+"-alpha").val(r),c.find("input#"+o+"-rgba").val(t),redux_change(c.find(".redux-color-rgba-container"))}})}}(jQuery); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.php b/redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.php new file mode 100644 index 0000000..f32f5cd --- /dev/null +++ b/redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.php @@ -0,0 +1,295 @@ +. + * + * @package Redux Framework + * @subpackage Spectrum Color Picker + * @author Kevin Provance (kprovance) + * @version 1.0.0 + */ + + // Exit if accessed directly + if ( ! defined( 'ABSPATH' ) ) { + exit; + } + + // Don't duplicate me! + if ( ! class_exists( 'ReduxFramework_color_rgba' ) ) { + + /** + * Main ReduxFramework_color_rgba class + * + * @since 1.0.0 + */ + class ReduxFramework_color_rgba { + + /** + * Class Constructor. Defines the args for the extions class + * + * @since 1.0.0 + * @access public + * + * @param array $field Field sections. + * @param array $value Values. + * @param array $parent Parent object. + * + * @return void + */ + public function __construct( $field = array(), $value = '', $parent=null ) { + + // Set required variables + $this->parent = $parent; + $this->field = (array) $field; + $this->value = $value; + + $defaults = array( + 'color' => '', + 'alpha' => 1, + 'rgba' => '' + ); + + $option_defaults = array( + "show_input" => true, + "show_initial" => false, + "show_alpha" => true, + "show_palette" => false, + "show_palette_only" => false, + "max_palette_size" => 10, + "show_selection_palette" => false, + "allow_empty" => true, + "clickout_fires_change" => false, + "choose_text" => __( 'Choose', 'redux-framework' ), + "cancel_text" => __( 'Cancel', 'redux-framework' ), + "show_buttons" => true, + "input_text" => __( 'Select Color', 'redux-framework' ), + "palette" => null, + ); + + $this->value = wp_parse_args( $this->value, $defaults ); + + $this->field['options'] = isset( $this->field['options'] ) ? wp_parse_args( $this->field['options'], $option_defaults ) : $option_defaults; + + // Convert empty array to null, if there. + $this->field['options']['palette'] = empty( $this->field['options']['palette'] ) ? null : $this->field['options']['palette']; + + $this->field['output_transparent'] = isset( $this->field['output_transparent'] ) ? $this->field['output_transparent'] : false; + } + + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render() { + + $field_id = $this->field['id']; + + // Color picker container + echo '
    '; + + // Colour picker layout + $opt_name = $this->parent->args['opt_name']; + + if ( '' == $this->value['color'] || 'transparent' == $this->value['color'] ) { + $color = ''; + } else { + $color = Redux_Helpers::hex2rgba( $this->value['color'], $this->value['alpha'] ); + } + + if ( $this->value['rgba'] == '' && $this->value['color'] != '' ) { + $this->value['rgba'] = Redux_Helpers::hex2rgba( $this->value['color'], $this->value['alpha'] ); + } + + echo ''; + + echo ''; + + // Hidden input for alpha channel + echo ''; + + // Hidden input for rgba + echo ''; + + echo '
    '; + } + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since 1.0.0 + * @access public + * @return void + */ + public function enqueue() { + + // Set up min files for dev_mode = false. + $min = Redux_Functions::isMin(); + + // Field dependent JS + if ( ! wp_script_is( 'redux-field-color-rgba-js' ) ) { + wp_enqueue_script( + 'redux-field-color-rgba-js', + ReduxFramework::$_url . 'inc/fields/color_rgba/field_color_rgba' . Redux_Functions::isMin() . '.js', + array( 'jquery', 'redux-spectrum-js' ), + time(), + true + ); + } + + // Spectrum CSS + if ( ! wp_style_is( 'redux-spectrum-css' ) ) { + wp_enqueue_style( 'redux-spectrum-css' ); + } + + if ( $this->parent->args['dev_mode'] ) { + if ( ! wp_style_is( 'redux-field-color-rgba-css' ) ) { + wp_enqueue_style( + 'redux-field-color-rgba-css', + ReduxFramework::$_url . 'inc/fields/color_rgba/field_color_rgba.css', + array(), + time(), + 'all' + ); + } + } + } + + /** + * getColorVal. Returns formatted color val in hex or rgba. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since 1.0.0 + * @access private + * @return string + */ + private function getColorVal() { + + // No notices + $color = ''; + $alpha = 1; + $rgba = ''; + + // Must be an array + if ( is_array( $this->value ) ) { + + // Enum array to parse values + foreach ( $this->value as $id => $val ) { + + // Sanitize alpha + if ( $id == 'alpha' ) { + $alpha = ! empty( $val ) ? $val : 1; + } elseif ( $id == 'color' ) { + $color = ! empty( $val ) ? $val : ''; + } elseif ( $id == 'rgba' ) { + $rgba = ! empty( $val ) ? $val : ''; + $rgba = Redux_Helpers::hex2rgba( $color, $alpha ); + } + } + + // Only build rgba output if alpha ia less than 1 + if ( $alpha < 1 && $alpha <> '' ) { + $color = $rgba; + } + } + + return $color; + } + + /** + * Output Function. + * Used to enqueue to the front-end + * + * @since 1.0.0 + * @access public + * @return void + */ + public function output() { + if ( ! empty( $this->value ) ) { + $style = ''; + + $mode = ( isset( $this->field['mode'] ) && ! empty( $this->field['mode'] ) ? $this->field['mode'] : 'color' ); + + $color_val = $this->getColorVal(); + + $style .= $mode . ':' . $color_val . ';'; + + if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { + if ( ! empty( $color_val ) ) { + $css = Redux_Functions::parseCSS( $this->field['output'], $style, $color_val ); + $this->parent->outputCSS .= $css; + } + } + + if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { + if ( ! empty( $color_val ) ) { + $css = Redux_Functions::parseCSS( $this->field['compiler'], $style, $color_val ); + $this->parent->compilerCSS .= $css; + } + } + } + } + } + } diff --git a/redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.scss b/redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.scss new file mode 100644 index 0000000..64d2fb0 --- /dev/null +++ b/redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.scss @@ -0,0 +1,61 @@ +.sp-container { +/* border: solid 1px black; + -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);*/ + color: #555; + border-color: #cccccc; + background: #f7f7f7; + -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); + box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); + vertical-align: top; +} + +.sp-replacer { + color: #555; + border-color: #cccccc; + background: #f7f7f7; + -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); + box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); + vertical-align: top; +} + +.sp-replacer:focus, +.sp-replacer:hover, +.sp-replacer.focus, +.sp-replacer.hover { + background: #fafafa; + border-color: #999; + color: #222; +} + +.sp-replacer:focus, +.sp-replacer.focus { + -webkit-box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + +} + +.sp-replacer.active:focus { + -webkit-box-shadow: + inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: + inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.sp-replacer.active, +.sp-replacer.active:hover, +.sp-replacer:active{ + background: #eee; + border-color: #999; + color: #333; + -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); +} diff --git a/redux/ReduxCore/inc/fields/date/field_date.css b/redux/ReduxCore/inc/fields/date/field_date.css new file mode 100644 index 0000000..ac4c4d4 --- /dev/null +++ b/redux/ReduxCore/inc/fields/date/field_date.css @@ -0,0 +1 @@ +#ui-datepicker-div{z-index:15 !important}.ui-datepicker-header{background-color:#00abef} diff --git a/redux/ReduxCore/inc/fields/date/field_date.css.map b/redux/ReduxCore/inc/fields/date/field_date.css.map new file mode 100644 index 0000000..b267bb1 --- /dev/null +++ b/redux/ReduxCore/inc/fields/date/field_date.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AAAA,kBAAmB;EACf,OAAO,EAAE,aAAa;;AAG1B,qBAAsB;EAClB,gBAAgB,EAAE,OAAO", +"sources": ["field_date.scss"], +"names": [], +"file": "field_date.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/date/field_date.js b/redux/ReduxCore/inc/fields/date/field_date.js new file mode 100644 index 0000000..395337c --- /dev/null +++ b/redux/ReduxCore/inc/fields/date/field_date.js @@ -0,0 +1,60 @@ +/*global jQuery, document, redux*/ + +(function( $ ) { + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.date = redux.field_objects.date || {}; + + $( document ).ready( + function() { + //redux.field_objects.date.init(); + } + ); + + redux.field_objects.date.init = function( selector ) { + if ( !selector ) { + selector = $( document ).find( '.redux-container-date:visible' ); + } + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + + el.find( '.redux-datepicker' ).each( function() { + $( this ).datepicker({ + "dateFormat":"mm/dd/yy", + beforeShow: function(input, instance){ + var el = $('#ui-datepicker-div'); + var popover = instance.dpDiv; + //$('.redux-container:first').append(el); + $(this).parent().append(el); + $('#ui-datepicker-div').hide(); + setTimeout(function() { + popover.position({ + my: 'left top', + at: 'left bottom', + collision: 'none', + of: input + }); + }, 1); + } + }); + }); + } + ); + + + }; +})( jQuery ); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/date/field_date.min.js b/redux/ReduxCore/inc/fields/date/field_date.min.js new file mode 100644 index 0000000..6247b35 --- /dev/null +++ b/redux/ReduxCore/inc/fields/date/field_date.min.js @@ -0,0 +1 @@ +!function(n){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.date=redux.field_objects.date||{},n(document).ready(function(){}),redux.field_objects.date.init=function(e){e||(e=n(document).find(".redux-container-date:visible")),n(e).each(function(){var e=n(this),i=e;e.hasClass("redux-field-container")||(i=e.parents(".redux-field-container:first")),i.is(":hidden")||i.hasClass("redux-field-init")&&(i.removeClass("redux-field-init"),e.find(".redux-datepicker").each(function(){n(this).datepicker({dateFormat:"mm/dd/yy",beforeShow:function(e,i){var t=n("#ui-datepicker-div"),d=i.dpDiv;n(this).parent().append(t),n("#ui-datepicker-div").hide(),setTimeout(function(){d.position({my:"left top",at:"left bottom",collision:"none",of:e})},1)}})}))})}}(jQuery); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/date/field_date.php b/redux/ReduxCore/inc/fields/date/field_date.php new file mode 100644 index 0000000..af83c04 --- /dev/null +++ b/redux/ReduxCore/inc/fields/date/field_date.php @@ -0,0 +1,95 @@ +. + * + * @package ReduxFramework + * @subpackage Field_Date + * @author Daniel J Griffiths (Ghost1227) + * @author Dovy Paukstys + * @author Kevin Provance (kprovance) + * @version 3.0.0 + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +// Don't duplicate me! +if ( ! class_exists( 'ReduxFramework_date' ) ) { + + /** + * Main ReduxFramework_date class + * + * @since 1.0.0 + */ + class ReduxFramework_date { + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since 1.0.0 + * @access public + * @return void + */ + function __construct( $field = array(), $value = '', $parent=null ) { + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render() { + $placeholder = ( isset( $this->field['placeholder'] ) ) ? ' placeholder="' . esc_attr( $this->field['placeholder'] ) . '" ' : ''; + + echo ''; + } + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since 1.0.0 + * @access public + * @return void + */ + public function enqueue() { + + if ($this->parent->args['dev_mode']) { + wp_enqueue_style( + 'redux-field-date-css', + ReduxFramework::$_url . 'inc/fields/date/field_date.css', + array(), + time(), + 'all' + ); + } + + wp_enqueue_script( + 'redux-field-date-js', + ReduxFramework::$_url . 'inc/fields/date/field_date' . Redux_Functions::isMin() . '.js', + array( 'jquery', 'jquery-ui-core', 'jquery-ui-datepicker', 'redux-js' ), + time(), + true + ); + } + } +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/date/field_date.scss b/redux/ReduxCore/inc/fields/date/field_date.scss new file mode 100644 index 0000000..dd931de --- /dev/null +++ b/redux/ReduxCore/inc/fields/date/field_date.scss @@ -0,0 +1,8 @@ +#ui-datepicker-div { + z-index: 15 !important; +} + +.ui-datepicker-header { + background-color: #00abef; +} + diff --git a/redux/ReduxCore/inc/fields/dimensions/field_dimensions.css b/redux/ReduxCore/inc/fields/dimensions/field_dimensions.css new file mode 100644 index 0000000..9b0cbf9 --- /dev/null +++ b/redux/ReduxCore/inc/fields/dimensions/field_dimensions.css @@ -0,0 +1 @@ +.redux-dimensions-container select,.redux-dimensions-container .select_wrapper{width:65px !important;float:left}.redux-dimensions-container .field-dimensions-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width: 782px){.redux-dimensions-container .field-dimensions-input input{display:inline-block !important;width:100px !important}.redux-dimensions-container .field-dimensions-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-dimensions-container .select_wrapper{margin-top:6px}} diff --git a/redux/ReduxCore/inc/fields/dimensions/field_dimensions.css.map b/redux/ReduxCore/inc/fields/dimensions/field_dimensions.css.map new file mode 100644 index 0000000..b811826 --- /dev/null +++ b/redux/ReduxCore/inc/fields/dimensions/field_dimensions.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AACI;2CACgB;EACZ,KAAK,EAAE,eAAe;EACtB,KAAK,EAAE,IAAI;AAGf,mDAAwB;EACpB,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,GAAG;;AAI1B,oCAAqC;EAGzB,yDAAM;IACF,OAAO,EAAE,uBAAuB;IAChC,KAAK,EAAE,gBAAgB;EAG3B,2DAAQ;IACJ,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,GAAG;EAIxB,2CAAgB;IACZ,UAAU,EAAE,GAAG", +"sources": ["field_dimensions.scss"], +"names": [], +"file": "field_dimensions.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/dimensions/field_dimensions.js b/redux/ReduxCore/inc/fields/dimensions/field_dimensions.js new file mode 100644 index 0000000..3ddc6f1 --- /dev/null +++ b/redux/ReduxCore/inc/fields/dimensions/field_dimensions.js @@ -0,0 +1,76 @@ + +/*global jQuery, document, redux*/ + +(function( $ ) { + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.dimensions = redux.field_objects.dimensions || {}; + + $( document ).ready( + function() { + //redux.field_objects.dimensions.init(); + } + ); + + redux.field_objects.dimensions.init = function( selector ) { + + if ( !selector ) { + selector = $( document ).find( '.redux-container-dimensions:visible' ); + } + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + var default_params = { + width: 'resolve', + triggerChange: true, + allowClear: true + }; + + var select2_handle = el.find( '.select2_params' ); + if ( select2_handle.size() > 0 ) { + var select2_params = select2_handle.val(); + + select2_params = JSON.parse( select2_params ); + default_params = $.extend( {}, default_params, select2_params ); + } + + el.find( ".redux-dimensions-units" ).select2( default_params ); + + el.find( '.redux-dimensions-input' ).on( + 'change', function() { + var units = $( this ).parents( '.redux-field:first' ).find( '.field-units' ).val(); + if ( $( this ).parents( '.redux-field:first' ).find( '.redux-dimensions-units' ).length !== 0 ) { + units = $( this ).parents( '.redux-field:first' ).find( '.redux-dimensions-units option:selected' ).val(); + } + if ( typeof units !== 'undefined' ) { + el.find( '#' + $( this ).attr( 'rel' ) ).val( $( this ).val() + units ); + } else { + el.find( '#' + $( this ).attr( 'rel' ) ).val( $( this ).val() ); + } + } + ); + + el.find( '.redux-dimensions-units' ).on( + 'change', function() { + $( this ).parents( '.redux-field:first' ).find( '.redux-dimensions-input' ).change(); + } + ); + } + ); + + + }; +})( jQuery ); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/dimensions/field_dimensions.min.js b/redux/ReduxCore/inc/fields/dimensions/field_dimensions.min.js new file mode 100644 index 0000000..ff0be9e --- /dev/null +++ b/redux/ReduxCore/inc/fields/dimensions/field_dimensions.min.js @@ -0,0 +1 @@ +!function(t){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.dimensions=redux.field_objects.dimensions||{},t(document).ready(function(){}),redux.field_objects.dimensions.init=function(i){i||(i=t(document).find(".redux-container-dimensions:visible")),t(i).each(function(){var e=t(this),i=e;if(e.hasClass("redux-field-container")||(i=e.parents(".redux-field-container:first")),!i.is(":hidden")&&i.hasClass("redux-field-init")){i.removeClass("redux-field-init");var n={width:"resolve",triggerChange:!0,allowClear:!0},s=e.find(".select2_params");if(0parent = $parent; + $this->field = $field; + $this->value = $value; + + // No errors please + $defaults = array( + 'width' => true, + 'height' => true, + 'units_extended' => false, + 'units' => 'px', + 'mode' => array( + 'width' => false, + 'height' => false, + ), + ); + + $this->field = wp_parse_args( $this->field, $defaults ); + + $defaults = array( + 'width' => '', + 'height' => '', + 'units' => 'px' + ); + + $this->value = wp_parse_args( $this->value, $defaults ); + + if ( isset( $this->value['unit'] ) ) { + $this->value['units'] = $this->value['unit']; + } + + } //function + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since ReduxFramework 1.0.0 + */ + function render() { + + /* + * Acceptable values checks. If the passed variable doesn't pass muster, we unset them + * and reset them with default values to avoid errors. + */ + + // If units field has a value but is not an acceptable value, unset the variable + if ( isset( $this->field['units'] ) && ! Redux_Helpers::array_in_array( $this->field['units'], array( + '', + false, + '%', + 'in', + 'cm', + 'mm', + 'em', + 'ex', + 'pt', + 'pc', + 'px', + 'rem' + ) ) + ) { + unset( $this->field['units'] ); + } + + //if there is a default unit value but is not an accepted value, unset the variable + if ( isset( $this->value['units'] ) && ! Redux_Helpers::array_in_array( $this->value['units'], array( + '', + '%', + 'in', + 'cm', + 'mm', + 'em', + 'ex', + 'pt', + 'pc', + 'px' + ) ) + ) { + unset( $this->value['units'] ); + } + + /* + * Since units field could be an array, string value or bool (to hide the unit field) + * we need to separate our functions to avoid those nasty PHP index notices! + */ + + // if field units has a value and IS an array, then evaluate as needed. + if ( isset( $this->field['units'] ) && ! is_array( $this->field['units'] ) ) { + + //if units fields has a value but units value does not then make units value the field value + if ( isset( $this->field['units'] ) && ! isset( $this->value['units'] ) || $this->field['units'] == false ) { + $this->value['units'] = $this->field['units']; + + // If units field does NOT have a value and units value does NOT have a value, set both to blank (default?) + } else if ( ! isset( $this->field['units'] ) && ! isset( $this->value['units'] ) ) { + $this->field['units'] = 'px'; + $this->value['units'] = 'px'; + + // If units field has NO value but units value does, then set unit field to value field + } else if ( ! isset( $this->field['units'] ) && isset( $this->value['units'] ) ) { + $this->field['units'] = $this->value['units']; + + // if unit value is set and unit value doesn't equal unit field (coz who knows why) + // then set unit value to unit field + } elseif ( isset( $this->value['units'] ) && $this->value['units'] !== $this->field['units'] ) { + $this->value['units'] = $this->field['units']; + } + + // do stuff based on unit field NOT set as an array + } elseif ( isset( $this->field['units'] ) && is_array( $this->field['units'] ) ) { + // nothing to do here, but I'm leaving the construct just in case I have to debug this again. + } + + echo '
    '; + + if ( isset( $this->field['select2'] ) ) { // if there are any let's pass them to js + $select2_params = json_encode( $this->field['select2'] ); + $select2_params = htmlspecialchars( $select2_params, ENT_QUOTES ); + + echo ''; + } + + + // This used to be unit field, but was giving the PHP index error when it was an array, + // so I changed it. + echo ''; + + /** + * Width + * */ + if ( $this->field['width'] === true ) { + if ( ! empty( $this->value['width'] ) && strpos( $this->value['width'], $this->value['units'] ) === false ) { + $this->value['width'] = filter_var( $this->value['width'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ); + if ( $this->field['units'] !== false ) { + $this->value['width'] .= $this->value['units']; + } + } + echo '
    '; + echo ''; + echo ''; + echo '
    '; + } + + /** + * Height + * */ + if ( $this->field['height'] === true ) { + if ( ! empty( $this->value['height'] ) && strpos( $this->value['height'], $this->value['units'] ) === false ) { + $this->value['height'] = filter_var( $this->value['height'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ); + if ( $this->field['units'] !== false ) { + $this->value['height'] .= $this->value['units']; + } + } + echo '
    '; + echo ''; + echo ''; + echo '
    '; + } + + /** + * Units + * */ + // If units field is set and units field NOT false then + // fill out the options object and show it, otherwise it's hidden + // and the default units value will apply. + if ( isset( $this->field['units'] ) && $this->field['units'] !== false ) { + echo '
    '; + echo '
    '; + }; + echo "
    "; + } //function + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since ReduxFramework 1.0.0 + */ + function enqueue() { + wp_enqueue_style( 'select2-css' ); + + wp_enqueue_script( + 'redux-field-dimensions-js', + ReduxFramework::$_url . 'inc/fields/dimensions/field_dimensions' . Redux_Functions::isMin() . '.js', + array( 'jquery', 'select2-js', 'redux-js' ), + time(), + true + ); + + if ( $this->parent->args['dev_mode'] ) { + wp_enqueue_style( + 'redux-field-dimensions-css', + ReduxFramework::$_url . 'inc/fields/dimensions/field_dimensions.css', + array(), + time(), + 'all' + ); + } + } + + public function output() { + + // if field units has a value and IS an array, then evaluate as needed. + if ( isset( $this->field['units'] ) && ! is_array( $this->field['units'] ) ) { + + //if units fields has a value but units value does not then make units value the field value + if ( isset( $this->field['units'] ) && ! isset( $this->value['units'] ) || $this->field['units'] == false ) { + $this->value['units'] = $this->field['units']; + + // If units field does NOT have a value and units value does NOT have a value, set both to blank (default?) + } else if ( ! isset( $this->field['units'] ) && ! isset( $this->value['units'] ) ) { + $this->field['units'] = 'px'; + $this->value['units'] = 'px'; + + // If units field has NO value but units value does, then set unit field to value field + } else if ( ! isset( $this->field['units'] ) && isset( $this->value['units'] ) ) { + $this->field['units'] = $this->value['units']; + + // if unit value is set and unit value doesn't equal unit field (coz who knows why) + // then set unit value to unit field + } elseif ( isset( $this->value['units'] ) && $this->value['units'] !== $this->field['units'] ) { + $this->value['units'] = $this->field['units']; + } + + // do stuff based on unit field NOT set as an array + } elseif ( isset( $this->field['units'] ) && is_array( $this->field['units'] ) ) { + // nothing to do here, but I'm leaving the construct just in case I have to debug this again. + } + + $units = isset( $this->value['units'] ) ? $this->value['units'] : ""; + + if (!is_array($this->field['mode'])) { + $height = isset( $this->field['mode'] ) && ! empty( $this->field['mode'] ) ? $this->field['mode'] : 'height'; + $width = isset( $this->field['mode'] ) && ! empty( $this->field['mode'] ) ? $this->field['mode'] : 'width'; + } else { + $height = $this->field['mode']['height'] != false ? $this->field['mode']['height'] : 'height'; + $width = $this->field['mode']['width'] != false ? $this->field['mode']['width'] : 'width'; + } + + $cleanValue = array( + $height => isset( $this->value['height'] ) ? filter_var( $this->value['height'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) : '', + $width => isset( $this->value['width'] ) ? filter_var( $this->value['width'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) : '', + ); + + $style = ""; + + foreach ( $cleanValue as $key => $value ) { + // Output if it's a numeric entry + if ( isset( $value ) && is_numeric( $value ) ) { + $style .= $key . ':' . $value . $units . ';'; + } + } + + if ( ! empty( $style ) ) { + if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { + $keys = implode( ",", $this->field['output'] ); + $this->parent->outputCSS .= $keys . "{" . $style . '}'; + } + + if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { + $keys = implode( ",", $this->field['compiler'] ); + $this->parent->compilerCSS .= $keys . "{" . $style . '}'; + } + } + } //function + } //class + } + + diff --git a/redux/ReduxCore/inc/fields/dimensions/field_dimensions.scss b/redux/ReduxCore/inc/fields/dimensions/field_dimensions.scss new file mode 100644 index 0000000..ef3f50a --- /dev/null +++ b/redux/ReduxCore/inc/fields/dimensions/field_dimensions.scss @@ -0,0 +1,34 @@ +.redux-dimensions-container { + select, + .select_wrapper { + width: 65px !important; + float: left; + } + + .field-dimensions-input { + margin-right: 10px; + margin-bottom: 7px; + } +} + +@media screen and (max-width: 782px) { + .redux-dimensions-container { + .field-dimensions-input { + input { + display: inline-block !important; + width: 100px !important; + } + + .add-on { + padding: 7px 4px; + font-size: 16px; + line-height: 1.5; + } + } + + .select_wrapper { + margin-top: 6px; + } + } +} + diff --git a/redux/ReduxCore/inc/fields/divide/field_divide.css b/redux/ReduxCore/inc/fields/divide/field_divide.css new file mode 100644 index 0000000..85e90f8 --- /dev/null +++ b/redux/ReduxCore/inc/fields/divide/field_divide.css @@ -0,0 +1 @@ +.redux-main .divide{height:20px;line-height:20px;float:none;border-color:#E7E7E7;display:block;width:100%;height:35px !important;line-height:35px !important;position:relative;margin:15px 0 10px 0}.redux-main .divide .inner{width:42% !important;left:40% !important;margin-left:-6%;background-color:#FCFCFC;border-color:#E7E7E7;position:absolute;height:1px;top:50%;width:100%;margin-top:-1px;border-top-width:1px;border-top-style:solid}.redux-main .divide .inner span{background-color:#FCFCFC;border-color:#E7E7E7;height:5px;width:5px;border-width:2px;border-style:solid;display:block;position:absolute;left:50%;margin-left:-5px;margin-top:-5px}.wp-customizer .redux-container-divide .divide .inner{width:82% !important;left:18% !important;margin-left:-8%} diff --git a/redux/ReduxCore/inc/fields/divide/field_divide.css.map b/redux/ReduxCore/inc/fields/divide/field_divide.css.map new file mode 100644 index 0000000..5b14373 --- /dev/null +++ b/redux/ReduxCore/inc/fields/divide/field_divide.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AACI,mBAAQ;EACJ,MAAM,EAAE,IAAI;EACZ,WAAW,EAAE,IAAI;EACjB,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,OAAO;EACrB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,eAAe;EACvB,WAAW,EAAE,eAAe;EAC5B,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,aAAa;EAErB,0BAAO;IACH,KAAK,EAAE,cAAc;IACrB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,GAAG;IAChB,gBAAgB,EAAE,OAAO;IACzB,YAAY,EAAE,OAAO;IACrB,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,GAAG;IACX,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,IAAI;IAChB,gBAAgB,EAAE,GAAG;IACrB,gBAAgB,EAAE,KAAK;IACvB,+BAAK;MACD,gBAAgB,EAAE,OAAO;MACzB,YAAY,EAAE,OAAO;MACrB,MAAM,EAAE,GAAG;MACX,KAAK,EAAE,GAAG;MACV,YAAY,EAAE,GAAG;MACjB,YAAY,EAAE,KAAK;MACnB,OAAO,EAAE,KAAK;MACd,QAAQ,EAAE,QAAQ;MAClB,IAAI,EAAE,GAAG;MACT,WAAW,EAAE,IAAI;MACjB,UAAU,EAAE,IAAI;;AAO5B,qDAAe;EACX,KAAK,EAAE,cAAc;EACrB,IAAI,EAAE,cAAc;EACpB,WAAW,EAAE,GAAG", +"sources": ["field_divide.scss"], +"names": [], +"file": "field_divide.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/divide/field_divide.php b/redux/ReduxCore/inc/fields/divide/field_divide.php new file mode 100644 index 0000000..842dd76 --- /dev/null +++ b/redux/ReduxCore/inc/fields/divide/field_divide.php @@ -0,0 +1,85 @@ +. + * + * @package ReduxFramework + * @subpackage Field_Divide + * @author Daniel J Griffiths (Ghost1227) + * @author Dovy Paukstys + * @version 3.0.0 + */ + +// Exit if accessed directly +if ( !defined ( 'ABSPATH' ) ) { + exit; +} + +// Don't duplicate me! +if ( !class_exists ( 'ReduxFramework_divide' ) ) { + + /** + * Main ReduxFramework_divide class + * + * @since 1.0.0 + */ + class ReduxFramework_divide { + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since 1.0.0 + * @access public + * @return void + */ + function __construct ( $field = array(), $value = '', $parent=null ) { + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render () { + echo '
    '; + echo '
     
    '; + echo '
    '; + } + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since 1.0.0 + * @access public + * @return void + */ + public function enqueue() { + if ($this->parent->args['dev_mode']) { + wp_enqueue_style( + 'redux-field-divide', + ReduxFramework::$_url . 'inc/fields/divide/field_divide.css', + array(), + time(), + 'all' + ); + } + } + } +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/divide/field_divide.scss b/redux/ReduxCore/inc/fields/divide/field_divide.scss new file mode 100644 index 0000000..b34f814 --- /dev/null +++ b/redux/ReduxCore/inc/fields/divide/field_divide.scss @@ -0,0 +1,51 @@ +.redux-main { + .divide { + height: 20px; + line-height: 20px; + float: none; + border-color: #E7E7E7; + display: block; + width: 100%; + height: 35px !important; + line-height: 35px !important; + position: relative; + margin: 15px 0 10px 0; + + .inner { + width: 42% !important; + left: 40% !important; + margin-left: -6%; + background-color: #FCFCFC; + border-color: #E7E7E7; + position: absolute; + height: 1px; + top: 50%; + width: 100%; + margin-top: -1px; + border-top-width: 1px; + border-top-style: solid; + span { + background-color: #FCFCFC; + border-color: #E7E7E7; + height: 5px; + width: 5px; + border-width: 2px; + border-style: solid; + display: block; + position: absolute; + left: 50%; + margin-left: -5px; + margin-top: -5px; + } + } + } +} + +.wp-customizer .redux-container-divide { + .divide .inner { + width: 82% !important; + left: 18% !important; + margin-left: -8%; + } +} + diff --git a/redux/ReduxCore/inc/fields/editor/field_editor.css b/redux/ReduxCore/inc/fields/editor/field_editor.css new file mode 100644 index 0000000..735a0db --- /dev/null +++ b/redux/ReduxCore/inc/fields/editor/field_editor.css @@ -0,0 +1 @@ +.redux-container-editor .mceLayout td{border-width:1px;margin:0;padding:1px}.redux-container-editor input,.redux-container-editor textarea{margin:inherit}.redux-container-editor textarea{border-style:none;border:0;border-width:0}.redux-container-editor .wp-editor-container{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-editor .wp-editor-container textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-style:inherit}.redux-container-editor .quicktags-toolbar input{margin:2px 1px 4px;line-height:18px;display:inline-block;min-width:26px;padding:2px 4px;font:12px/18px Arial, Helvetica, sans-serif normal;color:#464646;border:1px solid #c3c3c3;-webkit-border-radius:3px;border-radius:3px;background:#eee;background-image:-webkit-gradient(linear, left bottom, left top, from(#e3e3e3), to(#fff));background-image:-webkit-linear-gradient(bottom, #e3e3e3, #fff);background-image:-moz-linear-gradient(bottom, #e3e3e3, #fff);background-image:-o-linear-gradient(bottom, #e3e3e3, #fff);background-image:linear-gradient(to top, #e3e3e3, #fff)} diff --git a/redux/ReduxCore/inc/fields/editor/field_editor.css.map b/redux/ReduxCore/inc/fields/editor/field_editor.css.map new file mode 100644 index 0000000..ae753e4 --- /dev/null +++ b/redux/ReduxCore/inc/fields/editor/field_editor.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AACI,qCAAc;EACV,YAAY,EAAE,GAAG;EACjB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,GAAG;AAGhB;gCACS;EACL,MAAM,EAAE,OAAO;AAGnB,gCAAS;EACL,YAAY,EAAE,IAAI;EAClB,MAAM,EAAE,CAAC;EACT,YAAY,EAAE,CAAC;AAGnB,4CAAqB;EACjB,qBAAqB,EAAE,GAAG;EAC1B,kBAAkB,EAAE,GAAG;EACvB,aAAa,EAAE,GAAG;EAElB,qDAAS;IACL,qBAAqB,EAAE,CAAC;IACxB,kBAAkB,EAAE,CAAC;IACrB,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,OAAO;AAI7B,gDAAyB;EACrB,MAAM,EAAE,WAAW;EACnB,WAAW,EAAE,IAAI;EACjB,OAAO,EAAE,YAAY;EACrB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,OAAO;EAChB,IAAI,EAAE,6CAA6C;EACnD,KAAK,EAAE,OAAO;EACd,MAAM,EAAE,iBAAiB;EACzB,qBAAqB,EAAE,GAAG;EAC1B,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,IAAI;EAChB,gBAAgB,EAAE,wEAAwE;EAC1F,gBAAgB,EAAE,8CAA8C;EAChE,gBAAgB,EAAE,2CAA2C;EAC7D,gBAAgB,EAAE,yCAAyC;EAC3D,gBAAgB,EAAE,sCAAsC", +"sources": ["field_editor.scss"], +"names": [], +"file": "field_editor.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/editor/field_editor.js b/redux/ReduxCore/inc/fields/editor/field_editor.js new file mode 100644 index 0000000..288b606 --- /dev/null +++ b/redux/ReduxCore/inc/fields/editor/field_editor.js @@ -0,0 +1,44 @@ +/** + * Redux Editor on change callback + * Dependencies : jquery + * Feature added by : Dovy Paukstys + * : Kevin Provance (who helped) :P + * Date : 07 June 2014 + */ + +/*global redux_change, wp, tinymce, redux*/ +(function( $ ) { + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.editor = redux.field_objects.editor || {}; + + $( document ).ready( + function() { + //redux.field_objects.editor.init(); + } + ); + + redux.field_objects.editor.init = function( selector ) { + setTimeout( + function() { + if (typeof(tinymce) !== 'undefined') { + for ( var i = 0; i < tinymce.editors.length; i++ ) { + redux.field_objects.editor.onChange( i ); + } + } + }, 1000 + ); + }; + + redux.field_objects.editor.onChange = function( i ) { + tinymce.editors[i].on( + 'change', function( e ) { + var el = jQuery( e.target.contentAreaContainer ); + if ( el.parents( '.redux-container-editor:first' ).length !== 0 ) { + redux_change( $( '.wp-editor-area' ) ); + } + } + ); + }; +})( jQuery ); diff --git a/redux/ReduxCore/inc/fields/editor/field_editor.min.js b/redux/ReduxCore/inc/fields/editor/field_editor.min.js new file mode 100644 index 0000000..3828421 --- /dev/null +++ b/redux/ReduxCore/inc/fields/editor/field_editor.min.js @@ -0,0 +1 @@ +!function(t){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.editor=redux.field_objects.editor||{},t(document).ready(function(){}),redux.field_objects.editor.init=function(e){setTimeout(function(){if("undefined"!=typeof tinymce)for(var e=0;e. + * + * @package ReduxFramework + * @subpackage Field_Editor + * @author Daniel J Griffiths (Ghost1227) + * @author Dovy Paukstys + * @author Kevin Provance (kprovance) + * @version 3.0.0 + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +// Don't duplicate me! +if ( ! class_exists( 'ReduxFramework_editor' ) ) { + + /** + * Main ReduxFramework_editor class + * + * @since 1.0.0 + */ + class ReduxFramework_editor { + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since 1.0.0 + * @access public + * @return void + */ + function __construct( $field = array(), $value = '', $parent=null ) { + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render() { + + if ( ! isset( $this->field['args'] ) ) { + $this->field['args'] = array(); + } + + $this->field['args']['onchange_callback'] = "alert('here')"; + + // Setup up default args + $defaults = array( + 'textarea_name' => $this->field['name'] . $this->field['name_suffix'], + 'editor_class' => $this->field['class'], + 'textarea_rows' => 10, //Wordpress default + 'teeny' => true, + ); + + if ( isset( $this->field['editor_options'] ) && empty( $this->field['args'] ) ) { + $this->field['args'] = $this->field['editor_options']; + unset( $this->field['editor_options'] ); + } + + $this->field['args'] = wp_parse_args( $this->field['args'], $defaults ); + + wp_editor( $this->value, $this->field['id'], $this->field['args'] ); + } + + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since 1.0.0 + * @access public + * @return void + */ + public function enqueue() { + if ($this->parent->args['dev_mode']) { + wp_enqueue_style( + 'redux-field-editor-css', + ReduxFramework::$_url . 'inc/fields/editor/field_editor.css', + array(), + time(), + 'all' + ); + } + + wp_enqueue_script( + 'redux-field-editor-js', + ReduxFramework::$_url . 'inc/fields/editor/field_editor' . Redux_Functions::isMin() . '.js', + array( 'jquery', 'redux-js' ), + time(), + true + ); + } + } +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/editor/field_editor.scss b/redux/ReduxCore/inc/fields/editor/field_editor.scss new file mode 100644 index 0000000..64798bd --- /dev/null +++ b/redux/ReduxCore/inc/fields/editor/field_editor.scss @@ -0,0 +1,51 @@ +.redux-container-editor { + .mceLayout td { + border-width: 1px; + margin: 0; + padding: 1px; + } + + input, + textarea { + margin: inherit; + } + + textarea { + border-style: none; + border: 0; + border-width: 0; + } + + .wp-editor-container { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + + textarea { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + border-style: inherit; + } + } + + .quicktags-toolbar input { + margin: 2px 1px 4px; + line-height: 18px; + display: inline-block; + min-width: 26px; + padding: 2px 4px; + font: 12px/18px Arial, Helvetica, sans-serif normal; + color: #464646; + border: 1px solid #c3c3c3; + -webkit-border-radius: 3px; + border-radius: 3px; + background: #eee; + background-image: -webkit-gradient(linear, left bottom, left top, from(#e3e3e3), to(#fff)); + background-image: -webkit-linear-gradient(bottom, #e3e3e3, #fff); + background-image: -moz-linear-gradient(bottom, #e3e3e3, #fff); + background-image: -o-linear-gradient(bottom, #e3e3e3, #fff); + background-image: linear-gradient(to top, #e3e3e3, #fff); + } +} + diff --git a/redux/ReduxCore/inc/fields/gallery/field_gallery.js b/redux/ReduxCore/inc/fields/gallery/field_gallery.js new file mode 100644 index 0000000..c44445a --- /dev/null +++ b/redux/ReduxCore/inc/fields/gallery/field_gallery.js @@ -0,0 +1,137 @@ +/* global redux_change, wp */ + +/*global redux_change, redux*/ + +(function( $ ) { + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.gallery = redux.field_objects.gallery || {}; + + redux.field_objects.gallery.init = function( selector ) { + + + if ( !selector ) { + selector = $( document ).find( '.redux-container-gallery:visible' ); + } + + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + // When the user clicks on the Add/Edit gallery button, we need to display the gallery editing + el.on( + { + click: function( event ) { + //console.log(event); + // hide gallery settings used for posts/pages + wp.media.view.Settings.Gallery = wp.media.view.Settings.Gallery.extend({ +// render: function(){ +// console.log(wp.media.view); +// this.update.apply( this, ['size'] ); +// return this; +// }, + template: function(view){ + //console.log(view); + + return;// wp.media.template('gallery-settings')(view); + } + }); + + var current_gallery = $( this ).closest( 'fieldset' ); + + if ( event.currentTarget.id === 'clear-gallery' ) { + //remove value from input + + var rmVal = current_gallery.find( '.gallery_values' ).val( '' ); + + //remove preview images + current_gallery.find( ".screenshot" ).html( "" ); + + return; + + } + + // Make sure the media gallery API exists + if ( typeof wp === 'undefined' || !wp.media || !wp.media.gallery ) { + return; + } + event.preventDefault(); + + // Activate the media editor + var $$ = $( this ); + + var val = current_gallery.find( '.gallery_values' ).val(); + var final; + + if ( !val ) { + final = '[gallery ids="0"]'; + } else { + final = '[gallery ids="' + val + '"]'; + } + + + var frame = wp.media.gallery.edit( final ); + + if (!val) { + var uploader = $('body').find('#' + frame.el.id); + var inline = uploader.find('.uploader-inline'); + var spinner = uploader.find('.media-toolbar .spinner'); + + setTimeout( + function(){ + if (inline.hasClass('hidden')) { + inline.removeClass('hidden'); + spinner.removeClass('is-active'); + } + }, 400 + ); + } + + // When the gallery-edit state is updated, copy the attachment ids across + frame.state( 'gallery-edit' ).on( + 'update', function( selection ) { + + //clear screenshot div so we can append new selected images + current_gallery.find( ".screenshot" ).html( "" ); + + var element, preview_html = "", preview_img; + var ids = selection.models.map( + function( e ) { + element = e.toJSON(); + //preview_img = typeof element.sizes.thumbnail !== 'undefined' ? element.sizes.thumbnail.url : element.url; + preview_img = (typeof element.sizes !== "undefined" && typeof element.sizes.thumbnail !== 'undefined') ? element.sizes.thumbnail.url : element.url; + + preview_html = ""; + current_gallery.find( ".screenshot" ).append( preview_html ); + + return e.id; + } + ); + + current_gallery.find( '.gallery_values' ).val( ids.join( ',' ) ); + redux_change( current_gallery.find( '.gallery_values' ) ); + frame.detach(); + } + ); + + return false; + } + }, '.gallery-attachments' + ); + } + ); + + }; +})( jQuery ); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/gallery/field_gallery.min.js b/redux/ReduxCore/inc/fields/gallery/field_gallery.min.js new file mode 100644 index 0000000..7926d9f --- /dev/null +++ b/redux/ReduxCore/inc/fields/gallery/field_gallery.min.js @@ -0,0 +1 @@ +!function(s){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.gallery=redux.field_objects.gallery||{},redux.field_objects.gallery.init=function(e){e||(e=s(document).find(".redux-container-gallery:visible")),s(e).each(function(){var e=s(this),i=e;e.hasClass("redux-field-container")||(i=e.parents(".redux-field-container:first")),i.is(":hidden")||i.hasClass("redux-field-init")&&(i.removeClass("redux-field-init"),e.on({click:function(e){wp.media.view.Settings.Gallery=wp.media.view.Settings.Gallery.extend({template:function(e){}});var n=s(this).closest("fieldset");if("clear-gallery"!==e.currentTarget.id){if("undefined"!=typeof wp&&wp.media&&wp.media.gallery){e.preventDefault();s(this);var i,l=n.find(".gallery_values").val();i=l?'[gallery ids="'+l+'"]':'[gallery ids="0"]';var t=wp.media.gallery.edit(i);if(!l){var a=s("body").find("#"+t.el.id),d=a.find(".uploader-inline"),r=a.find(".media-toolbar .spinner");setTimeout(function(){d.hasClass("hidden")&&(d.removeClass("hidden"),r.removeClass("is-active"))},400)}return t.state("gallery-edit").on("update",function(e){n.find(".screenshot").html("");var i,l,a="",d=e.models.map(function(e){return i=e.toJSON(),l=void 0!==i.sizes&&void 0!==i.sizes.thumbnail?i.sizes.thumbnail.url:i.url,a="",n.find(".screenshot").append(a),e.id});n.find(".gallery_values").val(d.join(",")),redux_change(n.find(".gallery_values")),t.detach()}),!1}}else{n.find(".gallery_values").val("");n.find(".screenshot").html("")}}},".gallery-attachments"))})}}(jQuery); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/gallery/field_gallery.php b/redux/ReduxCore/inc/fields/gallery/field_gallery.php new file mode 100644 index 0000000..a237fcc --- /dev/null +++ b/redux/ReduxCore/inc/fields/gallery/field_gallery.php @@ -0,0 +1,105 @@ +. + * + * @package ReduxFramework + * @subpackage Field_Gallery + * @author Abdullah Almesbahi (cadr-sa) + * @version 3.0.0 + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +// Don't duplicate me! +if ( ! class_exists( 'ReduxFramework_gallery' ) ) { + + /** + * Main ReduxFramework_gallery class + * + * @since 3.0.0 + */ + class ReduxFramework_gallery { + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since 1.0.0 + * @access public + * @return void + */ + function __construct( $field = array(), $value = '', $parent=null ) { + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render() { + echo '
    '; + + if ( ! empty( $this->value ) ) { + $ids = explode( ',', $this->value ); + + foreach ( $ids as $attachment_id ) { + $img = wp_get_attachment_image_src( $attachment_id, 'thumbnail' ); + echo ''; + echo ''; + echo ''; + } + } + + echo '
    '; + echo '' . __( 'Add/Edit Gallery', 'redux-framework' ) . ' '; + echo '' . __( 'Clear Gallery', 'redux-framework' ) . ''; + echo ''; + } + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since 1.0.0 + * @access public + * @return void + */ + public function enqueue() { + + if ( function_exists( 'wp_enqueue_media' ) ) { + wp_enqueue_media(); + } else { + wp_enqueue_script( 'media-upload' ); + wp_enqueue_script( 'thickbox' ); + wp_enqueue_style( 'thickbox' ); + } + + wp_enqueue_script( + 'redux-field-gallery-js', + ReduxFramework::$_url . 'inc/fields/gallery/field_gallery' . Redux_Functions::isMin() . '.js', + array( 'jquery', 'redux-js' ), + time(), + true + ); + } + } +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/image_select/field_image_select.css b/redux/ReduxCore/inc/fields/image_select/field_image_select.css new file mode 100644 index 0000000..474f934 --- /dev/null +++ b/redux/ReduxCore/inc/fields/image_select/field_image_select.css @@ -0,0 +1 @@ +.redux-container-image_select .redux-table-container{display:table;table-layout:fixed;width:100%}.redux-container-image_select .redux-image-select{margin:0 !important}.redux-container-image_select .redux-image-select .tiles{display:block;background-color:#FFF;background-repeat:repeat;width:40px;height:40px}.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select .tiles{border-color:#d9d9d9}.redux-container-image_select .redux-image-select li:last-child{margin-bottom:0}.redux-container-image_select .redux-image-select input[type='radio']{display:none}.redux-container-image_select .redux-image-select-presets img{width:100%}.redux-container-image_select ul.redux-image-select li{margin:0 10px 3px 10px;display:inline-block;padding:2px 2px;padding-left:0}.redux-container-image_select .redux-image-select-selected{background-color:#f9f9f9}.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select-selected img,.redux-container-image_select .redux-image-select .tiles,.redux-container-image_select .redux-image-select-selected .tiles{border-width:4px;border-style:solid}.redux-container-image_select .redux-image-select-selected .tiles,.redux-container-image_select .redux-image-select-selected .tiles{border-color:#7a7a7a} diff --git a/redux/ReduxCore/inc/fields/image_select/field_image_select.css.map b/redux/ReduxCore/inc/fields/image_select/field_image_select.css.map new file mode 100644 index 0000000..12eb6cd --- /dev/null +++ b/redux/ReduxCore/inc/fields/image_select/field_image_select.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AACI,oDAAuB;EACnB,OAAO,EAAE,KAAK;EACd,YAAY,EAAE,KAAK;EACnB,KAAK,EAAE,IAAI;AAGf,iDAAoB;EAChB,MAAM,EAAE,YAAY;EAEpB,wDAAO;IACH,OAAO,EAAE,KAAK;IACd,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,MAAM;IACzB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB;0DACO;IACH,YAAY,EAAE,OAAO;EAGzB,+DAAc;IACV,aAAa,EAAE,CAAC;EAGpB,qEAAoB;IAChB,OAAO,EAAE,IAAI;AAIrB,6DAAgC;EAC5B,KAAK,EAAE,IAAI;AAGf,sDAAyB;EACrB,MAAM,EAAE,eAAe;EACvB,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,OAAO;EAChB,YAAY,EAAE,CAAC;AAGnB,0DAA6B;EACzB,gBAAgB,EAAE,OAAO;AAG7B;;;iEAGoC;EAChC,YAAY,EAAE,GAAG;EACjB,YAAY,EAAE,KAAK;AAKnB;iEAAO;EACH,YAAY,EAAE,OAAO", +"sources": ["field_image_select.scss"], +"names": [], +"file": "field_image_select.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/image_select/field_image_select.js b/redux/ReduxCore/inc/fields/image_select/field_image_select.js new file mode 100644 index 0000000..ae209b3 --- /dev/null +++ b/redux/ReduxCore/inc/fields/image_select/field_image_select.js @@ -0,0 +1,119 @@ +/* global confirm, redux, redux_change */ + +/*global redux_change, redux*/ + +(function( $ ) { + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.image_select = redux.field_objects.image_select || {}; + + $( document ).ready( + function() { + //redux.field_objects.image_select.init(); + } + ); + + redux.field_objects.image_select.init = function( selector ) { + + if ( !selector ) { + selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-image_select:visible' ); + } + + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + // On label click, change the input and class + el.find( '.redux-image-select label img, .redux-image-select label .tiles' ).click( + function( e ) { + var id = $( this ).closest( 'label' ).attr( 'for' ); + + $( this ).parents( "fieldset:first" ).find( '.redux-image-select-selected' ).removeClass( 'redux-image-select-selected' ).find( "input[type='radio']" ).attr( + "checked", false + ); + $( this ).closest( 'label' ).find( 'input[type="radio"]' ).prop( 'checked' ); + + if ( $( this ).closest( 'label' ).hasClass( 'redux-image-select-preset-' + id ) ) { // If they clicked on a preset, import! + e.preventDefault(); + + var presets = $( this ).closest( 'label' ).find( 'input' ); + var data = presets.data( 'presets' ); + var merge = presets.data( 'merge' ); + + if( merge !== undefined && merge !== null ) { + if( $.type( merge ) === 'string' ) { + merge = merge.split('|'); + } + + $.each(data, function( index, value ) { + if( ( merge === true || $.inArray( index, merge ) != -1 ) && $.type( redux.options[index] ) === 'object' ) { + data[index] = $.extend(redux.options[index], data[index]); + } + }); + } + + if ( presets !== undefined && presets !== null ) { + var answer = confirm( redux.args.preset_confirm ); + + if ( answer ) { + el.find( 'label[for="' + id + '"]' ).addClass( 'redux-image-select-selected' ).find( "input[type='radio']" ).attr( + "checked", true + ); + window.onbeforeunload = null; + if ( $( '#import-code-value' ).length === 0 ) { + $( this ).append( '' ); + } else { + $( '#import-code-value' ).val( JSON.stringify( data ) ); + } + if ( $( '#publishing-action #publish' ).length !== 0 ) { + $( '#publish' ).click(); + } else { + $( '#redux-import' ).click(); + } + } + } else { + } + + return false; + } else { + el.find( 'label[for="' + id + '"]' ).addClass( 'redux-image-select-selected' ).find( "input[type='radio']" ).attr( + "checked", true + ).trigger('change'); + + redux_change( $( this ).closest( 'label' ).find( 'input[type="radio"]' ) ); + } + } + ); + + // Used to display a full image preview of a tile/pattern + el.find( '.tiles' ).qtip( + { + content: { + text: function( event, api ) { + return ""; + }, + }, + style: 'qtip-tipsy', + position: { + my: 'top center', // Position my top left... + at: 'bottom center', // at the bottom right of... + } + } + ); + } + ); + + }; +})( jQuery ); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/image_select/field_image_select.min.js b/redux/ReduxCore/inc/fields/image_select/field_image_select.min.js new file mode 100644 index 0000000..27f3f16 --- /dev/null +++ b/redux/ReduxCore/inc/fields/image_select/field_image_select.min.js @@ -0,0 +1 @@ +!function(d){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.image_select=redux.field_objects.image_select||{},d(document).ready(function(){}),redux.field_objects.image_select.init=function(e){e||(e=d(document).find(".redux-group-tab:visible").find(".redux-container-image_select:visible")),d(e).each(function(){var r=d(this),e=r;r.hasClass("redux-field-container")||(e=r.parents(".redux-field-container:first")),e.is(":hidden")||e.hasClass("redux-field-init")&&(e.removeClass("redux-field-init"),r.find(".redux-image-select label img, .redux-image-select label .tiles").click(function(e){var t=d(this).closest("label").attr("for");if(d(this).parents("fieldset:first").find(".redux-image-select-selected").removeClass("redux-image-select-selected").find("input[type='radio']").attr("checked",!1),d(this).closest("label").find('input[type="radio"]').prop("checked"),d(this).closest("label").hasClass("redux-image-select-preset-"+t)){e.preventDefault();var i=d(this).closest("label").find("input"),s=i.data("presets"),l=i.data("merge");if(null!=l&&("string"===d.type(l)&&(l=l.split("|")),d.each(s,function(e,t){!0!==l&&-1==d.inArray(e,l)||"object"!==d.type(redux.options[e])||(s[e]=d.extend(redux.options[e],s[e]))})),null!=i)confirm(redux.args.preset_confirm)&&(r.find('label[for="'+t+'"]').addClass("redux-image-select-selected").find("input[type='radio']").attr("checked",!0),window.onbeforeunload=null,0===d("#import-code-value").length?d(this).append('"):d("#import-code-value").val(JSON.stringify(s)),0!==d("#publishing-action #publish").length?d("#publish").click():d("#redux-import").click());return!1}r.find('label[for="'+t+'"]').addClass("redux-image-select-selected").find("input[type='radio']").attr("checked",!0).trigger("change"),redux_change(d(this).closest("label").find('input[type="radio"]'))}),r.find(".tiles").qtip({content:{text:function(e,t){return""}},style:"qtip-tipsy",position:{my:"top center",at:"bottom center"}}))})}}(jQuery); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/image_select/field_image_select.php b/redux/ReduxCore/inc/fields/image_select/field_image_select.php new file mode 100644 index 0000000..b0e10b5 --- /dev/null +++ b/redux/ReduxCore/inc/fields/image_select/field_image_select.php @@ -0,0 +1,279 @@ +. + * + * @package ReduxFramework + * @subpackage Field_Images + * @author Daniel J Griffiths (Ghost1227) + * @author Dovy Paukstys + * @version 3.0.0 + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +// Don't duplicate me! +if ( ! class_exists( 'ReduxFramework_image_select' ) ) { + + /** + * Main ReduxFramework_image_select class + * + * @since 1.0.0 + */ + class ReduxFramework_image_select { + + public $parent; + public $field; + public $value; + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since 1.0.0 + * @access public + * @return void + */ + function __construct( $field = array(), $value = '', $parent=null ) { + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render() { + + if ( ! empty( $this->field['options'] ) ) { + echo '
    '; + echo '
      '; + + $x = 1; + + foreach ( $this->field['options'] as $k => $v ) { + + if ( ! is_array( $v ) ) { + $v = array( 'img' => $v ); + } + + if ( ! isset( $v['title'] ) ) { + $v['title'] = ''; + } + + if ( ! isset( $v['alt'] ) ) { + $v['alt'] = $v['title']; + } + + if ( ! isset( $v['class'] ) ) { + $v['class'] = ''; + } + + $style = ''; + + if ( ! empty( $this->field['width'] ) ) { + $style .= 'width: ' . $this->field['width']; + + if ( is_numeric( $this->field['width'] ) ) { + $style .= 'px'; + } + + $style .= ';'; + } else { + $style .= " width: 100%; "; + } + + if ( ! empty( $this->field['height'] ) ) { + $style .= 'height: ' . $this->field['height']; + + if ( is_numeric( $this->field['height'] ) ) { + $style .= 'px'; + } + + $style .= ';'; + } + + $theValue = $k; + + $selected = ( checked( $this->value, $theValue, false ) != '' ) ? ' redux-image-select-selected' : ''; + + if ( ! empty( $this->field['tiles'] ) && $this->field['tiles'] == true ) { + $theValue = $v['img']; + } + + $presets = ''; + $is_preset = false; + + $this->field['class'] .= ' noUpdate '; + if ( isset( $this->field['presets'] ) && $this->field['presets'] !== false ) { + $this->field['class'] = trim($this->field['class']); + if ( ! isset( $v['presets'] ) ) { + $v['presets'] = array(); + } + + if ( ! is_array( $v['presets'] ) ) { + $v['presets'] = json_decode( $v['presets'], true ); + } + + // Only highlight the preset if it's the same + if ( $selected ) { + if ( empty( $v['presets'] ) ) { + $selected = false; + } else { + foreach ( $v['presets'] as $pk => $pv ) { + if ( isset( $v['merge'] ) && $v['merge'] !== false ) { + if( ( $v['merge'] === true || in_array( $pk, $v['merge'] ) ) && is_array( $this->parent->options[ $pk ] ) ) { + $pv = array_merge( $this->parent->options[ $pk ], $pv ); + } + } + + if ( empty( $pv ) && isset( $this->parent->options[ $pk ] ) && ! empty( $this->parent->options[ $pk ] ) ) { + $selected = false; + } else if ( ! empty( $pv ) && ! isset( $this->parent->options[ $pk ] ) ) { + $selected = false; + //} else if ( isset( $this->parent->options[ $pk ] ) && $this->parent->options[ $pk ] != $pv ) { + // $selected = false; + } + + if ( ! $selected ) { // We're still not using the same preset. Let's unset that shall we? + $this->value = ""; + break; + } + } + } + } + + $v['presets']['redux-backup'] = 1; + + $presets = ' data-presets="' . htmlspecialchars( json_encode( $v['presets'] ), ENT_QUOTES, 'UTF-8' ) . '"'; + $is_preset = true; + + $this->field['class'] = trim( $this->field['class'] ) . ' redux-presets'; + } + + $is_preset_class = $is_preset ? '-preset-' : ' '; + + $merge = ''; + if ( isset( $v['merge'] ) && $v['merge'] !== false ) { + $merge = is_array( $v['merge'] ) ? implode( '|', $v['merge'] ) : 'true'; + $merge = ' data-merge="' . htmlspecialchars( $merge, ENT_QUOTES, 'UTF-8' ) . '"'; + } + + echo '
    • '; + echo ''; + echo '
    • '; + + $x ++; + } + + echo '
    '; + echo '
    '; + } + } + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since 1.0.0 + * @access public + * @return void + */ + public function enqueue() { + + wp_enqueue_script( + 'redux-field-image-select-js', + ReduxFramework::$_url . 'inc/fields/image_select/field_image_select' . Redux_Functions::isMin() . '.js', + array( 'jquery', 'redux-js' ), + time(), + true + ); + + if ($this->parent->args['dev_mode']) { + wp_enqueue_style( + 'redux-field-image-select-css', + ReduxFramework::$_url . 'inc/fields/image_select/field_image_select.css', + array(), + time(), + 'all' + ); + } + } + + public function getCSS( $mode = '' ) { + $css = ''; + $value = $this->value; + + $output = ''; + if ( ! empty( $value ) && ! is_array($value) ) { + switch ( $mode ) { + case 'background-image': + $output = "background-image: url('" . $value . "');"; + break; + + default: + $output = $mode . ": " . $value . ";"; + } + } + + $css .= $output; + + return $css; + } + + public function output() { + $mode = ( isset( $this->field['mode'] ) && ! empty( $this->field['mode'] ) ? $this->field['mode'] : 'background-image' ); + + if ( ( ! isset( $this->field['output'] ) || ! is_array( $this->field['output'] ) ) && ( ! isset( $this->field['compiler'] ) ) ) { + return; + } + + $style = $this->getCSS( $mode ); + + if ( ! empty( $style ) ) { + + if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { + $keys = implode( ",", $this->field['output'] ); + $style = $keys . "{" . $style . '}'; + $this->parent->outputCSS .= $style; + } + + if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { + $keys = implode( ",", $this->field['compiler'] ); + $style = $keys . "{" . $style . '}'; + $this->parent->compilerCSS .= $style; + } + } + } + } +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/image_select/field_image_select.scss b/redux/ReduxCore/inc/fields/image_select/field_image_select.scss new file mode 100644 index 0000000..376241f --- /dev/null +++ b/redux/ReduxCore/inc/fields/image_select/field_image_select.scss @@ -0,0 +1,63 @@ +.redux-container-image_select { + .redux-table-container { + display: table; + table-layout: fixed; + width: 100%; + } + + .redux-image-select { + margin: 0 !important; + + .tiles { + display: block; + background-color: #FFF; + background-repeat: repeat; + width: 40px; + height: 40px; + } + + img, + .tiles { + border-color: #d9d9d9; + } + + li:last-child { + margin-bottom: 0; + } + + input[type='radio'] { + display: none; + } + } + + .redux-image-select-presets img { + width: 100%; + } + + ul.redux-image-select li { + margin: 0 10px 3px 10px; + display: inline-block; + padding: 2px 2px; + padding-left: 0; + } + + .redux-image-select-selected { + background-color: #f9f9f9; + } + + .redux-image-select img, + .redux-image-select-selected img, + .redux-image-select .tiles, + .redux-image-select-selected .tiles { + border-width: 4px; + border-style: solid; + } + + .redux-image-select-selected, + .redux-image-select-selected { + .tiles { + border-color: #7a7a7a; + } + } +} + diff --git a/redux/ReduxCore/inc/fields/info/field_info.css b/redux/ReduxCore/inc/fields/info/field_info.css new file mode 100644 index 0000000..357214d --- /dev/null +++ b/redux/ReduxCore/inc/fields/info/field_info.css @@ -0,0 +1 @@ +.redux-info-field{min-height:20px;padding:8px 19px;margin:10px 0;border:1px solid;border-radius:4px;border:1px solid;position:relative}.redux-info-field h1,.redux-info-field h2,.redux-info-field h3,.redux-info-field h4,.redux-info-field h5,.redux-info-field h6{border-bottom:0 !important}.redux-info-field h3{color:#777}.redux-info-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-info-field .redux-info-icon i{font-size:2em}.redux-info-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-info-field.redux-normal{background-color:#eeeeee;border-color:#cccccc;color:#666666}.redux-info-field.redux-normal i{color:#c5c5c5}.redux-info-field.redux-warning{background-color:#fbeba4;border-color:#d7c281;color:#958234}.redux-info-field.redux-warning i{color:#dcca81}.redux-info-field.redux-success{background-color:#c4ee91;border-color:#71af5d;color:#4d7615}.redux-info-field.redux-success i{color:#a0ca6c}.redux-info-field.redux-critical{background-color:#fba1a3;border-color:#b84f5b;color:#981225}.redux-info-field.redux-critical i{color:#dd767d}.redux-info-field.redux-info{background-color:#d3e4f4;border-color:#a9b6c2;color:#5c80a1}.redux-info-field.redux-info i{color:#afc6da}.redux-notice-field{margin:15px 0 0;background-color:#fff;border:0;border-left:4px solid #f3f3f3;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);padding:1px 12px}.redux-notice-field h1,.redux-notice-field h2,.redux-notice-field h3,.redux-notice-field h4,.redux-notice-field h5,.redux-notice-field h6{border-bottom:0 !important}.redux-notice-field p{margin:.5em 0;padding:2px}.redux-notice-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-notice-field .redux-info-icon i{font-size:2em}.redux-notice-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-notice-field.redux-info{border-left:4px solid #0099d5}.redux-notice-field.redux-success{border-left:4px solid #7ad03a}.redux-notice-field.redux-warning{border-left:4px solid #fbeba4}.redux-notice-field.redux-critical{border-left:4px solid #dd3d36}.redux-main .redux-field-container.redux-container-info{padding:0}.wp-customizer .hasIcon.redux-notice-field .redux-info-desc,.wp-customizer .hasIcon.redux-info-field .redux-info-desc{display:block;margin-left:43px}.wp-customizer .hasIcon.redux-notice-field .redux-info-icon,.wp-customizer .hasIcon.redux-info-field .redux-info-icon{float:left}.wp-customizer .redux-main .customize-control.customize-control-redux-info{border-bottom:0} diff --git a/redux/ReduxCore/inc/fields/info/field_info.css.map b/redux/ReduxCore/inc/fields/info/field_info.css.map new file mode 100644 index 0000000..aada54d --- /dev/null +++ b/redux/ReduxCore/inc/fields/info/field_info.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AAAA,iBAAkB;EACd,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,QAAQ;EACjB,MAAM,EAAE,MAAM;EACd,MAAM,EAAE,SAAS;EACjB,aAAa,EAAE,GAAG;EAClB,MAAM,EAAE,SAAS;EACjB,QAAQ,EAAE,QAAQ;EAElB;;;;;sBAKG;IACC,aAAa,EAAE,YAAY;EAG/B,oBAAG;IACC,KAAK,EAAE,IAAI;EAGf,kCAAiB;IACb,OAAO,EAAE,YAAY;IACrB,YAAY,EAAE,IAAI;IAElB,oCAAE;MACE,SAAS,EAAE,GAAG;EAItB,kCAAiB;IACb,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,GAAG;EAGvB,8BAAe;IACX,gBAAgB,EAAE,OAAO;IACzB,YAAY,EAAE,OAAO;IACrB,KAAK,EAAE,OAAO;IAEd,gCAAE;MACE,KAAK,EAAE,OAAO;EAItB,+BAAgB;IACZ,gBAAgB,EAAE,OAAO;IACzB,YAAY,EAAE,OAAO;IACrB,KAAK,EAAE,OAAO;IAEd,iCAAE;MACE,KAAK,EAAE,OAAO;EAItB,+BAAgB;IACZ,gBAAgB,EAAE,OAAO;IACzB,YAAY,EAAE,OAAO;IACrB,KAAK,EAAE,OAAO;IAEd,iCAAE;MACE,KAAK,EAAE,OAAO;EAItB,gCAAiB;IACb,gBAAgB,EAAE,OAAO;IACzB,YAAY,EAAE,OAAO;IACrB,KAAK,EAAE,OAAO;IAEd,kCAAE;MACE,KAAK,EAAE,OAAO;EAItB,4BAAa;IACT,gBAAgB,EAAE,OAAO;IACzB,YAAY,EAAE,OAAO;IACrB,KAAK,EAAE,OAAO;IAEd,8BAAE;MACE,KAAK,EAAE,OAAO;;AAK1B,mBAAoB;EAChB,MAAM,EAAE,QAAQ;EAChB,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,CAAC;EACT,WAAW,EAAE,iBAAiB;EAC9B,kBAAkB,EAAE,8BAA6B;EACjD,UAAU,EAAE,8BAA6B;EACzC,OAAO,EAAE,QAAQ;EAEjB;;;;;wBAKG;IACC,aAAa,EAAE,YAAY;EAG/B,qBAAE;IACE,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,GAAG;EAGhB,oCAAiB;IACb,OAAO,EAAE,YAAY;IACrB,YAAY,EAAE,IAAI;IAElB,sCAAE;MACE,SAAS,EAAE,GAAG;EAItB,oCAAiB;IACb,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,GAAG;EAGvB,8BAAa;IACT,WAAW,EAAE,iBAAiB;EAGlC,iCAAgB;IACZ,WAAW,EAAE,iBAAiB;EAGlC,iCAAgB;IACZ,WAAW,EAAE,iBAAiB;EAGlC,kCAAiB;IACb,WAAW,EAAE,iBAAiB;;AAItC,uDAAwD;EACpD,OAAO,EAAE,CAAC;;AAKN,sHAAiB;EACb,OAAO,EAAE,KAAK;EACd,WAAW,EAAE,IAAI;AAErB,sHAAiB;EACb,KAAK,EAAE,IAAI;AAGnB,0EAA4D;EACxD,aAAa,EAAE,CAAC", +"sources": ["field_info.scss"], +"names": [], +"file": "field_info.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/info/field_info.php b/redux/ReduxCore/inc/fields/info/field_info.php new file mode 100644 index 0000000..5c1d5d1 --- /dev/null +++ b/redux/ReduxCore/inc/fields/info/field_info.php @@ -0,0 +1,170 @@ +. + * + * @package ReduxFramework + * @subpackage Field_Info + * @author Daniel J Griffiths (Ghost1227) + * @author Dovy Paukstys + * @version 3.0.0 + */ + +// Exit if accessed directly + if ( ! defined( 'ABSPATH' ) ) { + exit; + } + +// Don't duplicate me! + if ( ! class_exists( 'ReduxFramework_info' ) ) { + + /** + * Main ReduxFramework_info class + * + * @since 1.0.0 + */ + class ReduxFramework_info { + + public $parent; + public $field; + public $value; + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since 1.0.0 + * @access public + * @return void + */ + function __construct( $field = array(), $value = '', $parent=null ) { + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render() { + + $defaults = array( + 'title' => '', + 'desc' => '', + 'notice' => true, + 'style' => '', + 'color' => '', + ); + + $this->field = wp_parse_args( $this->field, $defaults ); + + $styles = array( + 'normal', + 'info', + 'warning', + 'success', + 'critical', + 'custom' + ); + + if (!in_array($this->field['style'], $styles)) { + $this->field['style'] = 'normal'; + } + if ($this->field['style'] == "custom") { + if (!empty($this->field['color']) ) { + $this->field['color'] = "border-color:".$this->field['color'].';'; + } else { + $this->field['style'] = 'normal'; + $this->field['color'] = ""; + } + } else { + $this->field['color'] = ""; + } + + if ( empty( $this->field['desc'] ) && ! empty( $this->field['default'] ) ) { + $this->field['desc'] = $this->field['default']; + unset( $this->field['default'] ); + } + + if ( empty( $this->field['desc'] ) && ! empty( $this->field['subtitle'] ) ) { + $this->field['desc'] = $this->field['subtitle']; + unset( $this->field['subtitle'] ); + } + + if ( empty( $this->field['desc'] ) ) { + $this->field['desc'] = ""; + } + + if ( empty( $this->field['raw_html'] ) ) { + if ( $this->field['notice'] == true ) { + $this->field['class'] .= ' redux-notice-field'; + } else { + $this->field['class'] .= ' redux-info-field'; + } + + + + $this->field['style'] = 'redux-' . $this->field['style'] . ' '; + } + + $indent = ( isset( $this->field['sectionIndent'] ) && $this->field['sectionIndent'] ) ? ' form-table-section-indented' : ''; + + echo '
    field['style']) . ' ' . esc_attr($this->field['class']) . ' redux-field-' . esc_attr($this->field['type']) . esc_attr($indent) . '"'.( !empty($this->field['color']) ? ' style="' . esc_attr($this->field['color']) . '"' : '' ) . '>'; + + if ( ! empty( $this->field['raw_html'] ) && $this->field['raw_html'] ) { + echo wp_kses_post($this->field['desc']); + } else { + if ( isset( $this->field['title'] ) && ! empty( $this->field['title'] ) ) { + $this->field['title'] = '' . wp_kses_post($this->field['title']) . '
    '; + } + + if ( isset( $this->field['icon'] ) && ! empty( $this->field['icon'] ) && $this->field['icon'] !== true ) { + echo '

    '; + } + + if ( isset( $this->field['raw'] ) && ! empty( $this->field['raw'] ) ) { + echo wp_kses_post($this->field['raw']); + } + + if ( ! empty( $this->field['title'] ) || ! empty( $this->field['desc'] ) ) { + echo '

    ' . wp_kses_post($this->field['title']) . wp_kses_post($this->field['desc']) . '

    '; + } + } + + echo '
    '; + } + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since 1.0.0 + * @access public + * @return void + */ + public function enqueue() { + if ($this->parent->args['dev_mode']) { + wp_enqueue_style( + 'redux-field-info-css', + ReduxFramework::$_url . 'inc/fields/info/field_info.css', + array(), + time(), + 'all' + ); + } + } + } + } \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/info/field_info.scss b/redux/ReduxCore/inc/fields/info/field_info.scss new file mode 100644 index 0000000..17d39f8 --- /dev/null +++ b/redux/ReduxCore/inc/fields/info/field_info.scss @@ -0,0 +1,160 @@ +.redux-info-field { + min-height: 20px; + padding: 8px 19px; + margin: 10px 0; + border: 1px solid; + border-radius: 4px; + border: 1px solid; + position: relative; + + h1, + h2, + h3, + h4, + h5, + h6 { + border-bottom: 0 !important; + } + + h3 { + color: #777; + } + + .redux-info-icon { + display: inline-block; + margin-right: 15px; + + i { + font-size: 2em; + } + } + + .redux-info-desc { + display: inline-block; + vertical-align: top; + } + + &.redux-normal { + background-color: #eeeeee; + border-color: #cccccc; + color: #666666; + + i { + color: #c5c5c5; + } + } + + &.redux-warning { + background-color: #fbeba4; + border-color: #d7c281; + color: #958234; + + i { + color: #dcca81; + } + } + + &.redux-success { + background-color: #c4ee91; + border-color: #71af5d; + color: #4d7615; + + i { + color: #a0ca6c; + } + } + + &.redux-critical { + background-color: #fba1a3; + border-color: #b84f5b; + color: #981225; + + i { + color: #dd767d; + } + } + + &.redux-info { + background-color: #d3e4f4; + border-color: #a9b6c2; + color: #5c80a1; + + i { + color: #afc6da; + } + } +} + +.redux-notice-field { + margin: 15px 0 0; + background-color: #fff; + border: 0; + border-left: 4px solid #f3f3f3; + -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1); + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1); + padding: 1px 12px; + + h1, + h2, + h3, + h4, + h5, + h6 { + border-bottom: 0 !important; + } + + p { + margin: .5em 0; + padding: 2px; + } + + .redux-info-icon { + display: inline-block; + margin-right: 15px; + + i { + font-size: 2em; + } + } + + .redux-info-desc { + display: inline-block; + vertical-align: top; + } + + &.redux-info { + border-left: 4px solid #0099d5; + } + + &.redux-success { + border-left: 4px solid #7ad03a; + } + + &.redux-warning { + border-left: 4px solid #fbeba4; + } + + &.redux-critical { + border-left: 4px solid #dd3d36; + } +} + +.redux-main .redux-field-container.redux-container-info { + padding: 0; +} + +.wp-customizer { + .hasIcon.redux-notice-field, .hasIcon.redux-info-field { + .redux-info-desc { + display: block; + margin-left: 43px; + } + .redux-info-icon { + float: left; + } + } + .redux-main .customize-control.customize-control-redux-info { + border-bottom: 0; + } +} + diff --git a/redux/ReduxCore/inc/fields/link_color/field_link_color.css b/redux/ReduxCore/inc/fields/link_color/field_link_color.css new file mode 100644 index 0000000..39a1324 --- /dev/null +++ b/redux/ReduxCore/inc/fields/link_color/field_link_color.css @@ -0,0 +1 @@ +.redux-container-link_color .linkColor{display:inline-block;padding-right:10px;padding-bottom:7px}.redux-container-link_color .linkColor strong{display:table;margin-bottom:5px;margin-left:3px;font-size:12px;font-weight:normal;color:#999} diff --git a/redux/ReduxCore/inc/fields/link_color/field_link_color.css.map b/redux/ReduxCore/inc/fields/link_color/field_link_color.css.map new file mode 100644 index 0000000..5828f7a --- /dev/null +++ b/redux/ReduxCore/inc/fields/link_color/field_link_color.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AACI,sCAAW;EACP,OAAO,EAAE,YAAY;EACrB,aAAa,EAAE,IAAI;EACnB,cAAc,EAAE,GAAG", +"sources": ["field_link_color.scss"], +"names": [], +"file": "field_link_color.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/link_color/field_link_color.js b/redux/ReduxCore/inc/fields/link_color/field_link_color.js new file mode 100644 index 0000000..48d5e2b --- /dev/null +++ b/redux/ReduxCore/inc/fields/link_color/field_link_color.js @@ -0,0 +1,111 @@ +/* + Field Link Color + */ + +/*global jQuery, document, redux_change, redux*/ + +(function( $ ) { + 'use strict'; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.link_color = redux.field_objects.link_color || {}; + + $( document ).ready( + function() { + + } + ); + + redux.field_objects.link_color.init = function( selector ) { + + if ( !selector ) { + selector = $( document ).find( '.redux-container-link_color:visible' ); + } + + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + + el.find( '.redux-color-init' ).wpColorPicker( + { + change: function( e, ui ) { + $( this ).val( ui.color.toString() ); + redux_change( $( this ) ); + el.find( '#' + e.target.getAttribute( 'data-id' ) + '-transparency' ).removeAttr( 'checked' ); + }, + clear: function( e, ui ) { + $( this ).val( ui.color.toString() ); + redux_change( $( this ).parent().find( '.redux-color-init' ) ); + } + } + ); + + el.find( '.redux-color' ).on( + 'keyup', function() { + var value = $( this ).val(); + var color = colorValidate( this ); + var id = '#' + $( this ).attr( 'id' ); + + if ( value === "transparent" ) { + $( this ).parent().parent().find( '.wp-color-result' ).css( + 'background-color', 'transparent' + ); + + el.find( id + '-transparency' ).attr( 'checked', 'checked' ); + } else { + el.find( id + '-transparency' ).removeAttr( 'checked' ); + + if ( color && color !== $( this ).val() ) { + $( this ).val( color ); + } + } + } + ); + + // Replace and validate field on blur + el.find( '.redux-color' ).on( + 'blur', function() { + var value = $( this ).val(); + var id = '#' + $( this ).attr( 'id' ); + + if ( value === "transparent" ) { + $( this ).parent().parent().find( '.wp-color-result' ).css( + 'background-color', 'transparent' + ); + + el.find( id + '-transparency' ).attr( 'checked', 'checked' ); + } else { + if ( colorValidate( this ) === value ) { + if ( value.indexOf( "#" ) !== 0 ) { + $( this ).val( $( this ).data( 'oldcolor' ) ); + } + } + + el.find( id + '-transparency' ).removeAttr( 'checked' ); + } + } + ); + + // Store the old valid color on keydown + el.find( '.redux-color' ).on( + 'keydown', function() { + $( this ).data( 'oldkeypress', $( this ).val() ); + } + ); + } + ); + }; +})( jQuery ); diff --git a/redux/ReduxCore/inc/fields/link_color/field_link_color.min.js b/redux/ReduxCore/inc/fields/link_color/field_link_color.min.js new file mode 100644 index 0000000..a0cbac6 --- /dev/null +++ b/redux/ReduxCore/inc/fields/link_color/field_link_color.min.js @@ -0,0 +1 @@ +!function(i){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.link_color=redux.field_objects.link_color||{},i(document).ready(function(){}),redux.field_objects.link_color.init=function(e){e||(e=i(document).find(".redux-container-link_color:visible")),i(e).each(function(){var n=i(this),e=n;n.hasClass("redux-field-container")||(e=n.parents(".redux-field-container:first")),e.is(":hidden")||e.hasClass("redux-field-init")&&(e.removeClass("redux-field-init"),n.find(".redux-color-init").wpColorPicker({change:function(e,t){i(this).val(t.color.toString()),redux_change(i(this)),n.find("#"+e.target.getAttribute("data-id")+"-transparency").removeAttr("checked")},clear:function(e,t){i(this).val(t.color.toString()),redux_change(i(this).parent().find(".redux-color-init"))}}),n.find(".redux-color").on("keyup",function(){var e=i(this).val(),t=colorValidate(this),r="#"+i(this).attr("id");"transparent"===e?(i(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),n.find(r+"-transparency").attr("checked","checked")):(n.find(r+"-transparency").removeAttr("checked"),t&&t!==i(this).val()&&i(this).val(t))}),n.find(".redux-color").on("blur",function(){var e=i(this).val(),t="#"+i(this).attr("id");"transparent"===e?(i(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),n.find(t+"-transparency").attr("checked","checked")):(colorValidate(this)===e&&0!==e.indexOf("#")&&i(this).val(i(this).data("oldcolor")),n.find(t+"-transparency").removeAttr("checked"))}),n.find(".redux-color").on("keydown",function(){i(this).data("oldkeypress",i(this).val())}))})}}(jQuery); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/link_color/field_link_color.php b/redux/ReduxCore/inc/fields/link_color/field_link_color.php new file mode 100644 index 0000000..d0dccf4 --- /dev/null +++ b/redux/ReduxCore/inc/fields/link_color/field_link_color.php @@ -0,0 +1,235 @@ +. + * + * @package ReduxFramework + * @subpackage Field_Link_Color + * @author Luciano "WebCaos" Ubertini + * @author Daniel J Griffiths (Ghost1227) + * @author Dovy Paukstys + * @author Kevin Provance (kprovance) + * @version 3.0.0 + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +// Don't duplicate me! +if ( ! class_exists( 'ReduxFramework_link_color' ) ) { + + /** + * Main ReduxFramework_link_color class + * + * @since 1.0.0 + */ + class ReduxFramework_link_color { + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since 1.0.0 + * @access public + * @return void + */ + function __construct( $field = array(), $value = '', $parent=null ) { + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + + $defaults = array( + 'regular' => true, + 'hover' => true, + 'visited' => false, + 'active' => true, + 'focus' => false + ); + $this->field = wp_parse_args( $this->field, $defaults ); + + $defaults = array( + 'regular' => '', + 'hover' => '', + 'visited' => '', + 'active' => '', + 'focus' => '' + ); + + $this->value = wp_parse_args( $this->value, $defaults ); + + // In case user passes no default values. + if ( isset( $this->field['default'] ) ) { + $this->field['default'] = wp_parse_args( $this->field['default'], $defaults ); + } else { + $this->field['default'] = $defaults; + } + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render() { + + if ( $this->field['regular'] === true && $this->field['default']['regular'] !== false ) { + echo '' . __( 'Regular', 'redux-framework' ) . ' '; + } + + if ( $this->field['hover'] === true && $this->field['default']['hover'] !== false ) { + echo '' . __( 'Hover', 'redux-framework' ) . ' '; + } + + if ( $this->field['visited'] === true && $this->field['default']['visited'] !== false ) { + echo '' . __( 'Visited', 'redux-framework' ) . ' '; + } + + if ( $this->field['active'] === true && $this->field['default']['active'] !== false ) { + echo '' . __( 'Active', 'redux-framework' ) . ' '; + } + + if ( $this->field['focus'] === true && $this->field['default']['focus'] !== false ) { + echo '' . __( 'Focus', 'redux-framework' ) . ' '; + } + + } + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since 1.0.0 + * @access public + * @return void + */ + public function enqueue() { + wp_enqueue_style( 'wp-color-picker' ); + + wp_enqueue_script( + 'redux-field-link-color-js', + ReduxFramework::$_url . 'inc/fields/link_color/field_link_color' . Redux_Functions::isMin() . '.js', + array( 'jquery', 'wp-color-picker', 'redux-js' ), + time(), + true + ); + + if ($this->parent->args['dev_mode']) { + wp_enqueue_style( 'redux-color-picker-css' ); + + wp_enqueue_style( + 'redux-field-link_color-js', + ReduxFramework::$_url . 'inc/fields/link_color/field_link_color.css', + array(), + time(), + 'all' + ); + } + } + + public function output() { + + $style = array(); + + if ( ! empty( $this->value['regular'] ) && $this->field['regular'] === true && $this->field['default']['regular'] !== false ) { + $style[] = 'color:' . $this->value['regular'] . ';'; + } + + if ( ! empty( $this->value['visited'] ) && $this->field['visited'] === true && $this->field['default']['visited'] !== false ) { + $style['visited'] = 'color:' . $this->value['visited'] . ';'; + } + + if ( ! empty( $this->value['hover'] ) && $this->field['hover'] === true && $this->field['default']['hover'] !== false ) { + $style['hover'] = 'color:' . $this->value['hover'] . ';'; + } + + if ( ! empty( $this->value['active'] ) && $this->field['active'] === true && $this->field['default']['active'] !== false ) { + $style['active'] = 'color:' . $this->value['active'] . ';'; + } + + if ( ! empty( $this->value['focus'] ) && $this->field['focus'] === true && $this->field['default']['focus'] !== false ) { + $style['focus'] = 'color:' . $this->value['focus'] . ';'; + } + + if ( ! empty( $style ) ) { + if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { + $styleString = ""; + + foreach ( $style as $key => $value ) { + if ( is_numeric( $key ) ) { + $styleString .= implode( ",", $this->field['output'] ) . "{" . $value . '}'; + } else { + if ( count( $this->field['output'] ) == 1 ) { + foreach($this->field['output'] as $sel => $elem) { + continue; + } + + if (strpos($elem, ',') != false) { + $selector_arr = explode(',',$elem); + $sel_list = ''; + + foreach($selector_arr as $idx => $selector) { + $sel_list .= $selector . ":" . $key . ","; + } + + $sel_list = rtrim($sel_list,','); + $styleString .= $sel_list . "{" . $value . '}'; + } else { + $styleString .= $elem . ":" . $key . "{" . $value . '}'; + } + } else { + $blah = ''; + foreach($this->field['output'] as $k => $sel) { + $blah .= $sel . ':' . $key . ','; + } + + $blah = substr($blah, 0, strlen($blah) - 1); + $styleString .= $blah . '{' . $value . '}'; + + } + } + } + + $this->parent->outputCSS .= $styleString; + } + + if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { + $styleString = ""; + + foreach ( $style as $key => $value ) { + if ( is_numeric( $key ) ) { + $styleString .= implode( ",", $this->field['compiler'] ) . "{" . $value . '}'; + + } else { + if ( count( $this->field['compiler'] ) == 1 ) { + $styleString .= $this->field['compiler'][0] . ":" . $key . "{" . $value . '}'; + } else { + $blah = ''; + foreach($this->field['compiler'] as $k => $sel) { + $blah .= $sel . ':' . $key . ','; + } + + $blah = substr($blah, 0, strlen($blah) - 1); + $styleString .= $blah . '{' . $value . '}'; + } + } + } + $this->parent->compilerCSS .= $styleString; + } + } + } + } +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/link_color/field_link_color.scss b/redux/ReduxCore/inc/fields/link_color/field_link_color.scss new file mode 100644 index 0000000..b5b614e --- /dev/null +++ b/redux/ReduxCore/inc/fields/link_color/field_link_color.scss @@ -0,0 +1,17 @@ +.redux-container-link_color { + .linkColor { + display: inline-block; + padding-right: 10px; + padding-bottom: 7px; + + strong { + display: table; + margin-bottom: 5px; + margin-left: 3px; + font-size: 12px; + font-weight: normal; + color: #999; + } + } +} + diff --git a/redux/ReduxCore/inc/fields/media/field_media.css b/redux/ReduxCore/inc/fields/media/field_media.css new file mode 100644 index 0000000..737309c --- /dev/null +++ b/redux/ReduxCore/inc/fields/media/field_media.css @@ -0,0 +1 @@ +.redux-main .button.remove-image,.redux-main .removeCSS{margin-left:10px;color:#ef521d}.redux-main .button.remove-image:hover,.redux-main .removeCSS:hover{color:red}.redux-main .upload_button_div{margin-bottom:5px}.redux-main .upload-error{float:left;color:#666;font-size:10px;font-weight:bold;text-decoration:none;text-shadow:1px 1px 0 #FFFFFF;margin:0 10px 0 0;padding:3px 10px;background:#FFDFEC;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .reset-button{font-family:Arial, Verdana, sans-serif;float:left;margin:0;color:#ef521d;border-color:#bbb}.redux-main .redux-option-image{max-height:340px;max-width:340px;padding:5px;margin-bottom:0;margin-top:10px;margin-right:15px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-main .redux-main .upload{width:80% !important}.redux-main .button{margin-top:2px} diff --git a/redux/ReduxCore/inc/fields/media/field_media.css.map b/redux/ReduxCore/inc/fields/media/field_media.css.map new file mode 100644 index 0000000..73f5c2c --- /dev/null +++ b/redux/ReduxCore/inc/fields/media/field_media.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AACI;sBACW;EACP,WAAW,EAAE,IAAI;EACjB,KAAK,EAAE,OAAO;EAEd;8BAAQ;IACJ,KAAK,EAAE,GAAG;AAIlB,8BAAmB;EACf,aAAa,EAAE,GAAG;AAGtB,yBAAc;EACV,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,eAAe,EAAE,IAAI;EACrB,WAAW,EAAE,iBAAiB;EAC9B,MAAM,EAAE,UAAU;EAClB,OAAO,EAAE,QAAQ;EACjB,UAAU,EAAE,OAAO;EACnB,qBAAqB,EAAE,GAAG;EAC1B,kBAAkB,EAAE,GAAG;EACvB,aAAa,EAAE,GAAG;AAGtB,yBAAc;EACV,WAAW,EAAE,0BAA0B;EACvC,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,OAAO;EACd,YAAY,EAAE,IAAI;AAGtB,+BAAoB;EAChB,UAAU,EAAE,KAAK;EACjB,SAAS,EAAE,KAAK;EAChB,OAAO,EAAE,GAAG;EACZ,aAAa,EAAE,CAAC;EAChB,UAAU,EAAE,IAAI;EAChB,YAAY,EAAE,IAAI;EAClB,MAAM,EAAE,iBAAiB;EACzB,UAAU,EAAE,OAAO;EACnB,kBAAkB,EAAE,GAAG;EACvB,oBAAoB,EAAE,GAAG;EACzB,qBAAqB,EAAE,GAAG;EAC1B,aAAa,EAAE,GAAG;AAGtB,+BAAoB;EAChB,KAAK,EAAE,cAAc;AAGzB,mBAAQ;EACJ,UAAU,EAAE,GAAG", +"sources": ["field_media.scss"], +"names": [], +"file": "field_media.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/media/field_media.less b/redux/ReduxCore/inc/fields/media/field_media.less new file mode 100644 index 0000000..f78c19b --- /dev/null +++ b/redux/ReduxCore/inc/fields/media/field_media.less @@ -0,0 +1,53 @@ +.redux-main { + .button.remove-image, .removeCSS { + margin-left: 10px; + color: #ef521d; + } + .button.remove-image:hover, .removeCSS:hover { + color: red; + } + .upload_button_div { + margin-bottom: 5px; + } + .upload-error { + float: left; + color: #666; + font-size: 10px; + font-weight: bold; + text-decoration: none; + text-shadow: 1px 1px 0 #FFFFFF; + margin: 0 10px 0 0; + padding: 3px 10px; + background: #FFDFEC; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + .reset-button { + font-family: Arial, Verdana, sans-serif; + float: left; + margin: 0; + color: #ef521d; + border-color: #bbb; + } + .redux-option-image { + max-height: 340px; + max-width: 340px; + padding: 5px; + margin-bottom: 0; + margin-top: 10px; + margin-right: 15px; + border: 1px solid #e3e3e3; + background: #f7f7f7; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + } + .redux-main .upload { + width: 80% !important; + } + .button { + margin-top: 2px; + } +} diff --git a/redux/ReduxCore/inc/fields/media/field_media.php b/redux/ReduxCore/inc/fields/media/field_media.php new file mode 100644 index 0000000..9c7c2bd --- /dev/null +++ b/redux/ReduxCore/inc/fields/media/field_media.php @@ -0,0 +1,250 @@ +. + * + * @package ReduxFramework + * @subpackage Field_Media + * @author Daniel J Griffiths (Ghost1227) + * @author Dovy Paukstys + * @author Kevin Provance (kprovance) + * @version 3.0.0 + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +// Don't duplicate me! +if ( ! class_exists( 'ReduxFramework_media' ) ) { + + /** + * Main ReduxFramework_media class + * + * @since 1.0.0 + */ + class ReduxFramework_media { + + public $parent; + public $field; + public $value; + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since 1.0.0 + * @access public + * @return void + */ + function __construct( $field = array(), $value = '', $parent=null ) { + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render() { + + // No errors please + $defaults = array( + 'id' => '', + 'url' => '', + 'width' => '', + 'height' => '', + 'thumbnail' => '', + 'title' => '', + 'caption' => '', + 'alt' => '', + 'description' => '', + ); + + $this->value = wp_parse_args( $this->value, $defaults ); + + if (isset($this->field['mode']) && $this->field['mode'] == false) { + $this->field['mode'] = 0; + } + + if ( ! isset( $this->field['mode'] ) ) { + $this->field['mode'] = "image"; + } + + if (!isset($this->field['library_filter'])) { + $libFilter = ''; + } else { + if (!is_array($this->field['library_filter'])) { + $this->field['library_filter'] = array($this->field['library_filter']); + } + + $mimeTypes = get_allowed_mime_types(); + + $libArray = $this->field['library_filter']; + + $jsonArr = array(); + + // Enum mime types + foreach ($mimeTypes as $ext => $type) { + if (strpos($ext,'|')) { + $expArr = explode('|', $ext); + + foreach($expArr as $ext){ + if (in_array($ext, $libArray )) { + $jsonArr[$ext] = $type; + } + } + } elseif (in_array($ext, $libArray )) { + $jsonArr[$ext] = $type; + } + + } + + $libFilter = urlencode(json_encode($jsonArr)); + } + + if ( empty( $this->value ) && ! empty( $this->field['default'] ) ) { // If there are standard values and value is empty + if ( is_array( $this->field['default'] ) ) { + if ( ! empty( $this->field['default']['id'] ) ) { + $this->value['id'] = $this->field['default']['id']; + } + + if ( ! empty( $this->field['default']['url'] ) ) { + $this->value['url'] = $this->field['default']['url']; + } + } else { + if ( is_numeric( $this->field['default'] ) ) { // Check if it's an attachment ID + $this->value['id'] = $this->field['default']; + } else { // Must be a URL + $this->value['url'] = $this->field['default']; + } + } + } + + + if ( empty( $this->value['url'] ) && ! empty( $this->value['id'] ) ) { + $img = wp_get_attachment_image_src( $this->value['id'], 'full' ); + $this->value['url'] = $img[0]; + $this->value['width'] = $img[1]; + $this->value['height'] = $img[2]; + } + + $hide = 'hide '; + + if ( ( isset( $this->field['preview'] ) && $this->field['preview'] === false ) ) { + $this->field['class'] .= " noPreview"; + } + + if ( ( ! empty( $this->field['url'] ) && $this->field['url'] === true ) || isset( $this->field['preview'] ) && $this->field['preview'] === false ) { + $hide = ''; + } + + $placeholder = isset( $this->field['placeholder'] ) ? $this->field['placeholder'] : __( 'No media selected', 'redux-framework' ); + + $readOnly = ' readonly="readonly"'; + if ( isset( $this->field['readonly'] ) && $this->field['readonly'] === false ) { + $readOnly = ''; + } + + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + + //Preview + $hide = ''; + + if ( ( isset( $this->field['preview'] ) && $this->field['preview'] === false ) || empty( $this->value['url'] ) ) { + $hide = 'hide '; + } + + if ( empty( $this->value['thumbnail'] ) && ! empty( $this->value['url'] ) ) { // Just in case + if ( ! empty( $this->value['id'] ) ) { + $image = wp_get_attachment_image_src( $this->value['id'], array( + 150, + 150 + ) ); + + if (empty($image[0]) || $image[0] == '') { + $this->value['thumbnail'] = $this->value['url']; + } else { + $this->value['thumbnail'] = $image[0]; + } + } else { + $this->value['thumbnail'] = $this->value['url']; + } + } + + echo '
    '; + echo ''; + echo ''; + echo ''; + echo '
    '; + + //Upload controls DIV + echo '
    '; + + //If the user has WP3.5+ show upload/remove button + echo '' . __( 'Upload', 'redux-framework' ) . ''; + + $hide = ''; + if ( empty( $this->value['url'] ) || $this->value['url'] == '' ) { + $hide = ' hide'; + } + + echo '' . __( 'Remove', 'redux-framework' ) . ''; + + echo '
    '; + } + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since 1.0.0 + * @access public + * @return void + */ + public function enqueue() { + if ( function_exists( 'wp_enqueue_media' ) ) { + wp_enqueue_media(); + } else { + wp_enqueue_script( 'media-upload' ); + } + + wp_enqueue_script( + 'redux-field-media-js', + ReduxFramework::$_url . 'assets/js/media/media' . Redux_Functions::isMin() . '.js', + array( 'jquery', 'redux-js' ), + time(), + true + ); + + if ($this->parent->args['dev_mode']) { + wp_enqueue_style('redux-field-media-css'); + } + } + } +} diff --git a/redux/ReduxCore/inc/fields/media/field_media.scss b/redux/ReduxCore/inc/fields/media/field_media.scss new file mode 100644 index 0000000..7180642 --- /dev/null +++ b/redux/ReduxCore/inc/fields/media/field_media.scss @@ -0,0 +1,62 @@ +.redux-main { + .button.remove-image, + .removeCSS { + margin-left: 10px; + color: #ef521d; + + &:hover { + color: red; + } + } + + .upload_button_div { + margin-bottom: 5px; + } + + .upload-error { + float: left; + color: #666; + font-size: 10px; + font-weight: bold; + text-decoration: none; + text-shadow: 1px 1px 0 #FFFFFF; + margin: 0 10px 0 0; + padding: 3px 10px; + background: #FFDFEC; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + + .reset-button { + font-family: Arial, Verdana, sans-serif; + float: left; + margin: 0; + color: #ef521d; + border-color: #bbb; + } + + .redux-option-image { + max-height: 340px; + max-width: 340px; + padding: 5px; + margin-bottom: 0; + margin-top: 10px; + margin-right: 15px; + border: 1px solid #e3e3e3; + background: #f7f7f7; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + } + + .redux-main .upload { + width: 80% !important; + } + + .button { + margin-top: 2px; + } +} + diff --git a/redux/ReduxCore/inc/fields/multi_text/field_multi_text.css b/redux/ReduxCore/inc/fields/multi_text/field_multi_text.css new file mode 100644 index 0000000..3e0158f --- /dev/null +++ b/redux/ReduxCore/inc/fields/multi_text/field_multi_text.css @@ -0,0 +1 @@ +.redux-container-multi_text ul.redux-multi-text{margin:0;padding:0}.redux-container-multi_text .redux-multi-text-add{clear:both;margin:5px 0}.redux-container-multi_text a.redux-multi-text-remove.deletion{color:#F00;padding:2px 4px;margin-left:5px}.redux-container-multi_text a.redux-multi-text-remove.deletion:hover{background:red;color:#fff;text-decoration:none}@media screen and (max-width: 782px){.redux-container-multi_text input{clear:both}.redux-container-multi_text .redux-multi-text-remove{margin:0;float:right}}.wp-customizer .redux-container-multi_text .button{float:right}.wp-customizer .redux-container-multi_text .redux-multi-text-remove{float:right;margin-bottom:5px}.wp-customizer .redux-container-multi_text ul.redux-multi-text input{width:100% !important} diff --git a/redux/ReduxCore/inc/fields/multi_text/field_multi_text.css.map b/redux/ReduxCore/inc/fields/multi_text/field_multi_text.css.map new file mode 100644 index 0000000..45536f9 --- /dev/null +++ b/redux/ReduxCore/inc/fields/multi_text/field_multi_text.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AACI,+CAAoB;EAChB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;AAGd,iDAAsB;EAClB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,KAAK;AAIb,8DAAW;EACP,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,OAAO;EAChB,WAAW,EAAE,GAAG;EAEhB,oEAAQ;IACJ,UAAU,EAAE,GAAG;IACf,KAAK,EAAE,IAAI;IACX,eAAe,EAAE,IAAI;;AAMrC,oCAAqC;EAE7B,iCAAM;IACF,KAAK,EAAE,IAAI;EAGf,oDAAyB;IACrB,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,KAAK;AAOhB,kDAAQ;EACJ,KAAK,EAAE,KAAK;AAEhB,mEAAyB;EACrB,KAAK,EAAE,KAAK;EACZ,aAAa,EAAE,GAAG;AAEtB,oEAA0B;EACtB,KAAK,EAAE,eAAe", +"sources": ["field_multi_text.scss"], +"names": [], +"file": "field_multi_text.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/multi_text/field_multi_text.js b/redux/ReduxCore/inc/fields/multi_text/field_multi_text.js new file mode 100644 index 0000000..4a7f10a --- /dev/null +++ b/redux/ReduxCore/inc/fields/multi_text/field_multi_text.js @@ -0,0 +1,84 @@ +/*global redux_change, redux*/ + +(function( $ ) { + "use strict"; + + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.multi_text = redux.field_objects.multi_text || {}; + + redux.field_objects.multi_text.init = function( selector ) { + + if ( !selector ) { + selector = $( document ).find( '.redux-container-multi_text:visible' ); + } + + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + el.find( '.redux-multi-text-remove' ).on( + 'click', function() { + redux_change( $( this ) ); + + $( this ).prev( 'input[type="text"]' ).val( '' ); + var id = $( this ).attr( 'data-id' ); + + $( this ).parent().slideUp( + 'medium', function() { + $( this ).remove(); + + var lis = el.find( '#' + id + ' li').length; + if (lis == 1) { + var add = el.find( '.redux-multi-text-add' ); + var name = add.attr( 'data-name' ); + + el.find( '#' + id + ' li:last-child input[type="text"]' ).attr( 'name', name ); + } + } + ); + } + ); + + el.find( '.redux-multi-text-add' ).click( + function() { + var number = parseInt( $( this ).attr( 'data-add_number' ) ); + var id = $( this ).attr( 'data-id' ); + var name = $( this ).attr( 'data-name' ) + '[]'; + + for ( var i = 0; i < number; i++ ) { + var new_input = $( '#' + id + ' li:last-child' ).clone(); + el.find( '#' + id ).append( new_input ); + el.find( '#' + id + ' li:last-child' ).removeAttr( 'style' ); + el.find( '#' + id + ' li:last-child input[type="text"]' ).val( '' ); + el.find( '#' + id + ' li:last-child input[type="text"]' ).attr( 'name', name ); + } + + var lis = el.find( '#' + id + ' li').length; + if (lis > 1) { + var css, input; + el.find('#' + id + ' li').each(function(idx, val){ + css = $(this).css('display'); + if (css === 'none') { + input = $(this).find('input[type="text"]'); + input.attr('name', ''); + } + }) + } + } + ); + } + ); + }; +})( jQuery ); diff --git a/redux/ReduxCore/inc/fields/multi_text/field_multi_text.min.js b/redux/ReduxCore/inc/fields/multi_text/field_multi_text.min.js new file mode 100644 index 0000000..c97e56c --- /dev/null +++ b/redux/ReduxCore/inc/fields/multi_text/field_multi_text.min.js @@ -0,0 +1 @@ +!function(l){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.multi_text=redux.field_objects.multi_text||{},redux.field_objects.multi_text.init=function(t){t||(t=l(document).find(".redux-container-multi_text:visible")),l(t).each(function(){var a=l(this),t=a;a.hasClass("redux-field-container")||(t=a.parents(".redux-field-container:first")),t.is(":hidden")||t.hasClass("redux-field-init")&&(t.removeClass("redux-field-init"),a.find(".redux-multi-text-remove").on("click",function(){redux_change(l(this)),l(this).prev('input[type="text"]').val("");var i=l(this).attr("data-id");l(this).parent().slideUp("medium",function(){if(l(this).remove(),1==a.find("#"+i+" li").length){var t=a.find(".redux-multi-text-add").attr("data-name");a.find("#"+i+' li:last-child input[type="text"]').attr("name",t)}})}),a.find(".redux-multi-text-add").click(function(){for(var t=parseInt(l(this).attr("data-add_number")),i=l(this).attr("data-id"),e=l(this).attr("data-name")+"[]",d=0;d. + * + * @package ReduxFramework + * @subpackage Field_Multi_Text + * @author Daniel J Griffiths (Ghost1227) + * @author Dovy Paukstys + * @author Kevin Provance (kprovance) + * @version 3.0.0 + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +// Don't duplicate me! +if ( ! class_exists( 'ReduxFramework_multi_text' ) ) { + + /** + * Main ReduxFramework_multi_text class + * + * @since 1.0.0 + */ + class ReduxFramework_multi_text { + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since 1.0.0 + * @access public + * @return void + */ + function __construct( $field = array(), $value = '', $parent=null ) { + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render() { + + $this->add_text = ( isset( $this->field['add_text'] ) ) ? $this->field['add_text'] : __( 'Add More', 'redux-framework' ); + $this->show_empty = ( isset( $this->field['show_empty'] ) ) ? $this->field['show_empty'] : true; + + echo '
      '; + + if ( isset( $this->value ) && is_array( $this->value ) ) { + foreach ( $this->value as $k => $value ) { + if ( $value != '' || ($value == '' && $this->show_empty == true) ) { + echo '
    • '; + echo ' '; + echo '' . __( 'Remove', 'redux-framework' ) . ''; + echo '
    • '; + } + } + } elseif ( $this->show_empty == true ) { + echo '
    • '; + echo ' '; + echo '' . __( 'Remove', 'redux-framework' ) . ''; + echo '
    • '; + } + + $the_name = ''; + if (isset($this->value) && empty($this->value) && $this->show_empty == false) { + $the_name = $this->field['name'] . $this->field['name_suffix']; + } + + echo '
    • '; + echo '' . __( 'Remove', 'redux-framework' ) . ''; + echo '
    • '; + echo '
    '; + + echo ''; + $this->field['add_number'] = ( isset( $this->field['add_number'] ) && is_numeric( $this->field['add_number'] ) ) ? $this->field['add_number'] : 1; + echo '' . $this->add_text . '
    '; + } + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since 1.0.0 + * @access public + * @return void + */ + public function enqueue() { + + wp_enqueue_script( + 'redux-field-multi-text-js', + ReduxFramework::$_url . 'inc/fields/multi_text/field_multi_text' . Redux_Functions::isMin() . '.js', + array( 'jquery', 'redux-js' ), + time(), + true + ); + + if ($this->parent->args['dev_mode']) { + wp_enqueue_style( + 'redux-field-multi-text-css', + ReduxFramework::$_url . 'inc/fields/multi_text/field_multi_text.css', + array(), + time(), + 'all' + ); + } + } + } +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/multi_text/field_multi_text.scss b/redux/ReduxCore/inc/fields/multi_text/field_multi_text.scss new file mode 100644 index 0000000..8b6914f --- /dev/null +++ b/redux/ReduxCore/inc/fields/multi_text/field_multi_text.scss @@ -0,0 +1,55 @@ +.redux-container-multi_text { + ul.redux-multi-text { + margin: 0; + padding: 0; + } + + .redux-multi-text-add { + clear: both; + margin: 5px 0; + } + + a.redux-multi-text-remove { + &.deletion { + color: #F00; + padding: 2px 4px; + margin-left: 5px; + + &:hover { + background: red; + color: #fff; + text-decoration: none; + } + } + } +} + +@media screen and (max-width: 782px) { + .redux-container-multi_text { + input { + clear: both; + } + + .redux-multi-text-remove { + margin: 0; + float: right; + } + } +} + +.wp-customizer { + .redux-container-multi_text { + .button { + float: right; + } + .redux-multi-text-remove { + float: right; + margin-bottom: 5px; + } + ul.redux-multi-text input { + width: 100% !important; + } + } +} + + diff --git a/redux/ReduxCore/inc/fields/palette/field_palette.css b/redux/ReduxCore/inc/fields/palette/field_palette.css new file mode 100644 index 0000000..17d81fb --- /dev/null +++ b/redux/ReduxCore/inc/fields/palette/field_palette.css @@ -0,0 +1 @@ +.redux-container-palette label{border:3px solid transparent;border-color:transparent !important;border-radius:0;width:100% !important;display:block}.redux-container-palette label.ui-button.ui-widget{width:95%;background:none;padding:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text{display:flex}.redux-container-palette label.ui-button.ui-widget .ui-button-text span{padding:10px;flex-grow:1;font-size:0;line-height:10px;color:transparent;-webkit-transition:all 200ms ease-in-out;-moz-transition:all 200ms ease-in-out;-ms-transition:all 200ms ease-in-out;-o-transition:all 200ms ease-in-out;transition:all 200ms ease-in-out;text-shadow:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text span:hover{flex-grow:3;font-weight:bold;min-width:60px;font-size:12px;line-height:10px;color:#333;text-shadow:0 0 8px #fff, 0 0 8px #fff}.redux-container-palette label.ui-state-active{border:3px solid #333 !important}.wp-customizer .redux-main .redux-container-palette label{margin-bottom:3px} diff --git a/redux/ReduxCore/inc/fields/palette/field_palette.css.map b/redux/ReduxCore/inc/fields/palette/field_palette.css.map new file mode 100644 index 0000000..975610d --- /dev/null +++ b/redux/ReduxCore/inc/fields/palette/field_palette.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AACI,8BAAM;EACF,MAAM,EAAE,qBAAqB;EAC7B,YAAY,EAAE,sBAAsB;EACpC,aAAa,EAAE,CAAC;EAEhB,KAAK,EAAE,eAAe;EACtB,OAAO,EAAE,KAAK;EACd,kDAAsB;IAClB,KAAK,EAAE,GAAG;IACV,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,CAAC;IAEV,kEAAgB;MAC5B;;2CAEqC;MACrB,OAAO,EAAE,IAAI;MAEb,uEAAK;QACD,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,WAAa;QACpB,kBAAkB,EAAE,qBAAqB;QACzC,eAAe,EAAE,qBAAqB;QACtC,cAAc,EAAE,qBAAqB;QACrC,aAAa,EAAE,qBAAqB;QACpC,UAAU,EAAE,qBAAqB;QACjC,WAAW,EAAE,CAAC;QACd,6EAAQ;UACJ,SAAS,EAAE,CAAC;UACZ,WAAW,EAAE,IAAI;UACjB,SAAS,EAAE,IAAI;UACf,SAAS,EAAE,IAAI;UACf,WAAW,EAAE,IAAI;UACjB,KAAK,EAAE,IAAI;UACX,WAAW,EAAE,0BAA0B;EAMvD,8CAAkB;IACd,MAAM,EAAE,yBAAyB;;AAMzC,yDAA2C;EACvC,aAAa,EAAE,GAAG", +"sources": ["field_palette.scss"], +"names": [], +"file": "field_palette.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/palette/field_palette.js b/redux/ReduxCore/inc/fields/palette/field_palette.js new file mode 100644 index 0000000..001efcb --- /dev/null +++ b/redux/ReduxCore/inc/fields/palette/field_palette.js @@ -0,0 +1,53 @@ +/* + Field Palette (color) + */ + +/*global jQuery, document, redux_change, redux*/ + +(function( $ ) { + 'use strict'; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.palette = redux.field_objects.palette || {}; + + redux.field_objects.palette.init = function( selector ) { + + if ( !selector ) { + selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-palette:visible' ); + } + + $( selector ).each( + function() { + + var el = $( this ); + var parent = el; + + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + + el.find( '.buttonset' ).each( + function() { + $( this ).buttonset(); + } + ); + +// el.find('.redux-palette-set').click( +// function(){ +// console.log($(this).val()); +// } +// ) + } + ); + }; +})( jQuery ); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/palette/field_palette.min.js b/redux/ReduxCore/inc/fields/palette/field_palette.min.js new file mode 100644 index 0000000..aa8cbcb --- /dev/null +++ b/redux/ReduxCore/inc/fields/palette/field_palette.min.js @@ -0,0 +1 @@ +!function(i){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.palette=redux.field_objects.palette||{},redux.field_objects.palette.init=function(e){e||(e=i(document).find(".redux-group-tab:visible").find(".redux-container-palette:visible")),i(e).each(function(){var e=i(this),t=e;e.hasClass("redux-field-container")||(t=e.parents(".redux-field-container:first")),t.is(":hidden")||t.hasClass("redux-field-init")&&(t.removeClass("redux-field-init"),e.find(".buttonset").each(function(){i(this).buttonset()}))})}}(jQuery); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/palette/field_palette.php b/redux/ReduxCore/inc/fields/palette/field_palette.php new file mode 100644 index 0000000..76b81e7 --- /dev/null +++ b/redux/ReduxCore/inc/fields/palette/field_palette.php @@ -0,0 +1,110 @@ +. + * + * @package ReduxFramework + * @subpackage Field_Palette + * @author Kevin Provance (kprovance) + * @version 3.5.4 + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( 'ReduxFramework_palette' ) ) { + class ReduxFramework_palette { + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since 1.0.0 + * @access public + * @return void + */ + function __construct( $field = array(), $value = '', $parent=null) { + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settingss + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render() { + if (empty($this->field['palettes'])) { + echo 'No palettes have been set.'; + return; + } + + echo '
    '; + + foreach ( $this->field['palettes'] as $value => $colorSet ) { + $checked = checked( $this->value , $value, false ); + echo ''; + echo ''; + echo ''; + } + + echo '
    '; + } + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since 1.0.0 + * @access public + * @return void + */ + public function enqueue() { + $min = Redux_Functions::isMin(); + + wp_enqueue_script( + 'redux-field-palette-js', + ReduxFramework::$_url . 'inc/fields/palette/field_palette' . $min . '.js', + array( 'jquery', 'redux-js', 'jquery-ui-button', 'jquery-ui-core' ), + time(), + true + ); + + if ($this->parent->args['dev_mode']) { + wp_enqueue_style( + 'redux-field-palette-css', + ReduxFramework::$_url . 'inc/fields/palette/field_palette.css', + array(), + time(), + 'all' + ); + } + } + + + public function output() { + + } + } +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/palette/field_palette.scss b/redux/ReduxCore/inc/fields/palette/field_palette.scss new file mode 100644 index 0000000..f1b03c6 --- /dev/null +++ b/redux/ReduxCore/inc/fields/palette/field_palette.scss @@ -0,0 +1,56 @@ +.redux-container-palette { + label { + border: 3px solid transparent; + border-color: transparent !important; + border-radius: 0; + //border: 0; + width: 100% !important; + display: block; + &.ui-button.ui-widget { + width: 95%; + background: none; + padding: 0; + + .ui-button-text { +/* border-top: 3px solid transparent; + border-bottom: 3px solid transparent; + margin-bottom: 5px;*/ + display: flex; + + span { + padding: 10px; + flex-grow: 1; + font-size: 0; + line-height: 10px; + color: rgba(0,0,0,0); + -webkit-transition: all 200ms ease-in-out; + -moz-transition: all 200ms ease-in-out; + -ms-transition: all 200ms ease-in-out; + -o-transition: all 200ms ease-in-out; + transition: all 200ms ease-in-out; + text-shadow: 0; + &:hover { + flex-grow: 3; + font-weight: bold; + min-width: 60px; + font-size: 12px; + line-height: 10px; + color: #333; + text-shadow: 0 0 8px #fff, 0 0 8px #fff; + } + } + } + } + + &.ui-state-active { + border: 3px solid #333 !important; + } + } +} + +.wp-customizer { + .redux-main .redux-container-palette label { + margin-bottom: 3px; + } +} + diff --git a/redux/ReduxCore/inc/fields/password/field_password.php b/redux/ReduxCore/inc/fields/password/field_password.php new file mode 100644 index 0000000..a573b78 --- /dev/null +++ b/redux/ReduxCore/inc/fields/password/field_password.php @@ -0,0 +1,106 @@ +parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since ReduxFramework 1.0.1 + */ + function render() { + if ( ! empty( $this->field['username'] ) && $this->field['username'] === true ) { + $this->_render_combined_field(); + } else { + $this->_render_single_field(); + } + } + + /** + * This will render a combined User/Password field + * + * @since ReduxFramework 3.0.9 + * @example + * + * array( + * 'id' => 'smtp_account', + * 'type' => 'password', + * 'username' => true, + * 'title' => 'SMTP Account', + * 'placeholder' => array('username' => 'Username') + * ) + * + */ + private function _render_combined_field() { + + $defaults = array( + 'username' => '', + 'password' => '', + 'placeholder' => array( + 'password' => __( 'Password', 'redux-framework' ), + 'username' => __( 'Username', 'redux-framework' ) + ) + ); + + $this->value = wp_parse_args( $this->value, $defaults ); + + if ( ! empty( $this->field['placeholder'] ) ) { + if ( is_array( $this->field['placeholder'] ) ) { + if ( ! empty( $this->field['placeholder']['password'] ) ) { + $this->value['placeholder']['password'] = $this->field['placeholder']['password']; + } + if ( ! empty( $this->field['placeholder']['username'] ) ) { + $this->value['placeholder']['username'] = $this->field['placeholder']['username']; + } + } else { + $this->value['placeholder']['password'] = $this->field['placeholder']; + } + } + + // Username field + echo ' '; + + // Password field + echo ''; + } + + /** + * This will render a single Password field + * + * @since ReduxFramework 3.0.9 + * @example + * + * array( + * 'id' => 'smtp_password', + * 'type' => 'password', + * 'title' => 'SMTP Password' + * ) + * + */ + private function _render_single_field() { + echo ''; + } + } + } \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/radio/field_radio.php b/redux/ReduxCore/inc/fields/radio/field_radio.php new file mode 100644 index 0000000..68278f0 --- /dev/null +++ b/redux/ReduxCore/inc/fields/radio/field_radio.php @@ -0,0 +1,57 @@ +parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since ReduxFramework 1.0.0 + */ + function render() { + + if ( ! empty( $this->field['data'] ) && empty( $this->field['options'] ) ) { + if ( empty( $this->field['args'] ) ) { + $this->field['args'] = array(); + } + $this->field['options'] = $this->parent->get_wordpress_data( $this->field['data'], $this->field['args'] ); + } + + $this->field['data_class'] = ( isset( $this->field['multi_layout'] ) ) ? 'data-' . $this->field['multi_layout'] : 'data-full'; + + if ( ! empty( $this->field['options'] ) ) { + echo '
      '; + + foreach ( $this->field['options'] as $k => $v ) { + echo '
    • '; + echo ''; + echo '
    • '; + } + //foreach + + echo '
    '; + } + } //function + } //class + } \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/raw/field_raw.php b/redux/ReduxCore/inc/fields/raw/field_raw.php new file mode 100644 index 0000000..6847f53 --- /dev/null +++ b/redux/ReduxCore/inc/fields/raw/field_raw.php @@ -0,0 +1,53 @@ +parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since ReduxFramework 1.0.0 + */ + function render() { + + if ( ! empty( $this->field['include'] ) && file_exists( $this->field['include'] ) ) { + require_once $this->field['include']; + } + + if ( isset( $this->field['content_path'] ) && ! empty( $this->field['content_path'] ) && file_exists( $this->field['content_path'] ) ) { + $this->field['content'] = $this->parent->filesystem->execute( 'get_contents', $this->field['content_path'] ); + } + + if ( ! empty( $this->field['content'] ) && isset( $this->field['content'] ) ) { + if ( isset( $this->field['markdown'] ) && $this->field['markdown'] == true && ! empty( $this->field['content'] ) ) { + require_once dirname( __FILE__ ) . "/parsedown.php"; + $Parsedown = new Parsedown(); + echo $Parsedown->text( $this->field['content'] ); + } else { + echo $this->field['content']; + } + } + + do_action( 'redux-field-raw-' . $this->parent->args['opt_name'] . '-' . $this->field['id'] ); + + } + } + } \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/raw/parsedown.php b/redux/ReduxCore/inc/fields/raw/parsedown.php new file mode 100644 index 0000000..f5dd0fa --- /dev/null +++ b/redux/ReduxCore/inc/fields/raw/parsedown.php @@ -0,0 +1,1548 @@ +DefinitionData = array(); + + # standardize line breaks + $text = str_replace(array("\r\n", "\r"), "\n", $text); + + # remove surrounding line breaks + $text = trim($text, "\n"); + + # split text into lines + $lines = explode("\n", $text); + + # iterate through lines to identify blocks + $markup = $this->lines($lines); + + # trim line breaks + $markup = trim($markup, "\n"); + + return $markup; + } + + # + # Setters + # + + function setBreaksEnabled($breaksEnabled) + { + $this->breaksEnabled = $breaksEnabled; + + return $this; + } + + protected $breaksEnabled; + + function setMarkupEscaped($markupEscaped) + { + $this->markupEscaped = $markupEscaped; + + return $this; + } + + protected $markupEscaped; + + function setUrlsLinked($urlsLinked) + { + $this->urlsLinked = $urlsLinked; + + return $this; + } + + protected $urlsLinked = true; + + # + # Lines + # + + protected $BlockTypes = array( + '#' => array('Header'), + '*' => array('Rule', 'List'), + '+' => array('List'), + '-' => array('SetextHeader', 'Table', 'Rule', 'List'), + '0' => array('List'), + '1' => array('List'), + '2' => array('List'), + '3' => array('List'), + '4' => array('List'), + '5' => array('List'), + '6' => array('List'), + '7' => array('List'), + '8' => array('List'), + '9' => array('List'), + ':' => array('Table'), + '<' => array('Comment', 'Markup'), + '=' => array('SetextHeader'), + '>' => array('Quote'), + '[' => array('Reference'), + '_' => array('Rule'), + '`' => array('FencedCode'), + '|' => array('Table'), + '~' => array('FencedCode'), + ); + + # ~ + + protected $unmarkedBlockTypes = array( + 'Code', + ); + + # + # Blocks + # + + protected function lines(array $lines) + { + $CurrentBlock = null; + + foreach ($lines as $line) + { + if (chop($line) === '') + { + if (isset($CurrentBlock)) + { + $CurrentBlock['interrupted'] = true; + } + + continue; + } + + if (strpos($line, "\t") !== false) + { + $parts = explode("\t", $line); + + $line = $parts[0]; + + unset($parts[0]); + + foreach ($parts as $part) + { + $shortage = 4 - mb_strlen($line, 'utf-8') % 4; + + $line .= str_repeat(' ', $shortage); + $line .= $part; + } + } + + $indent = 0; + + while (isset($line[$indent]) and $line[$indent] === ' ') + { + $indent ++; + } + + $text = $indent > 0 ? substr($line, $indent) : $line; + + # ~ + + $Line = array('body' => $line, 'indent' => $indent, 'text' => $text); + + # ~ + + if (isset($CurrentBlock['continuable'])) + { + $Block = $this->{'block'.$CurrentBlock['type'].'Continue'}($Line, $CurrentBlock); + + if (isset($Block)) + { + $CurrentBlock = $Block; + + continue; + } + else + { + if ($this->isBlockCompletable($CurrentBlock['type'])) + { + $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock); + } + } + } + + # ~ + + $marker = $text[0]; + + # ~ + + $blockTypes = $this->unmarkedBlockTypes; + + if (isset($this->BlockTypes[$marker])) + { + foreach ($this->BlockTypes[$marker] as $blockType) + { + $blockTypes []= $blockType; + } + } + + # + # ~ + + foreach ($blockTypes as $blockType) + { + $Block = $this->{'block'.$blockType}($Line, $CurrentBlock); + + if (isset($Block)) + { + $Block['type'] = $blockType; + + if ( ! isset($Block['identified'])) + { + $Blocks []= $CurrentBlock; + + $Block['identified'] = true; + } + + if ($this->isBlockContinuable($blockType)) + { + $Block['continuable'] = true; + } + + $CurrentBlock = $Block; + + continue 2; + } + } + + # ~ + + if (isset($CurrentBlock) and ! isset($CurrentBlock['type']) and ! isset($CurrentBlock['interrupted'])) + { + $CurrentBlock['element']['text'] .= "\n".$text; + } + else + { + $Blocks []= $CurrentBlock; + + $CurrentBlock = $this->paragraph($Line); + + $CurrentBlock['identified'] = true; + } + } + + # ~ + + if (isset($CurrentBlock['continuable']) and $this->isBlockCompletable($CurrentBlock['type'])) + { + $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock); + } + + # ~ + + $Blocks []= $CurrentBlock; + + unset($Blocks[0]); + + # ~ + + $markup = ''; + + foreach ($Blocks as $Block) + { + if (isset($Block['hidden'])) + { + continue; + } + + $markup .= "\n"; + $markup .= isset($Block['markup']) ? $Block['markup'] : $this->element($Block['element']); + } + + $markup .= "\n"; + + # ~ + + return $markup; + } + + protected function isBlockContinuable($Type) + { + return method_exists($this, 'block'.$Type.'Continue'); + } + + protected function isBlockCompletable($Type) + { + return method_exists($this, 'block'.$Type.'Complete'); + } + + # + # Code + + protected function blockCode($Line, $Block = null) + { + if (isset($Block) and ! isset($Block['type']) and ! isset($Block['interrupted'])) + { + return; + } + + if ($Line['indent'] >= 4) + { + $text = substr($Line['body'], 4); + + $Block = array( + 'element' => array( + 'name' => 'pre', + 'handler' => 'element', + 'text' => array( + 'name' => 'code', + 'text' => $text, + ), + ), + ); + + return $Block; + } + } + + protected function blockCodeContinue($Line, $Block) + { + if ($Line['indent'] >= 4) + { + if (isset($Block['interrupted'])) + { + $Block['element']['text']['text'] .= "\n"; + + unset($Block['interrupted']); + } + + $Block['element']['text']['text'] .= "\n"; + + $text = substr($Line['body'], 4); + + $Block['element']['text']['text'] .= $text; + + return $Block; + } + } + + protected function blockCodeComplete($Block) + { + $text = $Block['element']['text']['text']; + + $text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8'); + + $Block['element']['text']['text'] = $text; + + return $Block; + } + + # + # Comment + + protected function blockComment($Line) + { + if ($this->markupEscaped) + { + return; + } + + if (isset($Line['text'][3]) and $Line['text'][3] === '-' and $Line['text'][2] === '-' and $Line['text'][1] === '!') + { + $Block = array( + 'markup' => $Line['body'], + ); + + if (preg_match('/-->$/', $Line['text'])) + { + $Block['closed'] = true; + } + + return $Block; + } + } + + protected function blockCommentContinue($Line, array $Block) + { + if (isset($Block['closed'])) + { + return; + } + + $Block['markup'] .= "\n" . $Line['body']; + + if (preg_match('/-->$/', $Line['text'])) + { + $Block['closed'] = true; + } + + return $Block; + } + + # + # Fenced Code + + protected function blockFencedCode($Line) + { + if (preg_match('/^['.$Line['text'][0].']{3,}[ ]*([\w-]+)?[ ]*$/', $Line['text'], $matches)) + { + $Element = array( + 'name' => 'code', + 'text' => '', + ); + + if (isset($matches[1])) + { + $class = 'language-'.$matches[1]; + + $Element['attributes'] = array( + 'class' => $class, + ); + } + + $Block = array( + 'char' => $Line['text'][0], + 'element' => array( + 'name' => 'pre', + 'handler' => 'element', + 'text' => $Element, + ), + ); + + return $Block; + } + } + + protected function blockFencedCodeContinue($Line, $Block) + { + if (isset($Block['complete'])) + { + return; + } + + if (isset($Block['interrupted'])) + { + $Block['element']['text']['text'] .= "\n"; + + unset($Block['interrupted']); + } + + if (preg_match('/^'.$Block['char'].'{3,}[ ]*$/', $Line['text'])) + { + $Block['element']['text']['text'] = substr($Block['element']['text']['text'], 1); + + $Block['complete'] = true; + + return $Block; + } + + $Block['element']['text']['text'] .= "\n".$Line['body']; + + return $Block; + } + + protected function blockFencedCodeComplete($Block) + { + $text = $Block['element']['text']['text']; + + $text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8'); + + $Block['element']['text']['text'] = $text; + + return $Block; + } + + # + # Header + + protected function blockHeader($Line) + { + if (isset($Line['text'][1])) + { + $level = 1; + + while (isset($Line['text'][$level]) and $Line['text'][$level] === '#') + { + $level ++; + } + + if ($level > 6) + { + return; + } + + $text = trim($Line['text'], '# '); + + $Block = array( + 'element' => array( + 'name' => 'h' . min(6, $level), + 'text' => $text, + 'handler' => 'line', + ), + ); + + return $Block; + } + } + + # + # List + + protected function blockList($Line) + { + list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]+[.]'); + + if (preg_match('/^('.$pattern.'[ ]+)(.*)/', $Line['text'], $matches)) + { + $Block = array( + 'indent' => $Line['indent'], + 'pattern' => $pattern, + 'element' => array( + 'name' => $name, + 'handler' => 'elements', + ), + ); + + if($name === 'ol') + { + $listStart = stristr($matches[0], '.', true); + + if($listStart !== '1') + { + $Block['element']['attributes'] = array('start' => $listStart); + } + } + + $Block['li'] = array( + 'name' => 'li', + 'handler' => 'li', + 'text' => array( + $matches[2], + ), + ); + + $Block['element']['text'] []= & $Block['li']; + + return $Block; + } + } + + protected function blockListContinue($Line, array $Block) + { + if ($Block['indent'] === $Line['indent'] and preg_match('/^'.$Block['pattern'].'(?:[ ]+(.*)|$)/', $Line['text'], $matches)) + { + if (isset($Block['interrupted'])) + { + $Block['li']['text'] []= ''; + + unset($Block['interrupted']); + } + + unset($Block['li']); + + $text = isset($matches[1]) ? $matches[1] : ''; + + $Block['li'] = array( + 'name' => 'li', + 'handler' => 'li', + 'text' => array( + $text, + ), + ); + + $Block['element']['text'] []= & $Block['li']; + + return $Block; + } + + if ($Line['text'][0] === '[' and $this->blockReference($Line)) + { + return $Block; + } + + if ( ! isset($Block['interrupted'])) + { + $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); + + $Block['li']['text'] []= $text; + + return $Block; + } + + if ($Line['indent'] > 0) + { + $Block['li']['text'] []= ''; + + $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); + + $Block['li']['text'] []= $text; + + unset($Block['interrupted']); + + return $Block; + } + } + + # + # Quote + + protected function blockQuote($Line) + { + if (preg_match('/^>[ ]?(.*)/', $Line['text'], $matches)) + { + $Block = array( + 'element' => array( + 'name' => 'blockquote', + 'handler' => 'lines', + 'text' => (array) $matches[1], + ), + ); + + return $Block; + } + } + + protected function blockQuoteContinue($Line, array $Block) + { + if ($Line['text'][0] === '>' and preg_match('/^>[ ]?(.*)/', $Line['text'], $matches)) + { + if (isset($Block['interrupted'])) + { + $Block['element']['text'] []= ''; + + unset($Block['interrupted']); + } + + $Block['element']['text'] []= $matches[1]; + + return $Block; + } + + if ( ! isset($Block['interrupted'])) + { + $Block['element']['text'] []= $Line['text']; + + return $Block; + } + } + + # + # Rule + + protected function blockRule($Line) + { + if (preg_match('/^(['.$Line['text'][0].'])([ ]*\1){2,}[ ]*$/', $Line['text'])) + { + $Block = array( + 'element' => array( + 'name' => 'hr' + ), + ); + + return $Block; + } + } + + # + # Setext + + protected function blockSetextHeader($Line, array $Block = null) + { + if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) + { + return; + } + + if (chop($Line['text'], $Line['text'][0]) === '') + { + $Block['element']['name'] = $Line['text'][0] === '=' ? 'h1' : 'h2'; + + return $Block; + } + } + + # + # Markup + + protected function blockMarkup($Line) + { + if ($this->markupEscaped) + { + return; + } + + if (preg_match('/^<(\w*)(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*(\/)?>/', $Line['text'], $matches)) + { + $element = strtolower($matches[1]); + + if (in_array($element, $this->textLevelElements)) + { + return; + } + + $Block = array( + 'name' => $matches[1], + 'depth' => 0, + 'markup' => $Line['text'], + ); + + $length = strlen($matches[0]); + + $remainder = substr($Line['text'], $length); + + if (trim($remainder) === '') + { + if (isset($matches[2]) or in_array($matches[1], $this->voidElements)) + { + $Block['closed'] = true; + + $Block['void'] = true; + } + } + else + { + if (isset($matches[2]) or in_array($matches[1], $this->voidElements)) + { + return; + } + + if (preg_match('/<\/'.$matches[1].'>[ ]*$/i', $remainder)) + { + $Block['closed'] = true; + } + } + + return $Block; + } + } + + protected function blockMarkupContinue($Line, array $Block) + { + if (isset($Block['closed'])) + { + return; + } + + if (preg_match('/^<'.$Block['name'].'(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*>/i', $Line['text'])) # open + { + $Block['depth'] ++; + } + + if (preg_match('/(.*?)<\/'.$Block['name'].'>[ ]*$/i', $Line['text'], $matches)) # close + { + if ($Block['depth'] > 0) + { + $Block['depth'] --; + } + else + { + $Block['closed'] = true; + } + } + + if (isset($Block['interrupted'])) + { + $Block['markup'] .= "\n"; + + unset($Block['interrupted']); + } + + $Block['markup'] .= "\n".$Line['body']; + + return $Block; + } + + # + # Reference + + protected function blockReference($Line) + { + if (preg_match('/^\[(.+?)\]:[ ]*?(?:[ ]+["\'(](.+)["\')])?[ ]*$/', $Line['text'], $matches)) + { + $id = strtolower($matches[1]); + + $Data = array( + 'url' => $matches[2], + 'title' => null, + ); + + if (isset($matches[3])) + { + $Data['title'] = $matches[3]; + } + + $this->DefinitionData['Reference'][$id] = $Data; + + $Block = array( + 'hidden' => true, + ); + + return $Block; + } + } + + # + # Table + + protected function blockTable($Line, array $Block = null) + { + if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) + { + return; + } + + if (strpos($Block['element']['text'], '|') !== false and chop($Line['text'], ' -:|') === '') + { + $alignments = array(); + + $divider = $Line['text']; + + $divider = trim($divider); + $divider = trim($divider, '|'); + + $dividerCells = explode('|', $divider); + + foreach ($dividerCells as $dividerCell) + { + $dividerCell = trim($dividerCell); + + if ($dividerCell === '') + { + continue; + } + + $alignment = null; + + if ($dividerCell[0] === ':') + { + $alignment = 'left'; + } + + if (substr($dividerCell, - 1) === ':') + { + $alignment = $alignment === 'left' ? 'center' : 'right'; + } + + $alignments []= $alignment; + } + + # ~ + + $HeaderElements = array(); + + $header = $Block['element']['text']; + + $header = trim($header); + $header = trim($header, '|'); + + $headerCells = explode('|', $header); + + foreach ($headerCells as $index => $headerCell) + { + $headerCell = trim($headerCell); + + $HeaderElement = array( + 'name' => 'th', + 'text' => $headerCell, + 'handler' => 'line', + ); + + if (isset($alignments[$index])) + { + $alignment = $alignments[$index]; + + $HeaderElement['attributes'] = array( + 'style' => 'text-align: '.$alignment.';', + ); + } + + $HeaderElements []= $HeaderElement; + } + + # ~ + + $Block = array( + 'alignments' => $alignments, + 'identified' => true, + 'element' => array( + 'name' => 'table', + 'handler' => 'elements', + ), + ); + + $Block['element']['text'] []= array( + 'name' => 'thead', + 'handler' => 'elements', + ); + + $Block['element']['text'] []= array( + 'name' => 'tbody', + 'handler' => 'elements', + 'text' => array(), + ); + + $Block['element']['text'][0]['text'] []= array( + 'name' => 'tr', + 'handler' => 'elements', + 'text' => $HeaderElements, + ); + + return $Block; + } + } + + protected function blockTableContinue($Line, array $Block) + { + if (isset($Block['interrupted'])) + { + return; + } + + if ($Line['text'][0] === '|' or strpos($Line['text'], '|')) + { + $Elements = array(); + + $row = $Line['text']; + + $row = trim($row); + $row = trim($row, '|'); + + preg_match_all('/(?:(\\\\[|])|[^|`]|`[^`]+`|`)+/', $row, $matches); + + foreach ($matches[0] as $index => $cell) + { + $cell = trim($cell); + + $Element = array( + 'name' => 'td', + 'handler' => 'line', + 'text' => $cell, + ); + + if (isset($Block['alignments'][$index])) + { + $Element['attributes'] = array( + 'style' => 'text-align: '.$Block['alignments'][$index].';', + ); + } + + $Elements []= $Element; + } + + $Element = array( + 'name' => 'tr', + 'handler' => 'elements', + 'text' => $Elements, + ); + + $Block['element']['text'][1]['text'] []= $Element; + + return $Block; + } + } + + # + # ~ + # + + protected function paragraph($Line) + { + $Block = array( + 'element' => array( + 'name' => 'p', + 'text' => $Line['text'], + 'handler' => 'line', + ), + ); + + return $Block; + } + + # + # Inline Elements + # + + protected $InlineTypes = array( + '"' => array('SpecialCharacter'), + '!' => array('Image'), + '&' => array('SpecialCharacter'), + '*' => array('Emphasis'), + ':' => array('Url'), + '<' => array('UrlTag', 'EmailTag', 'Markup', 'SpecialCharacter'), + '>' => array('SpecialCharacter'), + '[' => array('Link'), + '_' => array('Emphasis'), + '`' => array('Code'), + '~' => array('Strikethrough'), + '\\' => array('EscapeSequence'), + ); + + # ~ + + protected $inlineMarkerList = '!"*_&[:<>`~\\'; + + # + # ~ + # + + public function line($text) + { + $markup = ''; + + # $excerpt is based on the first occurrence of a marker + + while ($excerpt = strpbrk($text, $this->inlineMarkerList)) + { + $marker = $excerpt[0]; + + $markerPosition = strpos($text, $marker); + + $Excerpt = array('text' => $excerpt, 'context' => $text); + + foreach ($this->InlineTypes[$marker] as $inlineType) + { + $Inline = $this->{'inline'.$inlineType}($Excerpt); + + if ( ! isset($Inline)) + { + continue; + } + + # makes sure that the inline belongs to "our" marker + + if (isset($Inline['position']) and $Inline['position'] > $markerPosition) + { + continue; + } + + # sets a default inline position + + if ( ! isset($Inline['position'])) + { + $Inline['position'] = $markerPosition; + } + + # the text that comes before the inline + $unmarkedText = substr($text, 0, $Inline['position']); + + # compile the unmarked text + $markup .= $this->unmarkedText($unmarkedText); + + # compile the inline + $markup .= isset($Inline['markup']) ? $Inline['markup'] : $this->element($Inline['element']); + + # remove the examined text + $text = substr($text, $Inline['position'] + $Inline['extent']); + + continue 2; + } + + # the marker does not belong to an inline + + $unmarkedText = substr($text, 0, $markerPosition + 1); + + $markup .= $this->unmarkedText($unmarkedText); + + $text = substr($text, $markerPosition + 1); + } + + $markup .= $this->unmarkedText($text); + + return $markup; + } + + # + # ~ + # + + protected function inlineCode($Excerpt) + { + $marker = $Excerpt['text'][0]; + + if (preg_match('/^('.$marker.'+)[ ]*(.+?)[ ]*(? strlen($matches[0]), + 'element' => array( + 'name' => 'code', + 'text' => $text, + ), + ); + } + } + + protected function inlineEmailTag($Excerpt) + { + if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<((mailto:)?\S+?@\S+?)>/i', $Excerpt['text'], $matches)) + { + $url = $matches[1]; + + if ( ! isset($matches[2])) + { + $url = 'mailto:' . $url; + } + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'a', + 'text' => $matches[1], + 'attributes' => array( + 'href' => $url, + ), + ), + ); + } + } + + protected function inlineEmphasis($Excerpt) + { + if ( ! isset($Excerpt['text'][1])) + { + return; + } + + $marker = $Excerpt['text'][0]; + + if ($Excerpt['text'][1] === $marker and preg_match($this->StrongRegex[$marker], $Excerpt['text'], $matches)) + { + $emphasis = 'strong'; + } + elseif (preg_match($this->EmRegex[$marker], $Excerpt['text'], $matches)) + { + $emphasis = 'em'; + } + else + { + return; + } + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => $emphasis, + 'handler' => 'line', + 'text' => $matches[1], + ), + ); + } + + protected function inlineEscapeSequence($Excerpt) + { + if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters)) + { + return array( + 'markup' => $Excerpt['text'][1], + 'extent' => 2, + ); + } + } + + protected function inlineImage($Excerpt) + { + if ( ! isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[') + { + return; + } + + $Excerpt['text']= substr($Excerpt['text'], 1); + + $Link = $this->inlineLink($Excerpt); + + if ($Link === null) + { + return; + } + + $Inline = array( + 'extent' => $Link['extent'] + 1, + 'element' => array( + 'name' => 'img', + 'attributes' => array( + 'src' => $Link['element']['attributes']['href'], + 'alt' => $Link['element']['text'], + ), + ), + ); + + $Inline['element']['attributes'] += $Link['element']['attributes']; + + unset($Inline['element']['attributes']['href']); + + return $Inline; + } + + protected function inlineLink($Excerpt) + { + $Element = array( + 'name' => 'a', + 'handler' => 'line', + 'text' => null, + 'attributes' => array( + 'href' => null, + 'title' => null, + ), + ); + + $extent = 0; + + $remainder = $Excerpt['text']; + + if (preg_match('/\[((?:[^][]++|(?R))*+)\]/', $remainder, $matches)) + { + $Element['text'] = $matches[1]; + + $extent += strlen($matches[0]); + + $remainder = substr($remainder, $extent); + } + else + { + return; + } + + if (preg_match('/^[(]\s*+((?:[^ ()]++|[(][^ )]+[)])++)(?:[ ]+("[^"]*"|\'[^\']*\'))?\s*[)]/', $remainder, $matches)) + { + $Element['attributes']['href'] = $matches[1]; + + if (isset($matches[2])) + { + $Element['attributes']['title'] = substr($matches[2], 1, - 1); + } + + $extent += strlen($matches[0]); + } + else + { + if (preg_match('/^\s*\[(.*?)\]/', $remainder, $matches)) + { + $definition = strlen($matches[1]) ? $matches[1] : $Element['text']; + $definition = strtolower($definition); + + $extent += strlen($matches[0]); + } + else + { + $definition = strtolower($Element['text']); + } + + if ( ! isset($this->DefinitionData['Reference'][$definition])) + { + return; + } + + $Definition = $this->DefinitionData['Reference'][$definition]; + + $Element['attributes']['href'] = $Definition['url']; + $Element['attributes']['title'] = $Definition['title']; + } + + $Element['attributes']['href'] = str_replace(array('&', '<'), array('&', '<'), $Element['attributes']['href']); + + return array( + 'extent' => $extent, + 'element' => $Element, + ); + } + + protected function inlineMarkup($Excerpt) + { + if ($this->markupEscaped or strpos($Excerpt['text'], '>') === false) + { + return; + } + + if ($Excerpt['text'][1] === '/' and preg_match('/^<\/\w*[ ]*>/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + + if ($Excerpt['text'][1] === '!' and preg_match('/^/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + + if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\w*(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*\/?>/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + } + + protected function inlineSpecialCharacter($Excerpt) + { + if ($Excerpt['text'][0] === '&' and ! preg_match('/^&#?\w+;/', $Excerpt['text'])) + { + return array( + 'markup' => '&', + 'extent' => 1, + ); + } + + $SpecialCharacter = array('>' => 'gt', '<' => 'lt', '"' => 'quot'); + + if (isset($SpecialCharacter[$Excerpt['text'][0]])) + { + return array( + 'markup' => '&'.$SpecialCharacter[$Excerpt['text'][0]].';', + 'extent' => 1, + ); + } + } + + protected function inlineStrikethrough($Excerpt) + { + if ( ! isset($Excerpt['text'][1])) + { + return; + } + + if ($Excerpt['text'][1] === '~' and preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $Excerpt['text'], $matches)) + { + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'del', + 'text' => $matches[1], + 'handler' => 'line', + ), + ); + } + } + + protected function inlineUrl($Excerpt) + { + if ($this->urlsLinked !== true or ! isset($Excerpt['text'][2]) or $Excerpt['text'][2] !== '/') + { + return; + } + + if (preg_match('/\bhttps?:[\/]{2}[^\s<]+\b\/*/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE)) + { + $Inline = array( + 'extent' => strlen($matches[0][0]), + 'position' => $matches[0][1], + 'element' => array( + 'name' => 'a', + 'text' => $matches[0][0], + 'attributes' => array( + 'href' => $matches[0][0], + ), + ), + ); + + return $Inline; + } + } + + protected function inlineUrlTag($Excerpt) + { + if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\w+:\/{2}[^ >]+)>/i', $Excerpt['text'], $matches)) + { + $url = str_replace(array('&', '<'), array('&', '<'), $matches[1]); + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'a', + 'text' => $url, + 'attributes' => array( + 'href' => $url, + ), + ), + ); + } + } + + # ~ + + protected function unmarkedText($text) + { + if ($this->breaksEnabled) + { + $text = preg_replace('/[ ]*\n/', "
    \n", $text); + } + else + { + $text = preg_replace('/(?:[ ][ ]+|[ ]*\\\\)\n/', "
    \n", $text); + $text = str_replace(" \n", "\n", $text); + } + + return $text; + } + + # + # Handlers + # + + protected function element(array $Element) + { + $markup = '<'.$Element['name']; + + if (isset($Element['attributes'])) + { + foreach ($Element['attributes'] as $name => $value) + { + if ($value === null) + { + continue; + } + + $markup .= ' '.$name.'="'.$value.'"'; + } + } + + if (isset($Element['text'])) + { + $markup .= '>'; + + if (isset($Element['handler'])) + { + $markup .= $this->{$Element['handler']}($Element['text']); + } + else + { + $markup .= $Element['text']; + } + + $markup .= ''; + } + else + { + $markup .= ' />'; + } + + return $markup; + } + + protected function elements(array $Elements) + { + $markup = ''; + + foreach ($Elements as $Element) + { + $markup .= "\n" . $this->element($Element); + } + + $markup .= "\n"; + + return $markup; + } + + # ~ + + protected function li($lines) + { + $markup = $this->lines($lines); + + $trimmedMarkup = trim($markup); + + if ( ! in_array('', $lines) and substr($trimmedMarkup, 0, 3) === '

    ') + { + $markup = $trimmedMarkup; + $markup = substr($markup, 3); + + $position = strpos($markup, "

    "); + + $markup = substr_replace($markup, '', $position, 4); + } + + return $markup; + } + + # + # Deprecated Methods + # + + function parse($text) + { + $markup = $this->text($text); + + return $markup; + } + + # + # Static Methods + # + + static function instance($name = 'default') + { + if (isset(self::$instances[$name])) + { + return self::$instances[$name]; + } + + $instance = new static(); + + self::$instances[$name] = $instance; + + return $instance; + } + + private static $instances = array(); + + # + # Fields + # + + protected $DefinitionData; + + # + # Read-Only + + protected $specialCharacters = array( + '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|', + ); + + protected $StrongRegex = array( + '*' => '/^[*]{2}((?:\\\\\*|[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s', + '_' => '/^__((?:\\\\_|[^_]|_[^_]*_)+?)__(?!_)/us', + ); + + protected $EmRegex = array( + '*' => '/^[*]((?:\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s', + '_' => '/^_((?:\\\\_|[^_]|__[^_]*__)+?)_(?!_)\b/us', + ); + + protected $regexHtmlAttribute = '[a-zA-Z_:][\w:.-]*(?:\s*=\s*(?:[^"\'=<>`\s]+|"[^"]*"|\'[^\']*\'))?'; + + protected $voidElements = array( + 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', + ); + + protected $textLevelElements = array( + 'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont', + 'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing', + 'i', 'rp', 'del', 'code', 'strike', 'marquee', + 'q', 'rt', 'ins', 'font', 'strong', + 's', 'tt', 'kbd', 'mark', + 'u', 'xm', 'sub', 'nobr', + 'sup', 'ruby', + 'var', 'span', + 'wbr', 'time', + ); +} diff --git a/redux/ReduxCore/inc/fields/section/field_section.css b/redux/ReduxCore/inc/fields/section/field_section.css new file mode 100644 index 0000000..c2a1770 --- /dev/null +++ b/redux/ReduxCore/inc/fields/section/field_section.css @@ -0,0 +1 @@ +.redux-main .form-table-section-indented{width:95%;margin-left:5% !important}.redux-main .form-table-section tr:first-of-type th:first-of-type{padding:0px !important}.redux-main h3{margin-top:10px}.redux-main .form-table-section-indented>tbody>tr:first-child{display:none}.redux-main .form-table-section-indented>tbody>tr:nth-last-child(2){border-bottom:0} diff --git a/redux/ReduxCore/inc/fields/section/field_section.css.map b/redux/ReduxCore/inc/fields/section/field_section.css.map new file mode 100644 index 0000000..fb6bebf --- /dev/null +++ b/redux/ReduxCore/inc/fields/section/field_section.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AACI,wCAA6B;EACzB,KAAK,EAAE,GAAG;EACV,WAAW,EAAE,aAAa;AAG9B,iEAAsD;EAClD,OAAO,EAAE,cAAc;AAG3B,cAAG;EACC,UAAU,EAAE,IAAI;AAIhB,iEAAc;EACV,OAAO,EAAE,IAAI;AAGjB,uEAAoB;EAChB,aAAa,EAAE,CAAC", +"sources": ["field_section.scss"], +"names": [], +"file": "field_section.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/section/field_section.php b/redux/ReduxCore/inc/fields/section/field_section.php new file mode 100644 index 0000000..400ee83 --- /dev/null +++ b/redux/ReduxCore/inc/fields/section/field_section.php @@ -0,0 +1,134 @@ +. + * + * @package ReduxFramework + * @subpackage Field_Section + * @author Tobias Karnetze (athoss.de) + * @version 1.0.0 + */ + +// Exit if accessed directly + if ( ! defined( 'ABSPATH' ) ) { + exit; + } + +// Don't duplicate me! + if ( ! class_exists( 'ReduxFramework_section' ) ) { + + /** + * Main ReduxFramework_heading class + * + * @since 1.0.0 + */ + class ReduxFramework_section { + + public $parent; + public $field; + public $value; + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since 1.0.0 + * @access public + * @return void + */ + public function __construct( $field = array(), $value = '', $parent=null ) { + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since 1.0.0 + * @access public + * @return void + */ + public function render() { + + // No errors please + $defaults = array( + 'indent' => '', + 'style' => '', + 'class' => '', + 'title' => '', + 'subtitle' => '', + ); + $this->field = wp_parse_args( $this->field, $defaults ); + + $guid = uniqid(); + + $add_class = ''; + if ( isset( $this->field['indent'] ) && true === $this->field['indent'] ) { + $add_class = ' form-table-section-indented'; + } elseif( !isset( $this->field['indent'] ) || ( isset( $this->field['indent'] ) && false !== $this->field['indent'] ) ) { + $add_class = " hide"; + } + + echo '
    '; + + echo '
    '; + + if ( ! empty( $this->field['title'] ) ) { + echo '

    ' . esc_html($this->field['title']) . '

    '; + } + + if ( ! empty( $this->field['subtitle'] ) ) { + echo '
    ' . esc_html($this->field['subtitle']) . '
    '; + } + + echo '
    '; + + // delete the tr afterwards + ?> + + parent->args['dev_mode'] ) { + wp_enqueue_style( + 'redux-field-section-css', + ReduxFramework::$_url . 'inc/fields/section/field_section.css', + array(), + time(), + 'all' + ); + } + } + } + } \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/section/field_section.scss b/redux/ReduxCore/inc/fields/section/field_section.scss new file mode 100644 index 0000000..87a9a10 --- /dev/null +++ b/redux/ReduxCore/inc/fields/section/field_section.scss @@ -0,0 +1,25 @@ +.redux-main { + .form-table-section-indented { + width: 95%; + margin-left: 5% !important; + } + + .form-table-section tr:first-of-type th:first-of-type { + padding: 0px !important; + } + + h3 { + margin-top: 10px; + } + + .form-table-section-indented > tbody > tr{ + &:first-child { + display: none; + } + + &:nth-last-child(2) { + border-bottom: 0; + } + } +} + diff --git a/redux/ReduxCore/inc/fields/select/elusive-icons.php b/redux/ReduxCore/inc/fields/select/elusive-icons.php new file mode 100644 index 0000000..a10d676 --- /dev/null +++ b/redux/ReduxCore/inc/fields/select/elusive-icons.php @@ -0,0 +1,312 @@ + 0 ) { + var select2_params = $( this ).siblings( '.select2_params' ).val(); + select2_params = JSON.parse( select2_params ); + default_params = $.extend( {}, default_params, select2_params ); + } + + if ( $( this ).hasClass( 'font-icons' ) ) { + default_params = $.extend( + {}, { + formatResult: redux.field_objects.select.addIcon, + formatSelection: redux.field_objects.select.addIcon, + escapeMarkup: function( m ) { + return m; + } + }, default_params + ); + } + + $( this ).select2( default_params ); + + if ( $( this ).hasClass( 'select2-sortable' ) ) { + default_params = {}; + default_params.bindOrder = 'sortableStop'; + default_params.sortableOptions = {placeholder: 'ui-state-highlight'}; + $( this ).select2Sortable( default_params ); + } + + $( this ).on( + "change", function() { + redux_change( $( $( this ) ) ); + $( this ).select2SortableOrder(); + } + ); + } + ); + } + ); + }; + + redux.field_objects.select.addIcon = function( icon ) { + if ( icon.hasOwnProperty( 'id' ) ) { + return "" + "  " + icon.text + ""; + } + }; +})( jQuery ); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/select/field_select.min.js b/redux/ReduxCore/inc/fields/select/field_select.min.js new file mode 100644 index 0000000..2831ad2 --- /dev/null +++ b/redux/ReduxCore/inc/fields/select/field_select.min.js @@ -0,0 +1 @@ +!function(s){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.select=redux.field_objects.select||{},redux.field_objects.select.init=function(e){e||(e=s(document).find(".redux-container-select:visible")),s(e).each(function(){var e=s(this),t=e;e.hasClass("redux-field-container")||(t=e.parents(".redux-field-container:first")),t.is(":hidden")||t.hasClass("redux-field-init")&&(t.removeClass("redux-field-init"),e.find("select.redux-select-item").each(function(){var e={width:"resolve",triggerChange:!0,allowClear:!0};if("multiple"==s(this).attr("multiple")&&(e.width="100%"),0  "+e.text+""}}(jQuery); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/select/field_select.php b/redux/ReduxCore/inc/fields/select/field_select.php new file mode 100644 index 0000000..5377822 --- /dev/null +++ b/redux/ReduxCore/inc/fields/select/field_select.php @@ -0,0 +1,183 @@ +parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since ReduxFramework 1.0.0 + */ + public function render() { + $sortable = ( isset( $this->field['sortable'] ) && $this->field['sortable'] ) ? ' select2-sortable"' : ""; + + if ( ! empty( $sortable ) ) { // Dummy proofing :P + $this->field['multi'] = true; + } + + if ( ! empty( $this->field['data'] ) && empty( $this->field['options'] ) ) { + if ( empty( $this->field['args'] ) ) { + $this->field['args'] = array(); + } + + if ( $this->field['data'] == "elusive-icons" || $this->field['data'] == "elusive-icon" || $this->field['data'] == "elusive" ) { + $icons_file = ReduxFramework::$_dir . 'inc/fields/select/elusive-icons.php'; + /** + * filter 'redux-font-icons-file}' + * + * @param array $icon_file File for the icons + */ + $icons_file = apply_filters( 'redux-font-icons-file', $icons_file ); + + /** + * filter 'redux/{opt_name}/field/font/icons/file' + * + * @param array $icon_file File for the icons + */ + $icons_file = apply_filters( "redux/{$this->parent->args['opt_name']}/field/font/icons/file", $icons_file ); + if ( file_exists( $icons_file ) ) { + require_once $icons_file; + } + } + + $this->field['options'] = $this->parent->get_wordpress_data( $this->field['data'], $this->field['args'] ); + } + + if ( ! empty( $this->field['data'] ) && ( $this->field['data'] == "elusive-icons" || $this->field['data'] == "elusive-icon" || $this->field['data'] == "elusive" ) ) { + $this->field['class'] .= " font-icons"; + } + //if + + if ( ! empty( $this->field['options'] ) ) { + $multi = ( isset( $this->field['multi'] ) && $this->field['multi'] ) ? ' multiple="multiple"' : ""; + + if ( ! empty( $this->field['width'] ) ) { + $width = ' style="' . $this->field['width'] . '"'; + } else { + $width = ' style="width: 40%;"'; + } + + $nameBrackets = ""; + if ( ! empty( $multi ) ) { + $nameBrackets = "[]"; + } + + $placeholder = ( isset( $this->field['placeholder'] ) ) ? esc_attr( $this->field['placeholder'] ) : __( 'Select an item', 'redux-framework' ); + + if ( isset( $this->field['select2'] ) ) { // if there are any let's pass them to js + $select2_params = json_encode( $this->field['select2'] ); + $select2_params = htmlspecialchars( $select2_params, ENT_QUOTES ); + + echo ''; + } + + if ( isset( $this->field['multi'] ) && $this->field['multi'] && isset( $this->field['sortable'] ) && $this->field['sortable'] && ! empty( $this->value ) && is_array( $this->value ) ) { + $origOption = $this->field['options']; + $this->field['options'] = array(); + + foreach ( $this->value as $value ) { + $this->field['options'][ $value ] = $origOption[ $value ]; + } + + if ( count( $this->field['options'] ) < count( $origOption ) ) { + foreach ( $origOption as $key => $value ) { + if ( ! in_array( $key, $this->field['options'] ) ) { + $this->field['options'][ $key ] = $value; + } + } + } + } + + $sortable = ( isset( $this->field['sortable'] ) && $this->field['sortable'] ) ? ' select2-sortable"' : ""; + + echo ''; + } else { + echo '' . __( 'No items of this type were found.', 'redux-framework' ) . ''; + } + } //function + + private function make_option($id, $value, $group_name = '') { + if ( is_array( $this->value ) ) { + $selected = ( is_array( $this->value ) && in_array( $id, $this->value ) ) ? ' selected="selected"' : ''; + } else { + $selected = selected( $this->value, $id, false ); + } + + echo ''; + } + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since ReduxFramework 1.0.0 + */ + public function enqueue() { + wp_enqueue_style( 'select2-css' ); + + if (isset($this->field['sortable']) && $this->field['sortable']) { + wp_enqueue_script('jquery-ui-sortable'); + } + + wp_enqueue_script( + 'redux-field-select-js', + ReduxFramework::$_url . 'inc/fields/select/field_select' . Redux_Functions::isMin() . '.js', + array( 'jquery', 'select2-js', 'redux-js' ), + time(), + true + ); + + if ($this->parent->args['dev_mode']) { + wp_enqueue_style( + 'redux-field-select-css', + ReduxFramework::$_url . 'inc/fields/select/field_select.css', + array(), + time(), + 'all' + ); + } + } //function + } //class +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/select/field_select.scss b/redux/ReduxCore/inc/fields/select/field_select.scss new file mode 100644 index 0000000..f73812d --- /dev/null +++ b/redux/ReduxCore/inc/fields/select/field_select.scss @@ -0,0 +1,10 @@ +.redux-container-select { + li.ui-state-highlight { + height: 20px; + margin-top: 2px; + margin-left: 5px; + width: 64px; + margin-bottom: 0; + } +} + diff --git a/redux/ReduxCore/inc/fields/select_image/field_select_image.css b/redux/ReduxCore/inc/fields/select_image/field_select_image.css new file mode 100644 index 0000000..b4a9459 --- /dev/null +++ b/redux/ReduxCore/inc/fields/select_image/field_select_image.css @@ -0,0 +1 @@ +.redux-container-select_image{margin-top:2px;margin-left:5px;width:100%;margin-bottom:0}.redux-preview-image{max-height:250px;max-width:250px;padding:5px;margin-top:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px} diff --git a/redux/ReduxCore/inc/fields/select_image/field_select_image.css.map b/redux/ReduxCore/inc/fields/select_image/field_select_image.css.map new file mode 100644 index 0000000..f7196ae --- /dev/null +++ b/redux/ReduxCore/inc/fields/select_image/field_select_image.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AAAA,6BAA8B;EAC1B,UAAU,EAAE,GAAG;EACf,WAAW,EAAE,GAAG;EAChB,KAAK,EAAE,IAAI;EACX,aAAa,EAAE,CAAC;;AAGpB,oBAAqB;EACjB,UAAU,EAAE,KAAK;EACjB,SAAS,EAAE,KAAK;EAChB,OAAO,EAAE,GAAG;EACZ,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,iBAAiB;EACzB,UAAU,EAAE,OAAO;EACnB,kBAAkB,EAAE,GAAG;EACvB,oBAAoB,EAAE,GAAG;EACzB,qBAAqB,EAAE,GAAG;EAC1B,aAAa,EAAE,GAAG", +"sources": ["field_select_image.scss"], +"names": [], +"file": "field_select_image.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/select_image/field_select_image.js b/redux/ReduxCore/inc/fields/select_image/field_select_image.js new file mode 100644 index 0000000..296f41e --- /dev/null +++ b/redux/ReduxCore/inc/fields/select_image/field_select_image.js @@ -0,0 +1,72 @@ +/*global redux_change, redux*/ + +(function( $ ) { + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.select_image = redux.field_objects.select_image || {}; + + $( document ).ready( + function() { + //redux.field_objects.select_image.init(); + } + ); + + redux.field_objects.select_image.init = function( selector ) { + + if ( !selector ) { + selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-select_image:visible' ); + } + + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + var default_params = { + width: 'resolve', + triggerChange: true, + allowClear: true + }; + + var select2_handle = el.find( '.redux-container-select_image' ).find( '.select2_params' ); + + if ( select2_handle.size() > 0 ) { + var select2_params = select2_handle.val(); + + select2_params = JSON.parse( select2_params ); + default_params = $.extend( {}, default_params, select2_params ); + } + + el.find( 'select.redux-select-images' ).select2( default_params ); + + el.find( '.redux-select-images' ).on( + 'change', function() { + var preview = $( this ).parents( '.redux-field:first' ).find( '.redux-preview-image' ); + + if ( $( this ).val() === "" ) { + preview.fadeOut( + 'medium', function() { + preview.attr( 'src', '' ); + } + ); + } else { + preview.attr( 'src', $( this ).val() ); + preview.fadeIn().css( 'visibility', 'visible' ); + } + } + ); + } + ); + }; +})( jQuery ); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/select_image/field_select_image.min.js b/redux/ReduxCore/inc/fields/select_image/field_select_image.min.js new file mode 100644 index 0000000..1f31e36 --- /dev/null +++ b/redux/ReduxCore/inc/fields/select_image/field_select_image.min.js @@ -0,0 +1 @@ +!function(d){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.select_image=redux.field_objects.select_image||{},d(document).ready(function(){}),redux.field_objects.select_image.init=function(e){e||(e=d(document).find(".redux-group-tab:visible").find(".redux-container-select_image:visible")),d(e).each(function(){var e=d(this),i=e;if(e.hasClass("redux-field-container")||(i=e.parents(".redux-field-container:first")),!i.is(":hidden")&&i.hasClass("redux-field-init")){i.removeClass("redux-field-init");var t={width:"resolve",triggerChange:!0,allowClear:!0},s=e.find(".redux-container-select_image").find(".select2_params");if(0 + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( 'ReduxFramework_select_image' ) ) { + class ReduxFramework_select_image { + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since ReduxFramework 1.0.0 + */ + function __construct( $field = array(), $value = '', $parent=null ) { + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since ReduxFramework 1.0.0 + */ + function render() { + + // If options is NOT empty, the process + if ( ! empty( $this->field['options'] ) ) { + + // beancounter + $x = 1; + + // Process width + if ( ! empty( $this->field['width'] ) ) { + $width = ' style="width:' . $this->field['width'] . ';"'; + } else { + $width = ' style="width: 40%;"'; + } + + // Process placeholder + $placeholder = ( isset( $this->field['placeholder'] ) ) ? esc_attr( $this->field['placeholder'] ) : __( 'Select an item', 'redux-framework' ); + + if ( isset( $this->field['select2'] ) ) { // if there are any let's pass them to js + $select2_params = json_encode( $this->field['select2'] ); + $select2_params = htmlspecialchars( $select2_params, ENT_QUOTES ); + + echo ''; + } + + // Begin the '; + echo ''; + + // Enum through the options array + foreach ( $this->field['options'] as $k => $v ) { + + // No array? No problem! + if ( ! is_array( $v ) ) { + $v = array( 'img' => $v ); + } + + // No title set? Make it blank. + if ( ! isset( $v['title'] ) ) { + $v['title'] = ''; + } + + // No alt? Set it to title. We do this so the alt tag shows + // something. It also makes HTML/SEO purists happy. + if ( ! isset( $v['alt'] ) ) { + $v['alt'] = $v['title']; + } + + // Set the selected entry + $selected = selected( $this->value, $v['img'], false ); + + // If selected returns something other than a blank space, we + // found our default/saved name. Save the array number in a + // variable to use later on when we want to extract its associted + // url. + if ( '' != $selected ) { + $arrNum = $x; + } + + // Add the option tag, with values. + echo ''; + + // Add a bean + $x ++; + } + + // Close the '; + + // Some space + echo '

    '; + + // Show the preview image. + echo '
    '; + + // just in case. You never know. + if ( ! isset( $arrNum ) ) { + $this->value = ''; + } + + // Set the default image. To get the url from the default name, + // we save the array count from the for/each loop, when the default image + // is mark as selected. Since the for/each loop starts at one, we must + // substract one from the saved array number. We then pull the url + // out of the options array, and there we go. + if ( '' == $this->value ) { + echo ''; + } else { + echo ''; + } + + // Close the
    tag. + echo '
    '; + } else { + + // No options specified. Really? + echo '' . __( 'No items of this type were found.', 'redux-framework' ) . ''; + } + } //function + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since ReduxFramework 1.0.0 + */ + function enqueue() { + wp_enqueue_style( 'select2-css' ); + + wp_enqueue_script( + 'field-select-image-js', + ReduxFramework::$_url . 'inc/fields/select_image/field_select_image' . Redux_Functions::isMin() . '.js', + array('jquery', 'select2-js', 'redux-js'), + time(), + true + ); + + if ($this->parent->args['dev_mode']) { + wp_enqueue_style( + 'redux-field-select-image-css', + ReduxFramework::$_url . 'inc/fields/select_image/field_select_image.css', + array(), + time(), + 'all' + ); + } + } //function + } //class +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/select_image/field_select_image.scss b/redux/ReduxCore/inc/fields/select_image/field_select_image.scss new file mode 100644 index 0000000..601c9ef --- /dev/null +++ b/redux/ReduxCore/inc/fields/select_image/field_select_image.scss @@ -0,0 +1,20 @@ +.redux-container-select_image { + margin-top: 2px; + margin-left: 5px; + width: 100%; + margin-bottom: 0; +} + +.redux-preview-image { + max-height: 250px; + max-width: 250px; + padding: 5px; + margin-top: 10px; + border: 1px solid #e3e3e3; + background: #f7f7f7; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + diff --git a/redux/ReduxCore/inc/fields/slider/field_slider.css b/redux/ReduxCore/inc/fields/slider/field_slider.css new file mode 100644 index 0000000..6991456 --- /dev/null +++ b/redux/ReduxCore/inc/fields/slider/field_slider.css @@ -0,0 +1 @@ +.redux-container-slider .redux-slider-container{margin-left:25px;margin-right:25px;width:200px;display:inline-block;vertical-align:middle}.redux-container-slider .redux-slider-input,.redux-container-slider .redux-slider-select-one,.redux-container-slider .redux-slider-select-two{width:100px !important;text-align:center}.redux-container-slider .redux-slider-label{position:absolute;margin-left:-5px}.redux-container-slider .redux-slider-label-one{position:absolute;margin-left:-22px}.redux-container-slider .redux-slider-label-two{position:absolute;margin-top:-21px;margin-left:245px}@media screen and (max-width: 782px){.redux-container-slider input{display:inline-block !important}}@media screen and (max-width: 570px){.redux-container-slider{text-align:center}.redux-container-slider input,.redux-container-slider select,.redux-container-slider .redux-slider-label,.redux-container-slider .select2-container{display:block !important;position:inherit;margin:10px auto}.redux-container-slider .redux-slider-container{margin-top:3px;width:80%}}.wp-customizer .redux-container-slider .redux-slider-label{float:left;position:inherit;width:25%;text-align:center;margin-left:0}.wp-customizer .redux-container-slider .redux-slider-input,.wp-customizer .redux-container-slider .redux-slider-select-one,.wp-customizer .redux-container-slider .redux-slider-select-two{width:25% !important}.wp-customizer .redux-container-slider .redux-slider-container{width:70%;margin-right:0;margin-left:5%} diff --git a/redux/ReduxCore/inc/fields/slider/field_slider.css.map b/redux/ReduxCore/inc/fields/slider/field_slider.css.map new file mode 100644 index 0000000..efbb833 --- /dev/null +++ b/redux/ReduxCore/inc/fields/slider/field_slider.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AACI,+CAAwB;EACpB,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,IAAI;EAClB,KAAK,EAAE,KAAK;EACZ,OAAO,EAAE,YAAY;EACrB,cAAc,EAAE,MAAM;AAG1B;;gDAEyB;EACrB,KAAK,EAAE,gBAAgB;EACvB,UAAU,EAAE,MAAM;AAGtB,2CAAoB;EAChB,QAAQ,EAAE,QAAQ;EAClB,WAAW,EAAE,IAAI;AAGrB,+CAAwB;EACpB,QAAQ,EAAE,QAAQ;EAClB,WAAW,EAAE,KAAK;AAGtB,+CAAwB;EACpB,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,KAAK;EACjB,WAAW,EAAE,KAAK;;AAI1B,oCAAqC;EAE7B,6BAAM;IACF,OAAO,EAAE,uBAAuB;AAM5C,oCAAqC;EACjC,uBAAwB;IACpB,UAAU,EAAE,MAAM;IAElB;;;8CAGmB;MACf,OAAO,EAAE,gBAAgB;MACzB,QAAQ,EAAE,OAAO;MACjB,MAAM,EAAE,SAAS;IAGrB,+CAAwB;MACpB,UAAU,EAAE,GAAG;MACf,KAAK,EAAE,GAAG;AAOd,0DAAoB;EAChB,KAAK,EAAE,IAAI;EACX,QAAQ,EAAE,OAAO;EACjB,KAAK,EAAE,GAAG;EACV,UAAU,EAAE,MAAM;EAClB,WAAW,EAAC,CAAC;AAEjB,4LAAwE;EACpE,KAAK,EAAE,cAAc;AAEzB,8DAAwB;EACpB,KAAK,EAAE,GAAG;EACV,YAAY,EAAE,CAAC;EACf,WAAW,EAAE,EAAE", +"sources": ["field_slider.scss"], +"names": [], +"file": "field_slider.css" +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/slider/field_slider.js b/redux/ReduxCore/inc/fields/slider/field_slider.js new file mode 100644 index 0000000..1404086 --- /dev/null +++ b/redux/ReduxCore/inc/fields/slider/field_slider.js @@ -0,0 +1,269 @@ +/*global redux_change, redux*/ + +(function( $ ) { + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.slider = redux.field_objects.slider || {}; + + $( document ).ready( + function() { + + } + ); + + redux.field_objects.slider.init = function( selector ) { + + if ( !selector ) { + selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-slider:visible' ); + } + + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + if ( parent.is( ":hidden" ) ) { // Skip hidden fields + return; + } + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + + el.find( 'div.redux-slider-container' ).each( + function() { + + var start, toClass, defClassOne, defClassTwo, connectVal; + var DISPLAY_NONE = 0; + var DISPLAY_LABEL = 1; + var DISPLAY_TEXT = 2; + var DISPLAY_SELECT = 3; + + var mainID = $( this ).data( 'id' ); + var minVal = $( this ).data( 'min' ); + var maxVal = $( this ).data( 'max' ); + var stepVal = $( this ).data( 'step' ); + var handles = $( this ).data( 'handles' ); + var defValOne = $( this ).data( 'default-one' ); + var defValTwo = $( this ).data( 'default-two' ); + var resVal = $( this ).data( 'resolution' ); + var displayValue = parseInt( ($( this ).data( 'display' )) ); + var rtlVal = Boolean( $( this ).data( 'rtl' ) ); + var floatMark = ($( this ).data( 'float-mark' )); + var forced = Boolean($( this ).data( 'forced' )); + + var rtl; + if ( rtlVal === true ) { + rtl = 'rtl'; + } else { + rtl = 'ltr'; + } + + // range array + var range = [minVal, maxVal]; + + // Set default values for dual slides. + var startTwo = [defValOne, defValTwo]; + + // Set default value for single slide + var startOne = [defValOne]; + + var inputOne, inputTwo; + if ( displayValue == DISPLAY_TEXT ) { + defClassOne = el.find( '.redux-slider-input-one-' + mainID ); + defClassTwo = el.find( '.redux-slider-input-two-' + mainID ); + + inputOne = defClassOne; + inputTwo = defClassTwo; + } else if ( displayValue == DISPLAY_SELECT ) { + defClassOne = el.find( '.redux-slider-select-one-' + mainID ); + defClassTwo = el.find( '.redux-slider-select-two-' + mainID ); + + redux.field_objects.slider.loadSelect( defClassOne, minVal, maxVal, resVal, stepVal ); + + if ( handles === 2 ) { + redux.field_objects.slider.loadSelect( defClassTwo, minVal, maxVal, resVal, stepVal ); + } + + } else if ( displayValue == DISPLAY_LABEL ) { + defClassOne = el.find( '#redux-slider-label-one-' + mainID ); + defClassTwo = el.find( '#redux-slider-label-two-' + mainID ); + } else if ( displayValue == DISPLAY_NONE ) { + defClassOne = el.find( '.redux-slider-value-one-' + mainID ); + defClassTwo = el.find( '.redux-slider-value-two-' + mainID ); + } + + var classOne, classTwo; + if ( displayValue == DISPLAY_LABEL ) { + var x = [defClassOne, 'html']; + var y = [defClassTwo, 'html']; + + classOne = [x]; + classTwo = [x, y]; + } else { + classOne = [defClassOne]; + classTwo = [defClassOne, defClassTwo]; + } + + if ( handles === 2 ) { + start = startTwo; + toClass = classTwo; + connectVal = true; + } else { + start = startOne; + toClass = classOne; + connectVal = 'lower'; + } + + var slider = $( this ).noUiSlider( + { + range: range, + start: start, + handles: handles, + step: stepVal, + connect: connectVal, + behaviour: "tap-drag", + direction: rtl, + serialization: { + resolution: resVal, + to: toClass, + mark: floatMark, + }, + slide: function() { + if ( displayValue == DISPLAY_LABEL ) { + if ( handles === 2 ) { + var inpSliderVal = slider.val(); + el.find( 'input.redux-slider-value-one-' + mainID ).attr( + 'value', inpSliderVal[0] + ); + el.find( 'input.redux-slider-value-two-' + mainID ).attr( + 'value', inpSliderVal[1] + ); + } else { + el.find( 'input.redux-slider-value-one-' + mainID ).attr( + 'value', slider.val() + ); + } + } + + if ( displayValue == DISPLAY_SELECT ) { + if ( handles === 2 ) { + el.find( '.redux-slider-select-one' ).select2( 'val', slider.val()[0] ); + el.find( '.redux-slider-select-two' ).select2( 'val', slider.val()[1] ); + } else { + el.find( '.redux-slider-select-one' ).select2( 'val', slider.val() ); + } + } + + redux_change( $( this ).parents( '.redux-field-container:first' ).find( 'input' ) ); + } + } + ); + + if ( displayValue === DISPLAY_TEXT ) { + inputOne.keydown( + function( e ) { + + var sliderOne = slider.val(); + var value = parseInt( sliderOne[0] ); + + switch ( e.which ) { + case 38: + slider.val( [value + 1, null] ); + break; + case 40: + slider.val( [value - 1, null] ); + break; + case 13: + e.preventDefault(); + break; + } + } + ); + + if ( handles === 2 ) { + inputTwo.keydown( + function( e ) { + var sliderTwo = slider.val(); + var value = parseInt( sliderTwo[1] ); + + switch ( e.which ) { + case 38: + slider.val( [null, value + 1] ); + break; + case 40: + slider.val( [null, value - 1] ); + break; + case 13: + e.preventDefault(); + break; + } + } + ); + } + } + } + ); + + var default_params = { + width: 'resolve', + triggerChange: true, + allowClear: true + }; + + var select2_handle = el.find( '.select2_params' ); + if ( select2_handle.size() > 0 ) { + var select2_params = select2_handle.val(); + + select2_params = JSON.parse( select2_params ); + default_params = $.extend( {}, default_params, select2_params ); + } + + el.find( 'select.redux-slider-select-one, select.redux-slider-select-two' ).select2( default_params ); + + } + ); + + }; + + // Return true for float value, false otherwise + redux.field_objects.slider.isFloat = function( mixed_var ) { + return +mixed_var === mixed_var && (!(isFinite( mixed_var ))) || Boolean( (mixed_var % 1) ); + }; + + // Return number of integers after the decimal point. + redux.field_objects.slider.decimalCount = function( res ) { + var q = res.toString().split( '.' ); + return q[1].length; + }; + + redux.field_objects.slider.loadSelect = function( myClass, min, max, res, step ) { + + //var j = step + ((decCount ) - (step )); // 18; + + for ( var i = min; i <= max; i = i + res ) { + //var step = 2; + + //if (j === (step + ((decCount ) - (step )))) { + var n = i; + if ( redux.field_objects.slider.isFloat( res ) ) { + var decCount = redux.field_objects.slider.decimalCount( res ); + n = i.toFixed( decCount ); + } + + $( myClass ).append( + '' + ); + //j = 0; + //} + //j++; + } + }; + + +})( jQuery ); diff --git a/redux/ReduxCore/inc/fields/slider/field_slider.min.js b/redux/ReduxCore/inc/fields/slider/field_slider.min.js new file mode 100644 index 0000000..6d83abf --- /dev/null +++ b/redux/ReduxCore/inc/fields/slider/field_slider.min.js @@ -0,0 +1 @@ +!function(F){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.slider=redux.field_objects.slider||{},F(document).ready(function(){}),redux.field_objects.slider.init=function(e){e||(e=F(document).find(".redux-group-tab:visible").find(".redux-container-slider:visible")),F(e).each(function(){var y=F(this),e=y;if(y.hasClass("redux-field-container")||(e=y.parents(".redux-field-container:first")),!e.is(":hidden")&&e.hasClass("redux-field-init")){e.removeClass("redux-field-init"),y.find("div.redux-slider-container").each(function(){var e,i,t,d,l,r,a=F(this).data("id"),s=F(this).data("min"),n=F(this).data("max"),o=F(this).data("step"),u=F(this).data("handles"),c=F(this).data("default-one"),f=F(this).data("default-two"),v=F(this).data("resolution"),x=parseInt(F(this).data("display")),h=Boolean(F(this).data("rtl")),p=F(this).data("float-mark");Boolean(F(this).data("forced"));r=!0===h?"rtl":"ltr";var b,w,_,j,m=[s,n],g=[c,f],k=[c];if(2==x?(b=t=y.find(".redux-slider-input-one-"+a),w=d=y.find(".redux-slider-input-two-"+a)):3==x?(t=y.find(".redux-slider-select-one-"+a),d=y.find(".redux-slider-select-two-"+a),redux.field_objects.slider.loadSelect(t,s,n,v,o),2===u&&redux.field_objects.slider.loadSelect(d,s,n,v,o)):1==x?(t=y.find("#redux-slider-label-one-"+a),d=y.find("#redux-slider-label-two-"+a)):0==x&&(t=y.find(".redux-slider-value-one-"+a),d=y.find(".redux-slider-value-two-"+a)),1==x){var C=[t,"html"];_=[C],j=[C,[d,"html"]]}else _=[t],j=[t,d];l=2===u?(e=g,i=j,!0):(e=k,i=_,"lower");var S=F(this).noUiSlider({range:m,start:e,handles:u,step:o,connect:l,behaviour:"tap-drag",direction:r,serialization:{resolution:v,to:i,mark:p},slide:function(){if(1==x)if(2===u){var e=S.val();y.find("input.redux-slider-value-one-"+a).attr("value",e[0]),y.find("input.redux-slider-value-two-"+a).attr("value",e[1])}else y.find("input.redux-slider-value-one-"+a).attr("value",S.val());3==x&&(2===u?(y.find(".redux-slider-select-one").select2("val",S.val()[0]),y.find(".redux-slider-select-two").select2("val",S.val()[1])):y.find(".redux-slider-select-one").select2("val",S.val())),redux_change(F(this).parents(".redux-field-container:first").find("input"))}});2===x&&(b.keydown(function(e){var i=S.val(),t=parseInt(i[0]);switch(e.which){case 38:S.val([t+1,null]);break;case 40:S.val([t-1,null]);break;case 13:e.preventDefault()}}),2===u&&w.keydown(function(e){var i=S.val(),t=parseInt(i[1]);switch(e.which){case 38:S.val([null,t+1]);break;case 40:S.val([null,t-1]);break;case 13:e.preventDefault()}}))});var i={width:"resolve",triggerChange:!0,allowClear:!0},t=y.find(".select2_params");if(0'+a+"")}}}(jQuery); \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/slider/field_slider.php b/redux/ReduxCore/inc/fields/slider/field_slider.php new file mode 100644 index 0000000..15237df --- /dev/null +++ b/redux/ReduxCore/inc/fields/slider/field_slider.php @@ -0,0 +1,418 @@ +. + * + * @package ReduxFramework + * @subpackage Field_Slider + * @author Kevin Provance (kprovance) + * @version 2.0.0 + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( 'ReduxFramework_slider' ) ) { + class ReduxFramework_slider { + + public $parent; + public $field; + public $value; + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since ReduxFramework 3.1.8 + */ + private $display_none = 0; + private $display_label = 1; + private $display_text = 2; + private $display_select = 3; + + function __construct( $field = array(), $value = '', $parent=null ) { + + //parent::__construct( $parent->sections, $parent->args ); + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + + // Set defaults + $defaults = array( + 'handles' => 1, + 'resolution' => 1, + 'display_value' => 'text', + 'float_mark' => '.', + 'forced' => true + ); + + $this->field = wp_parse_args( $this->field, $defaults ); + + // Sanitize float mark + switch ( $this->field['float_mark'] ) { + case ',': + case '.': + break; + default: + $this->field['float_mark'] = '.'; + break; + } + + // Sanitize resolution value + $this->field['resolution'] = $this->cleanVal( $this->field['resolution'] ); + + // Sanitize handle value + switch ( $this->field['handles'] ) { + case 0: + case 1: + $this->field['handles'] = 1; + break; + default: + $this->field['handles'] = 2; + break; + } + + // Sanitize display value + switch ( $this->field['display_value'] ) { + case 'label': + $this->field['display_value'] = $this->display_label; + break; + case 'text': + default: + $this->field['display_value'] = $this->display_text; + break; + case 'select': + $this->field['display_value'] = $this->display_select; + break; + case 'none': + $this->field['display_value'] = $this->display_none; + break; + } + } + + private function cleanVal( $var ) { + if ( is_float( $var ) ) { + $cleanVar = floatval( $var ); + } else { + $cleanVar = intval( $var ); + } + + return $cleanVar; + } + + private function cleanDefault( $val ) { + if ( empty( $val ) && ! empty( $this->field['default'] ) && $this->cleanVal( $this->field['min'] ) >= 1 ) { + $val = $this->cleanVal( $this->field['default'] ); + } + + if ( empty( $val ) && $this->cleanVal( $this->field['min'] ) >= 1 ) { + $val = $this->cleanVal( $this->field['min'] ); + } + + if ( empty( $val ) ) { + $val = 0; + } + + // Extra Validation + if ( $val < $this->field['min'] ) { + $val = $this->cleanVal( $this->field['min'] ); + } else if ( $val > $this->field['max'] ) { + $val = $this->cleanVal( $this->field['max'] ); + } + + return $val; + } + + private function cleanDefaultArray( $val ) { + $one = $this->value[1]; + $two = $this->value[2]; + + if ( empty( $one ) && ! empty( $this->field['default'][1] ) && $this->cleanVal( $this->field['min'] ) >= 1 ) { + $one = $this->cleanVal( $this->field['default'][1] ); + } + + if ( empty( $one ) && $this->cleanVal( $this->field['min'] ) >= 1 ) { + $one = $this->cleanVal( $this->field['min'] ); + } + + if ( empty( $one ) ) { + $one = 0; + } + + if ( empty( $two ) && ! empty( $this->field['default'][2] ) && $this->cleanVal( $this->field['min'] ) >= 1 ) { + $two = $this->cleanVal( $this->field['default'][1] + 1 ); + } + + if ( empty( $two ) && $this->cleanVal( $this->field['min'] ) >= 1 ) { + $two = $this->cleanVal( $this->field['default'][1] + 1 ); + } + + if ( empty( $two ) ) { + $two = $this->field['default'][1] + 1; + } + + $val[0] = $one; + $val[1] = $two; + + return $val; + } + + + /** + * Clean the field data to the fields defaults given the parameters. + * + * @since Redux_Framework 3.1.8 + */ + function clean() { + + // Set min to 0 if no value is set. + $this->field['min'] = empty( $this->field['min'] ) ? 0 : $this->cleanVal( $this->field['min'] ); + + // Set max to min + 1 if empty. + $this->field['max'] = empty( $this->field['max'] ) ? $this->field['min'] + 1 : $this->cleanVal( $this->field['max'] ); + + // Set step to 1 if step is empty ot step > max. + $this->field['step'] = empty( $this->field['step'] ) || $this->field['step'] > $this->field['max'] ? 1 : $this->cleanVal( $this->field['step'] ); + + if ( 2 == $this->field['handles'] ) { + if ( ! is_array( $this->value ) ) { + $this->value[1] = 0; + $this->value[2] = 1; + } + $this->value = $this->cleanDefaultArray( $this->value ); + } else { + if ( is_array( $this->value ) ) { + $this->value = 0; + } + $this->value = $this->cleanDefault( $this->value ); + } + + // More dummy checks + //if ( ! is_array( $this->field['default'] ) && 2 == $this->field['handles'] ) { + if ( ! is_array( $this->value ) && 2 == $this->field['handles'] ) { + $this->value[0] = $this->field['min']; + $this->value[1] = $this->field['min'] + 1; + } + + //if ( is_array( $this->field['default'] ) && 1 == $this->field['handles'] ) { + if ( is_array( $this->value ) && 1 == $this->field['handles'] ) { + $this->value = $this->field['min']; + } + + } + + /** + * Enqueue Function. + * If this field requires any scripts, or css define this function and register/enqueue the scripts/css + * + * @since ReduxFramework 3.1.8 + */ + function enqueue() { + + $min = Redux_Functions::isMin(); + + wp_enqueue_style( 'select2-css' ); + + wp_enqueue_style( + 'redux-nouislider-css', + ReduxFramework::$_url . 'inc/fields/slider/vendor/nouislider/redux.jquery.nouislider.css', + array(), + '5.0.0', + 'all' + ); + + wp_register_script( + 'redux-nouislider-js', + ReduxFramework::$_url . 'inc/fields/slider/vendor/nouislider/redux.jquery.nouislider' . $min . '.js', + array( 'jquery' ), + '5.0.0', + true + ); + + wp_enqueue_script( + 'redux-field-slider-js', + ReduxFramework::$_url . 'inc/fields/slider/field_slider' . $min . '.js', + array( 'jquery', 'redux-nouislider-js', 'redux-js', 'select2-js' ), + time(), + true + ); + + if ($this->parent->args['dev_mode']) { + wp_enqueue_style( + 'redux-field-slider-css', + ReduxFramework::$_url . 'inc/fields/slider/field_slider.css', + array(), + time(), + 'all' + ); + } + } + + //function + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since ReduxFramework 0.0.4 + */ + function render() { + + $this->clean(); + + $fieldID = $this->field['id']; + $fieldName = $this->field['name'] . $this->field['name_suffix']; + //$fieldName = $this->parent->args['opt_name'] . '[' . $this->field['id'] . ']'; + + // Set handle number variable. + $twoHandles = false; + if ( 2 == $this->field['handles'] ) { + $twoHandles = true; + } + + // Set default values(s) + if ( true == $twoHandles ) { + $valOne = $this->value[0]; + $valTwo = $this->value[1]; + + $html = 'data-default-one="' . $valOne . '" '; + $html .= 'data-default-two="' . $valTwo . '" '; + + $nameOne = $fieldName . '[1]'; + $nameTwo = $fieldName . '[2]'; + + $idOne = $fieldID . '[1]'; + $idTwo = $fieldID . '[2]'; + } else { + $valOne = $this->value; + $valTwo = ''; + + $html = 'data-default-one="' . $valOne . '"'; + + $nameOne = $fieldName; + $nameTwo = ''; + + $idOne = $fieldID; + $idTwo = ''; + } + + $showInput = false; + $showLabel = false; + $showSelect = false; + + // TEXT output + if ( $this->display_text == $this->field['display_value'] ) { + $showInput = true; + echo ''; + + // LABEL output + } elseif ( $this->display_label == $this->field['display_value'] ) { + $showLabel = true; + + $labelNum = $twoHandles ? '-one' : ''; + + echo '
    +
    '; + + // SELECT output + } elseif ( $this->display_select == $this->field['display_value'] ) { + $showSelect = true; + + if ( isset( $this->field['select2'] ) ) { // if there are any let's pass them to js + $select2_params = json_encode( $this->field['select2'] ); + $select2_params = htmlspecialchars( $select2_params, ENT_QUOTES ); + + echo ''; + } + + + echo ''; + } + + // DIV output + echo + '
    +
    '; + + // Double slider output + if ( true == $twoHandles ) { + + // TEXT + if ( true == $showInput ) { + echo ''; + } + + // LABEL + if ( true == $showLabel ) { + echo '
    +
    '; + } + + // SELECT + if ( true == $showSelect ) { + echo ''; + + } + } + + // NO output (input hidden) + if ( $this->display_none == $this->field['display_value'] || $this->display_label == $this->field['display_value'] ) { + echo ''; + + // double slider hidden output + if ( true == $twoHandles ) { + echo ''; + } + } + } + } +} \ No newline at end of file diff --git a/redux/ReduxCore/inc/fields/slider/field_slider.scss b/redux/ReduxCore/inc/fields/slider/field_slider.scss new file mode 100644 index 0000000..f6f456b --- /dev/null +++ b/redux/ReduxCore/inc/fields/slider/field_slider.scss @@ -0,0 +1,82 @@ +.redux-container-slider { + .redux-slider-container { + margin-left: 25px; + margin-right: 25px; + width: 200px; + display: inline-block; + vertical-align: middle; + } + + .redux-slider-input, + .redux-slider-select-one, + .redux-slider-select-two { + width: 100px !important; + text-align: center; + } + + .redux-slider-label { + position: absolute; + margin-left: -5px; + } + + .redux-slider-label-one { + position: absolute; + margin-left: -22px; + } + + .redux-slider-label-two { + position: absolute; + margin-top: -21px; + margin-left: 245px; + } +} + +@media screen and (max-width: 782px) { + .redux-container-slider { + input { + display: inline-block !important; + } + } +} + +// Select Slider +@media screen and (max-width: 570px) { + .redux-container-slider { + text-align: center; + + input, + select, + .redux-slider-label, + .select2-container { + display: block !important; + position: inherit; + margin: 10px auto; + } + + .redux-slider-container { + margin-top: 3px; + width: 80%; + } + } +} + +.wp-customizer { + .redux-container-slider { + .redux-slider-label { + float: left; + position: inherit; + width: 25%; + text-align: center; + margin-left:0; + } + .redux-slider-input, .redux-slider-select-one, .redux-slider-select-two { + width: 25% !important; + } + .redux-slider-container { + width: 70%; + margin-right: 0; + margin-left: 5%; + } + } +} + diff --git a/redux/ReduxCore/inc/fields/slider/vendor/nouislider/redux.jquery.nouislider.css b/redux/ReduxCore/inc/fields/slider/vendor/nouislider/redux.jquery.nouislider.css new file mode 100644 index 0000000..995bbd1 --- /dev/null +++ b/redux/ReduxCore/inc/fields/slider/vendor/nouislider/redux.jquery.nouislider.css @@ -0,0 +1,172 @@ + +/* Functional styling; + * These styles are required for noUiSlider to function. + * You don't need to change these rules to apply your design. + */ +.noUi-target, +.noUi-target * { +-webkit-touch-callout: none; +-webkit-user-select: none; +-ms-touch-action: none; +-ms-user-select: none; +-moz-user-select: none; +-moz-box-sizing: border-box; + box-sizing: border-box; +} +.noUi-base { + width: 100%; + height: 100%; + position: relative; +} +.noUi-origin { + position: absolute; + right: 0; + top: 0; + left: 0; + bottom: 0; +} +.noUi-handle { + position: relative; + z-index: 1; +} +.noUi-stacking .noUi-handle { +/* This class is applied to the lower origin when + its values is > 50%. */ + z-index: 10; +} +.noUi-stacking + .noUi-origin { +/* Fix stacking order in IE7, which incorrectly + creates a new context for the origins. */ + *z-index: -1; +} +.noUi-state-tap .noUi-origin { +-webkit-transition: left 0.3s, top 0.3s; + transition: left 0.3s, top 0.3s; +} +.noUi-state-drag * { + cursor: inherit !important; +} + +/* Slider size and handle placement; + */ +.noUi-horizontal { + height: 18px; +} +.noUi-horizontal .noUi-handle { + width: 34px; + height: 28px; + left: -17px; + top: -6px; +} +.noUi-horizontal.noUi-extended { + padding: 0 15px; +} +.noUi-horizontal.noUi-extended .noUi-origin { + right: -15px; +} +.noUi-vertical { + width: 18px; +} +.noUi-vertical .noUi-handle { + width: 28px; + height: 34px; + left: -6px; + top: -17px; +} +.noUi-vertical.noUi-extended { + padding: 15px 0; +} +.noUi-vertical.noUi-extended .noUi-origin { + bottom: -15px; +} + +/* Styling; + */ +.noUi-background { + background: #FAFAFA; + box-shadow: inset 0 1px 1px #f0f0f0; +} +.noUi-connect { + background: #3FB8AF; + box-shadow: inset 0 0 3px rgba(51,51,51,0.45); +-webkit-transition: background 450ms; + transition: background 450ms; +} +.noUi-origin { + border-radius: 2px; +} +.noUi-target { + border-radius: 4px; + border: 1px solid #D3D3D3; + box-shadow: inset 0 1px 1px #F0F0F0, 0 3px 6px -5px #BBB; +} +.noUi-target.noUi-connect { + box-shadow: inset 0 0 3px rgba(51,51,51,0.45), 0 3px 6px -5px #BBB; +} + +/* Handles and cursors; + */ +.noUi-dragable { + cursor: w-resize; +} +.noUi-vertical .noUi-dragable { + cursor: n-resize; +} +.noUi-handle { + border: 1px solid #D9D9D9; + border-radius: 3px; + background: #FFF; + cursor: default; + box-shadow: inset 0 0 1px #FFF, + inset 0 1px 7px #EBEBEB, + 0 3px 6px -3px #BBB; +} +.noUi-active { + box-shadow: inset 0 0 1px #FFF, + inset 0 1px 7px #DDD, + 0 3px 6px -3px #BBB; +} + +/* Handle stripes; + */ +.noUi-handle:before, +.noUi-handle:after { + content: ""; + display: block; + position: absolute; + height: 14px; + width: 1px; + background: #E8E7E6; + left: 14px; + top: 6px; +} +.noUi-handle:after { + left: 17px; +} +.noUi-vertical .noUi-handle:before, +.noUi-vertical .noUi-handle:after { + width: 14px; + height: 1px; + left: 6px; + top: 14px; +} +.noUi-vertical .noUi-handle:after { + top: 17px; +} + +/* Disabled state; + */ +[disabled].noUi-connect, +[disabled] .noUi-connect { + background: #B8B8B8; +} +[disabled] .noUi-handle { + cursor: not-allowed; +} + +/* Blocked state; + */ +.noUi-state-blocked.noUi-connect, +.noUi-state-blocked .noUi-connect { + background: #4FDACF; +} diff --git a/redux/ReduxCore/inc/fields/slider/vendor/nouislider/redux.jquery.nouislider.js b/redux/ReduxCore/inc/fields/slider/vendor/nouislider/redux.jquery.nouislider.js new file mode 100644 index 0000000..4c05d20 --- /dev/null +++ b/redux/ReduxCore/inc/fields/slider/vendor/nouislider/redux.jquery.nouislider.js @@ -0,0 +1,1420 @@ +/*! $.noUiSlider + @version 5.0.0 + @author Leon Gersen https://twitter.com/LeonGersen + @license WTFPL http://www.wtfpl.net/about/ + @documentation http://refreshless.com/nouislider/ +*/ + +// ==ClosureCompiler== +// @externs_url http://refreshless.com/externs/jquery-1.8.js +// @compilation_level ADVANCED_OPTIMIZATIONS +// @warning_level VERBOSE +// ==/ClosureCompiler== + +/*jshint laxcomma: true */ +/*jshint smarttabs: true */ +/*jshint sub: true */ + +/*jslint browser: true */ +/*jslint continue: true */ +/*jslint plusplus: true */ +/*jslint white: true */ +/*jslint sub: true */ + +(function( $ ){ + + 'use strict'; + + if ( $['zepto'] && !$.fn.removeData ) { + throw new ReferenceError('Zepto is loaded without the data module.'); + } + + $.fn['noUiSlider'] = function( options, rebuild ){ + + var + // Cache the document and body selectors; + doc = $(document) + ,body = $('body') + + // Namespace for binding and unbinding slider events; + ,namespace = '.nui' + + // Copy of the current value function; + ,$VAL = $.fn.val + + // Re-usable list of classes; + ,clsList = [ + /* 0 */ 'noUi-base' + /* 1 */ ,'noUi-origin' + /* 2 */ ,'noUi-handle' + /* 3 */ ,'noUi-input' + /* 4 */ ,'noUi-active' + /* 5 */ ,'noUi-state-tap' + /* 6 */ ,'noUi-target' + /* 7 */ ,'-lower' + /* 8 */ ,'-upper' + /* 9 */ ,'noUi-connect' + /* 10 */ ,'noUi-horizontal' + /* 11 */ ,'noUi-vertical' + /* 12 */ ,'noUi-background' + /* 13 */ ,'noUi-stacking' + /* 14 */ ,'noUi-block' + /* 15 */ ,'noUi-state-blocked' + /* 16 */ ,'noUi-ltr' + /* 17 */ ,'noUi-rtl' + /* 18 */ ,'noUi-dragable' + /* 19 */ ,'noUi-extended' + /* 20 */ ,'noUi-state-drag' + ] + + // Determine the events to bind. IE11 implements pointerEvents without + // a prefix, which breaks compatibility with the IE10 implementation. + ,actions = window.navigator['pointerEnabled'] ? { + start: 'pointerdown' + ,move: 'pointermove' + ,end: 'pointerup' + } : window.navigator['msPointerEnabled'] ? { + start: 'MSPointerDown' + ,move: 'MSPointerMove' + ,end: 'MSPointerUp' + } : { + start: 'mousedown touchstart' + ,move: 'mousemove touchmove' + ,end: 'mouseup touchend' + }; + + +// Percentage calculation + + // (percentage) How many percent is this value of this range? + function fromPercentage ( range, value ) { + return (value * 100) / ( range[1] - range[0] ); + } + + // (percentage) Where is this value on this range? + function toPercentage ( range, value ) { + return fromPercentage( range, range[0] < 0 ? + value + Math.abs(range[0]) : + value - range[0] ); + } + + // (value) How much is this percentage on this range? + function isPercentage ( range, value ) { + return ((value * ( range[1] - range[0] )) / 100) + range[0]; + } + + +// Type tests + + // Test in an object is an instance of jQuery or Zepto. + function isInstance ( a ) { + return a instanceof $ || ( $['zepto'] && $['zepto']['isZ'](a) ); + } + + // Checks whether a value is numerical. + function isNumeric ( a ) { + return !isNaN( parseFloat( a ) ) && isFinite( a ); + } + + +// General helper functions + + // Test an array of objects, and calls them if they are a function. + function call ( functions, scope ) { + + // Allow the passing of an unwrapped function. + // Leaves other code a more comprehensible. + if( !$.isArray( functions ) ){ + functions = [ functions ]; + } + + $.each( functions, function(){ + if (typeof this === 'function') { + this.call(scope); + } + }); + } + + // Returns a proxy to set a target using the public value method. + function setN ( target, number ) { + + return function(){ + + // Determine the correct position to set, + // leave the other one unchanged. + var val = [null, null]; + val[ number ] = $(this).val(); + + // Trigger the 'set' callback + target.val(val, true); + }; + } + + // Round a value to the closest 'to'. + function closest ( value, to ){ + return Math.round(value / to) * to; + } + + // Format output value to specified standards. + function format ( value, options ) { + + // Round the value to the resolution that was set + // with the serialization options. + value = value.toFixed( options['decimals'] ); + + // Rounding away decimals might cause a value of -0 + // when using very small ranges. Remove those cases. + if ( parseFloat(value) === 0 ) { + value = value.replace('-0', '0'); + } + + // Apply the proper decimal mark to the value. + return value.replace( '.', options['serialization']['mark'] ); + } + + // Determine the handle closest to an event. + function closestHandle ( handles, location, style ) { + + if ( handles.length === 1 ) { + return handles[0]; + } + + var total = handles[0].offset()[style] + + handles[1].offset()[style]; + + return handles[ location < total / 2 ? 0 : 1 ]; + } + + // Round away small numbers in floating point implementation. + function digits ( value, round ) { + return parseFloat(value.toFixed(round)); + } + +// Event abstraction + + // Provide a clean event with standardized offset values. + function fixEvent ( e ) { + + // Prevent scrolling and panning on touch events, while + // attempting to slide. The tap event also depends on this. + e.preventDefault(); + + // Filter the event to register the type, which can be + // touch, mouse or pointer. Offset changes need to be + // made on an event specific basis. + var touch = e.type.indexOf('touch') === 0 + ,mouse = e.type.indexOf('mouse') === 0 + ,pointer = e.type.indexOf('pointer') === 0 + ,x,y, event = e; + + // IE10 implemented pointer events with a prefix; + if ( e.type.indexOf('MSPointer') === 0 ) { + pointer = true; + } + + // Get the originalEvent, if the event has been wrapped + // by jQuery. Zepto doesn't wrap the event. + if ( e.originalEvent ) { + e = e.originalEvent; + } + + if ( touch ) { + // noUiSlider supports one movement at a time, + // so we can select the first 'changedTouch'. + x = e.changedTouches[0].pageX; + y = e.changedTouches[0].pageY; + } + if ( mouse || pointer ) { + + // Polyfill the pageXOffset and pageYOffset + // variables for IE7 and IE8; + if( !pointer && window.pageXOffset === undefined ){ + window.pageXOffset = document.documentElement.scrollLeft; + window.pageYOffset = document.documentElement.scrollTop; + } + + x = e.clientX + window.pageXOffset; + y = e.clientY + window.pageYOffset; + } + + return $.extend( event, { + 'pointX': x + ,'pointY': y + ,cursor: mouse + }); + } + + // Handler for attaching events trough a proxy + function attach ( events, element, callback, pass ) { + + var target = pass.target; + + // Add the noUiSlider namespace to all events. + events = events.replace( /\s/g, namespace + ' ' ) + namespace; + + // Bind a closure on the target. + return element.on( events, function( e ){ + + // jQuery and Zepto handle unset attributes differently. + var disabled = target.attr('disabled'); + disabled = !( disabled === undefined || disabled === null ); + + // Test if there is anything that should prevent an event + // from being handled, such as a disabled state or an active + // 'tap' transition. + if( target.hasClass('noUi-state-tap') || disabled ) { + return false; + } + + // Call the event handler with three arguments: + // - The event; + // - An object with data for the event; + // - The slider options; + // Having the slider options as a function parameter prevents + // getting it in every function, which muddies things up. + callback ( + fixEvent( e ) + ,pass + ,target.data('base').data('options') + ); + }); + } + + +// Serialization and value storage + + // Store a value on all serialization targets, or get the current value. + function serialize ( a ) { + + /*jshint validthis: true */ + + // Re-scope target for availability within .each; + var target = this.target; + + // Get the value for this handle + if ( a === undefined ) { + return this.element.data('value'); + } + + // Write the value to all serialization objects + // or store a new value on the handle + if ( a === true ) { + a = this.element.data('value'); + } else { + this.element.data('value', a); + } + + // Prevent a serialization call if the value wasn't initialized. + if ( a === undefined ) { + return; + } + + // If the provided element was a function, + // call it with the slider as scope. Otherwise, + // simply call the function on the object. + $.each( this.elements, function() { + if ( typeof this === 'function' ) { + this.call(target, a); + } else { + this[0][this[1]](a); + } + }); + } + + // Map serialization to [ element, method ]. Attach events where required. + function storeElement ( handle, item, number ) { + + // Add a change event to the supplied jQuery objects, + // which triggers the value-setting function on the target. + if ( isInstance( item ) ) { + + var elements = [], target = handle.data('target'); + + // Link the field to the other handle if the + // slider is inverted. + if ( handle.data('options').direction ) { + number = number ? 0 : 1; + } + + // Loop all items so the change event is properly bound, + // and the items can individually be added to the array. + item.each(function(){ + + // Bind the change event. + $(this).on('change' + namespace, setN( target, number )); + + // Store the element with the proper handler. + elements.push([ $(this), 'val' ]); + }); + + return elements; + } + + // Append a new input to the noUiSlider base. + // Prevent the change event from flowing upward. + if ( typeof item === 'string' ) { + + item = [ $('') + .appendTo(handle) + .addClass(clsList[3]) + .change(function ( e ) { + e.stopPropagation(); + }), 'val']; + } + + return [item]; + } + + // Access point and abstraction for serialization. + function store ( handle, i, serialization ) { + + var elements = []; + + // Loops all items in the provided serialization setting, + // add the proper events to them or create new input fields, + // and add them as data to the handle so they can be kept + // in sync with the slider value. + $.each( serialization['to'][i], function( index ){ + elements = elements.concat( + storeElement( handle, serialization['to'][i][index], i ) + ); + }); + + return { + element: handle + ,elements: elements + ,target: handle.data('target') + ,'val': serialize + }; + } + + +// Handle placement + + // Fire callback on unsuccessful handle movement. + function block ( base, stateless ) { + + var target = base.data('target'); + + if ( !target.hasClass(clsList[14]) ){ + + // The visual effects should not always be applied. + if ( !stateless ) { + target.addClass(clsList[15]); + setTimeout(function(){ + target.removeClass(clsList[15]); + }, 450); + } + + target.addClass(clsList[14]); + call( base.data('options').block, target ); + } + } + + // Change inline style and apply proper classes. + function placeHandle ( handle, to ) { + + var settings = handle.data('options'); + + to = digits(to, 7); + + // If the slider can move, remove the class + // indicating the block state. + handle.data('target').removeClass(clsList[14]); + + // Set handle to new location + handle.css( settings['style'], to + '%' ).data('pct', to); + + // Force proper handle stacking + if ( handle.is(':first-child') ) { + handle.toggleClass(clsList[13], to > 50 ); + } + + if ( settings['direction'] ) { + to = 100 - to; + } + + // Write the value to the serialization object. + handle.data('store').val( + format ( isPercentage( settings['range'], to ), settings ) + ); + } + + // Test suggested values and apply margin, step. + function setHandle ( handle, to ) { + + var base = handle.data('base'), settings = base.data('options'), + handles = base.data('handles'), lower = 0, upper = 100; + + // Catch invalid user input + if ( !isNumeric( to ) ){ + return false; + } + + // Handle the step option. + if ( settings['step'] ){ + to = closest( to, settings['step'] ); + } + + if ( handles.length > 1 ){ + if ( handle[0] !== handles[0][0] ) { + lower = digits(handles[0].data('pct')+settings['margin'],7); + } else { + upper = digits(handles[1].data('pct')-settings['margin'],7); + } + } + + // Limit position to boundaries. When the handles aren't set yet, + // they return -1 as a percentage value. + to = Math.min( Math.max( to, lower ), upper < 0 ? 100 : upper ); + + // Stop handling this call if the handle can't move past another. + // Return an array containing the hit limit, so the caller can + // provide feedback. ( block callback ). + if ( to === handle.data('pct') ) { + return [!lower ? false : lower, upper === 100 ? false : upper]; + } + + placeHandle ( handle, to ); + return true; + } + + // Handles movement by tapping + function jump ( base, handle, to, callbacks ) { + + // Flag the slider as it is now in a transitional state. + // Transition takes 300 ms, so re-enable the slider afterwards. + base.addClass(clsList[5]); + setTimeout(function(){ + base.removeClass(clsList[5]); + }, 300); + + // Move the handle to the new position. + setHandle( handle, to ); + + // Trigger the 'slide' and 'set' callbacks, + // pass the target so that it is 'this'. + call( callbacks, base.data('target') ); + + base.data('target').change(); + } + + +// Event handlers + + // Handle movement on document for handle and range drag. + function move ( event, Dt, Op ) { + + // Map event movement to a slider percentage. + var handles = Dt.handles, limits, + proposal = event[ Dt.point ] - Dt.start[ Dt.point ]; + + proposal = ( proposal * 100 ) / Dt.size; + + if ( handles.length === 1 ) { + + // Run handle placement, receive true for success or an + // array with potential limits. + limits = setHandle( handles[0], Dt.positions[0] + proposal ); + + if ( limits !== true ) { + + if ( $.inArray ( handles[0].data('pct'), limits ) >= 0 ){ + block ( Dt.base, !Op['margin'] ); + } + return; + } + + } else { + + // Dragging the range could be implemented by forcing the + // 'move' event on both handles, but this solution proved + // lagging on slower devices, resulting in range errors. The + // slightly ugly solution below is considerably faster, and + // it can't move the handle out of sync. Bypass the standard + // setting method, as other checks are needed. + + var l1, u1, l2, u2; + + // Round the proposal to the step setting. + if ( Op['step'] ) { + proposal = closest( proposal, Op['step'] ); + } + + // Determine the new position, store it twice. Once for + // limiting, once for checking whether placement should occur. + l1 = l2 = Dt.positions[0] + proposal; + u1 = u2 = Dt.positions[1] + proposal; + + // Round the values within a sensible range. + if ( l1 < 0 ) { + u1 += -1 * l1; + l1 = 0; + } else if ( u1 > 100 ) { + l1 -= ( u1 - 100 ); + u1 = 100; + } + + // Don't perform placement if no handles are to be changed. + // Check if the lowest value is set to zero. + if ( l2 < 0 && !l1 && !handles[0].data('pct') ) { + return; + } + // The highest value is limited to 100%. + if ( u1 === 100 && u2 > 100 && handles[1].data('pct') === 100 ){ + return; + } + + placeHandle ( handles[0], l1 ); + placeHandle ( handles[1], u1 ); + } + + // Trigger the 'slide' event, if the handle was moved. + call( Op['slide'], Dt.target ); + } + + // Unbind move events on document, call callbacks. + function end ( event, Dt, Op ) { + + // The handle is no longer active, so remove the class. + if ( Dt.handles.length === 1 ) { + Dt.handles[0].data('grab').removeClass(clsList[4]); + } + + // Remove cursor styles and text-selection events bound to the body. + if ( event.cursor ) { + body.css('cursor', '').off( namespace ); + } + + // Unbind the move and end events, which are added on 'start'. + doc.off( namespace ); + + // Trigger the change event. + Dt.target.removeClass( clsList[14] +' '+ clsList[20]).change(); + + // Trigger the 'end' callback. + call( Op['set'], Dt.target ); + } + + // Bind move events on document. + function start ( event, Dt, Op ) { + + // Mark the handle as 'active' so it can be styled. + if( Dt.handles.length === 1 ) { + Dt.handles[0].data('grab').addClass(clsList[4]); + } + + // A drag should never propagate up to the 'tap' event. + event.stopPropagation(); + + // Attach the move event. + attach ( actions.move, doc, move, { + start: event + ,base: Dt.base + ,target: Dt.target + ,handles: Dt.handles + ,positions: [ Dt.handles[0].data('pct') + ,Dt.handles[ Dt.handles.length - 1 ].data('pct') ] + ,point: Op['orientation'] ? 'pointY' : 'pointX' + ,size: Op['orientation'] ? Dt.base.height() : Dt.base.width() + }); + + // Unbind all movement when the drag ends. + attach ( actions.end, doc, end, { + target: Dt.target + ,handles: Dt.handles + }); + + // Text selection isn't an issue on touch devices, + // so adding additional callbacks isn't required. + if ( event.cursor ) { + + // Prevent the 'I' cursor and extend the range-drag cursor. + body.css('cursor', $(event.target).css('cursor')); + + // Mark the target with a dragging state. + if ( Dt.handles.length > 1 ) { + Dt.target.addClass(clsList[20]); + } + + // Prevent text selection when dragging the handles. + body.on('selectstart' + namespace, function( ){ + return false; + }); + } + } + + // Move closest handle to tapped location. + function tap ( event, Dt, Op ) { + + var base = Dt.base, handle, to, point, size; + + // The tap event shouldn't propagate up to trigger 'edge'. + event.stopPropagation(); + + // Determine the direction of the slider. + if ( Op['orientation'] ) { + point = event['pointY']; + size = base.height(); + } else { + point = event['pointX']; + size = base.width(); + } + + // Find the closest handle and calculate the tapped point. + handle = closestHandle( base.data('handles'), point, Op['style'] ); + to = (( point - base.offset()[ Op['style'] ] ) * 100 ) / size; + + // The set handle to the new position. + jump( base, handle, to, [ Op['slide'], Op['set'] ]); + } + + // Move handle to edges when target gets tapped. + function edge ( event, Dt, Op ) { + + var handles = Dt.base.data('handles'), to, i; + + i = Op['orientation'] ? event['pointY'] : event['pointX']; + i = i < Dt.base.offset()[Op['style']]; + + to = i ? 0 : 100; + i = i ? 0 : handles.length - 1; + + jump ( Dt.base, handles[i], to, [ Op['slide'], Op['set'] ]); + } + +// API + + // Validate and standardize input. + function test ( input, sliders ){ + + /* Every input option is tested and parsed. This'll prevent + endless validation in internal methods. These tests are + structured with an item for every option available. An + option can be marked as required by setting the 'r' flag. + The testing function is provided with three arguments: + - The provided value for the option; + - A reference to the options object; + - The name for the option; + + The testing function returns false when an error is detected, + or true when everything is OK. It can also modify the option + object, to make sure all values can be correctly looped elsewhere. */ + + function values ( a ) { + + if ( a.length !== 2 ){ + return false; + } + + // Convert the array to floats + a = [ parseFloat(a[0]), parseFloat(a[1]) ]; + + // Test if all values are numerical + if( !isNumeric(a[0]) || !isNumeric(a[1]) ){ + return false; + } + + // The lowest value must really be the lowest value. + if( a[1] < a[0] ){ + return false; + } + + return a; + } + + var serialization = { + resolution: function(q,o){ + + // Parse the syntactic sugar that is the serialization + // resolution option to a usable integer. + // Checking for a string '1', since the resolution needs + // to be cast to a string to split in on the period. + switch( q ){ + case 1: + case 0.1: + case 0.01: + case 0.001: + case 0.0001: + case 0.00001: + q = q.toString().split('.'); + o['decimals'] = q[0] === '1' ? 0 : q[1].length; + break; + case undefined: + o['decimals'] = 2; + break; + default: + return false; + } + + return true; + } + ,mark: function(q,o,w){ + + if ( !q ) { + o[w]['mark'] = '.'; + return true; + } + + switch( q ){ + case '.': + case ',': + return true; + default: + return false; + } + } + ,to: function(q,o,w){ + + // Checks whether a variable is a candidate to be a + // valid serialization target. + function ser(r){ + return isInstance ( r ) || + typeof r === 'string' || + typeof r === 'function' || + r === false || + ( isInstance ( r[0] ) && + typeof r[0][r[1]] === 'function' ); + } + + // Flatten the serialization array into a reliable + // set of elements, which can be tested and looped. + function filter ( value ) { + + var items = [[],[]]; + + // If a single value is provided it can be pushed + // immediately. + if ( ser(value) ) { + items[0].push(value); + } else { + + // Otherwise, determine whether this is an + // array of single elements or sets. + $.each(value, function(i, val) { + + // Don't handle an overflow of elements. + if( i > 1 ){ + return; + } + + // Decide if this is a group or not + if( ser(val) ){ + items[i].push(val); + } else { + items[i] = items[i].concat(val); + } + }); + } + + return items; + } + + if ( !q ) { + o[w]['to'] = [[],[]]; + } else { + + var i, j; + + // Flatten the serialization array + q = filter ( q ); + + // Reverse the API for RTL sliders. + if ( o['direction'] && q[1].length ) { + q.reverse(); + } + + // Test all elements in the flattened array. + for ( i = 0; i < o['handles']; i++ ) { + for ( j = 0; j < q[i].length; j++ ) { + + // Return false on invalid input + if( !ser(q[i][j]) ){ + return false; + } + + // Remove 'false' elements, since those + // won't be handled anyway. + if( !q[i][j] ){ + q[i].splice(j, 1); + } + } + } + + // Write the new values back + o[w]['to'] = q; + } + + return true; + } + }, tests = { + /* Handles. + * Has default, can be 1 or 2. + */ + 'handles': { + 'r': true + ,'t': function(q){ + q = parseInt(q, 10); + return ( q === 1 || q === 2 ); + } + } + /* Range. + * Must be an array of two numerical floats, + * which can't be identical. + */ + ,'range': { + 'r': true + ,'t': function(q,o,w){ + + o[w] = values(q); + + // The values can't be identical. + return o[w] && o[w][0] !== o[w][1]; + } + } + /* Start. + * Must be an array of two numerical floats when handles = 2; + * Uses 'range' test. + * When handles = 1, a single float is also allowed. + */ + ,'start': { + 'r': true + ,'t': function(q,o,w){ + if( o['handles'] === 1 ){ + if( $.isArray(q) ){ + q = q[0]; + } + q = parseFloat(q); + o.start = [q]; + return isNumeric(q); + } + + o[w] = values(q); + return !!o[w]; + } + } + /* Connect. + * Must be true or false when handles = 2; + * Can use 'lower' and 'upper' when handles = 1. + */ + ,'connect': { + 'r': true + ,'t': function(q,o,w){ + + if ( q === 'lower' ) { + o[w] = 1; + } else if ( q === 'upper' ) { + o[w] = 2; + } else if ( q === true ) { + o[w] = 3; + } else if ( q === false ) { + o[w] = 0; + } else { + return false; + } + + return true; + } + } + /* Connect. + * Will default to horizontal, not required. + */ + ,'orientation': { + 't': function(q,o,w){ + switch (q){ + case 'horizontal': + o[w] = 0; + break; + case 'vertical': + o[w] = 1; + break; + default: return false; + } + return true; + } + } + /* Margin. + * Must be a float, has a default value. + */ + ,'margin': { + 'r': true + ,'t': function(q,o,w){ + q = parseFloat(q); + o[w] = fromPercentage(o['range'], q); + return isNumeric(q); + } + } + /* Direction. + * Required, can be 'ltr' or 'rtl'. + */ + ,'direction': { + 'r': true + ,'t': function(q,o,w){ + + switch ( q ) { + case 'ltr': o[w] = 0; + break; + case 'rtl': o[w] = 1; + // Invert connection for RTL sliders; + o['connect'] = [0,2,1,3][o['connect']]; + break; + default: + return false; + } + + return true; + } + } + /* Behaviour. + * Required, defines responses to tapping and + * dragging elements. + */ + ,'behaviour': { + 'r': true + ,'t': function(q,o,w){ + + o[w] = { + 'tap': q !== (q = q.replace('tap', '')) + ,'extend': q !== (q = q.replace('extend', '')) + ,'drag': q !== (q = q.replace('drag', '')) + ,'fixed': q !== (q = q.replace('fixed', '')) + }; + + return !q.replace('none','').replace(/\-/g,''); + } + } + /* Serialization. + * Required, but has default. Must be an array + * when using two handles, can be a single value when using + * one handle. 'mark' can be period (.) or comma (,). + */ + ,'serialization': { + 'r': true + ,'t': function(q,o,w){ + + return serialization.to( q['to'], o, w ) && + serialization.resolution( q['resolution'], o ) && + serialization.mark( q['mark'], o, w ); + } + } + /* Slide. + * Not required. Must be a function. + */ + ,'slide': { + 't': function(q){ + return $.isFunction(q); + } + } + /* Set. + * Not required. Must be a function. + * Tested using the 'slide' test. + */ + ,'set': { + 't': function(q){ + return $.isFunction(q); + } + } + /* Block. + * Not required. Must be a function. + * Tested using the 'slide' test. + */ + ,'block': { + 't': function(q){ + return $.isFunction(q); + } + } + /* Step. + * Not required. + */ + ,'step': { + 't': function(q,o,w){ + q = parseFloat(q); + o[w] = fromPercentage ( o['range'], q ); + return isNumeric(q); + } + } + }; + + $.each( tests, function( name, test ){ + + /*jslint devel: true */ + + var value = input[name], isSet = value !== undefined; + + // If the value is required but not set, fail. + if( ( test['r'] && !isSet ) || + // If the test returns false, fail. + ( isSet && !test['t']( value, input, name ) ) ){ + + // For debugging purposes it might be very useful to know + // what option caused the trouble. Since throwing an error + // will prevent further script execution, log the error + // first. Test for console, as it might not be available. + if( console && console.log && console.group ){ + console.group( 'Invalid noUiSlider initialisation:' ); + console.log( 'Option:\t', name ); + console.log( 'Value:\t', value ); + console.log( 'Slider(s):\t', sliders ); + console.groupEnd(); + } + + throw new RangeError('noUiSlider'); + } + }); + } + + // Parse options, add classes, attach events, create HTML. + function create ( options ) { + + /*jshint validthis: true */ + + // Store the original set of options on all targets, + // so they can be re-used and re-tested later. + // Make sure to break the relation with the options, + // which will be changed by the 'test' function. + this.data('options', $.extend(true, {}, options)); + + // Set defaults where applicable; + options = $.extend({ + 'handles': 2 + ,'margin': 0 + ,'connect': false + ,'direction': 'ltr' + ,'behaviour': 'tap' + ,'orientation': 'horizontal' + }, options); + + // Make sure the test for serialization runs. + options['serialization'] = options['serialization'] || {}; + + // Run all options through a testing mechanism to ensure correct + // input. The test function will throw errors, so there is + // no need to capture the result of this call. It should be noted + // that options might get modified to be handled properly. E.g. + // wrapping integers in arrays. + test( options, this ); + + // Pre-define the styles. + options['style'] = options['orientation'] ? 'top' : 'left'; + + return this.each(function(){ + + var target = $(this), i, dragable, handles = [], handle, + base = $('
    ').appendTo(target); + + // Throw an error if the slider was already initialized. + if ( target.data('base') ) { + throw new Error('Slider was already initialized.'); + } + + // Apply classes and data to the target. + target.data('base', base).addClass([ + clsList[6] + ,clsList[16 + options['direction']] + ,clsList[10 + options['orientation']] ].join(' ')); + + for (i = 0; i < options['handles']; i++ ) { + + handle = $('
    ').appendTo(base); + + // Add all default and option-specific classes to the + // origins and handles. + handle.addClass( clsList[1] ); + + handle.children().addClass([ + clsList[2] + ,clsList[2] + clsList[ 7 + options['direction'] + + ( options['direction'] ? -1 * i : i ) ]].join(' ') ); + + // Make sure every handle has access to all variables. + handle.data({ + 'base': base + ,'target': target + ,'options': options + ,'grab': handle.children() + ,'pct': -1 + }).attr('data-style', options['style']); + + // Every handle has a storage point, which takes care + // of triggering the proper serialization callbacks. + handle.data({ + 'store': store(handle, i, options['serialization']) + }); + + // Store handles on the base + handles.push(handle); + } + + // Apply the required connection classes to the elements + // that need them. Some classes are made up for several + // segments listed in the class list, to allow easy + // renaming and provide a minor compression benefit. + switch ( options['connect'] ) { + case 1: target.addClass( clsList[9] ); + handles[0].addClass( clsList[12] ); + break; + case 3: handles[1].addClass( clsList[12] ); + /* falls through */ + case 2: handles[0].addClass( clsList[9] ); + /* falls through */ + case 0: target.addClass(clsList[12]); + break; + } + + // Merge base classes with default, + // and store relevant data on the base element. + base.addClass( clsList[0] ).data({ + 'target': target + ,'options': options + ,'handles': handles + }); + + // Use the public value method to set the start values. + target.val( options['start'] ); + + // Attach the standard drag event to the handles. + if ( !options['behaviour']['fixed'] ) { + for ( i = 0; i < handles.length; i++ ) { + + // These events are only bound to the visual handle + // element, not the 'real' origin element. + attach ( actions.start, handles[i].children(), start, { + base: base + ,target: target + ,handles: [ handles[i] ] + }); + } + } + + // Attach the tap event to the slider base. + if ( options['behaviour']['tap'] ) { + attach ( actions.start, base, tap, { + base: base + ,target: target + }); + } + + // Extend tapping behaviour to target + if ( options['behaviour']['extend'] ) { + + target.addClass( clsList[19] ); + + if ( options['behaviour']['tap'] ) { + attach ( actions.start, target, edge, { + base: base + ,target: target + }); + } + } + + // Make the range dragable. + if ( options['behaviour']['drag'] ){ + + dragable = base.find('.'+clsList[9]).addClass(clsList[18]); + + // When the range is fixed, the entire range can + // be dragged by the handles. The handle in the first + // origin will propagate the start event upward, + // but it needs to be bound manually on the other. + if ( options['behaviour']['fixed'] ) { + dragable = dragable + .add( base.children().not(dragable).data('grab') ); + } + + attach ( actions.start, dragable, start, { + base: base + ,target: target + ,handles: handles + }); + } + }); + } + + // Return value for the slider, relative to 'range'. + function getValue ( ) { + + /*jshint validthis: true */ + + var base = $(this).data('base'), answer = []; + + // Loop the handles, and get the value from the input + // for every handle on its' own. + $.each( base.data('handles'), function(){ + answer.push( $(this).data('store').val() ); + }); + + // If the slider has just one handle, return a single value. + // Otherwise, return an array, which is in reverse order + // if the slider is used RTL. + if ( answer.length === 1 ) { + return answer[0]; + } + + if ( base.data('options').direction ) { + return answer.reverse(); + } + + return answer; + } + + // Set value for the slider, relative to 'range'. + function setValue ( args, set ) { + + /*jshint validthis: true */ + + // If the value is to be set to a number, which is valid + // when using a one-handle slider, wrap it in an array. + if( !$.isArray(args) ){ + args = [args]; + } + + // Setting is handled properly for each slider in the data set. + return this.each(function(){ + + var b = $(this).data('base'), to, i, + handles = Array.prototype.slice.call(b.data('handles'),0), + settings = b.data('options'); + + // If there are multiple handles to be set run the setting + // mechanism twice for the first handle, to make sure it + // can be bounced of the second one properly. + if ( handles.length > 1) { + handles[2] = handles[0]; + } + + // The RTL settings is implemented by reversing the front-end, + // internal mechanisms are the same. + if ( settings['direction'] ) { + args.reverse(); + } + + for ( i = 0; i < handles.length; i++ ){ + + // Calculate a new position for the handle. + to = args[ i%2 ]; + + // The set request might want to ignore this handle. + // Test for 'undefined' too, as a two-handle slider + // can still be set with an integer. + if( to === null || to === undefined ) { + continue; + } + + // Add support for the comma (,) as a decimal symbol. + // Replace it by a period so it is handled properly by + // parseFloat. Omitting this would result in a removal + // of decimals. This way, the developer can also + // input a comma separated string. + if( $.type(to) === 'string' ) { + to = to.replace(',', '.'); + } + + // Calculate the new handle position + to = toPercentage( settings['range'], parseFloat( to ) ); + + // Invert the value if this is an right-to-left slider. + if ( settings['direction'] ) { + to = 100 - to; + } + + // If the value of the input doesn't match the slider, + // reset it. Sometimes the input is changed to a value the + // slider has rejected. This can occur when using 'select' + // or 'input[type="number"]' elements. In this case, set + // the value back to the input. + if ( setHandle( handles[i], to ) !== true ){ + handles[i].data('store').val( true ); + } + + // Optionally trigger the 'set' event. + if( set === true ) { + call( settings['set'], $(this) ); + } + } + }); + } + + // Unbind all attached events, remove classed and HTML. + function destroy ( target ) { + + // Start the list of elements to be unbound with the target. + var elements = [[target,'']]; + + // Get the fields bound to both handles. + $.each(target.data('base').data('handles'), function(){ + elements = elements.concat( $(this).data('store').elements ); + }); + + // Remove all events added by noUiSlider. + $.each(elements, function(){ + if( this.length > 1 ){ + this[0].off( namespace ); + } + }); + + // Remove all classes from the target. + target.removeClass(clsList.join(' ')); + + // Empty the target and remove all data. + target.empty().removeData('base options'); + } + + // Merge options with current initialization, destroy slider + // and reinitialize. + function build ( options ) { + + /*jshint validthis: true */ + + return this.each(function(){ + + // When uninitialised, jQuery will return '', + // Zepto returns undefined. Both are falsy. + var values = $(this).val() || false, + current = $(this).data('options'), + // Extend the current setup with the new options. + setup = $.extend( {}, current, options ); + + // If there was a slider initialised, remove it first. + if ( values !== false ) { + destroy( $(this) ); + } + + // Make the destroy method publicly accessible. + if( !options ) { + return; + } + + // Create a new slider + $(this)['noUiSlider']( setup ); + + // Set the slider values back. If the start options changed, + // it gets precedence. + if ( values !== false && setup.start === current.start ) { + $(this).val( values ); + } + }); + } + + // Overwrite the native jQuery value function + // with a simple handler. noUiSlider will use the internal + // value method, anything else will use the standard method. + $.fn.val = function(){ + + // If the function is called without arguments, + // act as a 'getter'. Call the getValue function + // in the same scope as this call. + if ( this.hasClass( clsList[6] ) ){ + return arguments.length ? + setValue.apply( this, arguments ) : + getValue.apply( this ); + } + + // If this isn't noUiSlider, continue with jQuery's + // original method. + return $VAL.apply( this, arguments ); + }; + + return ( rebuild ? build : create ).call( this, options ); + }; + +}( window['jQuery'] || window['Zepto'] )); diff --git a/redux/ReduxCore/inc/fields/slider/vendor/nouislider/redux.jquery.nouislider.min.js b/redux/ReduxCore/inc/fields/slider/vendor/nouislider/redux.jquery.nouislider.min.js new file mode 100644 index 0000000..73dfa3c --- /dev/null +++ b/redux/ReduxCore/inc/fields/slider/vendor/nouislider/redux.jquery.nouislider.min.js @@ -0,0 +1,20 @@ +(function(f){if(f.zepto&&!f.fn.removeData)throw new ReferenceError("Zepto is loaded without the data module.");f.fn.noUiSlider=function(C,D){function s(a,b){return 100*b/(a[1]-a[0])}function E(a,b){return b*(a[1]-a[0])/100+a[0]}function t(a){return a instanceof f||f.zepto&&f.zepto.isZ(a)}function n(a){return!isNaN(parseFloat(a))&&isFinite(a)}function r(a,b){f.isArray(a)||(a=[a]);f.each(a,function(){"function"===typeof this&&this.call(b)})}function F(a,b){return function(){var c=[null,null];c[b]=f(this).val(); +a.val(c,!0)}}function G(a,b){a=a.toFixed(b.decimals);0===parseFloat(a)&&(a=a.replace("-0","0"));return a.replace(".",b.serialization.mark)}function u(a){return parseFloat(a.toFixed(7))}function p(a,b,c,d){var e=d.target;a=a.replace(/\s/g,h+" ")+h;b.on(a,function(a){var b=e.attr("disabled");if(e.hasClass("noUi-state-tap")||void 0!==b&&null!==b)return!1;var g;a.preventDefault();var b=0===a.type.indexOf("touch"),h=0===a.type.indexOf("mouse"),l=0===a.type.indexOf("pointer"),v,H=a;0===a.type.indexOf("MSPointer")&& +(l=!0);a.originalEvent&&(a=a.originalEvent);b&&(g=a.changedTouches[0].pageX,v=a.changedTouches[0].pageY);if(h||l)l||void 0!==window.pageXOffset||(window.pageXOffset=document.documentElement.scrollLeft,window.pageYOffset=document.documentElement.scrollTop),g=a.clientX+window.pageXOffset,v=a.clientY+window.pageYOffset;g=f.extend(H,{pointX:g,pointY:v,cursor:h});c(g,d,e.data("base").data("options"))})}function I(a){var b=this.target;if(void 0===a)return this.element.data("value");!0===a?a=this.element.data("value"): +this.element.data("value",a);void 0!==a&&f.each(this.elements,function(){if("function"===typeof this)this.call(b,a);else this[0][this[1]](a)})}function J(a,b,c){if(t(b)){var d=[],e=a.data("target");a.data("options").direction&&(c=c?0:1);b.each(function(){f(this).on("change"+h,F(e,c));d.push([f(this),"val"])});return d}"string"===typeof b&&(b=[f('').appendTo(a).addClass(g[3]).change(function(a){a.stopPropagation()}),"val"]);return[b]}function K(a,b,c){var d=[];f.each(c.to[b], +function(e){d=d.concat(J(a,c.to[b][e],b))});return{element:a,elements:d,target:a.data("target"),val:I}}function L(a,b){var c=a.data("target");c.hasClass(g[14])||(b||(c.addClass(g[15]),setTimeout(function(){c.removeClass(g[15])},450)),c.addClass(g[14]),r(a.data("options").h,c))}function w(a,b){var c=a.data("options");b=u(b);a.data("target").removeClass(g[14]);a.css(c.style,b+"%").data("pct",b);a.is(":first-child")&&a.toggleClass(g[13],50k?100:k);if(b===a.data("pct"))return[e?e:!1,100===k?!1:k];w(a,b);return!0}function A(a,b,c,d){a.addClass(g[5]);setTimeout(function(){a.removeClass(g[5])},300);x(b,c);r(d,a.data("target"));a.data("target").change()}function M(a,b,c){var d= +b.a,e=a[b.d]-b.start[b.d],e=100*e/b.size;if(1===d.length){if(a=x(d[0],b.c[0]+e),!0!==a){0<=f.inArray(d[0].data("pct"),a)&&L(b.b,!c.margin);return}}else{var k,m;c.step&&(a=c.step,e=Math.round(e/a)*a);a=k=b.c[0]+e;e=m=b.c[1]+e;0>a?(e+=-1*a,a=0):100k&&!a&&!d[0].data("pct")||100===e&&100").appendTo(b);if(b.data("base"))throw Error("Slider was already initialized.");b.data("base",k).addClass([g[6],g[16+a.direction],g[10+a.orientation]].join(" "));for(c=0;c
    ").appendTo(k),e.addClass(g[1]),e.children().addClass([g[2], +g[2]+g[7+a.direction+(a.direction?-1*c:c)]].join(" ")),e.data({base:k,target:b,options:a,grab:e.children(),pct:-1}).attr("data-style",a.style),e.data({store:K(e,c,a.serialization)}),d.push(e);switch(a.connect){case 1:b.addClass(g[9]);d[0].addClass(g[12]);break;case 3:d[1].addClass(g[12]);case 2:d[0].addClass(g[9]);case 0:b.addClass(g[12])}k.addClass(g[0]).data({target:b,options:a,handles:d});b.val(a.start);if(!a.behaviour.fixed)for(c=0;ch[0]?d+Math.abs(h[0]):d-h[0]);g.direction&&(d=100-d);!0!==x(e[c],d)&&e[c].data("store").val(!0);!0===b&&r(g.set,f(this))}})}function U(a){var b=[[a,""]];f.each(a.data("base").data("handles"), +function(){b=b.concat(f(this).data("store").elements)});f.each(b,function(){1
    '; + + require_once 'views/about.php'; + + } + + /** + * Render Changelog Screen + * + * @access public + * @since 2.0.3 + * @return void + */ + public function changelog_screen() { + // Stupid hack for Wordpress alerts and warnings + echo '

    '; + + require_once 'views/changelog.php'; + + } + + /** + * Render Changelog Screen + * + * @access public + * @since 2.0.3 + * @return void + */ + public function redux_extensions() { + // Stupid hack for Wordpress alerts and warnings + echo '

    '; + + require_once 'views/extensions.php'; + + } + + + /** + * Render Get Support Screen + * + * @access public + * @since 1.9 + * @return void + */ + public function get_support() { + // Stupid hack for Wordpress alerts and warnings + echo '

    '; + + require_once 'views/support.php'; + + } + + /** + * Render Credits Screen + * + * @access public + * @since 1.4 + * @return void + */ + public function credits_screen() { + // Stupid hack for Wordpress alerts and warnings + echo '

    '; + + require_once 'views/credits.php'; + + } + + /** + * Render Status Report Screen + * + * @access public + * @since 1.4 + * @return void + */ + public function status_screen() { + // Stupid hack for Wordpress alerts and warnings + echo '

    '; + + require_once 'views/status_report.php'; + + } + + /** + * Parse the Redux readme.txt file + * + * @since 2.0.3 + * @return string $readme HTML formatted readme file + */ + public function parse_readme() { + if ( file_exists( ReduxFramework::$_dir . 'inc/fields/raw/parsedown.php' ) ) { + require_once ReduxFramework::$_dir . 'inc/fields/raw/parsedown.php'; + $Parsedown = new Parsedown(); + $data = @wp_remote_get( ReduxFramework::$_url . '../CHANGELOG.md' ); + if ( isset( $data ) && ! empty( $data ) ) { + $data = @wp_remote_retrieve_body( $data ); + return $Parsedown->text( trim( str_replace( '# Redux Framework Changelog', '', $data ) ) ); + } + } + + return ''; + + } + + public function actions() { + ?> +

    + Docs + Review Us + Donate + + +

    + get_contributors(); + + if ( empty ( $contributors ) ) { + return ''; + } + + $contributor_list = ''; + + return $contributor_list; + } + + /** + * Retreive list of contributors from GitHub. + * + * @access public + * @since 1.4 + * @return array $contributors List of contributors + */ + public function get_contributors() { + $contributors = get_transient( 'redux_contributors' ); + + if ( false !== $contributors ) { + return $contributors; + } + + $response = wp_remote_get( 'https://api.github.com/repos/ReduxFramework/redux-framework/contributors', array( 'sslverify' => false ) ); + + if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) { + return array(); + } + + $contributors = json_decode( wp_remote_retrieve_body( $response ) ); + + if ( ! is_array( $contributors ) ) { + return array(); + } + + set_transient( 'redux_contributors', $contributors, 3600 ); + + return $contributors; + } + } + + new Redux_Welcome(); + diff --git a/redux/ReduxCore/languages/README.txt b/redux/ReduxCore/languages/README.txt new file mode 100644 index 0000000..57b2f19 --- /dev/null +++ b/redux/ReduxCore/languages/README.txt @@ -0,0 +1 @@ +Please visit: https://github.com/ReduxFramework/ReduxFramework/wiki/Translate for details on how you can help. diff --git a/redux/ReduxCore/languages/redux-framework-ar.mo b/redux/ReduxCore/languages/redux-framework-ar.mo new file mode 100644 index 0000000..e682d0a Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-ar.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-bg_BG.mo b/redux/ReduxCore/languages/redux-framework-bg_BG.mo new file mode 100644 index 0000000..c411c13 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-bg_BG.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-bn_BD.mo b/redux/ReduxCore/languages/redux-framework-bn_BD.mo new file mode 100644 index 0000000..f944e02 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-bn_BD.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-cs_CZ.mo b/redux/ReduxCore/languages/redux-framework-cs_CZ.mo new file mode 100644 index 0000000..c35eb11 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-cs_CZ.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-da_DK.mo b/redux/ReduxCore/languages/redux-framework-da_DK.mo new file mode 100644 index 0000000..d78efa9 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-da_DK.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-de_DE.mo b/redux/ReduxCore/languages/redux-framework-de_DE.mo new file mode 100644 index 0000000..939e617 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-de_DE.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-el.mo b/redux/ReduxCore/languages/redux-framework-el.mo new file mode 100644 index 0000000..96879d1 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-el.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-es_ES.mo b/redux/ReduxCore/languages/redux-framework-es_ES.mo new file mode 100644 index 0000000..2b9b075 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-es_ES.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-es_MX.mo b/redux/ReduxCore/languages/redux-framework-es_MX.mo new file mode 100644 index 0000000..906a2ad Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-es_MX.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-fa_IR.mo b/redux/ReduxCore/languages/redux-framework-fa_IR.mo new file mode 100644 index 0000000..4e23d00 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-fa_IR.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-fi.mo b/redux/ReduxCore/languages/redux-framework-fi.mo new file mode 100644 index 0000000..d04d4cc Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-fi.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-fr_FR.mo b/redux/ReduxCore/languages/redux-framework-fr_FR.mo new file mode 100644 index 0000000..9c960e1 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-fr_FR.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-he_IL.mo b/redux/ReduxCore/languages/redux-framework-he_IL.mo new file mode 100644 index 0000000..88356c8 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-he_IL.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-hi_IN.mo b/redux/ReduxCore/languages/redux-framework-hi_IN.mo new file mode 100644 index 0000000..3dc6c81 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-hi_IN.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-hr.mo b/redux/ReduxCore/languages/redux-framework-hr.mo new file mode 100644 index 0000000..55ce5ff Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-hr.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-hu_HU.mo b/redux/ReduxCore/languages/redux-framework-hu_HU.mo new file mode 100644 index 0000000..ba74bb8 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-hu_HU.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-id_ID.mo b/redux/ReduxCore/languages/redux-framework-id_ID.mo new file mode 100644 index 0000000..6d6af7d Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-id_ID.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-it_IT.mo b/redux/ReduxCore/languages/redux-framework-it_IT.mo new file mode 100644 index 0000000..9e89ac3 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-it_IT.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-ja.mo b/redux/ReduxCore/languages/redux-framework-ja.mo new file mode 100644 index 0000000..ac03f4b Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-ja.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-km.mo b/redux/ReduxCore/languages/redux-framework-km.mo new file mode 100644 index 0000000..cffc612 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-km.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-lt_LT.mo b/redux/ReduxCore/languages/redux-framework-lt_LT.mo new file mode 100644 index 0000000..e69de29 diff --git a/redux/ReduxCore/languages/redux-framework-nb_NO.mo b/redux/ReduxCore/languages/redux-framework-nb_NO.mo new file mode 100644 index 0000000..4ceb866 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-nb_NO.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-ne_NP.mo b/redux/ReduxCore/languages/redux-framework-ne_NP.mo new file mode 100644 index 0000000..274e193 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-ne_NP.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-nl_NL.mo b/redux/ReduxCore/languages/redux-framework-nl_NL.mo new file mode 100644 index 0000000..01f6323 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-nl_NL.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-pl_PL.mo b/redux/ReduxCore/languages/redux-framework-pl_PL.mo new file mode 100644 index 0000000..513a32d Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-pl_PL.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-pt_BR.mo b/redux/ReduxCore/languages/redux-framework-pt_BR.mo new file mode 100644 index 0000000..192cd35 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-pt_BR.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-pt_PT.mo b/redux/ReduxCore/languages/redux-framework-pt_PT.mo new file mode 100644 index 0000000..7448f94 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-pt_PT.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-ro_RO.mo b/redux/ReduxCore/languages/redux-framework-ro_RO.mo new file mode 100644 index 0000000..070cab6 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-ro_RO.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-ru_RU.mo b/redux/ReduxCore/languages/redux-framework-ru_RU.mo new file mode 100644 index 0000000..19e9d1f Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-ru_RU.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-sk_SK.mo b/redux/ReduxCore/languages/redux-framework-sk_SK.mo new file mode 100644 index 0000000..2b7ea22 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-sk_SK.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-sl_SI.mo b/redux/ReduxCore/languages/redux-framework-sl_SI.mo new file mode 100644 index 0000000..41358aa Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-sl_SI.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-sv_SE.mo b/redux/ReduxCore/languages/redux-framework-sv_SE.mo new file mode 100644 index 0000000..9ce07b9 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-sv_SE.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-th.mo b/redux/ReduxCore/languages/redux-framework-th.mo new file mode 100644 index 0000000..5fb244a Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-th.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-tr_TR.mo b/redux/ReduxCore/languages/redux-framework-tr_TR.mo new file mode 100644 index 0000000..38cb000 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-tr_TR.mo differ diff --git a/redux/ReduxCore/languages/redux-framework-zh_CN.mo b/redux/ReduxCore/languages/redux-framework-zh_CN.mo new file mode 100644 index 0000000..dd38781 Binary files /dev/null and b/redux/ReduxCore/languages/redux-framework-zh_CN.mo differ diff --git a/redux/ReduxCore/languages/redux-framework.pot b/redux/ReduxCore/languages/redux-framework.pot new file mode 100644 index 0000000..6b88fd1 --- /dev/null +++ b/redux/ReduxCore/languages/redux-framework.pot @@ -0,0 +1,1556 @@ +# Copyright (C) 2015 Team Redux +# This file is distributed under the GPL2+. +msgid "" +msgstr "" +"Project-Id-Version: Redux Framework 3.5.3\n" +"Report-Msgid-Bugs-To: " +"https://github.com/ReduxFramework/ReduxFramework/issues\n" +"POT-Creation-Date: 2015-04-15 23:15:00+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2015-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"X-Generator: grunt-wp-i18n 0.4.9\n" +"X-Poedit-KeywordsList: " +"__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_" +"attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n" +"Language: en\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-Country: United States\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-Basepath: ../\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-Bookmarks: \n" +"X-Textdomain-Support: yes\n" + +#: ReduxCore/core/enqueue.php:397 +#: ReduxCore/inc/extensions/customizer/extension_customizer.php:566 +msgid "You have changes that are not saved. Would you like to save them now?" +msgstr "" + +#: ReduxCore/core/enqueue.php:405 +#: ReduxCore/inc/extensions/customizer/extension_customizer.php:567 +msgid "Are you sure? Resetting will lose all custom values." +msgstr "" + +#: ReduxCore/core/enqueue.php:413 +msgid "Are you sure? Resetting will lose all custom values in this section." +msgstr "" + +#: ReduxCore/core/enqueue.php:421 +#: ReduxCore/inc/extensions/customizer/extension_customizer.php:568 +msgid "" +"Your current options will be replaced with the values of this preset. Would " +"you like to proceed?" +msgstr "" + +#: ReduxCore/core/enqueue.php:428 +msgid "Please Wait" +msgstr "" + +#: ReduxCore/core/enqueue.php:439 +msgid "There was an error saving. Here is the result of your action:" +msgstr "" + +#: ReduxCore/core/enqueue.php:440 +msgid "There was a problem with your action. Please try again or reload the page." +msgstr "" + +#: ReduxCore/core/panel.php:65 +msgid "Warning- This options panel will not work properly without javascript!" +msgstr "" + +#: ReduxCore/core/panel.php:141 +msgid "Settings Imported!" +msgstr "" + +#: ReduxCore/core/panel.php:156 +msgid "All Defaults Restored!" +msgstr "" + +#: ReduxCore/core/panel.php:170 +msgid "Section Defaults Restored!" +msgstr "" + +#: ReduxCore/core/panel.php:184 +msgid "Settings Saved!" +msgstr "" + +#: ReduxCore/core/panel.php:204 +msgid "Settings have changed, you should save them!" +msgstr "" + +#: ReduxCore/core/panel.php:212 +msgid "error(s) were found!" +msgstr "" + +#: ReduxCore/core/panel.php:220 +msgid "warning(s) were found!" +msgstr "" + +#: ReduxCore/core/panel.php:340 +msgid "" +"Your panel has bundled outdated copies of Redux Framework template " +"files – if you encounter functionality issues this could be " +"the reason. Ensure you update or remove them." +msgstr "" + +#: ReduxCore/framework.php:220 +msgid "Options panel created using %1$s" +msgstr "" + +#. Plugin Name of the plugin/theme +msgid "Redux Framework" +msgstr "" + +#: ReduxCore/framework.php:224 ReduxCore/framework.php:228 +msgid "Options" +msgstr "" + +#: ReduxCore/framework.php:1389 +#: ReduxCore/templates/panel/menu_container.tpl.php:63 +msgid "System Info" +msgstr "" + +#: ReduxCore/framework.php:1692 +msgid "Enable" +msgstr "" + +#: ReduxCore/framework.php:1697 +msgid "Disable" +msgstr "" + +#: ReduxCore/framework.php:1703 +msgid "moving the mouse over" +msgstr "" + +#: ReduxCore/framework.php:1705 +msgid "clicking" +msgstr "" + +#: ReduxCore/framework.php:1709 +msgid "" +"Hints are tooltips that popup when %d the hint icon, offering addition " +"information about the field in which they appear. They can be %d d by " +"using the link below." +msgstr "" + +#: ReduxCore/framework.php:1714 +msgid "Hints" +msgstr "" + +#: ReduxCore/framework.php:1841 +msgid "Default" +msgstr "" + +#: ReduxCore/framework.php:2680 +msgid "Invalid security credential, please reload the page and try again." +msgstr "" + +#: ReduxCore/framework.php:2766 +msgid "Your panel has no fields. Nothing to save." +msgstr "" + +#: ReduxCore/inc/class.redux_filesystem.php:23 +msgid "Unable to modify required files. Please ensure that" +msgstr "" + +#: ReduxCore/inc/class.redux_filesystem.php:25 +msgid "has the proper read/write permissions or enter your FTP information below." +msgstr "" + +#: ReduxCore/inc/class.redux_functions.php:237 +msgid "Dismiss" +msgstr "" + +#: ReduxCore/inc/class.redux_helpers.php:589 +msgid "" +"%s version %s is out of " +"date. The core version is %s" +msgstr "" + +#: ReduxCore/inc/class.redux_themecheck.php:61 +msgid "" +"The theme you are testing has %s embedded. We invite you to read the " +"%sTheme-Check Documentation%s to understand some warnings you will see " +"because of Redux." +msgstr "" + +#: ReduxCore/inc/class.redux_themecheck.php:109 +msgid "" +"The following directories & files are still located in your " +"Redux directory. They may cause errors in Theme-Check." +msgstr "" + +#: ReduxCore/inc/debug.php:41 ReduxCore/inc/debug.php:69 +#: ReduxCore/inc/debug.php:76 ReduxCore/inc/debug.php:77 +msgid "Options Object" +msgstr "" + +#: ReduxCore/inc/debug.php:54 +msgid "Show Object in Javascript Console Object" +msgstr "" + +#: ReduxCore/inc/extensions/customizer/extension_customizer.php:601 +msgid "You have changes that are not saved. Would you like to save them now?" +msgstr "" + +#: ReduxCore/inc/extensions/customizer/extension_customizer.php:602 +msgid "Are you sure? Resetting will lose all custom values." +msgstr "" + +#: ReduxCore/inc/extensions/customizer/extension_customizer.php:603 +msgid "" +"Your current options will be replaced with the values of this preset. " +"Would you like to proceed?" +msgstr "" + +#: ReduxCore/inc/extensions/import_export/extension_import_export.php:120 +msgid "Import / Export" +msgstr "" + +#: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:103 +msgid "Import Options" +msgstr "" + +#: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:104 +msgid "Import from File" +msgstr "" + +#: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:104 +msgid "Import from URL" +msgstr "" + +#: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:107 +msgid "" +"Input your backup file below and hit Import to restore your sites options " +"from a backup." +msgstr "" + +#: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:112 +msgid "" +"Input the URL to another sites options set and hit Import to load the " +"options from that site." +msgstr "" + +#: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:116 +msgid "Import" +msgstr "" + +#: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:116 +msgid "" +"WARNING! This will overwrite all existing option values, please proceed " +"with caution!" +msgstr "" + +#: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:119 +msgid "Export Options" +msgstr "" + +#: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:121 +msgid "" +"Here you can copy/download your current option settings. Keep this safe as " +"you can use it as a backup should anything go wrong, or you can use it to " +"restore your settings on this site (or any other site)." +msgstr "" + +#: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:126 +msgid "Copy Data" +msgstr "" + +#: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:126 +msgid "Download Data File" +msgstr "" + +#: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:126 +msgid "Copy Export URL" +msgstr "" + +#: ReduxCore/inc/fields/background/field_background.php:124 +#: ReduxCore/inc/fields/color/field_color.php:73 +#: ReduxCore/inc/fields/color_gradient/field_color_gradient.php:79 +#: ReduxCore/inc/fields/color_gradient/field_color_gradient.php:91 +msgid "Transparent" +msgstr "" + +#: ReduxCore/inc/fields/background/field_background.php:141 +msgid "Background Repeat" +msgstr "" + +#: ReduxCore/inc/fields/background/field_background.php:157 +msgid "Background Clip" +msgstr "" + +#: ReduxCore/inc/fields/background/field_background.php:173 +msgid "Background Origin" +msgstr "" + +#: ReduxCore/inc/fields/background/field_background.php:188 +msgid "Background Size" +msgstr "" + +#: ReduxCore/inc/fields/background/field_background.php:203 +msgid "Background Attachment" +msgstr "" + +#: ReduxCore/inc/fields/background/field_background.php:223 +msgid "Background Position" +msgstr "" + +#: ReduxCore/inc/fields/background/field_background.php:277 +#: ReduxCore/inc/fields/media/field_media.php:149 +msgid "No media selected" +msgstr "" + +#: ReduxCore/inc/fields/background/field_background.php:314 +#: ReduxCore/inc/fields/media/field_media.php:198 +#: ReduxCore/inc/fields/slides/field_slides.php:126 +#: ReduxCore/inc/fields/slides/field_slides.php:188 +msgid "Upload" +msgstr "" + +#: ReduxCore/inc/fields/background/field_background.php:321 +#: ReduxCore/inc/fields/media/field_media.php:205 +#: ReduxCore/inc/fields/multi_text/field_multi_text.php:69 +#: ReduxCore/inc/fields/multi_text/field_multi_text.php:73 +#: ReduxCore/inc/fields/multi_text/field_multi_text.php:76 +#: ReduxCore/inc/fields/slides/field_slides.php:133 +#: ReduxCore/inc/fields/slides/field_slides.php:190 +msgid "Remove" +msgstr "" + +#: ReduxCore/inc/fields/border/field_border.php:125 +#: ReduxCore/inc/fields/spacing/field_spacing.php:191 +msgid "All" +msgstr "" + +#: ReduxCore/inc/fields/border/field_border.php:138 +#: ReduxCore/inc/fields/spacing/field_spacing.php:215 +msgid "Top" +msgstr "" + +#: ReduxCore/inc/fields/border/field_border.php:145 +#: ReduxCore/inc/fields/spacing/field_spacing.php:222 +msgid "Right" +msgstr "" + +#: ReduxCore/inc/fields/border/field_border.php:152 +#: ReduxCore/inc/fields/spacing/field_spacing.php:229 +msgid "Bottom" +msgstr "" + +#: ReduxCore/inc/fields/border/field_border.php:159 +#: ReduxCore/inc/fields/spacing/field_spacing.php:236 +msgid "Left" +msgstr "" + +#: ReduxCore/inc/fields/border/field_border.php:173 +msgid "Border style" +msgstr "" + +#: ReduxCore/inc/fields/color_gradient/field_color_gradient.php:68 +msgid "From " +msgstr "" + +#: ReduxCore/inc/fields/color_gradient/field_color_gradient.php:82 +msgid "To " +msgstr "" + +#: ReduxCore/inc/fields/dimensions/field_dimensions.php:162 +msgid "Width" +msgstr "" + +#: ReduxCore/inc/fields/dimensions/field_dimensions.php:178 +#: ReduxCore/inc/fields/typography/field_typography.php:442 +msgid "Height" +msgstr "" + +#: ReduxCore/inc/fields/dimensions/field_dimensions.php:189 +#: ReduxCore/inc/fields/dimensions/field_dimensions.php:190 +#: ReduxCore/inc/fields/spacing/field_spacing.php:245 +#: ReduxCore/inc/fields/spacing/field_spacing.php:246 +msgid "Units" +msgstr "" + +#: ReduxCore/inc/fields/gallery/field_gallery.php:73 +msgid "Add/Edit Gallery" +msgstr "" + +#: ReduxCore/inc/fields/gallery/field_gallery.php:74 +msgid "Clear Gallery" +msgstr "" + +#: ReduxCore/inc/fields/link_color/field_link_color.php:87 +msgid "Regular" +msgstr "" + +#: ReduxCore/inc/fields/link_color/field_link_color.php:91 +msgid "Hover" +msgstr "" + +#: ReduxCore/inc/fields/link_color/field_link_color.php:95 +msgid "Visited" +msgstr "" + +#: ReduxCore/inc/fields/link_color/field_link_color.php:99 +msgid "Active" +msgstr "" + +#: ReduxCore/inc/fields/multi_text/field_multi_text.php:61 +msgid "Add More" +msgstr "" + +#: ReduxCore/inc/fields/password/field_password.php:62 +msgid "Password" +msgstr "" + +#: ReduxCore/inc/fields/password/field_password.php:63 +msgid "Username" +msgstr "" + +#: ReduxCore/inc/fields/select/field_select.php:83 +#: ReduxCore/inc/fields/select_image/field_select_image.php:63 +msgid "Select an item" +msgstr "" + +#: ReduxCore/inc/fields/select/field_select.php:134 +#: ReduxCore/inc/fields/select_image/field_select_image.php:144 +msgid "No items of this type were found." +msgstr "" + +#: ReduxCore/inc/fields/slides/field_slides.php:68 +msgid "Slide" +msgstr "" + +#: ReduxCore/inc/fields/slides/field_slides.php:73 +#: ReduxCore/inc/fields/slides/field_slides.php:174 +msgid "New %s" +msgstr "" + +#: ReduxCore/inc/fields/slides/field_slides.php:145 +#: ReduxCore/inc/fields/slides/field_slides.php:200 +msgid "Title" +msgstr "" + +#: ReduxCore/inc/fields/slides/field_slides.php:149 +#: ReduxCore/inc/fields/slides/field_slides.php:204 +msgid "Description" +msgstr "" + +#: ReduxCore/inc/fields/slides/field_slides.php:153 +#: ReduxCore/inc/fields/slides/field_slides.php:207 +msgid "URL" +msgstr "" + +#: ReduxCore/inc/fields/slides/field_slides.php:167 +#: ReduxCore/inc/fields/slides/field_slides.php:220 +msgid "Delete" +msgstr "" + +#: ReduxCore/inc/fields/slides/field_slides.php:223 +msgid "Add %s" +msgstr "" + +#: ReduxCore/inc/fields/switch/field_switch.php:41 +msgid "On" +msgstr "" + +#: ReduxCore/inc/fields/switch/field_switch.php:44 +msgid "Off" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:231 +msgid "Font Family" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:232 +msgid "Font family" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:258 +#: ReduxCore/inc/fields/typography/field_typography.php:259 +msgid "Backup Font Family" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:273 +#: ReduxCore/inc/fields/typography/field_typography.php:281 +msgid "Font style" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:274 +msgid "Font Weight & Style" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:281 +msgid "Style" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:321 +msgid "Font subsets" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:323 +msgid "Font Subsets" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:325 +msgid "Subsets" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:325 +msgid "Font script" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:342 +#: ReduxCore/inc/fields/typography/field_typography.php:343 +#: ReduxCore/inc/fields/typography/field_typography.php:344 +msgid "Text Align" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:365 +#: ReduxCore/inc/fields/typography/field_typography.php:366 +#: ReduxCore/inc/fields/typography/field_typography.php:367 +msgid "Text Transform" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:388 +#: ReduxCore/inc/fields/typography/field_typography.php:389 +#: ReduxCore/inc/fields/typography/field_typography.php:390 +msgid "Font Variant" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:408 +#: ReduxCore/inc/fields/typography/field_typography.php:409 +#: ReduxCore/inc/fields/typography/field_typography.php:410 +msgid "Text Decoration" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:432 +#: ReduxCore/inc/fields/typography/field_typography.php:433 +msgid "Font Size" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:433 +msgid "Size" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:441 +#: ReduxCore/inc/fields/typography/field_typography.php:442 +msgid "Line Height" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:450 +#: ReduxCore/inc/fields/typography/field_typography.php:451 +msgid "Word Spacing" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:459 +#: ReduxCore/inc/fields/typography/field_typography.php:460 +msgid "Letter Spacing" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:478 +msgid "Font Color" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:480 +msgid "Font color" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:879 +msgid "Standard Fonts" +msgstr "" + +#: ReduxCore/inc/fields/typography/field_typography.php:980 +msgid "Google Webfonts" +msgstr "" + +#: ReduxCore/inc/tracking.php:129 +msgid "Help improve Our Panel" +msgstr "" + +#: ReduxCore/inc/tracking.php:130 +msgid "" +"Please helps us improve our panel by allowing us to gather anonymous usage " +"stats so we know which configurations, plugins and themes to test to ensure " +"compatibility." +msgstr "" + +#: ReduxCore/inc/tracking.php:135 +msgid "Allow tracking" +msgstr "" + +#: ReduxCore/inc/tracking.php:140 +msgid "Do not allow tracking" +msgstr "" + +#: ReduxCore/inc/tracking.php:151 +msgid "Welcome to the Redux Demo Panel" +msgstr "" + +#: ReduxCore/inc/tracking.php:152 +msgid "Getting Started" +msgstr "" + +#: ReduxCore/inc/tracking.php:152 +msgid "" +"This panel demonstrates the many features of Redux. Before digging in, we " +"suggest you get up to speed by reviewing %1$s." +msgstr "" + +#: ReduxCore/inc/tracking.php:152 +msgid "our documentation" +msgstr "" + +#: ReduxCore/inc/tracking.php:153 +msgid "Redux Generator" +msgstr "" + +#: ReduxCore/inc/tracking.php:153 +msgid "" +"Want to get a head start? Use the %1$s. It will create a customized " +"boilerplate theme or a standalone admin folder complete with all things " +"Redux (with the help of Underscores and TGM). Save yourself a headache and " +"try it today." +msgstr "" + +#: ReduxCore/inc/tracking.php:154 ReduxCore/inc/welcome/welcome.php:214 +msgid "Redux Extensions" +msgstr "" + +#: ReduxCore/inc/tracking.php:154 +msgid "" +"Did you know we have extensions, which greatly enhance the features of " +"Redux? Visit our %1$s to learn more!" +msgstr "" + +#: ReduxCore/inc/tracking.php:154 +msgid "extensions directory" +msgstr "" + +#: ReduxCore/inc/tracking.php:155 +msgid "Like Redux?" +msgstr "" + +#: ReduxCore/inc/tracking.php:155 +msgid "" +"If so, please %1$s and consider making a %2$s to keep development of Redux " +"moving forward." +msgstr "" + +#: ReduxCore/inc/tracking.php:155 +msgid "leave us a favorable review on WordPress.org" +msgstr "" + +#: ReduxCore/inc/tracking.php:155 +msgid "donation" +msgstr "" + +#: ReduxCore/inc/tracking.php:156 +msgid "Newsletter" +msgstr "" + +#: ReduxCore/inc/tracking.php:156 +msgid "" +"If you'd like to keep up to with all things Redux, please subscribe to our " +"newsletter" +msgstr "" + +#: ReduxCore/inc/tracking.php:157 +msgid "Email address" +msgstr "" + +#: ReduxCore/inc/tracking.php:157 +msgid "Subscribe" +msgstr "" + +#: ReduxCore/inc/tracking.php:166 +msgid "Close" +msgstr "" + +#: ReduxCore/inc/validation/color/validation_color.php:15 +#: ReduxCore/inc/validation/color_rgba/validation_color_rgba.php:14 +#: ReduxCore/inc/validation/colorrgba/validation_colorrgba.php:16 +msgid "This field must be a valid color value." +msgstr "" + +#: ReduxCore/inc/validation/comma_numeric/validation_comma_numeric.php:16 +msgid "You must provide a comma separated list of numerical values for this option." +msgstr "" + +#: ReduxCore/inc/validation/css/validation_css.php:38 +msgid "Unsafe strings were found in your CSS and have been filtered out." +msgstr "" + +#: ReduxCore/inc/validation/date/validation_date.php:16 +msgid "This field must be a valid date." +msgstr "" + +#: ReduxCore/inc/validation/email/validation_email.php:16 +#: ReduxCore/inc/validation/email_not_empty/validation_email_not_empty.php:16 +msgid "You must provide a valid email for this option." +msgstr "" + +#: ReduxCore/inc/validation/no_html/validation_no_html.php:15 +msgid "You must not enter any HTML in this field, all HTML tags have been removed." +msgstr "" + +#: ReduxCore/inc/validation/no_special_chars/validation_no_special_chars.php:16 +msgid "" +"You must not enter any special characters in this field, all special " +"characters have been removed." +msgstr "" + +#: ReduxCore/inc/validation/not_empty/validation_not_empty.php:16 +msgid "This field cannot be empty. Please provide a value." +msgstr "" + +#: ReduxCore/inc/validation/numeric/validation_numeric.php:16 +#: ReduxCore/inc/validation/numeric_not_empty/validation_numeric_not_empty.php:16 +msgid "You must provide a numerical value for this option." +msgstr "" + +#: ReduxCore/inc/validation/unique_slug/validation_unique_slug.php:16 +msgid "" +"That URL slug is in use, please choose another. %s is open for " +"use." +msgstr "" + +#: ReduxCore/inc/validation/url/validation_url.php:16 +msgid "You must provide a valid URL for this option." +msgstr "" + +#: ReduxCore/inc/welcome/views/about.php:2 +msgid "Welcome to Redux Framework %s" +msgstr "" + +#: ReduxCore/inc/welcome/views/about.php:5 +msgid "" +"Thank you for updating to the latest version! Redux Framework %s is a huge " +"step forward in Redux Development. Look at all that's new." +msgstr "" + +#: ReduxCore/inc/welcome/views/about.php:8 +#: ReduxCore/inc/welcome/views/changelog.php:8 +#: ReduxCore/inc/welcome/views/credits.php:8 +#: ReduxCore/inc/welcome/views/extensions.php:82 +#: ReduxCore/inc/welcome/views/status_report.php:31 +#: ReduxCore/inc/welcome/views/support.php:8 +msgid "Version %s" +msgstr "" + +#: ReduxCore/inc/welcome/views/about.php:15 +msgid "What is Redux Framework?" +msgstr "" + +#: ReduxCore/inc/welcome/views/about.php:17 +msgid "" +"Redux Framework is the core of many products on the web. It is an option " +"framework which developers use to\n" +" enhance their products." +msgstr "" + +#: ReduxCore/inc/welcome/views/about.php:22 +msgid "Learn More" +msgstr "" + +#: ReduxCore/inc/welcome/views/about.php:28 +msgid "New in this Release" +msgstr "" + +#: ReduxCore/inc/welcome/views/changelog.php:2 +msgid "Redux Framework - Changelog" +msgstr "" + +#: ReduxCore/inc/welcome/views/changelog.php:5 +#: ReduxCore/inc/welcome/views/status_report.php:28 +msgid "" +"Our core mantra at Redux is backwards compatibility. With hundreds of " +"thousands of instances worldwide, you can be assured that we will take care " +"of you and your clients." +msgstr "" + +#: ReduxCore/inc/welcome/views/credits.php:2 +msgid "Redux Framework - A Community Effort" +msgstr "" + +#: ReduxCore/inc/welcome/views/credits.php:5 +msgid "" +"We recognize we are nothing without our community. We would like to thank " +"all of those who help Redux to be what it is. Thank you for your " +"involvement." +msgstr "" + +#: ReduxCore/inc/welcome/views/credits.php:14 +msgid "" +"Redux is created by a community of developers world wide. Want to have your " +"name listed too? Contribute to Redux." +msgstr "" + +#: ReduxCore/inc/welcome/views/extensions.php:76 +msgid "Redux Framework - Extensions" +msgstr "" + +#: ReduxCore/inc/welcome/views/extensions.php:79 +msgid "" +"Supercharge your Redux experience. Our extensions provide you with features " +"that will take your products to the next level." +msgstr "" + +#: ReduxCore/inc/welcome/views/extensions.php:88 +msgid "" +"While some are built specificially for developers, extensions such as " +"Custom Fonts are sure to make any user happy." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:25 +msgid "Redux Framework - System Status" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:38 +msgid "" +"Please copy and paste this information in your ticket when contacting " +"support:" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:41 +msgid "Get System Report" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:44 +msgid "Understanding the Status Report" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:51 +msgid "Copied!" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:51 +msgid "Copy for Support" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:60 +msgid "WordPress Environment" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:65 +msgid "Home URL" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:66 +msgid "The URL of your site's homepage." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:70 +msgid "Site URL" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:71 +msgid "The root URL of your site." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:75 +msgid "Redux Version" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:76 +msgid "The version of Redux Framework installed on your site." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:80 +msgid "Redux Data Directory Writable" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:83 +msgid "" +"Redux and its extensions write data to the uploads directory. " +"This directory must be writable." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:88 +msgid "To allow data saving, make %s writable." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:93 +msgid "WP Content URL" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:96 +msgid "The location of Wordpress's content URL." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:102 +msgid "WP Version" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:103 +msgid "The version of WordPress installed on your site." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:107 +msgid "WP Multisite" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:108 +msgid "Whether or not you have WordPress Multisite enabled." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:116 +msgid "Permalink Structure" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:117 +msgid "" +"The current permalink structure as defined in Wordpress " +"Settings->Permalinks." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:122 +msgid "Front Page Display" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:123 +msgid "The current Reading mode of Wordpress." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:131 +msgid "Front Page" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:132 +msgid "The currently selected page which acts as the site's Front Page." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:136 +msgid "Posts Page" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:137 +msgid "The currently selected page in where blog posts are displayed." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:144 +msgid "WP Memory Limit" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:145 +msgid "The maximum amount of memory (RAM) that your site can use at one time." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:150 +msgid "" +"%s - We recommend setting memory to at least 40MB. See: Increasing memory allocated to PHP" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:157 +msgid "Database Table Prefix" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:159 +msgid "The prefix structure of the current Wordpress database." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:163 +msgid "WP Debug Mode" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:164 +msgid "Displays whether or not WordPress is in Debug Mode." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:172 +msgid "Language" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:173 +msgid "The current language used by WordPress. Default = English" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:181 +msgid "Browser" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:186 +msgid "Browser Info" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:187 +msgid "Information about web browser current in use." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:202 +msgid "Server Environment" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:207 +msgid "Server Info" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:208 +msgid "Information about the web server that is currently hosting your site." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:212 +msgid "Localhost Environment" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:213 +msgid "Is the server running in a localhost environment." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:223 +msgid "PHP Version" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:224 +msgid "The version of PHP installed on your hosting server." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:228 +msgid "ABSPATH" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:229 +msgid "The ABSPATH variable on the server." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:235 +msgid "PHP Memory Limit" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:236 +#: ReduxCore/inc/welcome/views/status_report.php:241 +msgid "The largest filesize that can be contained in one post." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:240 +msgid "PHP Post Max Size" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:245 +msgid "PHP Time Limit" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:246 +msgid "" +"The amount of time (in seconds) that your site will spend on a single " +"operation before timing out (to avoid server lockups)" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:250 +msgid "PHP Max Input Vars" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:251 +msgid "" +"The maximum number of variables your server can use for a single function " +"to avoid overloads." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:255 +msgid "PHP Display Errors" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:256 +msgid "Determines if PHP will display errors within the browser." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:267 +msgid "SUHOSIN Installed" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:268 +msgid "" +"Suhosin is an advanced protection system for PHP installations. It was " +"designed to protect your servers on the one hand against a number of well " +"known problems in PHP applications and on the other hand against potential " +"unknown vulnerabilities within these applications or the PHP core itself. " +"If enabled on your server, Suhosin may need to be configured to increase " +"its data submission limits." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:277 +msgid "MySQL Version" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:278 +msgid "The version of MySQL installed on your hosting server." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:282 +msgid "Max Upload Size" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:283 +msgid "The largest filesize that can be uploaded to your WordPress installation." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:287 +msgid "Default Timezone is UTC" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:290 +msgid "The default timezone for your server." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:293 +msgid "Default timezone is %s - it should be UTC" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:304 +msgid "Used when communicating with remote services with PHP." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:310 +msgid "" +"Your server does not have fsockopen or cURL enabled - cURL is used to " +"communicate with other servers. Please contact your hosting provider." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:349 +msgid "Remote Post" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:350 +msgid "Used to send data to remote servers." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:355 +msgid "" +"wp_remote_post() failed. Many advanced features may not function. Contact " +"your hosting provider." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:358 +#: ReduxCore/inc/welcome/views/status_report.php:373 +msgid "Error: %s" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:365 +msgid "Remote Get" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:366 +msgid "Used to grab information from remote servers for updates updates." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:371 +msgid "" +"wp_remote_get() failed. This is needed to get information from remote " +"servers. Contact your hosting provider." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:405 +msgid "Active Plugins" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:421 +msgid "Visit plugin homepage" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:445 +msgid "Redux Instance: " +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:452 +msgid "The opt_name argument for this instance of Redux." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:460 +msgid "The global_variable argument for this instance of Redux." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:468 +msgid "Indicates if developer mode is enabled for this instance of Redux." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:473 +msgid "Indicates if ajax based saving is enabled for this instance of Redux." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:478 +msgid "" +"The page slug denotes the string used for the options panel page for this " +"instance of Redux." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:483 +msgid "" +"The page permissions variable sets the permission level required to access " +"the options panel for this instance of Redux." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:488 +msgid "" +"This variable set whether or not the menu is displayed as an admin menu " +"item for this instance of Redux." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:493 +msgid "" +"The page parent variable sets where the options menu will be placed on the " +"WordPress admin sidebar for this instance of Redux." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:499 +msgid "Indicates if the compiler flag is enabled for this instance of Redux." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:504 +msgid "" +"Indicates if output flag for globally shutting off all CSS output is " +"enabled for this instance of Redux." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:509 +msgid "" +"The output_tag variable sets whether or not dynamic CSS will be generated " +"for the customizer and Google fonts for this instance of Redux." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:518 +msgid "" +"The specified template path containing custom template files for this " +"instance of Redux." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:523 +msgid "List of template files overriding the default Redux template files." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:546 +msgid "Indicates the installed Redux extensions and their version numbers." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:577 +msgid "Theme" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:582 +msgid "Name" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:583 +msgid "The name of the current active theme." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:587 +msgid "Version" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:588 +msgid "The installed version of the current active theme." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:593 +msgid "is available" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:598 +msgid "Author URL" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:599 +msgid "The theme developers URL." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:603 +msgid "Child Theme" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:604 +msgid "Displays whether or not the current theme is a child theme." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:606 +msgid "" +"If you're modifying Redux Framework or a parent theme you didn't build " +"personally, we recommend using a child theme. See: How to create a child theme" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:614 +msgid "Parent Theme Name" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:616 +msgid "The name of the parent theme." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:620 +msgid "Parent Theme Version" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:623 +msgid "The installed version of the parent theme." +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:627 +msgid "Parent Theme Author URL" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:630 +msgid "The parent theme developers URL." +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:2 +msgid "Redux Framework - Support" +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:5 +msgid "" +"We are an open source project used by developers to make powerful control " +"panels." +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:20 +msgid "Generate a Support URL" +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:21 +msgid "Select Support Type" +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:22 +#: ReduxCore/inc/welcome/views/support.php:65 +msgid "How to Get Support" +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:27 +msgid "Submit a Support Request" +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:30 +msgid "To get started, we will need to generate a support hash." +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:33 +msgid "" +"This will provide to your developer all the information they may need to " +"remedy your issue. This action WILL send information securely to a remote " +"server. To see the type of information sent, please look at the Status tab." +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:37 +msgid "" +"Generate\n" +" a Support URL" +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:44 +msgid "Select Your Support Type" +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:47 +msgid "What type of user are you?" +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:52 +msgid "User" +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:53 +msgid "I am a user, using a pre-built product." +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:56 +msgid "Developer" +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:57 +msgid "I am a developer, building a product using Redux." +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:68 +msgid "" +"Please proceed to the Redux Framework issue tracker and supply us with your " +"support URL below. Please also provide any information that will help us to " +"reproduce your issue." +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:74 +msgid "" +"Listed below are the Wordpress plugins and/or theme installed on your site " +"that utilize Redux Framework. We do not directly support products created " +"with our framework. It is the responsibility of the plugin or theme " +"developer to support their work. You will need to contact the author(s) of " +"the products listed below with your support questions." +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:77 +msgid "" +"Please be sure to include for your developer - via cut and paste - the " +"Support URL in the box below." +msgstr "" + +#: ReduxCore/inc/welcome/views/support.php:215 +msgid "" +"Should the developer not be responsive, read the following article before asking for support from us " +"directly." +msgstr "" + +#: ReduxCore/inc/welcome/welcome.php:170 +msgid "Support hash could not be generated. Please try again later." +msgstr "" + +#: ReduxCore/inc/welcome/welcome.php:190 +msgid "Welcome to Redux Framework" +msgstr "" + +#: ReduxCore/inc/welcome/welcome.php:198 +msgid "Redux Framework Changelog" +msgstr "" + +#: ReduxCore/inc/welcome/welcome.php:206 class.redux-plugin.php:411 +msgid "Get Support" +msgstr "" + +#: ReduxCore/inc/welcome/welcome.php:223 +msgid "The people that develop Redux Framework" +msgstr "" + +#: ReduxCore/inc/welcome/welcome.php:231 +msgid "Redux Framework Status" +msgstr "" + +#: ReduxCore/inc/welcome/welcome.php:336 +msgid "What's New" +msgstr "" + +#: ReduxCore/inc/welcome/welcome.php:340 +msgid "Extensions" +msgstr "" + +#: ReduxCore/inc/welcome/welcome.php:344 +msgid "Changelog" +msgstr "" + +#: ReduxCore/inc/welcome/welcome.php:348 +msgid "Credits" +msgstr "" + +#: ReduxCore/inc/welcome/welcome.php:352 +msgid "Support" +msgstr "" + +#: ReduxCore/inc/welcome/welcome.php:356 +msgid "Status" +msgstr "" + +#: ReduxCore/inc/welcome/welcome.php:513 +msgid "View %s" +msgstr "" + +#: ReduxCore/templates/panel/footer.tpl.php:47 +#: ReduxCore/templates/panel/header_stickybar.tpl.php:20 +msgid "Save Changes" +msgstr "" + +#: ReduxCore/templates/panel/footer.tpl.php:50 +#: ReduxCore/templates/panel/header_stickybar.tpl.php:22 +msgid "Reset Section" +msgstr "" + +#: ReduxCore/templates/panel/footer.tpl.php:51 +#: ReduxCore/templates/panel/header_stickybar.tpl.php:23 +msgid "Reset All" +msgstr "" + +#: ReduxCore/templates/panel/footer.tpl.php:56 +#: ReduxCore/templates/panel/header_stickybar.tpl.php:26 +msgid "Working..." +msgstr "" + +#: ReduxCore/templates/panel/header.tpl.php:18 +msgid "Developer Mode Enabled" +msgstr "" + +#: ReduxCore/templates/panel/header_stickybar.tpl.php:16 +msgid "Expand" +msgstr "" + +#: class.redux-plugin.php:307 +msgid "Redux Framework has an embedded demo." +msgstr "" + +#: class.redux-plugin.php:307 +msgid "Click here to activate the sample config file." +msgstr "" + +#: class.redux-plugin.php:408 +msgid "Docs" +msgstr "" + +#: class.redux-plugin.php:409 +msgid "Repo" +msgstr "" + +#: class.redux-plugin.php:410 +msgid "Builder" +msgstr "" + +#: class.redux-plugin.php:416 +msgid "Deactivate Demo Mode" +msgstr "" + +#: class.redux-plugin.php:418 +msgid "Activate Demo Mode" +msgstr "" + +#: tests/includes/class-tivwp-dm-controller.php:28 +msgid "Must call in of after the \"plugins_loaded\" action." +msgstr "" + +#: tests/includes/class-tivwp-dm-controller.php:138 +msgid "Unknown action \"%1$s\" specified for %2$s" +msgstr "" + +#: tests/includes/class-tivwp-dm-controller.php:143 +msgid "The unknown action has been replaced with \"%s\"" +msgstr "" + +#: tests/includes/class-tivwp-dm-controller.php:158 +msgid "Automatic action performed: \"%s\"" +msgstr "" + +#: tests/includes/class-tivwp-dm.php:112 +msgid "Activate Development Plugins" +msgstr "" + +#: tests/includes/class-tivwp-dm.php:119 +msgid "Deactivate Development Plugins" +msgstr "" + +#: tests/includes/class-tivwp-dm.php:131 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "http://wordpress.org/plugins/redux-framework" +msgstr "" + +#. Description of the plugin/theme +msgid "" +"Redux is a simple, truly extensible options framework for WordPress themes " +"and plugins." +msgstr "" + +#. Author of the plugin/theme +msgid "Team Redux" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://reduxframework.com" +msgstr "" + +#: ReduxCore/inc/welcome/views/status_report.php:427 +msgctxt "by author" +msgid "by %s" +msgstr "" \ No newline at end of file diff --git a/redux/ReduxCore/templates/panel/container.tpl.php b/redux/ReduxCore/templates/panel/container.tpl.php new file mode 100644 index 0000000..31549ff --- /dev/null +++ b/redux/ReduxCore/templates/panel/container.tpl.php @@ -0,0 +1,58 @@ +parent->args['open_expanded'] ) ? ' fully-expanded' : '' . ( ! empty( $this->parent->args['class'] ) ? ' ' . esc_attr( $this->parent->args['class'] ) : '' ); + $nonce = wp_create_nonce( "redux_ajax_nonce" . $this->parent->args['opt_name'] ); +?> +
    + parent->args['database'] == "network" && $this->parent->args['network_admin'] && is_network_admin() ? './edit.php?action=redux_' . $this->parent->args['opt_name'] : './options.php' ) ?> +
    + parent->args['opt_name'] is sanitized in the Framework class, no need to re-sanitize it. ?> + + parent->args['opt_name'] is sanitized in the Framework class, no need to re-sanitize it. ?> + + parent->args['opt_name'] is sanitized in the Framework class, no need to re-sanitize it. ?> + parent->no_panel ) ) { ?> + + + init_settings_fields(); + + // Last tab? + $this->parent->options['last_tab'] = ( isset( $_GET['tab'] ) && ! isset( $this->parent->transients['last_save_mode'] ) ) ? esc_attr( $_GET['tab'] ) : ''; + ?> + parent->args['opt_name'] is sanitized in the Framework class, no need to re-sanitize it. ?> + + + get_template( 'content.tpl.php' ); ?> + +
    +
    + +parent->args['footer_text'] ) ) { ?> + + diff --git a/redux/ReduxCore/templates/panel/content.tpl.php b/redux/ReduxCore/templates/panel/content.tpl.php new file mode 100644 index 0000000..8af928f --- /dev/null +++ b/redux/ReduxCore/templates/panel/content.tpl.php @@ -0,0 +1,99 @@ + + +get_template( 'header.tpl.php' ); ?> + + +parent->args['intro_text'] ) ) { ?> +
    parent->args['intro_text'] ); ?>
    + + +get_template( 'menu_container.tpl.php' ); ?> + +
    + + get_template( 'header_stickybar.tpl.php' ); ?> +
     
    + parent->sections as $k => $section) { + if ( isset( $section['customizer_only'] ) && $section['customizer_only'] == true ) { + continue; + } + + //$active = ( ( is_numeric($this->parent->current_tab) && $this->parent->current_tab == $k ) || ( !is_numeric($this->parent->current_tab) && $this->parent->current_tab === $k ) ) ? ' style="display: block;"' : ''; + $section['class'] = isset( $section['class'] ) ? ' ' . $section['class'] : ''; + echo '
    '; + //echo '
    '; + + echo '
      '; + + foreach ($section['tab'] as $subkey => $subsection) { + //echo '-=' . $subkey . '=-'; + echo '
    • ' . $subsection['title'] . '
    • '; + } + + echo '
    '; + foreach ($section['tab'] as $subkey => $subsection) { + echo '
    '; + echo '
    '; + echo "hello ".$subkey; + do_settings_sections( $this->parent->args['opt_name'] . $k . '_tab_' . $subkey . '_section_group' ); + echo "
    "; + echo "
    "; + } + echo "
    "; + } else { + */ + + // Don't display in the + $display = true; + if ( isset( $_GET['page'] ) && $_GET['page'] == $this->parent->args['page_slug'] ) { + if ( isset( $section['panel'] ) && $section['panel'] == "false" ) { + $display = false; + } + } + + if ( $display ) { + do_action( "redux/page/{$this->parent->args['opt_name']}/section/before", $section ); + $this->output_section( $k ); + do_action( "redux/page/{$this->parent->args['opt_name']}/section/after", $section ); + } + //} + ?>
    '; + } + + /** + * action 'redux/page-after-sections-{opt_name}' + * + * @deprecated + * + * @param object $this ReduxFramework + */ + do_action( "redux/page-after-sections-{$this->parent->args['opt_name']}", $this ); // REMOVE LATER + + /** + * action 'redux/page/{opt_name}/sections/after' + * + * @param object $this ReduxFramework + */ + do_action( "redux/page/{$this->parent->args['opt_name']}/sections/after", $this ); +?> +
    + +get_template( 'footer.tpl.php' ); ?> + +
    +
    \ No newline at end of file diff --git a/redux/ReduxCore/templates/panel/footer.tpl.php b/redux/ReduxCore/templates/panel/footer.tpl.php new file mode 100644 index 0000000..9317712 --- /dev/null +++ b/redux/ReduxCore/templates/panel/footer.tpl.php @@ -0,0 +1,73 @@ + + + diff --git a/redux/ReduxCore/templates/panel/header.tpl.php b/redux/ReduxCore/templates/panel/header.tpl.php new file mode 100644 index 0000000..2fcbc8d --- /dev/null +++ b/redux/ReduxCore/templates/panel/header.tpl.php @@ -0,0 +1,73 @@ +parent->dev_mode_forced ) { + $is_debug = false; + $is_localhost = false; + + $debug_bit = ''; + if ( Redux_Helpers::isWpDebug() ) { + $is_debug = true; + $debug_bit = __( 'WP_DEBUG is enabled', 'redux-framework' ); + } + + $localhost_bit = ''; + if ( Redux_Helpers::isLocalHost() ) { + $is_localhost = true; + $localhost_bit = __( 'you are working in a localhost environment', 'redux-framework' ); + } + + $conjunction_bit = ''; + if ( $is_localhost && $is_debug ) { + $conjunction_bit = ' ' . __( 'and', 'redux-framework' ) . ' '; + } + + $tip_msg = __( 'This has been automatically enabled because', 'redux-framework' ) . ' ' . $debug_bit . $conjunction_bit . $localhost_bit . '.'; + } else { + $tip_msg = __( 'If you are not a developer, your theme/plugin author shipped with developer mode enabled. Contact them directly to fix it.', 'redux-framework' ); + } + +?> +
    + parent->args['display_name'] ) ) { ?> +
    + + parent->args['dev_mode'] ) && $this->parent->args['dev_mode'] ) { ?> +
    + +
    + parent->args['forced_dev_mode_off']) && $this->parent->args['forced_dev_mode_off'] == true ) { ?> + + +
    + +
    + + + +

    parent->args['display_name'] ); ?>

    + + parent->args['display_version'] ) ) { ?> + parent->args['display_version'] ); ?> + + +
    + + +
    +
    \ No newline at end of file diff --git a/redux/ReduxCore/templates/panel/header_stickybar.tpl.php b/redux/ReduxCore/templates/panel/header_stickybar.tpl.php new file mode 100644 index 0000000..743b1e7 --- /dev/null +++ b/redux/ReduxCore/templates/panel/header_stickybar.tpl.php @@ -0,0 +1,43 @@ + +
    +
    + + parent->args['hide_expand'] ? ' style="display: none;"' : '' ?>> + + + +
    + +parent->args['hide_save'] ) { + submit_button( esc_attr__( 'Save Changes', 'redux-framework' ), 'primary', 'redux_save_sticky', false ); + echo ' '; + } + + if ( false === $this->parent->args['hide_reset'] ) { + submit_button( esc_attr__( 'Reset Section', 'redux-framework' ), 'secondary', $this->parent->args['opt_name'] . '[defaults-section]', false, array( 'id' => 'redux-defaults-section-sticky' ) ); + echo ' '; + submit_button( esc_attr__( 'Reset All', 'redux-framework' ), 'secondary', $this->parent->args['opt_name'] . '[defaults]', false, array( 'id' => 'redux-defaults-sticky' ) ); + } +?> +
    +
     
    +
    +
    + + +
    + notification_bar(); ?> +
    + + +
    \ No newline at end of file diff --git a/redux/ReduxCore/templates/panel/menu_container.tpl.php b/redux/ReduxCore/templates/panel/menu_container.tpl.php new file mode 100644 index 0000000..0fb3943 --- /dev/null +++ b/redux/ReduxCore/templates/panel/menu_container.tpl.php @@ -0,0 +1,51 @@ + +
    +
      +parent->sections as $k => $section ) { + $title = isset ( $section[ 'title' ] ) ? $section[ 'title' ] : ''; + + $skip_sec = false; + foreach ( $this->parent->hidden_perm_sections as $num => $section_title ) { + if ( $section_title == $title ) { + $skip_sec = true; + } + } + + if ( isset ( $section[ 'customizer_only' ] ) && $section[ 'customizer_only' ] == true ) { + continue; + } + + if ( false == $skip_sec ) { + echo $this->parent->section_menu ( $k, $section ); + $skip_sec = false; + } + } + + /** + * action 'redux-page-after-sections-menu-{opt_name}' + * + * @param object $this ReduxFramework + */ + do_action ( "redux-page-after-sections-menu-{$this->parent->args[ 'opt_name' ]}", $this ); + + /** + * action 'redux/page/{opt_name}/menu/after' + * + * @param object $this ReduxFramework + */ + do_action ( "redux/page/{$this->parent->args[ 'opt_name' ]}/menu/after", $this ); +?> +
    +
    \ No newline at end of file diff --git a/redux/redux/.DS_Store b/redux/redux/.DS_Store new file mode 100644 index 0000000..3c55c2b Binary files /dev/null and b/redux/redux/.DS_Store differ diff --git a/redux/redux/ad_remove/extension_ad_remove.php b/redux/redux/ad_remove/extension_ad_remove.php new file mode 100644 index 0000000..cc26471 --- /dev/null +++ b/redux/redux/ad_remove/extension_ad_remove.php @@ -0,0 +1,125 @@ +. + * + * @package Redux Framework + * @subpackage Ad Remover + * @subpackage WordPress + * @author Kevin Provance (kprovance) + * @version 1.0.0 + */ +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +// Don't duplicate me! +if ( ! class_exists( 'ReduxFramework_extension_ad_remover' ) ) { + + + /** + * Main ReduxFramework_extension_ad_remove extension class + * + * @since 1.0.0 + */ + class ReduxFramework_extension_ad_remove { + + public static $version = '1.0.0'; + // Protected vars + protected $parent; + public $extension_url; + public $extension_dir; + public static $theInstance; + public static $ext_url; + public $field_id = ''; + private $class_css = ''; + public $field_name; + + /** + * Class Constructor. Defines the args for the extions class + * + * @since 1.0.0 + * @access public + * @param array $parent Parent settings. + * @return void + */ + public function __construct( $parent ) { + + $redux_ver = ReduxFramework::$_version; + + // Set parent object + $this->parent = $parent; + + if ( version_compare( $redux_ver, '3.5.8.15' ) < 0 ) { + $this->parent->admin_notices[] = array( + 'type' => 'error', + 'msg' => 'The Redux Ad Removal extension required Redux Framework version 3.5.8.15 or higher and will disabled until a Redux update is applied.

    You are running Redux Framework version ' . $redux_ver, + 'id' => 'r_ad1492', + 'dismiss' => false, + ); + + return; + } + + // Set extension dir + if ( empty( $this->extension_dir ) ) { + $this->extension_dir = trailingslashit( str_replace( '\\', '/', dirname( __FILE__ ) ) ); + $this->extension_url = site_url( str_replace( trailingslashit( str_replace( '\\', '/', ABSPATH ) ), '', $this->extension_dir ) ); + self::$ext_url = $this->extension_url; + } + + // Set field name + $this->field_name = 'ad_remove'; + + // Set instance + self::$theInstance = $this; + + // Adds the local field + add_filter( 'redux/' . $this->parent->args['opt_name'] . '/field/class/' . $this->field_name, array( &$this, 'overload_field_path' ) ); + + add_filter( 'redux/' . $this->parent->args['opt_name'] . '/aDBW_filter', array( $this, 'dashboard' ) ); + add_filter( 'redux/' . $this->parent->args['opt_name'] . '/aNF_filter', array( $this, 'newsflash' ) ); + add_filter( 'redux/' . $this->parent->args['opt_name'] . '/aNFM_filter', array( $this, 'newsflash' ) ); + add_filter( 'redux/' . $this->parent->args['opt_name'] . '/aURL_filter', array( $this, 'ads' ) ); + } + + public function ads() { + return ''; + } + + public function dashboard() { + return 'dat'; + } + + public function newsflash() { + return 'bub'; + } + + public static function getInstance() { + return self::$theInstance; + } + + public static function getExtURL() { + return self::$ext_url; + } + + // Forces the use of the embeded field path vs what the core typically would use + public function overload_field_path( $field ) { + return dirname( __FILE__ ) . '/' . $this->field_name . '/field_' . $this->field_name . '.php'; + } + + } + +} diff --git a/redux/redux/animation/field_animation.css b/redux/redux/animation/field_animation.css new file mode 100644 index 0000000..8aa46e9 --- /dev/null +++ b/redux/redux/animation/field_animation.css @@ -0,0 +1,41 @@ +.redux-animation-container .select_wrapper { + float: left +} + +.redux-animation-container .select_wrapper.animation-options { + width: 40%; +} + +.redux-animation-container .select_wrapper.animation-options .redux-animation-options { + width: 100%!important; +} +.redux-animation-container .select_wrapper.animation-speed .redux-animation-speed, +.redux-animation-container .select_wrapper.animation-action .redux-animation-action { + width: 84px!important; +} +.redux-animation-container .select_wrapper.animation-options .select2-choice abbr, +.redux-animation-container .select_wrapper.animation-speed .select2-choice abbr, +.redux-animation-container .select_wrapper.animation-action .select2-choice abbr { + display: inline-block; +} + +.redux-animation-container .select_wrapper, +.redux-animation-container .field-animation-input { + margin-right: 10px; + margin-bottom: 7px +} + +@media screen and (max-speed: 782px) { + .redux-animation-container .field-animation-input input { + display: inline-block !important; + width: 100px !important + } + .redux-animation-container .field-animation-input .add-on { + padding: 7px 4px; + font-size: 16px; + line-action: 1.5 + } + .redux-animation-container .select_wrapper { + margin-top: 6px + } +} \ No newline at end of file diff --git a/redux/redux/animation/field_animation.js b/redux/redux/animation/field_animation.js new file mode 100644 index 0000000..4441e83 --- /dev/null +++ b/redux/redux/animation/field_animation.js @@ -0,0 +1,69 @@ + +/*global jQuery, document, redux*/ + +(function ($) { + 'use strict'; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.animation = redux.field_objects.animation || {}; + + $(document).ready( + function () { + //redux.field_objects.animation.init(); + } + ); + + redux.field_objects.animation.init = function (selector) { + + if (!selector) { + selector = $(document).find('.redux-container-animation:visible'); + } + $(selector).each( + function () { + var el = $(this); + var parent = el; + if (!el.hasClass('redux-field-container')) { + parent = el.parents('.redux-field-container:first'); + } + if (parent.is(':hidden')) { // Skip hidden fields + return; + } + if (parent.hasClass('redux-field-init')) { + parent.removeClass('redux-field-init'); + } else { + return; + } + var default_params = { + width: 'resolve', + triggerChange: true, + allowClear: true + }; + + var select2_handle = el.find('.select2_params'); + + if (select2_handle.size() > 0) { + var select2_params = select2_handle.val(); + + select2_params = JSON.parse(select2_params); + default_params = $.extend({}, default_params, select2_params); + } + + el.find('.redux-animation-options').select2(default_params); + + el.find('.redux-animation-action').select2(default_params); + + el.find('.redux-animation-speed').select2(default_params); + + + el.on('change', '.redux-animation-options,.redux-animation-action,.redux-animation-speed', function (e) { + + redux_change($(this)); + + }); + + } + ); + + + }; +})(jQuery); \ No newline at end of file diff --git a/redux/redux/animation/field_animation.min.css b/redux/redux/animation/field_animation.min.css new file mode 100644 index 0000000..44a4574 --- /dev/null +++ b/redux/redux/animation/field_animation.min.css @@ -0,0 +1,2 @@ + +.redux-animation-container .select_wrapper{float:left}.redux-animation-container .select_wrapper.animation-options{width:40%}.redux-animation-container .select_wrapper.animation-options .redux-animation-options{width:100%!important}.redux-animation-container .select_wrapper.animation-speed .redux-animation-speed,.redux-animation-container .select_wrapper.animation-action .redux-animation-action{width:84px!important}.redux-animation-container .select_wrapper.animation-options .select2-choice abbr,.redux-animation-container .select_wrapper.animation-speed .select2-choice abbr,.redux-animation-container .select_wrapper.animation-action .select2-choice abbr{display:inline-block}.redux-animation-container .select_wrapper,.redux-animation-container .field-animation-input{margin-right:10px;margin-bottom:7px}@media screen and (max-speed:782px){.redux-animation-container .field-animation-input input{display:inline-block!important;width:100px!important}.redux-animation-container .field-animation-input .add-on{padding:7px 4px;font-size:16px;line-action:1.5}.redux-animation-container .select_wrapper{margin-top:6px}} \ No newline at end of file diff --git a/redux/redux/animation/field_animation.min.js b/redux/redux/animation/field_animation.min.js new file mode 100644 index 0000000..cf0b1c4 --- /dev/null +++ b/redux/redux/animation/field_animation.min.js @@ -0,0 +1,2 @@ + +(function(a){redux.field_objects = redux.field_objects || {}; redux.field_objects.animation = redux.field_objects.animation || {}; a(document).ready(function(){}); redux.field_objects.animation.init = function(b){if (!b){b = a(document).find(".redux-container-animation:visible")}a(b).each(function(){var g = a(this); var f = g; if (!g.hasClass("redux-field-container")){f = g.parents(".redux-field-container:first")}if (f.is(":hidden")){return}if (f.hasClass("redux-field-init")){f.removeClass("redux-field-init")} else{return}var c = {width:"resolve", triggerChange:true, allowClear:true}; var d = g.find(".select2_params"); if (d.size() > 0){var e = d.val(); e = JSON.parse(e); c = a.extend({}, c, e)}g.find(".redux-animation-options").select2(c); g.find(".redux-animation-action").select2(c); g.find(".redux-animation-speed").select2(c); g.on("change", ".redux-animation-options,.redux-animation-action,.redux-animation-speed", function(h){redux_change(a(this))})})}})(jQuery); \ No newline at end of file diff --git a/redux/redux/animation/field_animation.php b/redux/redux/animation/field_animation.php new file mode 100644 index 0000000..7312367 --- /dev/null +++ b/redux/redux/animation/field_animation.php @@ -0,0 +1,195 @@ +parent = $parent; + $this->field = $field; + $this->value = $value; + + if (empty(self::$_extension_dir)) { + $this->_extension_dir = trailingslashit(str_replace('\\', '/', dirname(__FILE__))); + $this->_extension_url = plugin_dir_url( __FILE__ ); + } + + // No errors please + $defaults = array( + 'speed' => false, + 'action' => false, + 'options' => '', + 'mode' => array( + 'speed' => false, + 'action' => false, + ), + ); + + $this->field = wp_parse_args($this->field, $defaults); + + $defaults = array( + 'speed' => '', + 'action' => '', + 'options' => '' + ); + + $this->value = wp_parse_args($this->value, $defaults); + } + + function render() { + + echo '
    '; + + if (isset($this->field['select2'])) { + + $select2_params = json_encode($this->field['select2']); + + $select2_params = htmlspecialchars($select2_params, ENT_QUOTES); + + echo ''; + } + + //echo ''; + + if (isset($this->field['options']) && is_array($this->field['options'])) { + + echo ''; + + echo '
    '; + + echo ''; + echo '
    '; + }; + + if (isset($this->field['action']) && is_array($this->field['action'])) { + + echo ''; + + echo '
    '; + + echo ''; + echo '
    '; + }; + + if (isset($this->field['speed']) && is_array($this->field['speed'])) { + + echo ''; + + echo '
    '; + + echo ''; + echo '
    '; + }; + + echo "
    "; + } + + function enqueue() { + wp_enqueue_style('select2-css'); + + wp_enqueue_style( + 'redux-field-animation-css', $this->_extension_url . 'field_animation' . Redux_Functions::isMin() . '.css', array(), time(), 'all' + ); + + wp_enqueue_script( + 'redux-field-animation-js', $this->_extension_url . 'field_animation' . Redux_Functions::isMin() . '.js', array('jquery', 'select2-js', 'redux-js'), time(), true + ); + } + + public function output() { + + // if field options has a value and IS an array, then evaluate as needed. + if (isset($this->field['options']) && !is_array($this->field['options'])) { + + //if options fields has a value but options value does not then make options value the field value + if (isset($this->field['options']) && !isset($this->value['options']) || $this->field['options'] == false) { + $this->value['options'] = $this->field['options']; + + // If options field does NOT have a value and options value does NOT have a value, set both to blank (default?) + } else if (!isset($this->field['options']) && !isset($this->value['options'])) { + $this->field['options'] = 'px'; + $this->value['options'] = 'px'; + + // If options field has NO value but options value does, then set unit field to value field + } else if (!isset($this->field['options']) && isset($this->value['options'])) { + $this->field['options'] = $this->value['options']; + + // if unit value is set and unit value doesn't equal unit field (coz who knows why) + // then set unit value to unit field + } elseif (isset($this->value['options']) && $this->value['options'] !== $this->field['options']) { + $this->value['options'] = $this->field['options']; + } + + // do stuff based on unit field NOT set as an array + } elseif (isset($this->field['options']) && is_array($this->field['options'])) { + // nothing to do here, but I'm leaving the construct just in case I have to debug this again. + } + + $options = isset($this->value['options']) ? $this->value['options'] : ""; + $action = isset($this->value['action']) ? $this->value['action'] : ""; + $speed = isset($this->value['speed']) ? $this->value['speed'] : ""; + + + $style = ""; + + foreach ($cleanValue as $key => $value) { + // Output if it's a numeric entry + if (isset($value) && is_numeric($value)) { + $style .= $key . ':' . $value . $options . ';'; + } + } + + if (!empty($style)) { + if (!empty($this->field['output']) && is_array($this->field['output'])) { + $keys = implode(",", $this->field['output']); + $this->parent->outputCSS .= $keys . "{" . $style . '}'; + } + + if (!empty($this->field['compiler']) && is_array($this->field['compiler'])) { + $keys = implode(",", $this->field['compiler']); + $this->parent->compilerCSS .= $keys . "{" . $style . '}'; + } + } + } + + } + +} \ No newline at end of file diff --git a/redux/redux/icons/field_icons.css b/redux/redux/icons/field_icons.css new file mode 100644 index 0000000..88bbab1 --- /dev/null +++ b/redux/redux/icons/field_icons.css @@ -0,0 +1,122 @@ +.redux-container .ui-accordion .ui-accordion-content { + padding: 5px; +} +div.clearfix:after { + content: " "; + visibility: hidden; + display: block; + height: 0; + clear: both; +} +.redux-container-icons .redux-icons-list .select2-container { + margin-bottom: 10px; + width: 100%; +} +.redux-container-icons .ui-accordion-header { + margin-bottom: 0; +} +.redux-container-icons .full-text { + width: 100%; +} +.redux-container-icons .large-text { + width: 100%; +} +.redux-container-icons .redux-icons-accordion-group { + display: block; + float: left; + color: #666; + border: none; + text-decoration: none; + font-size: 20px; + line-height: 60px; + width: 236.5px; + margin: 1px; + padding: 15px; + transition: all 0.2s; + background-color: #f6f6f6; +} +.redux-container-icons .redux-icons-accordion-group.redux-icons-add { + text-align: center; + line-height: 1; + padding-top: 50px; + padding-bottom: 50px; +} +.redux-container-icons .redux-icons-accordion-group .dashicons { + width: 1em; + height: 1em; + text-align: center; +} +.redux-container-icons .redux-icons-accordion-group h3 { + padding: 5px 0; + line-height: 1.2em; + font-size: 13px; + text-align: left; +} +.redux-container-icons .redux-icons-accordion-group input { + margin: 0; +} +.redux-container-icons .redux-icons-accordion-group .screenshot { + width: 70px; + height: 70px; + float: left; + margin: 0 5px 0 0; +} +.redux-container-icons .redux-icons-accordion-group .screenshot > img { + margin: 0; + box-sizing: border-box; +} +.redux-container-icons .redux-icons-accordion-group .redux_icons_add_remove .button { + margin: 0 5px 0 0; +} +.redux-container-icons #redux-icons-accordion .redux-icons-image { + height: 250px; + padding: 5px; + margin-top: 10px; + margin-bottom: 10px; + border: 1px solid #e3e3e3; + background: #f7f7f7; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +.redux-container-icons .redux-icons-add-container { + clear: both; + overflow: hidden; +} +.redux-container-icons .redux-icons-add { + float: left; + margin-right: 10%; + display: block; + margin-bottom: 10px; +} +.redux-container-icons .redux-icons-remove { + color: #ef521d !important; + float: right; + margin-top: 5px; +} +.redux-container-icons .redux-icons-add-icon { + font-size: 12px; + text-decoration: none; + color: #21c2f8; +} +.redux-container-icons .redux-icons-header { + font-weight: bold; +} +.redux-container-icons .redux-field > h3 > i { + margin-right: 5px; + font-size: inherit; + width: 1em; + height: 1em; + line-height: 1em; +} +.redux-container-icons input { + width: 100% !important; +} +.wp-customizer .redux-container-icons .ui-accordion .ui-accordion-content { + padding: 10px; +} +#modal_icons .quadmenu-setting-icon .quadmenu-icons-scroll { + max-height: 400px; +} +/*# sourceMappingURL=field_icons.css.map */ \ No newline at end of file diff --git a/redux/redux/icons/field_icons.css.map b/redux/redux/icons/field_icons.css.map new file mode 100644 index 0000000..f5a6bb0 --- /dev/null +++ b/redux/redux/icons/field_icons.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["./field_icons.less"],"names":[],"mappings":"AAKA,gBACI,cACI;EACI,YAAA;;AAKR,GADD,SACE;EACG,SAAS,GAAT;EACA,kBAAA;EACA,cAAA;EACA,SAAA;EACA,WAAA;;AAGR,sBACI,kBACI;EACI,mBAAA;EACA,WAAA;;AAJZ,sBAOI;EACI,gBAAA;;AARR,sBAUI;EACI,WAAA;;AAXR,sBAaI;EACI,WAAA;;AAdR,sBAiBI;EACI,cAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EACA,qBAAA;EACA,eAAA;EACA,iBAAA;EACA,cAAA;EACA,WAAA;EACA,aAAA;EACA,oBAAA;EACA,yBAAA;;AAEA,sBAdJ,6BAcK;EACG,kBAAA;EACA,cAAA;EACA,iBAAA;EACA,oBAAA;;AAnCZ,sBAiBI,6BAqBI;EACI,UAAA;EACA,WAAA;EACA,kBAAA;;AAzCZ,sBAiBI,6BA2BI;EACI,cAAA;EACA,kBAAA;EACA,eAAA;EACA,gBAAA;;AAhDZ,sBAiBI,6BAkCI;EACI,SAAA;;AApDZ,sBAiBI,6BAsCI;EACI,WAAA;EACA,YAAA;EACA,WAAA;EACA,iBAAA;;AA3DZ,sBAiBI,6BAsCI,YAMI;EACI,SAAA;EACA,sBAAA;;AA/DhB,sBAiBI,6BAmDI,wBACI;EACI,iBAAA;;AAtEhB,sBA2EI,uBACI;EACI,aAAA;EACA,YAAA;EACA,gBAAA;EACA,mBAAA;EACA,yBAAA;EACA,mBAAA;EACA,uBAAA;EACA,yBAAA;EACA,0BAAA;EACA,kBAAA;;AAtFZ,sBAyFI;EACI,WAAA;EACA,gBAAA;;AA3FR,sBA6FI;EACI,WAAA;EACA,iBAAA;EACA,cAAA;EACA,mBAAA;;AAjGR,sBAmGI;EACI,cAAA;EACA,YAAA;EACA,eAAA;;AAtGR,sBAwGI;EACI,eAAA;EACA,qBAAA;EACA,cAAA;;AA3GR,sBA6GI;EACI,iBAAA;;AA9GR,sBAgHI,aACI,KACI;EACI,iBAAA;EACA,kBAAA;EACA,UAAA;EACA,WAAA;EACA,gBAAA;;AAvHhB,sBA2HI;EACI,sBAAA;;AAGR,cACI,uBACI,cACI;EACI,aAAA;;AAMhB,YACI,uBAAuB;EACnB,iBAAA","file":"field_icons.css"} \ No newline at end of file diff --git a/redux/redux/icons/field_icons.js b/redux/redux/icons/field_icons.js new file mode 100644 index 0000000..9daf9c3 --- /dev/null +++ b/redux/redux/icons/field_icons.js @@ -0,0 +1,115 @@ +/*global redux_change, wp, redux*/ + +(function ($) { + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.icons = redux.field_objects.icons || {}; + + + $(document).ready( + function () { + //redux.field_objects.icons.init(); + } + ); + + redux.field_objects.icons.init = function (selector) { + + if (!selector) { + selector = $(document).find(".redux-group-tab:visible").find('.redux-container-icons:visible'); + } + + $(selector).each( + function () { + var el = $(this); + + redux.field_objects.media.init(el); + + el.parent().prev().hide(); + var parent = el; + if (!el.hasClass('redux-field-container')) { + parent = el.parents('.redux-field-container:first'); + } + if (parent.is(":hidden")) { // Skip hidden fields + return; + } + + if (parent.hasClass('redux-container-icons')) { + parent.addClass('redux-field-init'); + } + + if (parent.hasClass('redux-field-init')) { + parent.removeClass('redux-field-init'); + } else { + return; + } + + el.find('.redux-icons-remove').on( + 'click', function () { + redux_change($(this)); + + $(this).parent().siblings().find('input[type="text"]').val(''); + $(this).parent().siblings().find('textarea').val(''); + $(this).parent().siblings().find('input[type="hidden"]').val(''); + + var slideCount = $(this).parents('.redux-container-icons:first').find('.redux-icons-accordion-group').length; + + if (slideCount > 1) { + $(this).parents('.redux-icons-accordion-group:first').slideUp( + 'medium', function () { + $(this).remove(); + } + ); + } else { + var content_new_title = $(this).parent('.redux-icons-accordion').data('new-content-title'); + + $(this).parents('.redux-icons-accordion-group:first').find('.remove-image').click(); + $(this).parents('.redux-container-icons:first').find('.redux-icons-accordion-group:last').find('.redux-icons-header').text(content_new_title); + } + } + ); + + //el.find( '.redux-icons-add' ).click( + el.find('.redux-icons-add').off('click').click( + function () { + var newSlide = $(this).prev().find('.redux-icons-accordion-group:last').clone(true); + + var slideCount = $(newSlide).find('.slide-title').attr("name").match(/[0-9]+(?!.*[0-9])/); + var slideCount1 = slideCount * 1 + 1; + + $(newSlide).find('input[type="text"], input[type="hidden"], textarea, .redux-icons-add-icon').each( + function () { + + $(this).attr( + "name", jQuery(this).attr("name").replace(/[0-9]+(?!.*[0-9])/, slideCount1) + ).attr("id", $(this).attr("id").replace(/[0-9]+(?!.*[0-9])/, slideCount1)); + $(this).val(''); + if ($(this).hasClass('slide-sort')) { + $(this).val(slideCount1); + } + } + ); + + var content_new_title = $(this).prev().data('new-content-title'); + + $(newSlide).find('.screenshot').removeAttr('style'); + $(newSlide).find('.screenshot').addClass('hide'); + $(newSlide).find('.screenshot a').attr('href', ''); + $(newSlide).find('.remove-image').addClass('hide'); + $(newSlide).find('.redux-option-image').attr('src', '').removeAttr('id'); + $(newSlide).find('h3').text('').append('' + content_new_title + ''); + $(this).prev().append(newSlide); + } + ); + + el.find('.slide-title').keyup( + function (event) { + var newTitle = event.target.value; + $(this).parents().eq(3).find('.redux-icons-header').text(newTitle); + } + ); + + } + ); + }; +})(jQuery); \ No newline at end of file diff --git a/redux/redux/icons/field_icons.less b/redux/redux/icons/field_icons.less new file mode 100644 index 0000000..12afd38 --- /dev/null +++ b/redux/redux/icons/field_icons.less @@ -0,0 +1,163 @@ +@color_1: #666; +@color_2: #ef521d; +@color_3: #21c2f8; +@background_color_1: #f6f6f6; + +.redux-container { + .ui-accordion { + .ui-accordion-content { + padding: 5px; + } + } +} +div.clearfix { + &:after { + content: " "; + visibility: hidden; + display: block; + height: 0; + clear: both; + } +} +.redux-container-icons { + .redux-icons-list { + .select2-container { + margin-bottom: 10px; + width: 100%; + } + } + .ui-accordion-header { + margin-bottom: 0; + } + .full-text { + width: 100%; + } + .large-text { + width: 100%; + } + + .redux-icons-accordion-group { + display: block; + float: left; + color: @color_1; + border: none; + text-decoration: none; + font-size: 20px; + line-height: 60px; + width: 236.5px; + margin: 1px; + padding: 15px; + transition: all 0.2s; + background-color: @background_color_1; + + &.redux-icons-add { + text-align: center; + line-height: 1; + padding-top: 50px; + padding-bottom: 50px; + } + + .dashicons { + width: 1em; + height: 1em; + text-align: center; + } + + h3 { + padding: 5px 0; + line-height: 1.2em; + font-size: 13px; + text-align: left; + } + + input { + margin: 0; + } + + .screenshot { + width: 70px; + height: 70px; + float: left; + margin: 0 5px 0 0; + + > img { + margin: 0; + box-sizing: border-box; + } + } + + + .redux_icons_add_remove { + .button { + margin: 0 5px 0 0; + } + } + } + + #redux-icons-accordion { + .redux-icons-image { + height: 250px; + padding: 5px; + margin-top: 10px; + margin-bottom: 10px; + border: 1px solid #e3e3e3; + background: #f7f7f7; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + } + } + .redux-icons-add-container { + clear: both; + overflow: hidden; + } + .redux-icons-add { + float: left; + margin-right: 10%; + display: block; + margin-bottom: 10px; + } + .redux-icons-remove { + color: @color_2 !important; + float: right; + margin-top: 5px; + } + .redux-icons-add-icon { + font-size: 12px; + text-decoration: none; + color: @color_3; + } + .redux-icons-header { + font-weight: bold; + } + .redux-field { + >h3 { + >i { + margin-right: 5px; + font-size: inherit; + width: 1em; + height: 1em; + line-height: 1em; + } + } + } + input { + width: 100% !important; + } +} +.wp-customizer { + .redux-container-icons { + .ui-accordion { + .ui-accordion-content { + padding: 10px; + } + } + } +} + +#modal_icons { + .quadmenu-setting-icon .quadmenu-icons-scroll { + max-height: 400px; + } +} \ No newline at end of file diff --git a/redux/redux/icons/field_icons.min.css b/redux/redux/icons/field_icons.min.css new file mode 100644 index 0000000..920956d --- /dev/null +++ b/redux/redux/icons/field_icons.min.css @@ -0,0 +1,2 @@ + +.redux-container .ui-accordion .ui-accordion-content{padding:5px}div.clearfix:after{content:" ";visibility:hidden;display:block;height:0;clear:both}.redux-container-icons .redux-icons-list .select2-container{margin-bottom:10px;width:100%}.redux-container-icons .ui-accordion-header{margin-bottom:0}.redux-container-icons .full-text{width:100%}.redux-container-icons .large-text{width:100%}.redux-container-icons .redux-icons-accordion-group{display:block;float:left;color:#666;border:0;text-decoration:none;font-size:20px;line-height:60px;width:236.5px;margin:1px;padding:15px;transition:all .2s;background-color:#f6f6f6}.redux-container-icons .redux-icons-accordion-group.redux-icons-add{text-align:center;line-height:1;padding-top:50px;padding-bottom:50px}.redux-container-icons .redux-icons-accordion-group .dashicons{width:1em;height:1em;text-align:center}.redux-container-icons .redux-icons-accordion-group h3{padding:5px 0;line-height:1.2em;font-size:13px;text-align:left}.redux-container-icons .redux-icons-accordion-group input{margin:0}.redux-container-icons .redux-icons-accordion-group .screenshot{width:70px;height:70px;float:left;margin:0 5px 0 0}.redux-container-icons .redux-icons-accordion-group .screenshot>img{margin:0;box-sizing:border-box}.redux-container-icons .redux-icons-accordion-group .redux_icons_add_remove .button{margin:0 5px 0 0}.redux-container-icons #redux-icons-accordion .redux-icons-image{height:250px;padding:5px;margin-top:10px;margin-bottom:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-container-icons .redux-icons-add-container{clear:both;overflow:hidden}.redux-container-icons .redux-icons-add{float:left;margin-right:10%;display:block;margin-bottom:10px}.redux-container-icons .redux-icons-remove{color:#ef521d!important;float:right;margin-top:5px}.redux-container-icons .redux-icons-add-icon{font-size:12px;text-decoration:none;color:#21c2f8}.redux-container-icons .redux-icons-header{font-weight:bold}.redux-container-icons .redux-field>h3>i{margin-right:5px;font-size:inherit;width:1em;height:1em;line-height:1em}.redux-container-icons input{width:100%!important}.wp-customizer .redux-container-icons .ui-accordion .ui-accordion-content{padding:10px}#modal_icons .quadmenu-setting-icon .quadmenu-icons-scroll{max-height:400px} \ No newline at end of file diff --git a/redux/redux/icons/field_icons.min.js b/redux/redux/icons/field_icons.min.js new file mode 100644 index 0000000..e01ec4e --- /dev/null +++ b/redux/redux/icons/field_icons.min.js @@ -0,0 +1,2 @@ + +(function(a){redux.field_objects = redux.field_objects || {}; redux.field_objects.icons = redux.field_objects.icons || {}; a(document).ready(function(){}); redux.field_objects.icons.init = function(b){if (!b){b = a(document).find(".redux-group-tab:visible").find(".redux-container-icons:visible")}a(b).each(function(){var d = a(this); redux.field_objects.media.init(d); d.parent().prev().hide(); var c = d; if (!d.hasClass("redux-field-container")){c = d.parents(".redux-field-container:first")}if (c.is(":hidden")){return}if (c.hasClass("redux-container-icons")){c.addClass("redux-field-init")}if (c.hasClass("redux-field-init")){c.removeClass("redux-field-init")} else{return}d.find(".redux-icons-remove").on("click", function(){redux_change(a(this)); a(this).parent().siblings().find('input[type="text"]').val(""); a(this).parent().siblings().find("textarea").val(""); a(this).parent().siblings().find('input[type="hidden"]').val(""); var e = a(this).parents(".redux-container-icons:first").find(".redux-icons-accordion-group").length; if (e > 1){a(this).parents(".redux-icons-accordion-group:first").slideUp("medium", function(){a(this).remove()})} else{var f = a(this).parent(".redux-icons-accordion").data("new-content-title"); a(this).parents(".redux-icons-accordion-group:first").find(".remove-image").click(); a(this).parents(".redux-container-icons:first").find(".redux-icons-accordion-group:last").find(".redux-icons-header").text(f)}}); d.find(".redux-icons-add").off("click").click(function(){var g = a(this).prev().find(".redux-icons-accordion-group:last").clone(true); var f = a(g).find(".slide-title").attr("name").match(/[0-9]+(?!.*[0-9])/); var e = f * 1 + 1; a(g).find('input[type="text"], input[type="hidden"], textarea, .redux-icons-add-icon').each(function(){a(this).attr("name", jQuery(this).attr("name").replace(/[0-9]+(?!.*[0-9])/, e)).attr("id", a(this).attr("id").replace(/[0-9]+(?!.*[0-9])/, e)); a(this).val(""); if (a(this).hasClass("slide-sort")){a(this).val(e)}}); var h = a(this).prev().data("new-content-title"); a(g).find(".screenshot").removeAttr("style"); a(g).find(".screenshot").addClass("hide"); a(g).find(".screenshot a").attr("href", ""); a(g).find(".remove-image").addClass("hide"); a(g).find(".redux-option-image").attr("src", "").removeAttr("id"); a(g).find("h3").text("").append('' + h + ""); a(this).prev().append(g)}); d.find(".slide-title").keyup(function(e){var f = e.target.value; a(this).parents().eq(3).find(".redux-icons-header").text(f)})})}})(jQuery); \ No newline at end of file diff --git a/redux/redux/icons/field_icons.php b/redux/redux/icons/field_icons.php new file mode 100644 index 0000000..0a1b809 --- /dev/null +++ b/redux/redux/icons/field_icons.php @@ -0,0 +1,237 @@ +parent = $parent; + $this->field = $field; + $this->value = $value; + + if ( empty( self::$_extension_dir ) ) { + $this->_extension_dir = trailingslashit( str_replace( '\\', '/', dirname( __FILE__ ) ) ); + $this->_extension_url = plugin_dir_url( __FILE__ ); + } + } + + public static function modal( $icons = '' ) { + ?> + + + + array( + 'title' => true, + 'icon' => true, + // 'key' => false, + 'description' => true, + 'url' => true, + 'upload' => true, + ), + 'content_title' => __( 'Slide', 'redux-framework' ), + ); + + $this->field = wp_parse_args( $this->field, $defaults ); + + echo '
    '; + + $x = 0; + + $multi = ( isset( $this->field['multi'] ) && $this->field['multi'] ) ? ' multiple="multiple"' : ''; + + if ( isset( $this->value ) && is_array( $this->value ) && ! empty( $this->value ) ) { + + $icons = $this->value; + + foreach ( $icons as $slide ) { + + if ( empty( $slide ) ) { + continue; + } + + $defaults = array( + 'title' => '', + 'icon' => '', + 'description' => '', + 'sort' => '', + 'url' => '', + 'image' => '', + 'thumb' => '', + 'attachment_id' => '', + 'height' => '', + 'width' => '', + 'upload' => '', + 'select' => array(), + ); + $slide = wp_parse_args( $slide, $defaults ); + + if ( empty( $slide['thumb'] ) && ! empty( $slide['attachment_id'] ) ) { + $img = wp_get_attachment_image_src( $slide['attachment_id'], 'full' ); + $slide['image'] = $img[0]; + $slide['width'] = $img[1]; + $slide['height'] = $img[2]; + } + + echo '

    ' . $slide['title'] . '

    '; + + if ( $this->field['show']['upload'] ) { + + $hide = ''; + + if ( empty( $slide['image'] ) ) { + $hide = ' hidden'; + } + + echo '
    '; + // echo ''; + echo ''; + // echo ''; + echo '
    '; + + echo '
    '; + + echo '' . __( 'Upload', 'redux-framework' ) . ''; + + $hide = ''; + + if ( empty( $slide['image'] ) || $slide['image'] == '' ) { + $hide = ' hide'; + } + + echo '' . __( 'Remove', 'redux-framework' ) . ''; + + echo '
    ' . "\n"; + } + + echo '
      '; + + if ( $this->field['show']['title'] ) { + $title_type = 'text'; + } else { + $title_type = 'hidden'; + } + + $placeholder = ( isset( $this->field['placeholder']['title'] ) ) ? esc_attr( $this->field['placeholder']['title'] ) : __( 'Title', 'redux-framework' ); + + echo '
    • '; + + if ( $this->field['show']['icon'] ) { + $placeholder = ( isset( $this->field['placeholder']['icon'] ) ) ? esc_attr( $this->field['placeholder']['icon'] ) : __( 'Icon', 'quadmenu' ); + echo '
    • '; + echo '' . __( '+ Add Icon', 'quadmenu' ) . ''; + echo ''; + echo '
    • '; + } + + if ( $this->field['show']['description'] ) { + $placeholder = ( isset( $this->field['placeholder']['description'] ) ) ? esc_attr( $this->field['placeholder']['description'] ) : __( 'Description', 'redux-framework' ); + echo '
    • '; + } + + $placeholder = ( isset( $this->field['placeholder']['url'] ) ) ? esc_attr( $this->field['placeholder']['url'] ) : __( 'URL', 'redux-framework' ); + if ( $this->field['show']['url'] ) { + $url_type = 'text'; + } else { + $url_type = 'hidden'; + } + + echo '
    • '; + echo '
    • '; + echo '
    • '; + echo ''; + echo ''; + echo ''; + echo '
    • '; + // echo ''; + echo '
    • ' . __( 'Delete', 'redux-framework' ) . '
    • '; + echo '
    '; + $x ++; + } + } + + echo '
    '; + + echo ''; + } + + public function enqueue() { + if ( function_exists( 'wp_enqueue_media' ) ) { + wp_enqueue_media(); + } else { + wp_enqueue_script( 'media-upload' ); + } + + if ( $this->parent->args['dev_mode'] ) { + wp_enqueue_style( 'redux-field-media-css' ); + } + + wp_enqueue_style( + 'redux-field-icons-css', + $this->_extension_url . 'field_icons' . Redux_Functions::isMin() . '.css', + array(), + time(), + 'all' + ); + + wp_enqueue_script( + 'redux-field-media-js', + ReduxFramework::$_url . 'assets/js/media/media' . Redux_Functions::isMin() . '.js', + array( 'jquery', 'redux-js' ), + time(), + true + ); + + wp_enqueue_script( + 'redux-field-icons-js', + $this->_extension_url . 'field_icons' . Redux_Functions::isMin() . '.js', + array( 'jquery', 'jquery-ui-core', 'jquery-ui-accordion', 'jquery-ui-sortable', 'redux-field-media-js' ), + time(), + true + ); + } + + } + +} diff --git a/redux/redux/rgba/field_rgba.js b/redux/redux/rgba/field_rgba.js new file mode 100644 index 0000000..4dbc174 --- /dev/null +++ b/redux/redux/rgba/field_rgba.js @@ -0,0 +1,146 @@ +/* + Field Color (color) + */ + +/*global jQuery, document, redux_change, redux*/ + +(function ($) { + 'use strict'; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.rgba = redux.field_objects.rgba || {}; + + $(document).ready( + function () { + + } + ); + + redux.field_objects.rgba.init = function (selector) { + + if (!selector) { + selector = $(document).find(".redux-group-tab:visible").find('.redux-container-rgba:visible'); + } + + $(selector).each( + function () { + + var el = $(this); + var parent = el; + + if (!el.hasClass('redux-field-container')) { + parent = el.parents('.redux-field-container:first'); + } + if (parent.is(":hidden")) { // Skip hidden fields + return; + } + if (parent.hasClass('redux-field-init')) { + parent.removeClass('redux-field-init'); + } else { + return; + } + + el.find('.redux-rgba-init').wpColorPicker( + { + change: function (e, ui) { + $(this).val(ui.color.toString()); + redux_change($(this)); + el.find('#' + e.target.getAttribute('data-id') + '-transparency').removeAttr('checked'); + }, + clear: function (e, ui) { + $(this).val(''); + redux_change($(this).parent().find('.redux-rgba-init')); + } + } + ); + + el.find('.redux-color').on( + 'focus', function () { + $(this).data('oldcolor', $(this).val()); + } + ); + + el.find('.redux-color').on( + 'keyup', function () { + var value = $(this).val(); + var color = colorValidate(this); + var id = '#' + $(this).attr('id'); + + if (value === "transparent") { + $(this).parent().parent().find('.wp-color-result').css( + 'background-color', 'transparent' + ); + + el.find(id + '-transparency').attr('checked', 'checked'); + } else { + el.find(id + '-transparency').removeAttr('checked'); + + if (color && color !== $(this).val()) { + $(this).val(color); + } + } + } + ); + + // Replace and validate field on blur + el.find('.redux-rgba').on( + 'blur', function () { + var value = $(this).val(); + var id = '#' + $(this).attr('id'); + + if (value === "transparent") { + $(this).parent().parent().find('.wp-color-result').css( + 'background-color', 'transparent' + ); + + el.find(id + '-transparency').attr('checked', 'checked'); + } else { + if (colorValidate(this) === value) { + if (value.indexOf("#") !== 0) { + $(this).val($(this).data('oldcolor')); + } + } + + el.find(id + '-transparency').removeAttr('checked'); + } + } + ); + + // Store the old valid color on keydown + el.find('.redux-color').on( + 'keydown', function () { + $(this).data('oldkeypress', $(this).val()); + } + ); + + // When transparency checkbox is clicked + el.find('.color-transparency').on( + 'click', function () { + if ($(this).is(":checked")) { + el.find('.redux-saved-color').val($('#' + $(this).data('id')).val()); + el.find('#' + $(this).data('id')).val('transparent'); + el.find('#' + $(this).data('id')).parent().parent().find('.wp-color-result').css( + 'background-color', 'transparent' + ); + } else { + if (el.find('#' + $(this).data('id')).val() === 'transparent') { + var prevColor = $('.redux-saved-color').val(); + + if (prevColor === '') { + prevColor = $('#' + $(this).data('id')).data('default-color'); + } + + el.find('#' + $(this).data('id')).parent().parent().find('.wp-color-result').css( + 'background-color', prevColor + ); + + el.find('#' + $(this).data('id')).val(prevColor); + } + } + redux_change($(this)); + } + ); + } + ); + }; +})(jQuery); \ No newline at end of file diff --git a/redux/redux/rgba/field_rgba.min.js b/redux/redux/rgba/field_rgba.min.js new file mode 100644 index 0000000..01b9314 --- /dev/null +++ b/redux/redux/rgba/field_rgba.min.js @@ -0,0 +1,2 @@ + +(function(a){redux.field_objects=redux.field_objects||{};redux.field_objects.rgba=redux.field_objects.rgba||{};a(document).ready(function(){});redux.field_objects.rgba.init=function(b){if(!b){b=a(document).find(".redux-group-tab:visible").find(".redux-container-rgba:visible")}a(b).each(function(){var d=a(this);var c=d;if(!d.hasClass("redux-field-container")){c=d.parents(".redux-field-container:first")}if(c.is(":hidden")){return}if(c.hasClass("redux-field-init")){c.removeClass("redux-field-init")}else{return}d.find(".redux-rgba-init").find(".iris-strip").addClass("test");d.find(".redux-rgba-init").wpColorPicker({change:function(g,f){a(this).val(f.color.toString());redux_change(a(this));d.find("#"+g.target.getAttribute("data-id")+"-transparency").removeAttr("checked")},clear:function(g,f){a(this).val("");redux_change(a(this).parent().find(".redux-rgba-init"))}});d.find(".redux-color").on("focus",function(){a(this).data("oldcolor",a(this).val())});d.find(".redux-color").on("keyup",function(){var f=a(this).val();var e=colorValidate(this);var g="#"+a(this).attr("id");if(f==="transparent"){a(this).parent().parent().find(".wp-color-result").css("background-color","transparent");d.find(g+"-transparency").attr("checked","checked")}else{d.find(g+"-transparency").removeAttr("checked");if(e&&e!==a(this).val()){a(this).val(e)}}});d.find(".redux-rgba").on("blur",function(){var e=a(this).val();var f="#"+a(this).attr("id");if(e==="transparent"){a(this).parent().parent().find(".wp-color-result").css("background-color","transparent");d.find(f+"-transparency").attr("checked","checked")}else{if(colorValidate(this)===e){if(e.indexOf("#")!==0){a(this).val(a(this).data("oldcolor"))}}d.find(f+"-transparency").removeAttr("checked")}});d.find(".redux-color").on("keydown",function(){a(this).data("oldkeypress",a(this).val())});d.find(".color-transparency").on("click",function(){if(a(this).is(":checked")){d.find(".redux-saved-color").val(a("#"+a(this).data("id")).val());d.find("#"+a(this).data("id")).val("transparent");d.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent")}else{if(d.find("#"+a(this).data("id")).val()==="transparent"){var e=a(".redux-saved-color").val();if(e===""){e=a("#"+a(this).data("id")).data("default-color")}d.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",e);d.find("#"+a(this).data("id")).val(e)}}redux_change(a(this))})})}})(jQuery); \ No newline at end of file diff --git a/redux/redux/rgba/field_rgba.php b/redux/redux/rgba/field_rgba.php new file mode 100644 index 0000000..f512191 --- /dev/null +++ b/redux/redux/rgba/field_rgba.php @@ -0,0 +1,103 @@ +parent = $parent; + $this->field = $field; + $this->value = $value; + + if (isset($this->value['color']) && isset($this->value['alpha'])) { + $this->value = Redux_Helpers::hex2rgba($this->value['color'], $this->value['alpha']); + } + + if (isset($this->field['default']['color']) && isset($this->field['default']['alpha'])) { + $this->field['default'] = Redux_Helpers::hex2rgba($this->field['default']['color'], $this->field['default']['alpha']); + } + + if (empty(self::$_extension_dir)) { + $this->_extension_dir = trailingslashit(str_replace('\\', '/', dirname(__FILE__))); + $this->_extension_url = plugin_dir_url( __FILE__ ); + } + } + + public function render() { + + echo ''; + echo ''; + + if (!isset($this->field['transparent']) || $this->field['transparent'] !== false) { + + $tChecked = ""; + + if ($this->value == "transparent") { + $tChecked = ' checked="checked"'; + } + + echo ''; + } + } + + public function enqueue() { + + wp_enqueue_style('wp-color-picker'); + + wp_register_script('wp-color-picker-alpha', $this->_extension_url . 'wp-color-picker-alpha' . Redux_Functions::isMin() . '.js', array('jquery', 'wp-color-picker')); + + wp_localize_script('wp-color-picker-alpha', 'et_pb_color_picker_strings', array( + 'legacy_pick' => esc_html__('Select', 'quadmenu'), + 'legacy_current' => esc_html__('Color', 'quadmenu'), + )); + + wp_localize_script('wp-color-picker-alpha', 'wpColorPickerL10n', array( + 'clear' => __('Clear', 'quadmenu'), + 'clearAriaLabel' => __('Clear color', 'quadmenu'), + 'defaultString' => __('Default', 'quadmenu'), + 'defaultAriaLabel' => __('Select default color', 'quadmenu'), + 'pick' => __('Select Color', 'quadmenu'), + 'defaultLabel' => __('Color value', 'quadmenu'), + )); + + wp_enqueue_script( + 'redux-field-rgba-js', $this->_extension_url . 'field_rgba' . Redux_Functions::isMin() . '.js', array('jquery', 'wp-color-picker-alpha', 'redux-js'), time(), true + ); + } + + public function output() { + $style = ''; + + if (!empty($this->value)) { + $mode = ( isset($this->field['mode']) && !empty($this->field['mode']) ? $this->field['mode'] : 'color' ); + + $style .= $mode . ':' . $this->value . ';'; + + if (!empty($this->field['output']) && is_array($this->field['output'])) { + $css = Redux_Functions::parseCSS($this->field['output'], $style, $this->value); + $this->parent->outputCSS .= $css; + } + + if (!empty($this->field['compiler']) && is_array($this->field['compiler'])) { + $css = Redux_Functions::parseCSS($this->field['compiler'], $style, $this->value); + $this->parent->compilerCSS .= $css; + } + } + } + + } + +} + \ No newline at end of file diff --git a/redux/redux/rgba/wp-color-picker-alpha.js b/redux/redux/rgba/wp-color-picker-alpha.js new file mode 100644 index 0000000..454a3eb --- /dev/null +++ b/redux/redux/rgba/wp-color-picker-alpha.js @@ -0,0 +1,483 @@ +/** + * wp-color-picker-alpha + * + * Version 1.0 + * Copyright (c) 2017 Elegant Themes. + * Licensed under the GPLv2 license. + * + * Overwrite Automattic Iris for enabled Alpha Channel in wpColorPicker + * Only run in input and is defined data alpha in true + * Add custom colorpicker UI + * + * This is modified version made by Elegant Themes based on the work covered by + * the following copyright: + * + * wp-color-picker-alpha Version: 1.1 + * https://github.com/23r9i0/wp-color-picker-alpha + * Copyright (c) 2015 Sergio P.A. (23r9i0). + * Licensed under the GPLv2 license. + */ +(function ($) { + // Variable for some backgrounds + var image = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAAHnlligAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHJJREFUeNpi+P///4EDBxiAGMgCCCAGFB5AADGCRBgYDh48CCRZIJS9vT2QBAggFBkmBiSAogxFBiCAoHogAKIKAlBUYTELAiAmEtABEECk20G6BOmuIl0CIMBQ/IEMkO0myiSSraaaBhZcbkUOs0HuBwDplz5uFJ3Z4gAAAABJRU5ErkJggg=='; + // html stuff for wpColorPicker copy of the original color-picker.js + var _before = '', + _after = '
    ', + _wrap = '
    ', + _button = '', + _wrappingLabel = '', + _wrappingLabelText = '', + _close_button = '', d = '
    ', i = '
    ', j = '', b = "", c = '', h = ' \ No newline at end of file diff --git a/templates/layout/alert.php b/templates/layout/alert.php new file mode 100644 index 0000000..17e23ad --- /dev/null +++ b/templates/layout/alert.php @@ -0,0 +1,14 @@ + + diff --git a/templates/layout/collapse.php b/templates/layout/collapse.php new file mode 100644 index 0000000..ef0fac1 --- /dev/null +++ b/templates/layout/collapse.php @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/templates/layout/embed.php b/templates/layout/embed.php new file mode 100644 index 0000000..691490c --- /dev/null +++ b/templates/layout/embed.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/templates/layout/inherit.php b/templates/layout/inherit.php new file mode 100644 index 0000000..9564168 --- /dev/null +++ b/templates/layout/inherit.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/templates/layout/offcanvas.php b/templates/layout/offcanvas.php new file mode 100644 index 0000000..c868515 --- /dev/null +++ b/templates/layout/offcanvas.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/templates/layout/vertical.php b/templates/layout/vertical.php new file mode 100644 index 0000000..416e947 --- /dev/null +++ b/templates/layout/vertical.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/templates/logo.php b/templates/logo.php new file mode 100644 index 0000000..c1e0011 --- /dev/null +++ b/templates/logo.php @@ -0,0 +1,3 @@ + + ', esc_url($url), esc_attr(get_bloginfo('name'))); ?> + \ No newline at end of file diff --git a/uninstall.php b/uninstall.php new file mode 100644 index 0000000..5f1dcb7 --- /dev/null +++ b/uninstall.php @@ -0,0 +1,5 @@ += 7.0. [#34192] + +## [1.1.14] - 2023-09-19 + +- Minor internal updates. + +## [1.1.13] - 2023-08-23 +### Changed +- Updated package dependencies. [#32605] + +## [1.1.12] - 2023-07-24 +### Fixed +- Allow `beta-plugin-slug` for cases when a `wp-plugin-slug` doesn't exist yet but is planned to. [#31551] + +## [1.1.11] - 2023-05-22 +### Added +- Set keywords in `composer.json`. [#30756] + +## [1.1.10] - 2023-02-20 +### Changed +- Minor internal updates. + +## [1.1.9] - 2023-01-16 +### Fixed +- Ensure `jetpack_vendor/` exists before trying to write `jetpack_vendor/i18n-map.php`. [#28369] + +## [1.1.8] - 2022-12-19 +### Changed +- Updated package dependencies. [#27963] + +## [1.1.7] - 2022-12-02 +### Changed +- Updated package dependencies. [#27688] + +## [1.1.6] - 2022-11-22 +### Changed +- Updated package dependencies. [#27043] + +## [1.1.5] - 2022-10-25 +### Changed +- Sort data in generated `i18n-map.php` file to avoid spurious diffs. [#26929] + +## [1.1.4] - 2022-07-26 +### Changed +- Updated package dependencies. [#25158] + +## [1.1.3] - 2022-06-21 +### Changed +- Renaming master to trunk. + +## [1.1.2] - 2022-04-26 +### Changed +- Updated package dependencies. + +## [1.1.1] - 2022-04-12 +### Added +- Set `.extra.plugin-modifies-install-path` in composer.json for Composer 2.2.9+. + +## [1.1.0] - 2022-01-25 +### Added +- Include package path prefixes in `i18n-map.php` so Assets can map them when lazy-loading. + +## [1.0.2] - 2022-01-13 +### Fixed +- Composer's `getVersion()` likes to return 4-component versions, while semver wants only 3 components. Strip any extra components instead of considering that invalid. + +## [1.0.1] - 2022-01-04 +### Added +- Document use of jetpack-assets, jetpack-composer-plugin, and i18n-loader-webpack-plugin together. + +### Changed +- Switch to pcov for code coverage. +- Updated package dependencies. + +## [1.0.0] - 2021-12-22 +### Fixed +- Fix deletion of the i18n-map.php if the plugin isn't configured correctly. +- Fix handling of dev versions in i18n-map.php. + +## [0.2.0] - 2021-12-20 +### Added +- Generate an i18n mapping file for the installed libraries. + +## 0.1.0 - 2021-12-14 +### Added +- Added the Jetpack Installer package. + +[2.0.2]: https://github.com/Automattic/jetpack-composer-plugin/compare/v2.0.1...v2.0.2 +[2.0.1]: https://github.com/Automattic/jetpack-composer-plugin/compare/v2.0.0...v2.0.1 +[2.0.0]: https://github.com/Automattic/jetpack-composer-plugin/compare/v1.1.14...v2.0.0 +[1.1.14]: https://github.com/Automattic/jetpack-composer-plugin/compare/v1.1.13...v1.1.14 +[1.1.13]: https://github.com/Automattic/jetpack-composer-plugin/compare/v1.1.12...v1.1.13 +[1.1.12]: https://github.com/Automattic/jetpack-composer-plugin/compare/v1.1.11...v1.1.12 +[1.1.11]: https://github.com/Automattic/jetpack-composer-plugin/compare/v1.1.10...v1.1.11 +[1.1.10]: https://github.com/Automattic/jetpack-composer-plugin/compare/v1.1.9...v1.1.10 +[1.1.9]: https://github.com/Automattic/jetpack-composer-plugin/compare/v1.1.8...v1.1.9 +[1.1.8]: https://github.com/Automattic/jetpack-composer-plugin/compare/v1.1.7...v1.1.8 +[1.1.7]: https://github.com/Automattic/jetpack-composer-plugin/compare/v1.1.6...v1.1.7 +[1.1.6]: https://github.com/Automattic/jetpack-composer-plugin/compare/v1.1.5...v1.1.6 +[1.1.5]: https://github.com/Automattic/jetpack-composer-plugin/compare/v1.1.4...v1.1.5 +[1.1.4]: https://github.com/Automattic/jetpack-composer-plugin/compare/v1.1.3...v1.1.4 +[1.1.3]: https://github.com/Automattic/jetpack-composer-plugin/compare/v1.1.2...v1.1.3 +[1.1.2]: https://github.com/Automattic/jetpack-composer-plugin/compare/v1.1.1...v1.1.2 +[1.1.1]: https://github.com/Automattic/jetpack-composer-plugin/compare/v1.1.0...v1.1.1 +[1.1.0]: https://github.com/Automattic/jetpack-composer-plugin/compare/v1.0.2...v1.1.0 +[1.0.2]: https://github.com/Automattic/jetpack-composer-plugin/compare/v1.0.1...v1.0.2 +[1.0.1]: https://github.com/Automattic/jetpack-composer-plugin/compare/v1.0.0...v1.0.1 +[1.0.0]: https://github.com/Automattic/jetpack-composer-plugin/compare/v0.2.0...v1.0.0 +[0.2.0]: https://github.com/Automattic/jetpack-composer-plugin/compare/v0.1.0...v0.2.0 diff --git a/vendor/automattic/jetpack-composer-plugin/LICENSE.txt b/vendor/automattic/jetpack-composer-plugin/LICENSE.txt new file mode 100644 index 0000000..e82774c --- /dev/null +++ b/vendor/automattic/jetpack-composer-plugin/LICENSE.txt @@ -0,0 +1,357 @@ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +=================================== + + +GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + Preamble + +The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + +To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + +We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + +Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + +Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and +modification follow. + +GNU GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + +a) You must cause the modified files to carry prominent notices +stating that you changed the files and the date of any change. + +b) You must cause any work that you distribute or publish, that in +whole or in part contains or is derived from the Program or any +part thereof, to be licensed as a whole at no charge to all third +parties under the terms of this License. + +c) If the modified program normally reads commands interactively +when run, you must cause it, when started running for such +interactive use in the most ordinary way, to print or display an +announcement including an appropriate copyright notice and a +notice that there is no warranty (or else, saying that you provide +a warranty) and that users may redistribute the program under +these conditions, and telling the user how to view a copy of this +License. (Exception: if the Program itself is interactive but +does not normally print such an announcement, your work based on +the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + +3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + +a) Accompany it with the complete corresponding machine-readable +source code, which must be distributed under the terms of Sections +1 and 2 above on a medium customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least three +years, to give any third party, for a charge no more than your +cost of physically performing source distribution, a complete +machine-readable copy of the corresponding source code, to be +distributed under the terms of Sections 1 and 2 above on a medium +customarily used for software interchange; or, + +c) Accompany it with the information you received as to the offer +to distribute corresponding source code. (This alternative is +allowed only for noncommercial distribution and only if you +received the program in object code or executable form with such +an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + +5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + +7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + +9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + +10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + +Copyright (C) + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + +Gnomovision version 69, Copyright (C) year name of author +Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. +This is free software, and you are welcome to redistribute it +under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in the program +`Gnomovision' (which makes passes at compilers) written by James Hacker. + +, 1 April 1989 +Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/vendor/automattic/jetpack-composer-plugin/README.md b/vendor/automattic/jetpack-composer-plugin/README.md new file mode 100644 index 0000000..f332a1d --- /dev/null +++ b/vendor/automattic/jetpack-composer-plugin/README.md @@ -0,0 +1,46 @@ +# composer-plugin + +This is a custom installer plugin for Composer to help with WordPress translation of Composer libraries intended for use as shared code in plugins and themes. + +When this plugin is installed, libraries with `type` set to `jetpack-library` will be installed into `jetpack_vendor/` instead of the usual `vendor/`. +Also translation text domain information will be collected from such libraries and written to `jetpack_vendor/i18n-map.php`. + +## Use in a WordPress plugin or theme + +This plugin needs to be put into the `require` section of your `composer.json` file in order to be used. + +```json + "require": { + "automattic/jetpack-composer-plugin": "*" + }, +``` + +You'll also want to set `extra.wp-plugin-slug` or `extra.wp-theme-slug` to the WordPress.org slug, which is also the textdomain for your plugin or theme's translations. + +```json + "extra": { + "wp-plugin-slug": "my-plugin" + }, +``` + +Finally, for the libraries' translations to work, you'll also want to require [automattic/jetpack-assets](https://packagist.org/packages/automattic/jetpack-assets) +and include something like the following in your initialization code just after you load the autoloader: +```php +\Automattic\Jetpack\Assets::alias_textdomains_from_file( __DIR__ . '/jetpack_vendor/i18n-map.php' ); +``` + +## Use by a library + +A library that wants to be used in WordPress plugins or themes needs to set the `type` in `composer.json` to `jetpack-library`. The library package _should not_ itself include a dependency on automattic/jetpack-composer-plugin, although it may [suggest](https://getcomposer.org/doc/04-schema.md#suggest) it. + +All calls to `__()`, `_x()`, and other WordPress i18n functions should then use a textdomain unique to the library. This textdomain also needs to be declared in `composer.json` as `extra.textdomain`: +```json + "extra": { + "textdomain": "my-library" + }, +``` + +## License + +composer-plugin is licensed under [GNU General Public License v2 (or later)](./LICENSE.txt) + diff --git a/vendor/automattic/jetpack-composer-plugin/SECURITY.md b/vendor/automattic/jetpack-composer-plugin/SECURITY.md new file mode 100644 index 0000000..98f48dd --- /dev/null +++ b/vendor/automattic/jetpack-composer-plugin/SECURITY.md @@ -0,0 +1,47 @@ +# Security Policy + +Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). + +## Supported Versions + +Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. + +## Reporting a Vulnerability + +Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: + +* [Jetpack](https://jetpack.com/) +* Jetpack Backup +* Jetpack Boost +* Jetpack CRM +* Jetpack Protect +* Jetpack Search +* Jetpack Social +* Jetpack VideoPress + +**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** + +Our most critical targets are: + +* Jetpack and the Jetpack composer packages (all within this repo) +* Jetpack.com -- the primary marketing site. +* cloud.jetpack.com -- a management site. +* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. + +For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). + +_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ + +## Guidelines + +We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: + +* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). +* Pen-testing Production: + * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). + * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. + * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. + * To be eligible for a bounty, all of these guidelines must be followed. +* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. + +We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/vendor/automattic/jetpack-composer-plugin/src/class-manager.php b/vendor/automattic/jetpack-composer-plugin/src/class-manager.php new file mode 100644 index 0000000..7577edb --- /dev/null +++ b/vendor/automattic/jetpack-composer-plugin/src/class-manager.php @@ -0,0 +1,41 @@ +getPrettyName(); + } + + /** + * Declares the supported package type by returning true whenever it meets a package + * that declares itself as a Jetpack library. + * + * @param string $package_type a package type string. + * @return boolean whether the package is supported. + * @phan-suppress PhanParamSignatureRealMismatchHasNoParamType -- contravariant params are ok, and needed to continue to support Composer <2.3. + */ + public function supports( $package_type ) { + return 'jetpack-library' === $package_type; + } +} diff --git a/vendor/automattic/jetpack-composer-plugin/src/class-plugin.php b/vendor/automattic/jetpack-composer-plugin/src/class-plugin.php new file mode 100644 index 0000000..317130e --- /dev/null +++ b/vendor/automattic/jetpack-composer-plugin/src/class-plugin.php @@ -0,0 +1,154 @@ +installer = new Manager( $io, $composer ); + $composer->getInstallationManager()->addInstaller( $this->installer ); + } + + /** + * Deactivates the installer plugin. + * + * @param Composer $composer the Composer global instance. + * @param IOInterface $io the IO interface global instance. + */ + public function deactivate( Composer $composer, IOInterface $io ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable + $composer->getInstallationManager()->removeInstaller( $this->installer ); + } + + /** + * Uninstalls the installer plugin. + * + * @param Composer $composer the Composer global instance. + * @param IOInterface $io the IO interface global instance. + */ + public function uninstall( Composer $composer, IOInterface $io ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable + } + + /** + * Tell composer to listen for events and do something with them. + * + * @return array List of subscribed events. + */ + public static function getSubscribedEvents() { + return array( + ScriptEvents::POST_INSTALL_CMD => 'generateManifest', + ScriptEvents::POST_UPDATE_CMD => 'generateManifest', + ); + } + + /** + * Generate the assets manifest. + * + * @param Event $event Script event object. + */ + public function generateManifest( Event $event ) { + $composer = $event->getComposer(); + $filesystem = new Filesystem(); + $io = $event->getIO(); + $io->info( 'Generating jetpack-library i18n map' ); + + $extra = $composer->getPackage()->getExtra(); + if ( isset( $extra['wp-plugin-slug'] ) ) { + $todomain = $extra['wp-plugin-slug']; + $totype = 'plugins'; + } elseif ( isset( $extra['wp-theme-slug'] ) ) { + $todomain = $extra['wp-theme-slug']; + $totype = 'themes'; + } elseif ( isset( $extra['beta-plugin-slug'] ) ) { + $todomain = $extra['beta-plugin-slug']; + $totype = 'plugins'; + } elseif ( isset( $extra['beta-theme-slug'] ) ) { + $todomain = $extra['beta-theme-slug']; + $totype = 'themes'; + } else { + $io->warning( 'Skipping jetpack-library i18n map generation, .extra.wp-plugin-slug / .extra.wp-theme-slug is not set in composer.json' ); + $filesystem->remove( 'jetpack_vendor/i18n-map.php' ); + return; + } + + $data = array( + 'domain' => $todomain, + 'type' => $totype, + 'packages' => array(), + ); + foreach ( $composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages() as $package ) { + if ( $package->getType() !== 'jetpack-library' ) { + continue; + } + + $ver = $package->getVersion(); + if ( isset( $extra['branch-alias'][ $ver ] ) ) { + $ver = $extra['branch-alias'][ $ver ]; + } + + // Composer's `getVersion()` seems to like to return a 4-component version, while semver wants only 3 components. Strip any extra components. + $ver = preg_replace( '/^(\d+\.\d+\.\d+)(?:\.\d+)+/', '$1', $ver ); + + if ( ! preg_match( '/^\d+\.\d+\.\d+(?:-[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*)?(?:\+[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*)?$/', $ver ) ) { + // Invalid version, skip it. + $ver = '0.0.0'; + } + + $extra = $package->getExtra(); + if ( empty( $extra['textdomain'] ) ) { + $io->info( " {$package->getName()} ($ver): no textdomain set" ); + } else { + $data['packages'][ $extra['textdomain'] ] = array( + 'path' => 'jetpack_vendor/' . $package->getPrettyName(), + 'ver' => $ver, + ); + $io->info( " {$package->getName()} ($ver): textdomain is {$extra['textdomain']}, path is jetpack_vendor/{$package->getPrettyName()}" ); + } + } + + ksort( $data['packages'] ); + + $code = " \n\s*array\(/', ' => array(', $code ); + + $filesystem->ensureDirectoryExists( 'jetpack_vendor' ); + $filesystem->filePutContentsIfModified( 'jetpack_vendor/i18n-map.php', $code ); + } +} diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php new file mode 100644 index 0000000..7824d8f --- /dev/null +++ b/vendor/composer/ClassLoader.php @@ -0,0 +1,579 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +/** + * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. + * + * $loader = new \Composer\Autoload\ClassLoader(); + * + * // register classes with namespaces + * $loader->add('Symfony\Component', __DIR__.'/component'); + * $loader->add('Symfony', __DIR__.'/framework'); + * + * // activate the autoloader + * $loader->register(); + * + * // to enable searching the include path (eg. for PEAR packages) + * $loader->setUseIncludePath(true); + * + * In this example, if you try to use a class in the Symfony\Component + * namespace or one of its children (Symfony\Component\Console for instance), + * the autoloader will first look for the class under the component/ + * directory, and it will then fallback to the framework/ directory if not + * found before giving up. + * + * This class is loosely based on the Symfony UniversalClassLoader. + * + * @author Fabien Potencier + * @author Jordi Boggiano + * @see https://www.php-fig.org/psr/psr-0/ + * @see https://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + /** @var \Closure(string):void */ + private static $includeFile; + + /** @var string|null */ + private $vendorDir; + + // PSR-4 + /** + * @var array> + */ + private $prefixLengthsPsr4 = array(); + /** + * @var array> + */ + private $prefixDirsPsr4 = array(); + /** + * @var list + */ + private $fallbackDirsPsr4 = array(); + + // PSR-0 + /** + * List of PSR-0 prefixes + * + * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2'))) + * + * @var array>> + */ + private $prefixesPsr0 = array(); + /** + * @var list + */ + private $fallbackDirsPsr0 = array(); + + /** @var bool */ + private $useIncludePath = false; + + /** + * @var array + */ + private $classMap = array(); + + /** @var bool */ + private $classMapAuthoritative = false; + + /** + * @var array + */ + private $missingClasses = array(); + + /** @var string|null */ + private $apcuPrefix; + + /** + * @var array + */ + private static $registeredLoaders = array(); + + /** + * @param string|null $vendorDir + */ + public function __construct($vendorDir = null) + { + $this->vendorDir = $vendorDir; + self::initializeIncludeClosure(); + } + + /** + * @return array> + */ + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); + } + + return array(); + } + + /** + * @return array> + */ + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + /** + * @return list + */ + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + /** + * @return list + */ + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + /** + * @return array Array of classname => path + */ + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param array $classMap Class to filename map + * + * @return void + */ + public function addClassMap(array $classMap) + { + if ($this->classMap) { + $this->classMap = array_merge($this->classMap, $classMap); + } else { + $this->classMap = $classMap; + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, either + * appending or prepending to the ones previously set for this prefix. + * + * @param string $prefix The prefix + * @param list|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + * + * @return void + */ + public function add($prefix, $paths, $prepend = false) + { + $paths = (array) $paths; + if (!$prefix) { + if ($prepend) { + $this->fallbackDirsPsr0 = array_merge( + $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = $paths; + + return; + } + if ($prepend) { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $paths, + $this->prefixesPsr0[$first][$prefix] + ); + } else { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $this->prefixesPsr0[$first][$prefix], + $paths + ); + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, either + * appending or prepending to the ones previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param list|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + public function addPsr4($prefix, $paths, $prepend = false) + { + $paths = (array) $paths; + if (!$prefix) { + // Register directories for the root namespace. + if ($prepend) { + $this->fallbackDirsPsr4 = array_merge( + $paths, + $this->fallbackDirsPsr4 + ); + } else { + $this->fallbackDirsPsr4 = array_merge( + $this->fallbackDirsPsr4, + $paths + ); + } + } elseif (!isset($this->prefixDirsPsr4[$prefix])) { + // Register directories for a new namespace. + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = $paths; + } elseif ($prepend) { + // Prepend directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $paths, + $this->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + $paths + ); + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. + * + * @param string $prefix The prefix + * @param list|string $paths The PSR-0 base directories + * + * @return void + */ + public function set($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, + * replacing any others previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param list|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + public function setPsr4($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr4 = (array) $paths; + } else { + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } + } + + /** + * Turns on searching the include path for class files. + * + * @param bool $useIncludePath + * + * @return void + */ + public function setUseIncludePath($useIncludePath) + { + $this->useIncludePath = $useIncludePath; + } + + /** + * Can be used to check if the autoloader uses the include path to check + * for classes. + * + * @return bool + */ + public function getUseIncludePath() + { + return $this->useIncludePath; + } + + /** + * Turns off searching the prefix and fallback directories for classes + * that have not been registered with the class map. + * + * @param bool $classMapAuthoritative + * + * @return void + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = $classMapAuthoritative; + } + + /** + * Should class lookup fail if not found in the current class map? + * + * @return bool + */ + public function isClassMapAuthoritative() + { + return $this->classMapAuthoritative; + } + + /** + * APCu prefix to use to cache found/not-found classes, if the extension is enabled. + * + * @param string|null $apcuPrefix + * + * @return void + */ + public function setApcuPrefix($apcuPrefix) + { + $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; + } + + /** + * The APCu prefix in use, or null if APCu caching is not enabled. + * + * @return string|null + */ + public function getApcuPrefix() + { + return $this->apcuPrefix; + } + + /** + * Registers this instance as an autoloader. + * + * @param bool $prepend Whether to prepend the autoloader or not + * + * @return void + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + + if (null === $this->vendorDir) { + return; + } + + if ($prepend) { + self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; + } else { + unset(self::$registeredLoaders[$this->vendorDir]); + self::$registeredLoaders[$this->vendorDir] = $this; + } + } + + /** + * Unregisters this instance as an autoloader. + * + * @return void + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + + if (null !== $this->vendorDir) { + unset(self::$registeredLoaders[$this->vendorDir]); + } + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return true|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + $includeFile = self::$includeFile; + $includeFile($file); + + return true; + } + + return null; + } + + /** + * Finds the path to the file where the class is defined. + * + * @param string $class The name of the class + * + * @return string|false The path if found, false otherwise + */ + public function findFile($class) + { + // class map lookup + if (isset($this->classMap[$class])) { + return $this->classMap[$class]; + } + if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { + return false; + } + if (null !== $this->apcuPrefix) { + $file = apcu_fetch($this->apcuPrefix.$class, $hit); + if ($hit) { + return $file; + } + } + + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if (false === $file && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if (null !== $this->apcuPrefix) { + apcu_add($this->apcuPrefix.$class, $file); + } + + if (false === $file) { + // Remember that this class does not exist. + $this->missingClasses[$class] = true; + } + + return $file; + } + + /** + * Returns the currently registered loaders keyed by their corresponding vendor directories. + * + * @return array + */ + public static function getRegisteredLoaders() + { + return self::$registeredLoaders; + } + + /** + * @param string $class + * @param string $ext + * @return string|false + */ + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + $subPath = $class; + while (false !== $lastPos = strrpos($subPath, '\\')) { + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath . '\\'; + if (isset($this->prefixDirsPsr4[$search])) { + $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); + foreach ($this->prefixDirsPsr4[$search] as $dir) { + if (file_exists($file = $dir . $pathEnd)) { + return $file; + } + } + } + } + } + + // PSR-4 fallback dirs + foreach ($this->fallbackDirsPsr4 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { + return $file; + } + } + + // PSR-0 lookup + if (false !== $pos = strrpos($class, '\\')) { + // namespaced class name + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); + } else { + // PEAR-like class name + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; + } + + if (isset($this->prefixesPsr0[$first])) { + foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { + if (0 === strpos($class, $prefix)) { + foreach ($dirs as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + } + } + } + + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { + return $file; + } + + return false; + } + + /** + * @return void + */ + private static function initializeIncludeClosure() + { + if (self::$includeFile !== null) { + return; + } + + /** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + * + * @param string $file + * @return void + */ + self::$includeFile = \Closure::bind(static function($file) { + include $file; + }, null, null); + } +} diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php new file mode 100644 index 0000000..51e734a --- /dev/null +++ b/vendor/composer/InstalledVersions.php @@ -0,0 +1,359 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer; + +use Composer\Autoload\ClassLoader; +use Composer\Semver\VersionParser; + +/** + * This class is copied in every Composer installed project and available to all + * + * See also https://getcomposer.org/doc/07-runtime.md#installed-versions + * + * To require its presence, you can require `composer-runtime-api ^2.0` + * + * @final + */ +class InstalledVersions +{ + /** + * @var mixed[]|null + * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null + */ + private static $installed; + + /** + * @var bool|null + */ + private static $canGetVendors; + + /** + * @var array[] + * @psalm-var array}> + */ + private static $installedByVendor = array(); + + /** + * Returns a list of all package names which are present, either by being installed, replaced or provided + * + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackages() + { + $packages = array(); + foreach (self::getInstalled() as $installed) { + $packages[] = array_keys($installed['versions']); + } + + if (1 === \count($packages)) { + return $packages[0]; + } + + return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); + } + + /** + * Returns a list of all package names with a specific type e.g. 'library' + * + * @param string $type + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackagesByType($type) + { + $packagesByType = array(); + + foreach (self::getInstalled() as $installed) { + foreach ($installed['versions'] as $name => $package) { + if (isset($package['type']) && $package['type'] === $type) { + $packagesByType[] = $name; + } + } + } + + return $packagesByType; + } + + /** + * Checks whether the given package is installed + * + * This also returns true if the package name is provided or replaced by another package + * + * @param string $packageName + * @param bool $includeDevRequirements + * @return bool + */ + public static function isInstalled($packageName, $includeDevRequirements = true) + { + foreach (self::getInstalled() as $installed) { + if (isset($installed['versions'][$packageName])) { + return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false; + } + } + + return false; + } + + /** + * Checks whether the given package satisfies a version constraint + * + * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: + * + * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') + * + * @param VersionParser $parser Install composer/semver to have access to this class and functionality + * @param string $packageName + * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package + * @return bool + */ + public static function satisfies(VersionParser $parser, $packageName, $constraint) + { + $constraint = $parser->parseConstraints((string) $constraint); + $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); + + return $provided->matches($constraint); + } + + /** + * Returns a version constraint representing all the range(s) which are installed for a given package + * + * It is easier to use this via isInstalled() with the $constraint argument if you need to check + * whether a given version of a package is installed, and not just whether it exists + * + * @param string $packageName + * @return string Version constraint usable with composer/semver + */ + public static function getVersionRanges($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + $ranges = array(); + if (isset($installed['versions'][$packageName]['pretty_version'])) { + $ranges[] = $installed['versions'][$packageName]['pretty_version']; + } + if (array_key_exists('aliases', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); + } + if (array_key_exists('replaced', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); + } + if (array_key_exists('provided', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); + } + + return implode(' || ', $ranges); + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['version'])) { + return null; + } + + return $installed['versions'][$packageName]['version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getPrettyVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['pretty_version'])) { + return null; + } + + return $installed['versions'][$packageName]['pretty_version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference + */ + public static function getReference($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['reference'])) { + return null; + } + + return $installed['versions'][$packageName]['reference']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. + */ + public static function getInstallPath($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @return array + * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} + */ + public static function getRootPackage() + { + $installed = self::getInstalled(); + + return $installed[0]['root']; + } + + /** + * Returns the raw installed.php data for custom implementations + * + * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. + * @return array[] + * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} + */ + public static function getRawData() + { + @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = include __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + + return self::$installed; + } + + /** + * Returns the raw data of all installed.php which are currently loaded for custom implementations + * + * @return array[] + * @psalm-return list}> + */ + public static function getAllRawData() + { + return self::getInstalled(); + } + + /** + * Lets you reload the static array from another file + * + * This is only useful for complex integrations in which a project needs to use + * this class but then also needs to execute another project's autoloader in process, + * and wants to ensure both projects have access to their version of installed.php. + * + * A typical case would be PHPUnit, where it would need to make sure it reads all + * the data it needs from this class, then call reload() with + * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure + * the project in which it runs can then also use this class safely, without + * interference between PHPUnit's dependencies and the project's dependencies. + * + * @param array[] $data A vendor/composer/installed.php data set + * @return void + * + * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data + */ + public static function reload($data) + { + self::$installed = $data; + self::$installedByVendor = array(); + } + + /** + * @return array[] + * @psalm-return list}> + */ + private static function getInstalled() + { + if (null === self::$canGetVendors) { + self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); + } + + $installed = array(); + + if (self::$canGetVendors) { + foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { + if (isset(self::$installedByVendor[$vendorDir])) { + $installed[] = self::$installedByVendor[$vendorDir]; + } elseif (is_file($vendorDir.'/composer/installed.php')) { + /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ + $required = require $vendorDir.'/composer/installed.php'; + $installed[] = self::$installedByVendor[$vendorDir] = $required; + if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { + self::$installed = $installed[count($installed) - 1]; + } + } + } + } + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ + $required = require __DIR__ . '/installed.php'; + self::$installed = $required; + } else { + self::$installed = array(); + } + } + + if (self::$installed !== array()) { + $installed[] = self::$installed; + } + + return $installed; + } +} diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE new file mode 100644 index 0000000..f27399a --- /dev/null +++ b/vendor/composer/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) Nils Adermann, Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php new file mode 100644 index 0000000..7fcd8ca --- /dev/null +++ b/vendor/composer/autoload_classmap.php @@ -0,0 +1,75 @@ + $baseDir . '/jetpack_vendor/automattic/jetpack-assets/src/class-assets.php', + 'Automattic\\Jetpack\\Assets\\Semver' => $baseDir . '/jetpack_vendor/automattic/jetpack-assets/src/class-semver.php', + 'Automattic\\Jetpack\\Composer\\Manager' => $vendorDir . '/automattic/jetpack-composer-plugin/src/class-manager.php', + 'Automattic\\Jetpack\\Composer\\Plugin' => $vendorDir . '/automattic/jetpack-composer-plugin/src/class-plugin.php', + 'Automattic\\Jetpack\\Constants' => $baseDir . '/jetpack_vendor/automattic/jetpack-constants/src/class-constants.php', + 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', + 'ET_Builder_Module_QuadMenu' => $baseDir . '/lib/integrations/divi/modules/QuadMenu/QuadMenu.php', + 'FLQuadMenuModule' => $baseDir . '/lib/integrations/beaver/module.php', + 'QuadLayers\\QuadMenu\\Activation' => $baseDir . '/lib/class-activation.php', + 'QuadLayers\\QuadMenu\\Admin' => $baseDir . '/lib/class-admin.php', + 'QuadLayers\\QuadMenu\\Backend\\Ajax' => $baseDir . '/lib/backend/class-ajax.php', + 'QuadLayers\\QuadMenu\\Backend\\Settings' => $baseDir . '/lib/backend/class-settings.php', + 'QuadLayers\\QuadMenu\\Backend\\Walker\\Nav_Menu_Columns' => $baseDir . '/lib/backend/walker/class-nav-menu-columns.php', + 'QuadLayers\\QuadMenu\\Backend\\Walker\\Nav_Menu_Defaults' => $baseDir . '/lib/backend/walker/class-nav-menu-defaults.php', + 'QuadLayers\\QuadMenu\\Backend\\Walker\\Nav_Menu_Mega' => $baseDir . '/lib/backend/walker/class-nav-menu-mega.php', + 'QuadLayers\\QuadMenu\\Backend\\Walker\\Nav_Menu_Widgets' => $baseDir . '/lib/backend/walker/class-nav-menu-widgets.php', + 'QuadLayers\\QuadMenu\\Compiler' => $baseDir . '/lib/class-compiler.php', + 'QuadLayers\\QuadMenu\\Configuration' => $baseDir . '/lib/class-configuration.php', + 'QuadLayers\\QuadMenu\\Frontend\\Frontend' => $baseDir . '/lib/frontend/class-frontend.php', + 'QuadLayers\\QuadMenu\\Frontend\\Items' => $baseDir . '/lib/frontend/class-items.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item' => $baseDir . '/lib/frontend/walker/class-quadmenu-item.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Cart' => $baseDir . '/lib/frontend/walker/class-quadmenu-item-cart.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Column' => $baseDir . '/lib/frontend/walker/class-quadmenu-item-column.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Default' => $baseDir . '/lib/frontend/walker/class-quadmenu-item-default.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Icon' => $baseDir . '/lib/frontend/walker/class-quadmenu-item-icon.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Mega' => $baseDir . '/lib/frontend/walker/class-quadmenu-item-mega.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Post_Type' => $baseDir . '/lib/frontend/walker/class-quadmenu-item-post-type.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Search' => $baseDir . '/lib/frontend/walker/class-quadmenu-item-search.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Widget' => $baseDir . '/lib/frontend/walker/class-quadmenu-item-widget.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Walker' => $baseDir . '/lib/frontend/walker/class-quadmenu-walker.php', + 'QuadLayers\\QuadMenu\\Icons' => $baseDir . '/lib/class-icons.php', + 'QuadLayers\\QuadMenu\\Integrations\\Beaver' => $baseDir . '/lib/integrations/class-beaver.php', + 'QuadLayers\\QuadMenu\\Integrations\\Beaver\\Module' => $baseDir . '/lib/integrations/beaver/class-module.php', + 'QuadLayers\\QuadMenu\\Integrations\\Divi' => $baseDir . '/lib/integrations/class-divi.php', + 'QuadLayers\\QuadMenu\\Integrations\\Divi\\Module' => $baseDir . '/lib/integrations/divi/class-module.php', + 'QuadLayers\\QuadMenu\\Integrations\\Elementor' => $baseDir . '/lib/integrations/class-elementor.php', + 'QuadLayers\\QuadMenu\\Integrations\\Elementor\\Module' => $baseDir . '/lib/integrations/elementor/class-module.php', + 'QuadLayers\\QuadMenu\\Integrations\\Polylang' => $baseDir . '/lib/integrations/class-polylang.php', + 'QuadLayers\\QuadMenu\\Integrations\\WooCommerce' => $baseDir . '/lib/integrations/class-woocommerce.php', + 'QuadLayers\\QuadMenu\\Locations' => $baseDir . '/lib/class-locations.php', + 'QuadLayers\\QuadMenu\\Options' => $baseDir . '/lib/class-options.php', + 'QuadLayers\\QuadMenu\\Panel' => $baseDir . '/lib/class-panel.php', + 'QuadLayers\\QuadMenu\\Panel\\Options' => $baseDir . '/lib/panel/class-options.php', + 'QuadLayers\\QuadMenu\\Panel\\Premium' => $baseDir . '/lib/panel/class-premium.php', + 'QuadLayers\\QuadMenu\\Panel\\System' => $baseDir . '/lib/panel/class-system.php', + 'QuadLayers\\QuadMenu\\Panel\\Welcome' => $baseDir . '/lib/panel/class-welcome.php', + 'QuadLayers\\QuadMenu\\Plugin' => $baseDir . '/lib/class-plugin.php', + 'QuadLayers\\QuadMenu\\Redux' => $baseDir . '/lib/class-redux.php', + 'QuadLayers\\QuadMenu\\Themes' => $baseDir . '/lib/class-themes.php', + 'QuadLayers\\QuadMenu\\Widget' => $baseDir . '/lib/class-widget.php', + 'QuadLayers\\WP_Dashboard_Widget_News\\Load' => $baseDir . '/jetpack_vendor/quadlayers/wp-dashboard-widget-news/src/Load.php', + 'QuadLayers\\WP_Notice_Plugin_Promote\\Load' => $baseDir . '/jetpack_vendor/quadlayers/wp-notice-plugin-promote/src/Load.php', + 'QuadLayers\\WP_Notice_Plugin_Promote\\PluginByFile' => $baseDir . '/jetpack_vendor/quadlayers/wp-notice-plugin-promote/src/PluginByFile.php', + 'QuadLayers\\WP_Notice_Plugin_Promote\\PluginBySlug' => $baseDir . '/jetpack_vendor/quadlayers/wp-notice-plugin-promote/src/PluginBySlug.php', + 'QuadLayers\\WP_Notice_Plugin_Promote\\PluginBySlugV2' => $baseDir . '/jetpack_vendor/quadlayers/wp-notice-plugin-promote/src/PluginBySlugV2.php', + 'QuadLayers\\WP_Notice_Plugin_Promote\\Traits\\PluginActions' => $baseDir . '/jetpack_vendor/quadlayers/wp-notice-plugin-promote/src/Traits/PluginActions.php', + 'QuadLayers\\WP_Notice_Plugin_Promote\\Traits\\PluginActionsLinks' => $baseDir . '/jetpack_vendor/quadlayers/wp-notice-plugin-promote/src/Traits/PluginActionsLinks.php', + 'QuadLayers\\WP_Notice_Plugin_Promote\\Traits\\PluginDataByFile' => $baseDir . '/jetpack_vendor/quadlayers/wp-notice-plugin-promote/src/Traits/PluginDataByFile.php', + 'QuadLayers\\WP_Notice_Plugin_Required\\Load' => $baseDir . '/jetpack_vendor/quadlayers/wp-notice-plugin-required/src/Load.php', + 'QuadLayers\\WP_Notice_Plugin_Required\\Plugin' => $baseDir . '/jetpack_vendor/quadlayers/wp-notice-plugin-required/src/Plugin.php', + 'QuadLayers\\WP_Plugin_Install_Tab\\Load' => $baseDir . '/jetpack_vendor/quadlayers/wp-plugin-install-tab/src/Load.php', + 'QuadLayers\\WP_Plugin_Suggestions\\Load' => $baseDir . '/jetpack_vendor/quadlayers/wp-plugin-suggestions/src/Load.php', + 'QuadLayers\\WP_Plugin_Suggestions\\Page' => $baseDir . '/jetpack_vendor/quadlayers/wp-plugin-suggestions/src/Page.php', + 'QuadLayers\\WP_Plugin_Suggestions\\Table' => $baseDir . '/jetpack_vendor/quadlayers/wp-plugin-suggestions/src/Table.php', + 'QuadLayers\\WP_Plugin_Table_Links\\Load' => $baseDir . '/jetpack_vendor/quadlayers/wp-plugin-table-links/src/Load.php', + 'WPBakeryShortCode_quadmenu_vc' => $baseDir . '/lib/integrations/class-vc.php', +); diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php new file mode 100644 index 0000000..5d1c1f1 --- /dev/null +++ b/vendor/composer/autoload_files.php @@ -0,0 +1,10 @@ + $baseDir . '/jetpack_vendor/automattic/jetpack-assets/actions.php', +); diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php new file mode 100644 index 0000000..15a2ff3 --- /dev/null +++ b/vendor/composer/autoload_namespaces.php @@ -0,0 +1,9 @@ + array($baseDir . '/jetpack_vendor/quadlayers/wp-plugin-table-links/src'), + 'QuadLayers\\WP_Plugin_Suggestions\\' => array($baseDir . '/jetpack_vendor/quadlayers/wp-plugin-suggestions/src'), + 'QuadLayers\\WP_Plugin_Install_Tab\\' => array($baseDir . '/jetpack_vendor/quadlayers/wp-plugin-install-tab/src'), + 'QuadLayers\\WP_Notice_Plugin_Required\\' => array($baseDir . '/jetpack_vendor/quadlayers/wp-notice-plugin-required/src'), + 'QuadLayers\\WP_Notice_Plugin_Promote\\' => array($baseDir . '/jetpack_vendor/quadlayers/wp-notice-plugin-promote/src'), + 'QuadLayers\\WP_Dashboard_Widget_News\\' => array($baseDir . '/jetpack_vendor/quadlayers/wp-dashboard-widget-news/src'), +); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php new file mode 100644 index 0000000..0e8795e --- /dev/null +++ b/vendor/composer/autoload_real.php @@ -0,0 +1,50 @@ +register(true); + + $filesToLoad = \Composer\Autoload\ComposerStaticInitbc68521166e23e0e643a362225ccc0cc::$files; + $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { + if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { + $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; + + require $file; + } + }, null, null); + foreach ($filesToLoad as $fileIdentifier => $file) { + $requireFile($fileIdentifier, $file); + } + + return $loader; + } +} diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php new file mode 100644 index 0000000..1458821 --- /dev/null +++ b/vendor/composer/autoload_static.php @@ -0,0 +1,130 @@ + __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-assets/actions.php', + ); + + public static $prefixLengthsPsr4 = array ( + 'Q' => + array ( + 'QuadLayers\\WP_Plugin_Table_Links\\' => 33, + 'QuadLayers\\WP_Plugin_Suggestions\\' => 33, + 'QuadLayers\\WP_Plugin_Install_Tab\\' => 33, + 'QuadLayers\\WP_Notice_Plugin_Required\\' => 37, + 'QuadLayers\\WP_Notice_Plugin_Promote\\' => 36, + 'QuadLayers\\WP_Dashboard_Widget_News\\' => 36, + ), + ); + + public static $prefixDirsPsr4 = array ( + 'QuadLayers\\WP_Plugin_Table_Links\\' => + array ( + 0 => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-plugin-table-links/src', + ), + 'QuadLayers\\WP_Plugin_Suggestions\\' => + array ( + 0 => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-plugin-suggestions/src', + ), + 'QuadLayers\\WP_Plugin_Install_Tab\\' => + array ( + 0 => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-plugin-install-tab/src', + ), + 'QuadLayers\\WP_Notice_Plugin_Required\\' => + array ( + 0 => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-notice-plugin-required/src', + ), + 'QuadLayers\\WP_Notice_Plugin_Promote\\' => + array ( + 0 => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-notice-plugin-promote/src', + ), + 'QuadLayers\\WP_Dashboard_Widget_News\\' => + array ( + 0 => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-dashboard-widget-news/src', + ), + ); + + public static $classMap = array ( + 'Automattic\\Jetpack\\Assets' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-assets/src/class-assets.php', + 'Automattic\\Jetpack\\Assets\\Semver' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-assets/src/class-semver.php', + 'Automattic\\Jetpack\\Composer\\Manager' => __DIR__ . '/..' . '/automattic/jetpack-composer-plugin/src/class-manager.php', + 'Automattic\\Jetpack\\Composer\\Plugin' => __DIR__ . '/..' . '/automattic/jetpack-composer-plugin/src/class-plugin.php', + 'Automattic\\Jetpack\\Constants' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-constants/src/class-constants.php', + 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', + 'ET_Builder_Module_QuadMenu' => __DIR__ . '/../..' . '/lib/integrations/divi/modules/QuadMenu/QuadMenu.php', + 'FLQuadMenuModule' => __DIR__ . '/../..' . '/lib/integrations/beaver/module.php', + 'QuadLayers\\QuadMenu\\Activation' => __DIR__ . '/../..' . '/lib/class-activation.php', + 'QuadLayers\\QuadMenu\\Admin' => __DIR__ . '/../..' . '/lib/class-admin.php', + 'QuadLayers\\QuadMenu\\Backend\\Ajax' => __DIR__ . '/../..' . '/lib/backend/class-ajax.php', + 'QuadLayers\\QuadMenu\\Backend\\Settings' => __DIR__ . '/../..' . '/lib/backend/class-settings.php', + 'QuadLayers\\QuadMenu\\Backend\\Walker\\Nav_Menu_Columns' => __DIR__ . '/../..' . '/lib/backend/walker/class-nav-menu-columns.php', + 'QuadLayers\\QuadMenu\\Backend\\Walker\\Nav_Menu_Defaults' => __DIR__ . '/../..' . '/lib/backend/walker/class-nav-menu-defaults.php', + 'QuadLayers\\QuadMenu\\Backend\\Walker\\Nav_Menu_Mega' => __DIR__ . '/../..' . '/lib/backend/walker/class-nav-menu-mega.php', + 'QuadLayers\\QuadMenu\\Backend\\Walker\\Nav_Menu_Widgets' => __DIR__ . '/../..' . '/lib/backend/walker/class-nav-menu-widgets.php', + 'QuadLayers\\QuadMenu\\Compiler' => __DIR__ . '/../..' . '/lib/class-compiler.php', + 'QuadLayers\\QuadMenu\\Configuration' => __DIR__ . '/../..' . '/lib/class-configuration.php', + 'QuadLayers\\QuadMenu\\Frontend\\Frontend' => __DIR__ . '/../..' . '/lib/frontend/class-frontend.php', + 'QuadLayers\\QuadMenu\\Frontend\\Items' => __DIR__ . '/../..' . '/lib/frontend/class-items.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item' => __DIR__ . '/../..' . '/lib/frontend/walker/class-quadmenu-item.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Cart' => __DIR__ . '/../..' . '/lib/frontend/walker/class-quadmenu-item-cart.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Column' => __DIR__ . '/../..' . '/lib/frontend/walker/class-quadmenu-item-column.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Default' => __DIR__ . '/../..' . '/lib/frontend/walker/class-quadmenu-item-default.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Icon' => __DIR__ . '/../..' . '/lib/frontend/walker/class-quadmenu-item-icon.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Mega' => __DIR__ . '/../..' . '/lib/frontend/walker/class-quadmenu-item-mega.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Post_Type' => __DIR__ . '/../..' . '/lib/frontend/walker/class-quadmenu-item-post-type.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Search' => __DIR__ . '/../..' . '/lib/frontend/walker/class-quadmenu-item-search.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Item_Widget' => __DIR__ . '/../..' . '/lib/frontend/walker/class-quadmenu-item-widget.php', + 'QuadLayers\\QuadMenu\\Frontend\\Walker\\QuadMenu_Walker' => __DIR__ . '/../..' . '/lib/frontend/walker/class-quadmenu-walker.php', + 'QuadLayers\\QuadMenu\\Icons' => __DIR__ . '/../..' . '/lib/class-icons.php', + 'QuadLayers\\QuadMenu\\Integrations\\Beaver' => __DIR__ . '/../..' . '/lib/integrations/class-beaver.php', + 'QuadLayers\\QuadMenu\\Integrations\\Beaver\\Module' => __DIR__ . '/../..' . '/lib/integrations/beaver/class-module.php', + 'QuadLayers\\QuadMenu\\Integrations\\Divi' => __DIR__ . '/../..' . '/lib/integrations/class-divi.php', + 'QuadLayers\\QuadMenu\\Integrations\\Divi\\Module' => __DIR__ . '/../..' . '/lib/integrations/divi/class-module.php', + 'QuadLayers\\QuadMenu\\Integrations\\Elementor' => __DIR__ . '/../..' . '/lib/integrations/class-elementor.php', + 'QuadLayers\\QuadMenu\\Integrations\\Elementor\\Module' => __DIR__ . '/../..' . '/lib/integrations/elementor/class-module.php', + 'QuadLayers\\QuadMenu\\Integrations\\Polylang' => __DIR__ . '/../..' . '/lib/integrations/class-polylang.php', + 'QuadLayers\\QuadMenu\\Integrations\\WooCommerce' => __DIR__ . '/../..' . '/lib/integrations/class-woocommerce.php', + 'QuadLayers\\QuadMenu\\Locations' => __DIR__ . '/../..' . '/lib/class-locations.php', + 'QuadLayers\\QuadMenu\\Options' => __DIR__ . '/../..' . '/lib/class-options.php', + 'QuadLayers\\QuadMenu\\Panel' => __DIR__ . '/../..' . '/lib/class-panel.php', + 'QuadLayers\\QuadMenu\\Panel\\Options' => __DIR__ . '/../..' . '/lib/panel/class-options.php', + 'QuadLayers\\QuadMenu\\Panel\\Premium' => __DIR__ . '/../..' . '/lib/panel/class-premium.php', + 'QuadLayers\\QuadMenu\\Panel\\System' => __DIR__ . '/../..' . '/lib/panel/class-system.php', + 'QuadLayers\\QuadMenu\\Panel\\Welcome' => __DIR__ . '/../..' . '/lib/panel/class-welcome.php', + 'QuadLayers\\QuadMenu\\Plugin' => __DIR__ . '/../..' . '/lib/class-plugin.php', + 'QuadLayers\\QuadMenu\\Redux' => __DIR__ . '/../..' . '/lib/class-redux.php', + 'QuadLayers\\QuadMenu\\Themes' => __DIR__ . '/../..' . '/lib/class-themes.php', + 'QuadLayers\\QuadMenu\\Widget' => __DIR__ . '/../..' . '/lib/class-widget.php', + 'QuadLayers\\WP_Dashboard_Widget_News\\Load' => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-dashboard-widget-news/src/Load.php', + 'QuadLayers\\WP_Notice_Plugin_Promote\\Load' => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-notice-plugin-promote/src/Load.php', + 'QuadLayers\\WP_Notice_Plugin_Promote\\PluginByFile' => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-notice-plugin-promote/src/PluginByFile.php', + 'QuadLayers\\WP_Notice_Plugin_Promote\\PluginBySlug' => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-notice-plugin-promote/src/PluginBySlug.php', + 'QuadLayers\\WP_Notice_Plugin_Promote\\PluginBySlugV2' => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-notice-plugin-promote/src/PluginBySlugV2.php', + 'QuadLayers\\WP_Notice_Plugin_Promote\\Traits\\PluginActions' => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-notice-plugin-promote/src/Traits/PluginActions.php', + 'QuadLayers\\WP_Notice_Plugin_Promote\\Traits\\PluginActionsLinks' => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-notice-plugin-promote/src/Traits/PluginActionsLinks.php', + 'QuadLayers\\WP_Notice_Plugin_Promote\\Traits\\PluginDataByFile' => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-notice-plugin-promote/src/Traits/PluginDataByFile.php', + 'QuadLayers\\WP_Notice_Plugin_Required\\Load' => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-notice-plugin-required/src/Load.php', + 'QuadLayers\\WP_Notice_Plugin_Required\\Plugin' => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-notice-plugin-required/src/Plugin.php', + 'QuadLayers\\WP_Plugin_Install_Tab\\Load' => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-plugin-install-tab/src/Load.php', + 'QuadLayers\\WP_Plugin_Suggestions\\Load' => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-plugin-suggestions/src/Load.php', + 'QuadLayers\\WP_Plugin_Suggestions\\Page' => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-plugin-suggestions/src/Page.php', + 'QuadLayers\\WP_Plugin_Suggestions\\Table' => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-plugin-suggestions/src/Table.php', + 'QuadLayers\\WP_Plugin_Table_Links\\Load' => __DIR__ . '/../..' . '/jetpack_vendor/quadlayers/wp-plugin-table-links/src/Load.php', + 'WPBakeryShortCode_quadmenu_vc' => __DIR__ . '/../..' . '/lib/integrations/class-vc.php', + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->prefixLengthsPsr4 = ComposerStaticInitbc68521166e23e0e643a362225ccc0cc::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInitbc68521166e23e0e643a362225ccc0cc::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInitbc68521166e23e0e643a362225ccc0cc::$classMap; + + }, null, ClassLoader::class); + } +} diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json new file mode 100644 index 0000000..a53181c --- /dev/null +++ b/vendor/composer/installed.json @@ -0,0 +1,514 @@ +{ + "packages": [ + { + "name": "automattic/jetpack-assets", + "version": "v2.1.13", + "version_normalized": "2.1.13.0", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-assets.git", + "reference": "be2738e899ca46648999a6e1a7744b4da5001533" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-assets/zipball/be2738e899ca46648999a6e1a7744b4da5001533", + "reference": "be2738e899ca46648999a6e1a7744b4da5001533", + "shasum": "" + }, + "require": { + "automattic/jetpack-constants": "^2.0.3", + "php": ">=7.0" + }, + "require-dev": { + "automattic/jetpack-changelogger": "^4.2.5", + "brain/monkey": "2.6.1", + "wikimedia/testing-access-wrapper": "^1.0 || ^2.0 || ^3.0", + "yoast/phpunit-polyfills": "1.1.0" + }, + "suggest": { + "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." + }, + "time": "2024-07-03T11:21:33+00:00", + "type": "jetpack-library", + "extra": { + "autotagger": true, + "mirror-repo": "Automattic/jetpack-assets", + "textdomain": "jetpack-assets", + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-assets/compare/v${old}...v${new}" + }, + "branch-alias": { + "dev-trunk": "2.1.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "actions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Asset management utilities for Jetpack ecosystem packages", + "support": { + "source": "https://github.com/Automattic/jetpack-assets/tree/v2.1.13" + }, + "install-path": "../../jetpack_vendor/automattic/jetpack-assets" + }, + { + "name": "automattic/jetpack-composer-plugin", + "version": "v2.0.2", + "version_normalized": "2.0.2.0", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-composer-plugin.git", + "reference": "7f991850af6cdb10b5bf493cea9e09e5c8feae72" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-composer-plugin/zipball/7f991850af6cdb10b5bf493cea9e09e5c8feae72", + "reference": "7f991850af6cdb10b5bf493cea9e09e5c8feae72", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.1.0", + "php": ">=7.0" + }, + "require-dev": { + "automattic/jetpack-changelogger": "^4.2.4", + "composer/composer": "^2.2 || ^2.4", + "yoast/phpunit-polyfills": "1.1.0" + }, + "time": "2024-06-03T14:01:14+00:00", + "type": "composer-plugin", + "extra": { + "plugin-modifies-install-path": true, + "class": "Automattic\\Jetpack\\Composer\\Plugin", + "mirror-repo": "Automattic/jetpack-composer-plugin", + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-composer-plugin/compare/v${old}...v${new}" + }, + "autotagger": true, + "branch-alias": { + "dev-trunk": "2.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "A custom installer plugin for Composer to move Jetpack packages out of `vendor/` so WordPress's translation infrastructure will find their strings.", + "keywords": [ + "composer", + "i18n", + "jetpack", + "plugin" + ], + "support": { + "source": "https://github.com/Automattic/jetpack-composer-plugin/tree/v2.0.2" + }, + "install-path": "../automattic/jetpack-composer-plugin" + }, + { + "name": "automattic/jetpack-constants", + "version": "v2.0.3", + "version_normalized": "2.0.3.0", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-constants.git", + "reference": "f5da87d3b7f80411b77aa58a7355733ea72295aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-constants/zipball/f5da87d3b7f80411b77aa58a7355733ea72295aa", + "reference": "f5da87d3b7f80411b77aa58a7355733ea72295aa", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "automattic/jetpack-changelogger": "^4.2.4", + "brain/monkey": "2.6.1", + "yoast/phpunit-polyfills": "1.1.0" + }, + "suggest": { + "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." + }, + "time": "2024-05-29T09:44:58+00:00", + "type": "jetpack-library", + "extra": { + "autotagger": true, + "mirror-repo": "Automattic/jetpack-constants", + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-constants/compare/v${old}...v${new}" + }, + "branch-alias": { + "dev-trunk": "2.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "A wrapper for defining constants in a more testable way.", + "support": { + "source": "https://github.com/Automattic/jetpack-constants/tree/v2.0.3" + }, + "install-path": "../../jetpack_vendor/automattic/jetpack-constants" + }, + { + "name": "quadlayers/wp-dashboard-widget-news", + "version": "1.0.9", + "version_normalized": "1.0.9.0", + "source": { + "type": "git", + "url": "https://github.com/quadlayers/wp-dashboard-widget-news.git", + "reference": "c8f270a3de46f986dab8b9547848dc6b6f0ae7fe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/quadlayers/wp-dashboard-widget-news/zipball/c8f270a3de46f986dab8b9547848dc6b6f0ae7fe", + "reference": "c8f270a3de46f986dab8b9547848dc6b6f0ae7fe", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "phpcompatibility/phpcompatibility-wp": "^2.1.0", + "wp-coding-standards/wpcs": "^2.3.0" + }, + "time": "2023-03-16T15:19:31+00:00", + "type": "jetpack-library", + "extra": { + "textdomain": "wp-dashboard-widget-news" + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "QuadLayers\\WP_Dashboard_Widget_News\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0" + ], + "authors": [ + { + "name": "QuadLayers", + "email": "noreply@quadlayers.com" + } + ], + "description": "WP Dashboard Widget News", + "keywords": [ + "admin", + "dashboard", + "widget", + "wordpress" + ], + "support": { + "issues": "https://github.com/quadlayers/wp-dashboard-widget-news/issues", + "source": "https://github.com/quadlayers/wp-dashboard-widget-news/tree/1.0.9" + }, + "install-path": "../../jetpack_vendor/quadlayers/wp-dashboard-widget-news" + }, + { + "name": "quadlayers/wp-notice-plugin-promote", + "version": "1.1.4", + "version_normalized": "1.1.4.0", + "source": { + "type": "git", + "url": "https://github.com/quadlayers/wp-notice-plugin-promote.git", + "reference": "f52240f7972d59a88bca17c061277b7ed12bdf17" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/quadlayers/wp-notice-plugin-promote/zipball/f52240f7972d59a88bca17c061277b7ed12bdf17", + "reference": "f52240f7972d59a88bca17c061277b7ed12bdf17", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "phpcompatibility/phpcompatibility-wp": "^2.1.0", + "wp-coding-standards/wpcs": "^2.3.0" + }, + "time": "2023-12-31T10:47:45+00:00", + "type": "jetpack-library", + "extra": { + "textdomain": "wp-notice-plugin-promote" + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "QuadLayers\\WP_Notice_Plugin_Promote\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0" + ], + "authors": [ + { + "name": "QuadLayers", + "email": "noreply@quadlayers.com" + } + ], + "description": "WP Notice Plugin Promote", + "keywords": [ + "admin", + "notice", + "plugin", + "wordpress" + ], + "support": { + "issues": "https://github.com/quadlayers/wp-notice-plugin-promote/issues", + "source": "https://github.com/quadlayers/wp-notice-plugin-promote/tree/1.1.4" + }, + "install-path": "../../jetpack_vendor/quadlayers/wp-notice-plugin-promote" + }, + { + "name": "quadlayers/wp-notice-plugin-required", + "version": "2.0.7", + "version_normalized": "2.0.7.0", + "source": { + "type": "git", + "url": "https://github.com/quadlayers/wp-notice-plugin-required.git", + "reference": "fd3d10dbdb39be738c3ef320e43cb7cd4e59e071" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/quadlayers/wp-notice-plugin-required/zipball/fd3d10dbdb39be738c3ef320e43cb7cd4e59e071", + "reference": "fd3d10dbdb39be738c3ef320e43cb7cd4e59e071", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "woocommerce/woocommerce-sniffs": "^0.1.3" + }, + "time": "2023-06-23T12:20:55+00:00", + "type": "jetpack-library", + "extra": { + "textdomain": "wp-notice-plugin-required" + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "QuadLayers\\WP_Notice_Plugin_Required\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0" + ], + "authors": [ + { + "name": "QuadLayers", + "email": "noreply@quadlayers.com" + } + ], + "description": "WP Notice Plugin Required", + "keywords": [ + "admin", + "notice", + "plugin", + "wordpress" + ], + "support": { + "issues": "https://github.com/quadlayers/wp-notice-plugin-required/issues", + "source": "https://github.com/quadlayers/wp-notice-plugin-required/tree/2.0.7" + }, + "install-path": "../../jetpack_vendor/quadlayers/wp-notice-plugin-required" + }, + { + "name": "quadlayers/wp-plugin-install-tab", + "version": "1.0.1", + "version_normalized": "1.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/franmastromarino/wp-plugin-install-tab.git", + "reference": "7f29b6bcebf6cebdd2ad300fb096e05e3ad0f398" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/franmastromarino/wp-plugin-install-tab/zipball/7f29b6bcebf6cebdd2ad300fb096e05e3ad0f398", + "reference": "7f29b6bcebf6cebdd2ad300fb096e05e3ad0f398", + "shasum": "" + }, + "require": { + "php": ">=7.1.0", + "quadlayers/wp-plugin-suggestions": "*" + }, + "time": "2023-12-18T10:21:33+00:00", + "type": "jetpack-library", + "extra": { + "textdomain": "wp-plugin-install-tab" + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "QuadLayers\\WP_Plugin_Install_Tab\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0" + ], + "authors": [ + { + "name": "QuadLayers", + "email": "noreply@quadlayers.com" + } + ], + "description": "WP Plugin Install Tab", + "keywords": [ + "admin", + "install", + "plugin", + "wordpress" + ], + "support": { + "issues": "https://github.com/franmastromarino/wp-plugin-install-tab/issues", + "source": "https://github.com/franmastromarino/wp-plugin-install-tab/tree/1.0.1" + }, + "install-path": "../../jetpack_vendor/quadlayers/wp-plugin-install-tab" + }, + { + "name": "quadlayers/wp-plugin-suggestions", + "version": "1.0.9", + "version_normalized": "1.0.9.0", + "source": { + "type": "git", + "url": "https://github.com/quadlayers/wp-plugin-suggestions.git", + "reference": "3983f69cbea33743683c95cd26c97f03f540ca52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/quadlayers/wp-plugin-suggestions/zipball/3983f69cbea33743683c95cd26c97f03f540ca52", + "reference": "3983f69cbea33743683c95cd26c97f03f540ca52", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "phpcompatibility/phpcompatibility-wp": "^2.1.0", + "wp-coding-standards/wpcs": "^2.3.0" + }, + "time": "2023-12-31T10:45:51+00:00", + "type": "jetpack-library", + "extra": { + "textdomain": "wp-plugin-suggestions" + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "QuadLayers\\WP_Plugin_Suggestions\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0" + ], + "authors": [ + { + "name": "QuadLayers", + "email": "noreply@quadlayers.com" + } + ], + "description": "WP Plugin Suggestions", + "keywords": [ + "admin", + "plugin", + "widget", + "wordpress" + ], + "support": { + "issues": "https://github.com/quadlayers/wp-plugin-suggestions/issues", + "source": "https://github.com/quadlayers/wp-plugin-suggestions/tree/1.0.9" + }, + "install-path": "../../jetpack_vendor/quadlayers/wp-plugin-suggestions" + }, + { + "name": "quadlayers/wp-plugin-table-links", + "version": "1.0.7", + "version_normalized": "1.0.7.0", + "source": { + "type": "git", + "url": "https://github.com/quadlayers/wp-plugin-table-links.git", + "reference": "cadb59de7ce90b0e3b59174bfb7f52af556c7a66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/quadlayers/wp-plugin-table-links/zipball/cadb59de7ce90b0e3b59174bfb7f52af556c7a66", + "reference": "cadb59de7ce90b0e3b59174bfb7f52af556c7a66", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "woocommerce/woocommerce-sniffs": "^0.1.3" + }, + "time": "2023-03-20T18:39:34+00:00", + "type": "jetpack-library", + "extra": { + "textdomain": "wp-plugin-table-links" + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "QuadLayers\\WP_Plugin_Table_Links\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0" + ], + "authors": [ + { + "name": "QuadLayers", + "email": "noreply@quadlayers.com" + } + ], + "description": "WP Plugin Table Links", + "keywords": [ + "admin", + "links", + "plugin", + "wordpress" + ], + "support": { + "issues": "https://github.com/quadlayers/wp-plugin-table-links/issues", + "source": "https://github.com/quadlayers/wp-plugin-table-links/tree/1.0.7" + }, + "install-path": "../../jetpack_vendor/quadlayers/wp-plugin-table-links" + } + ], + "dev": false, + "dev-package-names": [] +} diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php new file mode 100644 index 0000000..0f85d6e --- /dev/null +++ b/vendor/composer/installed.php @@ -0,0 +1,104 @@ + array( + 'name' => 'quadlayers/quadmenu', + 'pretty_version' => 'v3.1.5', + 'version' => '3.1.5.0', + 'reference' => 'be3639fe4d4f6719b07b5d26f3f28fb552fae3d4', + 'type' => 'project', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev' => false, + ), + 'versions' => array( + 'automattic/jetpack-assets' => array( + 'pretty_version' => 'v2.1.13', + 'version' => '2.1.13.0', + 'reference' => 'be2738e899ca46648999a6e1a7744b4da5001533', + 'type' => 'jetpack-library', + 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-assets', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'automattic/jetpack-composer-plugin' => array( + 'pretty_version' => 'v2.0.2', + 'version' => '2.0.2.0', + 'reference' => '7f991850af6cdb10b5bf493cea9e09e5c8feae72', + 'type' => 'composer-plugin', + 'install_path' => __DIR__ . '/../automattic/jetpack-composer-plugin', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'automattic/jetpack-constants' => array( + 'pretty_version' => 'v2.0.3', + 'version' => '2.0.3.0', + 'reference' => 'f5da87d3b7f80411b77aa58a7355733ea72295aa', + 'type' => 'jetpack-library', + 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-constants', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'quadlayers/quadmenu' => array( + 'pretty_version' => 'v3.1.5', + 'version' => '3.1.5.0', + 'reference' => 'be3639fe4d4f6719b07b5d26f3f28fb552fae3d4', + 'type' => 'project', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'quadlayers/wp-dashboard-widget-news' => array( + 'pretty_version' => '1.0.9', + 'version' => '1.0.9.0', + 'reference' => 'c8f270a3de46f986dab8b9547848dc6b6f0ae7fe', + 'type' => 'jetpack-library', + 'install_path' => __DIR__ . '/../../jetpack_vendor/quadlayers/wp-dashboard-widget-news', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'quadlayers/wp-notice-plugin-promote' => array( + 'pretty_version' => '1.1.4', + 'version' => '1.1.4.0', + 'reference' => 'f52240f7972d59a88bca17c061277b7ed12bdf17', + 'type' => 'jetpack-library', + 'install_path' => __DIR__ . '/../../jetpack_vendor/quadlayers/wp-notice-plugin-promote', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'quadlayers/wp-notice-plugin-required' => array( + 'pretty_version' => '2.0.7', + 'version' => '2.0.7.0', + 'reference' => 'fd3d10dbdb39be738c3ef320e43cb7cd4e59e071', + 'type' => 'jetpack-library', + 'install_path' => __DIR__ . '/../../jetpack_vendor/quadlayers/wp-notice-plugin-required', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'quadlayers/wp-plugin-install-tab' => array( + 'pretty_version' => '1.0.1', + 'version' => '1.0.1.0', + 'reference' => '7f29b6bcebf6cebdd2ad300fb096e05e3ad0f398', + 'type' => 'jetpack-library', + 'install_path' => __DIR__ . '/../../jetpack_vendor/quadlayers/wp-plugin-install-tab', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'quadlayers/wp-plugin-suggestions' => array( + 'pretty_version' => '1.0.9', + 'version' => '1.0.9.0', + 'reference' => '3983f69cbea33743683c95cd26c97f03f540ca52', + 'type' => 'jetpack-library', + 'install_path' => __DIR__ . '/../../jetpack_vendor/quadlayers/wp-plugin-suggestions', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'quadlayers/wp-plugin-table-links' => array( + 'pretty_version' => '1.0.7', + 'version' => '1.0.7.0', + 'reference' => 'cadb59de7ce90b0e3b59174bfb7f52af556c7a66', + 'type' => 'jetpack-library', + 'install_path' => __DIR__ . '/../../jetpack_vendor/quadlayers/wp-plugin-table-links', + 'aliases' => array(), + 'dev_requirement' => false, + ), + ), +); diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php new file mode 100644 index 0000000..6d3407d --- /dev/null +++ b/vendor/composer/platform_check.php @@ -0,0 +1,26 @@ += 70100)) { + $issues[] = 'Your Composer dependencies require a PHP version ">= 7.1.0". You are running ' . PHP_VERSION . '.'; +} + +if ($issues) { + if (!headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); + } + if (!ini_get('display_errors')) { + if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { + fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); + } elseif (!headers_sent()) { + echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; + } + } + trigger_error( + 'Composer detected issues in your platform: ' . implode(' ', $issues), + E_USER_ERROR + ); +} diff --git a/vendor_packages/wp-dashboard-widget-news.php b/vendor_packages/wp-dashboard-widget-news.php new file mode 100644 index 0000000..3821974 --- /dev/null +++ b/vendor_packages/wp-dashboard-widget-news.php @@ -0,0 +1,5 @@ + 'ranking', + 'notice_delay' => MONTH_IN_SECONDS, + 'notice_logo' => QUADMENU_PROMOTE_LOGO_SRC, + 'notice_title' => sprintf( + esc_html__( + 'Hello! Thank you for choosing the %s plugin!', + 'quadmenu' + ), + QUADMENU_PLUGIN_NAME + ), + 'notice_description' => esc_html__( 'Could you please give it a 5-star rating on WordPress? Your feedback boosts our motivation, helps us promote, and continues to improve this product. Your support matters!', 'quadmenu' ), + 'notice_link' => QUADMENU_PROMOTE_REVIEW_URL, + 'notice_link_label' => esc_html__( + 'Yes, of course!', + 'quadmenu' + ), + 'notice_more_link' => QUADMENU_SUPPORT_URL, + 'notice_more_label' => esc_html__( + 'Report a bug', + 'quadmenu' + ), + ), + array( + 'plugin_slug' => QUADMENU_PROMOTE_PREMIUM_SELL_SLUG, + 'plugin_install_link' => QUADMENU_PROMOTE_PREMIUM_INSTALL_URL, + 'plugin_install_label' => esc_html__( + 'Purchase Now', + 'quadmenu' + ), + 'notice_delay' => MONTH_IN_SECONDS, + 'notice_logo' => QUADMENU_PROMOTE_LOGO_SRC, + 'notice_title' => esc_html__( + 'Hello! We have a special gift!', + 'quadmenu' + ), + 'notice_description' => sprintf( + esc_html__( + 'Today we have a special gift for you. Use the coupon code %1$s within the next 48 hours to receive a %2$s discount on the premium version of the %3$s plugin.', + 'quadmenu' + ), + 'ADMINPANEL20%', + '20%', + QUADMENU_PROMOTE_PREMIUM_SELL_NAME + ), + 'notice_more_link' => QUADMENU_PROMOTE_PREMIUM_SELL_URL, + 'notice_more_label' => esc_html__( + 'More info!', + 'quadmenu' + ), + ), + array( + 'plugin_slug' => QUADMENU_PROMOTE_CROSS_INSTALL_1_SLUG, + 'notice_delay' => MONTH_IN_SECONDS * 4, + 'notice_logo' => QUADMENU_PROMOTE_CROSS_INSTALL_1_LOGO_SRC, + 'notice_title' => sprintf( + esc_html__( + 'Hello! We want to invite you to try our %s plugin!', + 'quadmenu' + ), + QUADMENU_PROMOTE_CROSS_INSTALL_1_NAME + ), + 'notice_description' => QUADMENU_PROMOTE_CROSS_INSTALL_1_DESCRIPTION, + 'notice_more_link' => QUADMENU_PROMOTE_CROSS_INSTALL_1_URL, + 'notice_more_label' => esc_html__( + 'More info!', + 'quadmenu' + ), + ), + array( + 'plugin_slug' => QUADMENU_PROMOTE_CROSS_INSTALL_2_SLUG, + 'notice_delay' => MONTH_IN_SECONDS * 6, + 'notice_logo' => QUADMENU_PROMOTE_CROSS_INSTALL_2_LOGO_SRC, + 'notice_title' => sprintf( + esc_html__( + 'Hello! We want to invite you to try our %s plugin!', + 'quadmenu' + ), + QUADMENU_PROMOTE_CROSS_INSTALL_2_NAME + ), + 'notice_description' => QUADMENU_PROMOTE_CROSS_INSTALL_2_DESCRIPTION, + 'notice_more_link' => QUADMENU_PROMOTE_CROSS_INSTALL_2_URL, + 'notice_more_label' => esc_html__( + 'More info!', + 'quadmenu' + ), + ), + ) + ); +} diff --git a/vendor_packages/wp-notice-plugin-required.php b/vendor_packages/wp-notice-plugin-required.php new file mode 100644 index 0000000..603b68d --- /dev/null +++ b/vendor_packages/wp-notice-plugin-required.php @@ -0,0 +1,15 @@ + 'woocommerce', + 'name' => 'WooCommerce', + ), + ) + ); +} diff --git a/vendor_packages/wp-plugin-install-tab.php b/vendor_packages/wp-plugin-install-tab.php new file mode 100644 index 0000000..c37c2f9 --- /dev/null +++ b/vendor_packages/wp-plugin-install-tab.php @@ -0,0 +1,5 @@ + array( 'quadmenu' ), + 'parent_menu_slug' => 'quadmenu_welcome', + 'promote_links' => array( + array( + 'text' => 'QuadLayers', + 'url' => 'https://quadlayers.com', + 'target' => '_blank', + ), + array( + 'text' => 'Community', + 'url' => 'https://www.facebook.com/groups/quadlayers', + 'target' => '_blank', + ), + ), + ) + ); +} diff --git a/vendor_packages/wp-plugin-table-links.php b/vendor_packages/wp-plugin-table-links.php new file mode 100644 index 0000000..7f2ca5d --- /dev/null +++ b/vendor_packages/wp-plugin-table-links.php @@ -0,0 +1,28 @@ + esc_html__( 'Settings', 'quadmenu' ), + 'url' => admin_url( 'admin.php?page=' . QUADMENU_PANEL ), + 'target' => '_self', + ), + array( + 'text' => esc_html__( 'Premium', 'quadmenu' ), + 'url' => QUADMENU_PURCHASE_URL, + ), + array( + 'place' => 'row_meta', + 'text' => esc_html__( 'Support', 'quadmenu' ), + 'url' => QUADMENU_SUPPORT_URL, + ), + array( + 'place' => 'row_meta', + 'text' => esc_html__( 'Documentation', 'quadmenu' ), + 'url' => QUADMENU_DOCUMENTATION_URL, + ), + ) + ); +}