From 8bfafdddca473f8e7f11b0391f3ff86783d7931e Mon Sep 17 00:00:00 2001 From: moxiegirl Date: Wed, 22 Aug 2018 15:07:39 -0700 Subject: [PATCH] Initial commits Signed-off-by: moxiegirl --- 404.md | 7 + Gemfile | 32 + Gemfile.lock | 88 + README.md | 352 +- _config.yml | 116 + _data/changelog.yml | 38 + _data/navigation_auth.yml | 13 + _data/navigation_docs.yml | 25 + _data/navigation_footer.yml | 10 + _data/navigation_gaia.yml | 18 + _data/navigation_header.yml | 9 + _data/navigation_home.yml | 31 + _data/navigation_learn.yml | 23 + _data/navigation_naming.yml | 59 + _data/navigation_newinternet.yml | 18 + _includes/contribute_code.md | 93 + _includes/contribute_community.md | 34 + _includes/contribute_issues.md | 71 + _includes/contribute_ovr.md | 27 + _includes/disqus_comments.html | 20 + _includes/editme.html | 1 + _includes/footer.html | 31 + _includes/glossary.md | 148 + _includes/google-analytics.html | 11 + _includes/head.html | 14 + _includes/header.html | 7 + _includes/hero.html | 35 + _includes/image.html | 16 + _includes/map.html | 38 + _includes/navbar.html | 52 + _includes/offcanvas.html | 25 + _includes/paginate-blog.html | 8 + _includes/paginate-doc.html | 24 + _includes/paginate-post.html | 18 + _includes/post-meta.html | 18 + _includes/related-auth.html | 32 + _includes/related-docs.html | 32 + _includes/related-gaia.html | 32 + _includes/related-learn.html | 32 + _includes/related-naming.html | 32 + _includes/related-newinternet.html | 32 + _includes/related-posts.html | 32 + _includes/search.html | 10 + _includes/share.html | 4 + _includes/slideshow.html | 14 + _includes/social-networks.html | 65 + _layouts/auth.html | 71 + _layouts/changelog.html | 37 + _layouts/contact.html | 56 + _layouts/default.html | 28 + _layouts/doc.html | 70 + _layouts/gaia.html | 70 + _layouts/home.html | 102 + _layouts/learn.html | 70 + _layouts/naming.html | 70 + _layouts/newinternet.html | 70 + _layouts/page.html | 19 + _layouts/post.html | 36 + _posts/2017-05-25-post63.md | 49 + _sass/syntax-highlighting/github.scss | 289 + _sass/system-font-css/CHANGELOG.md | 13 + _sass/system-font-css/LICENSE.md | 15 + _sass/system-font-css/README.md | 68 + _sass/system-font-css/_system-font.scss | 57 + _sass/system-font-css/index.html | 189 + _sass/system-font-css/package.json | 83 + _sass/system-font-css/system-font.css | 57 + _sass/system-font-css/system-font.less | 57 + _sass/theme/mixins.scss | 469 + _sass/theme/uikit.scss | 92 + _sass/theme/variables.scss | 90 + .../uikit/components/_import.components.scss | 56 + _sass/uikit/components/_import.scss | 91 + _sass/uikit/components/_import.utilities.scss | 19 + _sass/uikit/components/accordion.scss | 118 + _sass/uikit/components/alert.scss | 147 + _sass/uikit/components/align.scss | 142 + _sass/uikit/components/animation.scss | 390 + _sass/uikit/components/article.scss | 102 + _sass/uikit/components/background.scss | 136 + _sass/uikit/components/badge.scss | 83 + _sass/uikit/components/base.scss | 612 ++ _sass/uikit/components/breadcrumb.scss | 122 + _sass/uikit/components/button.scss | 451 + _sass/uikit/components/card.scss | 363 + _sass/uikit/components/close.scss | 57 + _sass/uikit/components/column.scss | 138 + _sass/uikit/components/comment.scss | 171 + _sass/uikit/components/container.scss | 106 + _sass/uikit/components/countdown.scss | 126 + _sass/uikit/components/cover.scss | 57 + _sass/uikit/components/description-list.scss | 71 + _sass/uikit/components/divider.scss | 129 + _sass/uikit/components/dotnav.scss | 157 + _sass/uikit/components/drop.scss | 74 + _sass/uikit/components/dropdown.scss | 150 + _sass/uikit/components/flex.scss | 209 + _sass/uikit/components/form-range.scss | 185 + _sass/uikit/components/form.scss | 756 ++ _sass/uikit/components/grid.scss | 352 + _sass/uikit/components/heading.scss | 214 + _sass/uikit/components/icon.scss | 223 + _sass/uikit/components/iconnav.scss | 140 + _sass/uikit/components/inverse.scss | 46 + _sass/uikit/components/label.scss | 102 + _sass/uikit/components/lightbox.scss | 232 + _sass/uikit/components/link.scss | 123 + _sass/uikit/components/list.scss | 187 + _sass/uikit/components/margin.scss | 163 + _sass/uikit/components/marker.scss | 63 + _sass/uikit/components/mixin.scss | 32 + _sass/uikit/components/modal.scss | 368 + _sass/uikit/components/nav.scss | 357 + _sass/uikit/components/navbar.scss | 537 + _sass/uikit/components/notification.scss | 190 + _sass/uikit/components/offcanvas.scss | 301 + _sass/uikit/components/overlay.scss | 85 + _sass/uikit/components/padding.scss | 81 + _sass/uikit/components/pagination.scss | 128 + _sass/uikit/components/placeholder.scss | 45 + _sass/uikit/components/position.scss | 250 + _sass/uikit/components/print.scss | 61 + _sass/uikit/components/progress.scss | 105 + _sass/uikit/components/search.scss | 328 + _sass/uikit/components/section.scss | 226 + _sass/uikit/components/slidenav.scss | 122 + _sass/uikit/components/slider.scss | 99 + _sass/uikit/components/slideshow.scss | 93 + _sass/uikit/components/sortable.scss | 101 + _sass/uikit/components/spinner.scss | 74 + _sass/uikit/components/sticky.scss | 53 + _sass/uikit/components/subnav.scss | 232 + _sass/uikit/components/switcher.scss | 47 + _sass/uikit/components/tab.scss | 191 + _sass/uikit/components/table.scss | 316 + _sass/uikit/components/text.scss | 262 + _sass/uikit/components/thumbnav.scss | 123 + _sass/uikit/components/tile.scss | 224 + _sass/uikit/components/tooltip.scss | 84 + _sass/uikit/components/totop.scss | 71 + _sass/uikit/components/transition.scss | 145 + _sass/uikit/components/utility.scss | 570 ++ _sass/uikit/components/variables.scss | 117 + _sass/uikit/components/visibility.scss | 151 + _sass/uikit/components/width.scss | 398 + _sass/uikit/mixins-theme.scss | 2033 ++++ _sass/uikit/mixins.scss | 1644 +++ _sass/uikit/theme/_import.scss | 78 + _sass/uikit/theme/accordion.scss | 58 + _sass/uikit/theme/alert.scss | 46 + _sass/uikit/theme/align.scss | 14 + _sass/uikit/theme/animation.scss | 14 + _sass/uikit/theme/article.scss | 51 + _sass/uikit/theme/background.scss | 14 + _sass/uikit/theme/badge.scss | 29 + _sass/uikit/theme/base.scss | 116 + _sass/uikit/theme/breadcrumb.scss | 45 + _sass/uikit/theme/button.scss | 161 + _sass/uikit/theme/card.scss | 125 + _sass/uikit/theme/close.scss | 29 + _sass/uikit/theme/column.scss | 14 + _sass/uikit/theme/comment.scss | 69 + _sass/uikit/theme/container.scss | 14 + _sass/uikit/theme/countdown.scss | 53 + _sass/uikit/theme/description-list.scss | 32 + _sass/uikit/theme/divider.scss | 41 + _sass/uikit/theme/dotnav.scss | 52 + _sass/uikit/theme/drop.scss | 14 + _sass/uikit/theme/dropdown.scss | 45 + _sass/uikit/theme/form-range.scss | 45 + _sass/uikit/theme/form.scss | 131 + _sass/uikit/theme/grid.scss | 14 + _sass/uikit/theme/heading.scss | 59 + _sass/uikit/theme/icon.scss | 50 + _sass/uikit/theme/iconnav.scss | 34 + _sass/uikit/theme/inverse.scss | 14 + _sass/uikit/theme/label.scss | 43 + _sass/uikit/theme/lightbox.scss | 48 + _sass/uikit/theme/link.scss | 55 + _sass/uikit/theme/list.scss | 39 + _sass/uikit/theme/margin.scss | 14 + _sass/uikit/theme/marker.scss | 29 + _sass/uikit/theme/modal.scss | 84 + _sass/uikit/theme/nav.scss | 94 + _sass/uikit/theme/navbar.scss | 136 + _sass/uikit/theme/notification.scss | 44 + _sass/uikit/theme/offcanvas.scss | 32 + _sass/uikit/theme/overlay.scss | 33 + _sass/uikit/theme/padding.scss | 14 + _sass/uikit/theme/pagination.scss | 41 + _sass/uikit/theme/placeholder.scss | 29 + _sass/uikit/theme/position.scss | 14 + _sass/uikit/theme/progress.scss | 24 + _sass/uikit/theme/search.scss | 73 + _sass/uikit/theme/section.scss | 32 + _sass/uikit/theme/slidenav.scss | 52 + _sass/uikit/theme/sortable.scss | 38 + _sass/uikit/theme/spinner.scss | 14 + _sass/uikit/theme/sticky.scss | 14 + _sass/uikit/theme/subnav.scss | 74 + _sass/uikit/theme/tab.scss | 74 + _sass/uikit/theme/table.scss | 68 + _sass/uikit/theme/text.scss | 50 + _sass/uikit/theme/thumbnav.scss | 42 + _sass/uikit/theme/tile.scss | 32 + _sass/uikit/theme/tooltip.scss | 20 + _sass/uikit/theme/totop.scss | 32 + _sass/uikit/theme/transition.scss | 14 + _sass/uikit/theme/utility.scss | 57 + _sass/uikit/theme/variables.scss | 36 + _sass/uikit/theme/width.scss | 14 + _sass/uikit/uikit-theme.scss | 9 + _sass/uikit/uikit.scss | 5 + _sass/uikit/variables-theme.scss | 1093 ++ _sass/uikit/variables.scss | 986 ++ assets/css/main.scss | 22 + assets/img/favicon.png | Bin 0 -> 863 bytes assets/img/location.svg | 13 + assets/img/touch-icon.png | Bin 0 -> 9274 bytes assets/js/custom.js | 1 + assets/js/main.js | 8772 +++++++++++++++++ assets/posts/7C04AAA0EE9E3886.png | Bin 0 -> 9671 bytes assets/posts/SVG/logo.svg | 1 + assets/posts/books.svg | 51 + assets/posts/box.svg | 100 + assets/posts/city.svg | 188 + assets/posts/imac.svg | 47 + assets/posts/image1.png | Bin 0 -> 53716 bytes assets/posts/logo.png | Bin 0 -> 1006 bytes assets/posts/logo.svg | 8 + assets/posts/old.logo.svg | 5 + assets/posts/safe.svg | 41 + assets/posts/sky.svg | 113 + assets/posts/slideshow-1/image1.png | Bin 0 -> 53716 bytes assets/posts/teacup.svg | 26 + assets/posts/touch-icon.png | Bin 0 -> 9274 bytes assets/posts/touch-icon.svg | 1 + changelog.md | 7 + contact.md | 14 + images/blockstack-bar.png | Bin 0 -> 12072 bytes images/browser-on-mac-1.png | Bin 0 -> 85494 bytes images/browser-on-mac.png | Bin 0 -> 126246 bytes images/browser-uninstall.png | Bin 0 -> 38259 bytes images/create-id-0.png | Bin 0 -> 44499 bytes images/create-id-1.png | Bin 0 -> 42054 bytes images/create-id-2.png | Bin 0 -> 41809 bytes images/create-id-3.png | Bin 0 -> 64761 bytes images/display-complete.png | Bin 0 -> 45162 bytes images/dmg-notice.png | Bin 0 -> 47406 bytes images/eject-blockstack.png | Bin 0 -> 54735 bytes images/hw-loggedin.png | Bin 0 -> 37894 bytes images/initial-app.gif | Bin 0 -> 4617 bytes images/login-choice.png | Bin 0 -> 53169 bytes images/login-no-auth.png | Bin 0 -> 111506 bytes images/login.gif | Bin 0 -> 24868 bytes images/login.png | Bin 0 -> 98194 bytes images/make-a-list.png | Bin 0 -> 72721 bytes images/multi-player-storage-status.png | Bin 0 -> 57014 bytes images/multiple-lists.png | Bin 0 -> 95240 bytes images/network-connections.gif | Bin 0 -> 10283 bytes images/new-prompt.gif | Bin 0 -> 11594 bytes images/on-your-mind.gif | Bin 0 -> 5978 bytes images/osx-dmg.png | Bin 0 -> 33357 bytes images/publish-data-perm.png | Bin 0 -> 102987 bytes images/quit-blockstack.png | Bin 0 -> 15396 bytes images/recovery-code.png | Bin 0 -> 60262 bytes images/sample-code.png | Bin 0 -> 70359 bytes images/saving-status.png | Bin 0 -> 49632 bytes images/status-in.gif | Bin 0 -> 7222 bytes images/todo-app.png | Bin 0 -> 55408 bytes images/todo-sign-in.png | Bin 0 -> 47827 bytes images/ubuntu-browser.png | Bin 0 -> 101232 bytes images/welcome-back.png | Bin 0 -> 60715 bytes images/windows-apps-features.png | Bin 0 -> 28978 bytes images/windows-browser.png | Bin 0 -> 63601 bytes images/windows-installer.png | Bin 0 -> 22236 bytes images/windows-security.png | Bin 0 -> 43228 bytes images/windows-start.png | Bin 0 -> 107146 bytes index.md | 24 + news/index.html | 49 + package.json | 38 + robots.txt | 2 + search.json | 14 + thanks.md | 13 + 284 files changed, 35993 insertions(+), 1 deletion(-) create mode 100644 404.md create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 _config.yml create mode 100644 _data/changelog.yml create mode 100644 _data/navigation_auth.yml create mode 100644 _data/navigation_docs.yml create mode 100644 _data/navigation_footer.yml create mode 100644 _data/navigation_gaia.yml create mode 100755 _data/navigation_header.yml create mode 100644 _data/navigation_home.yml create mode 100644 _data/navigation_learn.yml create mode 100644 _data/navigation_naming.yml create mode 100644 _data/navigation_newinternet.yml create mode 100644 _includes/contribute_code.md create mode 100644 _includes/contribute_community.md create mode 100644 _includes/contribute_issues.md create mode 100644 _includes/contribute_ovr.md create mode 100644 _includes/disqus_comments.html create mode 100644 _includes/editme.html create mode 100644 _includes/footer.html create mode 100644 _includes/glossary.md create mode 100644 _includes/google-analytics.html create mode 100644 _includes/head.html create mode 100644 _includes/header.html create mode 100644 _includes/hero.html create mode 100644 _includes/image.html create mode 100644 _includes/map.html create mode 100644 _includes/navbar.html create mode 100644 _includes/offcanvas.html create mode 100644 _includes/paginate-blog.html create mode 100644 _includes/paginate-doc.html create mode 100644 _includes/paginate-post.html create mode 100644 _includes/post-meta.html create mode 100644 _includes/related-auth.html create mode 100644 _includes/related-docs.html create mode 100644 _includes/related-gaia.html create mode 100644 _includes/related-learn.html create mode 100644 _includes/related-naming.html create mode 100644 _includes/related-newinternet.html create mode 100644 _includes/related-posts.html create mode 100644 _includes/search.html create mode 100644 _includes/share.html create mode 100644 _includes/slideshow.html create mode 100644 _includes/social-networks.html create mode 100644 _layouts/auth.html create mode 100644 _layouts/changelog.html create mode 100644 _layouts/contact.html create mode 100644 _layouts/default.html create mode 100644 _layouts/doc.html create mode 100644 _layouts/gaia.html create mode 100644 _layouts/home.html create mode 100644 _layouts/learn.html create mode 100644 _layouts/naming.html create mode 100644 _layouts/newinternet.html create mode 100644 _layouts/page.html create mode 100644 _layouts/post.html create mode 100644 _posts/2017-05-25-post63.md create mode 100644 _sass/syntax-highlighting/github.scss create mode 100644 _sass/system-font-css/CHANGELOG.md create mode 100644 _sass/system-font-css/LICENSE.md create mode 100644 _sass/system-font-css/README.md create mode 100644 _sass/system-font-css/_system-font.scss create mode 100644 _sass/system-font-css/index.html create mode 100644 _sass/system-font-css/package.json create mode 100644 _sass/system-font-css/system-font.css create mode 100644 _sass/system-font-css/system-font.less create mode 100644 _sass/theme/mixins.scss create mode 100644 _sass/theme/uikit.scss create mode 100644 _sass/theme/variables.scss create mode 100644 _sass/uikit/components/_import.components.scss create mode 100644 _sass/uikit/components/_import.scss create mode 100644 _sass/uikit/components/_import.utilities.scss create mode 100644 _sass/uikit/components/accordion.scss create mode 100644 _sass/uikit/components/alert.scss create mode 100644 _sass/uikit/components/align.scss create mode 100644 _sass/uikit/components/animation.scss create mode 100644 _sass/uikit/components/article.scss create mode 100644 _sass/uikit/components/background.scss create mode 100644 _sass/uikit/components/badge.scss create mode 100644 _sass/uikit/components/base.scss create mode 100644 _sass/uikit/components/breadcrumb.scss create mode 100644 _sass/uikit/components/button.scss create mode 100644 _sass/uikit/components/card.scss create mode 100644 _sass/uikit/components/close.scss create mode 100644 _sass/uikit/components/column.scss create mode 100644 _sass/uikit/components/comment.scss create mode 100644 _sass/uikit/components/container.scss create mode 100644 _sass/uikit/components/countdown.scss create mode 100644 _sass/uikit/components/cover.scss create mode 100644 _sass/uikit/components/description-list.scss create mode 100644 _sass/uikit/components/divider.scss create mode 100644 _sass/uikit/components/dotnav.scss create mode 100644 _sass/uikit/components/drop.scss create mode 100644 _sass/uikit/components/dropdown.scss create mode 100644 _sass/uikit/components/flex.scss create mode 100644 _sass/uikit/components/form-range.scss create mode 100644 _sass/uikit/components/form.scss create mode 100644 _sass/uikit/components/grid.scss create mode 100644 _sass/uikit/components/heading.scss create mode 100644 _sass/uikit/components/icon.scss create mode 100644 _sass/uikit/components/iconnav.scss create mode 100644 _sass/uikit/components/inverse.scss create mode 100644 _sass/uikit/components/label.scss create mode 100644 _sass/uikit/components/lightbox.scss create mode 100644 _sass/uikit/components/link.scss create mode 100644 _sass/uikit/components/list.scss create mode 100644 _sass/uikit/components/margin.scss create mode 100644 _sass/uikit/components/marker.scss create mode 100644 _sass/uikit/components/mixin.scss create mode 100644 _sass/uikit/components/modal.scss create mode 100644 _sass/uikit/components/nav.scss create mode 100644 _sass/uikit/components/navbar.scss create mode 100644 _sass/uikit/components/notification.scss create mode 100644 _sass/uikit/components/offcanvas.scss create mode 100644 _sass/uikit/components/overlay.scss create mode 100644 _sass/uikit/components/padding.scss create mode 100644 _sass/uikit/components/pagination.scss create mode 100644 _sass/uikit/components/placeholder.scss create mode 100644 _sass/uikit/components/position.scss create mode 100644 _sass/uikit/components/print.scss create mode 100644 _sass/uikit/components/progress.scss create mode 100644 _sass/uikit/components/search.scss create mode 100644 _sass/uikit/components/section.scss create mode 100644 _sass/uikit/components/slidenav.scss create mode 100644 _sass/uikit/components/slider.scss create mode 100644 _sass/uikit/components/slideshow.scss create mode 100644 _sass/uikit/components/sortable.scss create mode 100644 _sass/uikit/components/spinner.scss create mode 100644 _sass/uikit/components/sticky.scss create mode 100644 _sass/uikit/components/subnav.scss create mode 100644 _sass/uikit/components/switcher.scss create mode 100644 _sass/uikit/components/tab.scss create mode 100644 _sass/uikit/components/table.scss create mode 100644 _sass/uikit/components/text.scss create mode 100644 _sass/uikit/components/thumbnav.scss create mode 100644 _sass/uikit/components/tile.scss create mode 100644 _sass/uikit/components/tooltip.scss create mode 100644 _sass/uikit/components/totop.scss create mode 100644 _sass/uikit/components/transition.scss create mode 100644 _sass/uikit/components/utility.scss create mode 100644 _sass/uikit/components/variables.scss create mode 100644 _sass/uikit/components/visibility.scss create mode 100644 _sass/uikit/components/width.scss create mode 100644 _sass/uikit/mixins-theme.scss create mode 100644 _sass/uikit/mixins.scss create mode 100644 _sass/uikit/theme/_import.scss create mode 100644 _sass/uikit/theme/accordion.scss create mode 100644 _sass/uikit/theme/alert.scss create mode 100644 _sass/uikit/theme/align.scss create mode 100644 _sass/uikit/theme/animation.scss create mode 100644 _sass/uikit/theme/article.scss create mode 100644 _sass/uikit/theme/background.scss create mode 100644 _sass/uikit/theme/badge.scss create mode 100644 _sass/uikit/theme/base.scss create mode 100644 _sass/uikit/theme/breadcrumb.scss create mode 100644 _sass/uikit/theme/button.scss create mode 100644 _sass/uikit/theme/card.scss create mode 100644 _sass/uikit/theme/close.scss create mode 100644 _sass/uikit/theme/column.scss create mode 100644 _sass/uikit/theme/comment.scss create mode 100644 _sass/uikit/theme/container.scss create mode 100644 _sass/uikit/theme/countdown.scss create mode 100644 _sass/uikit/theme/description-list.scss create mode 100644 _sass/uikit/theme/divider.scss create mode 100644 _sass/uikit/theme/dotnav.scss create mode 100644 _sass/uikit/theme/drop.scss create mode 100644 _sass/uikit/theme/dropdown.scss create mode 100644 _sass/uikit/theme/form-range.scss create mode 100644 _sass/uikit/theme/form.scss create mode 100644 _sass/uikit/theme/grid.scss create mode 100644 _sass/uikit/theme/heading.scss create mode 100644 _sass/uikit/theme/icon.scss create mode 100644 _sass/uikit/theme/iconnav.scss create mode 100644 _sass/uikit/theme/inverse.scss create mode 100644 _sass/uikit/theme/label.scss create mode 100644 _sass/uikit/theme/lightbox.scss create mode 100644 _sass/uikit/theme/link.scss create mode 100644 _sass/uikit/theme/list.scss create mode 100644 _sass/uikit/theme/margin.scss create mode 100644 _sass/uikit/theme/marker.scss create mode 100644 _sass/uikit/theme/modal.scss create mode 100644 _sass/uikit/theme/nav.scss create mode 100644 _sass/uikit/theme/navbar.scss create mode 100644 _sass/uikit/theme/notification.scss create mode 100644 _sass/uikit/theme/offcanvas.scss create mode 100644 _sass/uikit/theme/overlay.scss create mode 100644 _sass/uikit/theme/padding.scss create mode 100644 _sass/uikit/theme/pagination.scss create mode 100644 _sass/uikit/theme/placeholder.scss create mode 100644 _sass/uikit/theme/position.scss create mode 100644 _sass/uikit/theme/progress.scss create mode 100644 _sass/uikit/theme/search.scss create mode 100644 _sass/uikit/theme/section.scss create mode 100644 _sass/uikit/theme/slidenav.scss create mode 100644 _sass/uikit/theme/sortable.scss create mode 100644 _sass/uikit/theme/spinner.scss create mode 100644 _sass/uikit/theme/sticky.scss create mode 100644 _sass/uikit/theme/subnav.scss create mode 100644 _sass/uikit/theme/tab.scss create mode 100644 _sass/uikit/theme/table.scss create mode 100644 _sass/uikit/theme/text.scss create mode 100644 _sass/uikit/theme/thumbnav.scss create mode 100644 _sass/uikit/theme/tile.scss create mode 100644 _sass/uikit/theme/tooltip.scss create mode 100644 _sass/uikit/theme/totop.scss create mode 100644 _sass/uikit/theme/transition.scss create mode 100644 _sass/uikit/theme/utility.scss create mode 100644 _sass/uikit/theme/variables.scss create mode 100644 _sass/uikit/theme/width.scss create mode 100644 _sass/uikit/uikit-theme.scss create mode 100644 _sass/uikit/uikit.scss create mode 100644 _sass/uikit/variables-theme.scss create mode 100644 _sass/uikit/variables.scss create mode 100644 assets/css/main.scss create mode 100644 assets/img/favicon.png create mode 100644 assets/img/location.svg create mode 100644 assets/img/touch-icon.png create mode 100644 assets/js/custom.js create mode 100644 assets/js/main.js create mode 100644 assets/posts/7C04AAA0EE9E3886.png create mode 100644 assets/posts/SVG/logo.svg create mode 100644 assets/posts/books.svg create mode 100644 assets/posts/box.svg create mode 100644 assets/posts/city.svg create mode 100644 assets/posts/imac.svg create mode 100644 assets/posts/image1.png create mode 100644 assets/posts/logo.png create mode 100644 assets/posts/logo.svg create mode 100755 assets/posts/old.logo.svg create mode 100644 assets/posts/safe.svg create mode 100644 assets/posts/sky.svg create mode 100644 assets/posts/slideshow-1/image1.png create mode 100644 assets/posts/teacup.svg create mode 100644 assets/posts/touch-icon.png create mode 100644 assets/posts/touch-icon.svg create mode 100644 changelog.md create mode 100644 contact.md create mode 100644 images/blockstack-bar.png create mode 100644 images/browser-on-mac-1.png create mode 100644 images/browser-on-mac.png create mode 100644 images/browser-uninstall.png create mode 100644 images/create-id-0.png create mode 100644 images/create-id-1.png create mode 100644 images/create-id-2.png create mode 100644 images/create-id-3.png create mode 100644 images/display-complete.png create mode 100644 images/dmg-notice.png create mode 100644 images/eject-blockstack.png create mode 100644 images/hw-loggedin.png create mode 100644 images/initial-app.gif create mode 100644 images/login-choice.png create mode 100644 images/login-no-auth.png create mode 100644 images/login.gif create mode 100644 images/login.png create mode 100644 images/make-a-list.png create mode 100644 images/multi-player-storage-status.png create mode 100644 images/multiple-lists.png create mode 100644 images/network-connections.gif create mode 100644 images/new-prompt.gif create mode 100644 images/on-your-mind.gif create mode 100644 images/osx-dmg.png create mode 100644 images/publish-data-perm.png create mode 100644 images/quit-blockstack.png create mode 100644 images/recovery-code.png create mode 100644 images/sample-code.png create mode 100644 images/saving-status.png create mode 100644 images/status-in.gif create mode 100644 images/todo-app.png create mode 100644 images/todo-sign-in.png create mode 100644 images/ubuntu-browser.png create mode 100644 images/welcome-back.png create mode 100644 images/windows-apps-features.png create mode 100644 images/windows-browser.png create mode 100644 images/windows-installer.png create mode 100644 images/windows-security.png create mode 100644 images/windows-start.png create mode 100644 index.md create mode 100644 news/index.html create mode 100644 package.json create mode 100644 robots.txt create mode 100644 search.json create mode 100644 thanks.md diff --git a/404.md b/404.md new file mode 100644 index 00000000..0514c480 --- /dev/null +++ b/404.md @@ -0,0 +1,7 @@ +--- +layout: page +title: Feeling Lost +permalink: /404.html +--- + +## The page you are looking for cannot be found. Please navigate to [homepage]({{ site.url }}). diff --git a/Gemfile b/Gemfile new file mode 100644 index 00000000..9b051c13 --- /dev/null +++ b/Gemfile @@ -0,0 +1,32 @@ +source "https://rubygems.org" +ruby RUBY_VERSION + +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +gem "jekyll", "3.4.1" + +# This is the default theme for new Jekyll sites. You may change this to anything you like. +# gem "minima", "~> 2.0" + +# If you want to use GitHub Pages, remove the "gem "jekyll"" above and +# uncomment the line below. To upgrade, run `bundle update github-pages`. +# gem "github-pages", group: :jekyll_plugins + +# If you have any plugins, put them here! +group :jekyll_plugins do + gem "jekyll-feed", "~> 0.6" + gem 'jekyll-paginate', '~> 1.1' + gem 'jekyll-seo-tag' + gem 'jekyll-gist' + gem 'jekyll-livereload' + gem 'jekyll-avatar' +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 00000000..881cda94 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,88 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + colorator (1.1.0) + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + eventmachine (1.2.7) + faraday (0.15.2) + multipart-post (>= 1.2, < 3) + ffi (1.9.25) + forwardable-extended (2.6.0) + http_parser.rb (0.6.0) + jekyll (3.4.1) + addressable (~> 2.4) + colorator (~> 1.0) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 1.1) + kramdown (~> 1.3) + liquid (~> 3.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (~> 1.7) + safe_yaml (~> 1.0) + jekyll-avatar (0.6.0) + jekyll (~> 3.0) + jekyll-feed (0.10.0) + jekyll (~> 3.3) + jekyll-gist (1.5.0) + octokit (~> 4.2) + jekyll-livereload (0.2.2) + em-websocket (~> 0.5) + jekyll (~> 3.0) + jekyll-paginate (1.1.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.5.0) + jekyll (~> 3.3) + jekyll-watch (1.5.1) + listen (~> 3.0) + kramdown (1.17.0) + liquid (3.0.6) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + mercenary (0.3.6) + multipart-post (2.0.0) + octokit (4.9.0) + sawyer (~> 0.8.0, >= 0.5.3) + pathutil (0.16.1) + forwardable-extended (~> 2.6) + public_suffix (3.0.2) + rb-fsevent (0.10.3) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) + rouge (1.11.1) + ruby_dep (1.5.0) + safe_yaml (1.0.4) + sass (3.5.7) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sawyer (0.8.1) + addressable (>= 2.3.5, < 2.6) + faraday (~> 0.8, < 1.0) + +PLATFORMS + ruby + +DEPENDENCIES + jekyll (= 3.4.1) + jekyll-avatar + jekyll-feed (~> 0.6) + jekyll-gist + jekyll-livereload + jekyll-paginate (~> 1.1) + jekyll-seo-tag + tzinfo-data + +RUBY VERSION + ruby 2.3.3p222 + +BUNDLED WITH + 1.16.3 diff --git a/README.md b/README.md index 06fa1465..4bf00057 100644 --- a/README.md +++ b/README.md @@ -1 +1,351 @@ -# docs.blockstack +# Docs is a premium documentation Jekyll theme + +Desk was developed by [Ivan Chromjak](https://ivanchromjak.com) for [jekyll.plus](https://jekyll.plus/), theme [live demo](https://docs.jekyll.plus/) available. + +## Features + +* Contact form +* Live Search +* Responsive videos +* Image lightbox +* Google maps +* Github avatar +* Changelog page +* Contact form (FormSpree) +* Pre-built pages +* Disqus comments for posts +* Configurable home page header images +* Optimised for [GitHub](https://pages.github.com/) pages +* RSS feed +* SEO tags +* Google Analytics + + +## Installation + +Install the dependencies with [Bundler](http://bundler.io/): + +```bash +bundle install +``` + +Run the following to generate your site: +```bash +bundle exec jekyll serve +``` + +You can find more on [Deployment Methods](https://jekyllrb.com/docs/deployment-methods/) page on Jekyll website. + +## Setup + +### Site and author details +Add your site and author details in `_config.yml`: +```yaml +# Site title and description +title: Docs - Documentation Jekyll Theme +description: Documentation Jekyll theme. + +# Site base hostname & protocol, e.g. http://example.com +url: "https://docs.jekyll.plus" + +# Site logo, image or text +brand: + image: touch-icon.svg # e.g. logo.png, upload logo image file to /assets/img/ folder + text: Docs # if the above "logo:" image variable is not set, this text logo is displayed instead + +# Default author settings +author: + name: John Smith + github: PressApps # Github username for avatar + +# Author settings, displayed on post and doc pages if front matter references author name e.g. author: peter +authors: + peter: + name: Peter Brown + github: PressApps # Github username for avatar + +# Social icons displayed in footer +social: + email: + website: + facebook: https://www.facebook.com/ + flickr: + dribbble: + github: + googleplus: + instagram: https://www.instagram.com/ + linkedin: + pinterest: + twitter: https://twitter.com/ + vimeo: https://vimeo.com/ + youtube: + +# Twitter share button +twitter_username: + +``` + +### Navigation Bar +Set in the main navigation links in `_data/navigation_header.yml`: +```yaml +- title: About + url: /about/ +``` + +### Footer + +Edit copyright notice in `_config.yml`: +```yaml +footer: + copyright: +``` + +Set in the navigation links in `_data/navigation_footer.yml`: +```yaml +- title: About + url: /about/ +``` + +### Enabling comments (via Disqus) + +Optionally, if you have a Disqus account, you can tell Jekyll to use it to show a comments section below each post. To enable it, add the following lines to your Jekyll site: + +```yaml +disqus: + shortname: my_disqus_shortname +``` + +You can find out more about Disqus' shortnames [here](https://help.disqus.com/customer/portal/articles/466208). + +Comments are enabled by default and will only appear in production, i.e., `JEKYLL_ENV=production`. If you don't want to display comments for a particular post you can disable them by adding `comments: false` to that post's YAML Front Matter. + +### Google Analytics + +To enable Google Anaytics, add the following lines to your Jekyll site: + +```yaml + google_analytics: UA-NNNNNNNN-N +``` + +Google Analytics will only appear in production, i.e., `JEKYLL_ENV=production` + +### Google Map + +To display Google map on contact page, add the following in your page content, replacing latitude, longitude and zoom values: + +```yaml +{% include map.html latitude="40.6700" longitude="-73.9400" zoom="16" %} +``` + +### Contact Form (via FormSpree) + +Submit the form and confirm your email address at [FormSpree](https://formspree.io/). Then add the following lines to contact page YAML Front Matter, replacing the email address: + +```yaml +formspree: + email: my_name@gmail.com + redirect: /thanks/ +``` + +### Update favicon + +You can find the current favicon (favicon.png) inside the theme `/assets/img/` directory, just replace it with your new favicon. + +## Posts + +To create a new post, you can create a new markdown file inside the `_posts` directory by following the recommended file naming format: +``` +YEAR-MONTH-DAY-title.MARKUP +``` +Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. For example, the following are examples of valid post filenames: + +``` +2011-12-31-new-years-eve-is-awesome.md +2012-09-12-how-to-write-a-blog.md +``` + +Post requires front matter, everything in between the first and second --- are part of the YAML Front Matter, and everything after the second --- will be rendered with Markdown and show up as “Content”. +The following is a post file with different configurations you can add as example: + +```yaml +--- +layout: post +title: How To Travel On Low Budget +--- +``` + +You can rebuild the site in many different ways, but the most common way is to run `bundle exec jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. + +To keep things more organized, add post images to `/assets/posts/` directory, and add theme images to `/assets/img/` directory. + +### Adding images +To add an image to a post or page use the following codes: +Local image from `/assets/posts/` directory: +```yaml +{% include image.html img="girl.jpg" alt="Alt for image" caption="Girl on a rock" %} +``` +External wide image with lightbox: +```yaml +{% include image.html img="https://source.unsplash.com/TT-ROxWj9nA.jpg" lightbox="true" alt="Alt for image" caption="Image in lightbox" %} +``` + +### Adding table of contents +Add the following code at the top of the post: +``` +#### Sections in this article +{:.no_toc} +* TOC +{:toc} +``` +`{:.no_toc}` exludes `#### Sections in this article` title from indexing in table of contents + +### Responsive Videos +Embed local videos: +```html + +``` +Embed YouTube videos: +```html + +``` + +To create a draft post, create the post file under the `_drafts` directory, and you can find more information in [Working with Drafts](https://jekyllrb.com/docs/drafts/). + +## Home Page + +To create a home page, just create a `index.md` file inside the root directory. The following is a YAML Front Matter example for a page: + +```yaml +--- +layout: home +hero: + title: How Can We Help? # hero section settings + subtitle: Search or browse in depth articles and videos on everything Jekyll, from basic theme setup and hosting to customisation and development + image: imac.svg # display small image above title + search: true # enable search +categories: + columns: 3 # number of category columns; 1, 2, 3, 4 + title: Browse Topics + subtitle: Get your answers fast, jump to most popular documentation content +featured: # featured docs section settings + title: Popular Articles + tag: featured # tag used to populate featured section on home page +section: # display page content + title: Need More? + subtitle: This section displays optional page content lorem ipsum +cta: # call to action section + title: Didn't find an answer to your question? + subtitle: Get in touch with us for details on additional services and custom work pricing + button_text: Contact Us + button_url: /contact/ +--- +``` + +Home page category boxes are added in `_data/navigation_home.yml`, e.g.: +```yml +- title: Getting Started + desc: Get your account up and running in just few easy steps + icon: settings + doc: usage + +- title: Account and Billing + desc: Managing your account, creating new users and exporting data + icon: credit-card + doc: drafts +``` + +All available icons can be found [here](https://getuikit.com/docs/icon#library). + +## Docs + +To create a document post, just create a new page inside the root directory and add the following code in content: +``` +{% include faqs.html %} +``` + +Create new doc post entries in `_docs` folder, similar to creating posts, but with following front matter settings: + +```yml +--- +layout: doc +title: Category hosting Setting up new domain and page +subtitle: This is optional doc subtitle +tags: featured development +author: peter +--- +``` + +Sidebar navigation on docs post can edited in `_data/navigation_docs.yml`: + +```yml +- title: Getting Started # Section title + docs: + - home # Doc file name from _docs folder + - quickstart + - installation + - windows +``` + +## Changelog page + +Create new page with the following front matter: + +```yml +--- +layout: changelog +title: Changelog +permalink: /changelog/ +--- +``` + +Changelog enties are added in `_data/changelog.yml`: + +```yml +- title: Version 0.6.0 + label: + date: Aug 15, 2017 + list: + - Added style support for radio and checkbox in Firefox + - Removed class from Section component +``` + + +## Customization + +To modify the primary color, open `/_sass/theme/variables.scss` and replace the color values e.g.: + +```scss +// Main content +$color-main: #0F1214; +``` + +Further style customisation can be done in the following files: +``` +/_sass/theme/mixins.scss +/_sass/theme/variables.scss +/assets/css/main.scss +``` + +## Development + +Install [UIkit](https://getuikit.com/) font end framework dependency via Npm: +```bash +npm install +``` +Enable live browser reload with the following: +```bash +bundle exec jekyll s --livereload +``` + +## Credits and Sources + +- Google analytics https://www.google.com/analytics/ +- Google maps https://www.google.com/maps +- UIkit front end framework https://getuikit.com/ +- Jekyll CML https://jekyllrb.com/ + +## Support +Customer support is provided through our Envato profile page [contact form](https://themeforest.net/user/pressapps) for up to six months from the purchase date and is provided Monday to Friday during the business week. We aim to answer all support requests daily, most are handled within 48h. diff --git a/_config.yml b/_config.yml new file mode 100644 index 00000000..7aeb541f --- /dev/null +++ b/_config.yml @@ -0,0 +1,116 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog. +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. + +# Site title and description +title: Blockstack +description: Docs + +# Site subpath, e.g. /blog +baseurl: "" + +# Permalink URLs structure, for permalink style options see: https://jekyllrb.com/docs/permalinks/ +permalink: /:title/ + +# Site base hostname & protocol, e.g. http://example.com +url: "https://zbabystack.netlify.com/" + + +github_editme_path: moxiegirl/docs-new/blob/master +# if you're using Github, provide the basepath to the branch you've created for reviews, following the sample here. if not, leave this value blank. + + +# Site logo, image or text +brand: + image: logo.png # e.g. logo.png, upload logo image file to /assets/img/ folder + text: Docs # if the above "logo:" image variable is not set, this text logo is displayed instead + +# Default author settings +author: + name: Blockstack + github: Blockstack # Github username for avatar + +# Author settings, displayed on post and doc pages if front matter references author name e.g. author: peter +authors: + peter: + name: Peter Brown + github: PressApps # Github username for avatar + +# Social icons displayed in footer +social: + email: + website: + facebook: https://www.facebook.com/ + flickr: + dribbble: + github: + googleplus: + instagram: https://www.instagram.com/ + linkedin: + pinterest: + twitter: https://twitter.com/ + vimeo: https://vimeo.com/ + youtube: + +# Twitter share button +twitter_username: + +# Default footer image settings +footer: + copyright: Blockstack + +# Disqus comments shortname, requires Disqus account https://disqus.com/ +disqus: + shortname: # 1234 + +# Google analytics code, get your code here https://www.google.com/analytics/ +google_analytics: + +# Google maps API key, get your key here: https://developers.google.com/maps/documentation/javascript/get-api-key +google_maps_api_key: + +# Number of posts displayed on blog page +paginate: 10 + +# Blog path +paginate_path: "/news/:num/" + +# Path to post content assets directory i.e post images, pdfs etc +post_assets: /assets/posts/ +#keep_files: (`/images/`) + + +# Build settings +markdown: kramdown +highlighter: rouge + +gems: + - jekyll-feed + - jekyll-seo-tag + - jekyll-gist + - jekyll-avatar +exclude: + - Gemfile + - Gemfile.lock + - node_modules + +sass: + style: compressed + +collections: + apis: + output: true + docs: + output: true + gaia: + output: true + learn: + output: true + naming: + output: true + newinternet: + output: true + auth: + output: true diff --git a/_data/changelog.yml b/_data/changelog.yml new file mode 100644 index 00000000..5d3cbfc3 --- /dev/null +++ b/_data/changelog.yml @@ -0,0 +1,38 @@ +# Changelog page source + +- title: Version 1.0.0 + label: STABLE + date: Oct 21, 2017 + list: + - Added Slideshow component + - Added style support for radio and minusbox in Firefox + - Removed class from Section component + - Allow fullscreen mode for videos in Lightbox + - Fixed responsive images in modal for IE11 + - Fix Grid and Margin component for cells with no height + - Larger horizontal padding for form input and textarea + +- title: Version 1.0.0 + label: BETA 1 + date: Sep 01, 2017 + list: + - Allow fullscreen mode for YouTube videos in Lightbox + - Fix icons not displaying if connected in rapid succession + - Fix scrollbar jumping in Switcher + +- title: Version 0.6.0 + label: + date: Aug 15, 2017 + list: + - Added style support for radio and checkbox in Firefox + - Removed class from Section component + - Add workaround to mitigate the duplicating icons issue + - Fixed responsive images in modal for IE11 + +- title: Version 0.5.0 + label: + date: Oct 21, 2017 + list: + - Media options now support any valid media query syntax + - Added style support for radio and checkbox in Firefox + - Fix whitespace trimming in dist diff --git a/_data/navigation_auth.yml b/_data/navigation_auth.yml new file mode 100644 index 00000000..b577b96b --- /dev/null +++ b/_data/navigation_auth.yml @@ -0,0 +1,13 @@ +- title: Atlas Overview + docs: + - auth/overview + - auth/workings + - auth/compare + +- title: How to use + docs: + - auth/introduction + - auth/lookups + - auth/addnew + - auth/propagate + - auth/inventory diff --git a/_data/navigation_docs.yml b/_data/navigation_docs.yml new file mode 100644 index 00000000..a71d813f --- /dev/null +++ b/_data/navigation_docs.yml @@ -0,0 +1,25 @@ +- title: App Development Tutorial + docs: + - docs/about + - docs/decide + - docs/idea + - docs/build + - docs/register + +- title: Feature examples + docs: + - docs/tutorials/hello-blockstack + - docs/tutorials/multi-player-storage + +- title: Reference + docs: + - apis/jsdocs/index + - docs/faq + - docs/glossary + +- title: Contributing + docs: + - docs/contribute + - docs/issues + - docs/pullrequest + - docs/community diff --git a/_data/navigation_footer.yml b/_data/navigation_footer.yml new file mode 100644 index 00000000..11f37266 --- /dev/null +++ b/_data/navigation_footer.yml @@ -0,0 +1,10 @@ +# Footer navigation links + +- title: Blockstack.org + url: https://blockstack.org + +- title: Forums + url: https://forum.blockstack.org/ + +- title: GitHub + url: https://github.com/blockstack diff --git a/_data/navigation_gaia.yml b/_data/navigation_gaia.yml new file mode 100644 index 00000000..fbe91048 --- /dev/null +++ b/_data/navigation_gaia.yml @@ -0,0 +1,18 @@ +- title: About + docs: + - gaia/overview + - gaia/control + - gaia/writeread + - gaia/access + +- title: Tutorials + docs: + - gaia/hello-gaia + - gaia/media + - gaia/sharing + +- title: How to + docs: + - gaia/run-hub + - gaia/configure + - gaia/test diff --git a/_data/navigation_header.yml b/_data/navigation_header.yml new file mode 100755 index 00000000..baae16c1 --- /dev/null +++ b/_data/navigation_header.yml @@ -0,0 +1,9 @@ +# Navbar menu navigation links +- title: Blockstack.org + url: https://blockstack.org + +- title: Forums + url: https://forum.blockstack.org/ + +- title: GitHub + url: https://github.com/blockstack diff --git a/_data/navigation_home.yml b/_data/navigation_home.yml new file mode 100644 index 00000000..6b5c9da0 --- /dev/null +++ b/_data/navigation_home.yml @@ -0,0 +1,31 @@ +# Categories home page navigation + +- title: Evaluate Blockstack + desc: Learn about the technology behind Blockstack. Understand the value it offers and how it provides it. + icon: settings + doc: learn/overview + +- title: Use the New Internet + desc: Learn about the New Internet and its applications. Create an identity and learn how to use it. + icon: settings + doc: newinternet/privacy + +- title: Build Apps and Earn Money + desc: Learn how to build an application that earns with Blockstack. + icon: settings + doc: docs/about + +- title: Use the Naming Service + desc: Managing your account, create new users and exporting data + icon: cog + doc: naming/overview + +- title: Implement Authentication + desc: Managing your account, creating new users and exporting data + icon: cog + doc: auth/overview + +- title: Implement Storage with GAIA + desc: Backend storage drivers and interactions between developer APIs and the Gaia service. + icon: cog + doc: gaia/overview diff --git a/_data/navigation_learn.yml b/_data/navigation_learn.yml new file mode 100644 index 00000000..985a25fd --- /dev/null +++ b/_data/navigation_learn.yml @@ -0,0 +1,23 @@ +- title: Introduction + docs: + - learn/overview + - learn/problems + - learn/tokens + +- title: Components + docs: + - learn/identity + - learn/profiles + +- title: Reference + docs: + - learn/faqs + - learn/glossary + + +- title: Contributing + docs: + - learn/contribute + - learn/issues + - learn/pullrequest + - learn/community diff --git a/_data/navigation_naming.yml b/_data/navigation_naming.yml new file mode 100644 index 00000000..a327ffc5 --- /dev/null +++ b/_data/navigation_naming.yml @@ -0,0 +1,59 @@ +- title: Introduction + docs: + - naming/overview + - naming/why + - naming/architecture + - naming/howto + +- title: Tutorials + docs: + - naming/createspace + - naming/linkit + - naming/bldprofile + - naming/runsub + +- title: How to use BNS + docs: + - naming/namespaces + - naming/create + - naming/list + - naming/costregister + - naming/consensus + +- title: Resolve BNS Names + docs: + - naming/resolve + - naming/luzone + - naming/listnames + - naming/listhistory + - naming/luhistory + - naming/luhash + +- title: Register BNS Names + docs: + - naming/register + - naming/getfee + - naming/regname + - naming/gethash + +- title: Manage Names + docs: + - naming/mngover + - naming/transfer + - naming/update + - naming/revoke + - naming/renew + +- title: BNS Subdomains + docs: + - naming/subover + - naming/lifecycle + - naming/submng + - naming/subreg + +- title: BNS Forks + docs: + - naming/forkovr + - naming/forkset + - naming/did + - naming/encode diff --git a/_data/navigation_newinternet.yml b/_data/navigation_newinternet.yml new file mode 100644 index 00000000..3fe12a8a --- /dev/null +++ b/_data/navigation_newinternet.yml @@ -0,0 +1,18 @@ +- title: Introduction + docs: + - newinternet/overview + - newinternet/responsibility + - newinternet/privacy + - newinternet/community + + +- title: Get started + docs: + - newinternet/browser-introduction + - newinternet/ids-introduction + - newinternet/findapps + - newinternet/install + +- title: Reference + docs: + - newinternet/glossary diff --git a/_includes/contribute_code.md b/_includes/contribute_code.md new file mode 100644 index 00000000..be2c2b98 --- /dev/null +++ b/_includes/contribute_code.md @@ -0,0 +1,93 @@ +### Sections in this article +{:.no_toc} +* TOC +{:toc} + +Good pull requests—patches, improvements, new features—are a fantastic help. They should remain focused in scope and avoid containing unrelated commits. + +**Please ask first** before embarking on any significant pull request (e.g. implementing features, refactoring code, porting to a different language), otherwise you risk spending a lot of time working on something that the project's developers might not want to merge into the project. + +Please adhere to the [coding guidelines](#code-guidelines) used throughout the project (indentation, accurate comments, etc.) and any other requirements (such as test coverage). + +When contributing to Blockstack's documentation, you should edit the documentation source files in [the `/app/` directory of the `master` branch](https://github.com/blockstack/blockstack-browser/tree/master/app). + +Adhering to the following process is the best way to get your work included in the project: + +1. [Fork](https://help.github.com/fork-a-repo/) the project, clone your fork, + and configure the remotes: + + ```bash + # Clone your fork of the repo into the current directory + git clone https://github.com//blockstack-browser.git + # Navigate to the newly cloned directory + cd blockstack-browser + # Assign the original repo to a remote called "upstream" + git remote add upstream https://github.com/blockstack/blockstack-browser.git + ``` + +2. If you cloned a while ago, get the latest changes from upstream: + + ```bash + git checkout master + git pull upstream master + ``` + +3. Create a new topic branch (off the main project development branch) to + contain your feature, change, or fix: + + ```bash + git checkout -b + ``` + +4. Commit your changes in logical chunks. Please adhere to these [git commit + message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) + or your code is unlikely be merged into the main project. Use Git's + [interactive rebase](https://help.github.com/articles/interactive-rebase) + feature to tidy up your commits before making them public. + +5. Locally merge (or rebase) the upstream development branch into your topic branch: + + ```bash + git pull [--rebase] upstream master + ``` + +6. Push your topic branch up to your fork: + + ```bash + git push origin + ``` + +7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) + with a clear title and description against the `master` branch. + +**IMPORTANT**: By submitting a patch, you agree to allow the project owners to +license your work under the terms of the [MPL-2.0 License](LICENSE.md) (if it +includes code changes) and under the terms of the +[Creative Commons Attribution 3.0 Unported License](docs/LICENSE.md) +(if it includes documentation changes). + + +## Code guidelines + +### HTML + +[Adhere to the Code Guide.](http://codeguide.co/#html) + +- Use tags and elements appropriate for an HTML5 doctype (e.g., self-closing tags). + +### JS + +- No semicolons (in client-side JS) +- 2 spaces (no tabs) +- strict mode +- "Attractive" +- Don't use jQuery (no "$" allowed) + +### Checking code + +Run `npm run dev` before committing to ensure your changes follow our coding standards. + + +## License + +By contributing your code, you agree to license your contribution under the [MPL-2.0 License](LICENSE.md). diff --git a/_includes/contribute_community.md b/_includes/contribute_community.md new file mode 100644 index 00000000..20fca8b0 --- /dev/null +++ b/_includes/contribute_community.md @@ -0,0 +1,34 @@ +### Sections in this article +{:.no_toc} +* TOC +{:toc} + +## Community Rewards + +Blockstack Community Reward Program +We’ve set up a community portal with all kinds of tasks you can complete to earn Stacks Tokens by contributing to and supporting the community - these stay in your account and convert into tokens when the network goes live. Many are really easy and they’re all fun and helpful for the community, more information here - https://contribute.blockstack.org/. + + +## Blockstack on Social Media + +Musce libero nunc, dignissim quis turpis quis, semper vehicula dolor. Suspendisse tincidunt consequat quam, ac posuere leo dapibus id. Cras fringilla convallis elit, at eleifend mi interam. + +- Slack +- Twitter +- Telegram +- Reddit + + +## Meeting fact to face + +- Events Calendar +- Meetup +- Blockstack Community Rewards Program +- Request Sponsorship for your Event + + +## Become an evangelist + +Musce libero nunc, dignissim quis turpis quis, semper vehicula dolor. Suspendisse tincidunt consequat quam, ac posuere leo dapibus id. Cras fringilla convallis elit, at eleifend mi interam. + +Nulla non sollicitudin. Morbi sit amet laoreet ipsum, vel pretium mi. Morbi varius, tellus in accumsan blandit, elit ligula eleifend velit, luctus mattis ante nulla condimentum nulla. Etiam vestibulum risus vel arcu elementum eleifend. Cras at dolor eget urna varius faucibus tempus in elit. diff --git a/_includes/contribute_issues.md b/_includes/contribute_issues.md new file mode 100644 index 00000000..0b151294 --- /dev/null +++ b/_includes/contribute_issues.md @@ -0,0 +1,71 @@ +### Sections in this article +{:.no_toc} +* TOC +{:toc} + +## Using the issue tracker + +The [issue tracker](https://github.com/blockstack/blockstack-browser/issues) is the preferred channel for [bug reports](#bug-reports), [features requests](#feature-requests) and [submitting pull requests](#pull-requests), but please respect the following +restrictions: + +* Please **do not** use the issue tracker for personal support requests. Please use the [Forum](https://forum.blockstack.org) or [Slack](https://chat.blockstack.org) as they are better places to get help. + +* Please **do not** derail or troll issues. Keep the discussion on topic and respect the opinions of others. + +* Please **do not** post comments consisting solely of "+1" or ":thumbsup:". Use [GitHub's "reactions" feature](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments) instead. We reserve the right to delete comments which violate this rule. + + +## Issues and labels + +Our bug tracker utilizes several labels to help organize and identify issues. Here's what they represent and how we use them: + +- `bug` - Issues where code is demonstrably a problem +- `chore` - Issues that are not +- `design` - Issues related to design +- `documentation` - Issue that is specifically for addition, creation or editing of documentation +- `enhancement` - Issues that enhance the product +- `feature` - Issues that identify a new feature +- `release-overview` - Overview of release + +For a complete look at our labels, see the [project labels page](https://github.com/blockstack/blockstack-browser/labels). + + +## Bug reports + +A bug is a _demonstrable problem_ that is caused by the code in the repository. Good bug reports are extremely helpful, so thanks! + +Guidelines for bug reports: + +0. **Validate and lint your code** — [validate your HTML](https://html5.validator.nu) and [lint your HTML](https://github.com/twbs/bootlint) to ensure your problem isn't caused by a simple error in your own code. + +1. **Use the GitHub issue search** — check if the issue has already been reported. + +2. **Check if the issue has been fixed** — try to reproduce it using the latest `master` or development branch in the repository. + +3. **Isolate the problem** — ideally create a [reduced test case](https://css-tricks.com/reduced-test-cases/) and a live example. [This JS Bin](https://jsbin.com/lolome/edit?html,output) is a helpful template. + + +A good bug report shouldn't leave others needing to chase you up for more information. Please try to be as detailed as possible in your report. What is your environment? What steps will reproduce the issue? What browser(s) and OS experience the problem? Do other browsers show the bug differently? What would you expect to be the outcome? All these details will help people to fix any potential bugs. + +Example: + +> Short and descriptive example bug report title +> +> A summary of the issue and the browser/OS environment in which it occurs. If +> suitable, include the steps required to reproduce the bug. +> +> 1. This is the first step +> 2. This is the second step +> 3. Further steps, etc. +> +> `` - a link to the reduced test case +> +> Any other information you want to share that is relevant to the issue being +> reported. This might include the lines of code that you have identified as +> causing the bug, and potential solutions (and your opinions on their +> merits). + + +## Feature requests + +Feature requests are welcome. But take a moment to find out whether your idea fits with the scope and aims of the project. It's up to *you* to make a strong case to convince the project's developers of the merits of this feature. Please provide as much detail and context as possible. diff --git a/_includes/contribute_ovr.md b/_includes/contribute_ovr.md new file mode 100644 index 00000000..f49a2c78 --- /dev/null +++ b/_includes/contribute_ovr.md @@ -0,0 +1,27 @@ +### Sections in this article +{:.no_toc} +* TOC +{:toc} + +Looking to contribute something to Blockstack? **Here's how you can help.** + +Please take a moment to review this document in order to make the contribution +process easy and effective for everyone in the community. + +Following these guidelines helps to communicate that you respect the time of +everyone involved in the Blockstack open source community. In return, the +community will address your issue or assess patches and features as quickly as +possible. + +## Who can contribute? + +Musce libero nunc, dignissim quis turpis quis, semper vehicula dolor. Suspendisse tincidunt consequat quam, ac posuere leo dapibus id. Cras fringilla convallis elit, at eleifend mi interam. + +Nulla non sollicitudin. Morbi sit amet laoreet ipsum, vel pretium mi. Morbi varius, tellus in accumsan blandit, elit ligula eleifend velit, luctus mattis ante nulla condimentum nulla. Etiam vestibulum risus vel arcu elementum eleifend. Cras at dolor eget urna varius faucibus tempus in elit. + +## What can you contribute? +Nunc porta malesuada porta. Etiam tristique vestibulum dolor at ultricies. Proin hendrerit sapien sed erat fermentum, at commodo velit consectetur. + +{% include image.html img="image1.png" style="wide" lightbox="true" alt="Alt for image" caption="Image in lightbox" %} + +Etiam vestibulum risus vel arcu elementum eleifend. Cras at dolor eget urna varius faucibus tempus in elit. Cras a dui imperdiet, tempus metus quis, pharetra turpis. Phasellus at massa sit amet ante semper fermentum sed eget lectus. Quisque id dictum magna, et dapibus turpis. diff --git a/_includes/disqus_comments.html b/_includes/disqus_comments.html new file mode 100644 index 00000000..f6e9537e --- /dev/null +++ b/_includes/disqus_comments.html @@ -0,0 +1,20 @@ +{% if page.comments != false and jekyll.environment == "production" %} + +
+ + +{% endif %} diff --git a/_includes/editme.html b/_includes/editme.html new file mode 100644 index 00000000..b7f4e909 --- /dev/null +++ b/_includes/editme.html @@ -0,0 +1 @@ + Edit this page on Github diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 00000000..86d5bae1 --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,31 @@ +
+
+ +
+
    + {% for link in site.data.navigation_footer %} + {% if link.url contains 'http' %} + {% assign domain = '' %} + {% else %} + {% assign domain = relative_url %} + {% endif %} + {% if link.url == page.url %} + {% assign current = ' class="uk-active"' %} + {% else %} + {% assign current = null %} + {% endif %} + {% if link.title %} + {{ link.title }} + {% endif %} + {% endfor %} +
+
+
+
+ {% include social-networks.html %} +
+
+ + +
+
diff --git a/_includes/glossary.md b/_includes/glossary.md new file mode 100644 index 00000000..c0acb1ec --- /dev/null +++ b/_includes/glossary.md @@ -0,0 +1,148 @@ + + +Commonly used terms and jargon in Blockstack + +## Account + +A field in a profile that links the name to an existing service, like Twitter or OpenBazaar. They are listed under the `accounts` listing in a profile. + +Some accounts serve as social proofs, but they can contain any data the user wants. + +## Atlas + +A peer-to-peer network maintained by Blockstack Core nodes that stores each +name's zone files and immutable data. See [this document](atlas_network.md) for +details. + +## Blockstack ID + +(Also called a "name"). + +A human-readable name in Blockstack. It is comprised only of upper and lower-case ASCII characters, numbers, as well as `-`, `_`, and `.`. It must end with a `.`, followed by a namespace ID. It has at least 3 characters, and at most 37 (including the `.` and the namespace ID). + +Anyone can register a Blockstack ID, such as through the [Blockstack Browser](https://github.com/blockstack/blockstack-browser) + +## Blockstack Core + +A server that reads a blockchain with [virtualchain](https://github.com/blockstack/blockstack-virtualchain), filters out transactions that represent name operations, and builds up a database of (name, public key, state value) triples. + +## Blockstack Naming Service (BNS) + +This is the naming protocol that Blockstack Core implements. See [this +document](blockstack_naming_service.md) for details. + +## Consensus Hash + +A cryptographic hash that represents a proof-of-computation by a Blockstack Core node. Two Blockstack Core nodes have seen and processed the same name operations up to block `n` if and only if they each calculate the same consensus hash at height `n`. + +A Blockstack Core node only accepts a name operation if it has a previously-calculated but recent consensus hash. Blockstack clients obtain a consensus hash from a Blockstack Core node in order to construct a name operation. + +## Gaia + +This is Blockstack's storage system. Gaia hosts all of your app-specific data. + +## Gaia Hub + +This is a publicly-routable server that serves as an entry point for Gaia data. +Anyone can stand up and run a Gaia hub by following [these +instructions](https://github.com/blockstack/gaia). +Blockstack provides a [default Gaia hub](https://gaia.blockstack.org). + +## Immutable Data + +This is the general term for chunks of data whose hash is cryptographically +bound to a blockchain transaction. This includes all data stored in the Atlas +network (such as your Blockstack ID's zone file), +as well as any data whose hash is stored in the Atlas network. + +## Mutable Data + +This is the general term for data that is (1) signed by your Blockstack ID, and +(2) can be looked up using your Blockstack ID. This includes all your Gaia +data, as well as your profile. + +## Name + +See Blockstack ID. + +## Name Database + +The set of (name, public key, name state) triples that the Blockstack Core node generates by reading the blockchain. The name state is usually the hash of a DNS zone file stored in Atlas. + +## Name Operation + +A specially-crafted transaction in the underlying blockchain that, when processed, will change each Blockstack Core's name database. Examples include `NAME_PREORDER` (preorders a name), `NAME_REGISTRATION` (registers a name), `NAME_UPDATE` (changes a name's zonefile hash), `NAME_TRANSFER` (changes a name's public key), and `NAME_REVOKE` (locks everyone out of a name until it expires). + +Name operations are encoded on Bitcoin as `OP_RETURN` outputs that start with `id`, followed by a 1-byte character that identifies the particular operation. + +See the [wire format](wire-format.md) document for details. + +## Namespace + +Analogous to a DNS TLD, it represents a grouping of names. All names under the same namespace have the same pricing and lifetime rules. + +Anyone can create a namespace, but doing so is expensive by design. See the +[namespace creation](namespace_creation.md) tutorial for details. + +## Preorder + +The first of two steps to acquire a name. This operation writes the hash of both the name and the address that will own it. + +## Profile + +A signed JSON web token that describes a [Person](https://schema.org/Person), which describes the name's owner. You can put anything you want into your profile. + +Additionally, profiles hold lists of social verifications and pointers to your Gaia data. + +## Register + +(1) The act of acquiring a name in Blockstack. + +(2) The second of two steps to create a new name entry in the name database. Reveals the name as plaintext to the world. Must match a recent preorder to be accepted. + +## Registrar + +An online service that lets you sign up for and manage the profiles of Blockstack IDs. + +## Resolver + +An online service that displays zonefile and profile data for a Blockstack ID. [The Blockstack Explorer](https://explorer.blockstack.org) is a resolver. + +## Social proof + +A post in an account on an existing Web service like Twitter, Facebook, or GitHub that points back to a Blockstack ID. Used to provide some evidence that the person who owns the Blockstack ID is also the person who owns the Web service account. + +Social proofs are listed in your profile. + +## Storage Provider + +This is any service that can serve your zone file, profile, or data. In all cases, the data is signed by one of your wallet's keys, so you can use any provider without having to worry about it trying to change the data. + +Storage providers are accessed through a Gaia hub. Gaia hubs ship with drivers +that allow them to treat storage providers as dumb hard drives, which store +signed encrypted data on the hub's behalf. + +Not all storage providers support writes--some of them are read-only. + +Supported storage providers today include: +* Amazon S3 +* Dropbox +* Your harddrive +* Any HTTP/HTTPS/FTP server (read-only) +* Any public-use Gaia hub +* IPFS + +Support is being added for: +* Google Drive +* Microsoft OneDrive +* Box.com +* BitTorrent + +If you have a preferred storage provider, and you're a developer, please consider sending us a pull request to add support for it! + +## Zone file + +A specially-formatted file that stores routing information for a Blockstack ID. +Blockstack clients use your zone file to find out where your preferred Gaia +hub(s) are. Ever Blockstack Core node stores a copy of every zone file for +every Blockstack ID by participating in the Atlas network. diff --git a/_includes/google-analytics.html b/_includes/google-analytics.html new file mode 100644 index 00000000..eb2a692a --- /dev/null +++ b/_includes/google-analytics.html @@ -0,0 +1,11 @@ + + diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 00000000..9d797382 --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,14 @@ + + + + + {% seo %} + + + + + + {% if jekyll.environment == 'production' and site.google_analytics %} + {% include google-analytics.html %} + {% endif %} + \ No newline at end of file diff --git a/_includes/header.html b/_includes/header.html new file mode 100644 index 00000000..8c933f29 --- /dev/null +++ b/_includes/header.html @@ -0,0 +1,7 @@ +
+
+ +
+
diff --git a/_includes/hero.html b/_includes/hero.html new file mode 100644 index 00000000..70292f52 --- /dev/null +++ b/_includes/hero.html @@ -0,0 +1,35 @@ +
+
+ {% if page.hero.image %} +

Hero

+ {% endif %} + + {% if page.hero.subtitle %}

{{ page.hero.subtitle }}

{% endif %} + + {% if page.hero.search %} + + {% endif %} + +
+
diff --git a/_includes/image.html b/_includes/image.html new file mode 100644 index 00000000..65b86132 --- /dev/null +++ b/_includes/image.html @@ -0,0 +1,16 @@ +{% if include.lightbox == 'true' %} +
+ + {{ include.alt }} +
+ +
+
+ {% if include.caption %}
{{ include.caption }}
{% endif %} +
+{% else %} +
+ {{ include.alt }} + {% if include.caption %}
{{ include.caption }}
{% endif %} +
+{% endif %} diff --git a/_includes/map.html b/_includes/map.html new file mode 100644 index 00000000..33db26b7 --- /dev/null +++ b/_includes/map.html @@ -0,0 +1,38 @@ +
+ + diff --git a/_includes/navbar.html b/_includes/navbar.html new file mode 100644 index 00000000..1018371a --- /dev/null +++ b/_includes/navbar.html @@ -0,0 +1,52 @@ +
+
+ +
+
    + {% for link in site.data.navigation_header %} + {% if link.url contains 'http' %} + {% assign domain = '' %} + {% else %} + {% assign domain = relative_url %} + {% endif %} + {% if link.url == page.url %} + {% assign current = ' class="uk-active"' %} + {% else %} + {% assign current = null %} + {% endif %} + {% if link.title %} + {{ link.title }} + {% endif %} + {% endfor %} +
+ + {% unless page.hero%} +
+ +
+ +
    +
    +
    + + {% endunless %} + + + +
    +
    +
    diff --git a/_includes/offcanvas.html b/_includes/offcanvas.html new file mode 100644 index 00000000..8fc05501 --- /dev/null +++ b/_includes/offcanvas.html @@ -0,0 +1,25 @@ +
    +
    + + + + + + + +
    +
    diff --git a/_includes/paginate-blog.html b/_includes/paginate-blog.html new file mode 100644 index 00000000..be66ead8 --- /dev/null +++ b/_includes/paginate-blog.html @@ -0,0 +1,8 @@ + +
      + {% if paginator.previous_page %} +
    • ← Previous
    • + {% endif %} {% if paginator.next_page %} +
    • Next →
    • + {% endif %} +
    diff --git a/_includes/paginate-doc.html b/_includes/paginate-doc.html new file mode 100644 index 00000000..24a9c573 --- /dev/null +++ b/_includes/paginate-doc.html @@ -0,0 +1,24 @@ +{% assign docs = site.data.navigation_docs | map: 'docs' | join: ',' | split: ',' %} + +{% for document in docs %} + {% assign document_url = document | prepend:"/docs/" | append:"/" %} + {% if document_url == page.url %} +
      + {% if forloop.first %} + + {% else %} + {% assign previous = forloop.index0 | minus: 1 %} + {% assign previous_page = docs[previous] | prepend:"/docs/" | append:"/" %} +
    • ← Previous
    • + {% endif %} + {% if forloop.last %} + + {% else %} + {% assign next = forloop.index0 | plus: 1 %} + {% assign next_page = docs[next] | prepend:"/docs/" | append:"/" %} +
    • Next →
    • + {% endif %} +
    + {% break %} + {% endif %} +{% endfor %} diff --git a/_includes/paginate-post.html b/_includes/paginate-post.html new file mode 100644 index 00000000..a9ed0094 --- /dev/null +++ b/_includes/paginate-post.html @@ -0,0 +1,18 @@ +
    +
    +
    + {% if page.previous.url %} +

    {{page.previous.title}}

    +
    {{ page.previous.excerpt }}
    + + {% endif %} +
    +
    + {% if page.next.url %} +

    {{page.next.title}}

    +
    {{ page.next.excerpt }}
    + + {% endif %} +
    +
    +
    diff --git a/_includes/post-meta.html b/_includes/post-meta.html new file mode 100644 index 00000000..74e959df --- /dev/null +++ b/_includes/post-meta.html @@ -0,0 +1,18 @@ +{% if page.author %} + {% assign author = site.authors[page.author] %} +{% else %} + {% assign author = site.author %} +{% endif %} + +{% if author.github %} + +{% endif %} + +{% if author.name %} + +{% endif %} + + diff --git a/_includes/related-auth.html b/_includes/related-auth.html new file mode 100644 index 00000000..2004a615 --- /dev/null +++ b/_includes/related-auth.html @@ -0,0 +1,32 @@ +
    +

    Related Articles

    + + {% assign maxRelated = 4 %} + {% assign minCommonTags = 1 %} + {% assign maxRelatedCounter = 0 %} + +
      + {% for doc in site.docs %} + + {% assign sameTagCount = 0 %} + {% assign commonTags = '' %} + + {% for tag in doc.tags %} + {% if doc.url != page.url %} + {% if page.tags contains tag %} + {% assign sameTagCount = sameTagCount | plus: 1 %} + {% endif %} + {% endif %} + {% endfor %} + + {% if sameTagCount >= minCommonTags %} +
    • {{ doc.title }}
    • + {% assign maxRelatedCounter = maxRelatedCounter | plus: 1 %} + {% if maxRelatedCounter >= maxRelated %} + {% break %} + {% endif %} + {% endif %} + + {% endfor %} +
    +
    diff --git a/_includes/related-docs.html b/_includes/related-docs.html new file mode 100644 index 00000000..2004a615 --- /dev/null +++ b/_includes/related-docs.html @@ -0,0 +1,32 @@ +
    +

    Related Articles

    + + {% assign maxRelated = 4 %} + {% assign minCommonTags = 1 %} + {% assign maxRelatedCounter = 0 %} + +
      + {% for doc in site.docs %} + + {% assign sameTagCount = 0 %} + {% assign commonTags = '' %} + + {% for tag in doc.tags %} + {% if doc.url != page.url %} + {% if page.tags contains tag %} + {% assign sameTagCount = sameTagCount | plus: 1 %} + {% endif %} + {% endif %} + {% endfor %} + + {% if sameTagCount >= minCommonTags %} +
    • {{ doc.title }}
    • + {% assign maxRelatedCounter = maxRelatedCounter | plus: 1 %} + {% if maxRelatedCounter >= maxRelated %} + {% break %} + {% endif %} + {% endif %} + + {% endfor %} +
    +
    diff --git a/_includes/related-gaia.html b/_includes/related-gaia.html new file mode 100644 index 00000000..2004a615 --- /dev/null +++ b/_includes/related-gaia.html @@ -0,0 +1,32 @@ +
    +

    Related Articles

    + + {% assign maxRelated = 4 %} + {% assign minCommonTags = 1 %} + {% assign maxRelatedCounter = 0 %} + +
      + {% for doc in site.docs %} + + {% assign sameTagCount = 0 %} + {% assign commonTags = '' %} + + {% for tag in doc.tags %} + {% if doc.url != page.url %} + {% if page.tags contains tag %} + {% assign sameTagCount = sameTagCount | plus: 1 %} + {% endif %} + {% endif %} + {% endfor %} + + {% if sameTagCount >= minCommonTags %} +
    • {{ doc.title }}
    • + {% assign maxRelatedCounter = maxRelatedCounter | plus: 1 %} + {% if maxRelatedCounter >= maxRelated %} + {% break %} + {% endif %} + {% endif %} + + {% endfor %} +
    +
    diff --git a/_includes/related-learn.html b/_includes/related-learn.html new file mode 100644 index 00000000..d46766ef --- /dev/null +++ b/_includes/related-learn.html @@ -0,0 +1,32 @@ +
    +

    Related Articles

    + + {% assign maxRelated = 4 %} + {% assign minCommonTags = 1 %} + {% assign maxRelatedCounter = 0 %} + +
      + {% for doc in site.learn %} + + {% assign sameTagCount = 0 %} + {% assign commonTags = '' %} + + {% for tag in doc.tags %} + {% if doc.url != page.url %} + {% if page.tags contains tag %} + {% assign sameTagCount = sameTagCount | plus: 1 %} + {% endif %} + {% endif %} + {% endfor %} + + {% if sameTagCount >= minCommonTags %} +
    • {{ doc.title }}
    • + {% assign maxRelatedCounter = maxRelatedCounter | plus: 1 %} + {% if maxRelatedCounter >= maxRelated %} + {% break %} + {% endif %} + {% endif %} + + {% endfor %} +
    +
    diff --git a/_includes/related-naming.html b/_includes/related-naming.html new file mode 100644 index 00000000..d46766ef --- /dev/null +++ b/_includes/related-naming.html @@ -0,0 +1,32 @@ +
    +

    Related Articles

    + + {% assign maxRelated = 4 %} + {% assign minCommonTags = 1 %} + {% assign maxRelatedCounter = 0 %} + +
      + {% for doc in site.learn %} + + {% assign sameTagCount = 0 %} + {% assign commonTags = '' %} + + {% for tag in doc.tags %} + {% if doc.url != page.url %} + {% if page.tags contains tag %} + {% assign sameTagCount = sameTagCount | plus: 1 %} + {% endif %} + {% endif %} + {% endfor %} + + {% if sameTagCount >= minCommonTags %} +
    • {{ doc.title }}
    • + {% assign maxRelatedCounter = maxRelatedCounter | plus: 1 %} + {% if maxRelatedCounter >= maxRelated %} + {% break %} + {% endif %} + {% endif %} + + {% endfor %} +
    +
    diff --git a/_includes/related-newinternet.html b/_includes/related-newinternet.html new file mode 100644 index 00000000..d46766ef --- /dev/null +++ b/_includes/related-newinternet.html @@ -0,0 +1,32 @@ +
    +

    Related Articles

    + + {% assign maxRelated = 4 %} + {% assign minCommonTags = 1 %} + {% assign maxRelatedCounter = 0 %} + +
      + {% for doc in site.learn %} + + {% assign sameTagCount = 0 %} + {% assign commonTags = '' %} + + {% for tag in doc.tags %} + {% if doc.url != page.url %} + {% if page.tags contains tag %} + {% assign sameTagCount = sameTagCount | plus: 1 %} + {% endif %} + {% endif %} + {% endfor %} + + {% if sameTagCount >= minCommonTags %} +
    • {{ doc.title }}
    • + {% assign maxRelatedCounter = maxRelatedCounter | plus: 1 %} + {% if maxRelatedCounter >= maxRelated %} + {% break %} + {% endif %} + {% endif %} + + {% endfor %} +
    +
    diff --git a/_includes/related-posts.html b/_includes/related-posts.html new file mode 100644 index 00000000..9aa5451a --- /dev/null +++ b/_includes/related-posts.html @@ -0,0 +1,32 @@ +
    +

    Related Articles

    + + {% assign maxRelated = 4 %} + {% assign minCommonTags = 1 %} + {% assign maxRelatedCounter = 0 %} + +
      + {% for post in site.posts %} + + {% assign sameTagCount = 0 %} + {% assign commonTags = '' %} + + {% for category in post.categories %} + {% if post.url != page.url %} + {% if page.categories contains category %} + {% assign sameTagCount = sameTagCount | plus: 1 %} + {% endif %} + {% endif %} + {% endfor %} + + {% if sameTagCount >= minCommonTags %} +
    • {{ post.title }}
    • + {% assign maxRelatedCounter = maxRelatedCounter | plus: 1 %} + {% if maxRelatedCounter >= maxRelated %} + {% break %} + {% endif %} + {% endif %} + + {% endfor %} +
    +
    diff --git a/_includes/search.html b/_includes/search.html new file mode 100644 index 00000000..33e64d09 --- /dev/null +++ b/_includes/search.html @@ -0,0 +1,10 @@ + + diff --git a/_includes/share.html b/_includes/share.html new file mode 100644 index 00000000..d945366a --- /dev/null +++ b/_includes/share.html @@ -0,0 +1,4 @@ + diff --git a/_includes/slideshow.html b/_includes/slideshow.html new file mode 100644 index 00000000..f6c9d2b0 --- /dev/null +++ b/_includes/slideshow.html @@ -0,0 +1,14 @@ +
    + +
      + {% for image in site.static_files %} + {% if image.path contains include.gallery %} +
    • + {% endif %} + {% endfor %} +
    + + + + +
    diff --git a/_includes/social-networks.html b/_includes/social-networks.html new file mode 100644 index 00000000..5427246d --- /dev/null +++ b/_includes/social-networks.html @@ -0,0 +1,65 @@ +{% if site.social.twitter %} +
    + +
    +{% endif %} +{% if site.social.facebook %} +
    + +
    +{% endif %} +{% if site.social.flickr %} +
    + +
    +{% endif %} +{% if site.social.dribbble %} +
    + +
    +{% endif %} +{% if site.social.instagram %} +
    + +
    +{% endif %} +{% if site.social.googleplus %} +
    + +
    +{% endif %} +{% if site.social.linkedin %} +
    + +
    +{% endif %} +{% if site.social.pinterest %} +
    + +
    +{% endif %} +{% if site.social.vimeo %} +
    + +
    +{% endif %} +{% if site.social.youtube %} +
    + +
    +{% endif %} +{% if site.social.github %} +
    + +
    +{% endif %} +{% if site.social.email %} +
    + +
    +{% endif %} +{% if site.social.website %} +
    + +
    +{% endif %} diff --git a/_layouts/auth.html b/_layouts/auth.html new file mode 100644 index 00000000..db05c4b5 --- /dev/null +++ b/_layouts/auth.html @@ -0,0 +1,71 @@ +--- +layout: default +--- + +
    +
    +
    + + + +
    + +
    + +

    {{ page.title | escape }}

    + + {% if page.subtitle %}

    {{ page.subtitle }}

    {% endif %} + + + + +
    + {{ content }} + {% include share.html %} +
    + +
    + + {% include paginate-doc.html %} + + {% include related-auth.html %} + + {% if site.disqus.shortname %} {% include disqus_comments.html %} {% endif %} +
    + + + +
    + +
    +
    diff --git a/_layouts/changelog.html b/_layouts/changelog.html new file mode 100644 index 00000000..2288936c --- /dev/null +++ b/_layouts/changelog.html @@ -0,0 +1,37 @@ +--- +layout: default +--- + +
    +
    + +
    + +

    {{ page.title | escape }}

    + +
    + {{ content }} +
    + +
    + {% for version in site.data.changelog %} +
    +
    +
    {{ version.date }}
    +
    +
    +

    {{ version.title }} {{ version.label }}

    +
      + {% for item in version.list %} +
    • {{ item }}
    • + {% endfor %} +
    +
    +
    + {% endfor %} +
    + +
    + +
    +
    diff --git a/_layouts/contact.html b/_layouts/contact.html new file mode 100644 index 00000000..bafa0ed8 --- /dev/null +++ b/_layouts/contact.html @@ -0,0 +1,56 @@ +--- +layout: default +--- + +
    +
    + +
    + +

    {{ page.title | escape }}

    + +
    + {{ content }} +
    + +
    + + {% if page.formspree.email %} +

    Contact Form

    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + {% if page.formspree.redirect %} + + {% endif %} + + +
    +
    + {% endif %} + +
    +
    diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 00000000..ba0b6a9e --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,28 @@ + + + + {% include head.html %} + + + + {% include header.html %} + + {% if page.hero %} + {% include hero.html %} + {% endif %} + + {{ content }} + + {% include offcanvas.html %} + + {% if page.layout != 'doc' %} + {% include footer.html %} + {% endif %} + + + + + + + + diff --git a/_layouts/doc.html b/_layouts/doc.html new file mode 100644 index 00000000..64428d9c --- /dev/null +++ b/_layouts/doc.html @@ -0,0 +1,70 @@ +--- +layout: default +--- + +
    +
    +
    + + + +
    + +
    + +

    {{ page.title | escape }}

    + + {% if page.subtitle %}

    {{ page.subtitle }}

    {% endif %} + + + +
    + {{ content }} + {% include share.html %} +
    + +
    + + {% include paginate-doc.html %} + + {% include related-docs.html %} + + {% if site.disqus.shortname %} {% include disqus_comments.html %} {% endif %} +
    + + + +
    + +
    +
    diff --git a/_layouts/gaia.html b/_layouts/gaia.html new file mode 100644 index 00000000..d401f056 --- /dev/null +++ b/_layouts/gaia.html @@ -0,0 +1,70 @@ +--- +layout: default +--- + +
    +
    +
    + + + +
    + +
    + +

    {{ page.title | escape }}

    + + {% if page.subtitle %}

    {{ page.subtitle }}

    {% endif %} + + + +
    + {{ content }} + {% include share.html %} +
    + +
    + + {% include paginate-doc.html %} + + {% include related-gaia.html %} + + {% if site.disqus.shortname %} {% include disqus_comments.html %} {% endif %} +
    + + + +
    + +
    +
    diff --git a/_layouts/home.html b/_layouts/home.html new file mode 100644 index 00000000..86a8e132 --- /dev/null +++ b/_layouts/home.html @@ -0,0 +1,102 @@ +--- +layout: default +--- + +{% if page.categories.columns %} + {% assign columns = page.categories.columns %} +{% else %} + {% assign columns = 3 %} +{% endif %} + +{% if page.categories %} +
    +
    + + {% if page.categories.title %} +

    {{ page.categories.title }}

    + {% endif %} + + {% if page.categories.subtitle %}

    {{ page.categories.subtitle | escape }}

    {% endif %} + +
    + {% for item in site.data.navigation_home %} + {% if item.title %} + {% assign doc_url = item.doc | prepend:"/" | append:"/" %} + {% assign doc = site.docs | where:"url", doc_url | first %} +
    +
    + + {% if item.icon %} + + {% endif %} +

    {{ item.title }}

    + {% if item.desc %} +

    {{ item.desc }}

    + {% endif %} +
    +
    + {% endif %} + {% endfor %} +
    + +
    +
    +{% endif %} + +{% comment %} ONLY include section if there are featured pages. {% endcomment %} +{% assign featured_exists = false %} +{% for doc in site.docs %} + {% if doc.tags contains page.featured.tag and featured_exists != false %} + {% assign featured_exists = false %} + {% endif %} +{% endfor %} +{% if page.featured.tag and featured_exists == true %} +
    +
    + {% if page.featured.title %} +

    {{ page.featured.title }}

    + {% endif %} + +
    +
    +{% endif %} + +{% if page.section %} +
    +
    + + {% if page.section.title %} +

    {{ page.section.title }}

    + {% endif %} + + {% if page.section.subtitle %}

    {{ page.section.subtitle | escape }}

    {% endif %} + +
    {{ content }}
    +
    +
    +{% endif %} + +{% if page.cta.button_url contains 'http' %} + {% assign domain = '' %} +{% else %} + {% assign domain = relative_url %} +{% endif %} + + +{% if page.cta %} +
    +
    +
    +

    {{ page.cta.title }}

    + {% if page.cta.subtitle %}

    {{ page.cta.subtitle | escape }}

    {% endif %} + {{ page.cta.button_text }} +
    +
    +
    +{% endif %} diff --git a/_layouts/learn.html b/_layouts/learn.html new file mode 100644 index 00000000..708db7e4 --- /dev/null +++ b/_layouts/learn.html @@ -0,0 +1,70 @@ +--- +layout: default +--- + +
    +
    +
    + + + +
    + +
    + +

    {{ page.title | escape }}

    + + {% if page.subtitle %}

    {{ page.subtitle }}

    {% endif %} + + + +
    + {{ content }} + {% include share.html %} +
    + +
    + + {% include paginate-doc.html %} + + {% include related-learn.html %} + + {% if site.disqus.shortname %} {% include disqus_comments.html %} {% endif %} +
    + + + +
    + +
    +
    diff --git a/_layouts/naming.html b/_layouts/naming.html new file mode 100644 index 00000000..a435becf --- /dev/null +++ b/_layouts/naming.html @@ -0,0 +1,70 @@ +--- +layout: default +--- + +
    +
    +
    + + + +
    + +
    + +

    {{ page.title | escape }}

    + + {% if page.subtitle %}

    {{ page.subtitle }}

    {% endif %} + + + +
    + {{ content }} + {% include share.html %} +
    + +
    + + {% include paginate-doc.html %} + + {% include related-naming.html %} + + {% if site.disqus.shortname %} {% include disqus_comments.html %} {% endif %} +
    + + + +
    + +
    +
    diff --git a/_layouts/newinternet.html b/_layouts/newinternet.html new file mode 100644 index 00000000..3847871c --- /dev/null +++ b/_layouts/newinternet.html @@ -0,0 +1,70 @@ +--- +layout: default +--- + +
    +
    +
    + + + +
    + +
    + +

    {{ page.title | escape }}

    + + {% if page.subtitle %}

    {{ page.subtitle }}

    {% endif %} + + + +
    + {{ content }} + {% include share.html %} +
    + +
    + + {% include paginate-doc.html %} + + {% include related-newinternet.html %} + + {% if site.disqus.shortname %} {% include disqus_comments.html %} {% endif %} +
    + + + +
    + +
    +
    diff --git a/_layouts/page.html b/_layouts/page.html new file mode 100644 index 00000000..32771b28 --- /dev/null +++ b/_layouts/page.html @@ -0,0 +1,19 @@ +--- +layout: default +--- + +
    +
    + +
    + +

    {{ page.title | escape }}

    + +
    + {{ content }} +
    + +
    + +
    +
    diff --git a/_layouts/post.html b/_layouts/post.html new file mode 100644 index 00000000..7c0624d0 --- /dev/null +++ b/_layouts/post.html @@ -0,0 +1,36 @@ +--- +layout: default +--- + +
    +
    +
    + +

    {{ page.title | escape }}

    + + + +
    + {{ content }} + {% include share.html %} +
    + +
    + + {% include paginate-post.html %} + + {% if site.disqus.shortname %} {% include disqus_comments.html %} {% endif %} +
    + + + +
    +
    diff --git a/_posts/2017-05-25-post63.md b/_posts/2017-05-25-post63.md new file mode 100644 index 00000000..369691a1 --- /dev/null +++ b/_posts/2017-05-25-post63.md @@ -0,0 +1,49 @@ +--- +layout: post +title: Example Post +author: John Black +--- + +## Site tags + + + {% if site.tags contains page.featured.tag %} + **There is at least one** + {% endif %} + + + + +Musce libero nunc, dignissim quis turpis quis, semper vehicula dolor. Suspendisse tincidunt consequat quam, ac posuere leo dapibus id. Cras fringilla convallis elit, at eleifend mi interam. + +Nulla non sollicitudin. Morbi sit amet laoreet ipsum, vel pretium mi. Morbi varius, tellus in accumsan blandit, elit ligula eleifend velit, luctus mattis ante nulla condimentum nulla. Etiam vestibulum risus vel arcu elementum eleifend. Cras at dolor eget urna varius faucibus tempus in elit. + +## Image Lightbox Example +Nunc porta malesuada porta. Etiam tristique vestibulum dolor at ultricies. Proin hendrerit sapien sed erat fermentum, at commodo velit consectetur. + +{% include image.html img="image1.png" style="wide" lightbox="true" alt="Alt for image" caption="Image in lightbox" %} + +Etiam vestibulum risus vel arcu elementum eleifend. Cras at dolor eget urna varius faucibus tempus in elit. Cras a dui imperdiet, tempus metus quis, pharetra turpis. Phasellus at massa sit amet ante semper fermentum sed eget lectus. Quisque id dictum magna, et dapibus turpis. + +## Example Of Code Block +In accumsan lacus ac neque maximus dictum. Phasellus eleifend leo id mattis bibendum. Curabitur et purus turpis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +```html + + + + + + + + +``` + +## Text and Quote +Cras at dolor eget urna varius faucibus tempus in elit. Cras a dui imperdiet, tempus metus quis, pharetra turpis. Phasellus at massa sit amet ante semper fermentum sed eget lectus. Quisque id dictum magna turpis. + +> Etiam vestibulum risus vel arcu elementum eleifend. Cras at dolor eget urna varius faucibus tempus in elit. Cras a dui imperdiet + +In accumsan lacus ac neque maximus dictum. Phasellus eleifend leo id mattis bibendum. Curabitur et purus turpis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Etiam in fermentum mi. Sed et tempor felis, eu aliquet nisi. Nam eget ullamcorper arcu. Nunc porttitor nisl a dolor blandit, eget consequat sem maximus. Phasellus lacinia quam porta orci malesuada, vel tincidunt. diff --git a/_sass/syntax-highlighting/github.scss b/_sass/syntax-highlighting/github.scss new file mode 100644 index 00000000..c85e1ed1 --- /dev/null +++ b/_sass/syntax-highlighting/github.scss @@ -0,0 +1,289 @@ +/** + * Syntax highlighting styles + */ + + + +.highlight, .highlighter-rouge { + background-color: #F7F8FA; + color: #5A6575; + border: none; +} + +.highlight .lineno { + color: #B1B8C4 +} + +.highlight .c { + color: #B1B8C4 +} + +.highlight .err { + color: #5A6575 +} + +.highlight .g { + color: #5A6575 +} + +.highlight .k { + color: #25BEA1 +} + +.highlight .l { + color: #5A6575 +} + +.highlight .n { + color: #5A6575 +} + +.highlight .o { + color: #25BEA1 +} + +.highlight .x { + color: #FBBC09 +} + +.highlight .p { + color: #25BEA1 +} + +.highlight .cm { + color: #B1B8C4 +} + +.highlight .cp { + color: #25BEA1 +} + +.highlight .c1 { + color: #B1B8C4 +} + +.highlight .cs { + color: #25BEA1 +} + +.highlight .gd { + color: #E56134 +} + +.highlight .ge { + color: #5A6575; + font-style: italic +} + +.highlight .gr { + color: #9961C9 +} + +.highlight .gh { + color: #FBBC09 +} + +.highlight .gi { + color: #25BEA1 +} + +.highlight .go { + color: #5A6575 +} + +.highlight .gp { + color: #FBBC09 +} + +.highlight .gs { + color: #5A6575; + font-weight: bold +} + +.highlight .gu { + color: #FBBC09 +} + +.highlight .gt { + color: #5A6575 +} + +.highlight .kc { + color: #FBBC09 +} + +.highlight .kd { + color: #11A0F3 +} + +.highlight .kn { + color: #25BEA1 +} + +.highlight .kp { + color: #25BEA1 +} + +.highlight .kr { + color: #11A0F3 +} + +.highlight .kt { + color: #9961C9 +} + +.highlight .ld { + color: #5A6575 +} + +.highlight .m { + color: #E56134 +} + +.highlight .s { + color: #E56134 +} + +.highlight .na { + color: #5A6575 +} + +.highlight .nb { + color: #5A6575 +} + +.highlight .nc { + color: #11A0F3 +} + +.highlight .no { + color: #5A6575 +} + +.highlight .nd { + color: #11A0F3 +} + +.highlight .ni { + color: #FBBC09 +} + +.highlight .ne { + color: #FBBC09 +} + +.highlight .nf { + color: #11A0F3 +} + +.highlight .nl { + color: #5A6575 +} + +.highlight .nn { + color: #5A6575 +} + +.highlight .nx { + color: #5A6575 +} + +.highlight .py { + color: #5A6575 +} + +.highlight .nt { + color: #11A0F3 +} + +.highlight .nv { + color: #5A6575 +} + +.highlight .ow { + color: #25BEA1 +} + +.highlight .w { + color: #5A6575 +} + +.highlight .mf { + color: #E56134 +} + +.highlight .mh { + color: #E56134 +} + +.highlight .mi { + color: #E56134 +} + +.highlight .mo { + color: #E56134 +} + +.highlight .sb { + color: #B1B8C4 +} + +.highlight .sc { + color: #E56134 +} + +.highlight .sd { + color: #5A6575 +} + +.highlight .s2 { + color: #E56134 +} + +.highlight .se { + color: #FBBC09 +} + +.highlight .sh { + color: #5A6575 +} + +.highlight .si { + color: #E56134 +} + +.highlight .sx { + color: #E56134 +} + +.highlight .sr { + color: #9961C9 +} + +.highlight .s1 { + color: #E56134 +} + +.highlight .ss { + color: #E56134 +} + +.highlight .bp { + color: #11A0F3 +} + +.highlight .vc { + color: #11A0F3 +} + +.highlight .vg { + color: #11A0F3 +} + +.highlight .vi { + color: #11A0F3 +} + +.highlight .il { + color: #E56134 +} diff --git a/_sass/system-font-css/CHANGELOG.md b/_sass/system-font-css/CHANGELOG.md new file mode 100644 index 00000000..7a4eee3d --- /dev/null +++ b/_sass/system-font-css/CHANGELOG.md @@ -0,0 +1,13 @@ +## 2.0.0 (2017-06-28) + +- Changed from `system` to `system-ui` to match the CSS specification. + +## 1.1.0 (2015-08-02) + +- Added: Android fonts Roboto and Droid Sans after Ubuntu. +- Removed: Windows 3.1-ME font Microsoft Sans Serif. +- Updated: documentation. + +## 1.0.0 (2015-07-30) + +- Added: Initial version diff --git a/_sass/system-font-css/LICENSE.md b/_sass/system-font-css/LICENSE.md new file mode 100644 index 00000000..565f84e3 --- /dev/null +++ b/_sass/system-font-css/LICENSE.md @@ -0,0 +1,15 @@ +# CC0 1.0 Universal License + +Public Domain Dedication + +The person(s) who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. + +You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission. + +In no way are the patent or trademark rights of any person affected by CC0, nor are the rights that other persons may have in the work or in how the work is used, such as publicity or privacy rights. + +Unless expressly stated otherwise, the person(s) who associated a work with this deed makes no warranties about the work, and disclaims liability for all uses of the work, to the fullest extent permitted by applicable law. + +When using or citing the work, you should not imply endorsement by the author or the affirmer. + +This is a [human-readable summary of the Legal Code](https://creativecommons.org/publicdomain/zero/1.0/) ([read the full text](https://creativecommons.org/publicdomain/zero/1.0/legalcode)). diff --git a/_sass/system-font-css/README.md b/_sass/system-font-css/README.md new file mode 100644 index 00000000..08268fb2 --- /dev/null +++ b/_sass/system-font-css/README.md @@ -0,0 +1,68 @@ +# System Font CSS + +System Font CSS is set of `@font-face` rules that let you use the native system font of the OS running the browser. + +```css +body { + font-family: system-ui; +} +``` + +[system-font.css](system-font.css) offers eight variations of the `system-ui` font family; **light** (300) **light italic**, **normal** (400), **normal italic**, **medium** (500), **medium italic**, **bold** (700), and **bold italic**. + +```css +blockquote { + font: italic 300 system-ui; +} + +p { + font: 400 system-ui; +} +``` + +## Quick Start + +### Install + +This package can be installed with: + +* [npm](https://www.npmjs.com/package/system-font-css): `npm install --save system-font-css` + +### Load + +When installed with npm, system-font.css will create both a SCSS and LESS partial for easy importing: + +```scss +@import 'system-font'; +``` + +## OSX + +**OSX** has used three system typefaces. Since **El Capitan** it has used **San Fransisco**. In **Yosemite** it used **Helvetica Neue**. From **Mavericks** back to **Kodiak** it used **Lucida Grande**. + +## Windows + +**Windows** has used four system typefaces. Since **Vista** it has used **Segoe UI**. In XP, it used **Tahoma**, which oddly enough does not have an italic variation. From **Windows ME** back to **Windows 3.1** it used **Microsoft Sans Serif**. Finally, from **Windows 2.0** back to **Windows 1.0** it used **Fixedsys**. Neither **Microsoft Sans Serif** or **Fixedsys** are included in this set, with apologies. + +Also, for those of opposed to joy, remember that **Internet Explorer 8** does not support local `@font-face` rules. Therefore, should you need to reference system fonts in that browser then you will need to do so from the `font` declaration. + +```css +body { + font-family: system-ui, "Segoe UI", Tahoma; +} +``` + +## Android + +**Android** has used two system typefaces. Since **Ice Cream Sandwich** it has used **Roboto**. From **Jelly Bean** back to **Cupcake** it used **Droid Sans**, which also lacks an italic variation. Do you suppose OS developers dislike *emphasis*? + +## Ubuntu + +Ubuntu has always used one system typeface, aptly named **Ubuntu**. That part was easy. + +## Native `system-ui` resources + +* [CSS Fonts Module Level 4 Editor’s Draft Specification](https://drafts.csswg.org/css-fonts-4/#system-ui-def) +* [Chrome Platform Status](https://www.chromestatus.com/feature/5640395337760768) +* Proposed for inclusion on [Can I Use](https://github.com/Fyrd/caniuse/issues/2918) +* Previous [discussions in the W3C](https://lists.w3.org/Archives/Public/www-style/2015Jul/0169.html) to standardize a generic `system` family. diff --git a/_sass/system-font-css/_system-font.scss b/_sass/system-font-css/_system-font.scss new file mode 100644 index 00000000..fd078219 --- /dev/null +++ b/_sass/system-font-css/_system-font.scss @@ -0,0 +1,57 @@ +/*! system-font.css v2.0.2 | CC0-1.0 License | github.com/jonathantneal/system-font-css */ + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 300; + src: local(".SFNSText-Light"), local(".HelveticaNeueDeskInterface-Light"), local(".LucidaGrandeUI"), local("Segoe UI Light"), local("Ubuntu Light"), local("Roboto-Light"), local("DroidSans"), local("Tahoma"); +} + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 300; + src: local(".SFNSText-LightItalic"), local(".HelveticaNeueDeskInterface-Italic"), local(".LucidaGrandeUI"), local("Segoe UI Light Italic"), local("Ubuntu Light Italic"), local("Roboto-LightItalic"), local("DroidSans"), local("Tahoma"); +} + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 400; + src: local(".SFNSText-Regular"), local(".HelveticaNeueDeskInterface-Regular"), local(".LucidaGrandeUI"), local("Segoe UI"), local("Ubuntu"), local("Roboto-Regular"), local("DroidSans"), local("Tahoma"); +} + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 400; + src: local(".SFNSText-Italic"), local(".HelveticaNeueDeskInterface-Italic"), local(".LucidaGrandeUI"), local("Segoe UI Italic"), local("Ubuntu Italic"), local("Roboto-Italic"), local("DroidSans"), local("Tahoma"); +} + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 500; + src: local(".SFNSText-Medium"), local(".HelveticaNeueDeskInterface-MediumP4"), local(".LucidaGrandeUI"), local("Segoe UI Semibold"), local("Ubuntu Medium"), local("Roboto-Medium"), local("DroidSans-Bold"), local("Tahoma Bold"); +} + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 500; + src: local(".SFNSText-MediumItalic"), local(".HelveticaNeueDeskInterface-MediumItalicP4"), local(".LucidaGrandeUI"), local("Segoe UI Semibold Italic"), local("Ubuntu Medium Italic"), local("Roboto-MediumItalic"), local("DroidSans-Bold"), local("Tahoma Bold"); +} + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 700; + src: local(".SFNSText-Bold"), local(".HelveticaNeueDeskInterface-Bold"), local(".LucidaGrandeUI"), local("Segoe UI Bold"), local("Ubuntu Bold"), local("Roboto-Bold"), local("DroidSans-Bold"), local("Tahoma Bold"); +} + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 700; + src: local(".SFNSText-BoldItalic"), local(".HelveticaNeueDeskInterface-BoldItalic"), local(".LucidaGrandeUI"), local("Segoe UI Bold Italic"), local("Ubuntu Bold Italic"), local("Roboto-BoldItalic"), local("DroidSans-Bold"), local("Tahoma Bold"); +} diff --git a/_sass/system-font-css/index.html b/_sass/system-font-css/index.html new file mode 100644 index 00000000..ec5ea862 --- /dev/null +++ b/_sass/system-font-css/index.html @@ -0,0 +1,189 @@ + +System Font CSS + + + + + + +

    + System Font CSS +

    + +

    + System Font CSS is set of @font-face rules that let you use the native system font of the OS running the browser. +

    + +
    +body {
    +    font-family: system;
    +}
    +
    + +

    + system-font.css offers eight variations of the system font family; light (300) light italic, normal (400), normal italic, medium (500), medium italic, bold (700), and bold italic. +

    + +
    +blockquote {
    +    font: italic 300 system;
    +}
    +
    +p {
    +    font: 400 system;
    +}
    +
    + +

    + OSX +

    + +

    + OSX has used three system typefaces. Since El Capitan it has used San Fransisco. In Yosemite it used Helvetica Neue. From Mavericks back to Kodiak it used Lucida Grande. +

    + +

    + Windows +

    + +

    + Windows has used four system typefaces. Since Vista it has used Segoe UI. In XP, it used Tahoma, which oddly enough lacks an italic variation. From Windows ME back to Windows 3.1 it used Microsoft Sans Serif. Finally, from Windows 2.0 back to Windows 1.0 it used Fixedsys. Neither Microsoft Sans Serif or Fixedsys are included in this set, with apologies. +

    + +

    + Also, for those of opposed to joy, remember that Internet Explorer 8 does not support local @font-face rules. Therefore, should you need to reference system fonts in that browser then you will need to do so from the font declaration. +

    + +
    +body {
    +	font-family: system, "Segoe UI", Tahoma;
    +}
    +
    + +

    + Android +

    + +

    + Android has used two system typefaces. Since Ice Cream Sandwich it has used Roboto. From Jelly Bean back to Cupcake it used Droid Sans, which also lacks an italic variation. Do you suppose OS developers dislike emphasis? +

    + +

    + Ubuntu +

    + +

    + Ubuntu has always used one system typeface, apty named Ubuntu. That part was easy. +

    + +

    + Is system going to be a thing? +

    + +

    + Maybe. There are discussions in the W3C to standardize a generic system family. +

    diff --git a/_sass/system-font-css/package.json b/_sass/system-font-css/package.json new file mode 100644 index 00000000..91916c24 --- /dev/null +++ b/_sass/system-font-css/package.json @@ -0,0 +1,83 @@ +{ + "_from": "system-font-css@^2.0.1", + "_id": "system-font-css@2.0.2", + "_inBundle": false, + "_integrity": "sha512-zK36lpja4NIi4Po99bXReeqeDcM1sW4hTKJt5Mby/IXX6kLSwjkQ4pZThFdgb/jDwfRsBvxxVG+VekP1sTdF0w==", + "_location": "/system-font-css", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "system-font-css@^2.0.1", + "name": "system-font-css", + "escapedName": "system-font-css", + "rawSpec": "^2.0.1", + "saveSpec": null, + "fetchSpec": "^2.0.1" + }, + "_requiredBy": [ + "/" + ], + "_resolved": "https://registry.npmjs.org/system-font-css/-/system-font-css-2.0.2.tgz", + "_shasum": "88c4ae30eda94bc60705cba7d66c8c822f3c47db", + "_spec": "system-font-css@^2.0.1", + "_where": "/Users/ivan/Dev/jekyll/jekyll-theme-docs", + "author": { + "name": "Jonathan Neal", + "email": "jonathantneal@hotmail.com", + "url": "http://jonathantneal.com" + }, + "bugs": { + "url": "https://github.com/jonathantneal/system-font-css/issues" + }, + "bundleDependencies": false, + "contributors": [ + { + "name": "Zach Leatherman", + "email": "zachleatherman@gmail.com", + "url": "https://zachleat.com/" + } + ], + "dependencies": { + "cpr": "^2.2.0" + }, + "deprecated": false, + "description": "Use the native system font of the OS running the browser", + "devDependencies": {}, + "engines": { + "node": ">=0.8.0" + }, + "homepage": "https://github.com/jonathantneal/system-font-css", + "keywords": [ + "system", + "fonts", + "faces", + "rules", + "css", + "mac", + "windows", + "ubuntu", + "san", + "fransisco", + "helvetica", + "neue", + "lucida", + "grande", + "segoe", + "ui", + "microsoft", + "sans", + "serif" + ], + "license": "CC0-1.0", + "main": "system-font.css", + "name": "system-font-css", + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/jonathantneal/system-font-css.git" + }, + "scripts": { + "install": "cpr system-font.css _system-font.scss -o && cpr system-font.css system-font.less -o" + }, + "version": "2.0.2" +} diff --git a/_sass/system-font-css/system-font.css b/_sass/system-font-css/system-font.css new file mode 100644 index 00000000..fd078219 --- /dev/null +++ b/_sass/system-font-css/system-font.css @@ -0,0 +1,57 @@ +/*! system-font.css v2.0.2 | CC0-1.0 License | github.com/jonathantneal/system-font-css */ + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 300; + src: local(".SFNSText-Light"), local(".HelveticaNeueDeskInterface-Light"), local(".LucidaGrandeUI"), local("Segoe UI Light"), local("Ubuntu Light"), local("Roboto-Light"), local("DroidSans"), local("Tahoma"); +} + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 300; + src: local(".SFNSText-LightItalic"), local(".HelveticaNeueDeskInterface-Italic"), local(".LucidaGrandeUI"), local("Segoe UI Light Italic"), local("Ubuntu Light Italic"), local("Roboto-LightItalic"), local("DroidSans"), local("Tahoma"); +} + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 400; + src: local(".SFNSText-Regular"), local(".HelveticaNeueDeskInterface-Regular"), local(".LucidaGrandeUI"), local("Segoe UI"), local("Ubuntu"), local("Roboto-Regular"), local("DroidSans"), local("Tahoma"); +} + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 400; + src: local(".SFNSText-Italic"), local(".HelveticaNeueDeskInterface-Italic"), local(".LucidaGrandeUI"), local("Segoe UI Italic"), local("Ubuntu Italic"), local("Roboto-Italic"), local("DroidSans"), local("Tahoma"); +} + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 500; + src: local(".SFNSText-Medium"), local(".HelveticaNeueDeskInterface-MediumP4"), local(".LucidaGrandeUI"), local("Segoe UI Semibold"), local("Ubuntu Medium"), local("Roboto-Medium"), local("DroidSans-Bold"), local("Tahoma Bold"); +} + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 500; + src: local(".SFNSText-MediumItalic"), local(".HelveticaNeueDeskInterface-MediumItalicP4"), local(".LucidaGrandeUI"), local("Segoe UI Semibold Italic"), local("Ubuntu Medium Italic"), local("Roboto-MediumItalic"), local("DroidSans-Bold"), local("Tahoma Bold"); +} + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 700; + src: local(".SFNSText-Bold"), local(".HelveticaNeueDeskInterface-Bold"), local(".LucidaGrandeUI"), local("Segoe UI Bold"), local("Ubuntu Bold"), local("Roboto-Bold"), local("DroidSans-Bold"), local("Tahoma Bold"); +} + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 700; + src: local(".SFNSText-BoldItalic"), local(".HelveticaNeueDeskInterface-BoldItalic"), local(".LucidaGrandeUI"), local("Segoe UI Bold Italic"), local("Ubuntu Bold Italic"), local("Roboto-BoldItalic"), local("DroidSans-Bold"), local("Tahoma Bold"); +} diff --git a/_sass/system-font-css/system-font.less b/_sass/system-font-css/system-font.less new file mode 100644 index 00000000..fd078219 --- /dev/null +++ b/_sass/system-font-css/system-font.less @@ -0,0 +1,57 @@ +/*! system-font.css v2.0.2 | CC0-1.0 License | github.com/jonathantneal/system-font-css */ + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 300; + src: local(".SFNSText-Light"), local(".HelveticaNeueDeskInterface-Light"), local(".LucidaGrandeUI"), local("Segoe UI Light"), local("Ubuntu Light"), local("Roboto-Light"), local("DroidSans"), local("Tahoma"); +} + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 300; + src: local(".SFNSText-LightItalic"), local(".HelveticaNeueDeskInterface-Italic"), local(".LucidaGrandeUI"), local("Segoe UI Light Italic"), local("Ubuntu Light Italic"), local("Roboto-LightItalic"), local("DroidSans"), local("Tahoma"); +} + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 400; + src: local(".SFNSText-Regular"), local(".HelveticaNeueDeskInterface-Regular"), local(".LucidaGrandeUI"), local("Segoe UI"), local("Ubuntu"), local("Roboto-Regular"), local("DroidSans"), local("Tahoma"); +} + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 400; + src: local(".SFNSText-Italic"), local(".HelveticaNeueDeskInterface-Italic"), local(".LucidaGrandeUI"), local("Segoe UI Italic"), local("Ubuntu Italic"), local("Roboto-Italic"), local("DroidSans"), local("Tahoma"); +} + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 500; + src: local(".SFNSText-Medium"), local(".HelveticaNeueDeskInterface-MediumP4"), local(".LucidaGrandeUI"), local("Segoe UI Semibold"), local("Ubuntu Medium"), local("Roboto-Medium"), local("DroidSans-Bold"), local("Tahoma Bold"); +} + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 500; + src: local(".SFNSText-MediumItalic"), local(".HelveticaNeueDeskInterface-MediumItalicP4"), local(".LucidaGrandeUI"), local("Segoe UI Semibold Italic"), local("Ubuntu Medium Italic"), local("Roboto-MediumItalic"), local("DroidSans-Bold"), local("Tahoma Bold"); +} + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 700; + src: local(".SFNSText-Bold"), local(".HelveticaNeueDeskInterface-Bold"), local(".LucidaGrandeUI"), local("Segoe UI Bold"), local("Ubuntu Bold"), local("Roboto-Bold"), local("DroidSans-Bold"), local("Tahoma Bold"); +} + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 700; + src: local(".SFNSText-BoldItalic"), local(".HelveticaNeueDeskInterface-BoldItalic"), local(".LucidaGrandeUI"), local("Segoe UI Bold Italic"), local("Ubuntu Bold Italic"), local("Roboto-BoldItalic"), local("DroidSans-Bold"), local("Tahoma Bold"); +} diff --git a/_sass/theme/mixins.scss b/_sass/theme/mixins.scss new file mode 100644 index 00000000..f2254620 --- /dev/null +++ b/_sass/theme/mixins.scss @@ -0,0 +1,469 @@ + +@mixin hook-heading-hero(){ + font-weight: bold; +} + +@mixin hook-navbar(){ + font-weight: 500; + .uk-drop { + width: 360px; + } + .uk-search-navbar .uk-search-input { + height: 50px; + font-size: 1.0625rem; + padding-left: 1.1875rem; + background: #fff; + } +} +@mixin hook-button(){ + border-radius: 5px; +} + +// Doc navigation +$docs-sidebar-width: 260px; +$docs-sidebar-width-l: 360px; +.sidebar-fixed-width { + width: $docs-sidebar-width; +} +.sidebar-docs { + width: $docs-sidebar-width - $global-medium-gutter; + padding-right: $global-medium-gutter; + top: 112px; + bottom: 70px; + overflow-y: scroll; + overflow-x: hidden; + > h5 { + margin: 15px 0 0; + &:first-child { + margin-top: 17px + } + } +} + +@media (min-width: $breakpoint-large) { + .sidebar-fixed-width { + width: $docs-sidebar-width-l; + } + .sidebar-docs { + width: $docs-sidebar-width-l - $global-large-gutter; + padding-right: $global-large-gutter; + } +} +ul.doc-nav { + padding-left: 14px; + margin-top: 5px; +} +.doc-nav > li.uk-active > a { + position: relative; + &:before { + content: ""; + position: absolute; + top: 15px; + left: -14px; + width: 7px; + border-top: 1px solid $global-primary-background; + } +} + +// Home page hero +.hero-image img { + max-width: 200px; + max-height: 75px; +} +.button-cta:nth-child(2n), .button-cta:nth-child(3n) { + margin-top: $global-margin; +} +.heading-hero-2 { + font-size: 1.875rem +} +@media (min-width: $breakpoint-small) { + .heading-hero-2 { + // font-size: 2.375rem; + font-size: 1.375rem; + } +} +@media (min-width: $breakpoint-medium) { + .heading-hero-2 { + // font-size: 2.75rem; + font-size: 1.75rem; + } +} +@mixin hook-card-title(){ + font-size: 1.125rem; +} + + + +.list-featured>li:first-child { + margin-top: $list-large-margin-top; +} + + +@mixin hook-base-body(){ + //filter: blur(7px); + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + +} +@mixin hook-base-misc(){ + input[type="submit" i]{ + -webkit-appearance:none; + } +} +@mixin hook-card(){ + border: solid 1px lighten($global-border, 10%); + &:hover { + border-color: darken($global-border, 10%); + } +} +@mixin hook-card-body(){ + > p { + font-size: $global-small-font-size; + } + > span { + color: $global-primary-background; + } +} + +@mixin hook-card-misc(){ + .uk-position-cover { + z-index: 1; + } + .card-category { + h3:nth-child(2n) { + margin-top: 0 !important; + } + } + .card-post { + .uk-card-header{ + padding-top: $global-medium-margin; + padding-bottom: 0; + } + .uk-card-body{ + padding-top: $global-medium-margin / 2; + padding-bottom: $global-medium-margin / 2; + } + .uk-card-footer{ + padding-bottom: $global-medium-margin * 0.8; + padding-top: 0; + } + } +} + +@mixin hook-form(){ + border: solid 1px $global-border; +} + +@mixin hook-offcanvas-bar(){ + font-weight: 500; +} + +@mixin hook-list-misc(){ + .uk-list { + margin: 0; + } +} + +@mixin hook-article(){ + .share { + } + figure, .uk-slideshow { + margin-top: $global-medium-margin * 1.1; + margin-bottom: $global-medium-margin * 1.5; + } + figure { + img + div .uk-overlay-icon { + color: rgba(255, 255, 255, 0); + } + img:hover + div .uk-overlay-icon { + color: rgba(255, 255, 255, 1); + } + figcaption { + margin-left: 0; + span { + padding-right: 20px; + margin-bottom: -43px; + margin-top: 20px; + border-right: solid 2px $global-muted-color; + font-style: italic; + font-size: 0.8rem; + line-height: 1.8; + } + } + } + blockquote { + border-left: solid 2px $global-muted-color; + padding-left: $base-margin-vertical; + line-height: 1.7; + margin-top: $global-medium-margin; + margin-bottom: $global-medium-margin; + } + .highlight, + .highlighter-rouge { + margin-top: $global-medium-margin; + margin-bottom: $global-medium-margin; + } +} +@mixin hook-article-title(){ + margin-bottom: $global-margin; +} +@mixin hook-article-meta(){ + a { + color: $article-meta-color; + &:hover { + color: $global-primary-background; + } + } + .avatar { + margin-right: 10px; + float: left; + } +} +@mixin hook-article-misc(){ + .article-content { + line-height: 1.8; + } + .avatar { + border-radius: 50%; + } + .paginate-post .uk-text-small { + line-height: 1.75; + } +} + +// +// Utility +// +// ======================================================================== +@mixin hook-utility-misc(){ + .remove-underline, .remove-underline:hover{ + text-decoration: none; + } + .link-dark { + color: $color-main !important; + } + .uk-container.uk-container-xsmall { + max-width: 700px; + } + .hvr-forward { + display: inline-block; + vertical-align: middle; + -webkit-transform: perspective(1px) translateZ(0); + transform: perspective(1px) translateZ(0); + box-shadow: 0 0 1px transparent; + -webkit-transition-duration: 0.3s; + transition-duration: 0.3s; + -webkit-transition-property: transform; + transition-property: transform; + } + .hvr-forward:active, + .hvr-forward:focus, + .hvr-forward:hover { + -webkit-transform: translateX(6px); + transform: translateX(6px); + } + .hvr-back { + display: inline-block; + vertical-align: middle; + -webkit-transform: perspective(1px) translateZ(0); + transform: perspective(1px) translateZ(0); + box-shadow: 0 0 1px transparent; + -webkit-transition-duration: 0.3s; + transition-duration: 0.3s; + -webkit-transition-property: transform; + transition-property: transform; + } + .hvr-back:hover, + .hvr-back:focus, + .hvr-back:active { + -webkit-transform: translateX(-6px); + transform: translateX(-6px); + } + .social-networks { + margin-top: $global-large-margin; + } + header { + .uk-logo { + color: $global-primary-background; + &:hover { + color: $global-primary-background; + } + } + } + .section-title { + margin-bottom: $global-medium-margin; + ~ .section-title { + margin-top: $global-medium-margin; + } + } + @media (min-width: $breakpoint-medium) { + .section-title { + ~ .section-title { + margin-top: $global-large-margin; + } + } + } + .section-hero { + .searchBox { + max-width: 550px; + margin: 60px auto 0 auto; + .uk-search-input { + height: 50px; + border-radius: 50px; + color: $global-muted-color; + font-style: normal; + &:focus { + background: #ffffff; + } + } + .uk-search-icon { + width: 50px; + color: $global-muted-color; + } + + } + } + footer { + .uk-subnav>.uk-active>a { + color: $global-muted-color; + } + } + #markdown-toc { + padding: 0 0 0 $global-margin; + border-left: solid 2px $global-muted-color; + list-style: none; + margin-bottom: $global-medium-margin; + > li > :last-child { + margin-bottom: 0; + } + ul { + margin: 0; + padding-left: $global-margin; + list-style: none; + } + >li:nth-child(n+2), >li>ul { + margin-top: 5px; + } + a { + color: $global-muted-color; + } + + } + .uk-article-content .no_toc { + margin-top: $global-medium-margin; + margin-bottom: $global-medium-margin; + } + #searchBox-results, #searchBox-results { + margin: 10px 0 0 0; + z-index: 1; + li { + margin: 0; + padding: 20px 25px 0; + background: #fff; + line-height: 1.4; + border-left: solid 1px $global-border; + border-right: solid 1px $global-border; + &:first-child { + border-top-left-radius: 5px; + border-top-right-radius: 5px; + border-top: solid 1px $global-border; + } + &:last-child { + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + padding-bottom: 25px; + border-bottom: solid 1px $global-border; + } + a:hover { + text-decoration: none; + } + } + } + +} + + +$tm-timeline-border-width: 4px; +$tm-timeline-dot-diameter: 20px; + +@media (min-width: $breakpoint-small) { + .tm-timeline { + box-sizing: border-box; + * { + box-sizing: border-box; + } + position: relative; + + &:before { + content: ''; + position: absolute; + top: 0; + left: calc(30% - 2px); + bottom: 0; + width: $tm-timeline-border-width; + background: $color-main; + } + + &:after { + content: ""; + display: table; + clear: both; + } + } + + .tm-timeline-entry { + + .tm-timeline-entry{ + margin-top: $global-large-margin; + } + clear: both; + text-align: left; + position: relative; + + &:after { + display: block; + content: ""; + clear: both; + } + + .tm-timeline-time { + float: left; + width: 30%; + padding-right: $global-large-margin; + text-align: right; + position: relative; + + &:before { + content: ''; + position: absolute; + width: $tm-timeline-dot-diameter; + height: $tm-timeline-dot-diameter; + border: $tm-timeline-border-width solid $color-main; + background-color: #fff; + border-radius: 100%; + top: 0; + right: - 14px; + z-index: 99; + } + + h5 { + margin: 3px 0 0; + } + } + + .tm-timeline-body { + float: right; + width: 70%; + padding-left: $global-large-margin; + margin-top: -2px; + h3 { + margin: 0 0 15px; + span { + font-size: .7rem; + margin-bottom: 4px; + padding: 0 5px; + } + } + + } + } +} diff --git a/_sass/theme/uikit.scss b/_sass/theme/uikit.scss new file mode 100644 index 00000000..59e87618 --- /dev/null +++ b/_sass/theme/uikit.scss @@ -0,0 +1,92 @@ +// Import UIkit components + +// Base +@import "../uikit/components/variables.scss"; +@import "../uikit/components/mixin.scss"; +@import "../uikit/components/base.scss"; + +// Elements +@import "../uikit/components/link.scss"; +@import "../uikit/components/heading.scss"; +@import "../uikit/components/divider.scss"; +@import "../uikit/components/list.scss"; +// @import "../uikit/components/description-list.scss"; +// @import "../uikit/components/table.scss"; +@import "../uikit/components/icon.scss"; +// @import "../uikit/components/form-range.scss"; +@import "../uikit/components/form.scss"; // After: Icon, Form Range +@import "../uikit/components/button.scss"; + +// Layout +@import "../uikit/components/section.scss"; +@import "../uikit/components/container.scss"; +@import "../uikit/components/grid.scss"; +@import "../uikit/components/tile.scss"; +@import "../uikit/components/card.scss"; + +// Common +@import "../uikit/components/close.scss"; // After: Icon +// @import "../uikit/components/spinner.scss"; // After: Icon +@import "../uikit/components/totop.scss"; // After: Icon +// @import "../uikit/components/marker.scss"; // After: Icon +// @import "../uikit/components/alert.scss"; // After: Close +// @import "../uikit/components/badge.scss"; +@import "../uikit/components/label.scss"; +@import "../uikit/components/overlay.scss"; // After: Icon +@import "../uikit/components/article.scss"; // After: Subnav +// @import "../uikit/components/comment.scss"; // After: Subnav +@import "../uikit/components/search.scss"; // After: Icon + +// Navs +@import "../uikit/components/nav.scss"; +@import "../uikit/components/navbar.scss"; // After: Card, Grid, Nav, Icon, Search +@import "../uikit/components/subnav.scss"; +// @import "../uikit/components/breadcrumb.scss"; +@import "../uikit/components/pagination.scss"; +// @import "../uikit/components/tab.scss"; +// @import "../uikit/components/slidenav.scss"; // After: Icon +// @import "../uikit/components/dotnav.scss"; +// @import "../uikit/components/thumbnav.scss"; + +// JavaScript +// @import "../uikit/components/accordion.scss"; +@import "../uikit/components/drop.scss"; // After: Card +@import "../uikit/components/dropdown.scss"; // After: Card +// @import "../uikit/components/modal.scss"; // After: Close +@import "../uikit/components/lightbox.scss"; // After: Close +@import "../uikit/components/slideshow.scss"; +@import "../uikit/components/sticky.scss"; +@import "../uikit/components/offcanvas.scss"; +// @import "../uikit/components/switcher.scss"; +// Scrollspy +// Toggle +// Scroll + +// Additional +// @import "../uikit/components/iconnav.scss"; +// @import "../uikit/components/notification.scss"; +// @import "../uikit/components/tooltip.scss"; +// @import "../uikit/components/placeholder.scss"; +// @import "../uikit/components/progress.scss"; +// @import "../uikit/components/sortable.scss"; +// @import "../uikit/components/countdown.scss"; + +// Utilities +@import "../uikit/components/animation.scss"; +@import "../uikit/components/width.scss"; +@import "../uikit/components/text.scss"; +@import "../uikit/components/column.scss"; +@import "../uikit/components/cover.scss"; +// @import "../uikit/components/background.scss"; +@import "../uikit/components/align.scss"; +@import "../uikit/components/utility.scss"; +@import "../uikit/components/flex.scss"; // After: Utility +@import "../uikit/components/margin.scss"; +@import "../uikit/components/padding.scss"; +@import "../uikit/components/position.scss"; +// @import "../uikit/components/transition.scss"; +@import "../uikit/components/visibility.scss"; +// @import "../uikit/components/inverse.scss"; + +// Need to be loaded last +@import "../uikit/components/print.scss"; diff --git a/_sass/theme/variables.scss b/_sass/theme/variables.scss new file mode 100644 index 00000000..a4d98d34 --- /dev/null +++ b/_sass/theme/variables.scss @@ -0,0 +1,90 @@ +// Color scheme variables + +// Main content +$color-main: #0F1214; + +// Secondary content +$global-muted-color: #7a838a; + +// Accent color +$global-primary-background: $color-main; + +// Link and botton hover +$color-hover: #000; + +// Standard UIkit +//$global-muted-background: ; +$global-border: #c4c7ca; + +// Global +$global-font-family: system-ui; +$global-link-color: $global-muted-color; +$global-link-hover-color: $color-hover; + +$global-xxlarge-font-size: 1.875rem;; +$global-xlarge-font-size: 1.625rem; +$global-large-font-size: 1.375rem; +$global-medium-font-size: 1.125rem; +$global-small-font-size: 0.875rem; + +// Base +$base-body-color: $color-main; +$base-heading-color: $color-main; +$link-muted-hover-color: $color-main; +$button-primary-hover-background: $color-hover; +$base-hr-border: lighten($global-border, 13%); +$text-lead-font-size: 1.125rem; +$base-heading-font-weight: bold; +$base-heading-margin-top: 50px; +// $base-body-font-weight: 300; +$base-h2-line-height: 1.4; +$base-link-hover-text-decoration: underline; +// $base-h1-font-size: $global-xxlarge-font-size !default; +// $base-h2-font-size: $global-xlarge-font-size !default; +// $base-h3-font-size: $global-large-font-size !default; +// $base-h4-font-size: $global-medium-font-size !default; +// $base-h5-font-size: $global-font-size !default; +// $base-h6-font-size: $global-small-font-size !default; + +// Navbar +$navbar-background: #fff; +$navbar-nav-item-color: $global-muted-color; +$navbar-nav-item-hover-color: $color-main; +$navbar-nav-item-active-color: $color-main; +$navbar-toggle-color: $global-muted-color; +$navbar-toggle-hover-color: $color-main; + +// Subnav +$subnav-item-color: $global-muted-color; +$subnav-item-hover-color: $color-main; + +// Pagination links +$pagination-item-color: $color-main; +$pagination-item-hover-color: $color-main; + +$article-meta-font-size: 0.8125rem; +$article-meta-line-height: 1.3; + +$container-max-width: 1100px; +$container-small-max-width: 800px; + +$card-small-body-padding-horizontal: 25px; +$card-small-body-padding-vertical: 25px; + +$article-title-line-height: 1.4; +$article-title-font-size: 1.875rem; +$offcanvas-bar-color-mode: dark; +$offcanvas-bar-background: #fff; + +$heading-hero-font-size: 2.375rem; +$heading-hero-line-height: 1.3; +$heading-hero-font-size-s: 2.9375rem; +$heading-hero-line-height-s: 1.3; +$heading-hero-font-size-m: 3.625rem; +$heading-hero-line-height-m: 1.4; + +$navbar-nav-item-text-transform: none; + +$subnav-item-text-transform: none; + +$search-default-border: darken($global-border, 15%); diff --git a/_sass/uikit/components/_import.components.scss b/_sass/uikit/components/_import.components.scss new file mode 100644 index 00000000..445384fa --- /dev/null +++ b/_sass/uikit/components/_import.components.scss @@ -0,0 +1,56 @@ +// Base +@import "variables.scss"; +@import "mixin.scss"; +@import "base.scss"; + +// Elements +@import "link.scss"; +@import "heading.scss"; +@import "divider.scss"; +@import "list.scss"; +@import "description-list.scss"; +@import "table.scss"; +@import "icon.scss"; +@import "form.scss"; // After: Icon +@import "button.scss"; + +// Layout +@import "section.scss"; +@import "container.scss"; +@import "grid.scss"; +@import "tile.scss"; +@import "card.scss"; + +// Common +@import "close.scss"; // After: Icon +@import "spinner.scss"; // After: Icon +@import "totop.scss"; // After: Icon +@import "alert.scss"; // After: Close +@import "badge.scss"; +@import "label.scss"; +@import "overlay.scss"; // After: Icon +@import "article.scss"; // After: Subnav +@import "comment.scss"; // After: Subnav +@import "search.scss"; // After: Icon + +// Navs +@import "nav.scss"; +@import "navbar.scss"; // After: Card, Grid, Nav, Icon, Search +@import "subnav.scss"; +@import "breadcrumb.scss"; +@import "pagination.scss"; +@import "tab.scss"; +@import "slidenav.scss"; // After: Icon +@import "dotnav.scss"; + +// JavaScript +@import "accordion.scss"; +@import "drop.scss"; // After: Card +@import "dropdown.scss"; // After: Card +@import "modal.scss"; // After: Close +@import "sticky.scss"; +@import "offcanvas.scss"; +@import "switcher.scss"; +// Scrollspy +// Toggle +// Scroll diff --git a/_sass/uikit/components/_import.scss b/_sass/uikit/components/_import.scss new file mode 100644 index 00000000..b3749a29 --- /dev/null +++ b/_sass/uikit/components/_import.scss @@ -0,0 +1,91 @@ +// Base +@import "variables.scss"; +@import "mixin.scss"; +@import "base.scss"; + +// Elements +@import "link.scss"; +@import "heading.scss"; +@import "divider.scss"; +@import "list.scss"; +@import "description-list.scss"; +@import "table.scss"; +@import "icon.scss"; +@import "form-range.scss"; +@import "form.scss"; // After: Icon, Form Range +@import "button.scss"; + +// Layout +@import "section.scss"; +@import "container.scss"; +@import "grid.scss"; +@import "tile.scss"; +@import "card.scss"; + +// Common +@import "close.scss"; // After: Icon +@import "spinner.scss"; // After: Icon +@import "totop.scss"; // After: Icon +@import "marker.scss"; // After: Icon +@import "alert.scss"; // After: Close +@import "badge.scss"; +@import "label.scss"; +@import "overlay.scss"; // After: Icon +@import "article.scss"; // After: Subnav +@import "comment.scss"; // After: Subnav +@import "search.scss"; // After: Icon + +// Navs +@import "nav.scss"; +@import "navbar.scss"; // After: Card, Grid, Nav, Icon, Search +@import "subnav.scss"; +@import "breadcrumb.scss"; +@import "pagination.scss"; +@import "tab.scss"; +@import "slidenav.scss"; // After: Icon +@import "dotnav.scss"; +@import "thumbnav.scss"; + +// JavaScript +@import "accordion.scss"; +@import "drop.scss"; // After: Card +@import "dropdown.scss"; // After: Card +@import "modal.scss"; // After: Close +@import "lightbox.scss"; // After: Close +@import "slideshow.scss"; +@import "slider.scss"; +@import "sticky.scss"; +@import "offcanvas.scss"; +@import "switcher.scss"; +// Scrollspy +// Toggle +// Scroll + +// Additional +@import "iconnav.scss"; +@import "notification.scss"; +@import "tooltip.scss"; +@import "placeholder.scss"; +@import "progress.scss"; +@import "sortable.scss"; +@import "countdown.scss"; + +// Utilities +@import "animation.scss"; +@import "width.scss"; +@import "text.scss"; +@import "column.scss"; +@import "cover.scss"; +@import "background.scss"; +@import "align.scss"; +@import "utility.scss"; +@import "flex.scss"; // After: Utility +@import "margin.scss"; +@import "padding.scss"; +@import "position.scss"; +@import "transition.scss"; +@import "visibility.scss"; +@import "inverse.scss"; + +// Need to be loaded last +@import "print.scss"; diff --git a/_sass/uikit/components/_import.utilities.scss b/_sass/uikit/components/_import.utilities.scss new file mode 100644 index 00000000..bea39e5c --- /dev/null +++ b/_sass/uikit/components/_import.utilities.scss @@ -0,0 +1,19 @@ +// Utilities +@import "animation.scss"; +@import "width.scss"; +@import "text.scss"; +@import "column.scss"; +@import "cover.scss"; +@import "background.scss"; +@import "align.scss"; +@import "utility.scss"; +@import "flex.scss"; // After: Utility +@import "margin.scss"; +@import "padding.scss"; +@import "position.scss"; +@import "transition.scss"; +@import "visibility.scss"; +@import "inverse.scss"; + +// Need to be loaded last +@import "print.scss"; diff --git a/_sass/uikit/components/accordion.scss b/_sass/uikit/components/accordion.scss new file mode 100644 index 00000000..bfb0e815 --- /dev/null +++ b/_sass/uikit/components/accordion.scss @@ -0,0 +1,118 @@ +// Name: Accordion +// Description: Component to create accordions +// +// Component: `uk-accordion` +// +// Sub-objects: `uk-accordion-title` +// `uk-accordion-content` +// +// States: `uk-open` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$accordion-item-margin-top: $global-margin !default; + +$accordion-title-font-size: $global-medium-font-size !default; +$accordion-title-line-height: 1.4 !default; +$accordion-title-color: $global-emphasis-color !default; +$accordion-title-hover-color: $global-color !default; + +$accordion-content-margin-top: $global-margin !default; + + +/* ======================================================================== + Component: Accordion + ========================================================================== */ + +.uk-accordion { + padding: 0; + list-style: none; + @if(mixin-exists(hook-accordion)) {@include hook-accordion();} +} + + +/* Item + ========================================================================== */ + +.uk-accordion > :nth-child(n+2) { + margin-top: $accordion-item-margin-top; + @if(mixin-exists(hook-accordion-item)) {@include hook-accordion-item();} +} + + +/* Title + ========================================================================== */ + +.uk-accordion-title { + display: block; + font-size: $accordion-title-font-size; + line-height: $accordion-title-line-height; + color: $accordion-title-color; + @if(mixin-exists(hook-accordion-title)) {@include hook-accordion-title();} +} + +/* Hover + Focus */ +.uk-accordion-title:hover, +.uk-accordion-title:focus { + color: $accordion-title-hover-color; + text-decoration: none; + outline: none; + @if(mixin-exists(hook-accordion-title-hover)) {@include hook-accordion-title-hover();} +} + + +/* Content + ========================================================================== */ + +.uk-accordion-content { + margin-top: $accordion-content-margin-top; + @if(mixin-exists(hook-accordion-content)) {@include hook-accordion-content();} +} + +/* + * Micro clearfix + */ + +.uk-accordion-content::before, +.uk-accordion-content::after { + content: ""; + display: table; +} + +.uk-accordion-content::after { clear: both; } + +/* + * Remove margin from the last-child + */ + + .uk-accordion-content > :last-child { margin-bottom: 0; } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-accordion-misc)) {@include hook-accordion-misc();} + +// @mixin hook-accordion(){} +// @mixin hook-accordion-item(){} +// @mixin hook-accordion-title(){} +// @mixin hook-accordion-title-hover(){} +// @mixin hook-accordion-content(){} +// @mixin hook-accordion-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-accordion-title-color: $inverse-global-emphasis-color !default; +$inverse-accordion-title-hover-color: $inverse-global-inverse-color !default; + + + +// @mixin hook-inverse-accordion-item(){} +// @mixin hook-inverse-accordion-title(){} +// @mixin hook-inverse-accordion-title-hover(){} \ No newline at end of file diff --git a/_sass/uikit/components/alert.scss b/_sass/uikit/components/alert.scss new file mode 100644 index 00000000..8922cc85 --- /dev/null +++ b/_sass/uikit/components/alert.scss @@ -0,0 +1,147 @@ +// Name: Alert +// Description: Component to create alert messages +// +// Component: `uk-alert` +// +// Adopted: `uk-alert-close` +// +// Modifiers: `uk-alert-primary` +// `uk-alert-success` +// `uk-alert-warning` +// `uk-alert-danger` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$alert-margin-vertical: $global-margin !default; +$alert-padding: $global-small-gutter !default; +$alert-padding-right: $alert-padding + 14px !default; +$alert-background: $global-muted-background !default; +$alert-color: $global-color !default; + +$alert-close-top: $alert-padding + 5px !default; +$alert-close-right: $alert-padding !default; + +$alert-primary-background: lighten(mix(white, $global-primary-background, 40%), 20%) !default; +$alert-primary-color: $global-primary-background !default; + +$alert-success-background: lighten(mix(white, $global-success-background, 40%), 25%) !default; +$alert-success-color: $global-success-background !default; + +$alert-warning-background: lighten(mix(white, $global-warning-background, 45%), 15%) !default; +$alert-warning-color: $global-warning-background !default; + +$alert-danger-background: lighten(mix(white, $global-danger-background, 40%), 20%) !default; +$alert-danger-color: $global-danger-background !default; + + +/* ======================================================================== + Component: Alert + ========================================================================== */ + +.uk-alert { + position: relative; + margin-bottom: $alert-margin-vertical; + padding: $alert-padding $alert-padding-right $alert-padding $alert-padding; + background: $alert-background; + color: $alert-color; + @if(mixin-exists(hook-alert)) {@include hook-alert();} +} + +/* Add margin if adjacent element */ +* + .uk-alert { margin-top: $alert-margin-vertical; } + +/* + * Remove margin from the last-child + */ + +.uk-alert > :last-child { margin-bottom: 0; } + + +/* Close + * Adopts `uk-close` + ========================================================================== */ + +.uk-alert-close { + position: absolute; + top: $alert-close-top; + right: $alert-close-right; + @if(mixin-exists(hook-alert-close)) {@include hook-alert-close();} +} + +/* + * Remove margin from adjacent element + */ + +.uk-alert-close:first-child + * { margin-top: 0; } + +/* + * Hover + Focus + */ + +.uk-alert-close:hover, +.uk-alert-close:focus { + @if(mixin-exists(hook-alert-close-hover)) {@include hook-alert-close-hover();} +} + + +/* Style modifiers + ========================================================================== */ + +/* + * Primary + */ + +.uk-alert-primary { + background: $alert-primary-background; + color: $alert-primary-color; + @if(mixin-exists(hook-alert-primary)) {@include hook-alert-primary();} +} + +/* + * Success + */ + +.uk-alert-success { + background: $alert-success-background; + color: $alert-success-color; + @if(mixin-exists(hook-alert-success)) {@include hook-alert-success();} +} + +/* + * Warning + */ + +.uk-alert-warning { + background: $alert-warning-background; + color: $alert-warning-color; + @if(mixin-exists(hook-alert-warning)) {@include hook-alert-warning();} +} + +/* + * Danger + */ + +.uk-alert-danger { + background: $alert-danger-background; + color: $alert-danger-color; + @if(mixin-exists(hook-alert-danger)) {@include hook-alert-danger();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-alert-misc)) {@include hook-alert-misc();} + +// @mixin hook-alert(){} +// @mixin hook-alert-close(){} +// @mixin hook-alert-close-hover(){} +// @mixin hook-alert-primary(){} +// @mixin hook-alert-success(){} +// @mixin hook-alert-warning(){} +// @mixin hook-alert-danger(){} +// @mixin hook-alert-misc(){} \ No newline at end of file diff --git a/_sass/uikit/components/align.scss b/_sass/uikit/components/align.scss new file mode 100644 index 00000000..bee6702b --- /dev/null +++ b/_sass/uikit/components/align.scss @@ -0,0 +1,142 @@ +// Name: Align +// Description: Utilities to align embedded content +// +// Component: `uk-align-left-*` +// `uk-align-right-*` +// `uk-align-center` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$align-margin-horizontal: $global-gutter !default; +$align-margin-vertical: $global-gutter !default; + +$align-margin-horizontal-l: $global-medium-gutter !default; + + +/* ======================================================================== + Component: Align + ========================================================================== */ + +/* + * Default + */ + +[class*='uk-align'] { + display: block; + margin-bottom: $align-margin-vertical; +} + +* + [class*='uk-align'] { margin-top: $align-margin-vertical; } + +/* + * Center + */ + +.uk-align-center { + margin-left: auto; + margin-right: auto; +} + +/* + * Left/Right + */ + +.uk-align-left { + margin-top: 0; + margin-right: $align-margin-horizontal; + float: left; +} + +.uk-align-right { + margin-top: 0; + margin-left: $align-margin-horizontal; + float: right; +} + +/* Phone landscape and bigger */ +@media (min-width: $breakpoint-small) { + + .uk-align-left\@s { + margin-top: 0; + margin-right: $align-margin-horizontal; + float: left; + } + + .uk-align-right\@s { + margin-top: 0; + margin-left: $align-margin-horizontal; + float: right; + } + +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-align-left\@m { + margin-top: 0; + margin-right: $align-margin-horizontal; + float: left; + } + + .uk-align-right\@m { + margin-top: 0; + margin-left: $align-margin-horizontal; + float: right; + } + +} + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + .uk-align-left\@l { + margin-top: 0; + float: left; + } + + .uk-align-right\@l { + margin-top: 0; + float: right; + } + + .uk-align-left, + .uk-align-left\@s, + .uk-align-left\@m, + .uk-align-left\@l { margin-right: $align-margin-horizontal-l; } + + .uk-align-right, + .uk-align-right\@s, + .uk-align-right\@m, + .uk-align-right\@l { margin-left: $align-margin-horizontal-l; } + +} + +/* Large screen and bigger */ +@media (min-width: $breakpoint-xlarge) { + + .uk-align-left\@xl { + margin-top: 0; + margin-right: $align-margin-horizontal-l; + float: left; + } + + .uk-align-right\@xl { + margin-top: 0; + margin-left: $align-margin-horizontal-l; + float: right; + } + +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-align-misc)) {@include hook-align-misc();} + +// @mixin hook-align-misc(){} \ No newline at end of file diff --git a/_sass/uikit/components/animation.scss b/_sass/uikit/components/animation.scss new file mode 100644 index 00000000..c1d91928 --- /dev/null +++ b/_sass/uikit/components/animation.scss @@ -0,0 +1,390 @@ +// Name: Animation +// Description: Utilities for keyframe animations +// +// Component: `uk-animation-*` +// +// Modifiers: `uk-animation-reverse` +// `uk-animation-fast` +// `uk-animation-fade` +// `uk-animation-scale-up` +// `uk-animation-scale-down` +// `uk-animation-slide-top-*` +// `uk-animation-slide-bottom-*` +// `uk-animation-slide-left-*` +// `uk-animation-slide-right-*` +// `uk-animation-kenburns` +// `uk-animation-shake` +// +// Sub-objects: `uk-animation-toggle` +// +// States: `uk-hover` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$animation-duration: 0.5s !default; +$animation-fade-duration: 0.8s !default; +$animation-kenburns-duration: 15s !default; +$animation-fast-duration: 0.1s !default; + +$animation-slide-small-translate: 10px !default; +$animation-slide-medium-translate: 50px !default; + + +/* ======================================================================== + Component: Animation + ========================================================================== */ + +[class*='uk-animation-'] { + animation-duration: $animation-duration; + animation-timing-function: ease-out; + animation-fill-mode: both; +} + + +/* Direction modifier + ========================================================================== */ + +.uk-animation-reverse { + animation-direction: reverse; + animation-timing-function: ease-in; +} + + +/* Animations for scrollspy + ========================================================================== */ + +/* + * Fade + */ + +.uk-animation-fade { + animation-name: uk-fade; + animation-duration: $animation-fade-duration; + animation-timing-function: linear; +} + +/* + * Scale + */ + +.uk-animation-scale-up { animation-name: uk-fade-scale-02; } +.uk-animation-scale-down { animation-name: uk-fade-scale-18; } + +/* + * Slide + */ + +.uk-animation-slide-top { animation-name: uk-fade-top; } +.uk-animation-slide-bottom { animation-name: uk-fade-bottom; } +.uk-animation-slide-left { animation-name: uk-fade-left; } +.uk-animation-slide-right { animation-name: uk-fade-right; } + +/* + * Slide Small + */ + +.uk-animation-slide-top-small { animation-name: uk-fade-top-small; } +.uk-animation-slide-bottom-small { animation-name: uk-fade-bottom-small; } +.uk-animation-slide-left-small { animation-name: uk-fade-left-small; } +.uk-animation-slide-right-small { animation-name: uk-fade-right-small; } + +/* + * Slide Medium + */ + +.uk-animation-slide-top-medium { animation-name: uk-fade-top-medium; } +.uk-animation-slide-bottom-medium { animation-name: uk-fade-bottom-medium; } +.uk-animation-slide-left-medium { animation-name: uk-fade-left-medium; } +.uk-animation-slide-right-medium { animation-name: uk-fade-right-medium; } + +/* + * Kenburns + */ + +.uk-animation-kenburns { + animation-name: uk-scale-kenburns; + animation-duration: $animation-kenburns-duration; +} + +/* + * Shake + */ + +.uk-animation-shake { animation-name: uk-shake; } + + +/* Duration modifier + ========================================================================== */ + +.uk-animation-fast { animation-duration: $animation-fast-duration; } + + +/* Enable animation only on hover +========================================================================== */ + +/* + * Note: Firefox and IE needs this because animations are not triggered when switching between display `none` and `block` + */ + +.uk-animation-toggle:not(:hover):not(.uk-hover) [class*='uk-animation-'] { animation-name: none; } + + +/* Keyframes used by animation classes + ========================================================================== */ + +/* + * Fade + */ + +@keyframes uk-fade { + 0% { opacity: 0; } + 100% { opacity: 1; } +} + +/* + * Slide Top + */ + +@keyframes uk-fade-top { + 0% { + opacity: 0; + transform: translateY(-100%); + } + 100% { + opacity: 1; + transform: translateY(0); + } +} + +/* + * Slide Bottom + */ + +@keyframes uk-fade-bottom { + 0% { + opacity: 0; + transform: translateY(100%); + } + 100% { + opacity: 1; + transform: translateY(0); + } +} + +/* + * Slide Left + */ + +@keyframes uk-fade-left { + 0% { + opacity: 0; + transform: translateX(-100%); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} + +/* + * Slide Right + */ + +@keyframes uk-fade-right { + 0% { + opacity: 0; + transform: translateX(100%); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} + +/* + * Slide Top Small + */ + +@keyframes uk-fade-top-small { + 0% { + opacity: 0; + transform: translateY(-$animation-slide-small-translate); + } + 100% { + opacity: 1; + transform: translateY(0); + } +} + +/* + * Slide Bottom Small + */ + +@keyframes uk-fade-bottom-small { + 0% { + opacity: 0; + transform: translateY($animation-slide-small-translate); + } + 100% { + opacity: 1; + transform: translateY(0); + } +} + +/* + * Slide Left Small + */ + +@keyframes uk-fade-left-small { + 0% { + opacity: 0; + transform: translateX(-$animation-slide-small-translate); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} + +/* + * Slide Right Small + */ + +@keyframes uk-fade-right-small { + 0% { + opacity: 0; + transform: translateX($animation-slide-small-translate); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} + +/* + * Slide Top Medium + */ + +@keyframes uk-fade-top-medium { + 0% { + opacity: 0; + transform: translateY(-$animation-slide-medium-translate); + } + 100% { + opacity: 1; + transform: translateY(0); + } +} + +/* + * Slide Bottom Medium + */ + +@keyframes uk-fade-bottom-medium { + 0% { + opacity: 0; + transform: translateY($animation-slide-medium-translate); + } + 100% { + opacity: 1; + transform: translateY(0); + } +} + +/* + * Slide Left Medium + */ + +@keyframes uk-fade-left-medium { + 0% { + opacity: 0; + transform: translateX(-$animation-slide-medium-translate); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} + +/* + * Slide Right Medium + */ + +@keyframes uk-fade-right-medium { + 0% { + opacity: 0; + transform: translateX($animation-slide-medium-translate); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} + +/* + * Scale Up + */ + +@keyframes uk-fade-scale-02 { + 0% { + opacity: 0; + transform: scale(0.2); + } + 100% { + opacity: 1; + transform: scale(1); + } +} + +/* + * Scale Down + */ + +@keyframes uk-fade-scale-18 { + 0% { + opacity: 0; + transform: scale(1.8); + } + 100% { + opacity: 1; + transform: scale(1); + } +} + +/* + * Kenburns + */ + +@keyframes uk-scale-kenburns { + 0% { transform: scale(1); } + 100% { transform: scale(1.2); } +} + +/* + * Shake + */ + +@keyframes uk-shake { + 0%, 100% { transform: translateX(0); } + 10% { transform: translateX(-9px); } + 20% { transform: translateX(8px); } + 30% { transform: translateX(-7px); } + 40% { transform: translateX(6px); } + 50% { transform: translateX(-5px); } + 60% { transform: translateX(4px); } + 70% { transform: translateX(-3px); } + 80% { transform: translateX(2px); } + 90% { transform: translateX(-1px); } +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-animation-misc)) {@include hook-animation-misc();} + +// @mixin hook-animation-misc(){} diff --git a/_sass/uikit/components/article.scss b/_sass/uikit/components/article.scss new file mode 100644 index 00000000..9cc470f2 --- /dev/null +++ b/_sass/uikit/components/article.scss @@ -0,0 +1,102 @@ +// Name: Article +// Description: Component to create articles +// +// Component: `uk-article` +// +// Sub-objects: `uk-article-title` +// `uk-article-meta` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$article-margin-top: $global-large-margin !default; + +$article-title-font-size: $global-xxlarge-font-size !default; +$article-title-line-height: 1.2 !default; + +$article-meta-font-size: $global-small-font-size !default; +$article-meta-line-height: 1.4 !default; +$article-meta-color: $global-muted-color !default; + + +/* ======================================================================== + Component: Article + ========================================================================== */ + +.uk-article { + @if(mixin-exists(hook-article)) {@include hook-article();} +} + +/* + * Micro clearfix + */ + +.uk-article::before, +.uk-article::after { + content: ""; + display: table; +} + +.uk-article::after { clear: both; } + +/* + * Remove margin from the last-child + */ + +.uk-article > :last-child { margin-bottom: 0; } + + +/* Adjacent sibling + ========================================================================== */ + +.uk-article + .uk-article { + margin-top: $article-margin-top; + @if(mixin-exists(hook-article-adjacent)) {@include hook-article-adjacent();} +} + + +/* Title + ========================================================================== */ + +.uk-article-title { + font-size: $article-title-font-size; + line-height: $article-title-line-height; + @if(mixin-exists(hook-article-title)) {@include hook-article-title();} +} + + +/* Meta + ========================================================================== */ + +.uk-article-meta { + font-size: $article-meta-font-size; + line-height: $article-meta-line-height; + color: $article-meta-color; + @if(mixin-exists(hook-article-meta)) {@include hook-article-meta();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-article-misc)) {@include hook-article-misc();} + +// @mixin hook-article(){} +// @mixin hook-article-adjacent(){} +// @mixin hook-article-title(){} +// @mixin hook-article-meta(){} +// @mixin hook-article-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-article-meta-color: $inverse-global-muted-color !default; + + + +// @mixin hook-inverse-article-title(){} +// @mixin hook-inverse-article-meta(){} \ No newline at end of file diff --git a/_sass/uikit/components/background.scss b/_sass/uikit/components/background.scss new file mode 100644 index 00000000..ca7a344a --- /dev/null +++ b/_sass/uikit/components/background.scss @@ -0,0 +1,136 @@ +// Name: Background +// Description: Utilities for backgrounds +// +// Component: `uk-background-*` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$background-default-background: $global-background !default; +$background-muted-background: $global-muted-background !default; +$background-primary-background: $global-primary-background !default; +$background-secondary-background: $global-secondary-background !default; + + +/* ======================================================================== + Component: Background + ========================================================================== */ + + +/* Color + ========================================================================== */ + +.uk-background-default { background-color: $background-default-background; } +.uk-background-muted { background-color: $background-muted-background; } +.uk-background-primary { background-color: $background-primary-background; } +.uk-background-secondary { background-color: $background-secondary-background; } + + +/* Size + ========================================================================== */ + +.uk-background-cover, +.uk-background-contain { + background-position: 50% 50%; + background-repeat: no-repeat; +} + +.uk-background-cover { background-size: cover; } +.uk-background-contain { background-size: contain; } + + +/* Position + ========================================================================== */ + +.uk-background-top-left { background-position: 0 0; } +.uk-background-top-center { background-position: 50% 0; } +.uk-background-top-right { background-position: 100% 0; } +.uk-background-center-left { background-position: 0 50%; } +.uk-background-center-center { background-position: 50% 50%; } +.uk-background-center-right { background-position: 100% 50%; } +.uk-background-bottom-left { background-position: 0 100%; } +.uk-background-bottom-center { background-position: 50% 100%; } +.uk-background-bottom-right { background-position: 100% 100%; } + + +/* Repeat + ========================================================================== */ + +.uk-background-norepeat { background-repeat: no-repeat; } + + +/* Attachment + ========================================================================== */ + +.uk-background-fixed { background-attachment: fixed; } + +/* + * Exclude touch devices because `fixed` doesn't work on iOS and Android + */ + +@media (pointer: coarse) { + .uk-background-fixed { background-attachment: scroll; } +} + + +/* Image + ========================================================================== */ + +/* Phone portrait and smaller */ +@media (max-width: $breakpoint-xsmall-max) { + + .uk-background-image\@s { background-image: none !important; } + +} + +/* Phone landscape and smaller */ +@media (max-width: $breakpoint-small-max) { + + .uk-background-image\@m { background-image: none !important; } + +} + +/* Tablet landscape and smaller */ +@media (max-width: $breakpoint-medium-max) { + + .uk-background-image\@l { background-image: none !important; } + +} + +/* Desktop and smaller */ +@media (max-width: $breakpoint-large-max) { + + .uk-background-image\@xl {background-image: none !important; } + +} + + +/* Blend modes + ========================================================================== */ + +.uk-background-blend-multiply { background-blend-mode: multiply; } +.uk-background-blend-screen { background-blend-mode: screen; } +.uk-background-blend-overlay { background-blend-mode: overlay; } +.uk-background-blend-darken { background-blend-mode: darken; } +.uk-background-blend-lighten { background-blend-mode: lighten; } +.uk-background-blend-color-dodge { background-blend-mode: color-dodge; } +.uk-background-blend-color-burn { background-blend-mode: color-burn; } +.uk-background-blend-hard-light { background-blend-mode: hard-light; } +.uk-background-blend-soft-light { background-blend-mode: soft-light; } +.uk-background-blend-difference { background-blend-mode: difference; } +.uk-background-blend-exclusion { background-blend-mode: exclusion; } +.uk-background-blend-hue { background-blend-mode: hue; } +.uk-background-blend-saturation { background-blend-mode: saturation; } +.uk-background-blend-color { background-blend-mode: color; } +.uk-background-blend-luminosity { background-blend-mode: luminosity; } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-background-misc)) {@include hook-background-misc();} + +// @mixin hook-background-misc(){} diff --git a/_sass/uikit/components/badge.scss b/_sass/uikit/components/badge.scss new file mode 100644 index 00000000..d076c5d0 --- /dev/null +++ b/_sass/uikit/components/badge.scss @@ -0,0 +1,83 @@ +// Name: Badge +// Description: Component to create notification badges + +// Component: `uk-badge` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$badge-size: 22px !default; +$badge-padding-vertical: 0 !default; +$badge-padding-horizontal: 5px !default; +$badge-border-radius: 500px !default; +$badge-background: $global-primary-background !default; +$badge-color: $global-inverse-color !default; +$badge-font-size: $global-small-font-size !default; + +$badge-hover-color: $global-inverse-color !default; + + +/* ======================================================================== + Component: Badge + ========================================================================== */ + +/* + * 1. Style + * 2. Center child vertically and horizontally + */ + +.uk-badge { + box-sizing: border-box; + min-width: $badge-size; + height: $badge-size; + padding: $badge-padding-vertical $badge-padding-horizontal; + border-radius: $badge-border-radius; + vertical-align: middle; + /* 1 */ + background: $badge-background; + color: $badge-color; + font-size: $badge-font-size; + /* 2 */ + display: inline-flex; + justify-content: center; + align-items: center; + @if(mixin-exists(hook-badge)) {@include hook-badge();} +} + +/* + * Required for `a` + */ + +.uk-badge:hover, +.uk-badge:focus { + color: $badge-hover-color; + text-decoration: none; + outline: none; + @if(mixin-exists(hook-badge-hover)) {@include hook-badge-hover();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-badge-misc)) {@include hook-badge-misc();} + +// @mixin hook-badge(){} +// @mixin hook-badge-hover(){} +// @mixin hook-badge-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-badge-background: $inverse-global-primary-background !default; +$inverse-badge-color: $inverse-global-inverse-color !default; +$inverse-badge-hover-color: $inverse-global-inverse-color !default; + + + +// @mixin hook-inverse-badge(){} +// @mixin hook-inverse-badge-hover(){} \ No newline at end of file diff --git a/_sass/uikit/components/base.scss b/_sass/uikit/components/base.scss new file mode 100644 index 00000000..138ecbb4 --- /dev/null +++ b/_sass/uikit/components/base.scss @@ -0,0 +1,612 @@ +// Name: Base +// Description: Default values for HTML elements +// +// Component: `uk-link` +// `uk-h1`, `uk-h2`, `uk-h3`, `uk-h4`, `uk-h5`, `uk-h6` +// `uk-hr` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$base-body-background: $global-background !default; +$base-body-font-family: $global-font-family !default; +$base-body-font-weight: normal !default; +$base-body-font-size: $global-font-size !default; +$base-body-line-height: $global-line-height !default; +$base-body-color: $global-color !default; + +$base-link-color: $global-link-color !default; +$base-link-text-decoration: none !default; +$base-link-hover-color: $global-link-hover-color !default; +$base-link-hover-text-decoration: underline !default; + +$base-strong-font-weight: bolder !default; +$base-code-font-size: $global-small-font-size !default; +$base-code-font-family: Consolas, monaco, monospace !default; +$base-code-color: $global-danger-background !default; +$base-em-color: $global-danger-background !default; +$base-ins-background: #ffd !default; +$base-ins-color: $global-color !default; +$base-mark-background: #ffd !default; +$base-mark-color: $global-color !default; +$base-quote-font-style: italic !default; +$base-small-font-size: 80% !default; + +$base-margin-vertical: $global-margin !default; + +$base-heading-font-family: $global-font-family !default; +$base-heading-font-weight: normal !default; +$base-heading-color: $global-emphasis-color !default; +$base-heading-text-transform: none !default; +$base-heading-margin-top: $global-medium-margin !default; +$base-h1-font-size: $global-xxlarge-font-size !default; +$base-h1-line-height: 1.2 !default; +$base-h2-font-size: $global-xlarge-font-size !default; +$base-h2-line-height: 1.3 !default; +$base-h3-font-size: $global-large-font-size !default; +$base-h3-line-height: 1.4 !default; +$base-h4-font-size: $global-medium-font-size !default; +$base-h4-line-height: 1.4 !default; +$base-h5-font-size: $global-font-size !default; +$base-h5-line-height: 1.4 !default; +$base-h6-font-size: $global-small-font-size !default; +$base-h6-line-height: 1.4 !default; + +$base-list-padding-left: 30px !default; + +$base-hr-margin-vertical: $global-margin !default; +$base-hr-border-width: $global-border-width !default; +$base-hr-border: $global-border !default; + +$base-blockquote-font-size: $global-medium-font-size !default; +$base-blockquote-line-height: 1.5 !default; +$base-blockquote-font-style: italic !default; +$base-blockquote-margin-vertical: $global-margin !default; +$base-blockquote-footer-margin-top: $global-small-margin !default; +$base-blockquote-footer-font-size: $global-small-font-size !default; +$base-blockquote-footer-line-height: 1.5 !default; + +$base-pre-font-size: $global-small-font-size !default; +$base-pre-line-height: 1.5 !default; +$base-pre-font-family: $base-code-font-family !default; +$base-pre-color: $global-color !default; + +$base-selection-background: #39f !default; +$base-selection-color: $global-inverse-color !default; + + +/* ======================================================================== + Component: Base + ========================================================================== */ + +/* + * 1. Set `font-size` to support `rem` units + * Not using `font` property because a leading hyphen (e.g. -apple-system) causes the font to break in IE11 and Edge + * 2. Prevent adjustments of font size after orientation changes in iOS. + * 3. Style + */ + +html { + /* 1 */ + font-family: $base-body-font-family; + font-size: $base-body-font-size; + font-weight: $base-body-font-weight; + line-height: $base-body-line-height; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 3 */ + background: $base-body-background; + color: $base-body-color; + @if(mixin-exists(hook-base-body)) {@include hook-base-body();} +} + +/* + * Remove the margin in all browsers. + */ + +body { margin: 0; } + + +/* Links + ========================================================================== */ + +/* + * Remove gaps in links underline in iOS 8+ and Safari 8+. + */ + +a { -webkit-text-decoration-skip: objects; } + +/* + * Remove the outline on focused links when they are also active or hovered + */ + +a:active, +a:hover { outline: none; } + +/* + * Style + */ + +a, +.uk-link { + color: $base-link-color; + text-decoration: $base-link-text-decoration; + cursor: pointer; + @if(mixin-exists(hook-base-link)) {@include hook-base-link();} +} + +a:hover, +.uk-link:hover { + color: $base-link-hover-color; + text-decoration: $base-link-hover-text-decoration; + @if(mixin-exists(hook-base-link-hover)) {@include hook-base-link-hover();} +} + + +/* Text-level semantics + ========================================================================== */ + +/* + * 1. Remove the bottom border in Chrome 57-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + /* 1 */ + border-bottom: none; + /* 2 */ + text-decoration: underline; + text-decoration: underline dotted; +} + + +/* + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { font-weight: $base-strong-font-weight; } + +/* + * 1. Consolas has a better baseline in running text compared to `Courier` + * 2. Correct the odd `em` font sizing in all browsers. + * 3. Style + */ + +:not(pre) > code, +:not(pre) > kbd, +:not(pre) > samp { + /* 1 */ + font-family: $base-code-font-family; + /* 2 */ + font-size: $base-code-font-size; + /* 3 */ + color: $base-code-color; + white-space: nowrap; + @if(mixin-exists(hook-base-code)) {@include hook-base-code();} +} + +/* + * Emphasize + */ + +em { color: $base-em-color; } + +/* + * Insert + */ + +ins { + background: $base-ins-background; + color: $base-ins-color; + text-decoration: none; +} + +/* + * Mark + */ + +mark { + background: $base-mark-background; + color: $base-mark-color; +} + +/* + * Quote + */ + +q { font-style: $base-quote-font-style; } + +/* + * Add the correct font size in all browsers. + */ + +small { font-size: $base-small-font-size; } + +/* + * Prevents `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { top: -0.5em; } +sub { bottom: -0.25em; } + + +/* Embedded content + ========================================================================== */ + +/* + * Remove the gap between embedded content and the bottom of their containers. + */ + +audio, +canvas, +iframe, +img, +svg, +video { vertical-align: middle; } + +/* + * Responsiveness + * 1. Set a maximum width + * 2. Auto scale the height. Only needed if `height` attribute is present + * 2. Corrects `max-width` behavior if padding and border are used + */ + +audio, +canvas, +img, +video { + /* 1 */ + max-width: 100%; + /* 2 */ + height: auto; + /* 3 */ + box-sizing: border-box; +} + +/* + * Hide the overflow in IE. + */ + +svg:not(:root) { overflow: hidden; } + + +/* Block elements + ========================================================================== */ + +/* + * Margins + */ + +p, +ul, +ol, +dl, +pre, +address, +fieldset, +figure { margin: 0 0 $base-margin-vertical 0; } + +/* Add margin if adjacent element */ +* + p, +* + ul, +* + ol, +* + dl, +* + pre, +* + address, +* + fieldset, +* + figure { margin-top: $base-margin-vertical; } + + +/* Headings + ========================================================================== */ + +h1, .uk-h1, +h2, .uk-h2, +h3, .uk-h3, +h4, .uk-h4, +h5, .uk-h5, +h6, .uk-h6 { + margin: 0 0 $base-margin-vertical 0; + font-family: $base-heading-font-family; + font-weight: $base-heading-font-weight; + color: $base-heading-color; + text-transform: $base-heading-text-transform; + @if(mixin-exists(hook-base-heading)) {@include hook-base-heading();} +} + +/* Add margin if adjacent element */ +* + h1, * + .uk-h1, +* + h2, * + .uk-h2, +* + h3, * + .uk-h3, +* + h4, * + .uk-h4, +* + h5, * + .uk-h5, +* + h6, * + .uk-h6 { margin-top: $base-heading-margin-top; } + +/* + * Sizes + */ + +h1, .uk-h1 { + font-size: $base-h1-font-size; + line-height: $base-h1-line-height; + @if(mixin-exists(hook-base-h1)) {@include hook-base-h1();} +} + +h2, .uk-h2 { + font-size: $base-h2-font-size; + line-height: $base-h2-line-height; + @if(mixin-exists(hook-base-h2)) {@include hook-base-h2();} +} + +h3, .uk-h3 { + font-size: $base-h3-font-size; + line-height: $base-h3-line-height; + @if(mixin-exists(hook-base-h3)) {@include hook-base-h3();} +} + +h4, .uk-h4 { + font-size: $base-h4-font-size; + line-height: $base-h4-line-height; + @if(mixin-exists(hook-base-h4)) {@include hook-base-h4();} +} + +h5, .uk-h5 { + font-size: $base-h5-font-size; + line-height: $base-h5-line-height; + @if(mixin-exists(hook-base-h5)) {@include hook-base-h5();} +} + +h6, .uk-h6 { + font-size: $base-h6-font-size; + line-height: $base-h6-line-height; + @if(mixin-exists(hook-base-h6)) {@include hook-base-h6();} +} + + +/* Lists + ========================================================================== */ + +ul, +ol { padding-left: $base-list-padding-left; } + +/* + * Reset margin for nested lists + */ + +ul > li > ul, +ul > li > ol, +ol > li > ol, +ol > li > ul { margin: 0; } + + +/* Description lists + ========================================================================== */ + +dt { font-weight: bold; } +dd { margin-left: 0; } + + +/* Horizontal rules + ========================================================================== */ + +/* + * 1. Add the correct box sizing and height in Firefox. + * 2. Show the overflow in Edge and IE. + * 3. Add the correct text-align in Edge and IE. + * 4. Style + */ + +hr, .uk-hr { + /* 1 */ + box-sizing: content-box; + height: 0; + /* 2 */ + overflow: visible; + /* 3 */ + text-align: inherit; + /* 4 */ + margin: 0 0 $base-hr-margin-vertical 0; + border: 0; + border-top: $base-hr-border-width solid $base-hr-border; + @if(mixin-exists(hook-base-hr)) {@include hook-base-hr();} +} + +/* Add margin if adjacent element */ +* + hr, +* + .uk-hr { margin-top: $base-hr-margin-vertical } + + +/* Address + ========================================================================== */ + +address { font-style: normal; } + + +/* Blockquotes + ========================================================================== */ + +blockquote { + margin: 0 0 $base-blockquote-margin-vertical 0; + font-size: $base-blockquote-font-size; + line-height: $base-blockquote-line-height; + font-style: $base-blockquote-font-style; + @if(mixin-exists(hook-base-blockquote)) {@include hook-base-blockquote();} +} + +/* Add margin if adjacent element */ +* + blockquote { margin-top: $base-blockquote-margin-vertical; } + +/* + * Content + */ + +blockquote p:last-of-type { margin-bottom: 0; } + +blockquote footer { + margin-top: $base-blockquote-footer-margin-top; + font-size: $base-blockquote-footer-font-size; + line-height: $base-blockquote-footer-line-height; + @if(mixin-exists(hook-base-blockquote-footer)) {@include hook-base-blockquote-footer();} +} + + +/* Preformatted text + ========================================================================== */ + +/* + * 1. Contain overflow in all browsers. + */ + +pre { + font: $base-pre-font-size unquote("/") $base-pre-line-height $base-pre-font-family; + color: $base-pre-color; + -moz-tab-size: 4; + tab-size: 4; + /* 1 */ + overflow: auto; + @if(mixin-exists(hook-base-pre)) {@include hook-base-pre();} +} + +pre code { font-family: $base-pre-font-family; } + + +/* Selection pseudo-element + ========================================================================== */ + +::-moz-selection { + background: $base-selection-background; + color: $base-selection-color; + text-shadow: none; +} + +::selection { + background: $base-selection-background; + color: $base-selection-color; + text-shadow: none; +} + + +/* HTML5 elements + ========================================================================== */ + +/* + * 1. Add the correct display in Edge, IE 10+, and Firefox. + * 2. Add the correct display in IE. + */ + +details, /* 1 */ +main { /* 2 */ + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { display: list-item; } + +/* + * Add the correct display in IE. + */ + +template { display: none; } + + +/* Iframe + ========================================================================== */ + +iframe { border: 0; } + + +/* Prevent the 300ms delay for touchscreen interactions + ========================================================================== */ + +/* + * Most browsers prevent the 300ms delay automatically for sites that use the `width=device-width` property. + * For Safari on iOS 9.3+, IE 11 and Edge on desktops and IE 11 on Windows Phone 8.1 it must be applied manually. + */ + +a, +area, +button, +input, +label, +select, +summary, +textarea { touch-action: manipulation; } + + +/* Pass media breakpoints to JS + ========================================================================== */ + +/* + * Breakpoints + */ + +.var-media-s::before { content: '#{$breakpoint-small}'; } +.var-media-m::before { content: '#{$breakpoint-medium}'; } +.var-media-l::before { content: '#{$breakpoint-large}'; } +.var-media-xl::before { content: '#{$breakpoint-xlarge}'; } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-base-misc)) {@include hook-base-misc();} + +// @mixin hook-base-body(){} +// @mixin hook-base-link(){} +// @mixin hook-base-link-hover(){} +// @mixin hook-base-code(){} +// @mixin hook-base-heading(){} +// @mixin hook-base-h1(){} +// @mixin hook-base-h2(){} +// @mixin hook-base-h3(){} +// @mixin hook-base-h4(){} +// @mixin hook-base-h5(){} +// @mixin hook-base-h6(){} +// @mixin hook-base-hr(){} +// @mixin hook-base-blockquote(){} +// @mixin hook-base-blockquote-footer(){} +// @mixin hook-base-pre(){} +// @mixin hook-base-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-base-color: $inverse-global-color !default; +$inverse-base-link-color: $inverse-global-emphasis-color !default; +$inverse-base-link-hover-color: $inverse-global-emphasis-color !default; +$inverse-base-code-color: $inverse-global-color !default; +$inverse-base-em-color: $inverse-global-emphasis-color !default; +$inverse-base-heading-color: $inverse-global-emphasis-color !default; +$inverse-base-hr-border: $inverse-global-border !default; + + + +// @mixin hook-inverse-base-link(){} +// @mixin hook-inverse-base-link-hover(){} +// @mixin hook-inverse-base-code(){} +// @mixin hook-inverse-base-heading(){} +// @mixin hook-inverse-base-h1(){} +// @mixin hook-inverse-base-h2(){} +// @mixin hook-inverse-base-h3(){} +// @mixin hook-inverse-base-h4(){} +// @mixin hook-inverse-base-h5(){} +// @mixin hook-inverse-base-h6(){} +// @mixin hook-inverse-base-blockquote(){} +// @mixin hook-inverse-base-blockquote-footer(){} +// @mixin hook-inverse-base-hr(){} diff --git a/_sass/uikit/components/breadcrumb.scss b/_sass/uikit/components/breadcrumb.scss new file mode 100644 index 00000000..1f4ca502 --- /dev/null +++ b/_sass/uikit/components/breadcrumb.scss @@ -0,0 +1,122 @@ +// Name: Breadcrumb +// Description: Component to create a breadcrumb navigation +// +// Component: `uk-breadcrumb` +// +// States: `uk-disabled` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$breadcrumb-item-font-size: $global-small-font-size !default; +$breadcrumb-item-color: $global-muted-color !default; +$breadcrumb-item-hover-color: $global-color !default; +$breadcrumb-item-hover-text-decoration: none !default; +$breadcrumb-item-active-color: $global-color !default; + +$breadcrumb-divider: "/" !default; +$breadcrumb-divider-margin-horizontal: 20px !default; +$breadcrumb-divider-color: $global-muted-color !default; + + +/* ======================================================================== + Component: Breadcrumb + ========================================================================== */ + +/* + * 1. Allow items to wrap into the next line + * 2. Reset list + */ + +.uk-breadcrumb { + display: flex; + /* 1 */ + flex-wrap: wrap; + /* 2 */ + padding: 0; + list-style: none; + @if(mixin-exists(hook-breadcrumb)) {@include hook-breadcrumb();} +} + +/* + * Space is allocated solely based on content dimensions: 0 0 auto + */ + +.uk-breadcrumb > * { flex: none; } + + +/* Items + ========================================================================== */ + +.uk-breadcrumb > * > * { + display: inline-block; + font-size: $breadcrumb-item-font-size; + color: $breadcrumb-item-color; + @if(mixin-exists(hook-breadcrumb-item)) {@include hook-breadcrumb-item();} +} + +/* Hover + Focus */ +.uk-breadcrumb > * > :hover, +.uk-breadcrumb > * > :focus { + color: $breadcrumb-item-hover-color; + text-decoration: $breadcrumb-item-hover-text-decoration; + @if(mixin-exists(hook-breadcrumb-item-hover)) {@include hook-breadcrumb-item-hover();} +} + +/* Disabled */ +.uk-breadcrumb > .uk-disabled > * { + @if(mixin-exists(hook-breadcrumb-item-disabled)) {@include hook-breadcrumb-item-disabled();} +} + +/* Active */ +.uk-breadcrumb > :last-child > * { + color: $breadcrumb-item-active-color; + @if(mixin-exists(hook-breadcrumb-item-active)) {@include hook-breadcrumb-item-active();} +} + +/* + * Divider + * `nth-child` makes it also work without JS if it's only one row + */ + +.uk-breadcrumb > :nth-child(n+2):not(.uk-first-column)::before { + content: $breadcrumb-divider; + display: inline-block; + margin: 0 $breadcrumb-divider-margin-horizontal; + color: $breadcrumb-divider-color; + @if(mixin-exists(hook-breadcrumb-divider)) {@include hook-breadcrumb-divider();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-breadcrumb-misc)) {@include hook-breadcrumb-misc();} + +// @mixin hook-breadcrumb(){} +// @mixin hook-breadcrumb-item(){} +// @mixin hook-breadcrumb-item-hover(){} +// @mixin hook-breadcrumb-item-disabled(){} +// @mixin hook-breadcrumb-item-active(){} +// @mixin hook-breadcrumb-divider(){} +// @mixin hook-breadcrumb-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-breadcrumb-item-color: $inverse-global-muted-color !default; +$inverse-breadcrumb-item-hover-color: $inverse-global-color !default; +$inverse-breadcrumb-item-active-color: $inverse-global-color !default; +$inverse-breadcrumb-divider-color: $inverse-global-muted-color !default; + + + +// @mixin hook-inverse-breadcrumb-item(){} +// @mixin hook-inverse-breadcrumb-item-hover(){} +// @mixin hook-inverse-breadcrumb-item-disabled(){} +// @mixin hook-inverse-breadcrumb-item-active(){} +// @mixin hook-inverse-breadcrumb-divider(){} diff --git a/_sass/uikit/components/button.scss b/_sass/uikit/components/button.scss new file mode 100644 index 00000000..f65e1c22 --- /dev/null +++ b/_sass/uikit/components/button.scss @@ -0,0 +1,451 @@ +// Name: Button +// Description: Styles for buttons +// +// Component: `uk-button` +// +// Sub-objects: `uk-button-group` +// +// Modifiers: `uk-button-default` +// `uk-button-primary` +// `uk-button-secondary` +// `uk-button-danger` +// `uk-button-text` +// `uk-button-link` +// `uk-button-small` +// `uk-button-large` +// +// States: `uk-active` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$button-line-height: $global-control-height !default; +$button-small-line-height: $global-control-small-height !default; +$button-large-line-height: $global-control-large-height !default; + +$button-font-size: $global-font-size !default; +$button-small-font-size: $global-small-font-size !default; +$button-large-font-size: $global-medium-font-size !default; + +$button-padding-horizontal: $global-gutter !default; +$button-small-padding-horizontal: $global-small-gutter !default; +$button-large-padding-horizontal: $global-medium-gutter !default; + +$button-default-background: $global-muted-background !default; +$button-default-color: $global-emphasis-color !default; +$button-default-hover-background: darken($button-default-background, 5%) !default; +$button-default-hover-color: $global-emphasis-color !default; +$button-default-active-background: darken($button-default-background, 10%) !default; +$button-default-active-color: $global-emphasis-color !default; + +$button-primary-background: $global-primary-background !default; +$button-primary-color: $global-inverse-color !default; +$button-primary-hover-background: darken($button-primary-background, 5%) !default; +$button-primary-hover-color: $global-inverse-color !default; +$button-primary-active-background: darken($button-primary-background, 10%) !default; +$button-primary-active-color: $global-inverse-color !default; + +$button-secondary-background: $global-secondary-background !default; +$button-secondary-color: $global-inverse-color !default; +$button-secondary-hover-background: darken($button-secondary-background, 5%) !default; +$button-secondary-hover-color: $global-inverse-color !default; +$button-secondary-active-background: darken($button-secondary-background, 10%) !default; +$button-secondary-active-color: $global-inverse-color !default; + +$button-danger-background: $global-danger-background !default; +$button-danger-color: $global-inverse-color !default; +$button-danger-hover-background: darken($button-danger-background, 5%) !default; +$button-danger-hover-color: $global-inverse-color !default; +$button-danger-active-background: darken($button-danger-background, 10%) !default; +$button-danger-active-color: $global-inverse-color !default; + +$button-disabled-background: $global-muted-background !default; +$button-disabled-color: $global-muted-color !default; + +$button-text-line-height: $global-line-height !default; +$button-text-color: $global-muted-color !default; +$button-text-hover-color: $global-color !default; +$button-text-disabled-color: $global-muted-color !default; + +$button-link-line-height: $global-line-height !default; +$button-link-color: $global-link-color !default; +$button-link-hover-color: $global-link-hover-color !default; +$button-link-hover-text-decoration: underline !default; +$button-link-disabled-color: $global-muted-color !default; + + +/* ======================================================================== + Component: Button + ========================================================================== */ + +/* + * 1. Remove margins in Chrome, Safari and Opera. + * 2. Remove borders for `button`. + * 3. Remove border-radius in Chrome. + * 4. Address `overflow` set to `hidden` in IE. + * 5. Correct `font` properties and `color` not being inherited for `button`. + * 6. Remove the inheritance of text transform in Edge, Firefox, and IE. + * 7. Style + * 8. `line-height` is used to create a height because it also centers the text vertically for `a` elements. + * Better would be to use height and flexbox to center the text vertically but flexbox doesn't work in Firefox on `button` elements. + * 9. Align text if button has a width + * 10. Required for `a`. + */ + +.uk-button { + /* 1 */ + margin: 0; + /* 2 */ + border: none; + /* 3 */ + border-radius: 0; + /* 4 */ + overflow: visible; + /* 5 */ + font: inherit; + color: inherit; + /* 6 */ + text-transform: none; + /* 7 */ + display: inline-block; + box-sizing: border-box; + padding: 0 $button-padding-horizontal; + vertical-align: middle; + font-size: $button-font-size; + /* 8 */ + line-height: $button-line-height; + /* 9 */ + text-align: center; + /* 10 */ + text-decoration: none; + @if(mixin-exists(hook-button)) {@include hook-button();} +} + +.uk-button:not(:disabled) { cursor: pointer; } + +/* + * Remove the inner border and padding in Firefox. + */ + +.uk-button::-moz-focus-inner { + border: 0; + padding: 0; +} + +/* Hover */ +.uk-button:hover { + /* 8 */ + text-decoration: none; + @if(mixin-exists(hook-button-hover)) {@include hook-button-hover();} +} + +/* Focus */ +.uk-button:focus { + outline: none; + @if(mixin-exists(hook-button-focus)) {@include hook-button-focus();} +} + +/* OnClick + Active */ +.uk-button:active, +.uk-button.uk-active { + @if(mixin-exists(hook-button-active)) {@include hook-button-active();} +} + + +/* Style modifiers + ========================================================================== */ + +/* + * Default + */ + +.uk-button-default { + background-color: $button-default-background; + color: $button-default-color; + @if(mixin-exists(hook-button-default)) {@include hook-button-default();} +} + +/* Hover + Focus */ +.uk-button-default:hover, +.uk-button-default:focus { + background-color: $button-default-hover-background; + color: $button-default-hover-color; + @if(mixin-exists(hook-button-default-hover)) {@include hook-button-default-hover();} +} + +/* OnClick + Active */ +.uk-button-default:active, +.uk-button-default.uk-active { + background-color: $button-default-active-background; + color: $button-default-active-color; + @if(mixin-exists(hook-button-default-active)) {@include hook-button-default-active();} +} + +/* + * Primary + */ + +.uk-button-primary { + background-color: $button-primary-background; + color: $button-primary-color; + @if(mixin-exists(hook-button-primary)) {@include hook-button-primary();} +} + +/* Hover + Focus */ +.uk-button-primary:hover, +.uk-button-primary:focus { + background-color: $button-primary-hover-background; + color: $button-primary-hover-color; + @if(mixin-exists(hook-button-primary-hover)) {@include hook-button-primary-hover();} +} + +/* OnClick + Active */ +.uk-button-primary:active, +.uk-button-primary.uk-active { + background-color: $button-primary-active-background; + color: $button-primary-active-color; + @if(mixin-exists(hook-button-primary-active)) {@include hook-button-primary-active();} +} + +/* + * Secondary + */ + +.uk-button-secondary { + background-color: $button-secondary-background; + color: $button-secondary-color; + @if(mixin-exists(hook-button-secondary)) {@include hook-button-secondary();} +} + +/* Hover + Focus */ +.uk-button-secondary:hover, +.uk-button-secondary:focus { + background-color: $button-secondary-hover-background; + color: $button-secondary-hover-color; + @if(mixin-exists(hook-button-secondary-hover)) {@include hook-button-secondary-hover();} +} + +/* OnClick + Active */ +.uk-button-secondary:active, +.uk-button-secondary.uk-active { + background-color: $button-secondary-active-background; + color: $button-secondary-active-color; + @if(mixin-exists(hook-button-secondary-active)) {@include hook-button-secondary-active();} +} + +/* + * Danger + */ + +.uk-button-danger { + background-color: $button-danger-background; + color: $button-danger-color; + @if(mixin-exists(hook-button-danger)) {@include hook-button-danger();} +} + +/* Hover + Focus */ +.uk-button-danger:hover, +.uk-button-danger:focus { + background-color: $button-danger-hover-background; + color: $button-danger-hover-color; + @if(mixin-exists(hook-button-danger-hover)) {@include hook-button-danger-hover();} +} + +/* OnClick + Active */ +.uk-button-danger:active, +.uk-button-danger.uk-active { + background-color: $button-danger-active-background; + color: $button-danger-active-color; + @if(mixin-exists(hook-button-danger-active)) {@include hook-button-danger-active();} +} + +/* + * Disabled + * The same for all style modifiers + */ + +.uk-button-default:disabled, +.uk-button-primary:disabled, +.uk-button-secondary:disabled, +.uk-button-danger:disabled { + background-color: $button-disabled-background; + color: $button-disabled-color; + @if(mixin-exists(hook-button-disabled)) {@include hook-button-disabled();} +} + + +/* Size modifiers + ========================================================================== */ + +.uk-button-small { + padding: 0 $button-small-padding-horizontal; + line-height: $button-small-line-height; + font-size: $button-small-font-size; + @if(mixin-exists(hook-button-small)) {@include hook-button-small();} +} + +.uk-button-large { + padding: 0 $button-large-padding-horizontal; + line-height: $button-large-line-height; + font-size: $button-large-font-size; + @if(mixin-exists(hook-button-large)) {@include hook-button-large();} +} + + +/* Text modifiers + ========================================================================== */ + +/* + * Text + * 1. Reset + * 2. Style + */ + +.uk-button-text { + /* 1 */ + padding: 0; + line-height: $button-text-line-height; + background: none; + /* 2 */ + color: $button-text-color; + @if(mixin-exists(hook-button-text)) {@include hook-button-text();} +} + +/* Hover + Focus */ +.uk-button-text:hover, +.uk-button-text:focus { + color: $button-text-hover-color; + @if(mixin-exists(hook-button-text-hover)) {@include hook-button-text-hover();} +} + +/* Disabled */ +.uk-button-text:disabled { + color: $button-text-disabled-color; + @if(mixin-exists(hook-button-text-disabled)) {@include hook-button-text-disabled();} +} + +/* + * Link + * 1. Reset + * 2. Style + */ + +.uk-button-link { + /* 1 */ + padding: 0; + line-height: $button-link-line-height; + background: none; + /* 2 */ + color: $button-link-color; + @if(mixin-exists(hook-button-link)) {@include hook-button-link();} +} + +/* Hover + Focus */ +.uk-button-link:hover, +.uk-button-link:focus { + color: $button-link-hover-color; + text-decoration: $button-link-hover-text-decoration; +} + +/* Disabled */ +.uk-button-link:disabled { + color: $button-link-disabled-color; + text-decoration: none; +} + + +/* Group + ========================================================================== */ + +/* + * 1. Using `flex` instead of `inline-block` to prevent whitespace betweent child elements + * 2. Behave like button + * 3. Create position context + */ + +.uk-button-group { + /* 1 */ + display: inline-flex; + /* 2 */ + vertical-align: middle; + /* 3 */ + position: relative; +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-button-misc)) {@include hook-button-misc();} + +// @mixin hook-button(){} +// @mixin hook-button-hover(){} +// @mixin hook-button-focus(){} +// @mixin hook-button-active(){} +// @mixin hook-button-default(){} +// @mixin hook-button-default-hover(){} +// @mixin hook-button-default-active(){} +// @mixin hook-button-primary(){} +// @mixin hook-button-primary-hover(){} +// @mixin hook-button-primary-active(){} +// @mixin hook-button-secondary(){} +// @mixin hook-button-secondary-hover(){} +// @mixin hook-button-secondary-active(){} +// @mixin hook-button-danger(){} +// @mixin hook-button-danger-hover(){} +// @mixin hook-button-danger-active(){} +// @mixin hook-button-disabled(){} +// @mixin hook-button-small(){} +// @mixin hook-button-large(){} +// @mixin hook-button-text(){} +// @mixin hook-button-text-hover(){} +// @mixin hook-button-text-disabled(){} +// @mixin hook-button-link(){} +// @mixin hook-button-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-button-default-background: $inverse-global-primary-background !default; +$inverse-button-default-color: $inverse-global-inverse-color !default; +$inverse-button-default-hover-background: darken($inverse-button-default-background, 5%) !default; +$inverse-button-default-hover-color: $inverse-global-inverse-color !default; +$inverse-button-default-active-background: darken($inverse-button-default-background, 10%) !default; +$inverse-button-default-active-color: $inverse-global-inverse-color !default; +$inverse-button-primary-background: $inverse-global-primary-background !default; +$inverse-button-primary-color: $inverse-global-inverse-color !default; +$inverse-button-primary-hover-background: darken($inverse-button-primary-background, 5%) !default; +$inverse-button-primary-hover-color: $inverse-global-inverse-color !default; +$inverse-button-primary-active-background: darken($inverse-button-primary-background, 10%) !default; +$inverse-button-primary-active-color: $inverse-global-inverse-color !default; +$inverse-button-secondary-background: $inverse-global-primary-background !default; +$inverse-button-secondary-color: $inverse-global-inverse-color !default; +$inverse-button-secondary-hover-background: darken($inverse-button-secondary-background, 5%) !default; +$inverse-button-secondary-hover-color: $inverse-global-inverse-color !default; +$inverse-button-secondary-active-background: darken($inverse-button-secondary-background, 10%) !default; +$inverse-button-secondary-active-color: $inverse-global-inverse-color !default; +$inverse-button-text-color: $inverse-global-muted-color !default; +$inverse-button-text-hover-color: $inverse-global-color !default; +$inverse-button-text-disabled-color: $inverse-global-muted-color !default; +$inverse-button-link-color: $inverse-global-muted-color !default; +$inverse-button-link-hover-color: $inverse-global-color !default; + + + +// @mixin hook-inverse-button-default(){} +// @mixin hook-inverse-button-default-hover(){} +// @mixin hook-inverse-button-default-active(){} +// @mixin hook-inverse-button-primary(){} +// @mixin hook-inverse-button-primary-hover(){} +// @mixin hook-inverse-button-primary-active(){} +// @mixin hook-inverse-button-secondary(){} +// @mixin hook-inverse-button-secondary-hover(){} +// @mixin hook-inverse-button-secondary-active(){} +// @mixin hook-inverse-button-text(){} +// @mixin hook-inverse-button-text-hover(){} +// @mixin hook-inverse-button-text-disabled(){} +// @mixin hook-inverse-button-link(){} diff --git a/_sass/uikit/components/card.scss b/_sass/uikit/components/card.scss new file mode 100644 index 00000000..e332a03f --- /dev/null +++ b/_sass/uikit/components/card.scss @@ -0,0 +1,363 @@ +// Name: Card +// Description: Component to create boxed content containers +// +// Component: `uk-card` +// +// Sub-objects: `uk-card-body` +// `uk-card-header` +// `uk-card-footer` +// `uk-card-media-*` +// `uk-card-title` +// `uk-card-badge` +// +// Modifiers: `uk-card-hover` +// `uk-card-default` +// `uk-card-primary` +// `uk-card-secondary` +// `uk-card-small` +// `uk-card-large` +// +// Uses: `uk-grid-stack` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$card-body-padding-horizontal: $global-gutter !default; +$card-body-padding-vertical: $global-gutter !default; + +$card-body-padding-horizontal-l: $global-medium-gutter !default; +$card-body-padding-vertical-l: $global-medium-gutter !default; + +$card-header-padding-horizontal: $global-gutter !default; +$card-header-padding-vertical: round($global-gutter / 2) !default; + +$card-header-padding-horizontal-l: $global-medium-gutter !default; +$card-header-padding-vertical-l: round($global-medium-gutter / 2) !default; + +$card-footer-padding-horizontal: $global-gutter !default; +$card-footer-padding-vertical: ($global-gutter / 2) !default; + +$card-footer-padding-horizontal-l: $global-medium-gutter !default; +$card-footer-padding-vertical-l: round($global-medium-gutter / 2) !default; + +$card-title-font-size: $global-large-font-size !default; +$card-title-line-height: 1.4 !default; + +$card-badge-top: $global-gutter !default; +$card-badge-right: $card-badge-top !default; + +$card-hover-background: $global-muted-background !default; + +$card-default-background: $global-muted-background !default; +$card-default-color: $global-color !default; +$card-default-title-color: $global-emphasis-color !default; +$card-default-hover-background: darken($card-default-background, 5%) !default; + +$card-primary-background: $global-primary-background !default; +$card-primary-color: $global-inverse-color !default; +$card-primary-title-color: $card-primary-color !default; +$card-primary-hover-background: darken($card-primary-background, 5%) !default; +$card-primary-color-mode: light !default; + +$card-secondary-background: $global-secondary-background !default; +$card-secondary-color: $global-inverse-color !default; +$card-secondary-title-color: $card-secondary-color !default; +$card-secondary-hover-background: darken($card-secondary-background, 5%) !default; +$card-secondary-color-mode: light !default; + +$card-small-body-padding-horizontal: $global-margin !default; +$card-small-body-padding-vertical: $global-margin !default; +$card-small-header-padding-horizontal: $global-margin !default; +$card-small-header-padding-vertical: round($global-margin / 1.5) !default; +$card-small-footer-padding-horizontal: $global-margin !default; +$card-small-footer-padding-vertical: round($global-margin / 1.5) !default; + +$card-large-body-padding-horizontal-l: $global-large-gutter !default; +$card-large-body-padding-vertical-l: $global-large-gutter !default; +$card-large-header-padding-horizontal-l: $global-large-gutter !default; +$card-large-header-padding-vertical-l: round($global-large-gutter / 2) !default; +$card-large-footer-padding-horizontal-l: $global-large-gutter !default; +$card-large-footer-padding-vertical-l: round($global-large-gutter / 2) !default; + + +/* ======================================================================== + Component: Card + ========================================================================== */ + +.uk-card { + position: relative; + box-sizing: border-box; + @if(mixin-exists(hook-card)) {@include hook-card();} +} + + +/* Sections + ========================================================================== */ + +.uk-card-body { + padding: $card-body-padding-vertical $card-body-padding-horizontal; + @if(mixin-exists(hook-card-body)) {@include hook-card-body();} +} + +.uk-card-header { + padding: $card-header-padding-vertical $card-header-padding-horizontal; + @if(mixin-exists(hook-card-header)) {@include hook-card-header();} +} + +.uk-card-footer { + padding: $card-footer-padding-vertical $card-footer-padding-horizontal; + @if(mixin-exists(hook-card-footer)) {@include hook-card-footer();} +} + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + .uk-card-body { padding: $card-body-padding-vertical-l $card-body-padding-horizontal-l; } + + .uk-card-header { padding: $card-header-padding-vertical-l $card-header-padding-horizontal-l; } + + .uk-card-footer { padding: $card-footer-padding-vertical-l $card-footer-padding-horizontal-l; } + +} + +/* + * Micro clearfix + */ + +.uk-card-body::before, +.uk-card-body::after, +.uk-card-header::before, +.uk-card-header::after, +.uk-card-footer::before, +.uk-card-footer::after { + content: ""; + display: table; +} + +.uk-card-body::after, +.uk-card-header::after, +.uk-card-footer::after { clear: both; } + +/* + * Remove margin from the last-child + */ + +.uk-card-body > :last-child, +.uk-card-header > :last-child, +.uk-card-footer > :last-child { margin-bottom: 0; } + + +/* Media + ========================================================================== */ + +/* + * Reserved alignment modifier to style the media element, e.g. with `border-radius` + * Implemented by the theme + */ + +[class*='uk-card-media'] { + @if(mixin-exists(hook-card-media)) {@include hook-card-media();} +} + +.uk-card-media-top, +.uk-grid-stack > .uk-card-media-left, +.uk-grid-stack > .uk-card-media-right { + @if(mixin-exists(hook-card-media-top)) {@include hook-card-media-top();} +} + +.uk-card-media-bottom { + @if(mixin-exists(hook-card-media-bottom)) {@include hook-card-media-bottom();} +} + +:not(.uk-grid-stack) > .uk-card-media-left { + @if(mixin-exists(hook-card-media-left)) {@include hook-card-media-left();} +} + +:not(.uk-grid-stack) > .uk-card-media-right { + @if(mixin-exists(hook-card-media-right)) {@include hook-card-media-right();} +} + + +/* Title + ========================================================================== */ + +.uk-card-title { + font-size: $card-title-font-size; + line-height: $card-title-line-height; + @if(mixin-exists(hook-card-title)) {@include hook-card-title();} +} + + +/* Badge + ========================================================================== */ + +.uk-card-badge { + position: absolute; + top: $card-badge-top; + right: $card-badge-right; + z-index: 1; + @if(mixin-exists(hook-card-badge)) {@include hook-card-badge();} +} + +/* + * Remove margin from adjacent element + */ + +.uk-card-badge:first-child + * { margin-top: 0; } + + +/* Hover modifier + ========================================================================== */ + +.uk-card-hover:not(.uk-card-default):not(.uk-card-primary):not(.uk-card-secondary):hover { + background: $card-hover-background; + @if(mixin-exists(hook-card-hover)) {@include hook-card-hover();} +} + + +/* Style modifiers + ========================================================================== */ + +/* + * Default + * Note: Header and Footer are only implemented for the default style + */ + +.uk-card-default { + background: $card-default-background; + color: $card-default-color; + @if(mixin-exists(hook-card-default)) {@include hook-card-default();} +} + +.uk-card-default .uk-card-title { + color: $card-default-title-color; + @if(mixin-exists(hook-card-default-title)) {@include hook-card-default-title();} +} + +.uk-card-default.uk-card-hover:hover { + background-color: $card-default-hover-background; + @if(mixin-exists(hook-card-default-hover)) {@include hook-card-default-hover();} +} + +.uk-card-default .uk-card-header { + @if(mixin-exists(hook-card-default-header)) {@include hook-card-default-header();} +} + +.uk-card-default .uk-card-footer { + @if(mixin-exists(hook-card-default-footer)) {@include hook-card-default-footer();} +} + +/* + * Primary + */ + +.uk-card-primary { + background: $card-primary-background; + color: $card-primary-color; + @if(mixin-exists(hook-card-primary)) {@include hook-card-primary();} +} + +.uk-card-primary .uk-card-title { + color: $card-primary-title-color; + @if(mixin-exists(hook-card-primary-title)) {@include hook-card-primary-title();} +} + +.uk-card-primary.uk-card-hover:hover { + background-color: $card-primary-hover-background; + @if(mixin-exists(hook-card-primary-hover)) {@include hook-card-primary-hover();} +} + +// Color Mode +@if ( $card-primary-color-mode == light ) { .uk-card-primary.uk-card-body { @extend .uk-light !optional;} } +@if ( $card-primary-color-mode == light ) { .uk-card-primary > :not([class*='uk-card-media']) { @extend .uk-light !optional;} } +@if ( $card-primary-color-mode == dark ) { .uk-card-primary.uk-card-body { @extend .uk-dark !optional;} } +@if ( $card-primary-color-mode == dark ) { .uk-card-primary > :not([class*='uk-card-media']) { @extend .uk-dark !optional;} } + +/* + * Secondary + */ + +.uk-card-secondary { + background: $card-secondary-background; + color: $card-secondary-color; + @if(mixin-exists(hook-card-secondary)) {@include hook-card-secondary();} +} + +.uk-card-secondary .uk-card-title { + color: $card-secondary-title-color; + @if(mixin-exists(hook-card-secondary-title)) {@include hook-card-secondary-title();} +} + +.uk-card-secondary.uk-card-hover:hover { + background-color: $card-secondary-hover-background; + @if(mixin-exists(hook-card-secondary-hover)) {@include hook-card-secondary-hover();} +} + +// Color Mode +@if ( $card-secondary-color-mode == light ) { .uk-card-secondary.uk-card-body { @extend .uk-light !optional;} } +@if ( $card-secondary-color-mode == light ) { .uk-card-secondary > :not([class*='uk-card-media']) { @extend .uk-light !optional;} } +@if ( $card-secondary-color-mode == dark ) { .uk-card-secondary.uk-card-body { @extend .uk-dark !optional;} } +@if ( $card-secondary-color-mode == dark ) { .uk-card-secondary > :not([class*='uk-card-media']) { @extend .uk-dark !optional;} } + + +/* Size modifier + ========================================================================== */ + +/* + * Small + */ + +.uk-card-small.uk-card-body, +.uk-card-small .uk-card-body { padding: $card-small-body-padding-vertical $card-small-body-padding-horizontal; } + +.uk-card-small .uk-card-header { padding: $card-small-header-padding-vertical $card-small-header-padding-horizontal; } +.uk-card-small .uk-card-footer { padding: $card-small-footer-padding-vertical $card-small-footer-padding-horizontal; } + +/* + * Large + */ + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + .uk-card-large.uk-card-body, + .uk-card-large .uk-card-body { padding: $card-large-body-padding-vertical-l $card-large-body-padding-horizontal-l; } + + .uk-card-large .uk-card-header { padding: $card-large-header-padding-vertical-l $card-large-header-padding-horizontal-l; } + .uk-card-large .uk-card-footer { padding: $card-large-footer-padding-vertical-l $card-large-footer-padding-horizontal-l; } + +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-card-misc)) {@include hook-card-misc();} + +// @mixin hook-card(){} +// @mixin hook-card-body(){} +// @mixin hook-card-header(){} +// @mixin hook-card-footer(){} +// @mixin hook-card-media(){} +// @mixin hook-card-media-top(){} +// @mixin hook-card-media-bottom(){} +// @mixin hook-card-media-left(){} +// @mixin hook-card-media-right(){} +// @mixin hook-card-title(){} +// @mixin hook-card-badge(){} +// @mixin hook-card-hover(){} +// @mixin hook-card-default(){} +// @mixin hook-card-default-title(){} +// @mixin hook-card-default-hover(){} +// @mixin hook-card-default-header(){} +// @mixin hook-card-default-footer(){} +// @mixin hook-card-primary(){} +// @mixin hook-card-primary-title(){} +// @mixin hook-card-primary-hover(){} +// @mixin hook-card-secondary(){} +// @mixin hook-card-secondary-title(){} +// @mixin hook-card-secondary-hover(){} +// @mixin hook-card-misc(){} diff --git a/_sass/uikit/components/close.scss b/_sass/uikit/components/close.scss new file mode 100644 index 00000000..32e27756 --- /dev/null +++ b/_sass/uikit/components/close.scss @@ -0,0 +1,57 @@ +// Name: Close +// Description: Component to create a close button +// +// Component: `uk-close` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$close-color: $global-muted-color !default; +$close-hover-color: $global-color !default; + + +/* ======================================================================== + Component: Close + ========================================================================== */ + +/* + * Adopts `uk-icon` + */ + +.uk-close { + color: $close-color; + @if(mixin-exists(hook-close)) {@include hook-close();} +} + +/* Hover + Focus */ +.uk-close:hover, +.uk-close:focus { + color: $close-hover-color; + outline: none; + @if(mixin-exists(hook-close-hover)) {@include hook-close-hover();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-close-misc)) {@include hook-close-misc();} + +// @mixin hook-close(){} +// @mixin hook-close-hover(){} +// @mixin hook-close-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-close-color: $inverse-global-muted-color !default; +$inverse-close-hover-color: $inverse-global-color !default; + + + +// @mixin hook-inverse-close(){} +// @mixin hook-inverse-close-hover(){} diff --git a/_sass/uikit/components/column.scss b/_sass/uikit/components/column.scss new file mode 100644 index 00000000..54bae26e --- /dev/null +++ b/_sass/uikit/components/column.scss @@ -0,0 +1,138 @@ +// Name: Column +// Description: Utilities for text columns +// +// Component: `uk-column-*` +// +// Sub-objects: `uk-column-span` +// +// Modifiers: `uk-column-divider` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$column-gutter: $global-gutter !default; +$column-gutter-l: $global-medium-gutter !default; + +$column-divider-rule-color: $global-border !default; +$column-divider-rule-width: 1px !default; + + +/* ======================================================================== + Component: Column + ========================================================================== */ + +[class*='uk-column-'] { column-gap: $column-gutter; } + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + [class*='uk-column-'] { column-gap: $column-gutter-l; } + +} + +/* + * Fix image 1px line wrapping into the next column in Chrome + */ + +[class*='uk-column-'] img { transform: translate3d(0,0,0); } + + +/* Divider + ========================================================================== */ + +/* + * 1. Double the column gap + */ + +.uk-column-divider { + column-rule: $column-divider-rule-width solid $column-divider-rule-color; + /* 1 */ + column-gap: ($column-gutter * 2); +} + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + .uk-column-divider { + column-gap: ($column-gutter-l * 2); + } + +} + + +/* Width modifiers + ========================================================================== */ + +.uk-column-1-2 { column-count: 2;} +.uk-column-1-3 { column-count: 3; } +.uk-column-1-4 { column-count: 4; } +.uk-column-1-5 { column-count: 5; } +.uk-column-1-6 { column-count: 6; } + +/* Phone landscape and bigger */ +@media (min-width: $breakpoint-small) { + + .uk-column-1-2\@s { column-count: 2; } + .uk-column-1-3\@s { column-count: 3; } + .uk-column-1-4\@s { column-count: 4; } + .uk-column-1-5\@s { column-count: 5; } + .uk-column-1-6\@s { column-count: 6; } + +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-column-1-2\@m { column-count: 2; } + .uk-column-1-3\@m { column-count: 3; } + .uk-column-1-4\@m { column-count: 4; } + .uk-column-1-5\@m { column-count: 5; } + .uk-column-1-6\@m { column-count: 6; } + +} + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + .uk-column-1-2\@l { column-count: 2; } + .uk-column-1-3\@l { column-count: 3; } + .uk-column-1-4\@l { column-count: 4; } + .uk-column-1-5\@l { column-count: 5; } + .uk-column-1-6\@l { column-count: 6; } + +} + +/* Large screen and bigger */ +@media (min-width: $breakpoint-xlarge) { + + .uk-column-1-2\@xl { column-count: 2; } + .uk-column-1-3\@xl { column-count: 3; } + .uk-column-1-4\@xl { column-count: 4; } + .uk-column-1-5\@xl { column-count: 5; } + .uk-column-1-6\@xl { column-count: 6; } + +} + +/* Make element span across all columns + * Does not work in Firefox yet + ========================================================================== */ + +.uk-column-span { column-span: all; } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-column-misc)) {@include hook-column-misc();} + +// @mixin hook-column-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-column-divider-rule-color: $inverse-global-border !default; + diff --git a/_sass/uikit/components/comment.scss b/_sass/uikit/components/comment.scss new file mode 100644 index 00000000..8583dd8a --- /dev/null +++ b/_sass/uikit/components/comment.scss @@ -0,0 +1,171 @@ +// Name: Comment +// Description: Component to create nested comments +// +// Component: `uk-comment` +// +// Sub-objects: `uk-comment-body` +// `uk-comment-header` +// `uk-comment-title` +// `uk-comment-meta` +// `uk-comment-avatar` +// `uk-comment-list` +// +// Modifier: `uk-comment-primary` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$comment-header-margin-bottom: $global-margin !default; + +$comment-title-font-size: $global-medium-font-size !default; +$comment-title-line-height: 1.4 !default; + +$comment-meta-font-size: $global-small-font-size !default; +$comment-meta-line-height: 1.4 !default; +$comment-meta-color: $global-muted-color !default; + +$comment-list-margin-top: $global-large-margin !default; +$comment-list-padding-left: 30px !default; +$comment-list-padding-left-m: 100px !default; + + +/* ======================================================================== + Component: Comment + ========================================================================== */ + +.uk-comment { + @if(mixin-exists(hook-comment)) {@include hook-comment();} +} + + +/* Sections + ========================================================================== */ + +.uk-comment-body { + @if(mixin-exists(hook-comment-body)) {@include hook-comment-body();} +} + +.uk-comment-header { + margin-bottom: $comment-header-margin-bottom; + @if(mixin-exists(hook-comment-header)) {@include hook-comment-header();} +} + +/* + * Micro clearfix + */ + +.uk-comment-body::before, +.uk-comment-body::after, +.uk-comment-header::before, +.uk-comment-header::after { + content: ""; + display: table; +} + +.uk-comment-body::after, +.uk-comment-header::after { clear: both; } + +/* + * Remove margin from the last-child + */ + +.uk-comment-body > :last-child, +.uk-comment-header > :last-child { margin-bottom: 0; } + + +/* Title + ========================================================================== */ + +.uk-comment-title { + font-size: $comment-title-font-size; + line-height: $comment-title-line-height; + @if(mixin-exists(hook-comment-title)) {@include hook-comment-title();} +} + + +/* Meta + ========================================================================== */ + +.uk-comment-meta { + font-size: $comment-meta-font-size; + line-height: $comment-meta-line-height; + color: $comment-meta-color; + @if(mixin-exists(hook-comment-meta)) {@include hook-comment-meta();} +} + + +/* Avatar + ========================================================================== */ + +.uk-comment-avatar { + @if(mixin-exists(hook-comment-avatar)) {@include hook-comment-avatar();} +} + + +/* List + ========================================================================== */ + +.uk-comment-list { + padding: 0; + list-style: none; +} + +/* Adjacent siblings */ +.uk-comment-list > :nth-child(n+2) { + margin-top: $comment-list-margin-top; + @if(mixin-exists(hook-comment-list-adjacent)) {@include hook-comment-list-adjacent();} +} + +/* + * Sublists + * Note: General sibling selector allows reply block between comment and sublist + */ + +.uk-comment-list .uk-comment ~ ul { + margin: $comment-list-margin-top 0 0 0; + padding-left: $comment-list-padding-left; + list-style: none; + @if(mixin-exists(hook-comment-list-sub)) {@include hook-comment-list-sub();} +} + +/* Tablet and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-comment-list .uk-comment ~ ul { padding-left: $comment-list-padding-left-m; } + +} + +/* Adjacent siblings */ +.uk-comment-list .uk-comment ~ ul > :nth-child(n+2) { + margin-top: $comment-list-margin-top; + @if(mixin-exists(hook-comment-list-sub-adjacent)) {@include hook-comment-list-sub-adjacent();} +} + + +/* Style modifier + ========================================================================== */ + +.uk-comment-primary { + @if(mixin-exists(hook-comment-primary)) {@include hook-comment-primary();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-comment-misc)) {@include hook-comment-misc();} + +// @mixin hook-comment(){} +// @mixin hook-comment-body(){} +// @mixin hook-comment-header(){} +// @mixin hook-comment-title(){} +// @mixin hook-comment-meta(){} +// @mixin hook-comment-avatar(){} +// @mixin hook-comment-list-adjacent(){} +// @mixin hook-comment-list-sub(){} +// @mixin hook-comment-list-sub-adjacent(){} +// @mixin hook-comment-primary(){} +// @mixin hook-comment-misc(){} \ No newline at end of file diff --git a/_sass/uikit/components/container.scss b/_sass/uikit/components/container.scss new file mode 100644 index 00000000..c518d6d7 --- /dev/null +++ b/_sass/uikit/components/container.scss @@ -0,0 +1,106 @@ +// Name: Container +// Description: Component to align and center your site and grid content +// +// Component: `uk-container` +// +// Modifier: `uk-container-small` +// `uk-container-large` +// `uk-container-expand` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$container-max-width: 1200px !default; +$container-small-max-width: 900px !default; +$container-large-max-width: 1600px !default; + +$container-padding-horizontal: 15px !default; +$container-padding-horizontal-s: $global-gutter !default; +$container-padding-horizontal-m: $global-medium-gutter !default; + + +/* ======================================================================== + Component: Container + ========================================================================== */ + +/* + * 1. Box sizing has to be `content-box` so the max-width is always the same and + * unaffected by the padding on different breakpoints. It's important for the size modifiers. + */ + +.uk-container { + box-sizing: content-box; /* 1 */ + max-width: $container-max-width; + margin-left: auto; + margin-right: auto; + padding-left: $container-padding-horizontal; + padding-right: $container-padding-horizontal; +} + +/* Phone landscape and bigger */ +@media (min-width: $breakpoint-small) { + + .uk-container { + padding-left: $container-padding-horizontal-s; + padding-right: $container-padding-horizontal-s; + } + +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-container { + padding-left: $container-padding-horizontal-m; + padding-right: $container-padding-horizontal-m; + } + +} + +/* + * Micro clearfix + */ + +.uk-container::before, +.uk-container::after { + content: ""; + display: table; +} + +.uk-container::after { clear: both; } + +/* + * Remove margin from the last-child + */ + +.uk-container > :last-child { margin-bottom: 0; } + +/* + * Remove padding from nested containers + */ + +.uk-container .uk-container { + padding-left: 0; + padding-right: 0; +} + + +/* Size modifier + ========================================================================== */ + +.uk-container-small { max-width: $container-small-max-width; } + +.uk-container-large { max-width: $container-large-max-width; } + +.uk-container-expand { max-width: none; } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-container-misc)) {@include hook-container-misc();} + +// @mixin hook-container-misc(){} \ No newline at end of file diff --git a/_sass/uikit/components/countdown.scss b/_sass/uikit/components/countdown.scss new file mode 100644 index 00000000..3f53e70c --- /dev/null +++ b/_sass/uikit/components/countdown.scss @@ -0,0 +1,126 @@ +// Name: Countdown +// Description: Component to create countdown timers +// +// Component: `uk-countdown` +// +// Sub-objects: `uk-countdown-number` +// `uk-countdown-separator` +// `uk-countdown-label` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$countdown-item-line-height: 70px !default; + +$countdown-number-font-size: 2rem !default; // 32px +$countdown-number-font-size-s: 4rem !default; // 64px +$countdown-number-font-size-m: 6rem !default; // 96px + +$countdown-separator-font-size: 1rem !default; // 16px +$countdown-separator-font-size-s: 2rem !default; // 32px +$countdown-separator-font-size-m: 3rem !default; // 48px + + +/* ======================================================================== + Component: Countdown + ========================================================================== */ + +.uk-countdown { + @if(mixin-exists(hook-countdown)) {@include hook-countdown();} +} + + +/* Item + ========================================================================== */ + +/* + * 1. Center numbers and separators vertically + */ + +.uk-countdown-number, +.uk-countdown-separator { + /* 1 */ + line-height: $countdown-item-line-height; + @if(mixin-exists(hook-countdown-item)) {@include hook-countdown-item();} +} + + +/* Number + ========================================================================== */ + +.uk-countdown-number { + font-size: $countdown-number-font-size; + @if(mixin-exists(hook-countdown-number)) {@include hook-countdown-number();} +} + +/* Phone landscape and bigger */ +@media (min-width: $breakpoint-small) { + + .uk-countdown-number { font-size: $countdown-number-font-size-s; } + +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-countdown-number { font-size: $countdown-number-font-size-m; } + +} + + +/* Separator + ========================================================================== */ + +.uk-countdown-separator { + font-size: $countdown-separator-font-size; + @if(mixin-exists(hook-countdown-separator)) {@include hook-countdown-separator();} +} + +/* Phone landscape and bigger */ +@media (min-width: $breakpoint-small) { + + .uk-countdown-separator { font-size: $countdown-separator-font-size-s; } + +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-countdown-separator { font-size: $countdown-separator-font-size-m; } + +} + + +/* Label + ========================================================================== */ + +.uk-countdown-label { + @if(mixin-exists(hook-countdown-label)) {@include hook-countdown-label();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-countdown-misc)) {@include hook-countdown-misc();} + +// @mixin hook-countdown(){} +// @mixin hook-countdown-item(){} +// @mixin hook-countdown-number(){} +// @mixin hook-countdown-separator(){} +// @mixin hook-countdown-label(){} +// @mixin hook-countdown-misc(){} + + +// Inverse +// ======================================================================== + + + +// @mixin hook-inverse-countdown-item(){} +// @mixin hook-inverse-countdown-number(){} +// @mixin hook-inverse-countdown-separator(){} +// @mixin hook-inverse-countdown-label(){} diff --git a/_sass/uikit/components/cover.scss b/_sass/uikit/components/cover.scss new file mode 100644 index 00000000..b44a6847 --- /dev/null +++ b/_sass/uikit/components/cover.scss @@ -0,0 +1,57 @@ +// Name: Cover +// Description: Utilities to let embedded content cover their container in a centered position +// +// Component: `uk-cover` +// +// Sub-object: `uk-cover-container` +// +// ======================================================================== + + +/* ======================================================================== + Component: Cover + ========================================================================== */ + +/* + * Works with iframes and embedded content + * 1. Reset responsiveness for embedded content + * 2. Center object + * Note: Percent values on the `top` property only works if this element + * is absolute positioned or if the container has a height + */ + +.uk-cover { + /* 1 */ + max-width: none; + /* 2 */ + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%,-50%); +} + +iframe.uk-cover { pointer-events: none; } + + +/* Container + ========================================================================== */ + +/* + * 1. Parent container which clips resized object + * 2. Needed if the child is positioned absolute. See note above + */ + +.uk-cover-container { + /* 1 */ + overflow: hidden; + /* 2 */ + position: relative; +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-cover-misc)) {@include hook-cover-misc();} + +// @mixin hook-cover-misc(){} \ No newline at end of file diff --git a/_sass/uikit/components/description-list.scss b/_sass/uikit/components/description-list.scss new file mode 100644 index 00000000..6683286d --- /dev/null +++ b/_sass/uikit/components/description-list.scss @@ -0,0 +1,71 @@ +// Name: Description list +// Description: Styles for description lists +// +// Component: `uk-description-list` +// +// Modifiers: `uk-description-list-divider` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$description-list-term-color: $global-emphasis-color !default; +$description-list-term-margin-top: $global-margin !default; + +$description-list-divider-term-margin-top: $global-margin !default; +$description-list-divider-term-border-width: $global-border-width !default; +$description-list-divider-term-border: $global-border !default; + + +/* ======================================================================== + Component: Description list + ========================================================================== */ + +/* + * Term + */ + +.uk-description-list > dt { + color: $description-list-term-color; + @if(mixin-exists(hook-description-list-term)) {@include hook-description-list-term();} +} + +.uk-description-list > dt:nth-child(n+2) { + margin-top: $description-list-term-margin-top; +} + +/* + * Description + */ + +.uk-description-list > dd { + @if(mixin-exists(hook-description-list-description)) {@include hook-description-list-description();} +} + + +/* Style modifier + ========================================================================== */ + +/* + * Line + */ + +.uk-description-list-divider > dt:nth-child(n+2) { + margin-top: $description-list-divider-term-margin-top; + padding-top: $description-list-divider-term-margin-top; + border-top: $description-list-divider-term-border-width solid $description-list-divider-term-border; + @if(mixin-exists(hook-description-list-divider-term)) {@include hook-description-list-divider-term();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-description-list-misc)) {@include hook-description-list-misc();} + +// @mixin hook-description-list-term(){} +// @mixin hook-description-list-description(){} +// @mixin hook-description-list-divider-term(){} +// @mixin hook-description-list-misc(){} \ No newline at end of file diff --git a/_sass/uikit/components/divider.scss b/_sass/uikit/components/divider.scss new file mode 100644 index 00000000..b51708cf --- /dev/null +++ b/_sass/uikit/components/divider.scss @@ -0,0 +1,129 @@ +// Name: Divider +// Description: Styles for dividers +// +// Component: `uk-divider-icon` +// `uk-divider-small` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$divider-margin-vertical: $global-margin !default; + +$divider-icon-width: 50px !default; +$divider-icon-height: 20px !default; +$divider-icon-color: $global-border !default; +$divider-icon-line-top: 50% !default; +$divider-icon-line-width: 100% !default; +$divider-icon-line-border-width: $global-border-width !default; +$divider-icon-line-border: $global-border !default; + +$internal-divider-icon-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22none%22%20stroke%3D%22#000%22%20stroke-width%3D%222%22%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%227%22%20%2F%3E%0A%3C%2Fsvg%3E%0A" !default; + +$divider-small-width: 100px !default; +$divider-small-border-width: $global-border-width !default; +$divider-small-border: $global-border !default; + + +/* ======================================================================== + Component: Divider + ========================================================================== */ + +/* + * 1. Reset default `hr` + * 2. Set margin if a `div` is used for semantical reason + */ + +[class*='uk-divider'] { + /* 1 */ + border: none; + /* 2 */ + margin-bottom: $divider-margin-vertical; +} + +/* Add margin if adjacent element */ +* + [class*='uk-divider'] { margin-top: $divider-margin-vertical; } + + +/* Icon + ========================================================================== */ + +.uk-divider-icon { + position: relative; + height: $divider-icon-height; + @include svg-fill($internal-divider-icon-image, "#000", $divider-icon-color); + background-repeat: no-repeat; + background-position: 50% 50%; + @if(mixin-exists(hook-divider-icon)) {@include hook-divider-icon();} +} + +.uk-divider-icon::before, +.uk-divider-icon::after { + content: ""; + position: absolute; + top: $divider-icon-line-top; + max-width: unquote('calc(50% - (#{$divider-icon-width} / 2))'); + border-bottom: $divider-icon-line-border-width solid $divider-icon-line-border; + @if(mixin-exists(hook-divider-icon-line)) {@include hook-divider-icon-line();} +} + +.uk-divider-icon::before { + right: unquote('calc(50% + (#{$divider-icon-width} / 2))'); + width: $divider-icon-line-width; + @if(mixin-exists(hook-divider-icon-line-left)) {@include hook-divider-icon-line-left();} +} + +.uk-divider-icon::after { + left: unquote('calc(50% + (#{$divider-icon-width} / 2))'); + width: $divider-icon-line-width; + @if(mixin-exists(hook-divider-icon-line-right)) {@include hook-divider-icon-line-right();} +} + + +/* Small + ========================================================================== */ + +/* + * Reset child height, caused by `inline-block` + */ + +.uk-divider-small { line-height: 0; } + +.uk-divider-small::after { + content: ""; + display: inline-block; + width: $divider-small-width; + max-width: 100%; + border-top: $divider-small-border-width solid $divider-small-border; + vertical-align: top; + @if(mixin-exists(hook-divider-small)) {@include hook-divider-small();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-divider-misc)) {@include hook-divider-misc();} + +// @mixin hook-divider-icon(){} +// @mixin hook-divider-icon-line(){} +// @mixin hook-divider-icon-line-left(){} +// @mixin hook-divider-icon-line-right(){} +// @mixin hook-divider-small(){} +// @mixin hook-divider-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-divider-icon-color: $inverse-global-border !default; +$inverse-divider-icon-line-border: $inverse-global-border !default; +$inverse-divider-small-border: $inverse-global-border !default; + + + +// @mixin hook-inverse-divider-icon(){} +// @mixin hook-inverse-divider-icon-line(){} +// @mixin hook-inverse-divider-small(){} diff --git a/_sass/uikit/components/dotnav.scss b/_sass/uikit/components/dotnav.scss new file mode 100644 index 00000000..f1f2a402 --- /dev/null +++ b/_sass/uikit/components/dotnav.scss @@ -0,0 +1,157 @@ +// Name: Dotnav +// Description: Component to create dot navigations +// +// Component: `uk-dotnav` +// +// Modifier: `uk-dotnav-vertical` +// +// States: `uk-active` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$dotnav-margin-horizontal: 12px !default; +$dotnav-margin-vertical: $dotnav-margin-horizontal !default; + +$dotnav-item-width: 10px !default; +$dotnav-item-height: $dotnav-item-width !default; +$dotnav-item-border-radius: 50% !default; + +$dotnav-item-background: rgba($global-color, 0.2) !default; +$dotnav-item-hover-background: rgba($global-color, 0.6) !default; +$dotnav-item-onclick-background: rgba($global-color, 0.2) !default; +$dotnav-item-active-background: rgba($global-color, 0.6) !default; + + +/* ======================================================================== + Component: Dotnav + ========================================================================== */ + +/* + * 1. Allow items to wrap into the next line + * 2. Reset list + * 3. Gutter + */ + +.uk-dotnav { + display: flex; + /* 1 */ + flex-wrap: wrap; + /* 2 */ + margin: 0; + padding: 0; + list-style: none; + /* 3 */ + margin-left: (-$dotnav-margin-horizontal); + @if(mixin-exists(hook-dotnav)) {@include hook-dotnav();} +} + +/* + * 1. Space is allocated solely based on content dimensions: 0 0 auto + * 2. Gutter + */ + +.uk-dotnav > * { + /* 1 */ + flex: none; + /* 2 */ + padding-left: $dotnav-margin-horizontal; +} + + +/* Items + ========================================================================== */ + +/* + * Items + * 1. Hide text if present + */ + +.uk-dotnav > * > * { + display: block; + box-sizing: border-box; + width: $dotnav-item-width; + height: $dotnav-item-height; + border-radius: $dotnav-item-border-radius; + background: $dotnav-item-background; + /* 1 */ + text-indent: 100%; + overflow: hidden; + white-space: nowrap; + @if(mixin-exists(hook-dotnav-item)) {@include hook-dotnav-item();} +} + +/* Hover + Focus */ +.uk-dotnav > * > :hover, +.uk-dotnav > * > :focus { + background-color: $dotnav-item-hover-background; + outline: none; + @if(mixin-exists(hook-dotnav-item-hover)) {@include hook-dotnav-item-hover();} +} + +/* OnClick */ +.uk-dotnav > * > :active { + background-color: $dotnav-item-onclick-background; + @if(mixin-exists(hook-dotnav-item-onclick)) {@include hook-dotnav-item-onclick();} +} + +/* Active */ +.uk-dotnav > .uk-active > * { + background-color: $dotnav-item-active-background; + @if(mixin-exists(hook-dotnav-item-active)) {@include hook-dotnav-item-active();} +} + + +/* Modifier: 'uk-dotnav-vertical' + ========================================================================== */ + +/* + * 1. Change direction + * 2. Gutter + */ + +.uk-dotnav-vertical { + /* 1 */ + flex-direction: column; + /* 2 */ + margin-left: 0; + margin-top: (-$dotnav-margin-vertical); +} + +/* 2 */ +.uk-dotnav-vertical > * { + padding-left: 0; + padding-top: $dotnav-margin-vertical; +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-dotnav-misc)) {@include hook-dotnav-misc();} + +// @mixin hook-dotnav(){} +// @mixin hook-dotnav-item(){} +// @mixin hook-dotnav-item-hover(){} +// @mixin hook-dotnav-item-onclick(){} +// @mixin hook-dotnav-item-active(){} +// @mixin hook-dotnav-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-dotnav-item-background: rgba($inverse-global-color, 0.5) !default; +$inverse-dotnav-item-hover-background: rgba($inverse-global-color, 0.9) !default; +$inverse-dotnav-item-onclick-background: rgba($inverse-global-color, 0.5) !default; +$inverse-dotnav-item-active-background: rgba($inverse-global-color, 0.9) !default; + + + +// @mixin hook-inverse-dotnav-item(){} +// @mixin hook-inverse-dotnav-item-hover(){} +// @mixin hook-inverse-dotnav-item-onclick(){} +// @mixin hook-inverse-dotnav-item-active(){} \ No newline at end of file diff --git a/_sass/uikit/components/drop.scss b/_sass/uikit/components/drop.scss new file mode 100644 index 00000000..fb5e9e8c --- /dev/null +++ b/_sass/uikit/components/drop.scss @@ -0,0 +1,74 @@ +// Name: Drop +// Description: Component to position any element next to any other element. +// +// Component: `uk-drop` +// +// Modifiers: `uk-drop-top-*` +// `uk-drop-bottom-*` +// `uk-drop-left-*` +// `uk-drop-right-*` +// `uk-drop-stack` +// `uk-drop-grid` +// +// States: `uk-open` +// +// Uses: Animation +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$drop-z-index: $global-z-index + 20 !default; +$drop-width: 300px !default; +$drop-margin: $global-margin !default; + + +/* ======================================================================== + Component: Drop + ========================================================================== */ + +/* + * 1. Hide by default + * 2. Set position + * 3. Set a default width + */ + +.uk-drop { + /* 1 */ + display: none; + /* 2 */ + position: absolute; + z-index: $drop-z-index; + /* 3 */ + box-sizing: border-box; + width: $drop-width; +} + +/* Show */ +.uk-drop.uk-open { display: block; } + + +/* Direction / Alignment modifiers + ========================================================================== */ + +/* Direction */ +[class*='uk-drop-top'] { margin-top: (-$drop-margin); } +[class*='uk-drop-bottom'] { margin-top: $drop-margin; } +[class*='uk-drop-left'] { margin-left: (-$drop-margin); } +[class*='uk-drop-right'] { margin-left: $drop-margin; } + + +/* Grid modifiers + ========================================================================== */ + +.uk-drop-stack .uk-drop-grid > * { width: 100% !important; } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-drop-misc)) {@include hook-drop-misc();} + +// @mixin hook-drop-misc(){} diff --git a/_sass/uikit/components/dropdown.scss b/_sass/uikit/components/dropdown.scss new file mode 100644 index 00000000..49bb1277 --- /dev/null +++ b/_sass/uikit/components/dropdown.scss @@ -0,0 +1,150 @@ +// Name: Dropdown +// Description: Component to create dropdown menus +// +// Component: `uk-dropdown` +// +// Adopted: `uk-dropdown-nav` +// +// Modifiers: `uk-dropdown-top-*` +// `uk-dropdown-bottom-*` +// `uk-dropdown-left-*` +// `uk-dropdown-right-*` +// `uk-dropdown-stack` +// `uk-dropdown-grid` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$dropdown-z-index: $global-z-index + 20 !default; +$dropdown-min-width: 200px !default; +$dropdown-padding: 15px !default; +$dropdown-background: $global-muted-background !default; +$dropdown-color: $global-color !default; +$dropdown-margin: $global-small-margin !default; + +$dropdown-nav-item-color: $global-muted-color !default; +$dropdown-nav-item-hover-color: $global-color !default; +$dropdown-nav-header-color: $global-emphasis-color !default; +$dropdown-nav-divider-border-width: $global-border-width !default; +$dropdown-nav-divider-border: $global-border !default; +$dropdown-nav-sublist-item-color: $global-muted-color !default; +$dropdown-nav-sublist-item-hover-color: $global-color !default; + + +/* ======================================================================== + Component: Dropdown + ========================================================================== */ + +/* + * 1. Hide by default + * 2. Set position + * 3. Set a default width + * 4. Style + */ + +.uk-dropdown { + /* 1 */ + display: none; + /* 2 */ + position: absolute; + z-index: $dropdown-z-index; + /* 3 */ + box-sizing: border-box; + min-width: $dropdown-min-width; + /* 4 */ + padding: $dropdown-padding; + background: $dropdown-background; + color: $dropdown-color; + @if(mixin-exists(hook-dropdown)) {@include hook-dropdown();} +} + +/* Show */ +.uk-dropdown.uk-open { display: block; } + + +/* Nav + * Adopts `uk-nav` + ========================================================================== */ + +.uk-dropdown-nav { + white-space: nowrap; + @if(mixin-exists(hook-dropdown-nav)) {@include hook-dropdown-nav();} +} + +/* + * Items + */ + +.uk-dropdown-nav > li > a { + color: $dropdown-nav-item-color; + @if(mixin-exists(hook-dropdown-nav-item)) {@include hook-dropdown-nav-item();} +} + +/* Hover + Focus + Active */ +.uk-dropdown-nav > li > a:hover, +.uk-dropdown-nav > li > a:focus, +.uk-dropdown-nav > li.uk-active > a { + color: $dropdown-nav-item-hover-color; + @if(mixin-exists(hook-dropdown-nav-item-hover)) {@include hook-dropdown-nav-item-hover();} +} + +/* + * Header + */ + +.uk-dropdown-nav .uk-nav-header { + color: $dropdown-nav-header-color; + @if(mixin-exists(hook-dropdown-nav-header)) {@include hook-dropdown-nav-header();} +} + +/* + * Divider + */ + +.uk-dropdown-nav .uk-nav-divider { + border-top: $dropdown-nav-divider-border-width solid $dropdown-nav-divider-border; + @if(mixin-exists(hook-dropdown-nav-divider)) {@include hook-dropdown-nav-divider();} +} + +/* + * Sublists + */ + +.uk-dropdown-nav .uk-nav-sub a { color: $dropdown-nav-sublist-item-color; } + +.uk-dropdown-nav .uk-nav-sub a:hover, +.uk-dropdown-nav .uk-nav-sub a:focus { color: $dropdown-nav-sublist-item-hover-color; } + + +/* Direction / Alignment modifiers + ========================================================================== */ + +/* Direction */ +[class*='uk-dropdown-top'] { margin-top: (-$dropdown-margin); } +[class*='uk-dropdown-bottom'] { margin-top: $dropdown-margin; } +[class*='uk-dropdown-left'] { margin-left: (-$dropdown-margin); } +[class*='uk-dropdown-right'] { margin-left: $dropdown-margin; } + + +/* Grid modifiers + ========================================================================== */ + +.uk-dropdown-stack .uk-dropdown-grid > * { width: 100% !important; } + + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-dropdown-misc)) {@include hook-dropdown-misc();} + +// @mixin hook-dropdown(){} +// @mixin hook-dropdown-nav(){} +// @mixin hook-dropdown-nav-item(){} +// @mixin hook-dropdown-nav-item-hover(){} +// @mixin hook-dropdown-nav-header(){} +// @mixin hook-dropdown-nav-divider(){} +// @mixin hook-dropdown-misc(){} diff --git a/_sass/uikit/components/flex.scss b/_sass/uikit/components/flex.scss new file mode 100644 index 00000000..1301fc43 --- /dev/null +++ b/_sass/uikit/components/flex.scss @@ -0,0 +1,209 @@ +// Name: Flex +// Description: Utilities for layouts based on flexbox +// +// Component: `uk-flex-*` +// +// ======================================================================== + + +/* ======================================================================== + Component: Flex + ========================================================================== */ + +.uk-flex { display: flex; } +.uk-flex-inline { display: inline-flex; } + +/* + * Remove pseudo elements created by micro clearfix as precaution + */ + +.uk-flex::before, +.uk-flex::after, +.uk-flex-inline::before, +.uk-flex-inline::after { display: none; } + + +/* Alignment + ========================================================================== */ + +/* + * Align items along the main axis of the current line of the flex container + * Row: Horizontal + */ + +// Default +.uk-flex-left { justify-content: flex-start; } +.uk-flex-center { justify-content: center; } +.uk-flex-right { justify-content: flex-end; } +.uk-flex-between { justify-content: space-between; } +.uk-flex-around { justify-content: space-around; } + + +/* Phone landscape and bigger */ +@media (min-width: $breakpoint-small) { + + .uk-flex-left\@s { justify-content: flex-start; } + .uk-flex-center\@s { justify-content: center; } + .uk-flex-right\@s { justify-content: flex-end; } + .uk-flex-between\@s { justify-content: space-between; } + .uk-flex-around\@s { justify-content: space-around; } + +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-flex-left\@m { justify-content: flex-start; } + .uk-flex-center\@m { justify-content: center; } + .uk-flex-right\@m { justify-content: flex-end; } + .uk-flex-between\@m { justify-content: space-between; } + .uk-flex-around\@m { justify-content: space-around; } + +} + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + .uk-flex-left\@l { justify-content: flex-start; } + .uk-flex-center\@l { justify-content: center; } + .uk-flex-right\@l { justify-content: flex-end; } + .uk-flex-between\@l { justify-content: space-between; } + .uk-flex-around\@l { justify-content: space-around; } + +} + +/* Large screen and bigger */ +@media (min-width: $breakpoint-xlarge) { + + .uk-flex-left\@xl { justify-content: flex-start; } + .uk-flex-center\@xl { justify-content: center; } + .uk-flex-right\@xl { justify-content: flex-end; } + .uk-flex-between\@xl { justify-content: space-between; } + .uk-flex-around\@xl { justify-content: space-around; } + +} + +/* + * Align items in the cross axis of the current line of the flex container + * Row: Vertical + */ + +// Default +.uk-flex-stretch { align-items: stretch; } +.uk-flex-top { align-items: flex-start; } +.uk-flex-middle { align-items: center; } +.uk-flex-bottom { align-items: flex-end; } + + +/* Direction + ========================================================================== */ + +// Default +.uk-flex-row { flex-direction: row; } +.uk-flex-row-reverse { flex-direction: row-reverse; } +.uk-flex-column { flex-direction: column; } +.uk-flex-column-reverse { flex-direction: column-reverse; } + + +/* Wrap + ========================================================================== */ + +// Default +.uk-flex-nowrap { flex-wrap: nowrap; } +.uk-flex-wrap { flex-wrap: wrap; } +.uk-flex-wrap-reverse { flex-wrap: wrap-reverse; } + +/* + * Aligns items within the flex container when there is extra space in the cross-axis + * Only works if there is more than one line of flex items + */ + +// Default +.uk-flex-wrap-stretch { align-content: stretch; } +.uk-flex-wrap-top { align-content: flex-start; } +.uk-flex-wrap-middle { align-content: center; } +.uk-flex-wrap-bottom { align-content: flex-end; } +.uk-flex-wrap-between { align-content: space-between; } +.uk-flex-wrap-around { align-content: space-around; } + + +/* Item ordering + ========================================================================== */ + +/* + * Default is 0 + */ + +.uk-flex-first { order: -1;} +.uk-flex-last { order: 99;} + + +/* Phone landscape and bigger */ +@media (min-width: $breakpoint-small) { + + .uk-flex-first\@s { order: -1; } + .uk-flex-last\@s { order: 99; } + +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-flex-first\@m { order: -1; } + .uk-flex-last\@m { order: 99; } + +} + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + .uk-flex-first\@l { order: -1; } + .uk-flex-last\@l { order: 99; } + +} + +/* Large screen and bigger */ +@media (min-width: $breakpoint-xlarge) { + + .uk-flex-first\@xl { order: -1; } + .uk-flex-last\@xl { order: 99; } + +} + + +/* Item dimensions + ========================================================================== */ + +/* + * Initial: 0 1 auto + * Content dimensions, but shrinks + */ + +/* + * No Flex: 0 0 auto + * Content dimensions + */ + +.uk-flex-none { flex: none; } + +/* + * Relative Flex: 1 1 auto + * Space is allocated considering content + */ + +.uk-flex-auto { flex: auto; } + +/* + * Absolute Flex: 1 1 0% + * Space is allocated solely based on flex + */ + +.uk-flex-1 { flex: 1; } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-flex-misc)) {@include hook-flex-misc();} + +// @mixin hook-flex-misc(){} \ No newline at end of file diff --git a/_sass/uikit/components/form-range.scss b/_sass/uikit/components/form-range.scss new file mode 100644 index 00000000..f7a22a5d --- /dev/null +++ b/_sass/uikit/components/form-range.scss @@ -0,0 +1,185 @@ +// Name: Form Range +// Description: Styles for the range input type +// +// Component: `uk-range` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$form-range-thumb-height: 15px !default; +$form-range-thumb-border-radius: 500px !default; +$form-range-thumb-background: $global-color !default; + +$form-range-track-height: 3px !default; +$form-range-track-background: darken($global-muted-background, 5%) !default; +$form-range-track-focus-background: darken($global-muted-background, 15%) !default; + + +/* ======================================================================== + Component: Form Range + ========================================================================== */ + +/* + * 1. Normalize and defaults + * 2. Prevent content overflow if a fixed width is used + * 3. Take the full width + * 4. Remove default style + * 5. Remove white background in Chrome + * 6. Remove padding in IE11 + */ + +.uk-range { + /* 1 */ + box-sizing: border-box; + margin: 0; + vertical-align: middle; + /* 2 */ + max-width: 100%; + /* 3 */ + width: 100%; + /* 4 */ + -webkit-appearance: none; + /* 5 */ + background: transparent; + /* 6 */ + padding: 0; + @if(mixin-exists(hook-form-range)) {@include hook-form-range();} +} + +/* Focus */ +.uk-range:focus { outline: none; } +.uk-range::-moz-focus-outer { border: none; } + +/* IE11 Reset */ +.uk-range::-ms-track { + height: $form-range-thumb-height; + background: transparent; + border-color: transparent; + color: transparent; +} + +/* + * Improves consistency of cursor style for clickable elements + */ + +.uk-range:not(:disabled)::-webkit-slider-thumb { cursor: pointer; } +.uk-range:not(:disabled)::-moz-range-thumb { cursor: pointer; } +.uk-range:not(:disabled)::-ms-thumb { cursor: pointer; } + + +/* Thumb + ========================================================================== */ + +/* + * 1. Reset + * 2. Style + */ + +/* Webkit */ +.uk-range::-webkit-slider-thumb { + /* 1 */ + -webkit-appearance: none; + margin-top: (floor($form-range-thumb-height / 2) * -1); + /* 2 */ + height: $form-range-thumb-height; + width: $form-range-thumb-height; + border-radius: $form-range-thumb-border-radius; + background: $form-range-thumb-background; + @if(mixin-exists(hook-form-range-thumb)) {@include hook-form-range-thumb();} +} + +/* Firefox */ +.uk-range::-moz-range-thumb { + /* 1 */ + border: none; + /* 2 */ + height: $form-range-thumb-height; + width: $form-range-thumb-height; + border-radius: $form-range-thumb-border-radius; + background: $form-range-thumb-background; + @if(mixin-exists(hook-form-range-thumb)) {@include hook-form-range-thumb();} +} + +/* Edge */ +.uk-range::-ms-thumb { + /* 1 */ + margin-top: 0; +} + +/* IE11 */ +.uk-range::-ms-thumb { + /* 1 */ + border: none; + /* 2 */ + height: $form-range-thumb-height; + width: $form-range-thumb-height; + border-radius: $form-range-thumb-border-radius; + background: $form-range-thumb-background; + @if(mixin-exists(hook-form-range-thumb)) {@include hook-form-range-thumb();} +} + +/* Edge + IE11 */ +.uk-range::-ms-tooltip { display: none; } + + +/* Track + ========================================================================== */ + +/* + * 1. Safari doesn't have a focus state. Using active instead. + */ + +/* Webkit */ +.uk-range::-webkit-slider-runnable-track { + height: $form-range-track-height; + background: $form-range-track-background; + @if(mixin-exists(hook-form-range-track)) {@include hook-form-range-track();} +} + +.uk-range:focus::-webkit-slider-runnable-track, +/* 1 */ +.uk-range:active::-webkit-slider-runnable-track { + background: $form-range-track-focus-background; + @if(mixin-exists(hook-form-range-track-focus)) {@include hook-form-range-track-focus();} +} + +/* Firefox */ +.uk-range::-moz-range-track { + height: $form-range-track-height; + background: $form-range-track-background; + @if(mixin-exists(hook-form-range-track)) {@include hook-form-range-track();} +} + +.uk-range:focus::-moz-range-track { + background: $form-range-track-focus-background; + @if(mixin-exists(hook-form-range-track-focus)) {@include hook-form-range-track-focus();} +} + +/* Edge */ +.uk-range::-ms-fill-lower, +.uk-range::-ms-fill-upper { + height: $form-range-track-height; + background: $form-range-track-background; + @if(mixin-exists(hook-form-range-track)) {@include hook-form-range-track();} +} + +.uk-range:focus::-ms-fill-lower, +.uk-range:focus::-ms-fill-upper { + background: $form-range-track-focus-background; + @if(mixin-exists(hook-form-range-track-focus)) {@include hook-form-range-track-focus();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-form-range-misc)) {@include hook-form-range-misc();} + +// @mixin hook-form-range(){} +// @mixin hook-form-range-thumb(){} +// @mixin hook-form-range-track(){} +// @mixin hook-form-range-track-focus(){} +// @mixin hook-form-range-misc(){} diff --git a/_sass/uikit/components/form.scss b/_sass/uikit/components/form.scss new file mode 100644 index 00000000..e731cffb --- /dev/null +++ b/_sass/uikit/components/form.scss @@ -0,0 +1,756 @@ +// Name: Form +// Description: Styles for forms +// +// Component: `uk-form-*` +// `uk-input` +// `uk-select` +// `uk-textarea` +// `uk-radio` +// `uk-checkbox` +// `uk-legend` +// `uk-fieldset` +// +// Sub-objects: `uk-form-custom` +// `uk-form-stacked` +// `uk-form-horizontal` +// `uk-form-label` +// `uk-form-controls` +// `uk-form-icon` +// `uk-form-icon-flip` +// +// Modifiers: `uk-form-small` +// `uk-form-large` +// `uk-form-danger` +// `uk-form-success` +// `uk-form-blank` +// `uk-form-width-xsmall` +// `uk-form-width-small` +// `uk-form-width-medium` +// `uk-form-width-large` +// `uk-form-controls-text` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$form-height: $global-control-height !default; +$form-line-height: $form-height !default; +$form-padding-horizontal: 10px !default; +$form-padding-vertical: 4px !default; + +$form-background: $global-muted-background !default; +$form-color: $global-color !default; + +$form-focus-background: $global-muted-background !default; +$form-focus-color: $global-color !default; + +$form-disabled-background: $global-muted-background !default; +$form-disabled-color: $global-muted-color !default; + +$form-placeholder-color: $global-muted-color !default; + +$form-small-height: $global-control-small-height !default; +$form-small-padding-horizontal: 8px !default; +$form-small-line-height: $form-small-height !default; +$form-small-font-size: $global-small-font-size !default; + +$form-large-height: $global-control-large-height !default; +$form-large-padding-horizontal: 12px !default; +$form-large-line-height: $form-large-height !default; +$form-large-font-size: $global-medium-font-size !default; + +$form-danger-color: $global-danger-background !default; +$form-success-color: $global-success-background !default; + +$form-width-xsmall: 50px !default; +$form-width-small: 130px !default; +$form-width-medium: 200px !default; +$form-width-large: 500px !default; + +$form-select-padding-right: 20px !default; +$form-select-icon-color: $global-color !default; +$form-select-disabled-icon-color: $global-muted-color !default; + +$form-radio-size: 16px !default; +$form-radio-margin-top: -4px !default; +$form-radio-background: darken($global-muted-background, 5%) !default; + +$form-radio-checked-background: $global-primary-background !default; +$form-radio-checked-icon-color: $global-inverse-color !default; + +$form-radio-checked-focus-background: darken($global-primary-background, 10%) !default; + +$form-radio-disabled-background: $global-muted-background !default; +$form-radio-disabled-icon-color: $global-muted-color !default; + +$form-legend-font-size: $global-large-font-size !default; +$form-legend-line-height: 1.4 !default; + +$form-stacked-margin-bottom: $global-small-margin !default; + +$form-horizontal-label-width: 200px !default; +$form-horizontal-label-margin-top: 7px !default; +$form-horizontal-controls-margin-left: 215px !default; +$form-horizontal-controls-text-padding-top: 7px !default; + +$form-icon-width: $form-height !default; +$form-icon-font-size: $global-font-size !default; +$form-icon-color: $global-muted-color !default; +$form-icon-hover-color: $global-color !default; + +$internal-form-select-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22#000%22%20points%3D%2212%201%209%206%2015%206%22%20%2F%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22#000%22%20points%3D%2212%2013%209%208%2015%208%22%20%2F%3E%0A%3C%2Fsvg%3E%0A" !default; +$internal-form-radio-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22#000%22%20cx%3D%228%22%20cy%3D%228%22%20r%3D%222%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; +$internal-form-checkbox-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2211%22%20viewBox%3D%220%200%2014%2011%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22#000%22%20points%3D%2212%201%205%207.5%202%205%201%205.5%205%2010%2013%201.5%22%20%2F%3E%0A%3C%2Fsvg%3E%0A" !default; +$internal-form-checkbox-indeterminate-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22#000%22%20x%3D%223%22%20y%3D%228%22%20width%3D%2210%22%20height%3D%221%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; + + +/* ======================================================================== + Component: Form + ========================================================================== */ + +/* + * 1. Define consistent box sizing. + * Default is `content-box` with following exceptions set to `border-box` + * `select`, `input[type="checkbox"]` and `input[type="radio"]` + * `input[type="search"]` in Chrome, Safari and Opera + * `input[type="color"]` in Firefox + * 2. Address margins set differently in Firefox/IE and Chrome/Safari/Opera. + * 3. Remove `border-radius` in iOS. + * 4. Change font properties to `inherit` in all browsers. + */ + +.uk-input, +.uk-select, +.uk-textarea, +.uk-radio, +.uk-checkbox { + /* 1 */ + box-sizing: border-box; + /* 2 */ + margin: 0; + /* 3 */ + border-radius: 0; + /* 4 */ + font: inherit; +} + +/* + * Show the overflow in Edge. + */ + +.uk-input { overflow: visible; } + +/* + * Remove the inheritance of text transform in Firefox. + */ + +.uk-select { text-transform: none; } + +/* + * 1. Change font properties to `inherit` in all browsers + * 2. Don't inherit the `font-weight` and use `bold` instead. + * NOTE: Both declarations don't work in Chrome, Safari and Opera. + */ + +.uk-select optgroup { + /* 1 */ + font: inherit; + /* 2 */ + font-weight: bold; +} + +/* + * Remove the default vertical scrollbar in IE 10+. + */ + +.uk-textarea { overflow: auto; } + +/* + * Remove the inner padding and cancel buttons in Chrome on OS X and Safari on OS X. + */ + +.uk-input[type="search"]::-webkit-search-cancel-button, +.uk-input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } + + +/* + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +.uk-input[type="number"]::-webkit-inner-spin-button, +.uk-input[type="number"]::-webkit-outer-spin-button { height: auto; } + +/* + * Removes placeholder transparency in Firefox. + */ + +.uk-input::-moz-placeholder, +.uk-textarea::-moz-placeholder { opacity: 1; } + +/* + * Improves consistency of cursor style for clickable elements + */ + +.uk-radio:not(:disabled), +.uk-checkbox:not(:disabled) { cursor: pointer; } + +/* + * Define consistent border, margin, and padding. + */ + +.uk-fieldset { + border: none; + margin: 0; + padding: 0; +} + + +/* Input, select and textarea + * Allowed: `text`, `password`, `datetime`, `datetime-local`, `date`, `month`, + `time`, `week`, `number`, `email`, `url`, `search`, `tel`, `color` + * Disallowed: `range`, `radio`, `checkbox`, `file`, `submit`, `reset` and `image` + ========================================================================== */ + +/* + * Remove default style in iOS. + */ + +.uk-input, +.uk-textarea { -webkit-appearance: none; } + +/* + * 1. Prevent content overflow if a fixed width is used + * 2. Take the full width + * 3. Reset default + * 4. Style + */ + +.uk-input, +.uk-select, +.uk-textarea { + /* 1 */ + max-width: 100%; + /* 2 */ + width: 100%; + /* 3 */ + border: 0 none; + /* 4 */ + padding: 0 $form-padding-horizontal; + background: $form-background; + color: $form-color; + @if(mixin-exists(hook-form)) {@include hook-form();} +} + +/* + * Single-line + * 1. Allow any element to look like an `input` or `select` element + * 2. Make sure line-height is not larger than height + * Also needed to center the text vertically + */ + +.uk-input, +.uk-select:not([multiple]):not([size]) { + height: $form-height; + vertical-align: middle; + /* 1 */ + display: inline-block; + @if(mixin-exists(hook-form-single-line)) {@include hook-form-single-line();} +} + +/* 2 */ +.uk-input:not(input), +.uk-select:not(select) { line-height: $form-line-height; } + +/* + * Multi-line + */ + +.uk-select[multiple], +.uk-select[size], +.uk-textarea { + padding-top: $form-padding-vertical; + padding-bottom: $form-padding-vertical; + vertical-align: top; + @if(mixin-exists(hook-form-multi-line)) {@include hook-form-multi-line();} +} + +/* Focus */ +.uk-input:focus, +.uk-select:focus, +.uk-textarea:focus { + outline: none; + background-color: $form-focus-background; + color: $form-focus-color; + @if(mixin-exists(hook-form-focus)) {@include hook-form-focus();} +} + +/* Disabled */ +.uk-input:disabled, +.uk-select:disabled, +.uk-textarea:disabled { + background-color: $form-disabled-background; + color: $form-disabled-color; + @if(mixin-exists(hook-form-disabled)) {@include hook-form-disabled();} +} + +/* + * Placeholder + */ + +.uk-input:-ms-input-placeholder { color: $form-placeholder-color !important; } +.uk-input::placeholder { color: $form-placeholder-color; } + +.uk-textarea:-ms-input-placeholder { color: $form-placeholder-color !important; } +.uk-textarea::placeholder { color: $form-placeholder-color; } + + +/* Style modifier (`uk-input`, `uk-select` and `uk-textarea`) + ========================================================================== */ + +/* + * Small + */ + +.uk-form-small { font-size: $form-small-font-size; } + +.uk-form-small:not(textarea):not([multiple]):not([size]) { + height: $form-small-height; + padding-left: $form-small-padding-horizontal; + padding-right: $form-small-padding-horizontal; +} + +.uk-form-small:not(select):not(input):not(textarea) { line-height: $form-small-line-height; } + +/* + * Large + */ + +.uk-form-large { font-size: $form-large-font-size; } + +.uk-form-large:not(textarea):not([multiple]):not([size]) { + height: $form-large-height; + padding-left: $form-large-padding-horizontal; + padding-right: $form-large-padding-horizontal; +} + +.uk-form-large:not(select):not(input):not(textarea) { line-height: $form-large-line-height; } + + +/* Style modifier (`uk-input`, `uk-select` and `uk-textarea`) + ========================================================================== */ + +/* + * Error + */ + +.uk-form-danger, +.uk-form-danger:focus { + color: $form-danger-color; + @if(mixin-exists(hook-form-danger)) {@include hook-form-danger();} +} + +/* + * Success + */ + +.uk-form-success, +.uk-form-success:focus { + color: $form-success-color; + @if(mixin-exists(hook-form-success)) {@include hook-form-success();} +} + +/* + * Blank + */ + +.uk-form-blank { + background: none; + @if(mixin-exists(hook-form-blank)) {@include hook-form-blank();} +} + +.uk-form-blank:focus { + @if(mixin-exists(hook-form-blank-focus)) {@include hook-form-blank-focus();} +} + + +/* Width modifiers (`uk-input`, `uk-select` and `uk-textarea`) + ========================================================================== */ + +/* + * Fixed widths + * Different widths for mini sized `input` and `select` elements + */ + +input.uk-form-width-xsmall { width: $form-width-xsmall; } + +select.uk-form-width-xsmall { width: ($form-width-xsmall + 25px); } + +.uk-form-width-small { width: $form-width-small; } + +.uk-form-width-medium { width: $form-width-medium; } + +.uk-form-width-large { width: $form-width-large; } + + +/* Select + ========================================================================== */ + +/* + * 1. Remove default style. Also works in Firefox + * 2. Style + * 3. Remove default style in IE 10/11 + */ + +.uk-select:not([multiple]):not([size]) { + /* 1 */ + -webkit-appearance: none; + -moz-appearance: none; + /* 2 */ + padding-right: $form-select-padding-right; + @include svg-fill($internal-form-select-image, "#000", $form-select-icon-color); + background-repeat: no-repeat; + background-position: 100% 50%; +} + +/* 3 */ +.uk-select:not([multiple]):not([size])::-ms-expand { display: none; } + +/* + * Disabled + */ + +.uk-select:not([multiple]):not([size]):disabled { @include svg-fill($internal-form-select-image, "#000", $form-select-disabled-icon-color); } + + +/* Radio and checkbox + * Note: Does not work in IE11 + ========================================================================== */ + +/* + * 1. Style + * 2. Make box more robust so it clips the child element + * 3. Vertical alignment + * 4. Remove default style + * 5. Fix black background on iOS + * 6. Center icons + */ + +.uk-radio, +.uk-checkbox { + /* 1 */ + display: inline-block; + height: $form-radio-size; + width: $form-radio-size; + /* 2 */ + overflow: hidden; + /* 3 */ + margin-top: $form-radio-margin-top; + vertical-align: middle; + /* 4 */ + -webkit-appearance: none; + -moz-appearance: none; + /* 5 */ + background-color: $form-radio-background; + /* 6 */ + background-repeat: no-repeat; + background-position: 50% 50%; + @if(mixin-exists(hook-form-radio)) {@include hook-form-radio();} +} + +.uk-radio { border-radius: 50%; } + +/* Focus */ +.uk-radio:focus, +.uk-checkbox:focus { + outline: none; + @if(mixin-exists(hook-form-radio-focus)) {@include hook-form-radio-focus();} +} + +/* + * Checked + */ + +.uk-radio:checked, +.uk-checkbox:checked, +.uk-checkbox:indeterminate { + background-color: $form-radio-checked-background; + @if(mixin-exists(hook-form-radio-checked)) {@include hook-form-radio-checked();} +} + +/* Focus */ +.uk-radio:checked:focus, +.uk-checkbox:checked:focus, +.uk-checkbox:indeterminate:focus { + background-color: $form-radio-checked-focus-background; + @if(mixin-exists(hook-form-radio-checked-focus)) {@include hook-form-radio-checked-focus();} +} + +/* + * Icons + */ + +.uk-radio:checked { @include svg-fill($internal-form-radio-image, "#000", $form-radio-checked-icon-color); } +.uk-checkbox:checked { @include svg-fill($internal-form-checkbox-image, "#000", $form-radio-checked-icon-color); } +.uk-checkbox:indeterminate { @include svg-fill($internal-form-checkbox-indeterminate-image, "#000", $form-radio-checked-icon-color); } + +/* + * Disabled + */ + +.uk-radio:disabled, +.uk-checkbox:disabled { + background-color: $form-radio-disabled-background; + @if(mixin-exists(hook-form-radio-disabled)) {@include hook-form-radio-disabled();} +} + +.uk-radio:disabled:checked { @include svg-fill($internal-form-radio-image, "#000", $form-radio-disabled-icon-color); } +.uk-checkbox:disabled:checked { @include svg-fill($internal-form-checkbox-image, "#000", $form-radio-disabled-icon-color); } +.uk-checkbox:disabled:indeterminate { @include svg-fill($internal-form-checkbox-indeterminate-image, "#000", $form-radio-disabled-icon-color); } + + +/* Legend + ========================================================================== */ + +/* + * Legend + * 1. Behave like block element + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove padding so people aren't caught out if they zero out fieldsets. + * 4. Style + */ + +.uk-legend { + /* 1 */ + width: 100%; + /* 2 */ + color: inherit; + /* 3 */ + padding: 0; + /* 4 */ + font-size: $form-legend-font-size; + line-height: $form-legend-line-height; + @if(mixin-exists(hook-form-legend)) {@include hook-form-legend();} +} + + +/* Custom controls + ========================================================================== */ + +/* + * 1. Container fits its content + * 2. Create position context + * 3. Prevent content overflow + * 4. Behave like most inline-block elements + */ + +.uk-form-custom { + /* 1 */ + display: inline-block; + /* 2 */ + position: relative; + /* 3 */ + max-width: 100%; + /* 4 */ + vertical-align: middle; +} + +/* + * 1. Position and resize the form control to always cover its container + * 2. Required for Firefox for positioning to the left + * 3. Required for Webkit to make `height` work + * 4. Hide controle and show cursor + * 5. Needed for the cursor + * 6. Clip height caused by 5. Needed for Webkit only + */ + +.uk-form-custom select, +.uk-form-custom input[type="file"] { + /* 1 */ + position: absolute; + top: 0; + z-index: 1; + width: 100%; + height: 100%; + /* 2 */ + left: 0; + /* 3 */ + -webkit-appearance: none; + /* 4 */ + opacity: 0; + cursor: pointer; +} + +.uk-form-custom input[type="file"] { + /* 5 */ + font-size: 500px; + /* 6 */ + overflow: hidden; +} + + +/* Label + ========================================================================== */ + +.uk-form-label { + @if(mixin-exists(hook-form-label)) {@include hook-form-label();} +} + + +/* Layout + ========================================================================== */ + +/* + * Stacked + */ + +.uk-form-stacked .uk-form-label { + display: block; + margin-bottom: $form-stacked-margin-bottom; + @if(mixin-exists(hook-form-stacked-label)) {@include hook-form-stacked-label();} +} + +/* + * Horizontal + */ + +/* Tablet portrait and smaller */ +@media (max-width: $breakpoint-small-max) { + + /* Behave like `uk-form-stacked` */ + .uk-form-horizontal .uk-form-label { + display: block; + margin-bottom: $form-stacked-margin-bottom; + @if(mixin-exists(hook-form-stacked-label)) {@include hook-form-stacked-label();} + } + +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-form-horizontal .uk-form-label { + width: $form-horizontal-label-width; + margin-top: $form-horizontal-label-margin-top; + float: left; + @if(mixin-exists(hook-form-horizontal-label)) {@include hook-form-horizontal-label();} + } + + .uk-form-horizontal .uk-form-controls { margin-left: $form-horizontal-controls-margin-left; } + + /* Better vertical alignment if controls are checkboxes and radio buttons with text */ + .uk-form-horizontal .uk-form-controls-text { padding-top: $form-horizontal-controls-text-padding-top; } + +} + + +/* Icons + ========================================================================== */ + +/* + * 1. Set position + * 2. Set width + * 3. Center icon vertically and horizontally + * 4. Style + */ + +.uk-form-icon { + /* 1 */ + position: absolute; + top: 0; + bottom: 0; + left: 0; + /* 2 */ + width: $form-icon-width; + /* 3 */ + display: inline-flex; + justify-content: center; + align-items: center; + /* 4 */ + color: $form-icon-color; +} + +/* + * Required for `a`. + */ + +.uk-form-icon:hover { color: $form-icon-hover-color; } + +/* + * Make `input` element clickable through icon, e.g. if it's a `span` + */ + +.uk-form-icon:not(a):not(button):not(input) { pointer-events: none; } + +/* + * Input padding + */ + +.uk-form-icon:not(.uk-form-icon-flip) + .uk-input { padding-left: $form-icon-width !important; } + +/* + * Position modifier + */ + +.uk-form-icon-flip { + right: 0; + left: auto; +} + +.uk-form-icon-flip + .uk-input { padding-right: $form-icon-width !important; } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-form-misc)) {@include hook-form-misc();} + +// @mixin hook-form(){} +// @mixin hook-form-single-line(){} +// @mixin hook-form-multi-line(){} +// @mixin hook-form-focus(){} +// @mixin hook-form-disabled(){} +// @mixin hook-form-danger(){} +// @mixin hook-form-success(){} +// @mixin hook-form-blank(){} +// @mixin hook-form-blank-focus(){} +// @mixin hook-form-radio(){} +// @mixin hook-form-radio-focus(){} +// @mixin hook-form-radio-checked(){} +// @mixin hook-form-radio-checked-focus(){} +// @mixin hook-form-radio-disabled(){} +// @mixin hook-form-legend(){} +// @mixin hook-form-label(){} +// @mixin hook-form-stacked-label(){} +// @mixin hook-form-horizontal-label(){} +// @mixin hook-form-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-form-background: $inverse-global-muted-background !default; +$inverse-form-color: $inverse-global-color !default; +$inverse-form-focus-background: $inverse-global-muted-background !default; +$inverse-form-focus-color: $inverse-global-color !default; +$inverse-form-placeholder-color: $inverse-global-muted-color !default; + +$inverse-form-select-icon-color: $inverse-global-color !default; + +$inverse-form-radio-background: darken($inverse-global-muted-background, 5%) !default; + +$inverse-form-radio-checked-background: $inverse-global-primary-background !default; +$inverse-form-radio-checked-icon-color: $inverse-global-inverse-color !default; + +$inverse-form-radio-checked-focus-background: darken($inverse-global-primary-background, 10%) !default; + + + +// @mixin hook-inverse-form(){} +// @mixin hook-inverse-form-focus(){} +// @mixin hook-inverse-form-radio(){} +// @mixin hook-inverse-form-radio-focus(){} +// @mixin hook-inverse-form-radio-checked(){} +// @mixin hook-inverse-form-radio-checked-focus(){} +// @mixin hook-inverse-form-label(){} diff --git a/_sass/uikit/components/grid.scss b/_sass/uikit/components/grid.scss new file mode 100644 index 00000000..455033c7 --- /dev/null +++ b/_sass/uikit/components/grid.scss @@ -0,0 +1,352 @@ +// Name: Grid +// Description: Component to create responsive, fluid and nestable grids +// +// Component: `uk-grid` +// +// Modifiers: `uk-grid-small` +// `uk-grid-medium` +// `uk-grid-large` +// `uk-grid-collapse` +// `uk-grid-divider` +// `uk-grid-match` +// `uk-grid-stack` +// `uk-grid-margin` +// `uk-grid-margin-small` +// `uk-grid-margin-medium` +// `uk-grid-margin-large` +// `uk-grid-margin-collapse` +// +// Sub-modifier: `uk-grid-item-match` +// +// States: `uk-first-column` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$grid-gutter-horizontal: $global-gutter !default; +$grid-gutter-vertical: $grid-gutter-horizontal !default; +$grid-gutter-horizontal-l: $global-medium-gutter !default; +$grid-gutter-vertical-l: $grid-gutter-horizontal-l !default; + +$grid-small-gutter-horizontal: $global-small-gutter !default; +$grid-small-gutter-vertical: $grid-small-gutter-horizontal !default; + +$grid-medium-gutter-horizontal: $global-gutter !default; +$grid-medium-gutter-vertical: $grid-medium-gutter-horizontal !default; + +$grid-large-gutter-horizontal: $global-medium-gutter !default; +$grid-large-gutter-vertical: $grid-large-gutter-horizontal !default; +$grid-large-gutter-horizontal-l: $global-large-gutter !default; +$grid-large-gutter-vertical-l: $grid-large-gutter-horizontal-l !default; + +$grid-divider-border-width: $global-border-width !default; +$grid-divider-border: $global-border !default; + + +/* ======================================================================== + Component: Grid + ========================================================================== */ + +/* + * 1. Allow cells to wrap into the next line + * 2. Reset list + */ + +.uk-grid { + display: flex; + /* 1 */ + flex-wrap: wrap; + /* 2 */ + margin: 0; + padding: 0; + list-style: none; +} + +/* + * Grid cell + * Note: Space is allocated solely based on content dimensions, but shrinks: 0 1 auto + * Reset margin for e.g. paragraphs + */ + +.uk-grid > * { margin: 0; } + +/* + * Remove margin from the last-child + */ + +.uk-grid > * > :last-child { margin-bottom: 0; } + + +/* Gutter + ========================================================================== */ + +/* + * Default + */ + +/* Horizontal */ +.uk-grid { margin-left: (-$grid-gutter-horizontal); } +.uk-grid > * { padding-left: $grid-gutter-horizontal; } + +/* Vertical */ +.uk-grid + .uk-grid, +.uk-grid > .uk-grid-margin, +* + .uk-grid-margin { margin-top: $grid-gutter-vertical; } + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + /* Horizontal */ + .uk-grid { margin-left: (-$grid-gutter-horizontal-l); } + .uk-grid > * { padding-left: $grid-gutter-horizontal-l; } + + /* Vertical */ + .uk-grid + .uk-grid, + .uk-grid > .uk-grid-margin, + * + .uk-grid-margin { margin-top: $grid-gutter-vertical-l; } + +} + +/* + * Small + */ + +/* Horizontal */ +.uk-grid-small { margin-left: (-$grid-small-gutter-horizontal); } +.uk-grid-small > * { padding-left: $grid-small-gutter-horizontal; } + +/* Vertical */ +.uk-grid + .uk-grid-small, +.uk-grid-small > .uk-grid-margin, +* + .uk-grid-margin-small { margin-top: $grid-small-gutter-vertical; } + +/* + * Medium + */ + +/* Horizontal */ +.uk-grid-medium { margin-left: (-$grid-medium-gutter-horizontal); } +.uk-grid-medium > * { padding-left: $grid-medium-gutter-horizontal; } + +/* Vertical */ +.uk-grid + .uk-grid-medium, +.uk-grid-medium > .uk-grid-margin, +* + .uk-grid-margin-medium { margin-top: $grid-medium-gutter-vertical; } + +/* + * Large + */ + +/* Horizontal */ +.uk-grid-large { margin-left: (-$grid-large-gutter-horizontal); } +.uk-grid-large > * { padding-left: $grid-large-gutter-horizontal; } + +/* Vertical */ +.uk-grid + .uk-grid-large, +.uk-grid-large > .uk-grid-margin, +* + .uk-grid-margin-large { margin-top: $grid-large-gutter-vertical; } + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + /* Horizontal */ + .uk-grid-large { margin-left: (-$grid-large-gutter-horizontal-l); } + .uk-grid-large > * { padding-left: $grid-large-gutter-horizontal-l; } + + /* Vertical */ + .uk-grid + .uk-grid-large, + .uk-grid-large > .uk-grid-margin, + * + .uk-grid-margin-large { margin-top: $grid-large-gutter-vertical-l; } + +} + +/* + * Collapse + */ + +/* Horizontal */ +.uk-grid-collapse { margin-left: 0; } +.uk-grid-collapse > * { padding-left: 0; } + +/* Vertical */ +.uk-grid + .uk-grid-collapse, +.uk-grid-collapse > .uk-grid-margin { margin-top: 0; } + + +/* Divider + ========================================================================== */ + +.uk-grid-divider > * { position: relative; } + +.uk-grid-divider > :not(.uk-first-column)::before { + content: ""; + position: absolute; + top: 0; + bottom: 0; + border-left: $grid-divider-border-width solid $grid-divider-border; +} + +/* Vertical */ +.uk-grid-divider.uk-grid-stack > .uk-grid-margin::before { + content: ""; + position: absolute; + left: 0; + right: 0; + border-top: $grid-divider-border-width solid $grid-divider-border; +} + +/* + * Default + */ + +/* Horizontal */ +.uk-grid-divider { margin-left: -($grid-gutter-horizontal * 2); } +.uk-grid-divider > * { padding-left: ($grid-gutter-horizontal * 2); } + +.uk-grid-divider > :not(.uk-first-column)::before { left: $grid-gutter-horizontal; } + +/* Vertical */ +.uk-grid-divider.uk-grid-stack > .uk-grid-margin { margin-top: ($grid-gutter-vertical * 2); } + +.uk-grid-divider.uk-grid-stack > .uk-grid-margin::before { + top: (-$grid-gutter-vertical); + left: ($grid-gutter-horizontal * 2); +} + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + /* Horizontal */ + .uk-grid-divider { margin-left: -($grid-gutter-horizontal-l * 2); } + .uk-grid-divider > * { padding-left: ($grid-gutter-horizontal-l * 2); } + + .uk-grid-divider > :not(.uk-first-column)::before { left: $grid-gutter-horizontal-l; } + + /* Vertical */ + .uk-grid-divider.uk-grid-stack > .uk-grid-margin { margin-top: ($grid-gutter-vertical-l * 2); } + + .uk-grid-divider.uk-grid-stack > .uk-grid-margin::before { + top: (-$grid-gutter-vertical-l); + left: ($grid-gutter-horizontal-l * 2); + } + +} + +/* + * Small + */ + +/* Horizontal */ +.uk-grid-divider.uk-grid-small { margin-left: -($grid-small-gutter-horizontal * 2); } +.uk-grid-divider.uk-grid-small > * { padding-left: ($grid-small-gutter-horizontal * 2); } + +.uk-grid-divider.uk-grid-small > :not(.uk-first-column)::before { left: $grid-small-gutter-horizontal; } + +/* Vertical */ +.uk-grid-divider.uk-grid-small.uk-grid-stack > .uk-grid-margin { margin-top: ($grid-small-gutter-vertical * 2); } + +.uk-grid-divider.uk-grid-small.uk-grid-stack > .uk-grid-margin::before { + top: (-$grid-small-gutter-vertical); + left: ($grid-small-gutter-horizontal * 2); +} + +/* + * Medium + */ + +/* Horizontal */ +.uk-grid-divider.uk-grid-medium { margin-left: -($grid-medium-gutter-horizontal * 2); } +.uk-grid-divider.uk-grid-medium > * { padding-left: ($grid-medium-gutter-horizontal * 2); } + +.uk-grid-divider.uk-grid-medium > :not(.uk-first-column)::before { left: $grid-medium-gutter-horizontal; } + +/* Vertical */ +.uk-grid-divider.uk-grid-medium.uk-grid-stack > .uk-grid-margin { margin-top: ($grid-medium-gutter-vertical * 2); } + +.uk-grid-divider.uk-grid-medium.uk-grid-stack > .uk-grid-margin::before { + top: (-$grid-medium-gutter-vertical); + left: ($grid-medium-gutter-horizontal * 2); +} + +/* + * Large + */ + +/* Horizontal */ +.uk-grid-divider.uk-grid-large { margin-left: -($grid-large-gutter-horizontal * 2); } +.uk-grid-divider.uk-grid-large > * { padding-left: ($grid-large-gutter-horizontal * 2); } + +.uk-grid-divider.uk-grid-large > :not(.uk-first-column)::before { left: $grid-large-gutter-horizontal; } + +/* Vertical */ +.uk-grid-divider.uk-grid-large.uk-grid-stack > .uk-grid-margin { margin-top: ($grid-large-gutter-vertical * 2); } + +.uk-grid-divider.uk-grid-large.uk-grid-stack > .uk-grid-margin::before { + top: (-$grid-large-gutter-vertical); + left: ($grid-large-gutter-horizontal * 2); +} + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + /* Horizontal */ + .uk-grid-divider.uk-grid-large { margin-left: -($grid-large-gutter-horizontal-l * 2); } + .uk-grid-divider.uk-grid-large > * { padding-left: ($grid-large-gutter-horizontal-l * 2); } + + .uk-grid-divider.uk-grid-large > :not(.uk-first-column)::before { left: $grid-large-gutter-horizontal-l; } + + /* Vertical */ + .uk-grid-divider.uk-grid-large.uk-grid-stack > .uk-grid-margin { margin-top: ($grid-large-gutter-vertical-l * 2); } + + .uk-grid-divider.uk-grid-large.uk-grid-stack > .uk-grid-margin::before { + top: (-$grid-large-gutter-vertical-l); + left: ($grid-large-gutter-horizontal-l * 2); + } + +} + + +/* Match child of a grid cell + ========================================================================== */ + +/* + * Behave like a block element + * 1. Wrap into the next line + * 2. Take the full width, at least 100%. Only if no class from the Width component is set. + * 3. Expand width even if larger than 100%, e.g. because of negative margin (Needed for nested grids) + */ + +.uk-grid-match > *, +.uk-grid-item-match { + display: flex; + /* 1 */ + flex-wrap: wrap; +} + +.uk-grid-match > * > :not([class*='uk-width']), +.uk-grid-item-match > :not([class*='uk-width']) { + /* 2 */ + box-sizing: border-box; + width: 100%; + /* 3 */ + flex: auto; +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-grid-misc)) {@include hook-grid-misc();} + +// @mixin hook-grid-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-grid-divider-border: $inverse-global-border !default; + + diff --git a/_sass/uikit/components/heading.scss b/_sass/uikit/components/heading.scss new file mode 100644 index 00000000..97f1c185 --- /dev/null +++ b/_sass/uikit/components/heading.scss @@ -0,0 +1,214 @@ +// Name: Heading +// Description: Styles for headings +// +// Component: `uk-heading-primary` +// `uk-heading-hero` +// `uk-heading-divider` +// `uk-heading-bullet` +// `uk-heading-line` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$heading-primary-font-size: $global-xxlarge-font-size !default; +$heading-primary-line-height: 1.2 !default; + +$heading-primary-font-size-m: 3.75rem !default; // 54px +$heading-primary-line-height-m: 1.1 !default; + +$heading-hero-font-size: 4rem !default; // 64px +$heading-hero-line-height: 1.1 !default; + +$heading-hero-font-size-s: 6rem !default; // 96px +$heading-hero-line-height-s: 1 !default; + +$heading-hero-font-size-m: 8rem !default; // 128px +$heading-hero-line-height-m: 1 !default; + +$heading-divider-padding-bottom: 10px !default; +$heading-divider-border-width: $global-border-width !default; +$heading-divider-border: $global-border !default; + +$heading-bullet-top: unquote('calc(-0.1 * 1em)') !default; +$heading-bullet-height: 0.9em !default; +$heading-bullet-margin-right: 10px !default; +$heading-bullet-border-width: 5px !default; +$heading-bullet-border: $global-border !default; + +$heading-line-top: 50% !default; +$heading-line-height: $heading-line-border-width !default; +$heading-line-width: 2000px !default; +$heading-line-border-width: $global-border-width !default; +$heading-line-border: $global-border !default; +$heading-line-margin-horizontal: 0.6em !default; + + +/* ======================================================================== + Component: Heading + ========================================================================== */ + + +/* Primary + ========================================================================== */ + +.uk-heading-primary { + font-size: $heading-primary-font-size; + line-height: $heading-primary-line-height; + @if(mixin-exists(hook-heading-primary)) {@include hook-heading-primary();} +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-heading-primary { + font-size: $heading-primary-font-size-m; + line-height: $heading-primary-line-height-m; + } + +} + + +/* Hero + ========================================================================== */ + +.uk-heading-hero { + font-size: $heading-hero-font-size; + line-height: $heading-hero-line-height; + @if(mixin-exists(hook-heading-hero)) {@include hook-heading-hero();} +} + +/* Phone landscape and bigger */ +@media (min-width: $breakpoint-small) { + + .uk-heading-hero { + font-size: $heading-hero-font-size-s; + line-height: $heading-hero-line-height-s; + } + +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-heading-hero { + font-size: $heading-hero-font-size-m; + line-height: $heading-hero-line-height-m; + } + +} + + +/* Divider + ========================================================================== */ + +.uk-heading-divider { + padding-bottom: $heading-divider-padding-bottom; + border-bottom: $heading-divider-border-width solid $heading-divider-border; + @if(mixin-exists(hook-heading-divider)) {@include hook-heading-divider();} +} + + +/* Bullet + ========================================================================== */ + +.uk-heading-bullet { position: relative; } + +/* + * 1. Using `inline-block` to make it work with text alignment + * 2. Center vertically + * 3. Style + */ + +.uk-heading-bullet::before { + content: ""; + /* 1 */ + display: inline-block; + /* 2 */ + position: relative; + top: $heading-bullet-top; + vertical-align: middle; + /* 3 */ + height: $heading-bullet-height; + margin-right: $heading-bullet-margin-right; + border-left: $heading-bullet-border-width solid $heading-bullet-border; + @if(mixin-exists(hook-heading-bullet)) {@include hook-heading-bullet();} +} + + +/* Line + ========================================================================== */ + +/* + * Clip the child element + */ + +.uk-heading-line { overflow: hidden; } + +/* + * Extra markup is needed to make it work with text align + */ + +.uk-heading-line > * { + display: inline-block; + position: relative; +} + +/* + * 1. Center vertically + * 2. Make the element as large as possible. It's clipped by the container. + * 3. Style + */ + +.uk-heading-line > ::before, +.uk-heading-line > ::after { + content: ""; + /* 1 */ + position: absolute; + top: unquote('calc(#{$heading-line-top} - (#{$heading-line-height} / 2))'); + /* 2 */ + width: $heading-line-width; + /* 3 */ + border-bottom: $heading-line-border-width solid $heading-line-border; + @if(mixin-exists(hook-heading-line)) {@include hook-heading-line();} +} + +.uk-heading-line > ::before { + right: 100%; + margin-right: $heading-line-margin-horizontal; +} +.uk-heading-line > ::after { + left: 100%; + margin-left: $heading-line-margin-horizontal; +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-heading-misc)) {@include hook-heading-misc();} + +// @mixin hook-heading-primary(){} +// @mixin hook-heading-hero(){} +// @mixin hook-heading-divider(){} +// @mixin hook-heading-bullet(){} +// @mixin hook-heading-line(){} +// @mixin hook-heading-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-heading-divider-border: $inverse-global-border !default; +$inverse-heading-bullet-border: $inverse-global-border !default; +$inverse-heading-line-border: $inverse-global-border !default; + + + +// @mixin hook-inverse-heading-primary(){} +// @mixin hook-inverse-heading-hero(){} +// @mixin hook-inverse-heading-divider(){} +// @mixin hook-inverse-heading-bullet(){} +// @mixin hook-inverse-heading-line(){} diff --git a/_sass/uikit/components/icon.scss b/_sass/uikit/components/icon.scss new file mode 100644 index 00000000..2ff70ecf --- /dev/null +++ b/_sass/uikit/components/icon.scss @@ -0,0 +1,223 @@ +// Name: Icon +// Description: Component to create icons +// +// Component: `uk-icon` +// +// Modifiers: `uk-icon-image` +// `uk-icon-link` +// `uk-icon-button` +// +// States: `uk-preserve` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$icon-image-size: 20px !default; + +$icon-link-color: $global-muted-color !default; +$icon-link-hover-color: $global-color !default; +$icon-link-active-color: darken($global-color, 5%) !default; + +$icon-button-size: 36px !default; +$icon-button-border-radius: 500px !default; +$icon-button-background: $global-muted-background !default; +$icon-button-color: $global-muted-color !default; + +$icon-button-hover-background: darken($icon-button-background, 5%) !default; +$icon-button-hover-color: $global-color !default; + +$icon-button-active-background: darken($icon-button-background, 10%) !default; +$icon-button-active-color: $global-color !default; + + +/* ======================================================================== + Component: Icon + ========================================================================== */ + +/* + * Note: 1. - 7. is required for `button` elements. Needed for Close and Form Icon component. + * 1. Remove margins in Chrome, Safari and Opera. + * 2. Remove borders for `button`. + * 3. Remove border-radius in Chrome. + * 4. Address `overflow` set to `hidden` in IE. + * 5. Correct `font` properties and `color` not being inherited for `button`. + * 6. Remove the inheritance of text transform in Edge, Firefox, and IE. + * 7. Remove default `button` padding and background color + * 8. Style + * 9. Fill all SVG elements with the current text color if no `fill` attribute is set + * 10. Let the container fit the height of the icon + */ + +.uk-icon { + /* 1 */ + margin: 0; + /* 2 */ + border: none; + /* 3 */ + border-radius: 0; + /* 4 */ + overflow: visible; + /* 5 */ + font: inherit; + color: inherit; + /* 6 */ + text-transform: none; + /* 7. */ + padding: 0; + background-color: transparent; + /* 8 */ + display: inline-block; + /* 9 */ + fill: currentcolor; + /* 10 */ + line-height: 0; +} + +/* Required for `button`. */ +button.uk-icon:not(:disabled) { cursor: pointer; } + +/* + * Remove the inner border and padding in Firefox. + */ + +.uk-icon::-moz-focus-inner { + border: 0; + padding: 0; +} + +/* + * Set the fill and stroke color of all SVG elements to the current text color + * 1. Fix for uppercase attribute names in Edge. Will be fixed in Windows 10 builds 16251+ + */ + +.uk-icon [fill*='#']:not(.uk-preserve), +.uk-icon [FILL*='#']:not(.uk-preserve) { fill: currentcolor; } // 1 +.uk-icon [stroke*='#']:not(.uk-preserve), +.uk-icon [STROKE*='#']:not(.uk-preserve) { stroke: currentcolor; } // 1 + +/* + * Fix Firefox blurry SVG rendering: https://bugzilla.mozilla.org/show_bug.cgi?id=1046835 + */ + +.uk-icon > * { transform: translate(0,0); } + + +/* Image modifier + ========================================================================== */ + +/* + * Display images in icon dimensions + */ + +.uk-icon-image { + width: $icon-image-size; + height: $icon-image-size; + background-position: 50% 50%; + background-repeat: no-repeat; + background-size: contain; + vertical-align: middle; +} + + +/* Style modifiers + ========================================================================== */ + +/* + * Link + */ + +.uk-icon-link { + color: $icon-link-color; + @if(mixin-exists(hook-icon-link)) {@include hook-icon-link();} +} + +.uk-icon-link:hover, +.uk-icon-link:focus { + color: $icon-link-hover-color; + outline: none; + @if(mixin-exists(hook-icon-link-hover)) {@include hook-icon-link-hover();} +} + +/* OnClick + Active */ +.uk-icon-link:active, +.uk-active > .uk-icon-link { + color: $icon-link-active-color; + @if(mixin-exists(hook-icon-link-active)) {@include hook-icon-link-active();} +} + +/* + * Button + * 1. Center icon vertically and horizontally + */ + +.uk-icon-button { + box-sizing: border-box; + width: $icon-button-size; + height: $icon-button-size; + border-radius: $icon-button-border-radius; + background: $icon-button-background; + color: $icon-button-color; + vertical-align: middle; + /* 1 */ + display: inline-flex; + justify-content: center; + align-items: center; + @if(mixin-exists(hook-icon-button)) {@include hook-icon-button();} +} + +/* Hover + Focus */ +.uk-icon-button:hover, +.uk-icon-button:focus { + background-color: $icon-button-hover-background; + color: $icon-button-hover-color; + outline: none; + @if(mixin-exists(hook-icon-button-hover)) {@include hook-icon-button-hover();} +} + +/* OnClick + Active */ +.uk-icon-button:active, +.uk-active > .uk-icon-button { + background-color: $icon-button-active-background; + color: $icon-button-active-color; + @if(mixin-exists(hook-icon-button-active)) {@include hook-icon-button-active();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-icon-misc)) {@include hook-icon-misc();} + +// @mixin hook-icon-link(){} +// @mixin hook-icon-link-hover(){} +// @mixin hook-icon-link-active(){} +// @mixin hook-icon-button(){} +// @mixin hook-icon-button-hover(){} +// @mixin hook-icon-button-active(){} +// @mixin hook-icon-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-icon-link-color: $inverse-global-muted-color !default; +$inverse-icon-link-hover-color: $inverse-global-color !default; +$inverse-icon-link-active-color: $inverse-global-color !default; +$inverse-icon-button-background: $inverse-global-muted-background !default; +$inverse-icon-button-color: $inverse-global-muted-color !default; +$inverse-icon-button-hover-background: darken($inverse-icon-button-background, 5%) !default; +$inverse-icon-button-hover-color: $inverse-global-color !default; +$inverse-icon-button-active-background: darken($inverse-icon-button-background, 10%) !default; +$inverse-icon-button-active-color: $inverse-global-color !default; + + + +// @mixin hook-inverse-icon-link(){} +// @mixin hook-inverse-icon-link-hover(){} +// @mixin hook-inverse-icon-link-active(){} +// @mixin hook-inverse-icon-button(){} +// @mixin hook-inverse-icon-button-hover(){} +// @mixin hook-inverse-icon-button-active(){} diff --git a/_sass/uikit/components/iconnav.scss b/_sass/uikit/components/iconnav.scss new file mode 100644 index 00000000..ae739c90 --- /dev/null +++ b/_sass/uikit/components/iconnav.scss @@ -0,0 +1,140 @@ +// Name: Iconnav +// Description: Component to create icon navigations +// +// Component: `uk-iconnav` +// +// Modifier: `uk-iconnav-vertical` +// +// States: `uk-active` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$iconnav-margin-horizontal: $global-small-margin !default; +$iconnav-margin-vertical: $iconnav-margin-horizontal !default; + +$iconnav-item-color: $global-muted-color !default; + +$iconnav-item-hover-color: $global-color !default; + +$iconnav-item-active-color: $global-color !default; + + +/* ======================================================================== + Component: Iconnav + ========================================================================== */ + +/* + * 1. Allow items to wrap into the next line + * 2. Reset list + * 3. Gutter + */ + +.uk-iconnav { + display: flex; + /* 1 */ + flex-wrap: wrap; + /* 2 */ + margin: 0; + padding: 0; + list-style: none; + /* 3 */ + margin-left: (-$iconnav-margin-horizontal); + @if(mixin-exists(hook-iconnav)) {@include hook-iconnav();} +} + +/* + * 1. Space is allocated solely based on content dimensions: 0 0 auto + * 2. Gutter + */ + +.uk-iconnav > * { + /* 1 */ + flex: none; + /* 2 */ + padding-left: $iconnav-margin-horizontal; +} + + +/* Items + ========================================================================== */ + +/* + * Items must target `a` elements to exclude other elements (e.g. dropdowns) + * 1. Prevent gap if child element is `inline-block`, e.g. an icon + * 2. Style + */ + +.uk-iconnav > * > a { + /* 1 */ + display: block; + /* 2 */ + color: $iconnav-item-color; + @if(mixin-exists(hook-iconnav-item)) {@include hook-iconnav-item();} +} + +/* Hover + Focus */ +.uk-iconnav > * > a:hover, +.uk-iconnav > * > a:focus { + color: $iconnav-item-hover-color; + outline: none; + @if(mixin-exists(hook-iconnav-item-hover)) {@include hook-iconnav-item-hover();} +} + +/* Active */ +.uk-iconnav > .uk-active > a { + color: $iconnav-item-active-color; + @if(mixin-exists(hook-iconnav-item-active)) {@include hook-iconnav-item-active();} +} + + +/* Modifier: 'uk-iconnav-vertical' + ========================================================================== */ + +/* + * 1. Change direction + * 2. Gutter + */ + +.uk-iconnav-vertical { + /* 1 */ + flex-direction: column; + /* 2 */ + margin-left: 0; + margin-top: (-$iconnav-margin-vertical); +} + +/* 2 */ +.uk-iconnav-vertical > * { + padding-left: 0; + padding-top: $iconnav-margin-vertical; +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-iconnav-misc)) {@include hook-iconnav-misc();} + +// @mixin hook-iconnav(){} +// @mixin hook-iconnav-item(){} +// @mixin hook-iconnav-item-hover(){} +// @mixin hook-iconnav-item-active(){} +// @mixin hook-iconnav-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-iconnav-item-color: $inverse-global-muted-color !default; +$inverse-iconnav-item-hover-color: $inverse-global-color !default; +$inverse-iconnav-item-active-color: $inverse-global-color !default; + + + +// @mixin hook-inverse-iconnav-item(){} +// @mixin hook-inverse-iconnav-item-hover(){} +// @mixin hook-inverse-iconnav-item-active(){} \ No newline at end of file diff --git a/_sass/uikit/components/inverse.scss b/_sass/uikit/components/inverse.scss new file mode 100644 index 00000000..c1b0c07c --- /dev/null +++ b/_sass/uikit/components/inverse.scss @@ -0,0 +1,46 @@ +// Name: Inverse +// Description: Inverse component style for light or dark backgrounds +// +// Component: `uk-light` +// `uk-dark` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$inverse-global-color-mode: light !default; + +$inverse-global-color: rgba($global-inverse-color, 0.7) !default; +$inverse-global-emphasis-color: $global-inverse-color !default; +$inverse-global-muted-color: rgba($global-inverse-color, 0.5) !default; +$inverse-global-inverse-color: $global-color !default; + +$inverse-global-primary-background: $global-inverse-color !default; +$inverse-global-muted-background: rgba($global-inverse-color, 0.1) !default; + +$inverse-global-border: rgba($global-inverse-color, 0.2) !default; + + +/* ======================================================================== + Component: Inverse + ========================================================================== */ + + + +/* + * Implemented class depends on the general theme color + * `uk-light` is for light colors on dark backgrounds + * `uk-dark` is or dark colors on light backgrounds + */ + +@if ($inverse-global-color-mode == light) { .uk-light { @if(mixin-exists(hook-inverse)) {@include hook-inverse();}}} + +@if ($inverse-global-color-mode == dark) { .uk-dark { @if(mixin-exists(hook-inverse)) {@include hook-inverse();}}} + + +// Hooks +// ======================================================================== + +// @mixin hook-inverse(){} \ No newline at end of file diff --git a/_sass/uikit/components/label.scss b/_sass/uikit/components/label.scss new file mode 100644 index 00000000..6600aedf --- /dev/null +++ b/_sass/uikit/components/label.scss @@ -0,0 +1,102 @@ +// Name: Label +// Description: Component to indicate important notes +// +// Component: `uk-label` +// +// Modifiers: `uk-label-success` +// `uk-label-warning` +// `uk-label-danger` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$label-padding-vertical: 0 !default; +$label-padding-horizontal: $global-small-margin !default; +$label-background: $global-primary-background !default; +$label-line-height: $global-line-height !default; +$label-font-size: $global-small-font-size !default; +$label-color: $global-inverse-color !default; + +$label-success-background: $global-success-background !default; +$label-success-color: $global-inverse-color !default; +$label-warning-background: $global-warning-background !default; +$label-warning-color: $global-inverse-color !default; +$label-danger-background: $global-danger-background !default; +$label-danger-color: $global-inverse-color !default; + + +/* ======================================================================== + Component: Label + ========================================================================== */ + +.uk-label { + display: inline-block; + padding: $label-padding-vertical $label-padding-horizontal; + background: $label-background; + line-height: $label-line-height; + font-size: $label-font-size; + color: $label-color; + vertical-align: middle; + white-space: nowrap; + @if(mixin-exists(hook-label)) {@include hook-label();} +} + + +/* Color modifiers + ========================================================================== */ + +/* + * Success + */ + +.uk-label-success { + background-color: $label-success-background; + color: $label-success-color; + @if(mixin-exists(hook-label-success)) {@include hook-label-success();} +} + +/* + * Warning + */ + +.uk-label-warning { + background-color: $label-warning-background; + color: $label-warning-color; + @if(mixin-exists(hook-label-warning)) {@include hook-label-warning();} +} + +/* + * Danger + */ + +.uk-label-danger { + background-color: $label-danger-background; + color: $label-danger-color; + @if(mixin-exists(hook-label-danger)) {@include hook-label-danger();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-label-misc)) {@include hook-label-misc();} + +// @mixin hook-label(){} +// @mixin hook-label-success(){} +// @mixin hook-label-warning(){} +// @mixin hook-label-danger(){} +// @mixin hook-label-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-label-background: $inverse-global-primary-background !default; +$inverse-label-color: $inverse-global-inverse-color !default; + + + +// @mixin hook-inverse-label(){} \ No newline at end of file diff --git a/_sass/uikit/components/lightbox.scss b/_sass/uikit/components/lightbox.scss new file mode 100644 index 00000000..4f9c698d --- /dev/null +++ b/_sass/uikit/components/lightbox.scss @@ -0,0 +1,232 @@ +// Name: Lightbox +// Description: Component to create an lightbox image gallery +// +// Component: `uk-lightbox` +// +// Sub-objects: `uk-lightbox-page` +// `uk-lightbox-items` +// `uk-lightbox-toolbar` +// `uk-lightbox-toolbar-icon` +// `uk-lightbox-button` +// `uk-lightbox-caption` +// `uk-lightbox-iframe` +// +// States: `uk-open` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$lightbox-z-index: $global-z-index + 10 !default; +$lightbox-background: #000 !default; + +$lightbox-item-color: rgba(255,255,255,0.7) !default; + +$lightbox-toolbar-padding-vertical: 10px !default; +$lightbox-toolbar-padding-horizontal: 10px !default; +$lightbox-toolbar-background: rgba(0,0,0,0.3) !default; +$lightbox-toolbar-color: rgba(255,255,255,0.7) !default; + +$lightbox-toolbar-icon-padding: 5px !default; +$lightbox-toolbar-icon-color: rgba(255,255,255,0.7) !default; + +$lightbox-toolbar-icon-hover-color: #fff !default; + +$lightbox-button-size: 50px !default; +$lightbox-button-background: $lightbox-toolbar-background !default; +$lightbox-button-color: rgba(255,255,255,0.7) !default; + +$lightbox-button-hover-color: #fff !default; + + +/* ======================================================================== + Component: Lightbox + ========================================================================== */ + +/* + * 1. Hide by default + * 2. Set position + * 3. Allow scrolling for the modal dialog + * 4. Horizontal padding + * 5. Mask the background page + * 6. Fade-in transition + */ + +.uk-lightbox { + /* 1 */ + display: none; + /* 2 */ + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: $lightbox-z-index; + /* 5 */ + background: $lightbox-background; + /* 6 */ + opacity: 0; + transition: opacity 0.15s linear; + @if(mixin-exists(hook-lightbox)) {@include hook-lightbox();} +} + +/* + * Open + * 1. Center child + * 2. Fade-in + */ + +.uk-lightbox.uk-open { + display: block; + /* 2 */ + opacity: 1; +} + + +/* Page + ========================================================================== */ + +/* + * Prevent scrollbars + */ + +.uk-lightbox-page { overflow: hidden; } + + +/* Item + ========================================================================== */ + +/* + * 1. Center child within the viewport + * 2. Not visible by default + * 3. Color needed for spinner icon + * 4. Optimize animation + * 5. Responsiveness + * Using `vh` for `max-height` to fix image proportions after resize in Safari and Opera + * Using `vh` and `vw` to make responsive image work in IE11 + */ + +.uk-lightbox-items > * { + /* 1 */ + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + /* 2 */ + display: none; + justify-content: center; + align-items: center; + /* 3 */ + color: $lightbox-item-color; + /* 4 */ + will-change: transform, opacity; + @if(mixin-exists(hook-lightbox-item)) {@include hook-lightbox-item();} +} + +/* 5 */ +.uk-lightbox-items > * > * { + max-width: 100vw; + max-height: 100vh; +} + +.uk-lightbox-items > * > :not(iframe) { + width: auto; + height: auto; +} + +.uk-lightbox-items > .uk-active { display: flex; } + +/* Toolbar + ========================================================================== */ + +.uk-lightbox-toolbar { + padding: $lightbox-toolbar-padding-vertical $lightbox-toolbar-padding-horizontal; + background: $lightbox-toolbar-background; + color: $lightbox-toolbar-color; + @if(mixin-exists(hook-lightbox-toolbar)) {@include hook-lightbox-toolbar();} +} + +.uk-lightbox-toolbar * { color: $lightbox-toolbar-color; } + + +/* Toolbar Icon (Close) + ========================================================================== */ + +.uk-lightbox-toolbar-icon { + padding: $lightbox-toolbar-icon-padding; + color: $lightbox-toolbar-icon-color; + @if(mixin-exists(hook-lightbox-toolbar-icon)) {@include hook-lightbox-toolbar-icon();} +} + +/* + * Hover + */ + +.uk-lightbox-toolbar-icon:hover { + color: $lightbox-toolbar-icon-hover-color; + @if(mixin-exists(hook-lightbox-toolbar-icon-hover)) {@include hook-lightbox-toolbar-icon-hover();} +} + + + +/* Button (Slidenav) + ========================================================================== */ + +/* + * 1. Center icon vertically and horizontally + */ + +.uk-lightbox-button { + box-sizing: border-box; + width: $lightbox-button-size; + height: $lightbox-button-size; + background: $lightbox-button-background; + color: $lightbox-button-color; + /* 1 */ + display: inline-flex; + justify-content: center; + align-items: center; + @if(mixin-exists(hook-lightbox-button)) {@include hook-lightbox-button();} +} + +/* + * Hover + */ + +.uk-lightbox-button:hover { + color: $lightbox-button-hover-color; + @if(mixin-exists(hook-lightbox-button-hover)) {@include hook-lightbox-button-hover();} +} + + +/* Caption + ========================================================================== */ + +.uk-lightbox-caption {} + + +/* Iframe + ========================================================================== */ + +.uk-lightbox-iframe { + width: 80%; + height: 80%; +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-lightbox-misc)) {@include hook-lightbox-misc();} + +// @mixin hook-lightbox(){} +// @mixin hook-lightbox-item(){} +// @mixin hook-lightbox-toolbar(){} +// @mixin hook-lightbox-toolbar-icon(){} +// @mixin hook-lightbox-toolbar-icon-hover(){} +// @mixin hook-lightbox-button(){} +// @mixin hook-lightbox-button-hover(){} +// @mixin hook-lightbox-misc(){} diff --git a/_sass/uikit/components/link.scss b/_sass/uikit/components/link.scss new file mode 100644 index 00000000..9e0ef0e7 --- /dev/null +++ b/_sass/uikit/components/link.scss @@ -0,0 +1,123 @@ +// Name: Link +// Description: Styles for links +// +// Component: `uk-link-muted` +// `uk-link-text` +// `uk-link-heading` +// `uk-link-reset` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$link-muted-color: $global-muted-color !default; +$link-muted-hover-color: $global-color !default; + +$link-text-hover-color: $global-muted-color !default; + +$link-heading-hover-color: $global-primary-background !default; +$link-heading-hover-text-decoration: none !default; + + +/* ======================================================================== + Component: Link + ========================================================================== */ + + +/* Muted + ========================================================================== */ + +a.uk-link-muted, +.uk-link-muted a { + color: $link-muted-color; + @if(mixin-exists(hook-link-muted)) {@include hook-link-muted();} +} + +a.uk-link-muted:hover, +.uk-link-muted a:hover { + color: $link-muted-hover-color; + @if(mixin-exists(hook-link-muted-hover)) {@include hook-link-muted-hover();} +} + + +/* Text + ========================================================================== */ + +a.uk-link-text:not(:hover), +.uk-link-text a:not(:hover) { + color: inherit; + @if(mixin-exists(hook-link-text)) {@include hook-link-text();} +} + +a.uk-link-text:hover, +.uk-link-text a:hover { + color: $link-text-hover-color; + @if(mixin-exists(hook-link-text-hover)) {@include hook-link-text-hover();} +} + + +/* Heading + ========================================================================== */ + +a.uk-link-heading:not(:hover), +.uk-link-heading a:not(:hover) { + color: inherit; + @if(mixin-exists(hook-link-heading)) {@include hook-link-heading();} +} + +a.uk-link-heading:hover, +.uk-link-heading a:hover { + color: $link-heading-hover-color; + text-decoration: $link-heading-hover-text-decoration; + @if(mixin-exists(hook-link-heading-hover)) {@include hook-link-heading-hover();} +} + + +/* Reset + ========================================================================== */ + +/* + * `!important` needed to override inverse component + */ + +a.uk-link-reset, +a.uk-link-reset:hover, +.uk-link-reset a, +.uk-link-reset a:hover { + color: inherit !important; + text-decoration: none !important; + @if(mixin-exists(hook-link-reset)) {@include hook-link-reset();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-link-misc)) {@include hook-link-misc();} + +// @mixin hook-link-muted(){} +// @mixin hook-link-muted-hover(){} +// @mixin hook-link-text(){} +// @mixin hook-link-text-hover(){} +// @mixin hook-link-heading(){} +// @mixin hook-link-heading-hover(){} +// @mixin hook-link-reset(){} +// @mixin hook-link-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-link-muted-color: $inverse-global-muted-color !default; +$inverse-link-muted-hover-color: $inverse-global-color !default; +$inverse-link-text-hover-color: $inverse-global-muted-color !default; +$inverse-link-heading-hover-color: $inverse-global-primary-background !default; + + + +// @mixin hook-inverse-link-muted(){} +// @mixin hook-inverse-link-muted-hover(){} +// @mixin hook-inverse-link-text-hover(){} +// @mixin hook-inverse-link-heading-hover(){} diff --git a/_sass/uikit/components/list.scss b/_sass/uikit/components/list.scss new file mode 100644 index 00000000..ed810bb0 --- /dev/null +++ b/_sass/uikit/components/list.scss @@ -0,0 +1,187 @@ +// Name: List +// Description: Styles for lists +// +// Component: `uk-list` +// +// Modifiers: `uk-list-divider` +// `uk-list-striped` +// `uk-list-bullet` +// `uk-list-large` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$list-margin-top: $global-small-margin !default; + +$list-nested-padding-left: $global-gutter !default; + +$list-divider-margin-top: $global-small-margin !default; +$list-divider-border-width: $global-border-width !default; +$list-divider-border: $global-border !default; + +$list-striped-padding-vertical: $global-small-margin !default; +$list-striped-padding-horizontal: $global-small-margin !default; +$list-striped-background: $global-muted-background !default; + +$list-bullet-width: ($global-line-height * 1em) !default; +$list-bullet-height: $list-bullet-width !default; +$list-bullet-margin-right: $global-small-margin !default; +$list-bullet-icon-color: $global-color !default; + +$list-large-margin-top: $global-margin !default; +$list-large-divider-margin-top: $global-margin !default; +$list-large-striped-padding-vertical: $global-margin !default; +$list-large-striped-padding-horizontal: $global-small-margin !default; + +$internal-list-bullet-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%226%22%20height%3D%226%22%20viewBox%3D%220%200%206%206%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22#000%22%20cx%3D%223%22%20cy%3D%223%22%20r%3D%223%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; + + +/* ======================================================================== + Component: List + ========================================================================== */ + +.uk-list { + padding: 0; + list-style: none; +} + +/* + * Micro clearfix + */ + +.uk-list > li::before, +.uk-list > li::after { + content: ""; + display: table; +} + +.uk-list > li::after { clear: both; } + +/* + * Remove margin from the last-child + */ + +.uk-list > li > :last-child { margin-bottom: 0; } + +/* + * Nested lists + */ + +.uk-list ul { + margin: 0; + padding-left: $list-nested-padding-left; + list-style: none; +} + +/* + * Style + */ + +.uk-list > li:nth-child(n+2), +.uk-list > li > ul { margin-top: $list-margin-top; } + + +/* Style modifiers + ========================================================================== */ + +/* + * Divider + */ + +.uk-list-divider > li:nth-child(n+2) { + margin-top: $list-divider-margin-top; + padding-top: $list-divider-margin-top; + border-top: $list-divider-border-width solid $list-divider-border; + @if(mixin-exists(hook-list-divider)) {@include hook-list-divider();} +} + +/* + * Striped + */ + +.uk-list-striped > li { + padding: $list-striped-padding-vertical $list-striped-padding-horizontal; + @if(mixin-exists(hook-list-striped)) {@include hook-list-striped();} +} + +.uk-list-striped > li:nth-of-type(odd) { background: $list-striped-background; } + +.uk-list-striped > li:nth-child(n+2) { margin-top: 0; } + +/* + * Bullet + */ + +.uk-list-bullet > li { + position: relative; + padding-left: unquote('calc(#{$list-bullet-width} + #{$list-bullet-margin-right})'); +} + +.uk-list-bullet > li::before { + content: ""; + position: absolute; + top: 0; + left: 0; + width: $list-bullet-width; + height: $list-bullet-height; + @include svg-fill($internal-list-bullet-image, "#000", $list-bullet-icon-color); + background-repeat: no-repeat; + background-position: 50% 50%; + float: left; + @if(mixin-exists(hook-list-bullet)) {@include hook-list-bullet();} +} + + +/* Size modifier + ========================================================================== */ + +.uk-list-large > li:nth-child(n+2), +.uk-list-large > li > ul { margin-top: $list-large-margin-top; } + +/* + * Divider + */ + +.uk-list-large.uk-list-divider > li:nth-child(n+2) { + margin-top: $list-large-divider-margin-top; + padding-top: $list-large-divider-margin-top; +} + +/* + * Striped + */ + +.uk-list-large.uk-list-striped > li { + padding: $list-large-striped-padding-vertical $list-large-striped-padding-horizontal; + @if(mixin-exists(hook-list-striped)) {@include hook-list-striped();} +} + +.uk-list-large.uk-list-striped > li:nth-child(n+2) { margin-top: 0; } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-list-misc)) {@include hook-list-misc();} + +// @mixin hook-list-divider(){} +// @mixin hook-list-striped(){} +// @mixin hook-list-bullet(){} +// @mixin hook-list-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-list-divider-border: $inverse-global-border !default; +$inverse-list-striped-background: $inverse-global-muted-background !default; +$inverse-list-bullet-icon-color: $inverse-global-color !default; + + + +// @mixin hook-inverse-list-divider(){} +// @mixin hook-inverse-list-striped(){} +// @mixin hook-inverse-list-bullet(){} diff --git a/_sass/uikit/components/margin.scss b/_sass/uikit/components/margin.scss new file mode 100644 index 00000000..c3b13691 --- /dev/null +++ b/_sass/uikit/components/margin.scss @@ -0,0 +1,163 @@ +// Name: Margin +// Description: Utilities for margins +// +// Component: `uk-margin-*` +// `uk-margin-small-*` +// `uk-margin-medium-*` +// `uk-margin-large-*` +// `uk-margin-xlarge-*` +// `uk-margin-remove-*` +// `uk-margin-auto-*` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$margin-margin: $global-margin !default; + +$margin-small-margin: $global-small-margin !default; + +$margin-medium-margin: $global-medium-margin !default; + +$margin-large-margin: $global-medium-margin !default; +$margin-large-margin-l: $global-large-margin !default; + +$margin-xlarge-margin: $global-large-margin !default; +$margin-xlarge-margin-l: $global-xlarge-margin !default; + + +/* ======================================================================== + Component: Margin + ========================================================================== */ + +/* + * Default + */ + +.uk-margin { margin-bottom: $margin-margin; } +* + .uk-margin { margin-top: $margin-margin !important; } + +.uk-margin-top { margin-top: $margin-margin !important; } +.uk-margin-bottom { margin-bottom: $margin-margin !important; } +.uk-margin-left { margin-left: $margin-margin !important; } +.uk-margin-right { margin-right: $margin-margin !important; } + + +/* Small + ========================================================================== */ + +.uk-margin-small { margin-bottom: $margin-small-margin; } +* + .uk-margin-small { margin-top: $margin-small-margin !important; } + +.uk-margin-small-top { margin-top: $margin-small-margin !important; } +.uk-margin-small-bottom { margin-bottom: $margin-small-margin !important; } +.uk-margin-small-left { margin-left: $margin-small-margin !important; } +.uk-margin-small-right { margin-right: $margin-small-margin !important; } + + +/* Medium + ========================================================================== */ + +.uk-margin-medium { margin-bottom: $margin-medium-margin; } +* + .uk-margin-medium { margin-top: $margin-medium-margin !important; } + +.uk-margin-medium-top { margin-top: $margin-medium-margin !important; } +.uk-margin-medium-bottom { margin-bottom: $margin-medium-margin !important; } +.uk-margin-medium-left { margin-left: $margin-medium-margin !important; } +.uk-margin-medium-right { margin-right: $margin-medium-margin !important; } + + +/* Large + ========================================================================== */ + +.uk-margin-large { margin-bottom: $margin-large-margin; } +* + .uk-margin-large { margin-top: $margin-large-margin !important; } + +.uk-margin-large-top { margin-top: $margin-large-margin !important; } +.uk-margin-large-bottom { margin-bottom: $margin-large-margin !important; } +.uk-margin-large-left { margin-left: $margin-large-margin !important; } +.uk-margin-large-right { margin-right: $margin-large-margin !important; } + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + .uk-margin-large { margin-bottom: $margin-large-margin-l; } + * + .uk-margin-large { margin-top: $margin-large-margin-l !important; } + + .uk-margin-large-top { margin-top: $margin-large-margin-l !important; } + .uk-margin-large-bottom { margin-bottom: $margin-large-margin-l !important; } + .uk-margin-large-left { margin-left: $margin-large-margin-l !important; } + .uk-margin-large-right { margin-right: $margin-large-margin-l !important; } + +} + + +/* XLarge + ========================================================================== */ + +.uk-margin-xlarge { margin-bottom: $margin-xlarge-margin; } +* + .uk-margin-xlarge { margin-top: $margin-xlarge-margin !important; } + +.uk-margin-xlarge-top { margin-top: $margin-xlarge-margin !important; } +.uk-margin-xlarge-bottom { margin-bottom: $margin-xlarge-margin !important; } +.uk-margin-xlarge-left { margin-left: $margin-xlarge-margin !important; } +.uk-margin-xlarge-right { margin-right: $margin-xlarge-margin !important; } + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + .uk-margin-xlarge { margin-bottom: $margin-xlarge-margin-l; } + * + .uk-margin-xlarge { margin-top: $margin-xlarge-margin-l !important; } + + .uk-margin-xlarge-top { margin-top: $margin-xlarge-margin-l !important; } + .uk-margin-xlarge-bottom { margin-bottom: $margin-xlarge-margin-l !important; } + .uk-margin-xlarge-left { margin-left: $margin-xlarge-margin-l !important; } + .uk-margin-xlarge-right { margin-right: $margin-xlarge-margin-l !important; } + +} + + +/* Remove + ========================================================================== */ + +.uk-margin-remove { margin: 0 !important; } +.uk-margin-remove-top { margin-top: 0 !important; } +.uk-margin-remove-bottom { margin-bottom: 0 !important; } +.uk-margin-remove-left { margin-left: 0 !important; } +.uk-margin-remove-right { margin-right: 0 !important; } + +.uk-margin-remove-vertical { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.uk-margin-remove-adjacent + * { margin-top: 0 !important; } + + +/* Auto + ========================================================================== */ + +.uk-margin-auto { + margin-left: auto !important; + margin-right: auto !important; +} + +.uk-margin-auto-top { margin-top: auto !important; } +.uk-margin-auto-bottom { margin-bottom: auto !important; } +.uk-margin-auto-left { margin-left: auto !important; } +.uk-margin-auto-right { margin-right: auto !important; } + +.uk-margin-auto-vertical { + margin-top: auto !important; + margin-bottom: auto !important; +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-margin-misc)) {@include hook-margin-misc();} + +// @mixin hook-margin-misc(){} diff --git a/_sass/uikit/components/marker.scss b/_sass/uikit/components/marker.scss new file mode 100644 index 00000000..97e43609 --- /dev/null +++ b/_sass/uikit/components/marker.scss @@ -0,0 +1,63 @@ +// Name: Marker +// Description: Component to create a marker icon +// +// Component: `uk-marker` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$marker-padding: 5px !default; +$marker-background: $global-secondary-background !default; +$marker-color: $global-inverse-color !default; + +$marker-hover-color: $global-inverse-color !default; + + +/* ======================================================================== + Component: Marker + ========================================================================== */ + +/* + * Addopts `uk-icon` + */ + +.uk-marker { + padding: $marker-padding; + background: $marker-background; + color: $marker-color; + @if(mixin-exists(hook-marker)) {@include hook-marker();} +} + +/* Hover + Focus */ +.uk-marker:hover, +.uk-marker:focus { + color: $marker-hover-color; + outline: none; + @if(mixin-exists(hook-marker-hover)) {@include hook-marker-hover();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-marker-misc)) {@include hook-marker-misc();} + +// @mixin hook-marker(){} +// @mixin hook-marker-hover(){} +// @mixin hook-marker-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-marker-background: $global-muted-background !default; +$inverse-marker-color: $global-color !default; +$inverse-marker-hover-color: $global-color !default; + + + +// @mixin hook-inverse-marker(){} +// @mixin hook-inverse-marker-hover(){} diff --git a/_sass/uikit/components/mixin.scss b/_sass/uikit/components/mixin.scss new file mode 100644 index 00000000..5ed438a5 --- /dev/null +++ b/_sass/uikit/components/mixin.scss @@ -0,0 +1,32 @@ +// +// Component: Mixin +// Description: Defines mixins which are used across all components +// +// ======================================================================== + + +// SVG +// ======================================================================== + +/// Replace `$search` with `$replace` in `$string` +/// @author Hugo Giraudel +/// @param {String} $string - Initial string +/// @param {String} $search - Substring to replace +/// @param {String} $replace ('') - New value +/// @return {String} - Updated string +@function str-replace($string, $search, $replace: '') { + $index: str-index($string, $search); + + @if $index { + @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); + } + + @return $string; +} + +@mixin svg-fill($src, $color-default, $color-new){ + + $replace-src: str-replace($src, $color-default, $color-new) !default; + $replace-src: str-replace($replace-src, "#", "%23"); + background-image: url(quote($replace-src)); +} \ No newline at end of file diff --git a/_sass/uikit/components/modal.scss b/_sass/uikit/components/modal.scss new file mode 100644 index 00000000..863f008a --- /dev/null +++ b/_sass/uikit/components/modal.scss @@ -0,0 +1,368 @@ +// Name: Modal +// Description: Component to create modal dialogs +// +// Component: `uk-modal` +// +// Sub-objects: `uk-modal-page` +// `uk-modal-dialog` +// `uk-modal-header` +// `uk-modal-body` +// `uk-modal-footer` +// `uk-modal-title` +// `uk-modal-close` +// +// Adopted: `uk-modal-close-default` +// `uk-modal-close-outside` +// `uk-modal-close-full` +// +// Modifiers: `uk-modal-container` +// `uk-modal-full` +// +// States: `uk-open` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$modal-z-index: $global-z-index + 10 !default; +$modal-background: rgba(0,0,0,0.6) !default; + +$modal-padding-horizontal: 15px !default; +$modal-padding-horizontal-s: $global-gutter !default; +$modal-padding-horizontal-m: $global-medium-gutter !default; +$modal-padding-vertical: $modal-padding-horizontal !default; +$modal-padding-vertical-s: 50px !default; + +$modal-dialog-width: 600px !default; +$modal-dialog-background: $global-background !default; + +$modal-container-width: 1200px !default; + +$modal-body-padding-horizontal: $global-gutter !default; +$modal-body-padding-vertical: $global-gutter !default; + +$modal-header-padding-horizontal: $global-gutter !default; +$modal-header-padding-vertical: ($modal-header-padding-horizontal / 2) !default; +$modal-header-background: $global-muted-background !default; + +$modal-footer-padding-horizontal: $global-gutter !default; +$modal-footer-padding-vertical: ($modal-footer-padding-horizontal / 2) !default; +$modal-footer-background: $global-muted-background !default; + +$modal-title-font-size: $global-xlarge-font-size !default; +$modal-title-line-height: 1.3 !default; + +$modal-close-position: $global-small-margin !default; +$modal-close-padding: 5px !default; + +$modal-close-outside-position: 0 !default; +$modal-close-outside-translate: 100% !default; +$modal-close-outside-color: lighten($global-inverse-color, 20%) !default; +$modal-close-outside-hover-color: $global-inverse-color !default; + + +/* ======================================================================== + Component: Modal + ========================================================================== */ + +/* + * 1. Hide by default + * 2. Set position + * 3. Allow scrolling for the modal dialog + * 4. Horizontal padding + * 5. Mask the background page + * 6. Fade-in transition + */ + +.uk-modal { + /* 1 */ + display: none; + /* 2 */ + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: $modal-z-index; + /* 3 */ + overflow-y: auto; + -webkit-overflow-scrolling: touch; + /* 4 */ + padding: $modal-padding-vertical $modal-padding-horizontal; + /* 5 */ + background: $modal-background; + /* 6 */ + opacity: 0; + transition: opacity 0.15s linear; + @if(mixin-exists(hook-modal)) {@include hook-modal();} +} + +/* Phone landscape and bigger */ +@media (min-width: $breakpoint-small) { + + .uk-modal { padding: $modal-padding-vertical-s $modal-padding-horizontal-s; } + +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-modal { + padding-left: $modal-padding-horizontal-m; + padding-right: $modal-padding-horizontal-m; + } + +} + +/* + * Open + */ + +.uk-modal.uk-open { opacity: 1; } + + +/* Page + ========================================================================== */ + +/* + * Prevent scrollbars + */ + +.uk-modal-page { overflow: hidden; } + + +/* Dialog + ========================================================================== */ + +/* + * 1. Create position context for spinner and close button + * 2. Dimensions + * 3. Fix `max-width: 100%` not working in combination with flex and responsive images in IE11 + * `!important` needed to overwrite `uk-width-auto`. See `#modal-media-image` in tests + * 4. Style + * 5. Slide-in transition + */ + +.uk-modal-dialog { + /* 1 */ + position: relative; + /* 2 */ + box-sizing: border-box; + margin: 0 auto; + width: $modal-dialog-width; + /* 3 */ + max-width: unquote('calc(100% - 0.01px)') !important; + /* 4 */ + background: $modal-dialog-background; + /* 5 */ + opacity: 0; + transform: translateY(-100px); + transition: 0.3s linear; + transition-property: opacity, transform; + @if(mixin-exists(hook-modal-dialog)) {@include hook-modal-dialog();} +} + +/* + * Open + */ + +.uk-open > .uk-modal-dialog { + opacity: 1; + transform: translateY(0); +} + + +/* Size modifier + ========================================================================== */ + +/* + * Container size + * Take the same size as the Container component + */ + +.uk-modal-container .uk-modal-dialog { width: $modal-container-width; } + +/* + * Full size + * 1. Remove padding and background from modal + * 2. Reset all default declarations from modal dialog + */ + +/* 1 */ +.uk-modal-full { + padding: 0; + background: none; +} + +/* 2 */ +.uk-modal-full .uk-modal-dialog { + margin: 0; + width: 100%; + max-width: 100%; + transform: translateY(0); + @if(mixin-exists(hook-modal-full)) {@include hook-modal-full();} +} + + +/* Sections + ========================================================================== */ + +.uk-modal-body { + padding: $modal-body-padding-vertical $modal-body-padding-horizontal; + @if(mixin-exists(hook-modal-body)) {@include hook-modal-body();} +} + +.uk-modal-header { + padding: $modal-header-padding-vertical $modal-header-padding-horizontal; + background: $modal-header-background; + @if(mixin-exists(hook-modal-header)) {@include hook-modal-header();} +} + +.uk-modal-footer { + padding: $modal-footer-padding-vertical $modal-footer-padding-horizontal; + background: $modal-footer-background; + @if(mixin-exists(hook-modal-footer)) {@include hook-modal-footer();} +} + +/* + * Micro clearfix + */ + +.uk-modal-body::before, +.uk-modal-body::after, +.uk-modal-header::before, +.uk-modal-header::after, +.uk-modal-footer::before, +.uk-modal-footer::after { + content: ""; + display: table; +} + +.uk-modal-body::after, +.uk-modal-header::after, +.uk-modal-footer::after { clear: both; } + +/* + * Remove margin from the last-child + */ + +.uk-modal-body > :last-child, +.uk-modal-header > :last-child, +.uk-modal-footer > :last-child { margin-bottom: 0; } + + +/* Title + ========================================================================== */ + +.uk-modal-title { + font-size: $modal-title-font-size; + line-height: $modal-title-line-height; + @if(mixin-exists(hook-modal-title)) {@include hook-modal-title();} +} + + +/* Close + * Adopts `uk-close` + ========================================================================== */ + +[class*='uk-modal-close-'] { + position: absolute; + z-index: $modal-z-index; + top: $modal-close-position; + right: $modal-close-position; + padding: $modal-close-padding; + @if(mixin-exists(hook-modal-close)) {@include hook-modal-close();} +} + +/* + * Remove margin from adjacent element + */ + +[class*='uk-modal-close-']:first-child + * { margin-top: 0; } + +/* + * Hover + */ + +[class*='uk-modal-close-']:hover { + @if(mixin-exists(hook-modal-close-hover)) {@include hook-modal-close-hover();} +} + +/* + * Default + */ + +.uk-modal-close-default { + @if(mixin-exists(hook-modal-close-default)) {@include hook-modal-close-default();} +} + +.uk-modal-close-default:hover { + @if(mixin-exists(hook-modal-close-default-hover)) {@include hook-modal-close-default-hover();} +} + +/* + * Outside + * 1. Prevent scrollbar on small devices + */ + +.uk-modal-close-outside { + top: $modal-close-outside-position; + /* 1 */ + right: (-$modal-close-padding); + transform: translate(0, -($modal-close-outside-translate)); + color: $modal-close-outside-color; + @if(mixin-exists(hook-modal-close-outside)) {@include hook-modal-close-outside();} +} + +.uk-modal-close-outside:hover { + color: $modal-close-outside-hover-color; + @if(mixin-exists(hook-modal-close-outside-hover)) {@include hook-modal-close-outside-hover();} +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + /* 1 */ + .uk-modal-close-outside { + right: $modal-close-outside-position; + transform: translate($modal-close-outside-translate, -($modal-close-outside-translate)); + } + +} + +/* + * Full + */ + +.uk-modal-close-full { + @if(mixin-exists(hook-modal-close-full)) {@include hook-modal-close-full();} +} + +.uk-modal-close-full:hover { + @if(mixin-exists(hook-modal-close-full-hover)) {@include hook-modal-close-full-hover();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-modal-misc)) {@include hook-modal-misc();} + +// @mixin hook-modal(){} +// @mixin hook-modal-dialog(){} +// @mixin hook-modal-full(){} +// @mixin hook-modal-header(){} +// @mixin hook-modal-body(){} +// @mixin hook-modal-footer(){} +// @mixin hook-modal-title(){} +// @mixin hook-modal-close(){} +// @mixin hook-modal-close-hover(){} +// @mixin hook-modal-close-default(){} +// @mixin hook-modal-close-default-hover(){} +// @mixin hook-modal-close-outside(){} +// @mixin hook-modal-close-outside-hover(){} +// @mixin hook-modal-close-full(){} +// @mixin hook-modal-close-full-hover(){} +// @mixin hook-modal-misc(){} diff --git a/_sass/uikit/components/nav.scss b/_sass/uikit/components/nav.scss new file mode 100644 index 00000000..9d990ca2 --- /dev/null +++ b/_sass/uikit/components/nav.scss @@ -0,0 +1,357 @@ +// Name: Nav +// Description: Defines styles for list navigations +// +// Component: `uk-nav` +// +// Sub-objects: `uk-nav-header` +// `uk-nav-divider` +// `uk-nav-sub` +// +// Modifiers: `uk-nav-parent-icon` +// `uk-nav-default` +// `uk-nav-primary` +// `uk-nav-center` +// +// States: `uk-active` +// `uk-parent` +// `uk-open` +// `uk-touch` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$nav-item-padding-vertical: 5px !default; +$nav-item-padding-horizontal: 0 !default; + +$nav-sublist-padding-vertical: 5px !default; +$nav-sublist-padding-left: 15px !default; +$nav-sublist-deeper-padding-left: 15px !default; +$nav-sublist-item-padding-vertical: 2px !default; + +$nav-parent-icon-width: ($global-line-height * 1em) !default; +$nav-parent-icon-height: $nav-parent-icon-width !default; +$nav-parent-icon-color: $global-color !default; + +$nav-header-padding-vertical: $nav-item-padding-vertical !default; +$nav-header-padding-horizontal: $nav-item-padding-horizontal !default; +$nav-header-font-size: $global-small-font-size !default; +$nav-header-text-transform: uppercase !default; +$nav-header-margin-top: $global-margin !default; + +$nav-divider-margin-vertical: 5px !default; +$nav-divider-margin-horizontal: 0 !default; + +$nav-default-item-color: $global-muted-color !default; +$nav-default-item-hover-color: $global-color !default; +$nav-default-item-active-color: $global-emphasis-color !default; +$nav-default-header-color: $global-emphasis-color !default; +$nav-default-divider-border-width: $global-border-width !default; +$nav-default-divider-border: $global-border !default; +$nav-default-sublist-item-color: $global-muted-color !default; +$nav-default-sublist-item-hover-color: $global-color !default; + +$nav-primary-item-font-size: $global-large-font-size !default; +$nav-primary-item-line-height: $global-line-height !default; +$nav-primary-item-color: $global-muted-color !default; +$nav-primary-item-hover-color: $global-color !default; +$nav-primary-item-active-color: $global-emphasis-color !default; +$nav-primary-header-color: $global-emphasis-color !default; +$nav-primary-divider-border-width: $global-border-width !default; +$nav-primary-divider-border: $global-border !default; +$nav-primary-sublist-item-color: $global-muted-color !default; +$nav-primary-sublist-item-hover-color: $global-color !default; + +$internal-nav-parent-close-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20viewBox%3D%220%200%2014%2014%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolyline%20fill%3D%22none%22%20stroke%3D%22#000%22%20stroke-width%3D%221.1%22%20points%3D%2210%201%204%207%2010%2013%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; +$internal-nav-parent-open-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20viewBox%3D%220%200%2014%2014%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolyline%20fill%3D%22none%22%20stroke%3D%22#000%22%20stroke-width%3D%221.1%22%20points%3D%221%204%207%2010%2013%204%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; + + +/* ======================================================================== + Component: Nav + ========================================================================== */ + +/* + * Reset + * 1. Prepare lists + * 2. Prepare links + * 3. Remove default focus style + */ + +/* 1 */ +.uk-nav, +.uk-nav ul { + margin: 0; + padding: 0; + list-style: none; +} + +/* 2 */ +.uk-nav li > a { + display: block; + text-decoration: none; +} + +/* 3 */ +.uk-nav li > a:focus { outline: none; } + +/* + * Items + * Must target `a` elements to exclude other elements (e.g. lists) + */ + +.uk-nav > li > a { padding: $nav-item-padding-vertical $nav-item-padding-horizontal; } + + +/* Sublists + ========================================================================== */ + +/* + * Level 2 + * `ul` needed for higher specificity to override padding + */ + +ul.uk-nav-sub { + padding: $nav-sublist-padding-vertical 0 $nav-sublist-padding-vertical $nav-sublist-padding-left; + @if(mixin-exists(hook-nav-sub)) {@include hook-nav-sub();} +} + +/* + * Level 3 and deeper + */ + +.uk-nav-sub ul { padding-left: $nav-sublist-deeper-padding-left; } + +/* + * Items + */ + +.uk-nav-sub a { padding: $nav-sublist-item-padding-vertical 0; } + + +/* Parent icon modifier + ========================================================================== */ + +.uk-nav-parent-icon > .uk-parent > a::after { + content: ""; + width: $nav-parent-icon-width; + height: $nav-parent-icon-height; + float: right; + @include svg-fill($internal-nav-parent-close-image, "#000", $nav-parent-icon-color); + background-repeat: no-repeat; + background-position: 50% 50%; + @if(mixin-exists(hook-nav-parent-icon)) {@include hook-nav-parent-icon();} +} + +.uk-nav-parent-icon > .uk-parent.uk-open > a::after { @include svg-fill($internal-nav-parent-open-image, "#000", $nav-parent-icon-color); } + + +/* Header + ========================================================================== */ + +.uk-nav-header { + padding: $nav-header-padding-vertical $nav-header-padding-horizontal; + text-transform: $nav-header-text-transform; + font-size: $nav-header-font-size; + @if(mixin-exists(hook-nav-header)) {@include hook-nav-header();} +} + +.uk-nav-header:not(:first-child) { margin-top: $nav-header-margin-top; } + + +/* Divider + ========================================================================== */ + +.uk-nav-divider { + margin: $nav-divider-margin-vertical $nav-divider-margin-horizontal; + @if(mixin-exists(hook-nav-divider)) {@include hook-nav-divider();} +} + + +/* Default modifier + ========================================================================== */ + +.uk-nav-default { + @if(mixin-exists(hook-nav-default)) {@include hook-nav-default();} +} + +/* + * Items + */ + +.uk-nav-default > li > a { + color: $nav-default-item-color; + @if(mixin-exists(hook-nav-default-item)) {@include hook-nav-default-item();} +} + +/* Hover + Focus */ +.uk-nav-default > li > a:hover, +.uk-nav-default > li > a:focus { + color: $nav-default-item-hover-color; + @if(mixin-exists(hook-nav-default-item-hover)) {@include hook-nav-default-item-hover();} +} + +/* Active */ +.uk-nav-default > li.uk-active > a { + color: $nav-default-item-active-color; + @if(mixin-exists(hook-nav-default-item-active)) {@include hook-nav-default-item-active();} +} + +/* + * Header + */ + +.uk-nav-default .uk-nav-header { + color: $nav-default-header-color; + @if(mixin-exists(hook-nav-default-header)) {@include hook-nav-default-header();} +} + +/* + * Divider + */ + +.uk-nav-default .uk-nav-divider { + border-top: $nav-default-divider-border-width solid $nav-default-divider-border; + @if(mixin-exists(hook-nav-default-divider)) {@include hook-nav-default-divider();} +} + +/* + * Sublists + */ + +.uk-nav-default .uk-nav-sub a { color: $nav-default-sublist-item-color; } + +.uk-nav-default .uk-nav-sub a:hover, +.uk-nav-default .uk-nav-sub a:focus { color: $nav-default-sublist-item-hover-color; } + + +/* Primary modifier + ========================================================================== */ + +.uk-nav-primary { + @if(mixin-exists(hook-nav-primary)) {@include hook-nav-primary();} +} + +/* + * Items + */ + +.uk-nav-primary > li > a { + font-size: $nav-primary-item-font-size; + line-height: $nav-primary-item-line-height; + color: $nav-primary-item-color; + @if(mixin-exists(hook-nav-primary-item)) {@include hook-nav-primary-item();} +} + +/* Hover + Focus */ +.uk-nav-primary > li > a:hover, +.uk-nav-primary > li > a:focus { + color: $nav-primary-item-hover-color; + @if(mixin-exists(hook-nav-primary-item-hover)) {@include hook-nav-primary-item-hover();} +} + +/* Active */ +.uk-nav-primary > li.uk-active > a { + color: $nav-primary-item-active-color; + @if(mixin-exists(hook-nav-primary-item-active)) {@include hook-nav-primary-item-active();} +} + +/* + * Header + */ + +.uk-nav-primary .uk-nav-header { + color: $nav-primary-header-color; + @if(mixin-exists(hook-nav-primary-header)) {@include hook-nav-primary-header();} +} + +/* + * Divider + */ + +.uk-nav-primary .uk-nav-divider { + border-top: $nav-primary-divider-border-width solid $nav-primary-divider-border; + @if(mixin-exists(hook-nav-primary-divider)) {@include hook-nav-primary-divider();} +} + +/* + * Sublists + */ + +.uk-nav-primary .uk-nav-sub a { color: $nav-primary-sublist-item-color; } + +.uk-nav-primary .uk-nav-sub a:hover, +.uk-nav-primary .uk-nav-sub a:focus { color: $nav-primary-sublist-item-hover-color; } + + +/* Alignment modifier + ========================================================================== */ + +.uk-nav-center { text-align: center; } + +/* Sublists */ +.uk-nav-center .uk-nav-sub, +.uk-nav-center .uk-nav-sub ul { padding-left: 0; } + +/* Parent icon modifier */ +.uk-nav-center.uk-nav-parent-icon > .uk-parent > a::after { position: absolute; } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-nav-misc)) {@include hook-nav-misc();} + +// @mixin hook-nav-sub(){} +// @mixin hook-nav-parent-icon(){} +// @mixin hook-nav-header(){} +// @mixin hook-nav-divider(){} +// @mixin hook-nav-default(){} +// @mixin hook-nav-default-item(){} +// @mixin hook-nav-default-item-hover(){} +// @mixin hook-nav-default-item-active(){} +// @mixin hook-nav-default-header(){} +// @mixin hook-nav-default-divider(){} +// @mixin hook-nav-primary(){} +// @mixin hook-nav-primary-item(){} +// @mixin hook-nav-primary-item-hover(){} +// @mixin hook-nav-primary-item-active(){} +// @mixin hook-nav-primary-header(){} +// @mixin hook-nav-primary-divider(){} +// @mixin hook-nav-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-nav-parent-icon-color: $inverse-global-color !default; +$inverse-nav-default-item-color: $inverse-global-muted-color !default; +$inverse-nav-default-item-hover-color: $inverse-global-color !default; +$inverse-nav-default-item-active-color: $inverse-global-emphasis-color !default; +$inverse-nav-default-header-color: $inverse-global-emphasis-color !default; +$inverse-nav-default-divider-border: $inverse-global-border !default; +$inverse-nav-default-sublist-item-color: $inverse-global-muted-color !default; +$inverse-nav-default-sublist-item-hover-color: $inverse-global-color !default; + +$inverse-nav-primary-item-color: $inverse-global-muted-color !default; +$inverse-nav-primary-item-hover-color: $inverse-global-color !default; +$inverse-nav-primary-item-active-color: $inverse-global-emphasis-color !default; +$inverse-nav-primary-header-color: $inverse-global-emphasis-color !default; +$inverse-nav-primary-divider-border: $inverse-global-border !default; +$inverse-nav-primary-sublist-item-color: $inverse-global-muted-color !default; +$inverse-nav-primary-sublist-item-hover-color: $inverse-global-color !default; + + + +// @mixin hook-inverse-nav-parent-icon(){} +// @mixin hook-inverse-nav-default-item(){} +// @mixin hook-inverse-nav-default-item-hover(){} +// @mixin hook-inverse-nav-default-item-active(){} +// @mixin hook-inverse-nav-default-header(){} +// @mixin hook-inverse-nav-default-divider(){} +// @mixin hook-inverse-nav-primary-item(){} +// @mixin hook-inverse-nav-primary-item-hover(){} +// @mixin hook-inverse-nav-primary-item-active(){} +// @mixin hook-inverse-nav-primary-header(){} +// @mixin hook-inverse-nav-primary-divider(){} diff --git a/_sass/uikit/components/navbar.scss b/_sass/uikit/components/navbar.scss new file mode 100644 index 00000000..a1f633a3 --- /dev/null +++ b/_sass/uikit/components/navbar.scss @@ -0,0 +1,537 @@ +// Name: Navbar +// Description: Component to create horizontal navigation bars +// +// Component: `uk-navbar` +// +// Sub-objects: `uk-navbar-container` +// `uk-navbar-left` +// `uk-navbar-right` +// `uk-navbar-center` +// `uk-navbar-center-left` +// `uk-navbar-center-right` +// `uk-navbar-nav` +// `uk-navbar-item` +// `uk-navbar-toggle` +// `uk-navbar-subtitle` +// `uk-navbar-dropbar` +// +// Adopted: `uk-navbar-dropdown` + Modifiers +// `uk-navbar-dropdown-nav` +// `uk-navbar-dropdown-grid` +// `uk-navbar-toggle-icon` +// +// Modifiers: `uk-navbar-transparent` +// `uk-navbar-sticky` +// `uk-navbar-dropdown-stack` +// +// States: `uk-active` +// `uk-parent` +// `uk-open` +// +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$navbar-background: $global-muted-background !default; +$navbar-color-mode: none !default; + +$navbar-nav-item-height: 80px !default; +$navbar-nav-item-padding-horizontal: 15px !default; +$navbar-nav-item-color: $global-muted-color !default; +$navbar-nav-item-font-size: $global-font-size !default; +$navbar-nav-item-font-family: $global-font-family !default; +$navbar-nav-item-hover-color: $global-color !default; +$navbar-nav-item-onclick-color: $global-emphasis-color !default; +$navbar-nav-item-active-color: $global-emphasis-color !default; + +$navbar-item-color: $global-color !default; + +$navbar-toggle-color: $global-muted-color !default; +$navbar-toggle-hover-color: $global-color !default; + +$navbar-subtitle-font-size: $global-small-font-size !default; + +$navbar-dropdown-z-index: $global-z-index + 20 !default; +$navbar-dropdown-width: 200px !default; +$navbar-dropdown-margin: 0 !default; +$navbar-dropdown-padding: 15px !default; +$navbar-dropdown-background: $global-muted-background !default; +$navbar-dropdown-color: $global-color !default; +$navbar-dropdown-grid-gutter-horizontal: $global-gutter !default; +$navbar-dropdown-grid-gutter-vertical: $navbar-dropdown-grid-gutter-horizontal !default; + +$navbar-dropdown-dropbar-margin-top: 0 !default; +$navbar-dropdown-dropbar-margin-bottom: $navbar-dropdown-dropbar-margin-top !default; + +$navbar-dropdown-nav-item-color: $global-muted-color !default; +$navbar-dropdown-nav-item-hover-color: $global-color !default; +$navbar-dropdown-nav-item-active-color: $global-emphasis-color !default; +$navbar-dropdown-nav-header-color: $global-emphasis-color !default; +$navbar-dropdown-nav-divider-border-width: $global-border-width !default; +$navbar-dropdown-nav-divider-border: $global-border !default; +$navbar-dropdown-nav-sublist-item-color: $global-muted-color !default; +$navbar-dropdown-nav-sublist-item-hover-color: $global-color !default; + +$navbar-dropbar-background: $navbar-dropdown-background !default; +$navbar-dropbar-z-index: $global-z-index - 20 !default; + + +/* ======================================================================== + Component: Navbar + ========================================================================== */ + +/* + * 1. Create position context to center navbar group + */ + +.uk-navbar { + display: flex; + /* 1 */ + position: relative; + @if(mixin-exists(hook-navbar)) {@include hook-navbar();} +} + + +/* Container + ========================================================================== */ + +.uk-navbar-container:not(.uk-navbar-transparent) { + background: $navbar-background; + @if(mixin-exists(hook-navbar-container)) {@include hook-navbar-container();} +} + +// Color Mode +@if ( $navbar-color-mode == light ) { .uk-navbar-container:not(.uk-navbar-transparent) { @extend .uk-light !optional;} } +@if ( $navbar-color-mode == dark ) { .uk-navbar-container:not(.uk-navbar-transparent) { @extend .uk-dark !optional;} } + +/* + * Remove pseudo elements created by micro clearfix as precaution (if Container component is used) + */ + +.uk-navbar-container > ::before, +.uk-navbar-container > ::after { display: none !important; } + + +/* Groups + ========================================================================== */ + +/* + * 1. Align navs and items vertically if they have a different height + * 2. Note: IE 11 requires an extra `div` which affects the center selector + */ + +.uk-navbar-left, +.uk-navbar-right, +// 2. [class*='uk-navbar-center'], +.uk-navbar-center, +.uk-navbar-center-left > *, +.uk-navbar-center-right > * { + display: flex; + /* 1 */ + align-items: center; +} + +/* + * Horizontal alignment + * 1. Create position context for centered navbar with sub groups (left/right) + * 2. Needed for dropdowns because a new position context is created + * `z-index` must be smaller than off-canvas + * 3. Fix text wrapping if the centered section is larger than 50% of the navbar + * 4. Align sub groups for centered navbar + */ + +.uk-navbar-right { margin-left: auto; } + +.uk-navbar-center:only-child { + margin-left: auto; + margin-right: auto; + /* 1 */ + position: relative; +} + +.uk-navbar-center:not(:only-child) { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%,-50%); + /* 2 */ + z-index: $global-z-index - 10; +} + +/* 3 */ +.uk-navbar-center:not(:only-child) .uk-navbar-nav > li > a, +.uk-navbar-center:not(:only-child) .uk-navbar-item, +.uk-navbar-center:not(:only-child) .uk-navbar-toggle { white-space: nowrap; } + +/* 4 */ +.uk-navbar-center-left, +.uk-navbar-center-right { + position: absolute; + top: 0; +} + +.uk-navbar-center-left { right: 100%; } +.uk-navbar-center-right { left: 100%; } + +[class*='uk-navbar-center-'] .uk-navbar-nav > li > a, +[class*='uk-navbar-center-'] .uk-navbar-item, +[class*='uk-navbar-center-'] .uk-navbar-toggle { white-space: nowrap; } + + +/* Nav + ========================================================================== */ + +/* + * 1. Reset list + */ + +.uk-navbar-nav { + display: flex; + /* 1 */ + margin: 0; + padding: 0; + list-style: none; +} + +/* + * Allow items to wrap into the next line + * Only not `absolute` positioned groups + */ + +.uk-navbar-left, +.uk-navbar-right, +.uk-navbar-center:only-child { flex-wrap: wrap; } + +/* + * Items + * 1. Center content vertically and horizontally + * 2. Dimensions + * 3. Style + * 4. Required for `a` + */ + +.uk-navbar-nav > li > a, // Nav item +.uk-navbar-item, // Content item +.uk-navbar-toggle { // Clickable item + /* 1 */ + display: flex; + justify-content: center; + align-items: center; + /* 2 */ + box-sizing: border-box; + height: $navbar-nav-item-height; + padding: 0 $navbar-nav-item-padding-horizontal; + /* 3 */ + font-size: $navbar-nav-item-font-size; + font-family: $navbar-nav-item-font-family; + /* 4 */ + text-decoration: none; +} + +/* + * Nav items + */ + +.uk-navbar-nav > li > a { + color: $navbar-nav-item-color; + @if(mixin-exists(hook-navbar-nav-item)) {@include hook-navbar-nav-item();} +} + +/* + * Hover + * Apply hover style also to focus state and if dropdown is opened + */ + +.uk-navbar-nav > li:hover > a, +.uk-navbar-nav > li > a:focus, +.uk-navbar-nav > li > a.uk-open { + color: $navbar-nav-item-hover-color; + outline: none; + @if(mixin-exists(hook-navbar-nav-item-hover)) {@include hook-navbar-nav-item-hover();} +} + +/* OnClick */ +.uk-navbar-nav > li > a:active { + color: $navbar-nav-item-onclick-color; + @if(mixin-exists(hook-navbar-nav-item-onclick)) {@include hook-navbar-nav-item-onclick();} +} + +/* Active */ +.uk-navbar-nav > li.uk-active > a { + color: $navbar-nav-item-active-color; + @if(mixin-exists(hook-navbar-nav-item-active)) {@include hook-navbar-nav-item-active();} +} + + +/* Item + ========================================================================== */ + +.uk-navbar-item { + color: $navbar-item-color; + @if(mixin-exists(hook-navbar-item)) {@include hook-navbar-item();} +} + + +/* Toggle + ========================================================================== */ + +.uk-navbar-toggle { + color: $navbar-toggle-color; + @if(mixin-exists(hook-navbar-toggle)) {@include hook-navbar-toggle();} +} + +.uk-navbar-toggle:hover, +.uk-navbar-toggle:focus, +.uk-navbar-toggle.uk-open { + color: $navbar-toggle-hover-color; + outline: none; + text-decoration: none; + @if(mixin-exists(hook-navbar-toggle-hover)) {@include hook-navbar-toggle-hover();} +} + +/* + * Icon + * Adopts `uk-icon` + */ + +.uk-navbar-toggle-icon { + @if(mixin-exists(hook-navbar-toggle-icon)) {@include hook-navbar-toggle-icon();} +} + +/* Hover + Focus */ +:hover > .uk-navbar-toggle-icon, +:focus > .uk-navbar-toggle-icon { + @if(mixin-exists(hook-navbar-toggle-icon-hover)) {@include hook-navbar-toggle-icon-hover();} +} + + +/* Subtitle + ========================================================================== */ + +.uk-navbar-subtitle { + font-size: $navbar-subtitle-font-size; + @if(mixin-exists(hook-navbar-subtitle)) {@include hook-navbar-subtitle();} +} + + +/* Style modifiers + ========================================================================== */ + +.uk-navbar-transparent { + @if(mixin-exists(hook-navbar-transparent)) {@include hook-navbar-transparent();} +} + +.uk-navbar-sticky { + @if(mixin-exists(hook-navbar-sticky)) {@include hook-navbar-sticky();} +} + + +/* Dropdown + ========================================================================== */ + +/* + * Adopts `uk-dropdown` + * 1. Hide by default + * 2. Set position + * 3. Set a default width + * 4. Style + */ + +.uk-navbar-dropdown { + /* 1 */ + display: none; + /* 2 */ + position: absolute; + z-index: $navbar-dropdown-z-index; + /* 3 */ + box-sizing: border-box; + width: $navbar-dropdown-width; + /* 4 */ + padding: $navbar-dropdown-padding; + background: $navbar-dropdown-background; + color: $navbar-dropdown-color; + @if(mixin-exists(hook-navbar-dropdown)) {@include hook-navbar-dropdown();} +} + +/* Show */ +.uk-navbar-dropdown.uk-open { display: block; } + +/* + * Direction / Alignment modifiers + */ + +/* Direction */ +[class*='uk-navbar-dropdown-top'] { margin-top: (-$navbar-dropdown-margin); } +[class*='uk-navbar-dropdown-bottom'] { margin-top: $navbar-dropdown-margin; } +[class*='uk-navbar-dropdown-left'] { margin-left: (-$navbar-dropdown-margin); } +[class*='uk-navbar-dropdown-right'] { margin-left: $navbar-dropdown-margin; } + +/* + * Grid + * Adopts `uk-grid` + */ + +/* Gutter Horizontal */ +.uk-navbar-dropdown-grid { margin-left: (-$navbar-dropdown-grid-gutter-horizontal); } +.uk-navbar-dropdown-grid > * { padding-left: $navbar-dropdown-grid-gutter-horizontal; } + +/* Gutter Vertical */ +.uk-navbar-dropdown-grid > .uk-grid-margin { margin-top: $navbar-dropdown-grid-gutter-vertical; } + +/* Stack */ +.uk-navbar-dropdown-stack .uk-navbar-dropdown-grid > * { width: 100% !important; } + +/* + * Width modifier + */ + +.uk-navbar-dropdown-width-2:not(.uk-navbar-dropdown-stack) { width: ($navbar-dropdown-width * 2); } +.uk-navbar-dropdown-width-3:not(.uk-navbar-dropdown-stack) { width: ($navbar-dropdown-width * 3); } +.uk-navbar-dropdown-width-4:not(.uk-navbar-dropdown-stack) { width: ($navbar-dropdown-width * 4); } +.uk-navbar-dropdown-width-5:not(.uk-navbar-dropdown-stack) { width: ($navbar-dropdown-width * 5); } + +/* + * Dropbar modifier + */ + +.uk-navbar-dropdown-dropbar { + margin-top: $navbar-dropdown-dropbar-margin-top; + margin-bottom: $navbar-dropdown-dropbar-margin-bottom; + @if(mixin-exists(hook-navbar-dropdown-dropbar)) {@include hook-navbar-dropdown-dropbar();} +} + + +/* Dropdown Nav + * Adopts `uk-nav` + ========================================================================== */ + +.uk-navbar-dropdown-nav { + @if(mixin-exists(hook-navbar-dropdown-nav)) {@include hook-navbar-dropdown-nav();} +} + +/* + * Items + */ + +.uk-navbar-dropdown-nav > li > a { + color: $navbar-dropdown-nav-item-color; + @if(mixin-exists(hook-navbar-dropdown-nav-item)) {@include hook-navbar-dropdown-nav-item();} +} + +/* Hover + Focus */ +.uk-navbar-dropdown-nav > li > a:hover, +.uk-navbar-dropdown-nav > li > a:focus { + color: $navbar-dropdown-nav-item-hover-color; + @if(mixin-exists(hook-navbar-dropdown-nav-item-hover)) {@include hook-navbar-dropdown-nav-item-hover();} +} + +/* Active */ +.uk-navbar-dropdown-nav > li.uk-active > a { + color: $navbar-dropdown-nav-item-active-color; + @if(mixin-exists(hook-navbar-dropdown-nav-item-active)) {@include hook-navbar-dropdown-nav-item-active();} +} + +/* + * Header + */ + +.uk-navbar-dropdown-nav .uk-nav-header { + color: $navbar-dropdown-nav-header-color; + @if(mixin-exists(hook-navbar-dropdown-nav-header)) {@include hook-navbar-dropdown-nav-header();} +} + +/* + * Divider + */ + +.uk-navbar-dropdown-nav .uk-nav-divider { + border-top: $navbar-dropdown-nav-divider-border-width solid $navbar-dropdown-nav-divider-border; + @if(mixin-exists(hook-navbar-dropdown-nav-divider)) {@include hook-navbar-dropdown-nav-divider();} +} + +/* + * Sublists + */ + +.uk-navbar-dropdown-nav .uk-nav-sub a { color: $navbar-dropdown-nav-sublist-item-color; } + +.uk-navbar-dropdown-nav .uk-nav-sub a:hover, +.uk-navbar-dropdown-nav .uk-nav-sub a:focus { color: $navbar-dropdown-nav-sublist-item-hover-color; } + + +/* Dropbar + ========================================================================== */ + +.uk-navbar-dropbar { + background: $navbar-dropbar-background; + @if(mixin-exists(hook-navbar-dropbar)) {@include hook-navbar-dropbar();} +} + +/* + * Slide modifier + */ + +.uk-navbar-dropbar-slide { + position: absolute; + z-index: $navbar-dropbar-z-index; + left: 0; + right: 0; + @if(mixin-exists(hook-navbar-dropbar-slide)) {@include hook-navbar-dropbar-slide();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-navbar-misc)) {@include hook-navbar-misc();} + +// @mixin hook-navbar(){} +// @mixin hook-navbar-container(){} +// @mixin hook-navbar-nav-item(){} +// @mixin hook-navbar-nav-item-hover(){} +// @mixin hook-navbar-nav-item-onclick(){} +// @mixin hook-navbar-nav-item-active(){} +// @mixin hook-navbar-item(){} +// @mixin hook-navbar-toggle(){} +// @mixin hook-navbar-toggle-hover(){} +// @mixin hook-navbar-toggle-icon(){} +// @mixin hook-navbar-toggle-icon-hover(){} +// @mixin hook-navbar-subtitle(){} +// @mixin hook-navbar-transparent(){} +// @mixin hook-navbar-sticky(){} +// @mixin hook-navbar-dropdown(){} +// @mixin hook-navbar-dropdown-dropbar(){} +// @mixin hook-navbar-dropdown-nav(){} +// @mixin hook-navbar-dropdown-nav-item(){} +// @mixin hook-navbar-dropdown-nav-item-hover(){} +// @mixin hook-navbar-dropdown-nav-item-active(){} +// @mixin hook-navbar-dropdown-nav-header(){} +// @mixin hook-navbar-dropdown-nav-divider(){} +// @mixin hook-navbar-dropbar(){} +// @mixin hook-navbar-dropbar-slide(){} +// @mixin hook-navbar-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-navbar-nav-item-color: $inverse-global-muted-color !default; +$inverse-navbar-nav-item-hover-color: $inverse-global-color !default; +$inverse-navbar-nav-item-onclick-color: $inverse-global-emphasis-color !default; +$inverse-navbar-nav-item-active-color: $inverse-global-emphasis-color !default; +$inverse-navbar-item-color: $inverse-global-color !default; +$inverse-navbar-toggle-color: $inverse-global-muted-color !default; +$inverse-navbar-toggle-hover-color: $inverse-global-color !default; + + + +// @mixin hook-inverse-navbar-nav-item(){} +// @mixin hook-inverse-navbar-nav-item-hover(){} +// @mixin hook-inverse-navbar-nav-item-onclick(){} +// @mixin hook-inverse-navbar-nav-item-active(){} +// @mixin hook-inverse-navbar-item(){} +// @mixin hook-inverse-navbar-toggle(){} +// @mixin hook-inverse-navbar-toggle-hover(){} diff --git a/_sass/uikit/components/notification.scss b/_sass/uikit/components/notification.scss new file mode 100644 index 00000000..cc1ba552 --- /dev/null +++ b/_sass/uikit/components/notification.scss @@ -0,0 +1,190 @@ +// Name: Notification +// Description: Component to create notification messages +// +// Component: `uk-notification` +// +// Sub-objects: `uk-notification-message` +// +// Adopted: `uk-notification-close` +// +// Modifiers: `uk-notification-top-center` +// `uk-notification-top-right` +// `uk-notification-bottom-left` +// `uk-notification-bottom-center` +// `uk-notification-bottom-right` +// `uk-notification-message-primary` +// `uk-notification-message-success` +// `uk-notification-message-warning` +// `uk-notification-message-danger` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$notification-position: 10px !default; +$notification-z-index: $global-z-index + 40 !default; +$notification-width: 350px !default; + +$notification-message-margin-bottom: 10px !default; +$notification-message-padding: $global-small-gutter !default; +$notification-message-background: $global-muted-background !default; +$notification-message-color: $global-color !default; +$notification-message-font-size: $global-medium-font-size !default; +$notification-message-line-height: 1.4 !default; + +$notification-close-top: $notification-message-padding + 5px !default; +$notification-close-right: $notification-message-padding !default; + +$notification-message-primary-color: $global-primary-background !default; +$notification-message-success-color: $global-success-background !default; +$notification-message-warning-color: $global-warning-background !default; +$notification-message-danger-color: $global-danger-background !default; + + +/* ======================================================================== + Component: Notification + ========================================================================== */ + +/* + * 1. Set position + * 2. Dimensions + */ + +.uk-notification { + /* 1 */ + position: fixed; + top: $notification-position; + left: $notification-position; + z-index: $notification-z-index; + /* 2 */ + box-sizing: border-box; + width: $notification-width; + @if(mixin-exists(hook-notification)) {@include hook-notification();} +} + + +/* Position modifiers +========================================================================== */ + +.uk-notification-top-right, +.uk-notification-bottom-right { + left: auto; + right: $notification-position; +} + +.uk-notification-top-center, +.uk-notification-bottom-center { + left: 50%; + margin-left: ($notification-width / -2); +} + +.uk-notification-bottom-left, +.uk-notification-bottom-right, +.uk-notification-bottom-center { + top: auto; + bottom: $notification-position; +} + + +/* Responsiveness +========================================================================== */ + +/* Phones portrait and smaller */ +@media (max-width: $breakpoint-xsmall-max) { + + .uk-notification { + left: $notification-position; + right: $notification-position; + width: auto; + margin: 0; + } + +} + + +/* Message +========================================================================== */ + +.uk-notification-message { + position: relative; + margin-bottom: $notification-message-margin-bottom; + padding: $notification-message-padding; + background: $notification-message-background; + color: $notification-message-color; + font-size: $notification-message-font-size; + line-height: $notification-message-line-height; + cursor: pointer; + @if(mixin-exists(hook-notification-message)) {@include hook-notification-message();} +} + + +/* Close + * Adopts `uk-close` + ========================================================================== */ + +.uk-notification-close { + display: none; + position: absolute; + top: $notification-close-top; + right: $notification-close-right; + @if(mixin-exists(hook-notification-close)) {@include hook-notification-close();} +} + +.uk-notification-message:hover .uk-notification-close { display: block; } + + +/* Style modifiers + ========================================================================== */ + +/* + * Primary + */ + +.uk-notification-message-primary { + color: $notification-message-primary-color; + @if(mixin-exists(hook-notification-message-primary)) {@include hook-notification-message-primary();} +} + +/* + * Success + */ + +.uk-notification-message-success { + color: $notification-message-success-color; + @if(mixin-exists(hook-notification-message-success)) {@include hook-notification-message-success();} +} + +/* + * Warning + */ + +.uk-notification-message-warning { + color: $notification-message-warning-color; + @if(mixin-exists(hook-notification-message-warning)) {@include hook-notification-message-warning();} +} + +/* + * Danger + */ + +.uk-notification-message-danger { + color: $notification-message-danger-color; + @if(mixin-exists(hook-notification-message-danger)) {@include hook-notification-message-danger();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-notification-misc)) {@include hook-notification-misc();} + +// @mixin hook-notification(){} +// @mixin hook-notification-message(){} +// @mixin hook-notification-close(){} +// @mixin hook-notification-message-primary(){} +// @mixin hook-notification-message-success(){} +// @mixin hook-notification-message-warning(){} +// @mixin hook-notification-message-danger(){} +// @mixin hook-notification-misc(){} diff --git a/_sass/uikit/components/offcanvas.scss b/_sass/uikit/components/offcanvas.scss new file mode 100644 index 00000000..5fc05587 --- /dev/null +++ b/_sass/uikit/components/offcanvas.scss @@ -0,0 +1,301 @@ +// Name: Off-canvas +// Description: Component to create an off-canvas sidebar +// +// Component: `uk-offcanvas` +// +// Sub-objects: `uk-offcanvas-bar` +// `uk-offcanvas-container` +// `uk-offcanvas-content` +// `uk-offcanvas-page` +// +// Adopted: `uk-offcanvas-close` +// +// Modifiers: `uk-offcanvas-flip` +// `uk-offcanvas-bar-animation` +// `uk-offcanvas-reveal` +// `uk-offcanvas-overlay` +// `uk-offcanvas-content-animation` +// +// States: `uk-open` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$offcanvas-z-index: $global-z-index !default; + +$offcanvas-bar-width: 270px !default; +$offcanvas-bar-padding-vertical: $global-margin !default; +$offcanvas-bar-padding-horizontal: $global-margin !default; +$offcanvas-bar-background: $global-secondary-background !default; +$offcanvas-bar-color-mode: light !default; + +$offcanvas-bar-width-m: 350px !default; +$offcanvas-bar-padding-vertical-m: $global-medium-gutter !default; +$offcanvas-bar-padding-horizontal-m: $global-medium-gutter !default; + +$offcanvas-close-position: 20px !default; +$offcanvas-close-padding: 5px !default; + +$offcanvas-overlay-background: rgba(0,0,0,0.1) !default; + + +/* ======================================================================== + Component: Off-canvas + ========================================================================== */ + +/* + * 1. Hide by default + * 2. Set position + */ + +.uk-offcanvas { + /* 1 */ + display: none; + /* 2 */ + position: fixed; + top: 0; + bottom: 0; + left: 0; + z-index: $offcanvas-z-index; +} + +/* + * Flip modifier + */ + +.uk-offcanvas-flip .uk-offcanvas { + right: 0; + left: auto; +} + + +/* Bar + ========================================================================== */ + +/* + * 1. Set position + * 2. Size and style + * 3. Allow scrolling + * 4. Transform + */ + +.uk-offcanvas-bar { + /* 1 */ + position: absolute; + top: 0; + bottom: 0; + left: 0; + /* 2 */ + box-sizing: border-box; + width: $offcanvas-bar-width; + padding: $offcanvas-bar-padding-vertical $offcanvas-bar-padding-horizontal; + background: $offcanvas-bar-background; + /* 3 */ + overflow-y: auto; + -webkit-overflow-scrolling: touch; + /* 4 */ + transform: translateX(-100%); + @if(mixin-exists(hook-offcanvas-bar)) {@include hook-offcanvas-bar();} +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-offcanvas-bar { + width: $offcanvas-bar-width-m; + padding: $offcanvas-bar-padding-vertical-m $offcanvas-bar-padding-horizontal-m; + } + +} + +// Color Mode +@if ( $offcanvas-bar-color-mode == light ) { .uk-offcanvas-bar { @extend .uk-light !optional;} } +@if ( $offcanvas-bar-color-mode == dark ) { .uk-offcanvas-bar { @extend .uk-dark !optional;} } + +/* Flip modifier */ +.uk-offcanvas-flip .uk-offcanvas-bar { + left: auto; + right: 0; + transform: translateX(100%); +} + +/* + * Open + */ + +.uk-open > .uk-offcanvas-bar { transform: translateX(0); } + +/* + * Slide Animation (Used in slide and push mode) + */ + +.uk-offcanvas-bar-animation { transition: transform 0.3s ease-out; } + +/* + * Reveal Animation + * 1. Set position + * 2. Clip the bar + * 3. Animation + * 4. Reset transform + */ + +.uk-offcanvas-reveal { + /* 1 */ + position: absolute; + top: 0; + bottom: 0; + left: 0; + /* 2 */ + width: 0; + overflow: hidden; + /* 3 */ + transition: width 0.3s ease-out; +} + +.uk-offcanvas-reveal .uk-offcanvas-bar { + /* 4 */ + transform: translateX(0); +} + +.uk-open > .uk-offcanvas-reveal { width: $offcanvas-bar-width; } + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-open > .uk-offcanvas-reveal { width: $offcanvas-bar-width-m; } + +} + +/* + * Flip modifier + */ + +.uk-offcanvas-flip .uk-offcanvas-reveal { + right: 0; + left: auto; +} + + +/* Close + * Adopts `uk-close` + ========================================================================== */ + +.uk-offcanvas-close { + position: absolute; + z-index: $offcanvas-z-index; + top: $offcanvas-close-position; + right: $offcanvas-close-position; + padding: $offcanvas-close-padding; + @if(mixin-exists(hook-offcanvas-close)) {@include hook-offcanvas-close();} +} + + +/* Overlay + ========================================================================== */ + +/* + * Overlay the whole page. Needed for the `::before` + * 1. Using `100vw` so no modification is needed when off-canvas is flipped + * 2. Allow for closing with swipe gesture on devices with pointer events. + */ + +.uk-offcanvas-overlay { + /* 1 */ + width: 100vw; + /* 2 */ + touch-action: none; +} + +/* + * 1. Mask the whole page + * 2. Fade-in transition + */ + +.uk-offcanvas-overlay::before { + /* 1 */ + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background: $offcanvas-overlay-background; + /* 2 */ + opacity: 0; + transition: opacity 0.15s linear; + @if(mixin-exists(hook-offcanvas-overlay)) {@include hook-offcanvas-overlay();} +} + +.uk-offcanvas-overlay.uk-open::before { opacity: 1; } + + +/* Container + ========================================================================== */ + +/* + * Prevent horizontal scrollbar when the content is slide-out + * Has to be on the `html` element too to make it work on the `body` + */ + +.uk-offcanvas-page, +.uk-offcanvas-container { overflow-x: hidden; } + +/* + * Prevent all scrollbars if overlay is used + */ + +.uk-offcanvas-container-overlay { overflow: hidden; } + + +/* Content + ========================================================================== */ + +/* + * Prepare slide-out animation (Used in reveal and push mode) + * Using `position: left` instead of `transform` because position `fixed` elements like sticky navbars + * lose their fixed state and behaves like `absolute` within a transformed container + * Note: JS sets a fixed width and height so the page can slide-out without shrinking + * 1. Smooth scrolling + */ + +.uk-offcanvas-container .uk-offcanvas-content { + position: relative; + left: 0; + transition: left 0.3s ease-out; + /* 1 */ + -webkit-overflow-scrolling: touch; +} + +/* Disable scrolling if overlay mode */ +.uk-offcanvas-overlay .uk-offcanvas-content { overflow-y: hidden; } + +/* + * Activate slide-out animation + */ + +:not(.uk-offcanvas-flip) > .uk-offcanvas-content-animation { left: $offcanvas-bar-width; } + +.uk-offcanvas-flip > .uk-offcanvas-content-animation { left: (-$offcanvas-bar-width); } + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + :not(.uk-offcanvas-flip) > .uk-offcanvas-content-animation { left: $offcanvas-bar-width-m; } + + .uk-offcanvas-flip > .uk-offcanvas-content-animation { left: (-$offcanvas-bar-width-m); } + +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-offcanvas-misc)) {@include hook-offcanvas-misc();} + +// @mixin hook-offcanvas-bar(){} +// @mixin hook-offcanvas-close(){} +// @mixin hook-offcanvas-overlay(){} +// @mixin hook-offcanvas-misc(){} diff --git a/_sass/uikit/components/overlay.scss b/_sass/uikit/components/overlay.scss new file mode 100644 index 00000000..c3eb0a57 --- /dev/null +++ b/_sass/uikit/components/overlay.scss @@ -0,0 +1,85 @@ +// Name: Overlay +// Description: Component to create content areas overlaying an image +// +// Component: `uk-overlay` +// +// Adopted: `uk-overlay-icon` +// +// Modifier: `uk-overlay-default` +// `uk-overlay-primary` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$overlay-padding-horizontal: $global-gutter !default; +$overlay-padding-vertical: $global-gutter !default; + +$overlay-default-background: rgba($global-background, 0.8) !default; + +$overlay-primary-background: rgba($global-secondary-background, 0.8) !default; +$overlay-primary-color-mode: light !default; + + +/* ======================================================================== + Component: Overlay + ========================================================================== */ + +.uk-overlay { + padding: $overlay-padding-vertical $overlay-padding-horizontal; + @if(mixin-exists(hook-overlay)) {@include hook-overlay();} +} + +/* + * Remove margin from the last-child + */ + +.uk-overlay > :last-child { margin-bottom: 0; } + + +/* Icon + ========================================================================== */ + +.uk-overlay-icon { + @if(mixin-exists(hook-overlay-icon)) {@include hook-overlay-icon();} +} + + +/* Style modifiers + ========================================================================== */ + +/* + * Default + */ + +.uk-overlay-default { + background: $overlay-default-background; + @if(mixin-exists(hook-overlay-default)) {@include hook-overlay-default();} +} + +/* + * Primary + */ + +.uk-overlay-primary { + background: $overlay-primary-background; + @if(mixin-exists(hook-overlay-primary)) {@include hook-overlay-primary();} +} + +// Color Mode +@if ( $overlay-primary-color-mode == light ) { .uk-overlay-primary { @extend .uk-light !optional;} } +@if ( $overlay-primary-color-mode == dark ) { .uk-overlay-primary { @extend .uk-dark !optional;} } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-overlay-misc)) {@include hook-overlay-misc();} + +// @mixin hook-overlay(){} +// @mixin hook-overlay-icon(){} +// @mixin hook-overlay-default(){} +// @mixin hook-overlay-primary(){} +// @mixin hook-overlay-misc(){} diff --git a/_sass/uikit/components/padding.scss b/_sass/uikit/components/padding.scss new file mode 100644 index 00000000..0c0f1ed1 --- /dev/null +++ b/_sass/uikit/components/padding.scss @@ -0,0 +1,81 @@ +// Name: Padding +// Description: Utilities for padding +// +// Component: `uk-padding` +// `uk-padding-large` +// `uk-padding-remove-*` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$padding-padding: $global-gutter !default; +$padding-padding-l: $global-medium-gutter !default; + +$padding-small-padding: $global-small-gutter !default; + +$padding-large-padding: $global-gutter !default; +$padding-large-padding-l: $global-large-gutter !default; + + +/* ======================================================================== + Component: Padding + ========================================================================== */ + +.uk-padding { padding: $padding-padding; } + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + .uk-padding { padding: $padding-padding-l; } + +} + + +/* Small + ========================================================================== */ + +.uk-padding-small { padding: $padding-small-padding; } + + +/* Large + ========================================================================== */ + +.uk-padding-large { padding: $padding-large-padding; } + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + .uk-padding-large { padding: $padding-large-padding-l; } + +} + + +/* Remove + ========================================================================== */ + +.uk-padding-remove { padding: 0 !important; } +.uk-padding-remove-top { padding-top: 0 !important; } +.uk-padding-remove-bottom { padding-bottom: 0 !important; } +.uk-padding-remove-left { padding-left: 0 !important; } +.uk-padding-remove-right { padding-right: 0 !important; } + +.uk-padding-remove-vertical { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.uk-padding-remove-horizontal { + padding-left: 0 !important; + padding-right: 0 !important; +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-padding-misc)) {@include hook-padding-misc();} + +// @mixin hook-padding-misc(){} diff --git a/_sass/uikit/components/pagination.scss b/_sass/uikit/components/pagination.scss new file mode 100644 index 00000000..5dce23ad --- /dev/null +++ b/_sass/uikit/components/pagination.scss @@ -0,0 +1,128 @@ +// Name: Pagination +// Description: Component to create a page navigation +// +// Component: `uk-pagination` +// +// Adopted: `uk-pagination-next` +// `uk-pagination-previous` +// +// States: `uk-active` +// `uk-disabled` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$pagination-margin-horizontal: 20px !default; + +$pagination-item-color: $global-muted-color !default; +$pagination-item-hover-color: $global-color !default; +$pagination-item-hover-text-decoration: none !default; +$pagination-item-active-color: $global-color !default; +$pagination-item-disabled-color: $global-muted-color !default; + + +/* ======================================================================== + Component: Pagination + ========================================================================== */ + +/* + * 1. Allow items to wrap into the next line + * 2. Gutter + * 3. Reset list + */ + +.uk-pagination { + display: flex; + /* 1 */ + flex-wrap: wrap; + /* 2 */ + margin-left: (-$pagination-margin-horizontal); + /* 3 */ + padding: 0; + list-style: none; + @if(mixin-exists(hook-pagination)) {@include hook-pagination();} +} + +/* + * 1. Space is allocated solely based on content dimensions: 0 0 auto + * 2. Gutter + * 3. Create position context for dropdowns + */ + +.uk-pagination > * { + /* 1 */ + flex: none; + /* 2 */ + padding-left: $pagination-margin-horizontal; + /* 3 */ + position: relative; +} + + +/* Items + ========================================================================== */ + +/* + * 1. Prevent gap if child element is `inline-block`, e.g. an icon + * 2. Style + */ + +.uk-pagination > * > * { + /* 1 */ + display: block; + /* 2 */ + color: $pagination-item-color; + @if(mixin-exists(hook-pagination-item)) {@include hook-pagination-item();} +} + +/* Hover + Focus */ +.uk-pagination > * > :hover, +.uk-pagination > * > :focus { + color: $pagination-item-hover-color; + text-decoration: $pagination-item-hover-text-decoration; + @if(mixin-exists(hook-pagination-item-hover)) {@include hook-pagination-item-hover();} +} + +/* Active */ +.uk-pagination > .uk-active > * { + color: $pagination-item-active-color; + @if(mixin-exists(hook-pagination-item-active)) {@include hook-pagination-item-active();} +} + +/* Disabled */ +.uk-pagination > .uk-disabled > * { + color: $pagination-item-disabled-color; + @if(mixin-exists(hook-pagination-item-disabled)) {@include hook-pagination-item-disabled();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-pagination-misc)) {@include hook-pagination-misc();} + +// @mixin hook-pagination(){} +// @mixin hook-pagination-item(){} +// @mixin hook-pagination-item-hover(){} +// @mixin hook-pagination-item-active(){} +// @mixin hook-pagination-item-disabled(){} +// @mixin hook-pagination-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-pagination-item-color: $inverse-global-muted-color !default; +$inverse-pagination-item-hover-color: $inverse-global-color !default; +$inverse-pagination-item-active-color: $inverse-global-color !default; +$inverse-pagination-item-disabled-color: $inverse-global-muted-color !default; + + + +// @mixin hook-inverse-pagination-item(){} +// @mixin hook-inverse-pagination-item-hover(){} +// @mixin hook-inverse-pagination-item-active(){} +// @mixin hook-inverse-pagination-item-disabled(){} diff --git a/_sass/uikit/components/placeholder.scss b/_sass/uikit/components/placeholder.scss new file mode 100644 index 00000000..05c06f7d --- /dev/null +++ b/_sass/uikit/components/placeholder.scss @@ -0,0 +1,45 @@ +// Name: Placeholder +// Description: Component to create placeholder boxes +// +// Component: `uk-placeholder` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$placeholder-margin-vertical: $global-margin !default; +$placeholder-padding-vertical: $global-gutter !default; +$placeholder-padding-horizontal: $global-gutter !default; +$placeholder-background: $global-muted-background !default; + + +/* ======================================================================== + Component: Placeholder + ========================================================================== */ + +.uk-placeholder { + margin-bottom: $placeholder-margin-vertical; + padding: $placeholder-padding-vertical $placeholder-padding-horizontal; + background: $placeholder-background; + @if(mixin-exists(hook-placeholder)) {@include hook-placeholder();} +} + +/* Add margin if adjacent element */ +* + .uk-placeholder { margin-top: $placeholder-margin-vertical; } + +/* + * Remove margin from the last-child + */ + +.uk-placeholder > :last-child { margin-bottom: 0; } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-placeholder-misc)) {@include hook-placeholder-misc();} + +// @mixin hook-placeholder(){} +// @mixin hook-placeholder-misc(){} \ No newline at end of file diff --git a/_sass/uikit/components/position.scss b/_sass/uikit/components/position.scss new file mode 100644 index 00000000..799b3587 --- /dev/null +++ b/_sass/uikit/components/position.scss @@ -0,0 +1,250 @@ +// Name: Position +// Description: Utilities to position content +// +// Component: `uk-position-absolute` +// `uk-position-relative` +// `uk-position-z-index` +// `uk-position-top` +// `uk-position-bottom` +// `uk-position-left` +// `uk-position-right` +// `uk-position-top-left` +// `uk-position-top-center` +// `uk-position-top-right` +// `uk-position-bottom-left` +// `uk-position-bottom-center` +// `uk-position-bottom-right` +// `uk-position-center` +// `uk-position-center-left` +// `uk-position-center-right` +// `uk-position-cover` +// +// Modifiers: `uk-position-small` +// `uk-position-medium` +// `uk-position-large` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$position-small-margin: $global-small-gutter !default; +$position-medium-margin: $global-gutter !default; +$position-large-margin: $global-gutter !default; +$position-large-margin-l: 50px !default; + + +/* ======================================================================== + Component: Position + ========================================================================== */ + + +/* Directions + ========================================================================== */ + +[class*='uk-position-top'], +[class*='uk-position-bottom'], +[class*='uk-position-left'], +[class*='uk-position-right'], +[class*='uk-position-center'] { position: absolute !important; } + + +/* Edges + ========================================================================== */ + +/* Don't use `width: 100%` because it is wrong if the parent has padding. */ +.uk-position-top { + top: 0; + left: 0; + right: 0; +} + +.uk-position-bottom { + bottom: 0; + left: 0; + right: 0; +} + +.uk-position-left { + top: 0; + bottom: 0; + left: 0; +} + +.uk-position-right { + top: 0; + bottom: 0; + right: 0; +} + + +/* Corners + ========================================================================== */ + +.uk-position-top-left { + top: 0; + left: 0; +} + +.uk-position-top-right { + top: 0; + right: 0; +} + +.uk-position-bottom-left { + bottom: 0; + left: 0; +} + +.uk-position-bottom-right { + bottom: 0; + right: 0; +} + +/* + * Center + * 1. Fix text wrapping if content is larger than 50% of the container (Not working in Firefox) + * 2. Fix text wrapping for Firefox + */ + +.uk-position-center { + top: 50%; + left: 50%; + transform: translate(-50%,-50%); + /* 1 */ + display: table; + /* 2 */ + width: -moz-max-content; + max-width: 100%; + box-sizing: border-box; +} + +/* Vertical */ +[class*='uk-position-center-left'], +[class*='uk-position-center-right'] { + top: 50%; + transform: translateY(-50%); +} + +.uk-position-center-left { left: 0; } +.uk-position-center-right { right: 0; } + +.uk-position-center-left-out { + right: 100%; + width: max-content; +} + +.uk-position-center-right-out { + left: 100%; + width: max-content; +} + +/* Horizontal */ +.uk-position-top-center, +.uk-position-bottom-center { + left: 50%; + transform: translateX(-50%); + /* 1 */ + display: table; + /* 2 */ + width: -moz-max-content; + max-width: 100%; + box-sizing: border-box; +} + +.uk-position-top-center { top: 0; } +.uk-position-bottom-center { bottom: 0; } + + +/* Cover + ========================================================================== */ + +.uk-position-cover { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; +} + + +/* Utility + ========================================================================== */ + +.uk-position-relative { position: relative !important; } + +.uk-position-absolute { position: absolute !important; } + +.uk-position-fixed { position: fixed !important; } + +.uk-position-z-index { z-index: 1; } + + +/* Margin modifier + ========================================================================== */ + +/* + * Small + */ + +.uk-position-small { margin: $position-small-margin; } + +.uk-position-small.uk-position-center { transform: translate(-50%, -50%) translate(-$position-small-margin, (-$position-small-margin)); } + +.uk-position-small[class*='uk-position-center-left'], +.uk-position-small[class*='uk-position-center-right'] { transform: translateY(-50%) translateY(-$position-small-margin); } + +.uk-position-small.uk-position-top-center, +.uk-position-small.uk-position-bottom-center { transform: translateX(-50%) translateX(-$position-small-margin); } + +/* + * Medium + */ + +.uk-position-medium { margin: $position-medium-margin; } + +.uk-position-medium.uk-position-center { transform: translate(-50%, -50%) translate(-$position-medium-margin, (-$position-medium-margin)); } + +.uk-position-medium[class*='uk-position-center-left'], +.uk-position-medium[class*='uk-position-center-right'] { transform: translateY(-50%) translateY(-$position-medium-margin); } + +.uk-position-medium.uk-position-top-center, +.uk-position-medium.uk-position-bottom-center { transform: translateX(-50%) translateX(-$position-medium-margin); } + +/* + * Large + */ + +.uk-position-large { margin: $position-large-margin; } + +.uk-position-large.uk-position-center { transform: translate(-50%, -50%) translate(-$position-large-margin, (-$position-large-margin)); } + +.uk-position-large[class*='uk-position-center-left'], +.uk-position-large[class*='uk-position-center-right'] { transform: translateY(-50%) translateY(-$position-large-margin); } + +.uk-position-large.uk-position-top-center, +.uk-position-large.uk-position-bottom-center { transform: translateX(-50%) translateX(-$position-large-margin); } + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + .uk-position-large { margin: $position-large-margin-l; } + + .uk-position-large.uk-position-center { transform: translate(-50%, -50%) translate(-$position-large-margin-l, (-$position-large-margin-l)); } + + .uk-position-large[class*='uk-position-center-left'], + .uk-position-large[class*='uk-position-center-right'] { transform: translateY(-50%) translateY(-$position-large-margin-l); } + + .uk-position-large.uk-position-top-center, + .uk-position-large.uk-position-bottom-center { transform: translateX(-50%) translateX(-$position-large-margin-l); } + +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-position-misc)) {@include hook-position-misc();} + +// @mixin hook-position-misc(){} diff --git a/_sass/uikit/components/print.scss b/_sass/uikit/components/print.scss new file mode 100644 index 00000000..6162df52 --- /dev/null +++ b/_sass/uikit/components/print.scss @@ -0,0 +1,61 @@ +// Name: Print +// Description: Optimize page for printing +// +// Adapted from http://github.com/h5bp/html5-boilerplate +// +// Modifications: Removed link `href` and `title` related rules +// +// ======================================================================== + + +/* ======================================================================== + Component: Print + ========================================================================== */ + +@media print { + + *, + *::before, + *::after { + background: transparent !important; + color: black !important; + box-shadow: none !important; + text-shadow: none !important; + } + + a, + a:visited { text-decoration: underline; } + + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + + thead { display: table-header-group; } + + tr, + img { page-break-inside: avoid; } + + img { max-width: 100% !important; } + + @page { margin: 0.5cm; } + + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + + h2, + h3 { page-break-after: avoid; } + + @if(mixin-exists(hook-print)) {@include hook-print();} + +} + +// Hooks +// ======================================================================== + +// @mixin hook-print(){} diff --git a/_sass/uikit/components/progress.scss b/_sass/uikit/components/progress.scss new file mode 100644 index 00000000..4575513e --- /dev/null +++ b/_sass/uikit/components/progress.scss @@ -0,0 +1,105 @@ +// Name: Progress +// Description: Component to create progress bars +// +// Component: `uk-progress` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$progress-height: 15px !default; +$progress-margin-vertical: $global-margin !default; +$progress-background: $global-muted-background !default; + +$progress-bar-background: $global-primary-background !default; + + +/* ======================================================================== + Component: Progress + ========================================================================== */ + +/* + * 1. Add the correct vertical alignment in Chrome, Firefox, and Opera. + * 2. Remove default style + * 3. Behave like a block element + * 4. Remove borders in Firefox and Edge + * 5. Set background color for progress container in Firefox, IE11 and Edge + * 6. Style + */ + +.uk-progress { + /* 1 */ + vertical-align: baseline; + /* 2 */ + -webkit-appearance: none; + -moz-appearance: none; + /* 3 */ + display: block; + width: 100%; + /* 4 */ + border: 0; + /* 5 */ + background-color: $progress-background; + /* 6 */ + margin-bottom: $progress-margin-vertical; + height: $progress-height; + @if(mixin-exists(hook-progress)) {@include hook-progress();} +} + +/* Add margin if adjacent element */ +* + .uk-progress { margin-top: $progress-margin-vertical; } + +/* + * Remove animated circles for indeterminate state in IE11 and Edge + */ + +.uk-progress:indeterminate { color: transparent; } + +/* + * Progress container + * 2. Remove progress bar for indeterminate state in Firefox + */ + +.uk-progress::-webkit-progress-bar { + background-color: $progress-background; + @if(mixin-exists(hook-progress)) {@include hook-progress();} +} + +/* 2 */ +.uk-progress:indeterminate::-moz-progress-bar { width: 0; } + +/* + * Progress bar + * 1. Remove right border in IE11 and Edge + */ + +.uk-progress::-webkit-progress-value { + background-color: $progress-bar-background; + transition: width 0.6s ease; + @if(mixin-exists(hook-progress-bar)) {@include hook-progress-bar();} +} + +.uk-progress::-moz-progress-bar { + background-color: $progress-bar-background; + @if(mixin-exists(hook-progress-bar)) {@include hook-progress-bar();} +} + +.uk-progress::-ms-fill { + background-color: $progress-bar-background; + transition: width 0.6s ease; + /* 1 */ + border: 0; + @if(mixin-exists(hook-progress-bar)) {@include hook-progress-bar();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-progress-misc)) {@include hook-progress-misc();} + +// @mixin hook-progress(){} +// @mixin hook-progress-bar(){} +// @mixin hook-progress-misc(){} diff --git a/_sass/uikit/components/search.scss b/_sass/uikit/components/search.scss new file mode 100644 index 00000000..78a1bf50 --- /dev/null +++ b/_sass/uikit/components/search.scss @@ -0,0 +1,328 @@ +// Name: Search +// Description: Component to create the search +// +// Component: `uk-search` +// +// Sub-objects: `uk-search-input` +// `uk-search-toggle` +// +// Adopted: `uk-search-icon` +// +// Modifier: `uk-search-default` +// `uk-search-navbar` +// `uk-search-large` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$search-color: $global-color !default; +$search-placeholder-color: $global-muted-color !default; + +$search-icon-color: $global-muted-color !default; + +$search-default-width: 180px !default; +$search-default-height: $global-control-height !default; +$search-default-padding-horizontal: 6px !default; +$search-default-background: $global-muted-background !default; +$search-default-focus-background: $search-default-background !default; + +$search-default-icon-width: $global-control-height !default; + +$search-navbar-width: 400px !default; +$search-navbar-height: 40px !default; +$search-navbar-background: transparent !default; +$search-navbar-font-size: $global-large-font-size !default; + +$search-navbar-icon-width: 40px !default; + +$search-large-width: 500px !default; +$search-large-height: 80px !default; +$search-large-background: transparent !default; +$search-large-font-size: $global-xxlarge-font-size !default; + +$search-large-icon-width: 80px !default; + +$search-toggle-color: $global-muted-color !default; +$search-toggle-hover-color: $global-color !default; + + +/* ======================================================================== + Component: Search + ========================================================================== */ + +/* + * 1. Container fits its content + * 2. Create position context + * 3. Prevent content overflow + * 4. Reset `form` + */ + +.uk-search { + /* 1 */ + display: inline-block; + /* 2 */ + position: relative; + /* 3 */ + max-width: 100%; + /* 4 */ + margin: 0; +} + + +/* Input + ========================================================================== */ + +/* + * Remove the inner padding and cancel buttons in Chrome on OS X and Safari on OS X. + */ + +.uk-search-input::-webkit-search-cancel-button, +.uk-search-input::-webkit-search-decoration { -webkit-appearance: none; } + +/* + * Removes placeholder transparency in Firefox. + */ + +.uk-search-input::-moz-placeholder { opacity: 1; } + +/* + * 1. Define consistent box sizing. + * 2. Address margins set differently in Firefox/IE and Chrome/Safari/Opera. + * 3. Remove `border-radius` in iOS. + * 4. Change font properties to `inherit` in all browsers + * 5. Show the overflow in Edge. + * 6. Remove default style in iOS. + * 7. Vertical alignment + * 8. Take the full container width + * 9. Style + */ + +.uk-search-input { + /* 1 */ + box-sizing: border-box; + /* 2 */ + margin: 0; + /* 3 */ + border-radius: 0; + /* 4 */ + font: inherit; + /* 5 */ + overflow: visible; + /* 6 */ + -webkit-appearance: none; + /* 7 */ + vertical-align: middle; + /* 8 */ + width: 100%; + /* 9 */ + border: none; + color: $search-color; + @if(mixin-exists(hook-search-input)) {@include hook-search-input();} +} + +.uk-search-input:focus { outline: none; } + +/* Placeholder */ +.uk-search-input:-ms-input-placeholder { color: $search-placeholder-color !important; } +.uk-search-input::placeholder { color: $search-placeholder-color; } + + +/* Icon (Adopts `uk-icon`) + ========================================================================== */ + +/* + * Remove default focus style + */ + +.uk-search-icon:focus { outline: none; } + +/* + * Position above input + * 1. Set position + * 2. Center icon vertically and horizontally + * 3. Style + */ + +.uk-search .uk-search-icon { + /* 1 */ + position: absolute; + top: 0; + bottom: 0; + left: 0; + /* 2 */ + display: inline-flex; + justify-content: center; + align-items: center; + /* 3 */ + color: $search-icon-color; +} + +/* + * Required for `a`. + */ + +.uk-search .uk-search-icon:hover { color: $search-icon-color; } + +/* + * Make `input` element clickable through icon, e.g. if it's a `span` + */ + +.uk-search .uk-search-icon:not(a):not(button):not(input) { pointer-events: none; } + +/* + * Position modifier + */ + +.uk-search .uk-search-icon-flip { + right: 0; + left: auto; +} + + +/* Default modifier + ========================================================================== */ + +.uk-search-default { width: $search-default-width; } + +/* + * Input + */ + +.uk-search-default .uk-search-input { + height: $search-default-height; + padding-left: $search-default-padding-horizontal; + padding-right: $search-default-padding-horizontal; + background: $search-default-background; + @if(mixin-exists(hook-search-default-input)) {@include hook-search-default-input();} +} + +/* Focus */ +.uk-search-default .uk-search-input:focus { + background-color: $search-default-focus-background; + @if(mixin-exists(hook-search-default-input-focus)) {@include hook-search-default-input-focus();} +} + +/* + * Icon + */ + +.uk-search-default .uk-search-icon { width: $search-default-icon-width; } + +.uk-search-default .uk-search-icon:not(.uk-search-icon-flip) + .uk-search-input { padding-left: ($search-default-icon-width); } +.uk-search-default .uk-search-icon-flip + .uk-search-input { padding-right: ($search-default-icon-width); } + + +/* Navbar modifier + ========================================================================== */ + +.uk-search-navbar { width: $search-navbar-width; } + +/* + * Input + */ + +.uk-search-navbar .uk-search-input { + height: $search-navbar-height; + background: $search-navbar-background; + font-size: $search-navbar-font-size; + @if(mixin-exists(hook-search-navbar-input)) {@include hook-search-navbar-input();} +} + +/* + * Icon + */ + +.uk-search-navbar .uk-search-icon { width: $search-navbar-icon-width; } + +.uk-search-navbar .uk-search-icon:not(.uk-search-icon-flip) + .uk-search-input { padding-left: ($search-navbar-icon-width); } +.uk-search-navbar .uk-search-icon-flip + .uk-search-input { padding-right: ($search-navbar-icon-width); } + + +/* Large modifier + ========================================================================== */ + +.uk-search-large { width: $search-large-width; } + +/* + * Input + */ + +.uk-search-large .uk-search-input { + height: $search-large-height; + background: $search-large-background; + font-size: $search-large-font-size; + @if(mixin-exists(hook-search-large-input)) {@include hook-search-large-input();} +} + +/* + * Icon + */ + +.uk-search-large .uk-search-icon { width: $search-large-icon-width; } + +.uk-search-large .uk-search-icon:not(.uk-search-icon-flip) + .uk-search-input { padding-left: ($search-large-icon-width); } +.uk-search-large .uk-search-icon-flip + .uk-search-input { padding-right: ($search-large-icon-width); } + + +/* Toggle + ========================================================================== */ + +.uk-search-toggle { + color: $search-toggle-color; + @if(mixin-exists(hook-search-toggle)) {@include hook-search-toggle();} +} + +/* Hover + Focus */ +.uk-search-toggle:hover, +.uk-search-toggle:focus { + color: $search-toggle-hover-color; + @if(mixin-exists(hook-search-toggle-hover)) {@include hook-search-toggle-hover();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-search-misc)) {@include hook-search-misc();} + +// @mixin hook-search-input(){} +// @mixin hook-search-default-input(){} +// @mixin hook-search-default-input-focus(){} +// @mixin hook-search-navbar-input(){} +// @mixin hook-search-large-input(){} + +// @mixin hook-search-toggle(){} +// @mixin hook-search-toggle-hover(){} + +// @mixin hook-search-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-search-color: $inverse-global-color !default; +$inverse-search-placeholder-color: $inverse-global-muted-color !default; + +$inverse-search-icon-color: $inverse-global-muted-color !default; + +$inverse-search-default-background: $inverse-global-muted-background !default; +$inverse-search-default-focus-background: $inverse-search-default-background !default; + +$inverse-search-navbar-background: transparent !default; + +$inverse-search-large-background: transparent !default; + +$inverse-search-toggle-color: $inverse-global-muted-color !default; +$inverse-search-toggle-hover-color: $inverse-global-color !default; + + + +// @mixin hook-inverse-search-default-input(){} +// @mixin hook-inverse-search-default-input-focus(){} +// @mixin hook-inverse-search-navbar-input(){} +// @mixin hook-inverse-search-large-input(){} +// @mixin hook-inverse-search-toggle(){} +// @mixin hook-inverse-search-toggle-hover(){} diff --git a/_sass/uikit/components/section.scss b/_sass/uikit/components/section.scss new file mode 100644 index 00000000..3c0707a1 --- /dev/null +++ b/_sass/uikit/components/section.scss @@ -0,0 +1,226 @@ +// Name: Section +// Description: Component to create horizontal layout section +// +// Component: `uk-section` +// +// Modifiers: `uk-section-xsmall` +// `uk-section-small` +// `uk-section-large` +// `uk-section-xlarge` +// `uk-section-default` +// `uk-section-muted` +// `uk-section-primary` +// `uk-section-secondary` +// `uk-section-overlap` +// +// States: `uk-preserve-color` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$section-padding-vertical: $global-medium-margin !default; +$section-padding-vertical-m: $global-large-margin !default; + +$section-xsmall-padding-vertical: $global-margin !default; + +$section-small-padding-vertical: $global-medium-margin !default; + +$section-large-padding-vertical: $global-large-margin !default; +$section-large-padding-vertical-m: $global-xlarge-margin !default; + +$section-xlarge-padding-vertical: $global-xlarge-margin !default; +$section-xlarge-padding-vertical-m: ($global-large-margin + $global-xlarge-margin) !default; + +$section-default-background: $global-background !default; + +$section-muted-background: $global-muted-background !default; + +$section-primary-background: $global-primary-background !default; +$section-primary-color-mode: light !default; + +$section-secondary-background: $global-secondary-background !default; +$section-secondary-color-mode: light !default; + + +/* ======================================================================== + Component: Section + ========================================================================== */ + +/* + * 1. Make it work with `100vh` and height in general + */ + +.uk-section { + box-sizing: border-box; /* 1 */ + padding-top: $section-padding-vertical; + padding-bottom: $section-padding-vertical; + @if(mixin-exists(hook-section)) {@include hook-section();} +} + +/* Desktop and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-section { + // padding-top: $section-padding-vertical-m; + // padding-bottom: $section-padding-vertical-m; + padding-top: 15px; + padding-bottom: 15px; + } + +} + +/* + * Micro clearfix + */ + +.uk-section::before, +.uk-section::after { + content: ""; + display: table; +} + +.uk-section::after { clear: both; } + +/* + * Remove margin from the last-child + */ + +.uk-section > :last-child { margin-bottom: 0; } + + +/* Size modifiers + ========================================================================== */ + +/* + * XSmall + */ + +.uk-section-xsmall { + padding-top: $section-xsmall-padding-vertical; + padding-bottom: $section-xsmall-padding-vertical; +} + +/* + * Small + */ + +.uk-section-small { + padding-top: $section-small-padding-vertical; + padding-bottom: $section-small-padding-vertical; +} + +/* + * Large + */ + +.uk-section-large { + padding-top: $section-large-padding-vertical; + padding-bottom: $section-large-padding-vertical; +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-section-large { + padding-top: $section-large-padding-vertical-m; + padding-bottom: $section-large-padding-vertical-m; + } + +} + + +/* + * XLarge + */ + +.uk-section-xlarge { + padding-top: $section-xlarge-padding-vertical; + padding-bottom: $section-xlarge-padding-vertical; +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-section-xlarge { + padding-top: $section-xlarge-padding-vertical-m; + padding-bottom: $section-xlarge-padding-vertical-m; + } + +} + + +/* Style modifiers + ========================================================================== */ + +/* + * Default + */ + +.uk-section-default { + background: $section-default-background; + @if(mixin-exists(hook-section-default)) {@include hook-section-default();} +} + +/* + * Muted + */ + +.uk-section-muted { + background: $section-muted-background; + @if(mixin-exists(hook-section-muted)) {@include hook-section-muted();} +} + +/* + * Primary + */ + +.uk-section-primary { + background: $section-primary-background; + @if(mixin-exists(hook-section-primary)) {@include hook-section-primary();} +} + +@if ( $section-primary-color-mode == light ) { .uk-section-primary:not(.uk-preserve-color) { @extend .uk-light !optional;} } +@if ( $section-primary-color-mode == dark ) { .uk-section-primary:not(.uk-preserve-color) { @extend .uk-dark !optional;} } + + +/* + * Secondary + */ + +.uk-section-secondary { + background: $section-secondary-background; + @if(mixin-exists(hook-section-secondary)) {@include hook-section-secondary();} +} + +@if ( $section-secondary-color-mode == light ) { .uk-section-secondary:not(.uk-preserve-color) { @extend .uk-light !optional;} } +@if ( $section-secondary-color-mode == dark ) { .uk-section-secondary:not(.uk-preserve-color) { @extend .uk-dark !optional;} } + + +/* Overlap modifier + ========================================================================== */ + +/* + * Reserved modifier to make a section overlap another section with an border image + * Implemented by the theme + */ + +.uk-section-overlap { + @if(mixin-exists(hook-section-overlap)) {@include hook-section-overlap();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-section-misc)) {@include hook-section-misc();} + +// @mixin hook-section(){} +// @mixin hook-section-default(){} +// @mixin hook-section-muted(){} +// @mixin hook-section-secondary(){} +// @mixin hook-section-primary(){} +// @mixin hook-section-overlap(){} +// @mixin hook-section-misc(){} diff --git a/_sass/uikit/components/slidenav.scss b/_sass/uikit/components/slidenav.scss new file mode 100644 index 00000000..0b9af8f2 --- /dev/null +++ b/_sass/uikit/components/slidenav.scss @@ -0,0 +1,122 @@ +// Name: Slidenav +// Description: Component to create previous/next icon navigations +// +// Component: `uk-slidenav` +// +// Sub-objects: `uk-slidenav-container` +// +// Modifiers: `uk-slidenav-previous` +// `uk-slidenav-next` +// `uk-slidenav-large` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$slidenav-padding-vertical: 5px !default; +$slidenav-padding-horizontal: 10px !default; + +$slidenav-color: rgba($global-color, 0.5) !default; +$slidenav-hover-color: rgba($global-color, 0.9) !default; +$slidenav-active-color: rgba($global-color, 0.5) !default; + +$slidenav-large-padding-vertical: 10px !default; +$slidenav-large-padding-horizontal: $slidenav-large-padding-vertical !default; + + +/* ======================================================================== + Component: Slidenav + ========================================================================== */ + +/* + * Adopts `uk-icon` + */ + +.uk-slidenav { + padding: $slidenav-padding-vertical $slidenav-padding-horizontal; + color: $slidenav-color; + @if(mixin-exists(hook-slidenav)) {@include hook-slidenav();} +} + +/* Hover + Focus */ +.uk-slidenav:hover, +.uk-slidenav:focus { + color: $slidenav-hover-color; + outline: none; + @if(mixin-exists(hook-slidenav-hover)) {@include hook-slidenav-hover();} +} + +/* OnClick */ +.uk-slidenav:active { + color: $slidenav-active-color; + @if(mixin-exists(hook-slidenav-active)) {@include hook-slidenav-active();} +} + + +/* Icon modifier + ========================================================================== */ + +/* + * Previous + */ + +.uk-slidenav-previous { + @if(mixin-exists(hook-slidenav-previous)) {@include hook-slidenav-previous();} +} + +/* + * Next + */ + +.uk-slidenav-next { + @if(mixin-exists(hook-slidenav-next)) {@include hook-slidenav-next();} +} + + +/* Size modifier + ========================================================================== */ + +.uk-slidenav-large { + padding: $slidenav-large-padding-vertical $slidenav-large-padding-horizontal; + @if(mixin-exists(hook-slidenav-large)) {@include hook-slidenav-large();} +} + + +/* Container + ========================================================================== */ + +.uk-slidenav-container { + display: flex; + @if(mixin-exists(hook-slidenav-container)) {@include hook-slidenav-container();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-slidenav-misc)) {@include hook-slidenav-misc();} + +// @mixin hook-slidenav(){} +// @mixin hook-slidenav-hover(){} +// @mixin hook-slidenav-active(){} +// @mixin hook-slidenav-previous(){} +// @mixin hook-slidenav-next(){} +// @mixin hook-slidenav-large(){} +// @mixin hook-slidenav-container(){} +// @mixin hook-slidenav-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-slidenav-color: rgba($inverse-global-color, 0.7) !default; +$inverse-slidenav-hover-color: rgba($inverse-global-color, 0.95) !default; +$inverse-slidenav-active-color: rgba($inverse-global-color, 0.7) !default; + + + +// @mixin hook-inverse-slidenav(){} +// @mixin hook-inverse-slidenav-hover(){} +// @mixin hook-inverse-slidenav-active(){} diff --git a/_sass/uikit/components/slider.scss b/_sass/uikit/components/slider.scss new file mode 100644 index 00000000..2799868e --- /dev/null +++ b/_sass/uikit/components/slider.scss @@ -0,0 +1,99 @@ +// Name: Slider +// Description: Component to create horizontal sliders +// +// Component: `uk-slider` +// +// Sub-objects: `uk-slider-container` +// `uk-slider-items` +// +// States: `uk-active` +// +// ======================================================================== + + +/* ======================================================================== + Component: Slider + ========================================================================== */ + +/* + * 1. Prevent tab highlighting on iOS. + */ + +.uk-slider { + /* 1 */ + -webkit-tap-highlight-color: transparent; + @if(mixin-exists(hook-slider)) {@include hook-slider();} +} + + +/* Container + ========================================================================== */ + +/* + * 1. Clip child elements + */ + +.uk-slider-container { + /* 1 */ + overflow: hidden; +} + +/* Items + ========================================================================== */ + +/* + * 1. Optimize animation + * 2. Create a containing block. In Safari it's neither created by `transform` nor `will-change`. + */ + +.uk-slider-items { + /* 1 */ + will-change: transform; + /* 2 */ + position: relative; +} + +/* + * 1. Reset list style without interfering with grid + * 2. Prevent displaying the callout information on iOS. + */ + +.uk-slider-items:not(.uk-grid) { + display: flex; + /* 1 */ + margin: 0; + padding: 0; + list-style: none; + /* 2 */ + -webkit-touch-callout: none; +} + +.uk-slider-items.uk-grid { flex-wrap: nowrap; } + + +/* Item + ========================================================================== */ + +/* + * 1. Let items take content dimensions (0 0 auto) + * 2. Create position context + * 3. Disable horizontal panning gestures in IE11 and Edge + */ + +.uk-slider-items > * { + /* 1 */ + flex: none; + /* 2 */ + position: relative; + /* 3 */ + touch-action: pan-y; +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-slider-misc)) {@include hook-slider-misc();} + +// @mixin hook-slider(){} +// @mixin hook-slider-misc(){} diff --git a/_sass/uikit/components/slideshow.scss b/_sass/uikit/components/slideshow.scss new file mode 100644 index 00000000..fc355d41 --- /dev/null +++ b/_sass/uikit/components/slideshow.scss @@ -0,0 +1,93 @@ +// Name: Slideshow +// Description: Component to create slideshows +// +// Component: `uk-slideshow` +// +// Sub-objects: `uk-slideshow-items` +// +// States: `uk-active` +// +// ======================================================================== + + +/* ======================================================================== + Component: Slideshow + ========================================================================== */ + +/* + * 1. Prevent tab highlighting on iOS. + */ + +.uk-slideshow { + /* 1 */ + -webkit-tap-highlight-color: transparent; + @if(mixin-exists(hook-slideshow)) {@include hook-slideshow();} +} + + +/* Items + ========================================================================== */ + +/* + * 1. Create position and stacking context + * 2. Reset list + * 3. Clip child elements + * 4. Prevent displaying the callout information on iOS. + */ + +.uk-slideshow-items { + /* 1 */ + position: relative; + z-index: 0; + /* 2 */ + margin: 0; + padding: 0; + list-style: none; + /* 3 */ + overflow: hidden; + /* 4 */ + -webkit-touch-callout: none; +} + + +/* Item + ========================================================================== */ + +/* + * 1. Position items above each other + * 2. Take the full width + * 3. Clip child elements, e.g. for `uk-cover` + * 4. Optimize animation + * 5. Disable horizontal panning gestures in IE11 and Edge + */ + +.uk-slideshow-items > * { + /* 1 */ + position: absolute; + top: 0; + left: 0; + /* 2 */ + right: 0; + bottom: 0; + /* 3 */ + overflow: hidden; + /* 4 */ + will-change: transform, opacity; + /* 5 */ + touch-action: pan-y; +} + +/* + * Hide not active items + */ + +.uk-slideshow-items > :not(.uk-active) { display: none; } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-slideshow-misc)) {@include hook-slideshow-misc();} + +// @mixin hook-slideshow(){} +// @mixin hook-slideshow-misc(){} diff --git a/_sass/uikit/components/sortable.scss b/_sass/uikit/components/sortable.scss new file mode 100644 index 00000000..8895f11c --- /dev/null +++ b/_sass/uikit/components/sortable.scss @@ -0,0 +1,101 @@ +// Name: Sortable +// Description: Component to create sortable grids and lists +// +// Component: `uk-sortable` +// +// Sub-objects: `uk-sortable-drag` +// `uk-sortable-placeholder` +// `uk-sortable-handle` +// +// Modifiers: `uk-sortable-empty` +// +// States: `uk-drag` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$sortable-dragged-z-index: $global-z-index + 50 !default; + +$sortable-placeholder-opacity: 0 !default; + +$sortable-empty-height: 50px !default; + + +/* ======================================================================== + Component: Sortable + ========================================================================== */ + +.uk-sortable { + position: relative; + @if(mixin-exists(hook-sortable)) {@include hook-sortable();} +} + +/* + * Deactivate browser touch actions in IE11 and Edge + */ + +.uk-sortable > * { touch-action: none; } + +/* + * Deactivate pointer-events on SVGs in Safari + */ + +.uk-sortable svg { pointer-events: none; } + +/* + * Remove margin from the last-child + */ + +.uk-sortable > :last-child { margin-bottom: 0; } + + +/* Drag + ========================================================================== */ + +.uk-sortable-drag { + position: absolute !important; + z-index: $sortable-dragged-z-index !important; + pointer-events: none; + @if(mixin-exists(hook-sortable-drag)) {@include hook-sortable-drag();} +} + + +/* Placeholder + ========================================================================== */ + +.uk-sortable-placeholder { + opacity: $sortable-placeholder-opacity; + @if(mixin-exists(hook-sortable-placeholder)) {@include hook-sortable-placeholder();} +} + + +/* Empty modifier + ========================================================================== */ + +.uk-sortable-empty { + min-height: $sortable-empty-height; + @if(mixin-exists(hook-sortable-empty)) {@include hook-sortable-empty();} +} + + +/* Handle + ========================================================================== */ + +/* Hover */ +.uk-sortable-handle:hover { cursor: move; } + + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-sortable-misc)) {@include hook-sortable-misc();} + +// @mixin hook-sortable(){} +// @mixin hook-sortable-drag(){} +// @mixin hook-sortable-placeholder(){} +// @mixin hook-sortable-empty(){} +// @mixin hook-sortable-misc(){} diff --git a/_sass/uikit/components/spinner.scss b/_sass/uikit/components/spinner.scss new file mode 100644 index 00000000..a02f41d1 --- /dev/null +++ b/_sass/uikit/components/spinner.scss @@ -0,0 +1,74 @@ +// Name: Spinner +// Description: Component to create a loading spinner +// +// Component: `uk-spinner` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$spinner-size: 30px !default; +$spinner-stroke-width: 1 !default; +$spinner-radius: floor(($spinner-size - $spinner-stroke-width) / 2) !default; // Minus stroke width to prevent overflow clipping +$spinner-circumference: round(2 * 3.141 * $spinner-radius) !default; +$spinner-duration: 1.4s !default; + + +/* ======================================================================== + Component: Spinner + ========================================================================== */ + +/* + * Adopts `uk-icon` + */ + +.uk-spinner { + @if(mixin-exists(hook-spinner)) {@include hook-spinner();} +} + + +/* SVG + ========================================================================== */ + +.uk-spinner > * { animation: uk-spinner-rotate $spinner-duration linear infinite; } + +@keyframes uk-spinner-rotate { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(270deg); } +} + +/* + * Circle + */ + +.uk-spinner > * > * { + stroke-dasharray: $spinner-circumference; + stroke-dashoffset: 0; + transform-origin: center; + animation: uk-spinner-dash $spinner-duration ease-in-out infinite; + stroke-width: $spinner-stroke-width; + stroke-linecap: round; +} + +@keyframes uk-spinner-dash { + 0% { stroke-dashoffset: $spinner-circumference; } + 50% { + stroke-dashoffset: $spinner-circumference/4; + transform:rotate(135deg); + } + 100% { + stroke-dashoffset: $spinner-circumference; + transform:rotate(450deg); + } +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-spinner-misc)) {@include hook-spinner-misc();} + +// @mixin hook-spinner(){} +// @mixin hook-spinner-misc(){} diff --git a/_sass/uikit/components/sticky.scss b/_sass/uikit/components/sticky.scss new file mode 100644 index 00000000..e8e54f92 --- /dev/null +++ b/_sass/uikit/components/sticky.scss @@ -0,0 +1,53 @@ +// Name: Sticky +// Description: Component to make elements sticky in the viewport +// +// Component: `uk-sticky` +// +// Modifier: `uk-sticky-fixed` +// +// States: `uk-active` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$sticky-z-index: $global-z-index - 20 !default; + +$sticky-animation-duration: 0.2s !default; +$sticky-reverse-animation-duration: 0.2s !default; + + +/* ======================================================================== + Component: Sticky + ========================================================================== */ + +/* + * 1. Resolve frame rate issues on devices with lower frame rates by forcing hardware acceleration + */ + +.uk-sticky-fixed { + z-index: $sticky-z-index; + box-sizing: border-box; + margin: 0 !important; + /* 1 */ + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} + +/* + * Faster animations + */ + +.uk-sticky[class*='uk-animation-'] { animation-duration: $sticky-animation-duration; } + +.uk-sticky.uk-animation-reverse { animation-duration: $sticky-reverse-animation-duration; } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-sticky-misc)) {@include hook-sticky-misc();} + +// @mixin hook-sticky-misc(){} diff --git a/_sass/uikit/components/subnav.scss b/_sass/uikit/components/subnav.scss new file mode 100644 index 00000000..53975016 --- /dev/null +++ b/_sass/uikit/components/subnav.scss @@ -0,0 +1,232 @@ +// Name: Subnav +// Description: Component to create a sub navigation +// +// Component: `uk-subnav` +// +// Modifiers: `uk-subnav-divider` +// `uk-subnav-pill` +// +// States: `uk-active` +// `uk-first-column` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$subnav-margin-horizontal: 20px !default; + +$subnav-item-color: $global-muted-color !default; +$subnav-item-hover-color: $global-color !default; +$subnav-item-hover-text-decoration: none !default; +$subnav-item-active-color: $global-emphasis-color !default; + +$subnav-divider-margin-horizontal: $subnav-margin-horizontal !default; +$subnav-divider-border-height: 1.5em !default; +$subnav-divider-border-width: $global-border-width !default; +$subnav-divider-border: $global-border !default; + +$subnav-pill-item-padding-vertical: 5px !default; +$subnav-pill-item-padding-horizontal: 10px !default; +$subnav-pill-item-background: transparent !default; +$subnav-pill-item-color: $subnav-item-color !default; +$subnav-pill-item-hover-background: $global-muted-background !default; +$subnav-pill-item-hover-color: $global-color !default; +$subnav-pill-item-onclick-background: $subnav-pill-item-hover-background !default; +$subnav-pill-item-onclick-color: $subnav-pill-item-hover-color !default; +$subnav-pill-item-active-background: $global-primary-background !default; +$subnav-pill-item-active-color: $global-inverse-color !default; + +$subnav-item-disabled-color: $global-muted-color !default; + + +/* ======================================================================== + Component: Subnav + ========================================================================== */ + +/* + * 1. Allow items to wrap into the next line + * 2. Gutter + * 3. Reset list + */ + +.uk-subnav { + display: flex; + /* 1 */ + flex-wrap: wrap; + /* 2 */ + margin-left: (-$subnav-margin-horizontal); + /* 3 */ + padding: 0; + list-style: none; + @if(mixin-exists(hook-subnav)) {@include hook-subnav();} +} + +/* + * 1. Space is allocated solely based on content dimensions: 0 0 auto + * 2. Gutter + * 3. Create position context for dropdowns + */ + +.uk-subnav > * { + /* 1 */ + flex: none; + /* 2 */ + padding-left: $subnav-margin-horizontal; + /* 3 */ + position: relative; +} + + +/* Items + ========================================================================== */ + +/* + * Items must target `a` elements to exclude other elements (e.g. dropdowns) + * Using `:first-child` instead of `a` to support `span` elements for text + * 1. Prevent gap if child element is `inline-block`, e.g. an icon + * 2. Style + */ + +.uk-subnav > * > :first-child { + /* 1 */ + display: block; + /* 2 */ + color: $subnav-item-color; + @if(mixin-exists(hook-subnav-item)) {@include hook-subnav-item();} +} + +/* Hover + Focus */ +.uk-subnav > * > a:hover, +.uk-subnav > * > a:focus { + color: $subnav-item-hover-color; + text-decoration: $subnav-item-hover-text-decoration; + outline: none; + @if(mixin-exists(hook-subnav-item-hover)) {@include hook-subnav-item-hover();} +} + +/* Active */ +.uk-subnav > .uk-active > a { + color: $subnav-item-active-color; + @if(mixin-exists(hook-subnav-item-active)) {@include hook-subnav-item-active();} +} + + +/* Divider modifier + ========================================================================== */ + +/* + * 1. Align items and divider vertically + */ + +.uk-subnav-divider > * { + /* 1 */ + display: flex; + align-items: center; +} + +/* + * Divider + * `nth-child` makes it also work without JS if it's only one row + */ + +.uk-subnav-divider > :nth-child(n+2):not(.uk-first-column)::before { + content: ""; + height: $subnav-divider-border-height; + margin-left: ($subnav-divider-margin-horizontal - $subnav-margin-horizontal); + margin-right: $subnav-divider-margin-horizontal; + border-left: $subnav-divider-border-width solid $subnav-divider-border; + @if(mixin-exists(hook-subnav-divider)) {@include hook-subnav-divider();} +} + + +/* Pill modifier + ========================================================================== */ + +.uk-subnav-pill > * > :first-child { + padding: $subnav-pill-item-padding-vertical $subnav-pill-item-padding-horizontal; + background: $subnav-pill-item-background; + color: $subnav-pill-item-color; + @if(mixin-exists(hook-subnav-pill-item)) {@include hook-subnav-pill-item();} +} + +/* Hover + Focus */ +.uk-subnav-pill > * > a:hover, +.uk-subnav-pill > * > a:focus { + background-color: $subnav-pill-item-hover-background; + color: $subnav-pill-item-hover-color; + @if(mixin-exists(hook-subnav-pill-item-hover)) {@include hook-subnav-pill-item-hover();} +} + +/* OnClick */ +.uk-subnav-pill > * > a:active { + background-color: $subnav-pill-item-onclick-background; + color: $subnav-pill-item-onclick-color; + @if(mixin-exists(hook-subnav-pill-item-onclick)) {@include hook-subnav-pill-item-onclick();} +} + +/* Active */ +.uk-subnav-pill > .uk-active > a { + background-color: $subnav-pill-item-active-background; + color: $subnav-pill-item-active-color; + @if(mixin-exists(hook-subnav-pill-item-active)) {@include hook-subnav-pill-item-active();} +} + + +/* Disabled + * The same for all style modifiers + ========================================================================== */ + +.uk-subnav > .uk-disabled > a { + color: $subnav-item-disabled-color; + @if(mixin-exists(hook-subnav-item-disabled)) {@include hook-subnav-item-disabled();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-subnav-misc)) {@include hook-subnav-misc();} + +// @mixin hook-subnav(){} +// @mixin hook-subnav-item(){} +// @mixin hook-subnav-item-hover(){} +// @mixin hook-subnav-item-active(){} +// @mixin hook-subnav-divider(){} +// @mixin hook-subnav-pill-item(){} +// @mixin hook-subnav-pill-item-hover(){} +// @mixin hook-subnav-pill-item-onclick(){} +// @mixin hook-subnav-pill-item-active(){} +// @mixin hook-subnav-item-disabled(){} +// @mixin hook-subnav-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-subnav-item-color: $inverse-global-muted-color !default; +$inverse-subnav-item-hover-color: $inverse-global-color !default; +$inverse-subnav-item-active-color: $inverse-global-emphasis-color !default; +$inverse-subnav-divider-border: $inverse-global-border !default; +$inverse-subnav-pill-item-background: transparent !default; +$inverse-subnav-pill-item-color: $inverse-global-muted-color !default; +$inverse-subnav-pill-item-hover-background: $inverse-global-muted-background !default; +$inverse-subnav-pill-item-hover-color: $inverse-global-color !default; +$inverse-subnav-pill-item-onclick-background: $inverse-subnav-pill-item-hover-background !default; +$inverse-subnav-pill-item-onclick-color: $inverse-subnav-pill-item-hover-color !default; +$inverse-subnav-pill-item-active-background: $inverse-global-primary-background !default; +$inverse-subnav-pill-item-active-color: $inverse-global-inverse-color !default; +$inverse-subnav-item-disabled-color: $inverse-global-muted-color !default; + + + +// @mixin hook-inverse-subnav-item(){} +// @mixin hook-inverse-subnav-item-hover(){} +// @mixin hook-inverse-subnav-item-active(){} +// @mixin hook-inverse-subnav-divider(){} +// @mixin hook-inverse-subnav-pill-item(){} +// @mixin hook-inverse-subnav-pill-item-hover(){} +// @mixin hook-inverse-subnav-pill-item-onclick(){} +// @mixin hook-inverse-subnav-pill-item-active(){} +// @mixin hook-inverse-subnav-item-disabled(){} diff --git a/_sass/uikit/components/switcher.scss b/_sass/uikit/components/switcher.scss new file mode 100644 index 00000000..0d99cdf7 --- /dev/null +++ b/_sass/uikit/components/switcher.scss @@ -0,0 +1,47 @@ +// Name: Switcher +// Description: Component to navigate through different content panes +// +// Component: `uk-switcher` +// +// States: `uk-active` +// +// ======================================================================== + + +/* ======================================================================== + Component: Switcher + ========================================================================== */ + +/* + * Reset list + */ + +.uk-switcher { + margin: 0; + padding: 0; + list-style: none; +} + + +/* Items + ========================================================================== */ + +/* + * Hide not active items + */ + +.uk-switcher > :not(.uk-active) { display: none; } + +/* + * Remove margin from the last-child + */ + +.uk-switcher > * > :last-child { margin-bottom: 0; } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-switcher-misc)) {@include hook-switcher-misc();} + +// @mixin hook-switcher-misc(){} \ No newline at end of file diff --git a/_sass/uikit/components/tab.scss b/_sass/uikit/components/tab.scss new file mode 100644 index 00000000..87e0a678 --- /dev/null +++ b/_sass/uikit/components/tab.scss @@ -0,0 +1,191 @@ +// Name: Tab +// Description: Component to create a tabbed navigation +// +// Component: `uk-tab` +// +// Modifiers: `uk-tab-bottom` +// `uk-tab-left` +// `uk-tab-right` +// +// States: `uk-active` +// `uk-disabled` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$tab-margin-horizontal: 20px !default; + +$tab-item-padding-horizontal: 10px !default; +$tab-item-padding-vertical: 5px !default; +$tab-item-color: $global-muted-color !default; +$tab-item-hover-color: $global-color !default; +$tab-item-hover-text-decoration: none !default; +$tab-item-active-color: $global-emphasis-color !default; +$tab-item-disabled-color: $global-muted-color !default; + + +/* ======================================================================== + Component: Tab + ========================================================================== */ + +/* + * 1. Allow items to wrap into the next line + * 2. Gutter + * 3. Reset list + */ + +.uk-tab { + display: flex; + /* 1 */ + flex-wrap: wrap; + /* 2 */ + margin-left: (-$tab-margin-horizontal); + /* 3 */ + padding: 0; + list-style: none; + @if(mixin-exists(hook-tab)) {@include hook-tab();} +} + +/* + * 1. Space is allocated solely based on content dimensions: 0 0 auto + * 2. Gutter + * 3. Create position context for dropdowns + */ + +.uk-tab > * { + /* 1 */ + flex: none; + /* 2 */ + padding-left: $tab-margin-horizontal; + /* 3 */ + position: relative; +} + + +/* Items + ========================================================================== */ + +/* + * Items must target `a` elements to exclude other elements (e.g. dropdowns) + * 1. Center text if a width is set + * 2. Style + */ + +.uk-tab > * > a { + /* 1 */ + display: block; + text-align: center; + /* 2 */ + padding: $tab-item-padding-vertical $tab-item-padding-horizontal; + color: $tab-item-color; + @if(mixin-exists(hook-tab-item)) {@include hook-tab-item();} +} + +/* Hover + Focus */ +.uk-tab > * > a:hover, +.uk-tab > * > a:focus { + color: $tab-item-hover-color; + text-decoration: $tab-item-hover-text-decoration; + @if(mixin-exists(hook-tab-item-hover)) {@include hook-tab-item-hover();} +} + +/* Active */ +.uk-tab > .uk-active > a { + color: $tab-item-active-color; + @if(mixin-exists(hook-tab-item-active)) {@include hook-tab-item-active();} +} + +/* Disabled */ +.uk-tab > .uk-disabled > a { + color: $tab-item-disabled-color; + @if(mixin-exists(hook-tab-item-disabled)) {@include hook-tab-item-disabled();} +} + + +/* Position modifier + ========================================================================== */ + +/* + * Bottom + */ + +.uk-tab-bottom { + @if(mixin-exists(hook-tab-bottom)) {@include hook-tab-bottom();} +} + +.uk-tab-bottom > * > a { + @if(mixin-exists(hook-tab-bottom-item)) {@include hook-tab-bottom-item();} +} + +/* + * Left + Right + * 1. Reset Gutter + */ + +.uk-tab-left, +.uk-tab-right { + flex-direction: column; + /* 1 */ + margin-left: 0; +} + +/* 1 */ +.uk-tab-left > *, +.uk-tab-right > * { padding-left: 0; } + +.uk-tab-left { + @if(mixin-exists(hook-tab-left)) {@include hook-tab-left();} +} + +.uk-tab-right { + @if(mixin-exists(hook-tab-right)) {@include hook-tab-right();} +} + +.uk-tab-left > * > a { + text-align: left; + @if(mixin-exists(hook-tab-left-item)) {@include hook-tab-left-item();} +} + +.uk-tab-right > * > a { + text-align: left; + @if(mixin-exists(hook-tab-right-item)) {@include hook-tab-right-item();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-tab-misc)) {@include hook-tab-misc();} + +// @mixin hook-tab(){} +// @mixin hook-tab-item(){} +// @mixin hook-tab-item-hover(){} +// @mixin hook-tab-item-active(){} +// @mixin hook-tab-item-disabled(){} +// @mixin hook-tab-bottom(){} +// @mixin hook-tab-bottom-item(){} +// @mixin hook-tab-left(){} +// @mixin hook-tab-left-item(){} +// @mixin hook-tab-right(){} +// @mixin hook-tab-right-item(){} +// @mixin hook-tab-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-tab-item-color: $inverse-global-muted-color !default; +$inverse-tab-item-hover-color: $inverse-global-color !default; +$inverse-tab-item-active-color: $inverse-global-emphasis-color !default; +$inverse-tab-item-disabled-color: $inverse-global-muted-color !default; + + + +// @mixin hook-inverse-tab(){} +// @mixin hook-inverse-tab-item(){} +// @mixin hook-inverse-tab-item-hover(){} +// @mixin hook-inverse-tab-item-active(){} +// @mixin hook-inverse-tab-item-disabled(){} \ No newline at end of file diff --git a/_sass/uikit/components/table.scss b/_sass/uikit/components/table.scss new file mode 100644 index 00000000..313d218b --- /dev/null +++ b/_sass/uikit/components/table.scss @@ -0,0 +1,316 @@ +// Name: Table +// Description: Styles for tables +// +// Component: `uk-table` +// +// Modifiers: `uk-table-middle` +// `uk-table-divider` +// `uk-table-striped` +// `uk-table-hover` +// `uk-table-small` +// `uk-table-justify` +// `uk-table-shrink` +// `uk-table-expand` +// `uk-table-link` +// `uk-table-responsive` +// +// States: `uk-active` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$table-margin-vertical: $global-margin !default; + +$table-cell-padding-vertical: 16px !default; +$table-cell-padding-horizontal: 12px !default; + +$table-header-cell-font-size: $global-font-size !default; +$table-header-cell-font-weight: bold !default; +$table-header-cell-color: $global-color !default; + +$table-footer-font-size: $global-small-font-size !default; + +$table-caption-font-size: $global-small-font-size !default; +$table-caption-color: $global-muted-color !default; + +$table-row-active-background: #ffd !default; + +$table-divider-border-width: $global-border-width !default; +$table-divider-border: $global-border !default; + +$table-striped-row-background: $global-muted-background !default; + +$table-hover-row-background: $table-row-active-background !default; + +$table-small-cell-padding-vertical: 10px !default; +$table-small-cell-padding-horizontal: 12px !default; + +$table-large-cell-padding-vertical: 22px !default; +$table-large-cell-padding-horizontal: 12px !default; + +$table-expand-min-width: 150px !default; + + +/* ======================================================================== + Component: Table + ========================================================================== */ + +/* + * 1. Remove most spacing between table cells. + * 2. Behave like a block element + * 3. Style + */ + +.uk-table { + /* 1 */ + border-collapse: collapse; + border-spacing: 0; + /* 2 */ + width: 100%; + /* 3 */ + margin-bottom: $table-margin-vertical; + @if(mixin-exists(hook-table)) {@include hook-table();} +} + +/* Add margin if adjacent element */ +* + .uk-table { margin-top: $table-margin-vertical; } + + +/* Header cell + ========================================================================== */ + +/* + * 1. Style + */ + +.uk-table th { + padding: $table-cell-padding-vertical $table-cell-padding-horizontal; + text-align: left; + vertical-align: bottom; + /* 1 */ + font-size: $table-header-cell-font-size; + font-weight: $table-header-cell-font-weight; + color: $table-header-cell-color; + @if(mixin-exists(hook-table-header-cell)) {@include hook-table-header-cell();} +} + + +/* Cell + ========================================================================== */ + +.uk-table td { + padding: $table-cell-padding-vertical $table-cell-padding-horizontal; + vertical-align: top; + @if(mixin-exists(hook-table-cell)) {@include hook-table-cell();} +} + +/* + * Remove margin from the last-child + */ + +.uk-table td > :last-child { margin-bottom: 0; } + + +/* Footer + ========================================================================== */ + +.uk-table tfoot { + font-size: $table-footer-font-size; + @if(mixin-exists(hook-table-footer)) {@include hook-table-footer();} +} + + +/* Caption + ========================================================================== */ + +.uk-table caption { + font-size: $table-caption-font-size; + text-align: left; + color: $table-caption-color; + @if(mixin-exists(hook-table-caption)) {@include hook-table-caption();} +} + + +/* Row + ========================================================================== */ + +.uk-table > tr.uk-active, +.uk-table tbody tr.uk-active { + background: $table-row-active-background; + @if(mixin-exists(hook-table-row-active)) {@include hook-table-row-active();} +} + + +/* Alignment modifier + ========================================================================== */ + +.uk-table-middle, +.uk-table-middle td { vertical-align: middle !important; } + + +/* Style modifiers + ========================================================================== */ + +/* + * Divider + */ + +.uk-table-divider > tr:not(:first-child), +.uk-table-divider > :not(:first-child) > tr, +.uk-table-divider > :first-child > tr:not(:first-child) { + border-top: $table-divider-border-width solid $table-divider-border; + @if(mixin-exists(hook-table-divider)) {@include hook-table-divider();} +} + +/* + * Striped + */ + +.uk-table-striped > tr:nth-of-type(odd), +.uk-table-striped tbody tr:nth-of-type(odd) { + background: $table-striped-row-background; + @if(mixin-exists(hook-table-striped)) {@include hook-table-striped();} +} + +/* + * Hover + */ + +.uk-table-hover > tr:hover, +.uk-table-hover tbody tr:hover { + background: $table-hover-row-background; + @if(mixin-exists(hook-table-hover)) {@include hook-table-hover();} +} + + +/* Size modifier + ========================================================================== */ + +.uk-table-small th, +.uk-table-small td { + padding: $table-small-cell-padding-vertical $table-small-cell-padding-horizontal; + @if(mixin-exists(hook-table-small)) {@include hook-table-small();} +} + +.uk-table-large th, +.uk-table-large td { + padding: $table-large-cell-padding-vertical $table-large-cell-padding-horizontal; + @if(mixin-exists(hook-table-large)) {@include hook-table-large();} +} + + +/* Justify modifier + ========================================================================== */ + +.uk-table-justify th:first-child, +.uk-table-justify td:first-child { padding-left: 0; } + +.uk-table-justify th:last-child, +.uk-table-justify td:last-child { padding-right: 0; } + + +/* Cell size modifier + ========================================================================== */ + +.uk-table-shrink { width: 1px; } +.uk-table-expand { min-width: $table-expand-min-width; } + + +/* Cell link modifier + ========================================================================== */ + +/* + * Does not work with `uk-table-justify` at the moment + */ + +.uk-table-link { padding: 0 !important; } + +.uk-table-link > a { + display: block; + padding: $table-cell-padding-vertical $table-cell-padding-horizontal; +} + +.uk-table-small .uk-table-link > a { padding: $table-small-cell-padding-vertical $table-small-cell-padding-horizontal; } + + +/* Responsive table + ========================================================================== */ + + +/* Phone landscape and smaller */ +@media (max-width: $breakpoint-small-max) { + + .uk-table-responsive, + .uk-table-responsive tbody, + .uk-table-responsive th, + .uk-table-responsive td, + .uk-table-responsive tr { display: block; } + + .uk-table-responsive thead { display: none; } + + .uk-table-responsive th, + .uk-table-responsive td { + width: auto !important; + max-width: none !important; + min-width: 0 !important; + overflow: visible !important; + white-space: normal !important; + } + + .uk-table-responsive th:not(:first-child):not(.uk-table-link), + .uk-table-responsive td:not(:first-child):not(.uk-table-link), + .uk-table-responsive .uk-table-link:not(:first-child) > a { padding-top: round($table-cell-padding-vertical / 3) !important; } + + .uk-table-responsive th:not(:last-child):not(.uk-table-link), + .uk-table-responsive td:not(:last-child):not(.uk-table-link), + .uk-table-responsive .uk-table-link:not(:last-child) > a { padding-bottom: round($table-cell-padding-vertical / 3) !important; } + + .uk-table-justify.uk-table-responsive th, + .uk-table-justify.uk-table-responsive td { + padding-left: 0; + padding-right: 0; + } + +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-table-misc)) {@include hook-table-misc();} + +// @mixin hook-table(){} +// @mixin hook-table-header-cell(){} +// @mixin hook-table-cell(){} +// @mixin hook-table-footer(){} +// @mixin hook-table-caption(){} +// @mixin hook-table-row-active(){} +// @mixin hook-table-divider(){} +// @mixin hook-table-striped(){} +// @mixin hook-table-hover(){} +// @mixin hook-table-small(){} +// @mixin hook-table-large(){} +// @mixin hook-table-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-table-header-cell-color: $inverse-global-color !default; +$inverse-table-caption-color: $inverse-global-muted-color !default; +$inverse-table-row-active-background: fade-out($inverse-global-muted-background, 0.02) !default; +$inverse-table-divider-border: $inverse-global-border !default; +$inverse-table-striped-row-background: $inverse-global-muted-background !default; +$inverse-table-hover-row-background: $inverse-table-row-active-background !default; + + + +// @mixin hook-inverse-table-header-cell(){} +// @mixin hook-inverse-table-caption(){} +// @mixin hook-inverse-table-row-active(){} +// @mixin hook-inverse-table-divider(){} +// @mixin hook-inverse-table-striped(){} +// @mixin hook-inverse-table-hover(){} \ No newline at end of file diff --git a/_sass/uikit/components/text.scss b/_sass/uikit/components/text.scss new file mode 100644 index 00000000..c60915b8 --- /dev/null +++ b/_sass/uikit/components/text.scss @@ -0,0 +1,262 @@ +// Name: Text +// Description: Utilities for text +// +// Component: `uk-text-*` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$text-lead-font-size: $global-large-font-size !default; +$text-lead-line-height: 1.5 !default; +$text-lead-color: $global-emphasis-color !default; + +$text-meta-font-size: $global-small-font-size !default; +$text-meta-line-height: 1.4 !default; +$text-meta-color: $global-muted-color !default; + +$text-small-font-size: $global-small-font-size !default; +$text-small-line-height: 1.5 !default; + +$text-large-font-size: $global-large-font-size !default; +$text-large-line-height: 1.5 !default; + +$text-bold-font-weight: bolder !default; + +$text-muted-color: $global-muted-color !default; +$text-primary-color: $global-primary-background !default; +$text-success-color: $global-success-background !default; +$text-warning-color: $global-warning-background !default; +$text-danger-color: $global-danger-background !default; + +$text-background-color: $global-primary-background !default; + + +/* ======================================================================== + Component: Text + ========================================================================== */ + + +/* Style modifiers + ========================================================================== */ + +.uk-text-lead { + font-size: $text-lead-font-size; + line-height: $text-lead-line-height; + color: $text-lead-color; + @if(mixin-exists(hook-text-lead)) {@include hook-text-lead();} +} + +.uk-text-meta { + font-size: $text-meta-font-size; + line-height: $text-meta-line-height; + color: $text-meta-color; + @if(mixin-exists(hook-text-meta)) {@include hook-text-meta();} +} + + +/* Size modifiers + ========================================================================== */ + +.uk-text-small { + font-size: $text-small-font-size; + line-height: $text-small-line-height; + @if(mixin-exists(hook-text-small)) {@include hook-text-small();} +} + +.uk-text-large { + font-size: $text-large-font-size; + line-height: $text-large-line-height; + @if(mixin-exists(hook-text-large)) {@include hook-text-large();} +} + + +/* Weight modifier + ========================================================================== */ + +.uk-text-bold { font-weight: $text-bold-font-weight; } + + +/* Transform modifier + ========================================================================== */ + +.uk-text-uppercase { text-transform: uppercase !important; } +.uk-text-capitalize { text-transform: capitalize !important; } +.uk-text-lowercase { text-transform: lowercase !important; } + + +/* Color modifiers + ========================================================================== */ + +.uk-text-muted { color: $text-muted-color !important; } +.uk-text-primary { color: $text-primary-color !important; } +.uk-text-success { color: $text-success-color !important; } +.uk-text-warning { color: $text-warning-color !important; } +.uk-text-danger { color: $text-danger-color !important; } + + +/* Background modifier + ========================================================================== */ + +/* + * 1. The background clips to the foreground text. Works in Chrome, Firefox, Safari, Edge and Opera + * Default color is set to transparent + * 2. Container fits the text + * 3. Fallback color for IE11 + */ + +.uk-text-background { + /* 1 */ + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + /* 2 */ + display: inline-block; + /* 3 */ + color: $text-background-color !important; +} + +@supports (-webkit-background-clip: text) { + + .uk-text-background { + background-color: $text-background-color; + @if(mixin-exists(hook-text-background)) {@include hook-text-background();} + } + +} + + +/* Alignment modifiers + ========================================================================== */ + +.uk-text-left { text-align: left !important; } +.uk-text-right { text-align: right !important; } +.uk-text-center { text-align: center !important; } +.uk-text-justify { text-align: justify !important; } + +/* Phone landscape and bigger */ +@media (min-width: $breakpoint-small) { + + .uk-text-left\@s { text-align: left !important; } + .uk-text-right\@s { text-align: right !important; } + .uk-text-center\@s { text-align: center !important; } + +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-text-left\@m { text-align: left !important; } + .uk-text-right\@m { text-align: right !important; } + .uk-text-center\@m { text-align: center !important; } + +} + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + .uk-text-left\@l { text-align: left !important; } + .uk-text-right\@l { text-align: right !important; } + .uk-text-center\@l { text-align: center !important; } + +} + +/* Large screen and bigger */ +@media (min-width: $breakpoint-xlarge) { + + .uk-text-left\@xl { text-align: left !important; } + .uk-text-right\@xl { text-align: right !important; } + .uk-text-center\@xl { text-align: center !important; } + +} + +/* + * Vertical + */ + +.uk-text-top { vertical-align: top !important; } +.uk-text-middle { vertical-align: middle !important; } +.uk-text-bottom { vertical-align: bottom !important; } +.uk-text-baseline { vertical-align: baseline !important; } + + +/* Wrap modifiers + ========================================================================== */ + +/* + * Prevent text from wrapping onto multiple lines + */ + +.uk-text-nowrap { white-space: nowrap; } + +/* + * 1. Make sure a max-width is set after which truncation can occur + * 2. Prevent text from wrapping onto multiple lines, and truncate with an ellipsis + * 3. Fix for table cells + */ + +.uk-text-truncate { + /* 1 */ + max-width: 100%; + /* 2 */ + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +/* 2 */ +th.uk-text-truncate, +td.uk-text-truncate { max-width: 0; } + + +/* + * 1. Wrap long words onto the next line and break them if they are too long to fit + * 2. Legacy `word-wrap` as fallback for `overflow-wrap` + * 3. Add a hyphen where the word breaks + * 4. Fix `overflow-wrap` which doesn't work with table cells in Chrome, Opera, IE11 and Edge + * Must use `break-all` to support IE11 and Edge + */ + +.uk-text-break { + /* 1 */ + overflow-wrap: break-word; + /* 2 */ + word-wrap: break-word; + /* 3 */ + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +/* 4 */ +th.uk-text-break, +td.uk-text-break { word-break: break-all; } + + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-text-misc)) {@include hook-text-misc();} + +// @mixin hook-text-lead(){} +// @mixin hook-text-meta(){} +// @mixin hook-text-small(){} +// @mixin hook-text-large(){} +// @mixin hook-text-background(){} +// @mixin hook-text-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-text-lead-color: $inverse-global-color !default; +$inverse-text-meta-color: $inverse-global-muted-color !default; +$inverse-text-muted-color: $inverse-global-muted-color !default; +$inverse-text-primary-color: $inverse-global-color !default; + + + +// @mixin hook-inverse-text-lead(){} +// @mixin hook-inverse-text-meta(){} diff --git a/_sass/uikit/components/thumbnav.scss b/_sass/uikit/components/thumbnav.scss new file mode 100644 index 00000000..ee551f99 --- /dev/null +++ b/_sass/uikit/components/thumbnav.scss @@ -0,0 +1,123 @@ +// Name: Thumbnav +// Description: Component to create thumbnail navigations +// +// Component: `uk-thumbnav` +// +// Modifier: `uk-thumbnav-vertical` +// +// States: `uk-active` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$thumbnav-margin-horizontal: 15px !default; +$thumbnav-margin-vertical: $thumbnav-margin-horizontal !default; + + +/* ======================================================================== + Component: Thumbnav + ========================================================================== */ + +/* + * 1. Allow items to wrap into the next line + * 2. Reset list + * 3. Gutter + */ + +.uk-thumbnav { + display: flex; + /* 1 */ + flex-wrap: wrap; + /* 2 */ + margin: 0; + padding: 0; + list-style: none; + /* 3 */ + margin-left: (-$thumbnav-margin-horizontal); + @if(mixin-exists(hook-thumbnav)) {@include hook-thumbnav();} +} + +/* + * 1. Space is allocated solely based on content dimensions: 0 0 auto + * 2. Gutter + */ + +.uk-thumbnav > * { + /* 1 */ + flex: none; + /* 2 */ + padding-left: $thumbnav-margin-horizontal; +} + + +/* Items + ========================================================================== */ + +/* + * Items + */ + +.uk-thumbnav > * > * { + display: inline-block; + @if(mixin-exists(hook-thumbnav-item)) {@include hook-thumbnav-item();} +} + +/* Hover + Focus */ +.uk-thumbnav > * > :hover, +.uk-thumbnav > * > :focus { + outline: none; + @if(mixin-exists(hook-thumbnav-item-hover)) {@include hook-thumbnav-item-hover();} +} + +/* Active */ +.uk-thumbnav > .uk-active > * { + @if(mixin-exists(hook-thumbnav-item-active)) {@include hook-thumbnav-item-active();} +} + + +/* Modifier: 'uk-thumbnav-vertical' + ========================================================================== */ + +/* + * 1. Change direction + * 2. Gutter + */ + +.uk-thumbnav-vertical { + /* 1 */ + flex-direction: column; + /* 2 */ + margin-left: 0; + margin-top: (-$thumbnav-margin-vertical); +} + +/* 2 */ +.uk-thumbnav-vertical > * { + padding-left: 0; + padding-top: $thumbnav-margin-vertical; +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-thumbnav-misc)) {@include hook-thumbnav-misc();} + +// @mixin hook-thumbnav(){} +// @mixin hook-thumbnav-item(){} +// @mixin hook-thumbnav-item-hover(){} +// @mixin hook-thumbnav-item-active(){} +// @mixin hook-thumbnav-misc(){} + + +// Inverse +// ======================================================================== + + + +// @mixin hook-inverse-thumbnav-item(){} +// @mixin hook-inverse-thumbnav-item-hover(){} +// @mixin hook-inverse-thumbnav-item-active(){} \ No newline at end of file diff --git a/_sass/uikit/components/tile.scss b/_sass/uikit/components/tile.scss new file mode 100644 index 00000000..3a364bfb --- /dev/null +++ b/_sass/uikit/components/tile.scss @@ -0,0 +1,224 @@ +// Name: Tile +// Description: Component to create tiled boxes +// +// Component: `uk-tile` +// +// Modifiers: `uk-tile-xsmall` +// `uk-tile-small` +// `uk-tile-large` +// `uk-tile-xlarge` +// `uk-tile-default` +// `uk-tile-muted` +// `uk-tile-primary` +// `uk-tile-secondary` +// +// States: `uk-preserve-color` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$tile-padding-horizontal: 15px !default; +$tile-padding-horizontal-s: $global-gutter !default; +$tile-padding-horizontal-m: $global-medium-gutter !default; +$tile-padding-vertical: $global-medium-margin !default; +$tile-padding-vertical-m: $global-large-margin !default; + +$tile-xsmall-padding-vertical: $global-margin !default; + +$tile-small-padding-vertical: $global-medium-margin !default; + +$tile-large-padding-vertical: $global-large-margin !default; +$tile-large-padding-vertical-m: $global-xlarge-margin !default; + +$tile-xlarge-padding-vertical: $global-xlarge-margin !default; +$tile-xlarge-padding-vertical-m: ($global-large-margin + $global-xlarge-margin) !default; + +$tile-default-background: $global-background !default; + +$tile-muted-background: $global-muted-background !default; + +$tile-primary-background: $global-primary-background !default; +$tile-primary-color-mode: light !default; + +$tile-secondary-background: $global-secondary-background !default; +$tile-secondary-color-mode: light !default; + + +/* ======================================================================== + Component: Tile + ========================================================================== */ + +.uk-tile { + position: relative; + box-sizing: border-box; + padding-left: $tile-padding-horizontal; + padding-right: $tile-padding-horizontal; + padding-top: $tile-padding-vertical; + padding-bottom: $tile-padding-vertical; + @if(mixin-exists(hook-tile)) {@include hook-tile();} +} + +/* Phone landscape and bigger */ +@media (min-width: $breakpoint-small) { + + .uk-tile { + padding-left: $tile-padding-horizontal-s; + padding-right: $tile-padding-horizontal-s; + } + +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-tile { + padding-left: $tile-padding-horizontal-m; + padding-right: $tile-padding-horizontal-m; + padding-top: $tile-padding-vertical-m; + padding-bottom: $tile-padding-vertical-m; + } + +} + +/* + * Micro clearfix + */ + +.uk-tile::before, +.uk-tile::after { + content: ""; + display: table; +} + +.uk-tile::after { clear: both; } + +/* + * Remove margin from the last-child + */ + +.uk-tile > :last-child { margin-bottom: 0; } + + +/* Size modifiers + ========================================================================== */ + +/* + * XSmall + */ + +.uk-tile-xsmall { + padding-top: $tile-xsmall-padding-vertical; + padding-bottom: $tile-xsmall-padding-vertical; +} + +/* + * Small + */ + +.uk-tile-small { + padding-top: $tile-small-padding-vertical; + padding-bottom: $tile-small-padding-vertical; +} + +/* + * Large + */ + +.uk-tile-large { + padding-top: $tile-large-padding-vertical; + padding-bottom: $tile-large-padding-vertical; +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-tile-large { + padding-top: $tile-large-padding-vertical-m; + padding-bottom: $tile-large-padding-vertical-m; + } + +} + + +/* + * XLarge + */ + +.uk-tile-xlarge { + padding-top: $tile-xlarge-padding-vertical; + padding-bottom: $tile-xlarge-padding-vertical; +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-tile-xlarge { + padding-top: $tile-xlarge-padding-vertical-m; + padding-bottom: $tile-xlarge-padding-vertical-m; + } + +} + + +/* Style modifiers + ========================================================================== */ + +/* + * Default + */ + +.uk-tile-default { + background: $tile-default-background; + @if(mixin-exists(hook-tile-default)) {@include hook-tile-default();} +} + +/* + * Muted + */ + +.uk-tile-muted { + background: $tile-muted-background; + @if(mixin-exists(hook-tile-muted)) {@include hook-tile-muted();} +} + +/* + * Primary + */ + +.uk-tile-primary { + background: $tile-primary-background; + @if(mixin-exists(hook-tile-primary)) {@include hook-tile-primary();} +} + +// Color Mode +@if ( $tile-primary-color-mode == light ) { .uk-tile-primary:not(.uk-preserve-color) { @extend .uk-light !optional;} } +@if ( $tile-primary-color-mode == dark ) { .uk-tile-primary:not(.uk-preserve-color) { @extend .uk-dark !optional;} } + +/* + * Secondary + */ + +.uk-tile-secondary { + background: $tile-secondary-background; + @if(mixin-exists(hook-tile-secondary)) {@include hook-tile-secondary();} +} + +// Color Mode +@if ( $tile-secondary-color-mode == light ) { .uk-tile-secondary:not(.uk-preserve-color) { @extend .uk-light !optional;} } +@if ( $tile-secondary-color-mode == dark ) { .uk-tile-secondary:not(.uk-preserve-color) { @extend .uk-dark !optional;} } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-tile-misc)) {@include hook-tile-misc();} + +// @mixin hook-tile(){} +// @mixin hook-tile-default(){} +// @mixin hook-tile-muted(){} +// @mixin hook-tile-primary(){} +// @mixin hook-tile-secondary(){} +// @mixin hook-tile-misc(){} diff --git a/_sass/uikit/components/tooltip.scss b/_sass/uikit/components/tooltip.scss new file mode 100644 index 00000000..1f8e8c88 --- /dev/null +++ b/_sass/uikit/components/tooltip.scss @@ -0,0 +1,84 @@ +// Name: Tooltip +// Description: Component to create tooltips +// +// Component: `uk-tooltip` +// +// Modifiers `uk-tooltip-top` +// `uk-tooltip-top-left` +// `uk-tooltip-top-right` +// `uk-tooltip-bottom` +// `uk-tooltip-bottom-left` +// `uk-tooltip-bottom-right` +// `uk-tooltip-left` +// `uk-tooltip-right` +// +// States: `uk-active` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$tooltip-z-index: $global-z-index + 30 !default; +$tooltip-max-width: 200px !default; +$tooltip-padding-vertical: 3px !default; +$tooltip-padding-horizontal: 6px !default; +$tooltip-background: #666 !default; +$tooltip-border-radius: 2px !default; +$tooltip-color: $global-inverse-color !default; +$tooltip-font-size: 12px !default; + +$tooltip-margin: 10px !default; + + +/* ======================================================================== + Component: Tooltip + ========================================================================== */ + +/* + * 1. Hide by default + * 2. Position + * 3. Dimensions + * 4. Style + */ + +.uk-tooltip { + /* 1 */ + display: none; + /* 2 */ + position: absolute; + z-index: $tooltip-z-index; + /* 3 */ + box-sizing: border-box; + max-width: $tooltip-max-width; + padding: $tooltip-padding-vertical $tooltip-padding-horizontal; + /* 4 */ + background: $tooltip-background; + border-radius: $tooltip-border-radius; + color: $tooltip-color; + font-size: $tooltip-font-size; + @if(mixin-exists(hook-tooltip)) {@include hook-tooltip();} +} + +/* Show */ +.uk-tooltip.uk-active { display: block; } + + +/* Direction / Alignment modifiers + ========================================================================== */ + +/* Direction */ +[class*='uk-tooltip-top'] { margin-top: (-$tooltip-margin); } +[class*='uk-tooltip-bottom'] { margin-top: $tooltip-margin; } +[class*='uk-tooltip-left'] { margin-left: (-$tooltip-margin); } +[class*='uk-tooltip-right'] { margin-left: $tooltip-margin; } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-tooltip-misc)) {@include hook-tooltip-misc();} + +// @mixin hook-tooltip(){} +// @mixin hook-tooltip-misc(){} diff --git a/_sass/uikit/components/totop.scss b/_sass/uikit/components/totop.scss new file mode 100644 index 00000000..4b8aa1d8 --- /dev/null +++ b/_sass/uikit/components/totop.scss @@ -0,0 +1,71 @@ +// Name: Totop +// Description: Component to create an icon to scroll back to top +// +// Component: `uk-totop` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$totop-padding: 5px !default; +$totop-color: $global-muted-color !default; + +$totop-hover-color: $global-color !default; + +$totop-active-color: $global-emphasis-color !default; + + +/* ======================================================================== + Component: Totop + ========================================================================== */ + +/* + * Addopts `uk-icon` + */ + +.uk-totop { + padding: $totop-padding; + color: $totop-color; + @if(mixin-exists(hook-totop)) {@include hook-totop();} +} + +/* Hover + Focus */ +.uk-totop:hover, +.uk-totop:focus { + color: $totop-hover-color; + outline: none; + @if(mixin-exists(hook-totop-hover)) {@include hook-totop-hover();} +} + +/* OnClick */ +.uk-totop:active { + color: $totop-active-color; + @if(mixin-exists(hook-totop-active)) {@include hook-totop-active();} +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-totop-misc)) {@include hook-totop-misc();} + +// @mixin hook-totop(){} +// @mixin hook-totop-hover(){} +// @mixin hook-totop-active(){} +// @mixin hook-totop-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-totop-color: $inverse-global-muted-color !default; +$inverse-totop-hover-color: $inverse-global-color !default; +$inverse-totop-active-color: $inverse-global-emphasis-color !default; + + + +// @mixin hook-inverse-totop(){} +// @mixin hook-inverse-totop-hover(){} +// @mixin hook-inverse-totop-active(){} diff --git a/_sass/uikit/components/transition.scss b/_sass/uikit/components/transition.scss new file mode 100644 index 00000000..c9992743 --- /dev/null +++ b/_sass/uikit/components/transition.scss @@ -0,0 +1,145 @@ +// Name: Transition +// Description: Utilities for transitions +// +// Component: `uk-transition-*` +// +// Modifiers: `uk-transition-fade` +// `uk-transition-scale-up` +// `uk-transition-scale-down` +// `uk-transition-slide-top-*` +// `uk-transition-slide-bottom-*` +// `uk-transition-slide-left-*` +// `uk-transition-slide-right-*` +// `uk-transition-opaque` +// `uk-transition-slow` +// +// Sub-objects: `uk-transition-toggle`, +// `uk-transition-active` +// +// States: `uk-hover` +// `uk-active` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$transition-duration: 0.3s !default; + +$transition-scale: 1.1 !default; + +$transition-slide-small-translate: 10px !default; +$transition-slide-medium-translate: 50px !default; + +$transition-slow-duration: 0.7s !default; + + +/* ======================================================================== + Component: Transition + ========================================================================== */ + +/* + * Using multiple selectors to exclude `uk-transition-toggle` + * Note: Transitions don't work with `uk-postion-center-*` classes because they also use `transform` + * Just put the transition in an extra `div` + */ + +.uk-transition-fade, +[class*='uk-transition-scale'], +[class*='uk-transition-slide'] { + transition: $transition-duration ease-out; + transition-property: opacity, transform, filter; +} + +.uk-transition-toggle:focus { outline: none; } + +/* + * Fade + */ + +.uk-transition-fade { opacity: 0; } + +/* Show */ +.uk-transition-toggle:hover [class*='uk-transition-fade'], +.uk-transition-toggle.uk-hover [class*='uk-transition-fade'], +.uk-transition-toggle:focus [class*='uk-transition-fade'], +.uk-transition-active.uk-active [class*='uk-transition-fade'] { opacity: 1; } + +/* + * Scale + * Note: Using `scale3d` for better image rendering + */ + +[class*='uk-transition-scale'] { opacity: 0; } + +.uk-transition-scale-up { transform: scale3d(1,1,1); } + +.uk-transition-scale-down { transform: scale3d($transition-scale,$transition-scale,1); } + +/* Show */ +.uk-transition-toggle:hover .uk-transition-scale-up, +.uk-transition-toggle.uk-hover .uk-transition-scale-up, +.uk-transition-toggle:focus .uk-transition-scale-up, +.uk-transition-active.uk-active .uk-transition-scale-up { + opacity: 1; + transform: scale3d($transition-scale,$transition-scale,1); +} + +.uk-transition-toggle:hover .uk-transition-scale-down, +.uk-transition-toggle.uk-hover .uk-transition-scale-down, +.uk-transition-toggle:focus .uk-transition-scale-down, +.uk-transition-active.uk-active .uk-transition-scale-down { + opacity: 1; + transform: scale3d(1,1,1); +} + +/* + * Slide + */ + +[class*='uk-transition-slide'] { opacity: 0; } + +.uk-transition-slide-top { transform: translateY(-100%); } +.uk-transition-slide-bottom { transform: translateY(100%); } +.uk-transition-slide-left { transform: translateX(-100%); } +.uk-transition-slide-right { transform: translateX(100%); } + +.uk-transition-slide-top-small { transform: translateY(-$transition-slide-small-translate); } +.uk-transition-slide-bottom-small { transform: translateY($transition-slide-small-translate); } +.uk-transition-slide-left-small { transform: translateX(-$transition-slide-small-translate); } +.uk-transition-slide-right-small { transform: translateX($transition-slide-small-translate); } + +.uk-transition-slide-top-medium { transform: translateY(-$transition-slide-medium-translate); } +.uk-transition-slide-bottom-medium { transform: translateY($transition-slide-medium-translate); } +.uk-transition-slide-left-medium { transform: translateX(-$transition-slide-medium-translate); } +.uk-transition-slide-right-medium { transform: translateX($transition-slide-medium-translate); } + +/* Show */ +.uk-transition-toggle:hover [class*='uk-transition-slide'], +.uk-transition-toggle.uk-hover [class*='uk-transition-slide'], +.uk-transition-toggle:focus [class*='uk-transition-slide'], +.uk-transition-active.uk-active [class*='uk-transition-slide'] { + opacity: 1; + transform: translateX(0) translateY(0); +} + + +/* Opacity modifier +========================================================================== */ + +.uk-transition-opaque { opacity: 1; } + + +/* Duration modifiers +========================================================================== */ + +.uk-transition-slow { transition-duration: $transition-slow-duration; } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-transition-misc)) {@include hook-transition-misc();} + +// @mixin hook-transition-misc(){} diff --git a/_sass/uikit/components/utility.scss b/_sass/uikit/components/utility.scss new file mode 100644 index 00000000..2ac17776 --- /dev/null +++ b/_sass/uikit/components/utility.scss @@ -0,0 +1,570 @@ +// Name: Utility +// Description: Utilities collection +// +// Component: `uk-panel-*` +// `uk-clearfix` +// `uk-float-*` +// `uk-overflow-*` +// `uk-resize-*` +// `uk-display-*` +// `uk-inline-*` +// `uk-height-*` +// `uk-responsive-*` +// `uk-preserve-width` +// `uk-border-*` +// `uk-box-shadow-*` +// `uk-box-shadow-bottom` +// `uk-dropcap` +// `uk-leader` +// `uk-logo` +// `uk-svg` +// `uk-blend-*` +// `uk-transform-*` +// `uk-transform-origin-*` +// +// States: `uk-disabled` +// `uk-drag` +// `uk-dragover` +// `uk-preserve` +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$panel-scrollable-height: 170px !default; +$panel-scrollable-padding: 10px !default; +$panel-scrollable-border-width: $global-border-width !default; +$panel-scrollable-border: $global-border !default; + +$height-small-height: 150px !default; +$height-medium-height: 300px !default; +$height-large-height: 450px !default; + +$border-rounded-border-radius: 5px !default; + +$box-shadow-duration: 0.1s !default; + +$box-shadow-bottom-height: 30px !default; +$box-shadow-bottom-border-radius: 100% !default; +$box-shadow-bottom-background: #444 !default; +$box-shadow-bottom-blur: 20px !default; + +$dropcap-margin-right: 10px !default; +$dropcap-font-size: (($global-line-height * 3) * 1em) !default; + +$leader-fill-content: '.' !default; +$leader-fill-margin-left: $global-small-gutter !default; + +$logo-font-size: $global-large-font-size !default; +$logo-font-family: $global-font-family !default; +$logo-color: $global-color !default; +$logo-hover-color: $global-color !default; + +$dragover-box-shadow: 0 0 20px rgba(100,100,100,0.3) !default; + + +/* ======================================================================== + Component: Utility + ========================================================================== */ + + +/* Panel + ========================================================================== */ + +.uk-panel { + position: relative; + box-sizing: border-box; +} + +/* + * Micro clearfix + */ + +.uk-panel::before, +.uk-panel::after { + content: ""; + display: table; +} + +.uk-panel::after { clear: both; } + +/* + * Remove margin from the last-child + */ + +.uk-panel > :last-child { margin-bottom: 0; } + + +/* + * Scrollable + */ + +.uk-panel-scrollable { + height: $panel-scrollable-height; + padding: $panel-scrollable-padding; + border: $panel-scrollable-border-width solid $panel-scrollable-border; + overflow: auto; + -webkit-overflow-scrolling: touch; + resize: both; + @if(mixin-exists(hook-panel-scrollable)) {@include hook-panel-scrollable();} +} + + +/* Clearfix + ========================================================================== */ + +/* + * 1. `table-cell` is used with `::before` because `table` creates a 1px gap when it becomes a flex item, only in Webkit + * 2. `table` is used again with `::after` because `clear` only works with block elements. + * Note: `display: block` with `overflow: hidden` is currently not working in the latest Safari + */ + +/* 1 */ +.uk-clearfix::before { + content: ""; + display: table-cell; +} + +/* 2 */ +.uk-clearfix::after { + content: ""; + display: table; + clear: both; +} + + +/* Float + ========================================================================== */ + +/* + * 1. Prevent content overflow + */ + +.uk-float-left { float: left; } +.uk-float-right { float: right; } + +/* 1 */ +[class*='uk-float-'] { max-width: 100%; } + + +/* Overfow + ========================================================================== */ + +.uk-overflow-hidden { overflow: hidden; } + +/* + * Enable scrollbars if content is clipped + * Note: Firefox ignores `padding-bottom` for the scrollable overflow https://bugzilla.mozilla.org/show_bug.cgi?id=748518 + */ + +.uk-overflow-auto { + overflow: auto; + -webkit-overflow-scrolling: touch; +} + +.uk-overflow-auto > :last-child { margin-bottom: 0; } + + +/* Resize + ========================================================================== */ + +.uk-resize { resize: both; } +.uk-resize-vertical { resize: vertical; } + + +/* Display + ========================================================================== */ + +.uk-display-block { display: block !important; } +.uk-display-inline { display: inline !important; } +.uk-display-inline-block { display: inline-block !important; } + + +/* Inline + ========================================================================== */ + +/* + * 1. Container fits its content + * 2. Create position context + * 3. Prevent content overflow + * 4. Behave like most inline-block elements + * 5. Force hardware acceleration without creating a new stacking context + * to fix 1px glitch when combined with overlays and transitions in Webkit + * 6. Clip child elements + */ + +[class*='uk-inline'] { + /* 1 */ + display: inline-block; + /* 2 */ + position: relative; + /* 3 */ + max-width: 100%; + /* 4 */ + vertical-align: middle; + /* 5 */ + -webkit-backface-visibility: hidden; +} + +.uk-inline-clip { + /* 6 */ + overflow: hidden; +} + + +/* Height + ========================================================================== */ + +[class*='uk-height'] { box-sizing: border-box; } + +/* + * Only works if parent element has a height set + */ + +.uk-height-1-1 { height: 100%; } + +/* + * Useful to create image teasers + */ + +.uk-height-viewport { min-height: 100vh; } + +/* + * Pixel + * Useful for `overflow: auto` + */ + +.uk-height-small { height: $height-small-height; } +.uk-height-medium { height: $height-medium-height; } +.uk-height-large { height: $height-large-height; } + +.uk-height-max-small { max-height: $height-small-height; } +.uk-height-max-medium { max-height: $height-medium-height; } +.uk-height-max-large { max-height: $height-large-height; } + + +/* Responsive objects + ========================================================================== */ + +/* + * Preserve original dimensions + * Because `img, `video`, `canvas` and `audio` are already responsive by default, see Base component + */ + +.uk-preserve-width, +.uk-preserve-width audio, +.uk-preserve-width canvas, +.uk-preserve-width img, +.uk-preserve-width svg, +.uk-preserve-width video { max-width: none; } + +/* + * Responsiveness + * Corrects `max-width` and `max-height` behavior if padding and border are used + */ + +.uk-responsive-width, +.uk-responsive-height { box-sizing: border-box; } + +/* + * 1. Set a maximum width. `important` needed to override `uk-preserve-width img` + * 2. Auto scale the height. Only needed if `height` attribute is present + */ + +.uk-responsive-width { + /* 1 */ + max-width: 100% !important; + /* 2 */ + height: auto; +} + +/* + * 1. Set a maximum height. Only works if the parent element has a fixed height + * 2. Auto scale the width. Only needed if `width` attribute is present + * 3. Reset max-width, which `img, `video`, `canvas` and `audio` already have by default + */ + +.uk-responsive-height { + /* 1 */ + max-height: 100%; + /* 2 */ + width: auto; + /* 3 */ + max-width: none; +} + + +/* Border + ========================================================================== */ + +.uk-border-circle { border-radius: 50%; } +.uk-border-rounded { border-radius: $border-rounded-border-radius; } + +/* + * Fix `overflow: hidden` to be ignored with border-radius and CSS transforms in Webkit + */ + +.uk-inline-clip[class*='uk-border-'] { -webkit-transform: translateZ(0); } + + +/* Box-shadow + ========================================================================== */ + +.uk-box-shadow-small { box-shadow: $global-small-box-shadow; } +.uk-box-shadow-medium { box-shadow: $global-medium-box-shadow; } +.uk-box-shadow-large { box-shadow: $global-large-box-shadow; } +.uk-box-shadow-xlarge { box-shadow: $global-xlarge-box-shadow; } + +/* + * Hover + */ + +[class*='uk-box-shadow-hover'] { transition: box-shadow $box-shadow-duration ease-in-out; } + +.uk-box-shadow-hover-small:hover { box-shadow: $global-small-box-shadow; } +.uk-box-shadow-hover-medium:hover { box-shadow: $global-medium-box-shadow; } +.uk-box-shadow-hover-large:hover { box-shadow: $global-large-box-shadow; } +.uk-box-shadow-hover-xlarge:hover { box-shadow: $global-xlarge-box-shadow; } + + +/* Box-shadow bottom + ========================================================================== */ + +/* + * 1. Set position. + * 2. Set style + * 3. Blur doesn't work on pseudo elements with negative `z-index` in Edge. + * Solved by using `before` and add position context to child elements. + */ + +@supports (filter: blur(0)) { + + .uk-box-shadow-bottom { + display: inline-block; + position: relative; + max-width: 100%; + vertical-align: middle; + } + + .uk-box-shadow-bottom::before { + content: ''; + /* 1 */ + position: absolute; + bottom: (-$box-shadow-bottom-height); + left: 0; + right: 0; + /* 2 */ + height: $box-shadow-bottom-height; + border-radius: $box-shadow-bottom-border-radius; + background: $box-shadow-bottom-background; + filter: blur($box-shadow-bottom-blur); + @if(mixin-exists(hook-box-shadow-bottom)) {@include hook-box-shadow-bottom();} + } + + /* 3 */ + .uk-box-shadow-bottom > * { position: relative; } + +} + + +/* Drop cap + ========================================================================== */ + +.uk-dropcap::first-letter, +.uk-dropcap > p:first-of-type::first-letter { + display: block; + margin-right: $dropcap-margin-right; + float: left; + font-size: $dropcap-font-size; + line-height: 1; + @if(mixin-exists(hook-dropcap)) {@include hook-dropcap();} +} + + +/* Leader + ========================================================================== */ + +.uk-leader { overflow: hidden; } + +/* + * 1. Place element in text flow + * 2. Never break into a new line + * 3. Get a string back with as many repeating characters to fill the container + * 4. Prevent wrapping. Overflowing characters will be clipped by the container + */ + +.uk-leader-fill::after { + /* 1 */ + display: inline-block; + margin-left: $leader-fill-margin-left; + /* 2 */ + width: 0; + /* 3 */ + content: attr(data-fill); + /* 4 */ + white-space: nowrap; + @if(mixin-exists(hook-leader)) {@include hook-leader();} +} + +/* + * Hide if media does not match + */ + +.uk-leader-fill.uk-leader-hide::after { display: none; } + +/* Pass fill character to JS */ +.var-leader-fill:before { content: $leader-fill-content; } + + +/* Logo + ========================================================================== */ + +/* + * 1. Required for `a` + */ + +.uk-logo { + font-size: $logo-font-size; + font-family: $logo-font-family; + color: $logo-color; + /* 1 */ + text-decoration: none; + @if(mixin-exists(hook-logo)) {@include hook-logo();} +} + +/* Hover + Focus */ +.uk-logo:hover, +.uk-logo:focus { + color: $logo-hover-color; + outline: none; + /* 1 */ + text-decoration: none; + @if(mixin-exists(hook-logo-hover)) {@include hook-logo-hover();} +} + +.uk-logo-inverse { display: none; } + + +/* SVG + ========================================================================== */ + +/* + * 1. Fill all SVG elements with the current text color if no `fill` attribute is set + * 2. Set the fill and stroke color of all SVG elements to the current text color + * 3. Fix for uppercase attribute names in Edge. Will be fixed in Windows 10 builds 16251+ + */ + +/* 1 */ +.uk-svg, +/* 2 */ +.uk-svg:not(.uk-preserve) [fill*='#']:not(.uk-preserve), +.uk-svg:not(.uk-preserve) [FILL*='#']:not(.uk-preserve) { fill: currentcolor; } // 3 +.uk-svg:not(.uk-preserve) [stroke*='#']:not(.uk-preserve), +.uk-svg:not(.uk-preserve) [STROKE*='#']:not(.uk-preserve) { stroke: currentcolor; } // 3 + +/* + * Fix Firefox blurry SVG rendering: https://bugzilla.mozilla.org/show_bug.cgi?id=1046835 + */ + +.uk-svg { transform: translate(0,0); } + + +/* Disabled State + ========================================================================== */ + +.uk-disabled { pointer-events: none; } + + +/* Drag State + ========================================================================== */ + +/* + * 1. Needed if moving over elements with have their own cursor on hover, e.g. links or buttons + * 2. Fix dragging over iframes + */ + +.uk-drag, +/* 1 */ +.uk-drag * { cursor: move; } + +/* 2 */ +.uk-drag iframe { pointer-events: none; } + + +/* Dragover State + ========================================================================== */ + +/* + * Create a box-shadow when dragging a file over the upload area + */ + +.uk-dragover { box-shadow: $dragover-box-shadow; } + + +/* Blend modes + ========================================================================== */ + +.uk-blend-multiply { mix-blend-mode: multiply; } +.uk-blend-screen { mix-blend-mode: screen; } +.uk-blend-overlay { mix-blend-mode: overlay; } +.uk-blend-darken { mix-blend-mode: darken; } +.uk-blend-lighten { mix-blend-mode: lighten; } +.uk-blend-color-dodge { mix-blend-mode: color-dodge; } +.uk-blend-color-burn { mix-blend-mode: color-burn; } +.uk-blend-hard-light { mix-blend-mode: hard-light; } +.uk-blend-soft-light { mix-blend-mode: soft-light; } +.uk-blend-difference { mix-blend-mode: difference; } +.uk-blend-exclusion { mix-blend-mode: exclusion; } +.uk-blend-hue { mix-blend-mode: hue; } +.uk-blend-saturation { mix-blend-mode: saturation; } +.uk-blend-color { mix-blend-mode: color; } +.uk-blend-luminosity { mix-blend-mode: luminosity; } + + +/* Transform +========================================================================== */ + +.uk-transform-center { transform: translate(-50%, -50%); } + + +/* Transform Origin +========================================================================== */ + +.uk-transform-origin-top-left { transform-origin: 0 0; } +.uk-transform-origin-top-center { transform-origin: 50% 0; } +.uk-transform-origin-top-right { transform-origin: 100% 0; } +.uk-transform-origin-center-left { transform-origin: 0 50%; } +.uk-transform-origin-center-right { transform-origin: 100% 50%; } +.uk-transform-origin-bottom-left { transform-origin: 0 100%; } +.uk-transform-origin-bottom-center { transform-origin: 50% 100%; } +.uk-transform-origin-bottom-right { transform-origin: 100% 100%; } + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-utility-misc)) {@include hook-utility-misc();} + +// @mixin hook-panel-scrollable(){} +// @mixin hook-box-shadow-bottom(){} +// @mixin hook-dropcap(){} +// @mixin hook-leader(){} +// @mixin hook-logo(){} +// @mixin hook-logo-hover(){} +// @mixin hook-utility-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-logo-color: $inverse-global-color !default; +$inverse-logo-hover-color: $inverse-global-color !default; + + + +// @mixin hook-inverse-dropcap(){} +// @mixin hook-inverse-leader(){} +// @mixin hook-inverse-logo(){} +// @mixin hook-inverse-logo-hover(){} diff --git a/_sass/uikit/components/variables.scss b/_sass/uikit/components/variables.scss new file mode 100644 index 00000000..a08406a0 --- /dev/null +++ b/_sass/uikit/components/variables.scss @@ -0,0 +1,117 @@ +// +// Component: Variables +// Description: Defines common values which are used across all components +// +// ======================================================================== + + +// Breakpoints +// ======================================================================== + +// Phone Portrait: Galaxy (360x640), iPhone 6 (375x667), iPhone 6+ (414x736) +// Phone Landscape: Galaxy (640x360), iPhone 6 (667x375), iPhone 6+ (736x414) +// Tablet Portrait: iPad (768x1024), Galaxy Tab (800x1280), +// Tablet Landscape: iPad (1024x768), iPad Pro (1024x1366), +// Desktop: Galaxy Tab (1280x800), iPad Pro (1366x1024) + +$breakpoint-small: 640px !default; // Phone landscape +$breakpoint-medium: 960px !default; // Tablet Landscape +$breakpoint-large: 1200px !default; // Desktop +$breakpoint-xlarge: 1600px !default; // Large Screens + +$breakpoint-xsmall-max: ($breakpoint-small - 1) !default; +$breakpoint-small-max: ($breakpoint-medium - 1) !default; +$breakpoint-medium-max: ($breakpoint-large - 1) !default; +$breakpoint-large-max: ($breakpoint-xlarge - 1) !default; + + +// Global variables +// ======================================================================== + +// +// Typography +// + +$global-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !default; +$global-font-size: 16px !default; +$global-line-height: 1.5 !default; // 24px + +$global-xxlarge-font-size: 2.625rem !default; // 42px +$global-xlarge-font-size: 2rem !default; // 32px +$global-large-font-size: 1.5rem !default; // 24px +$global-medium-font-size: 1.25rem !default; // 20px +$global-small-font-size: 0.875rem !default; // 14px + +// +// Colors +// + +$global-color: #666 !default; +$global-emphasis-color: #333 !default; +$global-muted-color: #999 !default; + +$global-link-color: #1e87f0 !default; +$global-link-hover-color: #0f6ecd !default; + +$global-inverse-color: #fff !default; + +// +// Backgrounds +// + +$global-background: #fff !default; + +$global-muted-background: #f8f8f8 !default; +$global-primary-background: #1e87f0 !default; +$global-secondary-background: #222 !default; + +$global-success-background: #32d296 !default; +$global-warning-background: #faa05a !default; +$global-danger-background: #f0506e !default; + +// +// Borders +// + +$global-border-width: 1px !default; +$global-border: #e5e5e5 !default; + +// +// Box-Shadows +// + +$global-small-box-shadow: 0 2px 8px rgba(0,0,0,0.08) !default; +$global-medium-box-shadow: 0 5px 15px rgba(0,0,0,0.08) !default; +$global-large-box-shadow: 0 14px 25px rgba(0,0,0,0.16) !default; +$global-xlarge-box-shadow: 0 28px 50px rgba(0,0,0,0.16) !default; + +// +// Spacings +// + +// Used in margin, section, list +$global-margin: 20px !default; +$global-small-margin: 10px !default; +$global-medium-margin: 40px !default; +$global-large-margin: 70px !default; +$global-xlarge-margin: 140px !default; + +// Used in grid, column, container, align, card, padding +$global-gutter: 30px !default; +$global-small-gutter: 15px !default; +$global-medium-gutter: 40px !default; +$global-large-gutter: 70px !default; + +// +// Controls +// + +$global-control-height: 40px !default; +$global-control-small-height: 30px !default; +$global-control-large-height: 55px !default; + +// +// Z-index +// + +$global-z-index: 1000 !default; \ No newline at end of file diff --git a/_sass/uikit/components/visibility.scss b/_sass/uikit/components/visibility.scss new file mode 100644 index 00000000..ee800a15 --- /dev/null +++ b/_sass/uikit/components/visibility.scss @@ -0,0 +1,151 @@ +// Name: Visibility +// Description: Utilities to show or hide content on breakpoints, hover or touch +// +// Component: `uk-hidden-*` +// `uk-visible-*` +// `uk-invisible` +// `uk-visible-toggle` +// `uk-hidden-hover` +// `uk-invisible-hover` +// `uk-hidden-touch` +// `uk-hidden-notouch` +// +// ======================================================================== + + +/* ======================================================================== + Component: Visibility + ========================================================================== */ + +/* + * Hidden + * `hidden` attribute also set here to make it stronger + */ + +[hidden], +.uk-hidden { display: none !important; } + +/* Phone landscape and bigger */ +@media (min-width: $breakpoint-small) { + + .uk-hidden\@s { display: none !important; } + +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-hidden\@m { display: none !important; } + +} + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + .uk-hidden\@l { display: none !important; } + +} + +/* Large screen and bigger */ +@media (min-width: $breakpoint-xlarge) { + + .uk-hidden\@xl { display: none !important; } + +} + +/* + * Visible + */ + +/* Phone portrait and smaller */ +@media (max-width: $breakpoint-xsmall-max) { + + .uk-visible\@s { display: none !important; } + +} + +/* Phone landscape and smaller */ +@media (max-width: $breakpoint-small-max) { + + .uk-visible\@m { display: none !important; } + +} + +/* Tablet landscape and smaller */ +@media (max-width: $breakpoint-medium-max) { + + .uk-visible\@l { display: none !important; } + +} + +/* Desktop and smaller */ +@media (max-width: $breakpoint-large-max) { + + .uk-visible\@xl { display: none !important; } + +} + + +/* Visibility + ========================================================================== */ + +.uk-invisible { visibility: hidden !important; } + + +/* Hover + ========================================================================== */ + +/* + * Hidden + * Can't use `display: hidden` because it's not focusable. This is accessible through keyboard. + */ + +.uk-visible-toggle:not(:hover):not(.uk-hover) .uk-hidden-hover:not(:focus) { + position: absolute !important; + width: 0 !important; + height: 0 !important; + padding: 0 !important; + margin: 0 !important; + overflow: hidden !important; +} + +/* + * Invisible + * Can't use `visibility: hidden` because it's not focusable. This is accessible through keyboard. + */ + +.uk-visible-toggle:not(:hover):not(.uk-hover) .uk-invisible-hover:not(:focus) { opacity: 0 !important; } + + +/* Touch + ========================================================================== */ + +/* + * Hide if primary pointing device has limited accuracy, e.g. a touch screen. + * Works on mobile browsers: Safari, Chrome and Android browser + */ + +@media (pointer: coarse) { + .uk-hidden-touch { display: none !important; } +} + +/* + * Hide if primary pointing device is accurate, e.g. mouse. + * 1. Fallback for IE11 and Firefox, because `pointer` is not supported + * 2. Reset if supported + */ + +/* 1 */ +.uk-hidden-notouch { display: none !important; } + +@media (pointer: coarse) { + .uk-hidden-notouch { display: block !important; } +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-visibility-misc)) {@include hook-visibility-misc();} + +// @mixin hook-visibility-misc(){} diff --git a/_sass/uikit/components/width.scss b/_sass/uikit/components/width.scss new file mode 100644 index 00000000..7f4a2cb5 --- /dev/null +++ b/_sass/uikit/components/width.scss @@ -0,0 +1,398 @@ +// Name: Width +// Description: Utilities for widths +// +// Component: `uk-child-width-*` +// `uk-width-*` +// +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$width-small-width: 150px !default; +$width-medium-width: 300px !default; +$width-large-width: 450px !default; +$width-xlarge-width: 600px !default; +$width-xxlarge-width: 750px !default; + + +/* ======================================================================== + Component: Width + ========================================================================== */ + + +/* Equal child widths + ========================================================================== */ + +[class*='uk-child-width'] > * { + box-sizing: border-box; + width: 100%; +} + +.uk-child-width-1-2 > * { width: 50%; } +.uk-child-width-1-3 > * { width: unquote('calc(100% * 1 / 3.001)'); } +.uk-child-width-1-4 > * { width: 25%; } +.uk-child-width-1-5 > * { width: 20%; } +.uk-child-width-1-6 > * { width: unquote('calc(100% * 1 / 6.001)'); } + +.uk-child-width-auto > * { width: auto; } + +/* + * Instead of 0, 1px is needed to make cell wrap into next row if predecessor is 100% wide + * and the grid gutter is 0 pixels wide + */ + +.uk-child-width-expand > * { width: 1px; } + +/* + * 1. Make `width: 1px` work, because according to the spec flex items won’t shrink + * below their minimum content size. To change this, set the min-width. + * Only needed for Firefox. All other browsers ignore this. + * + * 2. `width` is ignored when wrapping flex items in Safari + * https://github.com/philipwalton/flexbugs#11-min-and-max-size-declarations-are-ignored-when-wrapping-flex-items + */ + +.uk-child-width-expand > :not([class*='uk-width']) { + flex: 1; + /* 1 */ + min-width: 0; + /* 2 */ + flex-basis: 1px; +} + +/* Phone landscape and bigger */ +@media (min-width: $breakpoint-small) { + + .uk-child-width-1-1\@s > * { width: 100%; } + .uk-child-width-1-2\@s > * { width: 50%; } + .uk-child-width-1-3\@s > * { width: unquote('calc(100% * 1 / 3.001)'); } + .uk-child-width-1-4\@s > * { width: 25%; } + .uk-child-width-1-5\@s > * { width: 20%; } + .uk-child-width-1-6\@s > * { width: unquote('calc(100% * 1 / 6.001)'); } + + .uk-child-width-auto\@s > * { width: auto; } + .uk-child-width-expand\@s > * { width: 1px; } + + .uk-child-width-expand\@s > :not([class*='uk-width']) { + flex: 1; + min-width: 0; + flex-basis: 1px; + } + +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + .uk-child-width-1-1\@m > * { width: 100%; } + .uk-child-width-1-2\@m > * { width: 50%; } + .uk-child-width-1-3\@m > * { width: unquote('calc(100% * 1 / 3.001)'); } + .uk-child-width-1-4\@m > * { width: 25%; } + .uk-child-width-1-5\@m > * { width: 20%; } + .uk-child-width-1-6\@m > * { width: unquote('calc(100% * 1 / 6.001)'); } + + .uk-child-width-auto\@m > * { width: auto; } + .uk-child-width-expand\@m > * { width: 1px; } + + .uk-child-width-expand\@m > :not([class*='uk-width']) { + flex: 1; + min-width: 0; + flex-basis: 1px; + } + +} + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + .uk-child-width-1-1\@l > * { width: 100%; } + .uk-child-width-1-2\@l > * { width: 50%; } + .uk-child-width-1-3\@l > * { width: unquote('calc(100% * 1 / 3.001)'); } + .uk-child-width-1-4\@l > * { width: 25%; } + .uk-child-width-1-5\@l > * { width: 20%; } + .uk-child-width-1-6\@l > * { width: unquote('calc(100% * 1 / 6.001)'); } + + .uk-child-width-auto\@l > * { width: auto; } + .uk-child-width-expand\@l > * { width: 1px; } + + .uk-child-width-expand\@l > :not([class*='uk-width']) { + flex: 1; + min-width: 0; + flex-basis: 1px; + } + +} + +/* Large screen and bigger */ +@media (min-width: $breakpoint-xlarge) { + + .uk-child-width-1-1\@xl > * { width: 100%; } + .uk-child-width-1-2\@xl > * { width: 50%; } + .uk-child-width-1-3\@xl > * { width: unquote('calc(100% * 1 / 3.001)'); } + .uk-child-width-1-4\@xl > * { width: 25%; } + .uk-child-width-1-5\@xl > * { width: 20%; } + .uk-child-width-1-6\@xl > * { width: unquote('calc(100% * 1 / 6.001)'); } + + .uk-child-width-auto\@xl > * { width: auto; } + .uk-child-width-expand\@xl > * { width: 1px; } + + .uk-child-width-expand\@xl > :not([class*='uk-width']) { + flex: 1; + min-width: 0; + flex-basis: 1px; + } + +} + + +/* Single Widths + ========================================================================== */ + +/* + * 1. `max-width` is needed for the pixel-based classes + */ + +[class*='uk-width'] { + box-sizing: border-box; + width: 100%; + /* 1 */ + max-width: 100%; +} + +/* Halves */ +.uk-width-1-2 { width: 50%; } + +/* Thirds */ +.uk-width-1-3 { width: unquote('calc(100% * 1 / 3.001)'); } +.uk-width-2-3 { width: unquote('calc(100% * 2 / 3.001)'); } + +/* Quarters */ +.uk-width-1-4 { width: 25%; } +.uk-width-3-4 { width: 75%; } + +/* Fifths */ +.uk-width-1-5 { width: 20%; } +.uk-width-2-5 { width: 40%; } +.uk-width-3-5 { width: 60%; } +.uk-width-4-5 { width: 80%; } + +/* Sixths */ +.uk-width-1-6 { width: unquote('calc(100% * 1 / 6.001)'); } +.uk-width-5-6 { width: unquote('calc(100% * 5 / 6.001)'); } + +/* Pixel */ +.uk-width-small { width: $width-small-width; } +.uk-width-medium { width: $width-medium-width; } +.uk-width-large { width: $width-large-width; } +.uk-width-xlarge { width: $width-xlarge-width; } +.uk-width-xxlarge { width: $width-xxlarge-width; } + +/* Auto */ +.uk-width-auto { width: auto; } + +/* Expand */ +.uk-width-expand { + width: 1px; + flex: 1; + min-width: 0; + flex-basis: 1px; +} + +/* Phone landscape and bigger */ +@media (min-width: $breakpoint-small) { + + /* Whole */ + .uk-width-1-1\@s { width: 100%; } + + /* Halves */ + .uk-width-1-2\@s { width: 50%; } + + /* Thirds */ + .uk-width-1-3\@s { width: unquote('calc(100% * 1 / 3.001)'); } + .uk-width-2-3\@s { width: unquote('calc(100% * 2 / 3.001)'); } + + /* Quarters */ + .uk-width-1-4\@s { width: 25%; } + .uk-width-3-4\@s { width: 75%; } + + /* Fifths */ + .uk-width-1-5\@s { width: 20%; } + .uk-width-2-5\@s { width: 40%; } + .uk-width-3-5\@s { width: 60%; } + .uk-width-4-5\@s { width: 80%; } + + /* Sixths */ + .uk-width-1-6\@s { width: unquote('calc(100% * 1 / 6.001)'); } + .uk-width-5-6\@s { width: unquote('calc(100% * 5 / 6.001)'); } + + /* Pixel */ + .uk-width-small\@s { width: $width-small-width; } + .uk-width-medium\@s { width: $width-medium-width; } + .uk-width-large\@s { width: $width-large-width; } + .uk-width-xlarge\@s { width: $width-xlarge-width; } + .uk-width-xxlarge\@s { width: $width-xxlarge-width; } + + /* Auto */ + .uk-width-auto\@s { width: auto; } + + /* Expand */ + .uk-width-expand\@s { + width: 1px; + flex: 1; + min-width: 0; + flex-basis: 1px; + } + +} + +/* Tablet landscape and bigger */ +@media (min-width: $breakpoint-medium) { + + /* Whole */ + .uk-width-1-1\@m { width: 100%; } + + /* Halves */ + .uk-width-1-2\@m { width: 50%; } + + /* Thirds */ + .uk-width-1-3\@m { width: unquote('calc(100% * 1 / 3.001)'); } + .uk-width-2-3\@m { width: unquote('calc(100% * 2 / 3.001)'); } + + /* Quarters */ + .uk-width-1-4\@m { width: 25%; } + .uk-width-3-4\@m { width: 75%; } + + /* Fifths */ + .uk-width-1-5\@m { width: 20%; } + .uk-width-2-5\@m { width: 40%; } + .uk-width-3-5\@m { width: 60%; } + .uk-width-4-5\@m { width: 80%; } + + /* Sixths */ + .uk-width-1-6\@m { width: unquote('calc(100% * 1 / 6.001)'); } + .uk-width-5-6\@m { width: unquote('calc(100% * 5 / 6.001)'); } + + /* Pixel */ + .uk-width-small\@m { width: $width-small-width; } + .uk-width-medium\@m { width: $width-medium-width; } + .uk-width-large\@m { width: $width-large-width; } + .uk-width-xlarge\@m { width: $width-xlarge-width; } + .uk-width-xxlarge\@m { width: $width-xxlarge-width; } + + /* Auto */ + .uk-width-auto\@m { width: auto; } + + /* Expand */ + .uk-width-expand\@m { + width: 1px; + flex: 1; + min-width: 0; + flex-basis: 1px; + } + +} + +/* Desktop and bigger */ +@media (min-width: $breakpoint-large) { + + /* Whole */ + .uk-width-1-1\@l { width: 100%; } + + /* Halves */ + .uk-width-1-2\@l { width: 50%; } + + /* Thirds */ + .uk-width-1-3\@l { width: unquote('calc(100% * 1 / 3.001)'); } + .uk-width-2-3\@l { width: unquote('calc(100% * 2 / 3.001)'); } + + /* Quarters */ + .uk-width-1-4\@l { width: 25%; } + .uk-width-3-4\@l { width: 75%; } + + /* Fifths */ + .uk-width-1-5\@l { width: 20%; } + .uk-width-2-5\@l { width: 40%; } + .uk-width-3-5\@l { width: 60%; } + .uk-width-4-5\@l { width: 80%; } + + /* Sixths */ + .uk-width-1-6\@l { width: unquote('calc(100% * 1 / 6.001)'); } + .uk-width-5-6\@l { width: unquote('calc(100% * 5 / 6.001)'); } + + /* Pixel */ + .uk-width-small\@l { width: $width-small-width; } + .uk-width-medium\@l { width: $width-medium-width; } + .uk-width-large\@l { width: $width-large-width; } + .uk-width-xlarge\@l { width: $width-xlarge-width; } + .uk-width-xxlarge\@l { width: $width-xxlarge-width; } + + /* Auto */ + .uk-width-auto\@l { width: auto; } + + /* Expand */ + .uk-width-expand\@l { + width: 1px; + flex: 1; + min-width: 0; + flex-basis: 1px; + } + +} + +/* Large screen and bigger */ +@media (min-width: $breakpoint-xlarge) { + + /* Whole */ + .uk-width-1-1\@xl { width: 100%; } + + /* Halves */ + .uk-width-1-2\@xl { width: 50%; } + + /* Thirds */ + .uk-width-1-3\@xl { width: unquote('calc(100% * 1 / 3.001)'); } + .uk-width-2-3\@xl { width: unquote('calc(100% * 2 / 3.001)'); } + + /* Quarters */ + .uk-width-1-4\@xl { width: 25%; } + .uk-width-3-4\@xl { width: 75%; } + + /* Fifths */ + .uk-width-1-5\@xl { width: 20%; } + .uk-width-2-5\@xl { width: 40%; } + .uk-width-3-5\@xl { width: 60%; } + .uk-width-4-5\@xl { width: 80%; } + + /* Sixths */ + .uk-width-1-6\@xl { width: unquote('calc(100% * 1 / 6.001)'); } + .uk-width-5-6\@xl { width: unquote('calc(100% * 5 / 6.001)'); } + + /* Pixel */ + .uk-width-small\@xl { width: $width-small-width; } + .uk-width-medium\@xl { width: $width-medium-width; } + .uk-width-large\@xl { width: $width-large-width; } + .uk-width-xlarge\@xl { width: $width-xlarge-width; } + .uk-width-xxlarge\@xl { width: $width-xxlarge-width; } + + /* Auto */ + .uk-width-auto\@xl { width: auto; } + + /* Expand */ + .uk-width-expand\@xl { + width: 1px; + flex: 1; + min-width: 0; + flex-basis: 1px; + } + +} + + +// Hooks +// ======================================================================== + +@if(mixin-exists(hook-width-misc)) {@include hook-width-misc();} + +// @mixin hook-width-misc(){} diff --git a/_sass/uikit/mixins-theme.scss b/_sass/uikit/mixins-theme.scss new file mode 100644 index 00000000..993cf209 --- /dev/null +++ b/_sass/uikit/mixins-theme.scss @@ -0,0 +1,2033 @@ +@mixin hook-accordion(){} +@mixin hook-accordion-item(){} +@mixin hook-accordion-title(){ + + overflow: hidden; + + &::after { + content: ""; + width: ($accordion-title-line-height * 1em); + height: ($accordion-title-line-height * 1em); + float: right; + @include svg-fill($internal-accordion-close-image, "#000", $accordion-icon-color); + background-repeat: no-repeat; + background-position: 50% 50%; + } + + .uk-open > &::after { @include svg-fill($internal-accordion-open-image, "#000", $accordion-icon-color); } + +} +@mixin hook-accordion-title-hover(){} +@mixin hook-accordion-content(){} +@mixin hook-accordion-misc(){} +@mixin hook-inverse-accordion-item(){} +@mixin hook-inverse-accordion-title(){} +@mixin hook-inverse-accordion-title-hover(){} +@mixin hook-inverse-component-accordion(){ + + .uk-accordion-title::after { @include svg-fill($internal-accordion-close-image, "#000", $inverse-global-color); } + + .uk-open > .uk-accordion-title::after { @include svg-fill($internal-accordion-open-image, "#000", $inverse-global-color); } + +} +@mixin hook-align-misc(){} +@mixin hook-alert(){} +@mixin hook-alert-close(){ + color: inherit; + opacity: $alert-close-opacity; +} +@mixin hook-alert-close-hover(){ + color: inherit; + opacity: $alert-close-hover-opacity; +} +@mixin hook-alert-primary(){} +@mixin hook-alert-success(){} +@mixin hook-alert-warning(){} +@mixin hook-alert-danger(){} +@mixin hook-alert-misc(){ + + /* + * Content + */ + + .uk-alert h1, + .uk-alert h2, + .uk-alert h3, + .uk-alert h4, + .uk-alert h5, + .uk-alert h6 { color: inherit; } + + .uk-alert a:not([class]) { + color: inherit; + text-decoration: underline; + } + + .uk-alert a:not([class]):hover { + color: inherit; + text-decoration: underline; + } + +} +@mixin hook-article(){} +@mixin hook-article-adjacent(){} +@mixin hook-article-title(){} +@mixin hook-article-meta(){ + + a { color: $article-meta-link-color; } + + a:hover { + color: $article-meta-link-hover-color; + text-decoration: none; + } + +} +@mixin hook-article-misc(){} +@mixin hook-inverse-article-title(){} +@mixin hook-inverse-article-meta(){} +@mixin hook-inverse-component-article(){ + + .uk-article-title { + @if(mixin-exists(hook-inverse-article-title)) {@include hook-inverse-article-title();} + } + + .uk-article-meta { + color: $inverse-article-meta-color; + @if(mixin-exists(hook-inverse-article-meta)) {@include hook-inverse-article-meta();} + } + +} +@mixin hook-animation-misc(){} +@mixin hook-background-misc(){} +@mixin hook-badge(){} +@mixin hook-badge-hover(){} +@mixin hook-badge-misc(){} +@mixin hook-inverse-badge(){} +@mixin hook-inverse-badge-hover(){} +@mixin hook-inverse-component-badge(){ + + .uk-badge { + background-color: $inverse-badge-background; + color: $inverse-badge-color; + @if(mixin-exists(hook-inverse-badge)) {@include hook-inverse-badge();} + } + + .uk-badge:hover, + .uk-badge:focus { + color: $inverse-badge-hover-color; + @if(mixin-exists(hook-inverse-badge-hover)) {@include hook-inverse-badge-hover();} + } + +} +@mixin hook-base-body(){} +@mixin hook-base-link(){} +@mixin hook-base-link-hover(){} +@mixin hook-base-code(){ + padding: $base-code-padding-vertical $base-code-padding-horizontal; + background: $base-code-background; +} +@mixin hook-base-heading(){} +@mixin hook-base-h1(){} +@mixin hook-base-h2(){} +@mixin hook-base-h3(){} +@mixin hook-base-h4(){} +@mixin hook-base-h5(){} +@mixin hook-base-h6(){} +@mixin hook-base-hr(){} +@mixin hook-base-blockquote(){ + color: $base-blockquote-color; +} +@mixin hook-base-blockquote-footer(){ + + color: $base-blockquote-footer-color; + + &::before { content: "— "; } + +} +@mixin hook-base-pre(){ + padding: $base-pre-padding; + border: $base-pre-border-width solid $base-pre-border; + border-radius: $base-pre-border-radius; + background: $base-pre-background; +} +@mixin hook-base-misc(){} +@mixin hook-inverse-base-link(){} +@mixin hook-inverse-base-link-hover(){} +@mixin hook-inverse-base-code(){ + background: $inverse-global-muted-background; +} +@mixin hook-inverse-base-heading(){} +@mixin hook-inverse-base-h1(){} +@mixin hook-inverse-base-h2(){} +@mixin hook-inverse-base-h3(){} +@mixin hook-inverse-base-h4(){} +@mixin hook-inverse-base-h5(){} +@mixin hook-inverse-base-h6(){} +@mixin hook-inverse-base-blockquote(){ color: $inverse-base-blockquote-color; } +@mixin hook-inverse-base-blockquote-footer(){ color: $inverse-base-blockquote-footer-color; } +@mixin hook-inverse-base-hr(){} +@mixin hook-inverse-component-base(){ + + color: $inverse-base-color; + + // Base + // ======================================================================== + + // + // Link + // + + a, + .uk-link { + color: $inverse-base-link-color; + @if(mixin-exists(hook-inverse-base-link)) {@include hook-inverse-base-link();} + } + + a:hover, + .uk-link:hover { + color: $inverse-base-link-hover-color; + @if(mixin-exists(hook-inverse-base-link-hover)) {@include hook-inverse-base-link-hover();} + } + + // + // Code + // + + :not(pre) > code, + :not(pre) > kbd, + :not(pre) > samp { + color: $inverse-base-code-color; + @if(mixin-exists(hook-inverse-base-code)) {@include hook-inverse-base-code();} + } + + // + // Emphasize + // + + em { color: $inverse-base-em-color; } + + // + // Headings + // + + h1, .uk-h1, + h2, .uk-h2, + h3, .uk-h3, + h4, .uk-h4, + h5, .uk-h5, + h6, .uk-h6 { + color: $inverse-base-heading-color; + @if(mixin-exists(hook-inverse-base-heading)) {@include hook-inverse-base-heading();} + } + + h1, .uk-h1 { + @if(mixin-exists(hook-inverse-base-h1)) {@include hook-inverse-base-h1();} + } + + h2, .uk-h2 { + @if(mixin-exists(hook-inverse-base-h2)) {@include hook-inverse-base-h2();} + } + + h3, .uk-h3 { + @if(mixin-exists(hook-inverse-base-h3)) {@include hook-inverse-base-h3();} + } + + h4, .uk-h4 { + @if(mixin-exists(hook-inverse-base-h4)) {@include hook-inverse-base-h4();} + } + + h5, .uk-h5 { + @if(mixin-exists(hook-inverse-base-h5)) {@include hook-inverse-base-h5();} + } + + h6, .uk-h6 { + @if(mixin-exists(hook-inverse-base-h6)) {@include hook-inverse-base-h6();} + } + + // + // Blockquotes + // + + blockquote { + @if(mixin-exists(hook-inverse-base-blockquote)) {@include hook-inverse-base-blockquote();} + } + + blockquote footer { + @if(mixin-exists(hook-inverse-base-blockquote-footer)) {@include hook-inverse-base-blockquote-footer();} + } + + // + // Horizontal rules + // + + hr, .uk-hr { + border-top-color: $inverse-base-hr-border; + @if(mixin-exists(hook-inverse-base-hr)) {@include hook-inverse-base-hr();} + } + +} +@mixin hook-breadcrumb(){} +@mixin hook-breadcrumb-item(){} +@mixin hook-breadcrumb-item-hover(){} +@mixin hook-breadcrumb-item-disabled(){} +@mixin hook-breadcrumb-item-active(){} +@mixin hook-breadcrumb-divider(){} +@mixin hook-breadcrumb-misc(){} +@mixin hook-inverse-breadcrumb-item(){} +@mixin hook-inverse-breadcrumb-item-hover(){} +@mixin hook-inverse-breadcrumb-item-disabled(){} +@mixin hook-inverse-breadcrumb-item-active(){} +@mixin hook-inverse-breadcrumb-divider(){} +@mixin hook-inverse-component-breadcrumb(){ + + .uk-breadcrumb > * > * { + color: $inverse-breadcrumb-item-color; + @if(mixin-exists(hook-inverse-breadcrumb-item)) {@include hook-inverse-breadcrumb-item();} + } + + .uk-breadcrumb > * > :hover, + .uk-breadcrumb > * > :focus { + color: $inverse-breadcrumb-item-hover-color; + @if(mixin-exists(hook-inverse-breadcrumb-item-hover)) {@include hook-inverse-breadcrumb-item-hover();} + } + + + .uk-breadcrumb > .uk-disabled > * { + @if(mixin-exists(hook-inverse-breadcrumb-item-disabled)) {@include hook-inverse-breadcrumb-item-disabled();} + } + + .uk-breadcrumb > :last-child > * { + color: $inverse-breadcrumb-item-active-color; + @if(mixin-exists(hook-inverse-breadcrumb-item-active)) {@include hook-inverse-breadcrumb-item-active();} + } + + // + // Divider + // + + .uk-breadcrumb > :nth-child(n+2):not(.uk-first-column)::before { + color: $inverse-breadcrumb-divider-color; + @if(mixin-exists(hook-inverse-breadcrumb-divider)) {@include hook-inverse-breadcrumb-divider();} + } + +} +@mixin hook-button(){ + text-transform: $button-text-transform; + transition: 0.1s ease-in-out; + transition-property: color, background-color, border-color; +} +@mixin hook-button-hover(){} +@mixin hook-button-focus(){} +@mixin hook-button-active(){} +@mixin hook-button-default(){ border: $button-border-width solid $button-default-border; } +@mixin hook-button-default-hover(){ border-color: $button-default-hover-border; } +@mixin hook-button-default-active(){ border-color: $button-default-active-border; } +@mixin hook-button-primary(){ border: $button-border-width solid transparent; } +@mixin hook-button-primary-hover(){} +@mixin hook-button-primary-active(){} +@mixin hook-button-secondary(){ border: $button-border-width solid transparent; } +@mixin hook-button-secondary-hover(){} +@mixin hook-button-secondary-active(){} +@mixin hook-button-danger(){ border: $button-border-width solid transparent; } +@mixin hook-button-danger-hover(){} +@mixin hook-button-danger-active(){} +@mixin hook-button-disabled(){ border-color: $button-disabled-border; } +@mixin hook-button-small(){} +@mixin hook-button-large(){} +@mixin hook-button-text(){ + + position: relative; + + &::before { + content: ""; + position: absolute; + bottom: 0; + left: 0; + right: 100%; + border-bottom: $button-text-border-width solid $button-text-border; + transition: right 0.3s ease-out; + } + +} +@mixin hook-button-text-hover(){ + + &::before { right: 0; } + +} +@mixin hook-button-text-disabled(){ + + &::before { display: none; } + +} +@mixin hook-button-link(){} +@mixin hook-button-misc(){ + + /* Group + ========================================================================== */ + + /* + * Collapse border + */ + + .uk-button-group > .uk-button:nth-child(n+2), + .uk-button-group > div:nth-child(n+2) .uk-button { margin-left: (-$button-border-width); } + + /* + * Create position context to superimpose the successor elements border + * Known issue: If you use an `a` element as button and an icon inside, + * the active state will not work if you click the icon inside the button + * Workaround: Just use a `button` or `input` element as button + */ + + .uk-button-group .uk-button:hover, + .uk-button-group .uk-button:focus, + .uk-button-group .uk-button:active, + .uk-button-group .uk-button.uk-active { + position: relative; + z-index: 1; + } + +} +@mixin hook-inverse-button-default(){ border-color: $inverse-global-color; } +@mixin hook-inverse-button-default-hover(){ border-color: $inverse-global-emphasis-color; } +@mixin hook-inverse-button-default-active(){ border-color: $inverse-global-emphasis-color; } +@mixin hook-inverse-button-primary(){} +@mixin hook-inverse-button-primary-hover(){} +@mixin hook-inverse-button-primary-active(){} +@mixin hook-inverse-button-secondary(){} +@mixin hook-inverse-button-secondary-hover(){} +@mixin hook-inverse-button-secondary-active(){} +@mixin hook-inverse-button-text(){ + &::before { border-bottom-color: $inverse-global-emphasis-color; } +} +@mixin hook-inverse-button-text-hover(){} +@mixin hook-inverse-button-text-disabled(){} +@mixin hook-inverse-button-link(){} +@mixin hook-inverse-component-button(){ + + // + // Default + // + + .uk-button-default { + background-color: $inverse-button-default-background; + color: $inverse-button-default-color; + @if(mixin-exists(hook-inverse-button-default)) {@include hook-inverse-button-default();} + } + + .uk-button-default:hover, + .uk-button-default:focus { + background-color: $inverse-button-default-hover-background; + color: $inverse-button-default-hover-color; + @if(mixin-exists(hook-inverse-button-default-hover)) {@include hook-inverse-button-default-hover();} + } + + .uk-button-default:active, + .uk-button-default.uk-active { + background-color: $inverse-button-default-active-background; + color: $inverse-button-default-active-color; + @if(mixin-exists(hook-inverse-button-default-active)) {@include hook-inverse-button-default-active();} + } + + // + // Primary + // + + .uk-button-primary { + background-color: $inverse-button-primary-background; + color: $inverse-button-primary-color; + @if(mixin-exists(hook-inverse-button-primary)) {@include hook-inverse-button-primary();} + } + + .uk-button-primary:hover, + .uk-button-primary:focus { + background-color: $inverse-button-primary-hover-background; + color: $inverse-button-primary-hover-color; + @if(mixin-exists(hook-inverse-button-primary-hover)) {@include hook-inverse-button-primary-hover();} + } + + .uk-button-primary:active, + .uk-button-primary.uk-active { + background-color: $inverse-button-primary-active-background; + color: $inverse-button-primary-active-color; + @if(mixin-exists(hook-inverse-button-primary-active)) {@include hook-inverse-button-primary-active();} + } + + // + // Secondary + // + + .uk-button-secondary { + background-color: $inverse-button-secondary-background; + color: $inverse-button-secondary-color; + @if(mixin-exists(hook-inverse-button-secondary)) {@include hook-inverse-button-secondary();} + } + + .uk-button-secondary:hover, + .uk-button-secondary:focus { + background-color: $inverse-button-secondary-hover-background; + color: $inverse-button-secondary-hover-color; + @if(mixin-exists(hook-inverse-button-secondary-hover)) {@include hook-inverse-button-secondary-hover();} + } + + .uk-button-secondary:active, + .uk-button-secondary.uk-active { + background-color: $inverse-button-secondary-active-background; + color: $inverse-button-secondary-active-color; + @if(mixin-exists(hook-inverse-button-secondary-active)) {@include hook-inverse-button-secondary-active();} + } + + // + // Text + // + + .uk-button-text { + color: $inverse-button-text-color; + @if(mixin-exists(hook-inverse-button-text)) {@include hook-inverse-button-text();} + } + + .uk-button-text:hover, + .uk-button-text:focus { + color: $inverse-button-text-hover-color; + @if(mixin-exists(hook-inverse-button-text-hover)) {@include hook-inverse-button-text-hover();} + } + + .uk-button-text:disabled { + color: $inverse-button-text-disabled-color; + @if(mixin-exists(hook-inverse-button-text-disabled)) {@include hook-inverse-button-text-disabled();} + } + + // + // Link + // + + .uk-button-link { + color: $inverse-button-link-color; + @if(mixin-exists(hook-inverse-button-link)) {@include hook-inverse-button-link();} + } + + .uk-button-link:hover, + .uk-button-link:focus { color: $inverse-button-link-hover-color; } + + +} +@mixin hook-card(){ transition: box-shadow 0.1s ease-in-out; } +@mixin hook-card-body(){} +@mixin hook-card-header(){} +@mixin hook-card-footer(){} +@mixin hook-card-media(){} +@mixin hook-card-media-top(){} +@mixin hook-card-media-bottom(){} +@mixin hook-card-media-left(){} +@mixin hook-card-media-right(){} +@mixin hook-card-title(){} +@mixin hook-card-badge(){} +@mixin hook-card-hover(){ box-shadow: $card-hover-box-shadow; } +@mixin hook-card-default(){ box-shadow: $card-default-box-shadow; } +@mixin hook-card-default-title(){} +@mixin hook-card-default-hover(){ box-shadow: $card-default-hover-box-shadow; } +@mixin hook-card-default-header(){ border-bottom: $card-default-header-border-width solid $card-default-header-border; } +@mixin hook-card-default-footer(){ border-top: $card-default-footer-border-width solid $card-default-footer-border; } +@mixin hook-card-primary(){ box-shadow: $card-primary-box-shadow; } +@mixin hook-card-primary-title(){} +@mixin hook-card-primary-hover(){ box-shadow: $card-primary-hover-box-shadow; } +@mixin hook-card-secondary(){ box-shadow: $card-secondary-box-shadow; } +@mixin hook-card-secondary-title(){} +@mixin hook-card-secondary-hover(){ box-shadow: $card-secondary-hover-box-shadow; } +@mixin hook-card-misc(){ + + /* + * Default + */ + + .uk-card-body .uk-nav-default { margin: (-$card-body-padding-vertical + 15px) (-$card-body-padding-horizontal); } + .uk-card-title + .uk-nav-default { margin-top: 0; } + + .uk-card-body .uk-nav-default > li > a, + .uk-card-body .uk-nav-default .uk-nav-header, + .uk-card-body .uk-nav-default .uk-nav-divider { + padding-left: $card-body-padding-horizontal; + padding-right: $card-body-padding-horizontal; + } + + .uk-card-body .uk-nav-default .uk-nav-sub { padding-left: $nav-sublist-deeper-padding-left + $card-body-padding-horizontal; } + + + /* Desktop and bigger */ + @media (min-width: $breakpoint-large) { + + .uk-card-body .uk-nav-default { margin: (-$card-body-padding-vertical-l + 15px) (-$card-body-padding-horizontal-l); } + .uk-card-title + .uk-nav-default { margin-top: 0; } + + .uk-card-body .uk-nav-default > li > a, + .uk-card-body .uk-nav-default .uk-nav-header, + .uk-card-body .uk-nav-default .uk-nav-divider { + padding-left: $card-body-padding-horizontal-l; + padding-right: $card-body-padding-horizontal-l; + } + + .uk-card-body .uk-nav-default .uk-nav-sub { padding-left: $nav-sublist-deeper-padding-left + $card-body-padding-horizontal-l; } + + } + + /* + * Small + */ + + .uk-card-small .uk-nav-default { margin: (-$card-small-body-padding-vertical + 15px) (-$card-small-body-padding-horizontal); } + .uk-card-small .uk-card-title + .uk-nav-default { margin-top: 0; } + + .uk-card-small .uk-nav-default > li > a, + .uk-card-small .uk-nav-default .uk-nav-header, + .uk-card-small .uk-nav-default .uk-nav-divider { + padding-left: $card-small-body-padding-horizontal; + padding-right: $card-small-body-padding-horizontal; + } + + .uk-card-small .uk-nav-default .uk-nav-sub { padding-left: $nav-sublist-deeper-padding-left + $card-small-body-padding-horizontal; } + + /* + * Large + */ + + /* Desktop and bigger */ + @media (min-width: $breakpoint-large) { + + .uk-card-large .uk-nav-default { margin: (-$card-large-body-padding-vertical-l + 15px) (-$card-large-body-padding-horizontal-l); } + .uk-card-large .uk-card-title + .uk-nav-default { margin-top: 0; } + + } + +} +@mixin hook-close(){ + transition: 0.1s ease-in-out; + transition-property: color, opacity; +} +@mixin hook-close-hover(){} +@mixin hook-close-misc(){} +@mixin hook-inverse-close(){} +@mixin hook-inverse-close-hover(){} +@mixin hook-inverse-component-close(){ + + .uk-close { + color: $inverse-close-color; + @if(mixin-exists(hook-inverse-close)) {@include hook-inverse-close();} + } + + .uk-close:hover, + .uk-close:focus { + color: $inverse-close-hover-color; + @if(mixin-exists(hook-inverse-close-hover)) {@include hook-inverse-close-hover();} + } + +} +@mixin hook-column-misc(){} +@mixin hook-inverse-component-column(){ + + .uk-column-divider { column-rule-color: $inverse-column-divider-rule-color; } + +} +@mixin hook-comment(){} +@mixin hook-comment-body(){} +@mixin hook-comment-header(){} +@mixin hook-comment-title(){} +@mixin hook-comment-meta(){} +@mixin hook-comment-avatar(){} +@mixin hook-comment-list-adjacent(){} +@mixin hook-comment-list-sub(){} +@mixin hook-comment-list-sub-adjacent(){} +@mixin hook-comment-primary(){ + padding: $comment-primary-padding; + background-color: $comment-primary-background; +} +@mixin hook-comment-misc(){} +@mixin hook-container-misc(){} +@mixin hook-countdown(){} +@mixin hook-countdown-item(){} +@mixin hook-countdown-number(){} +@mixin hook-countdown-separator(){} +@mixin hook-countdown-label(){} +@mixin hook-countdown-misc(){} +@mixin hook-inverse-countdown-item(){} +@mixin hook-inverse-countdown-number(){} +@mixin hook-inverse-countdown-separator(){} +@mixin hook-inverse-countdown-label(){} +@mixin hook-inverse-component-countdown(){ + + .uk-countdown-number, + .uk-countdown-separator { + @if(mixin-exists(hook-inverse-countdown-item)) {@include hook-inverse-countdown-item();} + } + + .uk-countdown-number { + @if(mixin-exists(hook-inverse-countdown-number)) {@include hook-inverse-countdown-number();} + } + + .uk-countdown-separator { + @if(mixin-exists(hook-inverse-countdown-separator)) {@include hook-inverse-countdown-separator();} + } + + .uk-countdown-label { + @if(mixin-exists(hook-inverse-countdown-label)) {@include hook-inverse-countdown-label();} + } + +} +@mixin hook-cover-misc(){} +@mixin hook-description-list-term(){ + font-size: $description-list-term-font-size; + font-weight: $description-list-term-font-weight; + text-transform: $description-list-term-text-transform; +} +@mixin hook-description-list-description(){} +@mixin hook-description-list-divider-term(){} +@mixin hook-description-list-misc(){} +@mixin svg-fill($src, $color-default, $color-new, $property: background-image){ + + $escape-color-default: escape($color-default) !default; + $escape-color-new: escape("#{$color-new}") !default; + + $data-uri: data-uri('image/svg+xml;charset=UTF-8', "#{$src}") !default; + $replace-src: replace("#{$data-uri}", "#{$escape-color-default}", "#{$escape-color-new}", "g") !default; + + #{$property}: unquote($replace-src); +} +@mixin hook-divider-icon(){} +@mixin hook-divider-icon-line(){} +@mixin hook-divider-icon-line-left(){} +@mixin hook-divider-icon-line-right(){} +@mixin hook-divider-small(){} +@mixin hook-divider-misc(){} +@mixin hook-inverse-divider-icon(){} +@mixin hook-inverse-divider-icon-line(){} +@mixin hook-inverse-divider-small(){} +@mixin hook-inverse-component-divider(){ + + .uk-divider-icon { + @include svg-fill($internal-divider-icon-image, "#000", $inverse-divider-icon-color); + @if(mixin-exists(hook-inverse-divider-icon)) {@include hook-inverse-divider-icon();} + } + + .uk-divider-icon::before, + .uk-divider-icon::after { + border-bottom-color: $inverse-divider-icon-line-border; + @if(mixin-exists(hook-inverse-divider-icon-line)) {@include hook-inverse-divider-icon-line();} + } + + .uk-divider-small::after { + border-top-color: $inverse-divider-small-border; + @if(mixin-exists(hook-inverse-divider-small)) {@include hook-inverse-divider-small();} + } + +} +@mixin hook-dotnav(){} +@mixin hook-dotnav-item(){ + border: $dotnav-item-border-width solid $dotnav-item-border; + transition: 0.2s ease-in-out; + transition-property: background-color, border-color; +} +@mixin hook-dotnav-item-hover(){ border-color: $dotnav-item-hover-border; } +@mixin hook-dotnav-item-onclick(){ border-color: $dotnav-item-onclick-border; } +@mixin hook-dotnav-item-active(){ border-color: $dotnav-item-active-border; } +@mixin hook-dotnav-misc(){} +@mixin hook-inverse-dotnav-item(){ border-color: rgba($inverse-global-color, 0.9); } +@mixin hook-inverse-dotnav-item-hover(){ border-color: transparent; } +@mixin hook-inverse-dotnav-item-onclick(){ border-color: transparent; } +@mixin hook-inverse-dotnav-item-active(){ border-color: transparent; } +@mixin hook-inverse-component-dotnav(){ + + .uk-dotnav > * > * { + background-color: $inverse-dotnav-item-background; + @if(mixin-exists(hook-inverse-dotnav-item)) {@include hook-inverse-dotnav-item();} + } + + .uk-dotnav > * > :hover, + .uk-dotnav > * > :focus { + background-color: $inverse-dotnav-item-hover-background; + @if(mixin-exists(hook-inverse-dotnav-item-hover)) {@include hook-inverse-dotnav-item-hover();} + } + + .uk-dotnav > * > :active { + background-color: $inverse-dotnav-item-onclick-background; + @if(mixin-exists(hook-inverse-dotnav-item-onclick)) {@include hook-inverse-dotnav-item-onclick();} + } + + .uk-dotnav > .uk-active > * { + background-color: $inverse-dotnav-item-active-background; + @if(mixin-exists(hook-inverse-dotnav-item-active)) {@include hook-inverse-dotnav-item-active();} + } + +} +@mixin hook-drop-misc(){} +@mixin hook-dropdown(){ box-shadow: $dropdown-box-shadow; } +@mixin hook-dropdown-nav(){ font-size: $dropdown-nav-font-size; } +@mixin hook-dropdown-nav-item(){} +@mixin hook-dropdown-nav-item-hover(){} +@mixin hook-dropdown-nav-header(){} +@mixin hook-dropdown-nav-divider(){} +@mixin hook-dropdown-misc(){} +@mixin hook-flex-misc(){} +@mixin hook-form-range(){} +@mixin hook-form-range-thumb(){ border: $form-range-thumb-border-width solid $form-range-thumb-border; } +@mixin hook-form-range-track(){ border-radius: $form-range-track-border-radius; } +@mixin hook-form-range-track-focus(){} +@mixin hook-form-range-misc(){} +@mixin hook-form(){ + border: $form-border-width solid $form-border; + transition: 0.2s ease-in-out; + transition-property: color, background-color, border; +} +@mixin hook-form-single-line(){} +@mixin hook-form-multi-line(){} +@mixin hook-form-focus(){ border-color: $form-focus-border; } +@mixin hook-form-disabled(){ border-color: $form-disabled-border; } +@mixin hook-form-danger(){ border-color: $form-danger-border; } +@mixin hook-form-success(){ border-color: $form-success-border; } +@mixin hook-form-blank(){ border-color: transparent; } +@mixin hook-form-blank-focus(){ + border-color: $form-blank-focus-border; + border-style: $form-blank-focus-border-style; +} +@mixin hook-form-radio(){ + border: $form-radio-border-width solid $form-radio-border; + transition: 0.2s ease-in-out; + transition-property: background-color, border; +} +@mixin hook-form-radio-focus(){ border-color: $form-radio-focus-border; } +@mixin hook-form-radio-checked(){ border-color: $form-radio-checked-border; } +@mixin hook-form-radio-checked-focus(){} +@mixin hook-form-radio-disabled(){ border-color: $form-radio-disabled-border; } +@mixin hook-form-legend(){} +@mixin hook-form-label(){ + color: $form-label-color; + font-size: $form-label-font-size; +} +@mixin hook-form-stacked-label(){} +@mixin hook-form-horizontal-label(){} +@mixin hook-form-misc(){} +@mixin hook-inverse-form(){ border-color: $inverse-global-border; } +@mixin hook-inverse-form-focus(){ border-color: $inverse-global-color; } +@mixin hook-inverse-form-radio(){ border-color: $inverse-global-border; } +@mixin hook-inverse-form-radio-focus(){ border-color: $inverse-global-color; } +@mixin hook-inverse-form-radio-checked(){ border-color: $inverse-global-color; } +@mixin hook-inverse-form-radio-checked-focus(){} +@mixin hook-inverse-form-label(){ color: $inverse-form-label-color; } +@mixin hook-inverse-component-form(){ + + .uk-input, + .uk-select, + .uk-textarea { + background-color: $inverse-form-background; + color: $inverse-form-color; + background-clip: padding-box; + @if(mixin-exists(hook-inverse-form)) {@include hook-inverse-form();} + + &:focus { + background-color: $inverse-form-focus-background; + color: $inverse-form-focus-color; + @if(mixin-exists(hook-inverse-form-focus)) {@include hook-inverse-form-focus();} + } + } + + // + // Placeholder + // + + .uk-input:-ms-input-placeholder { color: $inverse-form-placeholder-color !important; } + .uk-input::placeholder { color: $inverse-form-placeholder-color; } + + .uk-textarea:-ms-input-placeholder { color: $inverse-form-placeholder-color !important; } + .uk-textarea::placeholder { color: $inverse-form-placeholder-color; } + + // + // Radio and checkbox + // + + .uk-select:not([multiple]):not([size]) { @include svg-fill($internal-form-select-image, "#000", $inverse-form-select-icon-color); } + + // + // Radio and checkbox + // + + .uk-radio, + .uk-checkbox { + background-color: $inverse-form-radio-background; + @if(mixin-exists(hook-inverse-form-radio)) {@include hook-inverse-form-radio();} + } + + // Focus + .uk-radio:focus, + .uk-checkbox:focus { + @if(mixin-exists(hook-inverse-form-radio-focus)) {@include hook-inverse-form-radio-focus();} + } + + // Checked + .uk-radio:checked, + .uk-checkbox:checked, + .uk-checkbox:indeterminate { + background-color: $inverse-form-radio-checked-background; + @if(mixin-exists(hook-inverse-form-radio-checked)) {@include hook-inverse-form-radio-checked();} + } + + // Focus + .uk-radio:checked:focus, + .uk-checkbox:checked:focus, + .uk-checkbox:indeterminate:focus { + background-color: $inverse-form-radio-checked-focus-background; + @if(mixin-exists(hook-inverse-form-radio-checked-focus)) {@include hook-inverse-form-radio-checked-focus();} + } + + // Icon + .uk-radio:checked { @include svg-fill($internal-form-radio-image, "#000", $inverse-form-radio-checked-icon-color); } + .uk-checkbox:checked { @include svg-fill($internal-form-checkbox-image, "#000", $inverse-form-radio-checked-icon-color); } + .uk-checkbox:indeterminate { @include svg-fill($internal-form-checkbox-indeterminate-image, "#000", $inverse-form-radio-checked-icon-color); } + + // Label + .uk-form-label { + @if(mixin-exists(hook-inverse-form-label)) {@include hook-inverse-form-label();} + } + +} +@mixin hook-grid-misc(){} +@mixin hook-inverse-component-grid(){ + + .uk-grid-divider > :not(.uk-first-column)::before { border-left-color: $inverse-grid-divider-border; } + .uk-grid-divider.uk-grid-stack > .uk-grid-margin::before { border-top-color: $inverse-grid-divider-border; } + +} +@mixin hook-heading-primary(){} +@mixin hook-heading-hero(){} +@mixin hook-heading-divider(){} +@mixin hook-heading-bullet(){} +@mixin hook-heading-line(){} +@mixin hook-heading-misc(){} +@mixin hook-inverse-heading-primary(){} +@mixin hook-inverse-heading-hero(){} +@mixin hook-inverse-heading-divider(){} +@mixin hook-inverse-heading-bullet(){} +@mixin hook-inverse-heading-line(){} +@mixin hook-inverse-component-heading(){ + + .uk-heading-primary { + @if(mixin-exists(hook-inverse-heading-primary)) {@include hook-inverse-heading-primary();} + } + + .uk-heading-hero { + @if(mixin-exists(hook-inverse-heading-hero)) {@include hook-inverse-heading-hero();} + } + + .uk-heading-divider { + border-bottom-color: $inverse-heading-divider-border; + @if(mixin-exists(hook-inverse-heading-divider)) {@include hook-inverse-heading-divider();} + } + + .uk-heading-bullet::before { + border-left-color: $inverse-heading-bullet-border; + @if(mixin-exists(hook-inverse-heading-bullet)) {@include hook-inverse-heading-bullet();} + } + + .uk-heading-line > ::before, + .uk-heading-line > ::after { + border-bottom-color: $inverse-heading-line-border; + @if(mixin-exists(hook-inverse-heading-line)) {@include hook-inverse-heading-line();} + } + +} +@mixin hook-icon-link(){} +@mixin hook-icon-link-hover(){} +@mixin hook-icon-link-active(){} +@mixin hook-icon-button(){ + transition: 0.1s ease-in-out; + transition-property: color, background-color +} +@mixin hook-icon-button-hover(){} +@mixin hook-icon-button-active(){} +@mixin hook-icon-misc(){} +@mixin hook-inverse-icon-link(){} +@mixin hook-inverse-icon-link-hover(){} +@mixin hook-inverse-icon-link-active(){} +@mixin hook-inverse-icon-button(){} +@mixin hook-inverse-icon-button-hover(){} +@mixin hook-inverse-icon-button-active(){} +@mixin hook-inverse-component-icon(){ + + // + // Link + // + + .uk-icon-link { + color: $inverse-icon-link-color; + @if(mixin-exists(hook-inverse-icon-link)) {@include hook-inverse-icon-link();} + } + + .uk-icon-link:hover, + .uk-icon-link:focus { + color: $inverse-icon-link-hover-color; + @if(mixin-exists(hook-inverse-icon-link-hover)) {@include hook-inverse-icon-link-hover();} + } + + .uk-icon-link:active, + .uk-active > .uk-icon-link { + color: $inverse-icon-link-active-color; + @if(mixin-exists(hook-inverse-icon-link-active)) {@include hook-inverse-icon-link-active();} + } + + // + // Button + // + + .uk-icon-button { + background-color: $inverse-icon-button-background; + color: $inverse-icon-button-color; + @if(mixin-exists(hook-inverse-icon-button)) {@include hook-inverse-icon-button();} + } + + .uk-icon-button:hover, + .uk-icon-button:focus { + background-color: $inverse-icon-button-hover-background; + color: $inverse-icon-button-hover-color; + @if(mixin-exists(hook-inverse-icon-button-hover)) {@include hook-inverse-icon-button-hover();} + } + + .uk-icon-button:active { + background-color: $inverse-icon-button-active-background; + color: $inverse-icon-button-active-color; + @if(mixin-exists(hook-inverse-icon-button-active)) {@include hook-inverse-icon-button-active();} + } + +} +@mixin hook-iconnav(){} +@mixin hook-iconnav-item(){} +@mixin hook-iconnav-item-hover(){} +@mixin hook-iconnav-item-active(){} +@mixin hook-iconnav-misc(){} +@mixin hook-inverse-iconnav-item(){} +@mixin hook-inverse-iconnav-item-hover(){} +@mixin hook-inverse-iconnav-item-active(){} +@mixin hook-inverse-component-iconnav(){ + + .uk-iconnav > * > a { + color: $inverse-iconnav-item-color; + @if(mixin-exists(hook-inverse-iconnav-item)) {@include hook-inverse-iconnav-item();} + } + + .uk-iconnav > * > a:hover, + .uk-iconnav > * > a:focus { + color: $inverse-iconnav-item-hover-color; + @if(mixin-exists(hook-inverse-iconnav-item-hover)) {@include hook-inverse-iconnav-item-hover();} + } + + .uk-iconnav > .uk-active > a { + color: $inverse-iconnav-item-active-color; + @if(mixin-exists(hook-inverse-iconnav-item-active)) {@include hook-inverse-iconnav-item-active();} + } + +} +@mixin hook-inverse-component-link(){ + + a.uk-link-muted, + .uk-link-muted a { + color: $inverse-link-muted-color; + @if(mixin-exists(hook-inverse-link-muted)) {@include hook-inverse-link-muted();} + } + + a.uk-link-muted:hover, + .uk-link-muted a:hover { + color: $inverse-link-muted-hover-color; + @if(mixin-exists(hook-inverse-link-muted-hover)) {@include hook-inverse-link-muted-hover();} + } + + a.uk-link-text:hover, + .uk-link-text a:hover { + color: $inverse-link-text-hover-color; + @if(mixin-exists(hook-inverse-link-text-hover)) {@include hook-inverse-link-text-hover();} + } + + a.uk-link-heading:hover, + .uk-link-heading a:hover { + color: $inverse-link-heading-hover-color; + @if(mixin-exists(hook-inverse-link-heading-hover)) {@include hook-inverse-link-heading-hover();} + } + +} +@mixin hook-inverse-component-list(){ + + .uk-list-divider > li:nth-child(n+2) { + border-top-color: $inverse-list-divider-border; + @if(mixin-exists(hook-inverse-list-divider)) {@include hook-inverse-list-divider();} + } + + .uk-list-striped > li { + @if(mixin-exists(hook-inverse-list-striped)) {@include hook-inverse-list-striped();} + } + + .uk-list-striped > li:nth-of-type(odd) { background-color: $inverse-list-striped-background; } + + .uk-list-bullet > li::before { + @include svg-fill($internal-list-bullet-image, "#000", $inverse-list-bullet-icon-color); + @if(mixin-exists(hook-inverse-list-bullet)) {@include hook-inverse-list-bullet();} + } + +} +@mixin hook-inverse-component-totop(){ + + .uk-totop { + color: $inverse-totop-color; + @if(mixin-exists(hook-inverse-totop)) {@include hook-inverse-totop();} + } + + .uk-totop:hover, + .uk-totop:focus { + color: $inverse-totop-hover-color; + @if(mixin-exists(hook-inverse-totop-hover)) {@include hook-inverse-totop-hover();} + } + + .uk-totop:active { + color: $inverse-totop-active-color; + @if(mixin-exists(hook-inverse-totop-active)) {@include hook-inverse-totop-active();} + } + +} +@mixin hook-inverse-component-label(){ + + .uk-label { + background-color: $inverse-label-background; + color: $inverse-label-color; + @if(mixin-exists(hook-inverse-label)) {@include hook-inverse-label();} + } + +} +@mixin hook-inverse-component-search(){ + + // + // Input + // + + .uk-search-input { color: $inverse-search-color; } + + .uk-search-input:-ms-input-placeholder { color: $inverse-search-placeholder-color !important; } + .uk-search-input::placeholder { color: $inverse-search-placeholder-color; } + + + // + // Icon + // + + .uk-search .uk-search-icon { color: $inverse-search-icon-color; } + + .uk-search .uk-search-icon:hover { color: $inverse-search-icon-color; } + + // + // Style modifier + // + + .uk-search-default .uk-search-input { + background-color: $inverse-search-default-background; + @if(mixin-exists(hook-inverse-search-default-input)) {@include hook-inverse-search-default-input();} + } + .uk-search-default .uk-search-input:focus { + background-color: $inverse-search-default-background; + @if(mixin-exists(hook-inverse-search-default-input-focus)) {@include hook-inverse-search-default-input-focus();} + } + + .uk-search-navbar .uk-search-input { + background-color: $inverse-search-navbar-background; + @if(mixin-exists(hook-inverse-search-navbar-input)) {@include hook-inverse-search-navbar-input();} + } + + .uk-search-large .uk-search-input { + background-color: $inverse-search-large-background; + @if(mixin-exists(hook-inverse-search-large-input)) {@include hook-inverse-search-large-input();} + } + + // + // Toggle + // + + .uk-search-toggle { + color: $inverse-search-toggle-color; + @if(mixin-exists(hook-inverse-search-toggle)) {@include hook-inverse-search-toggle();} + } + + .uk-search-toggle:hover, + .uk-search-toggle:focus { + color: $inverse-search-toggle-hover-color; + @if(mixin-exists(hook-inverse-search-toggle-hover)) {@include hook-inverse-search-toggle-hover();} + } + +} +@mixin hook-inverse-component-nav(){ + + // + // Parent icon modifier + // + + .uk-nav-parent-icon > .uk-parent > a::after { + @include svg-fill($internal-nav-parent-close-image, "#000", $inverse-nav-parent-icon-color); + @if(mixin-exists(hook-inverse-nav-parent-icon)) {@include hook-inverse-nav-parent-icon();} + } + + .uk-nav-parent-icon > .uk-parent.uk-open > a::after { @include svg-fill($internal-nav-parent-open-image, "#000", $inverse-nav-parent-icon-color); } + + // + // Default + // + + .uk-nav-default > li > a { + color: $inverse-nav-default-item-color; + @if(mixin-exists(hook-inverse-nav-default-item)) {@include hook-inverse-nav-default-item();} + } + + .uk-nav-default > li > a:hover, + .uk-nav-default > li > a:focus { + color: $inverse-nav-default-item-hover-color; + @if(mixin-exists(hook-inverse-nav-default-item-hover)) {@include hook-inverse-nav-default-item-hover();} + } + + .uk-nav-default > li.uk-active > a { + color: $inverse-nav-default-item-active-color; + @if(mixin-exists(hook-inverse-nav-default-item-active)) {@include hook-inverse-nav-default-item-active();} + } + + .uk-nav-default .uk-nav-header { + color: $inverse-nav-default-header-color; + @if(mixin-exists(hook-inverse-nav-default-header)) {@include hook-inverse-nav-default-header();} + } + + .uk-nav-default .uk-nav-divider { + border-top-color: $inverse-nav-default-divider-border; + @if(mixin-exists(hook-inverse-nav-default-divider)) {@include hook-inverse-nav-default-divider();} + } + + .uk-nav-default .uk-nav-sub a { color: $inverse-nav-default-sublist-item-color; } + + .uk-nav-default .uk-nav-sub a:hover, + .uk-nav-default .uk-nav-sub a:focus { color: $inverse-nav-default-sublist-item-hover-color; } + + // + // Primary + // + + .uk-nav-primary > li > a { + color: $inverse-nav-primary-item-color; + @if(mixin-exists(hook-inverse-nav-primary-item)) {@include hook-inverse-nav-primary-item();} + } + + .uk-nav-primary > li > a:hover, + .uk-nav-primary > li > a:focus { + color: $inverse-nav-primary-item-hover-color; + @if(mixin-exists(hook-inverse-nav-primary-item-hover)) {@include hook-inverse-nav-primary-item-hover();} + } + + .uk-nav-primary > li.uk-active > a { + color: $inverse-nav-primary-item-active-color; + @if(mixin-exists(hook-inverse-nav-primary-item-active)) {@include hook-inverse-nav-primary-item-active();} + } + + .uk-nav-primary .uk-nav-header { + color: $inverse-nav-primary-header-color; + @if(mixin-exists(hook-inverse-nav-primary-header)) {@include hook-inverse-nav-primary-header();} + } + + .uk-nav-primary .uk-nav-divider { + border-top-color: $inverse-nav-primary-divider-border; + @if(mixin-exists(hook-inverse-nav-primary-divider)) {@include hook-inverse-nav-primary-divider();} + } + + .uk-nav-primary .uk-nav-sub a { color: $inverse-nav-primary-sublist-item-color; } + + .uk-nav-primary .uk-nav-sub a:hover, + .uk-nav-primary .uk-nav-sub a:focus { color: $inverse-nav-primary-sublist-item-hover-color; } + +} +@mixin hook-inverse-component-navbar(){ + + .uk-navbar-nav > li > a { + color: $inverse-navbar-nav-item-color; + @if(mixin-exists(hook-inverse-navbar-nav-item)) {@include hook-inverse-navbar-nav-item();} + } + + .uk-navbar-nav > li:hover > a, + .uk-navbar-nav > li > a:focus, + .uk-navbar-nav > li > a.uk-open { + color: $inverse-navbar-nav-item-hover-color; + @if(mixin-exists(hook-inverse-navbar-nav-item-hover)) {@include hook-inverse-navbar-nav-item-hover();} + } + + .uk-navbar-nav > li > a:active { + color: $inverse-navbar-nav-item-onclick-color; + @if(mixin-exists(hook-inverse-navbar-nav-item-onclick)) {@include hook-inverse-navbar-nav-item-onclick();} + } + + .uk-navbar-nav > li.uk-active > a { + color: $inverse-navbar-nav-item-active-color; + @if(mixin-exists(hook-inverse-navbar-nav-item-active)) {@include hook-inverse-navbar-nav-item-active();} + } + + .uk-navbar-item { + color: $inverse-navbar-item-color; + @if(mixin-exists(hook-inverse-navbar-item)) {@include hook-inverse-navbar-item();} + } + + .uk-navbar-toggle { + color: $inverse-navbar-toggle-color; + @if(mixin-exists(hook-inverse-navbar-toggle)) {@include hook-inverse-navbar-toggle();} + } + + .uk-navbar-toggle:hover, + .uk-navbar-toggle:focus, + .uk-navbar-toggle.uk-open { + color: $inverse-navbar-toggle-hover-color; + @if(mixin-exists(hook-inverse-navbar-toggle-hover)) {@include hook-inverse-navbar-toggle-hover();} + } + +} +@mixin hook-inverse-component-subnav(){ + + .uk-subnav > * > :first-child { + color: $inverse-subnav-item-color; + @if(mixin-exists(hook-inverse-subnav-item)) {@include hook-inverse-subnav-item();} + } + + .uk-subnav > * > a:hover, + .uk-subnav > * > a:focus { + color: $inverse-subnav-item-hover-color; + @if(mixin-exists(hook-inverse-subnav-item-hover)) {@include hook-inverse-subnav-item-hover();} + } + + .uk-subnav > .uk-active > a { + color: $inverse-subnav-item-active-color; + @if(mixin-exists(hook-inverse-subnav-item-active)) {@include hook-inverse-subnav-item-active();} + } + + // + // Divider + // + + .uk-subnav-divider > :nth-child(n+2):not(.uk-first-column)::before { + border-left-color: $inverse-subnav-divider-border; + @if(mixin-exists(hook-inverse-subnav-divider)) {@include hook-inverse-subnav-divider();} + } + + // + // Pill + // + + .uk-subnav-pill > * > :first-child { + background-color: $inverse-subnav-pill-item-background; + color: $inverse-subnav-pill-item-color; + @if(mixin-exists(hook-inverse-subnav-pill-item)) {@include hook-inverse-subnav-pill-item();} + } + + .uk-subnav-pill > * > a:hover, + .uk-subnav-pill > * > a:focus { + background-color: $inverse-subnav-pill-item-hover-background; + color: $inverse-subnav-pill-item-hover-color; + @if(mixin-exists(hook-inverse-subnav-pill-item-hover)) {@include hook-inverse-subnav-pill-item-hover();} + } + + .uk-subnav-pill > * > a:active { + background-color: $inverse-subnav-pill-item-onclick-background; + color: $inverse-subnav-pill-item-onclick-color; + @if(mixin-exists(hook-inverse-subnav-pill-item-onclick)) {@include hook-inverse-subnav-pill-item-onclick();} + } + + .uk-subnav-pill > .uk-active > a { + background-color: $inverse-subnav-pill-item-active-background; + color: $inverse-subnav-pill-item-active-color; + @if(mixin-exists(hook-inverse-subnav-pill-item-active)) {@include hook-inverse-subnav-pill-item-active();} + } + + // + // Disabled + // + + .uk-subnav > .uk-disabled > a { + color: $inverse-subnav-item-disabled-color; + @if(mixin-exists(hook-inverse-subnav-item-disabled)) {@include hook-inverse-subnav-item-disabled();} + } + +} +@mixin hook-inverse-component-pagination(){ + + .uk-pagination > * > * { + color: $inverse-pagination-item-color; + @if(mixin-exists(hook-inverse-pagination-item)) {@include hook-inverse-pagination-item();} + } + + .uk-pagination > * > :hover, + .uk-pagination > * > :focus { + color: $inverse-pagination-item-hover-color; + @if(mixin-exists(hook-inverse-pagination-item-hover)) {@include hook-inverse-pagination-item-hover();} + } + + .uk-pagination > .uk-active > * { + color: $inverse-pagination-item-active-color; + @if(mixin-exists(hook-inverse-pagination-item-active)) {@include hook-inverse-pagination-item-active();} + } + + .uk-pagination > .uk-disabled > * { + color: $inverse-pagination-item-disabled-color; + @if(mixin-exists(hook-inverse-pagination-item-disabled)) {@include hook-inverse-pagination-item-disabled();} + } + +} +@mixin hook-inverse-component-tab(){ + + .uk-tab { + @if(mixin-exists(hook-inverse-tab)) {@include hook-inverse-tab();} + } + + .uk-tab > * > a { + color: $inverse-tab-item-color; + @if(mixin-exists(hook-inverse-tab-item)) {@include hook-inverse-tab-item();} + } + + .uk-tab > * > a:hover, + .uk-tab > * > a:focus{ + color: $inverse-tab-item-hover-color; + @if(mixin-exists(hook-inverse-tab-item-hover)) {@include hook-inverse-tab-item-hover();} + } + + .uk-tab > .uk-active > a { + color: $inverse-tab-item-active-color; + @if(mixin-exists(hook-inverse-tab-item-active)) {@include hook-inverse-tab-item-active();} + } + + .uk-tab > .uk-disabled > a { + color: $inverse-tab-item-disabled-color; + @if(mixin-exists(hook-inverse-tab-item-disabled)) {@include hook-inverse-tab-item-disabled();} + } + +} +@mixin hook-inverse-component-slidenav(){ + + .uk-slidenav { + color: $inverse-slidenav-color; + @if(mixin-exists(hook-inverse-slidenav)) {@include hook-inverse-slidenav();} + } + + .uk-slidenav:hover, + .uk-slidenav:focus { + color: $inverse-slidenav-hover-color; + @if(mixin-exists(hook-inverse-slidenav-hover)) {@include hook-inverse-slidenav-hover();} + } + + .uk-slidenav:active { + color: $inverse-slidenav-active-color; + @if(mixin-exists(hook-inverse-slidenav-active)) {@include hook-inverse-slidenav-active();} + } + +} +@mixin hook-inverse-component-text(){ + + .uk-text-lead { + color: $inverse-text-lead-color; + @if(mixin-exists(hook-inverse-text-lead)) {@include hook-inverse-text-lead();} + } + + .uk-text-meta { + color: $inverse-text-meta-color; + @if(mixin-exists(hook-inverse-text-meta)) {@include hook-inverse-text-meta();} + } + + .uk-text-muted { color: $inverse-text-muted-color !important; } + .uk-text-primary { color: $inverse-text-primary-color !important; } + +} +@mixin hook-inverse-component-utility(){ + + .uk-dropcap::first-letter, + .uk-dropcap p:first-of-type::first-letter { + @if(mixin-exists(hook-inverse-dropcap)) {@include hook-inverse-dropcap();} + } + + .uk-leader-fill { + @if(mixin-exists(hook-inverse-leader)) {@include hook-inverse-leader();} + } + + .uk-logo { + color: $inverse-logo-color; + @if(mixin-exists(hook-inverse-logo)) {@include hook-inverse-logo();} + } + + .uk-logo:hover, + .uk-logo:focus { + color: $inverse-logo-hover-color; + @if(mixin-exists(hook-inverse-logo-hover)) {@include hook-inverse-logo-hover();} + } + + .uk-logo > :not(.uk-logo-inverse):not(:only-of-type) { display: none; } + .uk-logo-inverse { display: inline; } + +} +@mixin hook-inverse(){ + @include hook-inverse-component-base(); + @include hook-inverse-component-link(); + @include hook-inverse-component-heading(); + @include hook-inverse-component-divider(); + @include hook-inverse-component-list(); + @include hook-inverse-component-icon(); + @include hook-inverse-component-form(); + @include hook-inverse-component-button(); + @include hook-inverse-component-grid(); + @include hook-inverse-component-close(); + @include hook-inverse-component-totop(); + @include hook-inverse-component-badge(); + @include hook-inverse-component-label(); + @include hook-inverse-component-article(); + @include hook-inverse-component-search(); + @include hook-inverse-component-nav(); + @include hook-inverse-component-navbar(); + @include hook-inverse-component-subnav(); + @include hook-inverse-component-breadcrumb(); + @include hook-inverse-component-pagination(); + @include hook-inverse-component-tab(); + @include hook-inverse-component-slidenav(); + @include hook-inverse-component-dotnav(); + @include hook-inverse-component-accordion(); + @include hook-inverse-component-iconnav(); + @include hook-inverse-component-text(); + @include hook-inverse-component-column(); + @include hook-inverse-component-utility(); +} +@mixin hook-label(){ + border-radius: $label-border-radius; + text-transform: $label-text-transform; +} +@mixin hook-label-success(){} +@mixin hook-label-warning(){} +@mixin hook-label-danger(){} +@mixin hook-label-misc(){} +@mixin hook-inverse-label(){} +@mixin hook-lightbox(){} +@mixin hook-lightbox-item(){} +@mixin hook-lightbox-toolbar(){} +@mixin hook-lightbox-toolbar-icon(){} +@mixin hook-lightbox-toolbar-icon-hover(){} +@mixin hook-lightbox-button(){} +@mixin hook-lightbox-button-hover(){} +@mixin hook-lightbox-misc(){} +@mixin hook-link-muted(){} +@mixin hook-link-muted-hover(){} +@mixin hook-link-text(){} +@mixin hook-link-text-hover(){} +@mixin hook-link-heading(){} +@mixin hook-link-heading-hover(){} +@mixin hook-link-reset(){} +@mixin hook-link-misc(){} +@mixin hook-inverse-link-muted(){} +@mixin hook-inverse-link-muted-hover(){} +@mixin hook-inverse-link-text-hover(){} +@mixin hook-inverse-link-heading-hover(){} +@mixin hook-list-divider(){} +@mixin hook-list-striped(){ + + &:nth-of-type(odd) { + border-top: $list-striped-border-width solid $list-striped-border; + border-bottom: $list-striped-border-width solid $list-striped-border; + } + +} +@mixin hook-list-bullet(){} +@mixin hook-list-misc(){} +@mixin hook-inverse-list-divider(){} +@mixin hook-inverse-list-striped(){ + + &:nth-of-type(odd) { + border-top-color: $inverse-global-border; + border-bottom-color: $inverse-global-border; + } + +} +@mixin hook-inverse-list-bullet(){} +@mixin hook-margin-misc(){} +@mixin hook-marker(){ + border-radius: 500px; +} +@mixin hook-marker-hover(){} +@mixin hook-marker-misc(){} +@mixin hook-inverse-marker(){} +@mixin hook-inverse-marker-hover(){} +@mixin hook-inverse-component-marker(){ + + .uk-marker { + background: $inverse-marker-background; + color: $inverse-marker-color; + @if(mixin-exists(hook-inverse-marker)) {@include hook-inverse-marker();} + } + + .uk-marker:hover, + .uk-marker:focus { + color: $inverse-marker-hover-color; + @if(mixin-exists(hook-inverse-marker-hover)) {@include hook-inverse-marker-hover();} + } + +} +@mixin hook-modal(){} +@mixin hook-modal-dialog(){} +@mixin hook-modal-full(){} +@mixin hook-modal-body(){} +@mixin hook-modal-header(){ border-bottom: $modal-header-border-width solid $modal-header-border; } +@mixin hook-modal-footer(){ border-top: $modal-footer-border-width solid $modal-footer-border; } +@mixin hook-modal-title(){} +@mixin hook-modal-close(){} +@mixin hook-modal-close-hover(){} +@mixin hook-modal-close-default(){} +@mixin hook-modal-close-default-hover(){} +@mixin hook-modal-close-outside(){} +@mixin hook-modal-close-outside-hover(){} +@mixin hook-modal-close-full(){ + top: 0; + right: 0; + padding: $modal-close-full-padding; + background: $modal-close-full-background; +} +@mixin hook-modal-close-full-hover(){} +@mixin hook-modal-misc(){} +@mixin hook-nav-sub(){} +@mixin hook-nav-parent-icon(){} +@mixin hook-nav-header(){} +@mixin hook-nav-divider(){} +@mixin hook-nav-default(){ font-size: $nav-default-font-size; } +@mixin hook-nav-default-item(){} +@mixin hook-nav-default-item-hover(){} +@mixin hook-nav-default-item-active(){} +@mixin hook-nav-default-header(){} +@mixin hook-nav-default-divider(){} +@mixin hook-nav-primary(){} +@mixin hook-nav-primary-item(){} +@mixin hook-nav-primary-item-hover(){} +@mixin hook-nav-primary-item-active(){} +@mixin hook-nav-primary-header(){} +@mixin hook-nav-primary-divider(){} +@mixin hook-nav-misc(){} +@mixin hook-inverse-nav-parent-icon(){} +@mixin hook-inverse-nav-default-item(){} +@mixin hook-inverse-nav-default-item-hover(){} +@mixin hook-inverse-nav-default-item-active(){} +@mixin hook-inverse-nav-default-header(){} +@mixin hook-inverse-nav-default-divider(){} +@mixin hook-inverse-nav-primary-item(){} +@mixin hook-inverse-nav-primary-item-hover(){} +@mixin hook-inverse-nav-primary-item-active(){} +@mixin hook-inverse-nav-primary-header(){} +@mixin hook-inverse-nav-primary-divider(){} +@mixin hook-navbar(){} +@mixin hook-navbar-container(){} +@mixin hook-navbar-nav-item(){ + text-transform: $navbar-nav-item-text-transform; + transition: 0.1s ease-in-out; + transition-property: color, background-color; +} +@mixin hook-navbar-nav-item-hover(){} +@mixin hook-navbar-nav-item-onclick(){} +@mixin hook-navbar-nav-item-active(){} +@mixin hook-navbar-item(){} +@mixin hook-navbar-toggle(){} +@mixin hook-navbar-toggle-hover(){} +@mixin hook-navbar-toggle-icon(){} +@mixin hook-navbar-toggle-icon-hover(){} +@mixin hook-navbar-subtitle(){} +@mixin hook-navbar-transparent(){} +@mixin hook-navbar-sticky(){} +@mixin hook-navbar-dropdown(){ box-shadow: $navbar-dropdown-box-shadow; } +@mixin hook-navbar-dropdown-dropbar(){ box-shadow: none; } +@mixin hook-navbar-dropdown-nav(){ font-size: $navbar-dropdown-nav-font-size; } +@mixin hook-navbar-dropdown-nav-item(){} +@mixin hook-navbar-dropdown-nav-item-hover(){} +@mixin hook-navbar-dropdown-nav-item-active(){} +@mixin hook-navbar-dropdown-nav-header(){} +@mixin hook-navbar-dropdown-nav-divider(){} +@mixin hook-navbar-dropbar(){} +@mixin hook-navbar-dropbar-slide(){ box-shadow: $navbar-dropbar-box-shadow; } +@mixin hook-navbar-misc(){ + + /* + * Navbar + */ + + .uk-navbar-container > .uk-container .uk-navbar-left { + margin-left: (-$navbar-nav-item-padding-horizontal); + margin-right: (-$navbar-nav-item-padding-horizontal); + } + .uk-navbar-container > .uk-container .uk-navbar-right { margin-right: (-$navbar-nav-item-padding-horizontal); } + + /* + * Grid Divider + */ + + .uk-navbar-dropdown-grid > * { position: relative; } + + .uk-navbar-dropdown-grid > :not(.uk-first-column)::before { + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: ($navbar-dropdown-grid-gutter-horizontal / 2); + border-left: $navbar-dropdown-grid-divider-border-width solid $navbar-dropdown-grid-divider-border; + } + + /* Vertical */ + .uk-navbar-dropdown-grid.uk-grid-stack > .uk-grid-margin::before { + content: ""; + position: absolute; + top: -($navbar-dropdown-grid-gutter-vertical / 2); + left: $navbar-dropdown-grid-gutter-horizontal; + right: 0; + border-top: $navbar-dropdown-grid-divider-border-width solid $navbar-dropdown-grid-divider-border; + } + +} +@mixin hook-inverse-navbar-nav-item(){} +@mixin hook-inverse-navbar-nav-item-hover(){} +@mixin hook-inverse-navbar-nav-item-onclick(){} +@mixin hook-inverse-navbar-nav-item-active(){} +@mixin hook-inverse-navbar-item(){} +@mixin hook-inverse-navbar-toggle(){} +@mixin hook-inverse-navbar-toggle-hover(){} +@mixin hook-notification(){} +@mixin hook-notification-message(){} +@mixin hook-notification-close(){} +@mixin hook-notification-message-primary(){} +@mixin hook-notification-message-success(){} +@mixin hook-notification-message-warning(){} +@mixin hook-notification-message-danger(){} +@mixin hook-notification-misc(){} +@mixin hook-offcanvas-bar(){} +@mixin hook-offcanvas-close(){} +@mixin hook-offcanvas-overlay(){} +@mixin hook-offcanvas-misc(){} +@mixin hook-overlay(){} +@mixin hook-overlay-icon(){} +@mixin hook-overlay-default(){} +@mixin hook-overlay-primary(){} +@mixin hook-overlay-misc(){} +@mixin hook-padding-misc(){} +@mixin hook-pagination(){} +@mixin hook-pagination-item(){ transition: color 0.1s ease-in-out; } +@mixin hook-pagination-item-hover(){} +@mixin hook-pagination-item-active(){} +@mixin hook-pagination-item-disabled(){} +@mixin hook-pagination-misc(){} +@mixin hook-inverse-pagination-item(){} +@mixin hook-inverse-pagination-item-hover(){} +@mixin hook-inverse-pagination-item-active(){} +@mixin hook-inverse-pagination-item-disabled(){} +@mixin hook-placeholder(){ border: $placeholder-border-width dashed $placeholder-border; } +@mixin hook-placeholder-misc(){} +@mixin hook-position-misc(){} +@mixin hook-print(){} +@mixin hook-progress(){ + border-radius: $progress-border-radius; + overflow: hidden; +} +@mixin hook-progress-bar(){} +@mixin hook-progress-misc(){} +@mixin hook-search-input(){} +@mixin hook-search-default-input(){ border: $search-default-border-width solid $search-default-border; } +@mixin hook-search-default-input-focus(){} +@mixin hook-search-navbar-input(){} +@mixin hook-search-large-input(){} +@mixin hook-search-toggle(){} +@mixin hook-search-toggle-hover(){} +@mixin hook-search-misc(){} +@mixin hook-inverse-search-default-input(){ border-color: $inverse-global-border; } +@mixin hook-inverse-search-default-input-focus(){} +@mixin hook-inverse-search-navbar-input(){} +@mixin hook-inverse-search-large-input(){} +@mixin hook-inverse-search-toggle(){} +@mixin hook-inverse-search-toggle-hover(){} +@mixin hook-section(){} +@mixin hook-section-default(){} +@mixin hook-section-muted(){} +@mixin hook-section-primary(){} +@mixin hook-section-secondary(){} +@mixin hook-section-overlap(){} +@mixin hook-section-misc(){} +@mixin hook-slidenav(){ transition: color 0.1s ease-in-out; } +@mixin hook-slidenav-hover(){} +@mixin hook-slidenav-active(){} +@mixin hook-slidenav-previous(){} +@mixin hook-slidenav-next(){} +@mixin hook-slidenav-large(){} +@mixin hook-slidenav-container(){} +@mixin hook-slidenav-misc(){} +@mixin hook-inverse-slidenav(){} +@mixin hook-inverse-slidenav-hover(){} +@mixin hook-inverse-slidenav-active(){} +@mixin hook-slider(){} +@mixin hook-slider-misc(){} +@mixin hook-slideshow(){} +@mixin hook-slideshow-misc(){} +@mixin hook-sortable(){} +@mixin hook-sortable-drag(){} +@mixin hook-sortable-placeholder(){} +@mixin hook-sortable-empty(){} +@mixin hook-sortable-misc(){} +@mixin hook-spinner(){} +@mixin hook-spinner-misc(){} +@mixin hook-sticky-misc(){} +@mixin hook-subnav(){} +@mixin hook-subnav-item(){ + font-size: $subnav-item-font-size; + text-transform: $subnav-item-text-transform; + transition: 0.1s ease-in-out; + transition-property: color, background-color; +} +@mixin hook-subnav-item-hover(){} +@mixin hook-subnav-item-active(){} +@mixin hook-subnav-divider(){} +@mixin hook-subnav-pill-item(){} +@mixin hook-subnav-pill-item-hover(){} +@mixin hook-subnav-pill-item-onclick(){} +@mixin hook-subnav-pill-item-active(){} +@mixin hook-subnav-item-disabled(){} +@mixin hook-subnav-misc(){} +@mixin hook-inverse-subnav-item(){} +@mixin hook-inverse-subnav-item-hover(){} +@mixin hook-inverse-subnav-item-active(){} +@mixin hook-inverse-subnav-divider(){} +@mixin hook-inverse-subnav-pill-item(){} +@mixin hook-inverse-subnav-pill-item-hover(){} +@mixin hook-inverse-subnav-pill-item-onclick(){} +@mixin hook-inverse-subnav-pill-item-active(){} +@mixin hook-inverse-subnav-item-disabled(){} +@mixin hook-switcher-misc(){} +@mixin hook-tab(){ + + position: relative; + + &::before { + content: ""; + position: absolute; + bottom: 0; + left: $tab-margin-horizontal; + right: 0; + border-bottom: $tab-border-width solid $tab-border; + } + +} +@mixin hook-tab-item(){ + border-bottom: $tab-item-border-width solid transparent; + font-size: $tab-item-font-size; + text-transform: $tab-item-text-transform; + transition: color 0.1s ease-in-out; +} +@mixin hook-tab-item-hover(){} +@mixin hook-tab-item-active(){ border-color: $tab-item-active-border; } +@mixin hook-tab-item-disabled(){} +@mixin hook-tab-bottom(){ + + &::before { + top: 0; + bottom: auto; + } + +} +@mixin hook-tab-bottom-item(){ + border-top: $tab-item-border-width solid transparent; + border-bottom: none; +} +@mixin hook-tab-left(){ + + &::before { + top: 0; + bottom: 0; + left: auto; + right: 0; + border-left: $tab-border-width solid $tab-border; + border-bottom: none; + } + +} +@mixin hook-tab-right(){ + + &::before { + top: 0; + bottom: 0; + left: 0; + right: auto; + border-left: $tab-border-width solid $tab-border; + border-bottom: none; + } + +} +@mixin hook-tab-left-item(){ + border-right: $tab-item-border-width solid transparent; + border-bottom: none; +} +@mixin hook-tab-right-item(){ + border-left: $tab-item-border-width solid transparent; + border-bottom: none; +} +@mixin hook-tab-misc(){ + + .uk-tab .uk-dropdown { margin-left: ($tab-margin-horizontal + $tab-item-padding-horizontal) } + +} +@mixin hook-inverse-tab(){ + + &::before { border-color: $inverse-tab-border; } + +} +@mixin hook-inverse-tab-item(){} +@mixin hook-inverse-tab-item-hover(){} +@mixin hook-inverse-tab-item-active(){ border-color: $inverse-global-primary-background; } +@mixin hook-inverse-tab-item-disabled(){} +@mixin hook-table(){} +@mixin hook-table-header-cell(){ text-transform: uppercase; } +@mixin hook-table-cell(){} +@mixin hook-table-footer(){} +@mixin hook-table-caption(){} +@mixin hook-table-row-active(){} +@mixin hook-table-divider(){} +@mixin hook-table-striped(){ + border-top: $table-striped-border-width solid $table-striped-border; + border-bottom: $table-striped-border-width solid $table-striped-border; +} +@mixin hook-table-hover(){} +@mixin hook-table-small(){} +@mixin hook-table-large(){} +@mixin hook-table-misc(){ + + .uk-table tbody tr { transition: background-color 0.1s linear; } + +} +@mixin hook-inverse-table-header-cell(){} +@mixin hook-inverse-table-caption(){} +@mixin hook-inverse-table-row-active(){} +@mixin hook-inverse-table-divider(){} +@mixin hook-inverse-table-striped(){ + border-top-color: $inverse-global-border; + border-bottom-color: $inverse-global-border; +} +@mixin hook-inverse-table-hover(){} +@mixin hook-inverse-component-table(){ + + .uk-table th { + color: $inverse-table-header-cell-color; + @if(mixin-exists(hook-inverse-table-header-cell)) {@include hook-inverse-table-header-cell();} + } + + .uk-table caption { + color: $inverse-table-caption-color; + @if(mixin-exists(hook-inverse-table-caption)) {@include hook-inverse-table-caption();} + } + + .uk-table > tr.uk-active, + .uk-table tbody tr.uk-active { + background: $inverse-table-row-active-background; + @if(mixin-exists(hook-inverse-table-row-active)) {@include hook-inverse-table-row-active();} + } + + .uk-table-divider > tr:not(:first-child), + .uk-table-divider > :not(:first-child) > tr, + .uk-table-divider > :first-child > tr:not(:first-child) { + border-top-color: $inverse-table-divider-border; + @if(mixin-exists(hook-inverse-table-divider)) {@include hook-inverse-table-divider();} + } + + .uk-table-striped > tr:nth-of-type(odd), + .uk-table-striped tbody tr:nth-of-type(odd) { + background: $inverse-table-striped-row-background; + @if(mixin-exists(hook-inverse-table-striped)) {@include hook-inverse-table-striped();} + } + + .uk-table-hover > tr:hover, + .uk-table-hover tbody tr:hover { + background: $inverse-table-hover-row-background; + @if(mixin-exists(hook-inverse-table-hover)) {@include hook-inverse-table-hover();} + } + +} +@mixin hook-text-lead(){} +@mixin hook-text-meta(){ + + a { color: $text-meta-link-color; } + + a:hover { + color: $text-meta-link-hover-color; + text-decoration: none; + } + +} +@mixin hook-text-small(){} +@mixin hook-text-large(){} +@mixin hook-text-background(){} +@mixin hook-text-misc(){} +@mixin hook-inverse-text-lead(){} +@mixin hook-inverse-text-meta(){} +@mixin hook-thumbnav(){} +@mixin hook-thumbnav-item(){ + + position: relative; + + &::after { + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background: $thumbnav-item-background; + transition: background-color 0.1s ease-in-out; + } + +} +@mixin hook-thumbnav-item-hover(){ + &::after { background-color: $thumbnav-item-hover-background; } +} +@mixin hook-thumbnav-item-active(){ + &::after { background-color: $thumbnav-item-active-background; } +} +@mixin hook-thumbnav-misc(){} +@mixin hook-inverse-thumbnav-item(){} +@mixin hook-inverse-thumbnav-item-hover(){} +@mixin hook-inverse-thumbnav-item-active(){} +@mixin hook-inverse-component-thumbnav(){ + + .uk-thumbnav > * > * { + @if(mixin-exists(hook-inverse-thumbnav-item)) {@include hook-inverse-thumbnav-item();} + } + + .uk-thumbnav > * > :hover, + .uk-thumbnav > * > :focus { + @if(mixin-exists(hook-inverse-thumbnav-item-hover)) {@include hook-inverse-thumbnav-item-hover();} + } + + .uk-thumbnav > .uk-active > * { + @if(mixin-exists(hook-inverse-thumbnav-item-active)) {@include hook-inverse-thumbnav-item-active();} + } + +} +@mixin hook-tile(){} +@mixin hook-tile-default(){} +@mixin hook-tile-muted(){} +@mixin hook-tile-primary(){} +@mixin hook-tile-secondary(){} +@mixin hook-tile-misc(){} +@mixin hook-tooltip(){} +@mixin hook-tooltip-misc(){} +@mixin hook-totop(){ transition: color 0.1s ease-in-out; } +@mixin hook-totop-hover(){} +@mixin hook-totop-active(){} +@mixin hook-totop-misc(){} +@mixin hook-inverse-totop(){} +@mixin hook-inverse-totop-hover(){} +@mixin hook-inverse-totop-active(){} +@mixin hook-transition-misc(){} +@mixin hook-panel-scrollable(){} +@mixin hook-box-shadow-bottom(){} +@mixin hook-dropcap(){ + // Prevent line wrap + margin-bottom: -2px; +} +@mixin hook-leader(){} +@mixin hook-logo(){} +@mixin hook-logo-hover(){} +@mixin hook-utility-misc(){} +@mixin hook-inverse-dropcap(){} +@mixin hook-inverse-leader(){} +@mixin hook-inverse-logo(){} +@mixin hook-inverse-logo-hover(){} +@mixin hook-visibility-misc(){} +@mixin hook-width-misc(){} \ No newline at end of file diff --git a/_sass/uikit/mixins.scss b/_sass/uikit/mixins.scss new file mode 100644 index 00000000..573b2f37 --- /dev/null +++ b/_sass/uikit/mixins.scss @@ -0,0 +1,1644 @@ +@mixin hook-accordion(){} +@mixin hook-accordion-item(){} +@mixin hook-accordion-title(){} +@mixin hook-accordion-title-hover(){} +@mixin hook-accordion-content(){} +@mixin hook-accordion-misc(){} +@mixin hook-inverse-accordion-item(){} +@mixin hook-inverse-accordion-title(){} +@mixin hook-inverse-accordion-title-hover(){} +@mixin hook-inverse-component-accordion(){ + + .uk-accordion > :nth-child(n+2) { + @if(mixin-exists(hook-inverse-accordion-item)) {@include hook-inverse-accordion-item();} + } + + .uk-accordion-title { + color: $inverse-accordion-title-color; + @if(mixin-exists(hook-inverse-accordion-title)) {@include hook-inverse-accordion-title();} + } + + .uk-accordion-title:hover, + .uk-accordion-title:focus { + color: $inverse-accordion-title-hover-color; + @if(mixin-exists(hook-inverse-accordion-title-hover)) {@include hook-inverse-accordion-title-hover();} + } + +} +@mixin hook-align-misc(){} +@mixin hook-alert(){} +@mixin hook-alert-close(){} +@mixin hook-alert-close-hover(){} +@mixin hook-alert-primary(){} +@mixin hook-alert-success(){} +@mixin hook-alert-warning(){} +@mixin hook-alert-danger(){} +@mixin hook-alert-misc(){} +@mixin hook-article(){} +@mixin hook-article-adjacent(){} +@mixin hook-article-title(){} +@mixin hook-article-meta(){} +@mixin hook-article-misc(){} +@mixin hook-inverse-article-title(){} +@mixin hook-inverse-article-meta(){} +@mixin hook-inverse-component-article(){ + + .uk-article-title { + @if(mixin-exists(hook-inverse-article-title)) {@include hook-inverse-article-title();} + } + + .uk-article-meta { + color: $inverse-article-meta-color; + @if(mixin-exists(hook-inverse-article-meta)) {@include hook-inverse-article-meta();} + } + +} +@mixin hook-animation-misc(){} +@mixin hook-background-misc(){} +@mixin hook-badge(){} +@mixin hook-badge-hover(){} +@mixin hook-badge-misc(){} +@mixin hook-inverse-badge(){} +@mixin hook-inverse-badge-hover(){} +@mixin hook-inverse-component-badge(){ + + .uk-badge { + background-color: $inverse-badge-background; + color: $inverse-badge-color; + @if(mixin-exists(hook-inverse-badge)) {@include hook-inverse-badge();} + } + + .uk-badge:hover, + .uk-badge:focus { + color: $inverse-badge-hover-color; + @if(mixin-exists(hook-inverse-badge-hover)) {@include hook-inverse-badge-hover();} + } + +} +@mixin hook-base-body(){} +@mixin hook-base-link(){} +@mixin hook-base-link-hover(){} +@mixin hook-base-code(){} +@mixin hook-base-heading(){} +@mixin hook-base-h1(){} +@mixin hook-base-h2(){} +@mixin hook-base-h3(){} +@mixin hook-base-h4(){} +@mixin hook-base-h5(){} +@mixin hook-base-h6(){} +@mixin hook-base-hr(){} +@mixin hook-base-blockquote(){} +@mixin hook-base-blockquote-footer(){} +@mixin hook-base-pre(){} +@mixin hook-base-misc(){} +@mixin hook-inverse-base-link(){} +@mixin hook-inverse-base-link-hover(){} +@mixin hook-inverse-base-code(){} +@mixin hook-inverse-base-heading(){} +@mixin hook-inverse-base-h1(){} +@mixin hook-inverse-base-h2(){} +@mixin hook-inverse-base-h3(){} +@mixin hook-inverse-base-h4(){} +@mixin hook-inverse-base-h5(){} +@mixin hook-inverse-base-h6(){} +@mixin hook-inverse-base-blockquote(){} +@mixin hook-inverse-base-blockquote-footer(){} +@mixin hook-inverse-base-hr(){} +@mixin hook-inverse-component-base(){ + + color: $inverse-base-color; + + // Base + // ======================================================================== + + // + // Link + // + + a, + .uk-link { + color: $inverse-base-link-color; + @if(mixin-exists(hook-inverse-base-link)) {@include hook-inverse-base-link();} + } + + a:hover, + .uk-link:hover { + color: $inverse-base-link-hover-color; + @if(mixin-exists(hook-inverse-base-link-hover)) {@include hook-inverse-base-link-hover();} + } + + // + // Code + // + + :not(pre) > code, + :not(pre) > kbd, + :not(pre) > samp { + color: $inverse-base-code-color; + @if(mixin-exists(hook-inverse-base-code)) {@include hook-inverse-base-code();} + } + + // + // Emphasize + // + + em { color: $inverse-base-em-color; } + + // + // Headings + // + + h1, .uk-h1, + h2, .uk-h2, + h3, .uk-h3, + h4, .uk-h4, + h5, .uk-h5, + h6, .uk-h6 { + color: $inverse-base-heading-color; + @if(mixin-exists(hook-inverse-base-heading)) {@include hook-inverse-base-heading();} + } + + h1, .uk-h1 { + @if(mixin-exists(hook-inverse-base-h1)) {@include hook-inverse-base-h1();} + } + + h2, .uk-h2 { + @if(mixin-exists(hook-inverse-base-h2)) {@include hook-inverse-base-h2();} + } + + h3, .uk-h3 { + @if(mixin-exists(hook-inverse-base-h3)) {@include hook-inverse-base-h3();} + } + + h4, .uk-h4 { + @if(mixin-exists(hook-inverse-base-h4)) {@include hook-inverse-base-h4();} + } + + h5, .uk-h5 { + @if(mixin-exists(hook-inverse-base-h5)) {@include hook-inverse-base-h5();} + } + + h6, .uk-h6 { + @if(mixin-exists(hook-inverse-base-h6)) {@include hook-inverse-base-h6();} + } + + // + // Blockquotes + // + + blockquote { + @if(mixin-exists(hook-inverse-base-blockquote)) {@include hook-inverse-base-blockquote();} + } + + blockquote footer { + @if(mixin-exists(hook-inverse-base-blockquote-footer)) {@include hook-inverse-base-blockquote-footer();} + } + + // + // Horizontal rules + // + + hr, .uk-hr { + border-top-color: $inverse-base-hr-border; + @if(mixin-exists(hook-inverse-base-hr)) {@include hook-inverse-base-hr();} + } + +} +@mixin hook-breadcrumb(){} +@mixin hook-breadcrumb-item(){} +@mixin hook-breadcrumb-item-hover(){} +@mixin hook-breadcrumb-item-disabled(){} +@mixin hook-breadcrumb-item-active(){} +@mixin hook-breadcrumb-divider(){} +@mixin hook-breadcrumb-misc(){} +@mixin hook-inverse-breadcrumb-item(){} +@mixin hook-inverse-breadcrumb-item-hover(){} +@mixin hook-inverse-breadcrumb-item-disabled(){} +@mixin hook-inverse-breadcrumb-item-active(){} +@mixin hook-inverse-breadcrumb-divider(){} +@mixin hook-inverse-component-breadcrumb(){ + + .uk-breadcrumb > * > * { + color: $inverse-breadcrumb-item-color; + @if(mixin-exists(hook-inverse-breadcrumb-item)) {@include hook-inverse-breadcrumb-item();} + } + + .uk-breadcrumb > * > :hover, + .uk-breadcrumb > * > :focus { + color: $inverse-breadcrumb-item-hover-color; + @if(mixin-exists(hook-inverse-breadcrumb-item-hover)) {@include hook-inverse-breadcrumb-item-hover();} + } + + + .uk-breadcrumb > .uk-disabled > * { + @if(mixin-exists(hook-inverse-breadcrumb-item-disabled)) {@include hook-inverse-breadcrumb-item-disabled();} + } + + .uk-breadcrumb > :last-child > * { + color: $inverse-breadcrumb-item-active-color; + @if(mixin-exists(hook-inverse-breadcrumb-item-active)) {@include hook-inverse-breadcrumb-item-active();} + } + + // + // Divider + // + + .uk-breadcrumb > :nth-child(n+2):not(.uk-first-column)::before { + color: $inverse-breadcrumb-divider-color; + @if(mixin-exists(hook-inverse-breadcrumb-divider)) {@include hook-inverse-breadcrumb-divider();} + } + +} +@mixin hook-button(){} +@mixin hook-button-hover(){} +@mixin hook-button-focus(){} +@mixin hook-button-active(){} +@mixin hook-button-default(){} +@mixin hook-button-default-hover(){} +@mixin hook-button-default-active(){} +@mixin hook-button-primary(){} +@mixin hook-button-primary-hover(){} +@mixin hook-button-primary-active(){} +@mixin hook-button-secondary(){} +@mixin hook-button-secondary-hover(){} +@mixin hook-button-secondary-active(){} +@mixin hook-button-danger(){} +@mixin hook-button-danger-hover(){} +@mixin hook-button-danger-active(){} +@mixin hook-button-disabled(){} +@mixin hook-button-small(){} +@mixin hook-button-large(){} +@mixin hook-button-text(){} +@mixin hook-button-text-hover(){} +@mixin hook-button-text-disabled(){} +@mixin hook-button-link(){} +@mixin hook-button-misc(){} +@mixin hook-inverse-button-default(){} +@mixin hook-inverse-button-default-hover(){} +@mixin hook-inverse-button-default-active(){} +@mixin hook-inverse-button-primary(){} +@mixin hook-inverse-button-primary-hover(){} +@mixin hook-inverse-button-primary-active(){} +@mixin hook-inverse-button-secondary(){} +@mixin hook-inverse-button-secondary-hover(){} +@mixin hook-inverse-button-secondary-active(){} +@mixin hook-inverse-button-text(){} +@mixin hook-inverse-button-text-hover(){} +@mixin hook-inverse-button-text-disabled(){} +@mixin hook-inverse-button-link(){} +@mixin hook-inverse-component-button(){ + + // + // Default + // + + .uk-button-default { + background-color: $inverse-button-default-background; + color: $inverse-button-default-color; + @if(mixin-exists(hook-inverse-button-default)) {@include hook-inverse-button-default();} + } + + .uk-button-default:hover, + .uk-button-default:focus { + background-color: $inverse-button-default-hover-background; + color: $inverse-button-default-hover-color; + @if(mixin-exists(hook-inverse-button-default-hover)) {@include hook-inverse-button-default-hover();} + } + + .uk-button-default:active, + .uk-button-default.uk-active { + background-color: $inverse-button-default-active-background; + color: $inverse-button-default-active-color; + @if(mixin-exists(hook-inverse-button-default-active)) {@include hook-inverse-button-default-active();} + } + + // + // Primary + // + + .uk-button-primary { + background-color: $inverse-button-primary-background; + color: $inverse-button-primary-color; + @if(mixin-exists(hook-inverse-button-primary)) {@include hook-inverse-button-primary();} + } + + .uk-button-primary:hover, + .uk-button-primary:focus { + background-color: $inverse-button-primary-hover-background; + color: $inverse-button-primary-hover-color; + @if(mixin-exists(hook-inverse-button-primary-hover)) {@include hook-inverse-button-primary-hover();} + } + + .uk-button-primary:active, + .uk-button-primary.uk-active { + background-color: $inverse-button-primary-active-background; + color: $inverse-button-primary-active-color; + @if(mixin-exists(hook-inverse-button-primary-active)) {@include hook-inverse-button-primary-active();} + } + + // + // Secondary + // + + .uk-button-secondary { + background-color: $inverse-button-secondary-background; + color: $inverse-button-secondary-color; + @if(mixin-exists(hook-inverse-button-secondary)) {@include hook-inverse-button-secondary();} + } + + .uk-button-secondary:hover, + .uk-button-secondary:focus { + background-color: $inverse-button-secondary-hover-background; + color: $inverse-button-secondary-hover-color; + @if(mixin-exists(hook-inverse-button-secondary-hover)) {@include hook-inverse-button-secondary-hover();} + } + + .uk-button-secondary:active, + .uk-button-secondary.uk-active { + background-color: $inverse-button-secondary-active-background; + color: $inverse-button-secondary-active-color; + @if(mixin-exists(hook-inverse-button-secondary-active)) {@include hook-inverse-button-secondary-active();} + } + + // + // Text + // + + .uk-button-text { + color: $inverse-button-text-color; + @if(mixin-exists(hook-inverse-button-text)) {@include hook-inverse-button-text();} + } + + .uk-button-text:hover, + .uk-button-text:focus { + color: $inverse-button-text-hover-color; + @if(mixin-exists(hook-inverse-button-text-hover)) {@include hook-inverse-button-text-hover();} + } + + .uk-button-text:disabled { + color: $inverse-button-text-disabled-color; + @if(mixin-exists(hook-inverse-button-text-disabled)) {@include hook-inverse-button-text-disabled();} + } + + // + // Link + // + + .uk-button-link { + color: $inverse-button-link-color; + @if(mixin-exists(hook-inverse-button-link)) {@include hook-inverse-button-link();} + } + + .uk-button-link:hover, + .uk-button-link:focus { color: $inverse-button-link-hover-color; } + + +} +@mixin hook-card(){} +@mixin hook-card-body(){} +@mixin hook-card-header(){} +@mixin hook-card-footer(){} +@mixin hook-card-media(){} +@mixin hook-card-media-top(){} +@mixin hook-card-media-bottom(){} +@mixin hook-card-media-left(){} +@mixin hook-card-media-right(){} +@mixin hook-card-title(){} +@mixin hook-card-badge(){} +@mixin hook-card-hover(){} +@mixin hook-card-default(){} +@mixin hook-card-default-title(){} +@mixin hook-card-default-hover(){} +@mixin hook-card-default-header(){} +@mixin hook-card-default-footer(){} +@mixin hook-card-primary(){} +@mixin hook-card-primary-title(){} +@mixin hook-card-primary-hover(){} +@mixin hook-card-secondary(){} +@mixin hook-card-secondary-title(){} +@mixin hook-card-secondary-hover(){} +@mixin hook-card-misc(){} +@mixin hook-close(){} +@mixin hook-close-hover(){} +@mixin hook-close-misc(){} +@mixin hook-inverse-close(){} +@mixin hook-inverse-close-hover(){} +@mixin hook-inverse-component-close(){ + + .uk-close { + color: $inverse-close-color; + @if(mixin-exists(hook-inverse-close)) {@include hook-inverse-close();} + } + + .uk-close:hover, + .uk-close:focus { + color: $inverse-close-hover-color; + @if(mixin-exists(hook-inverse-close-hover)) {@include hook-inverse-close-hover();} + } + +} +@mixin hook-column-misc(){} +@mixin hook-inverse-component-column(){ + + .uk-column-divider { column-rule-color: $inverse-column-divider-rule-color; } + +} +@mixin hook-comment(){} +@mixin hook-comment-body(){} +@mixin hook-comment-header(){} +@mixin hook-comment-title(){} +@mixin hook-comment-meta(){} +@mixin hook-comment-avatar(){} +@mixin hook-comment-list-adjacent(){} +@mixin hook-comment-list-sub(){} +@mixin hook-comment-list-sub-adjacent(){} +@mixin hook-comment-primary(){} +@mixin hook-comment-misc(){} +@mixin hook-container-misc(){} +@mixin hook-countdown(){} +@mixin hook-countdown-item(){} +@mixin hook-countdown-number(){} +@mixin hook-countdown-separator(){} +@mixin hook-countdown-label(){} +@mixin hook-countdown-misc(){} +@mixin hook-inverse-countdown-item(){} +@mixin hook-inverse-countdown-number(){} +@mixin hook-inverse-countdown-separator(){} +@mixin hook-inverse-countdown-label(){} +@mixin hook-inverse-component-countdown(){ + + .uk-countdown-number, + .uk-countdown-separator { + @if(mixin-exists(hook-inverse-countdown-item)) {@include hook-inverse-countdown-item();} + } + + .uk-countdown-number { + @if(mixin-exists(hook-inverse-countdown-number)) {@include hook-inverse-countdown-number();} + } + + .uk-countdown-separator { + @if(mixin-exists(hook-inverse-countdown-separator)) {@include hook-inverse-countdown-separator();} + } + + .uk-countdown-label { + @if(mixin-exists(hook-inverse-countdown-label)) {@include hook-inverse-countdown-label();} + } + +} +@mixin hook-cover-misc(){} +@mixin hook-description-list-term(){} +@mixin hook-description-list-description(){} +@mixin hook-description-list-divider-term(){} +@mixin hook-description-list-misc(){} +@mixin svg-fill($src, $color-default, $color-new, $property: background-image){ + + $escape-color-default: escape($color-default) !default; + $escape-color-new: escape("#{$color-new}") !default; + + $data-uri: data-uri('image/svg+xml;charset=UTF-8', "#{$src}") !default; + $replace-src: replace("#{$data-uri}", "#{$escape-color-default}", "#{$escape-color-new}", "g") !default; + + #{$property}: unquote($replace-src); +} +@mixin hook-divider-icon(){} +@mixin hook-divider-icon-line(){} +@mixin hook-divider-icon-line-left(){} +@mixin hook-divider-icon-line-right(){} +@mixin hook-divider-small(){} +@mixin hook-divider-misc(){} +@mixin hook-inverse-divider-icon(){} +@mixin hook-inverse-divider-icon-line(){} +@mixin hook-inverse-divider-small(){} +@mixin hook-inverse-component-divider(){ + + .uk-divider-icon { + @include svg-fill($internal-divider-icon-image, "#000", $inverse-divider-icon-color); + @if(mixin-exists(hook-inverse-divider-icon)) {@include hook-inverse-divider-icon();} + } + + .uk-divider-icon::before, + .uk-divider-icon::after { + border-bottom-color: $inverse-divider-icon-line-border; + @if(mixin-exists(hook-inverse-divider-icon-line)) {@include hook-inverse-divider-icon-line();} + } + + .uk-divider-small::after { + border-top-color: $inverse-divider-small-border; + @if(mixin-exists(hook-inverse-divider-small)) {@include hook-inverse-divider-small();} + } + +} +@mixin hook-dotnav(){} +@mixin hook-dotnav-item(){} +@mixin hook-dotnav-item-hover(){} +@mixin hook-dotnav-item-onclick(){} +@mixin hook-dotnav-item-active(){} +@mixin hook-dotnav-misc(){} +@mixin hook-inverse-dotnav-item(){} +@mixin hook-inverse-dotnav-item-hover(){} +@mixin hook-inverse-dotnav-item-onclick(){} +@mixin hook-inverse-dotnav-item-active(){} +@mixin hook-inverse-component-dotnav(){ + + .uk-dotnav > * > * { + background-color: $inverse-dotnav-item-background; + @if(mixin-exists(hook-inverse-dotnav-item)) {@include hook-inverse-dotnav-item();} + } + + .uk-dotnav > * > :hover, + .uk-dotnav > * > :focus { + background-color: $inverse-dotnav-item-hover-background; + @if(mixin-exists(hook-inverse-dotnav-item-hover)) {@include hook-inverse-dotnav-item-hover();} + } + + .uk-dotnav > * > :active { + background-color: $inverse-dotnav-item-onclick-background; + @if(mixin-exists(hook-inverse-dotnav-item-onclick)) {@include hook-inverse-dotnav-item-onclick();} + } + + .uk-dotnav > .uk-active > * { + background-color: $inverse-dotnav-item-active-background; + @if(mixin-exists(hook-inverse-dotnav-item-active)) {@include hook-inverse-dotnav-item-active();} + } + +} +@mixin hook-drop-misc(){} +@mixin hook-dropdown(){} +@mixin hook-dropdown-nav(){} +@mixin hook-dropdown-nav-item(){} +@mixin hook-dropdown-nav-item-hover(){} +@mixin hook-dropdown-nav-header(){} +@mixin hook-dropdown-nav-divider(){} +@mixin hook-dropdown-misc(){} +@mixin hook-flex-misc(){} +@mixin hook-form-range(){} +@mixin hook-form-range-thumb(){} +@mixin hook-form-range-track(){} +@mixin hook-form-range-track-focus(){} +@mixin hook-form-range-misc(){} +@mixin hook-form(){} +@mixin hook-form-single-line(){} +@mixin hook-form-multi-line(){} +@mixin hook-form-focus(){} +@mixin hook-form-disabled(){} +@mixin hook-form-danger(){} +@mixin hook-form-success(){} +@mixin hook-form-blank(){} +@mixin hook-form-blank-focus(){} +@mixin hook-form-radio(){} +@mixin hook-form-radio-focus(){} +@mixin hook-form-radio-checked(){} +@mixin hook-form-radio-checked-focus(){} +@mixin hook-form-radio-disabled(){} +@mixin hook-form-legend(){} +@mixin hook-form-label(){} +@mixin hook-form-stacked-label(){} +@mixin hook-form-horizontal-label(){} +@mixin hook-form-misc(){} +@mixin hook-inverse-form(){} +@mixin hook-inverse-form-focus(){} +@mixin hook-inverse-form-radio(){} +@mixin hook-inverse-form-radio-focus(){} +@mixin hook-inverse-form-radio-checked(){} +@mixin hook-inverse-form-radio-checked-focus(){} +@mixin hook-inverse-form-label(){} +@mixin hook-inverse-component-form(){ + + .uk-input, + .uk-select, + .uk-textarea { + background-color: $inverse-form-background; + color: $inverse-form-color; + background-clip: padding-box; + @if(mixin-exists(hook-inverse-form)) {@include hook-inverse-form();} + + &:focus { + background-color: $inverse-form-focus-background; + color: $inverse-form-focus-color; + @if(mixin-exists(hook-inverse-form-focus)) {@include hook-inverse-form-focus();} + } + } + + // + // Placeholder + // + + .uk-input:-ms-input-placeholder { color: $inverse-form-placeholder-color !important; } + .uk-input::placeholder { color: $inverse-form-placeholder-color; } + + .uk-textarea:-ms-input-placeholder { color: $inverse-form-placeholder-color !important; } + .uk-textarea::placeholder { color: $inverse-form-placeholder-color; } + + // + // Radio and checkbox + // + + .uk-select:not([multiple]):not([size]) { @include svg-fill($internal-form-select-image, "#000", $inverse-form-select-icon-color); } + + // + // Radio and checkbox + // + + .uk-radio, + .uk-checkbox { + background-color: $inverse-form-radio-background; + @if(mixin-exists(hook-inverse-form-radio)) {@include hook-inverse-form-radio();} + } + + // Focus + .uk-radio:focus, + .uk-checkbox:focus { + @if(mixin-exists(hook-inverse-form-radio-focus)) {@include hook-inverse-form-radio-focus();} + } + + // Checked + .uk-radio:checked, + .uk-checkbox:checked, + .uk-checkbox:indeterminate { + background-color: $inverse-form-radio-checked-background; + @if(mixin-exists(hook-inverse-form-radio-checked)) {@include hook-inverse-form-radio-checked();} + } + + // Focus + .uk-radio:checked:focus, + .uk-checkbox:checked:focus, + .uk-checkbox:indeterminate:focus { + background-color: $inverse-form-radio-checked-focus-background; + @if(mixin-exists(hook-inverse-form-radio-checked-focus)) {@include hook-inverse-form-radio-checked-focus();} + } + + // Icon + .uk-radio:checked { @include svg-fill($internal-form-radio-image, "#000", $inverse-form-radio-checked-icon-color); } + .uk-checkbox:checked { @include svg-fill($internal-form-checkbox-image, "#000", $inverse-form-radio-checked-icon-color); } + .uk-checkbox:indeterminate { @include svg-fill($internal-form-checkbox-indeterminate-image, "#000", $inverse-form-radio-checked-icon-color); } + + // Label + .uk-form-label { + @if(mixin-exists(hook-inverse-form-label)) {@include hook-inverse-form-label();} + } + +} +@mixin hook-grid-misc(){} +@mixin hook-inverse-component-grid(){ + + .uk-grid-divider > :not(.uk-first-column)::before { border-left-color: $inverse-grid-divider-border; } + .uk-grid-divider.uk-grid-stack > .uk-grid-margin::before { border-top-color: $inverse-grid-divider-border; } + +} +@mixin hook-heading-primary(){} +@mixin hook-heading-hero(){} +@mixin hook-heading-divider(){} +@mixin hook-heading-bullet(){} +@mixin hook-heading-line(){} +@mixin hook-heading-misc(){} +@mixin hook-inverse-heading-primary(){} +@mixin hook-inverse-heading-hero(){} +@mixin hook-inverse-heading-divider(){} +@mixin hook-inverse-heading-bullet(){} +@mixin hook-inverse-heading-line(){} +@mixin hook-inverse-component-heading(){ + + .uk-heading-primary { + @if(mixin-exists(hook-inverse-heading-primary)) {@include hook-inverse-heading-primary();} + } + + .uk-heading-hero { + @if(mixin-exists(hook-inverse-heading-hero)) {@include hook-inverse-heading-hero();} + } + + .uk-heading-divider { + border-bottom-color: $inverse-heading-divider-border; + @if(mixin-exists(hook-inverse-heading-divider)) {@include hook-inverse-heading-divider();} + } + + .uk-heading-bullet::before { + border-left-color: $inverse-heading-bullet-border; + @if(mixin-exists(hook-inverse-heading-bullet)) {@include hook-inverse-heading-bullet();} + } + + .uk-heading-line > ::before, + .uk-heading-line > ::after { + border-bottom-color: $inverse-heading-line-border; + @if(mixin-exists(hook-inverse-heading-line)) {@include hook-inverse-heading-line();} + } + +} +@mixin hook-icon-link(){} +@mixin hook-icon-link-hover(){} +@mixin hook-icon-link-active(){} +@mixin hook-icon-button(){} +@mixin hook-icon-button-hover(){} +@mixin hook-icon-button-active(){} +@mixin hook-icon-misc(){} +@mixin hook-inverse-icon-link(){} +@mixin hook-inverse-icon-link-hover(){} +@mixin hook-inverse-icon-link-active(){} +@mixin hook-inverse-icon-button(){} +@mixin hook-inverse-icon-button-hover(){} +@mixin hook-inverse-icon-button-active(){} +@mixin hook-inverse-component-icon(){ + + // + // Link + // + + .uk-icon-link { + color: $inverse-icon-link-color; + @if(mixin-exists(hook-inverse-icon-link)) {@include hook-inverse-icon-link();} + } + + .uk-icon-link:hover, + .uk-icon-link:focus { + color: $inverse-icon-link-hover-color; + @if(mixin-exists(hook-inverse-icon-link-hover)) {@include hook-inverse-icon-link-hover();} + } + + .uk-icon-link:active, + .uk-active > .uk-icon-link { + color: $inverse-icon-link-active-color; + @if(mixin-exists(hook-inverse-icon-link-active)) {@include hook-inverse-icon-link-active();} + } + + // + // Button + // + + .uk-icon-button { + background-color: $inverse-icon-button-background; + color: $inverse-icon-button-color; + @if(mixin-exists(hook-inverse-icon-button)) {@include hook-inverse-icon-button();} + } + + .uk-icon-button:hover, + .uk-icon-button:focus { + background-color: $inverse-icon-button-hover-background; + color: $inverse-icon-button-hover-color; + @if(mixin-exists(hook-inverse-icon-button-hover)) {@include hook-inverse-icon-button-hover();} + } + + .uk-icon-button:active { + background-color: $inverse-icon-button-active-background; + color: $inverse-icon-button-active-color; + @if(mixin-exists(hook-inverse-icon-button-active)) {@include hook-inverse-icon-button-active();} + } + +} +@mixin hook-iconnav(){} +@mixin hook-iconnav-item(){} +@mixin hook-iconnav-item-hover(){} +@mixin hook-iconnav-item-active(){} +@mixin hook-iconnav-misc(){} +@mixin hook-inverse-iconnav-item(){} +@mixin hook-inverse-iconnav-item-hover(){} +@mixin hook-inverse-iconnav-item-active(){} +@mixin hook-inverse-component-iconnav(){ + + .uk-iconnav > * > a { + color: $inverse-iconnav-item-color; + @if(mixin-exists(hook-inverse-iconnav-item)) {@include hook-inverse-iconnav-item();} + } + + .uk-iconnav > * > a:hover, + .uk-iconnav > * > a:focus { + color: $inverse-iconnav-item-hover-color; + @if(mixin-exists(hook-inverse-iconnav-item-hover)) {@include hook-inverse-iconnav-item-hover();} + } + + .uk-iconnav > .uk-active > a { + color: $inverse-iconnav-item-active-color; + @if(mixin-exists(hook-inverse-iconnav-item-active)) {@include hook-inverse-iconnav-item-active();} + } + +} +@mixin hook-inverse-component-link(){ + + a.uk-link-muted, + .uk-link-muted a { + color: $inverse-link-muted-color; + @if(mixin-exists(hook-inverse-link-muted)) {@include hook-inverse-link-muted();} + } + + a.uk-link-muted:hover, + .uk-link-muted a:hover { + color: $inverse-link-muted-hover-color; + @if(mixin-exists(hook-inverse-link-muted-hover)) {@include hook-inverse-link-muted-hover();} + } + + a.uk-link-text:hover, + .uk-link-text a:hover { + color: $inverse-link-text-hover-color; + @if(mixin-exists(hook-inverse-link-text-hover)) {@include hook-inverse-link-text-hover();} + } + + a.uk-link-heading:hover, + .uk-link-heading a:hover { + color: $inverse-link-heading-hover-color; + @if(mixin-exists(hook-inverse-link-heading-hover)) {@include hook-inverse-link-heading-hover();} + } + +} +@mixin hook-inverse-component-list(){ + + .uk-list-divider > li:nth-child(n+2) { + border-top-color: $inverse-list-divider-border; + @if(mixin-exists(hook-inverse-list-divider)) {@include hook-inverse-list-divider();} + } + + .uk-list-striped > li { + @if(mixin-exists(hook-inverse-list-striped)) {@include hook-inverse-list-striped();} + } + + .uk-list-striped > li:nth-of-type(odd) { background-color: $inverse-list-striped-background; } + + .uk-list-bullet > li::before { + @include svg-fill($internal-list-bullet-image, "#000", $inverse-list-bullet-icon-color); + @if(mixin-exists(hook-inverse-list-bullet)) {@include hook-inverse-list-bullet();} + } + +} +@mixin hook-inverse-component-totop(){ + + .uk-totop { + color: $inverse-totop-color; + @if(mixin-exists(hook-inverse-totop)) {@include hook-inverse-totop();} + } + + .uk-totop:hover, + .uk-totop:focus { + color: $inverse-totop-hover-color; + @if(mixin-exists(hook-inverse-totop-hover)) {@include hook-inverse-totop-hover();} + } + + .uk-totop:active { + color: $inverse-totop-active-color; + @if(mixin-exists(hook-inverse-totop-active)) {@include hook-inverse-totop-active();} + } + +} +@mixin hook-inverse-component-label(){ + + .uk-label { + background-color: $inverse-label-background; + color: $inverse-label-color; + @if(mixin-exists(hook-inverse-label)) {@include hook-inverse-label();} + } + +} +@mixin hook-inverse-component-search(){ + + // + // Input + // + + .uk-search-input { color: $inverse-search-color; } + + .uk-search-input:-ms-input-placeholder { color: $inverse-search-placeholder-color !important; } + .uk-search-input::placeholder { color: $inverse-search-placeholder-color; } + + + // + // Icon + // + + .uk-search .uk-search-icon { color: $inverse-search-icon-color; } + + .uk-search .uk-search-icon:hover { color: $inverse-search-icon-color; } + + // + // Style modifier + // + + .uk-search-default .uk-search-input { + background-color: $inverse-search-default-background; + @if(mixin-exists(hook-inverse-search-default-input)) {@include hook-inverse-search-default-input();} + } + .uk-search-default .uk-search-input:focus { + background-color: $inverse-search-default-background; + @if(mixin-exists(hook-inverse-search-default-input-focus)) {@include hook-inverse-search-default-input-focus();} + } + + .uk-search-navbar .uk-search-input { + background-color: $inverse-search-navbar-background; + @if(mixin-exists(hook-inverse-search-navbar-input)) {@include hook-inverse-search-navbar-input();} + } + + .uk-search-large .uk-search-input { + background-color: $inverse-search-large-background; + @if(mixin-exists(hook-inverse-search-large-input)) {@include hook-inverse-search-large-input();} + } + + // + // Toggle + // + + .uk-search-toggle { + color: $inverse-search-toggle-color; + @if(mixin-exists(hook-inverse-search-toggle)) {@include hook-inverse-search-toggle();} + } + + .uk-search-toggle:hover, + .uk-search-toggle:focus { + color: $inverse-search-toggle-hover-color; + @if(mixin-exists(hook-inverse-search-toggle-hover)) {@include hook-inverse-search-toggle-hover();} + } + +} +@mixin hook-inverse-component-nav(){ + + // + // Parent icon modifier + // + + .uk-nav-parent-icon > .uk-parent > a::after { + @include svg-fill($internal-nav-parent-close-image, "#000", $inverse-nav-parent-icon-color); + @if(mixin-exists(hook-inverse-nav-parent-icon)) {@include hook-inverse-nav-parent-icon();} + } + + .uk-nav-parent-icon > .uk-parent.uk-open > a::after { @include svg-fill($internal-nav-parent-open-image, "#000", $inverse-nav-parent-icon-color); } + + // + // Default + // + + .uk-nav-default > li > a { + color: $inverse-nav-default-item-color; + @if(mixin-exists(hook-inverse-nav-default-item)) {@include hook-inverse-nav-default-item();} + } + + .uk-nav-default > li > a:hover, + .uk-nav-default > li > a:focus { + color: $inverse-nav-default-item-hover-color; + @if(mixin-exists(hook-inverse-nav-default-item-hover)) {@include hook-inverse-nav-default-item-hover();} + } + + .uk-nav-default > li.uk-active > a { + color: $inverse-nav-default-item-active-color; + @if(mixin-exists(hook-inverse-nav-default-item-active)) {@include hook-inverse-nav-default-item-active();} + } + + .uk-nav-default .uk-nav-header { + color: $inverse-nav-default-header-color; + @if(mixin-exists(hook-inverse-nav-default-header)) {@include hook-inverse-nav-default-header();} + } + + .uk-nav-default .uk-nav-divider { + border-top-color: $inverse-nav-default-divider-border; + @if(mixin-exists(hook-inverse-nav-default-divider)) {@include hook-inverse-nav-default-divider();} + } + + .uk-nav-default .uk-nav-sub a { color: $inverse-nav-default-sublist-item-color; } + + .uk-nav-default .uk-nav-sub a:hover, + .uk-nav-default .uk-nav-sub a:focus { color: $inverse-nav-default-sublist-item-hover-color; } + + // + // Primary + // + + .uk-nav-primary > li > a { + color: $inverse-nav-primary-item-color; + @if(mixin-exists(hook-inverse-nav-primary-item)) {@include hook-inverse-nav-primary-item();} + } + + .uk-nav-primary > li > a:hover, + .uk-nav-primary > li > a:focus { + color: $inverse-nav-primary-item-hover-color; + @if(mixin-exists(hook-inverse-nav-primary-item-hover)) {@include hook-inverse-nav-primary-item-hover();} + } + + .uk-nav-primary > li.uk-active > a { + color: $inverse-nav-primary-item-active-color; + @if(mixin-exists(hook-inverse-nav-primary-item-active)) {@include hook-inverse-nav-primary-item-active();} + } + + .uk-nav-primary .uk-nav-header { + color: $inverse-nav-primary-header-color; + @if(mixin-exists(hook-inverse-nav-primary-header)) {@include hook-inverse-nav-primary-header();} + } + + .uk-nav-primary .uk-nav-divider { + border-top-color: $inverse-nav-primary-divider-border; + @if(mixin-exists(hook-inverse-nav-primary-divider)) {@include hook-inverse-nav-primary-divider();} + } + + .uk-nav-primary .uk-nav-sub a { color: $inverse-nav-primary-sublist-item-color; } + + .uk-nav-primary .uk-nav-sub a:hover, + .uk-nav-primary .uk-nav-sub a:focus { color: $inverse-nav-primary-sublist-item-hover-color; } + +} +@mixin hook-inverse-component-navbar(){ + + .uk-navbar-nav > li > a { + color: $inverse-navbar-nav-item-color; + @if(mixin-exists(hook-inverse-navbar-nav-item)) {@include hook-inverse-navbar-nav-item();} + } + + .uk-navbar-nav > li:hover > a, + .uk-navbar-nav > li > a:focus, + .uk-navbar-nav > li > a.uk-open { + color: $inverse-navbar-nav-item-hover-color; + @if(mixin-exists(hook-inverse-navbar-nav-item-hover)) {@include hook-inverse-navbar-nav-item-hover();} + } + + .uk-navbar-nav > li > a:active { + color: $inverse-navbar-nav-item-onclick-color; + @if(mixin-exists(hook-inverse-navbar-nav-item-onclick)) {@include hook-inverse-navbar-nav-item-onclick();} + } + + .uk-navbar-nav > li.uk-active > a { + color: $inverse-navbar-nav-item-active-color; + @if(mixin-exists(hook-inverse-navbar-nav-item-active)) {@include hook-inverse-navbar-nav-item-active();} + } + + .uk-navbar-item { + color: $inverse-navbar-item-color; + @if(mixin-exists(hook-inverse-navbar-item)) {@include hook-inverse-navbar-item();} + } + + .uk-navbar-toggle { + color: $inverse-navbar-toggle-color; + @if(mixin-exists(hook-inverse-navbar-toggle)) {@include hook-inverse-navbar-toggle();} + } + + .uk-navbar-toggle:hover, + .uk-navbar-toggle:focus, + .uk-navbar-toggle.uk-open { + color: $inverse-navbar-toggle-hover-color; + @if(mixin-exists(hook-inverse-navbar-toggle-hover)) {@include hook-inverse-navbar-toggle-hover();} + } + +} +@mixin hook-inverse-component-subnav(){ + + .uk-subnav > * > :first-child { + color: $inverse-subnav-item-color; + @if(mixin-exists(hook-inverse-subnav-item)) {@include hook-inverse-subnav-item();} + } + + .uk-subnav > * > a:hover, + .uk-subnav > * > a:focus { + color: $inverse-subnav-item-hover-color; + @if(mixin-exists(hook-inverse-subnav-item-hover)) {@include hook-inverse-subnav-item-hover();} + } + + .uk-subnav > .uk-active > a { + color: $inverse-subnav-item-active-color; + @if(mixin-exists(hook-inverse-subnav-item-active)) {@include hook-inverse-subnav-item-active();} + } + + // + // Divider + // + + .uk-subnav-divider > :nth-child(n+2):not(.uk-first-column)::before { + border-left-color: $inverse-subnav-divider-border; + @if(mixin-exists(hook-inverse-subnav-divider)) {@include hook-inverse-subnav-divider();} + } + + // + // Pill + // + + .uk-subnav-pill > * > :first-child { + background-color: $inverse-subnav-pill-item-background; + color: $inverse-subnav-pill-item-color; + @if(mixin-exists(hook-inverse-subnav-pill-item)) {@include hook-inverse-subnav-pill-item();} + } + + .uk-subnav-pill > * > a:hover, + .uk-subnav-pill > * > a:focus { + background-color: $inverse-subnav-pill-item-hover-background; + color: $inverse-subnav-pill-item-hover-color; + @if(mixin-exists(hook-inverse-subnav-pill-item-hover)) {@include hook-inverse-subnav-pill-item-hover();} + } + + .uk-subnav-pill > * > a:active { + background-color: $inverse-subnav-pill-item-onclick-background; + color: $inverse-subnav-pill-item-onclick-color; + @if(mixin-exists(hook-inverse-subnav-pill-item-onclick)) {@include hook-inverse-subnav-pill-item-onclick();} + } + + .uk-subnav-pill > .uk-active > a { + background-color: $inverse-subnav-pill-item-active-background; + color: $inverse-subnav-pill-item-active-color; + @if(mixin-exists(hook-inverse-subnav-pill-item-active)) {@include hook-inverse-subnav-pill-item-active();} + } + + // + // Disabled + // + + .uk-subnav > .uk-disabled > a { + color: $inverse-subnav-item-disabled-color; + @if(mixin-exists(hook-inverse-subnav-item-disabled)) {@include hook-inverse-subnav-item-disabled();} + } + +} +@mixin hook-inverse-component-pagination(){ + + .uk-pagination > * > * { + color: $inverse-pagination-item-color; + @if(mixin-exists(hook-inverse-pagination-item)) {@include hook-inverse-pagination-item();} + } + + .uk-pagination > * > :hover, + .uk-pagination > * > :focus { + color: $inverse-pagination-item-hover-color; + @if(mixin-exists(hook-inverse-pagination-item-hover)) {@include hook-inverse-pagination-item-hover();} + } + + .uk-pagination > .uk-active > * { + color: $inverse-pagination-item-active-color; + @if(mixin-exists(hook-inverse-pagination-item-active)) {@include hook-inverse-pagination-item-active();} + } + + .uk-pagination > .uk-disabled > * { + color: $inverse-pagination-item-disabled-color; + @if(mixin-exists(hook-inverse-pagination-item-disabled)) {@include hook-inverse-pagination-item-disabled();} + } + +} +@mixin hook-inverse-component-tab(){ + + .uk-tab { + @if(mixin-exists(hook-inverse-tab)) {@include hook-inverse-tab();} + } + + .uk-tab > * > a { + color: $inverse-tab-item-color; + @if(mixin-exists(hook-inverse-tab-item)) {@include hook-inverse-tab-item();} + } + + .uk-tab > * > a:hover, + .uk-tab > * > a:focus{ + color: $inverse-tab-item-hover-color; + @if(mixin-exists(hook-inverse-tab-item-hover)) {@include hook-inverse-tab-item-hover();} + } + + .uk-tab > .uk-active > a { + color: $inverse-tab-item-active-color; + @if(mixin-exists(hook-inverse-tab-item-active)) {@include hook-inverse-tab-item-active();} + } + + .uk-tab > .uk-disabled > a { + color: $inverse-tab-item-disabled-color; + @if(mixin-exists(hook-inverse-tab-item-disabled)) {@include hook-inverse-tab-item-disabled();} + } + +} +@mixin hook-inverse-component-slidenav(){ + + .uk-slidenav { + color: $inverse-slidenav-color; + @if(mixin-exists(hook-inverse-slidenav)) {@include hook-inverse-slidenav();} + } + + .uk-slidenav:hover, + .uk-slidenav:focus { + color: $inverse-slidenav-hover-color; + @if(mixin-exists(hook-inverse-slidenav-hover)) {@include hook-inverse-slidenav-hover();} + } + + .uk-slidenav:active { + color: $inverse-slidenav-active-color; + @if(mixin-exists(hook-inverse-slidenav-active)) {@include hook-inverse-slidenav-active();} + } + +} +@mixin hook-inverse-component-text(){ + + .uk-text-lead { + color: $inverse-text-lead-color; + @if(mixin-exists(hook-inverse-text-lead)) {@include hook-inverse-text-lead();} + } + + .uk-text-meta { + color: $inverse-text-meta-color; + @if(mixin-exists(hook-inverse-text-meta)) {@include hook-inverse-text-meta();} + } + + .uk-text-muted { color: $inverse-text-muted-color !important; } + .uk-text-primary { color: $inverse-text-primary-color !important; } + +} +@mixin hook-inverse-component-utility(){ + + .uk-dropcap::first-letter, + .uk-dropcap p:first-of-type::first-letter { + @if(mixin-exists(hook-inverse-dropcap)) {@include hook-inverse-dropcap();} + } + + .uk-leader-fill { + @if(mixin-exists(hook-inverse-leader)) {@include hook-inverse-leader();} + } + + .uk-logo { + color: $inverse-logo-color; + @if(mixin-exists(hook-inverse-logo)) {@include hook-inverse-logo();} + } + + .uk-logo:hover, + .uk-logo:focus { + color: $inverse-logo-hover-color; + @if(mixin-exists(hook-inverse-logo-hover)) {@include hook-inverse-logo-hover();} + } + + .uk-logo > :not(.uk-logo-inverse):not(:only-of-type) { display: none; } + .uk-logo-inverse { display: inline; } + +} +@mixin hook-inverse(){ + @include hook-inverse-component-base(); + @include hook-inverse-component-link(); + @include hook-inverse-component-heading(); + @include hook-inverse-component-divider(); + @include hook-inverse-component-list(); + @include hook-inverse-component-icon(); + @include hook-inverse-component-form(); + @include hook-inverse-component-button(); + @include hook-inverse-component-grid(); + @include hook-inverse-component-close(); + @include hook-inverse-component-totop(); + @include hook-inverse-component-badge(); + @include hook-inverse-component-label(); + @include hook-inverse-component-article(); + @include hook-inverse-component-search(); + @include hook-inverse-component-nav(); + @include hook-inverse-component-navbar(); + @include hook-inverse-component-subnav(); + @include hook-inverse-component-breadcrumb(); + @include hook-inverse-component-pagination(); + @include hook-inverse-component-tab(); + @include hook-inverse-component-slidenav(); + @include hook-inverse-component-dotnav(); + @include hook-inverse-component-accordion(); + @include hook-inverse-component-iconnav(); + @include hook-inverse-component-text(); + @include hook-inverse-component-column(); + @include hook-inverse-component-utility(); +} +@mixin hook-label(){} +@mixin hook-label-success(){} +@mixin hook-label-warning(){} +@mixin hook-label-danger(){} +@mixin hook-label-misc(){} +@mixin hook-inverse-label(){} +@mixin hook-lightbox(){} +@mixin hook-lightbox-item(){} +@mixin hook-lightbox-toolbar(){} +@mixin hook-lightbox-toolbar-icon(){} +@mixin hook-lightbox-toolbar-icon-hover(){} +@mixin hook-lightbox-button(){} +@mixin hook-lightbox-button-hover(){} +@mixin hook-lightbox-misc(){} +@mixin hook-link-muted(){} +@mixin hook-link-muted-hover(){} +@mixin hook-link-text(){} +@mixin hook-link-text-hover(){} +@mixin hook-link-heading(){} +@mixin hook-link-heading-hover(){} +@mixin hook-link-reset(){} +@mixin hook-link-misc(){} +@mixin hook-inverse-link-muted(){} +@mixin hook-inverse-link-muted-hover(){} +@mixin hook-inverse-link-text-hover(){} +@mixin hook-inverse-link-heading-hover(){} +@mixin hook-list-divider(){} +@mixin hook-list-striped(){} +@mixin hook-list-bullet(){} +@mixin hook-list-misc(){} +@mixin hook-inverse-list-divider(){} +@mixin hook-inverse-list-striped(){} +@mixin hook-inverse-list-bullet(){} +@mixin hook-margin-misc(){} +@mixin hook-marker(){} +@mixin hook-marker-hover(){} +@mixin hook-marker-misc(){} +@mixin hook-inverse-marker(){} +@mixin hook-inverse-marker-hover(){} +@mixin hook-inverse-component-marker(){ + + .uk-marker { + background: $inverse-marker-background; + color: $inverse-marker-color; + @if(mixin-exists(hook-inverse-marker)) {@include hook-inverse-marker();} + } + + .uk-marker:hover, + .uk-marker:focus { + color: $inverse-marker-hover-color; + @if(mixin-exists(hook-inverse-marker-hover)) {@include hook-inverse-marker-hover();} + } + +} +@mixin hook-modal(){} +@mixin hook-modal-dialog(){} +@mixin hook-modal-full(){} +@mixin hook-modal-body(){} +@mixin hook-modal-header(){} +@mixin hook-modal-footer(){} +@mixin hook-modal-title(){} +@mixin hook-modal-close(){} +@mixin hook-modal-close-hover(){} +@mixin hook-modal-close-default(){} +@mixin hook-modal-close-default-hover(){} +@mixin hook-modal-close-outside(){} +@mixin hook-modal-close-outside-hover(){} +@mixin hook-modal-close-full(){} +@mixin hook-modal-close-full-hover(){} +@mixin hook-modal-misc(){} +@mixin hook-nav-sub(){} +@mixin hook-nav-parent-icon(){} +@mixin hook-nav-header(){} +@mixin hook-nav-divider(){} +@mixin hook-nav-default(){} +@mixin hook-nav-default-item(){} +@mixin hook-nav-default-item-hover(){} +@mixin hook-nav-default-item-active(){} +@mixin hook-nav-default-header(){} +@mixin hook-nav-default-divider(){} +@mixin hook-nav-primary(){} +@mixin hook-nav-primary-item(){} +@mixin hook-nav-primary-item-hover(){} +@mixin hook-nav-primary-item-active(){} +@mixin hook-nav-primary-header(){} +@mixin hook-nav-primary-divider(){} +@mixin hook-nav-misc(){} +@mixin hook-inverse-nav-parent-icon(){} +@mixin hook-inverse-nav-default-item(){} +@mixin hook-inverse-nav-default-item-hover(){} +@mixin hook-inverse-nav-default-item-active(){} +@mixin hook-inverse-nav-default-header(){} +@mixin hook-inverse-nav-default-divider(){} +@mixin hook-inverse-nav-primary-item(){} +@mixin hook-inverse-nav-primary-item-hover(){} +@mixin hook-inverse-nav-primary-item-active(){} +@mixin hook-inverse-nav-primary-header(){} +@mixin hook-inverse-nav-primary-divider(){} +@mixin hook-navbar(){} +@mixin hook-navbar-container(){} +@mixin hook-navbar-nav-item(){} +@mixin hook-navbar-nav-item-hover(){} +@mixin hook-navbar-nav-item-onclick(){} +@mixin hook-navbar-nav-item-active(){} +@mixin hook-navbar-item(){} +@mixin hook-navbar-toggle(){} +@mixin hook-navbar-toggle-hover(){} +@mixin hook-navbar-toggle-icon(){} +@mixin hook-navbar-toggle-icon-hover(){} +@mixin hook-navbar-subtitle(){} +@mixin hook-navbar-transparent(){} +@mixin hook-navbar-sticky(){} +@mixin hook-navbar-dropdown(){} +@mixin hook-navbar-dropdown-dropbar(){} +@mixin hook-navbar-dropdown-nav(){} +@mixin hook-navbar-dropdown-nav-item(){} +@mixin hook-navbar-dropdown-nav-item-hover(){} +@mixin hook-navbar-dropdown-nav-item-active(){} +@mixin hook-navbar-dropdown-nav-header(){} +@mixin hook-navbar-dropdown-nav-divider(){} +@mixin hook-navbar-dropbar(){} +@mixin hook-navbar-dropbar-slide(){} +@mixin hook-navbar-misc(){} +@mixin hook-inverse-navbar-nav-item(){} +@mixin hook-inverse-navbar-nav-item-hover(){} +@mixin hook-inverse-navbar-nav-item-onclick(){} +@mixin hook-inverse-navbar-nav-item-active(){} +@mixin hook-inverse-navbar-item(){} +@mixin hook-inverse-navbar-toggle(){} +@mixin hook-inverse-navbar-toggle-hover(){} +@mixin hook-notification(){} +@mixin hook-notification-message(){} +@mixin hook-notification-close(){} +@mixin hook-notification-message-primary(){} +@mixin hook-notification-message-success(){} +@mixin hook-notification-message-warning(){} +@mixin hook-notification-message-danger(){} +@mixin hook-notification-misc(){} +@mixin hook-offcanvas-bar(){} +@mixin hook-offcanvas-close(){} +@mixin hook-offcanvas-overlay(){} +@mixin hook-offcanvas-misc(){} +@mixin hook-overlay(){} +@mixin hook-overlay-icon(){} +@mixin hook-overlay-default(){} +@mixin hook-overlay-primary(){} +@mixin hook-overlay-misc(){} +@mixin hook-padding-misc(){} +@mixin hook-pagination(){} +@mixin hook-pagination-item(){} +@mixin hook-pagination-item-hover(){} +@mixin hook-pagination-item-active(){} +@mixin hook-pagination-item-disabled(){} +@mixin hook-pagination-misc(){} +@mixin hook-inverse-pagination-item(){} +@mixin hook-inverse-pagination-item-hover(){} +@mixin hook-inverse-pagination-item-active(){} +@mixin hook-inverse-pagination-item-disabled(){} +@mixin hook-placeholder(){} +@mixin hook-placeholder-misc(){} +@mixin hook-position-misc(){} +@mixin hook-print(){} +@mixin hook-progress(){} +@mixin hook-progress-bar(){} +@mixin hook-progress-misc(){} +@mixin hook-search-input(){} +@mixin hook-search-default-input(){} +@mixin hook-search-default-input-focus(){} +@mixin hook-search-navbar-input(){} +@mixin hook-search-large-input(){} +@mixin hook-search-toggle(){} +@mixin hook-search-toggle-hover(){} +@mixin hook-search-misc(){} +@mixin hook-inverse-search-default-input(){} +@mixin hook-inverse-search-default-input-focus(){} +@mixin hook-inverse-search-navbar-input(){} +@mixin hook-inverse-search-large-input(){} +@mixin hook-inverse-search-toggle(){} +@mixin hook-inverse-search-toggle-hover(){} +@mixin hook-section(){} +@mixin hook-section-default(){} +@mixin hook-section-muted(){} +@mixin hook-section-primary(){} +@mixin hook-section-secondary(){} +@mixin hook-section-overlap(){} +@mixin hook-section-misc(){} +@mixin hook-slidenav(){} +@mixin hook-slidenav-hover(){} +@mixin hook-slidenav-active(){} +@mixin hook-slidenav-previous(){} +@mixin hook-slidenav-next(){} +@mixin hook-slidenav-large(){} +@mixin hook-slidenav-container(){} +@mixin hook-slidenav-misc(){} +@mixin hook-inverse-slidenav(){} +@mixin hook-inverse-slidenav-hover(){} +@mixin hook-inverse-slidenav-active(){} +@mixin hook-slider(){} +@mixin hook-slider-misc(){} +@mixin hook-slideshow(){} +@mixin hook-slideshow-misc(){} +@mixin hook-sortable(){} +@mixin hook-sortable-drag(){} +@mixin hook-sortable-placeholder(){} +@mixin hook-sortable-empty(){} +@mixin hook-sortable-misc(){} +@mixin hook-spinner(){} +@mixin hook-spinner-misc(){} +@mixin hook-sticky-misc(){} +@mixin hook-subnav(){} +@mixin hook-subnav-item(){} +@mixin hook-subnav-item-hover(){} +@mixin hook-subnav-item-active(){} +@mixin hook-subnav-divider(){} +@mixin hook-subnav-pill-item(){} +@mixin hook-subnav-pill-item-hover(){} +@mixin hook-subnav-pill-item-onclick(){} +@mixin hook-subnav-pill-item-active(){} +@mixin hook-subnav-item-disabled(){} +@mixin hook-subnav-misc(){} +@mixin hook-inverse-subnav-item(){} +@mixin hook-inverse-subnav-item-hover(){} +@mixin hook-inverse-subnav-item-active(){} +@mixin hook-inverse-subnav-divider(){} +@mixin hook-inverse-subnav-pill-item(){} +@mixin hook-inverse-subnav-pill-item-hover(){} +@mixin hook-inverse-subnav-pill-item-onclick(){} +@mixin hook-inverse-subnav-pill-item-active(){} +@mixin hook-inverse-subnav-item-disabled(){} +@mixin hook-switcher-misc(){} +@mixin hook-tab(){} +@mixin hook-tab-item(){} +@mixin hook-tab-item-hover(){} +@mixin hook-tab-item-active(){} +@mixin hook-tab-item-disabled(){} +@mixin hook-tab-bottom(){} +@mixin hook-tab-bottom-item(){} +@mixin hook-tab-left(){} +@mixin hook-tab-right(){} +@mixin hook-tab-left-item(){} +@mixin hook-tab-right-item(){} +@mixin hook-tab-misc(){} +@mixin hook-inverse-tab(){} +@mixin hook-inverse-tab-item(){} +@mixin hook-inverse-tab-item-hover(){} +@mixin hook-inverse-tab-item-active(){} +@mixin hook-inverse-tab-item-disabled(){} +@mixin hook-table(){} +@mixin hook-table-header-cell(){} +@mixin hook-table-cell(){} +@mixin hook-table-footer(){} +@mixin hook-table-caption(){} +@mixin hook-table-row-active(){} +@mixin hook-table-divider(){} +@mixin hook-table-striped(){} +@mixin hook-table-hover(){} +@mixin hook-table-small(){} +@mixin hook-table-large(){} +@mixin hook-table-misc(){} +@mixin hook-inverse-table-header-cell(){} +@mixin hook-inverse-table-caption(){} +@mixin hook-inverse-table-row-active(){} +@mixin hook-inverse-table-divider(){} +@mixin hook-inverse-table-striped(){} +@mixin hook-inverse-table-hover(){} +@mixin hook-inverse-component-table(){ + + .uk-table th { + color: $inverse-table-header-cell-color; + @if(mixin-exists(hook-inverse-table-header-cell)) {@include hook-inverse-table-header-cell();} + } + + .uk-table caption { + color: $inverse-table-caption-color; + @if(mixin-exists(hook-inverse-table-caption)) {@include hook-inverse-table-caption();} + } + + .uk-table > tr.uk-active, + .uk-table tbody tr.uk-active { + background: $inverse-table-row-active-background; + @if(mixin-exists(hook-inverse-table-row-active)) {@include hook-inverse-table-row-active();} + } + + .uk-table-divider > tr:not(:first-child), + .uk-table-divider > :not(:first-child) > tr, + .uk-table-divider > :first-child > tr:not(:first-child) { + border-top-color: $inverse-table-divider-border; + @if(mixin-exists(hook-inverse-table-divider)) {@include hook-inverse-table-divider();} + } + + .uk-table-striped > tr:nth-of-type(odd), + .uk-table-striped tbody tr:nth-of-type(odd) { + background: $inverse-table-striped-row-background; + @if(mixin-exists(hook-inverse-table-striped)) {@include hook-inverse-table-striped();} + } + + .uk-table-hover > tr:hover, + .uk-table-hover tbody tr:hover { + background: $inverse-table-hover-row-background; + @if(mixin-exists(hook-inverse-table-hover)) {@include hook-inverse-table-hover();} + } + +} +@mixin hook-text-lead(){} +@mixin hook-text-meta(){} +@mixin hook-text-small(){} +@mixin hook-text-large(){} +@mixin hook-text-background(){} +@mixin hook-text-misc(){} +@mixin hook-inverse-text-lead(){} +@mixin hook-inverse-text-meta(){} +@mixin hook-thumbnav(){} +@mixin hook-thumbnav-item(){} +@mixin hook-thumbnav-item-hover(){} +@mixin hook-thumbnav-item-active(){} +@mixin hook-thumbnav-misc(){} +@mixin hook-inverse-thumbnav-item(){} +@mixin hook-inverse-thumbnav-item-hover(){} +@mixin hook-inverse-thumbnav-item-active(){} +@mixin hook-inverse-component-thumbnav(){ + + .uk-thumbnav > * > * { + @if(mixin-exists(hook-inverse-thumbnav-item)) {@include hook-inverse-thumbnav-item();} + } + + .uk-thumbnav > * > :hover, + .uk-thumbnav > * > :focus { + @if(mixin-exists(hook-inverse-thumbnav-item-hover)) {@include hook-inverse-thumbnav-item-hover();} + } + + .uk-thumbnav > .uk-active > * { + @if(mixin-exists(hook-inverse-thumbnav-item-active)) {@include hook-inverse-thumbnav-item-active();} + } + +} +@mixin hook-tile(){} +@mixin hook-tile-default(){} +@mixin hook-tile-muted(){} +@mixin hook-tile-primary(){} +@mixin hook-tile-secondary(){} +@mixin hook-tile-misc(){} +@mixin hook-tooltip(){} +@mixin hook-tooltip-misc(){} +@mixin hook-totop(){} +@mixin hook-totop-hover(){} +@mixin hook-totop-active(){} +@mixin hook-totop-misc(){} +@mixin hook-inverse-totop(){} +@mixin hook-inverse-totop-hover(){} +@mixin hook-inverse-totop-active(){} +@mixin hook-transition-misc(){} +@mixin hook-panel-scrollable(){} +@mixin hook-box-shadow-bottom(){} +@mixin hook-dropcap(){} +@mixin hook-leader(){} +@mixin hook-logo(){} +@mixin hook-logo-hover(){} +@mixin hook-utility-misc(){} +@mixin hook-inverse-dropcap(){} +@mixin hook-inverse-leader(){} +@mixin hook-inverse-logo(){} +@mixin hook-inverse-logo-hover(){} +@mixin hook-visibility-misc(){} +@mixin hook-width-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/_import.scss b/_sass/uikit/theme/_import.scss new file mode 100644 index 00000000..b08e50b6 --- /dev/null +++ b/_sass/uikit/theme/_import.scss @@ -0,0 +1,78 @@ +// Base +@import "variables.scss"; +@import "base.scss"; + +// Elements +@import "link.scss"; +@import "heading.scss"; +@import "divider.scss"; +@import "list.scss"; +@import "description-list.scss"; +@import "table.scss"; +@import "icon.scss"; +@import "form-range.scss"; +@import "form.scss"; +@import "button.scss"; + +// Layout +@import "section.scss"; +@import "container.scss"; +@import "grid.scss"; +@import "tile.scss"; +@import "card.scss"; + +// Common +@import "close.scss"; +@import "spinner.scss"; +@import "marker.scss"; +@import "totop.scss"; +@import "alert.scss"; +@import "badge.scss"; +@import "label.scss"; +@import "overlay.scss"; +@import "article.scss"; +@import "comment.scss"; +@import "search.scss"; + +// Navs +@import "nav.scss"; +@import "navbar.scss"; +@import "subnav.scss"; +@import "breadcrumb.scss"; +@import "pagination.scss"; +@import "tab.scss"; +@import "slidenav.scss"; +@import "dotnav.scss"; +@import "thumbnav.scss"; + +// JavaScript +@import "accordion.scss"; +@import "drop.scss"; +@import "dropdown.scss"; +@import "modal.scss"; +@import "lightbox.scss"; +@import "sticky.scss"; +@import "offcanvas.scss"; + +// Additional +@import "iconnav.scss"; +@import "notification.scss"; +@import "tooltip.scss"; +@import "placeholder.scss"; +@import "progress.scss"; +@import "sortable.scss"; +@import "countdown.scss"; + +// Utilities +@import "animation.scss"; +@import "width.scss"; +@import "text.scss"; +@import "column.scss"; +@import "background.scss"; +@import "align.scss"; +@import "utility.scss"; +@import "margin.scss"; +@import "padding.scss"; +@import "position.scss"; +@import "transition.scss"; +@import "inverse.scss"; diff --git a/_sass/uikit/theme/accordion.scss b/_sass/uikit/theme/accordion.scss new file mode 100644 index 00000000..3e44609f --- /dev/null +++ b/_sass/uikit/theme/accordion.scss @@ -0,0 +1,58 @@ +// +// Component: Accordion +// +// ======================================================================== + + +// Variables +// ======================================================================== + +// +// New +// + +$accordion-icon-color: $global-color !default; +$internal-accordion-open-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22#000%22%20width%3D%2213%22%20height%3D%221%22%20x%3D%220%22%20y%3D%226%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; +$internal-accordion-close-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22#000%22%20width%3D%2213%22%20height%3D%221%22%20x%3D%220%22%20y%3D%226%22%20%2F%3E%0A%20%20%20%20%3Crect%20fill%3D%22#000%22%20width%3D%221%22%20height%3D%2213%22%20x%3D%226%22%20y%3D%220%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; + + +// Component +// ======================================================================== + +// @mixin hook-accordion(){} + + +// Item +// ======================================================================== + +// @mixin hook-accordion-item(){} + + +// Title +// ======================================================================== + + + +// @mixin hook-accordion-title-hover(){} + + +// Content +// ======================================================================== + +// @mixin hook-accordion-content(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-accordion-misc(){} + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-accordion-item(){} + +// @mixin hook-inverse-accordion-title(){} +// @mixin hook-inverse-accordion-title-hover(){} + + diff --git a/_sass/uikit/theme/alert.scss b/_sass/uikit/theme/alert.scss new file mode 100644 index 00000000..c4baa7ca --- /dev/null +++ b/_sass/uikit/theme/alert.scss @@ -0,0 +1,46 @@ +// +// Component: Alert +// +// ======================================================================== + + +// Variables +// ======================================================================== + +// +// New +// + +$alert-close-opacity: 0.4 !default; +$alert-close-hover-opacity: 0.8 !default; + + +// Component +// ======================================================================== + +// @mixin hook-alert(){} + + +// Close +// ======================================================================== + + + + + + +// Style modifiers +// ======================================================================== + +// @mixin hook-alert-primary(){} + +// @mixin hook-alert-success(){} + +// @mixin hook-alert-warning(){} + +// @mixin hook-alert-danger(){} + + +// Miscellaneous +// ======================================================================== + diff --git a/_sass/uikit/theme/align.scss b/_sass/uikit/theme/align.scss new file mode 100644 index 00000000..290abd41 --- /dev/null +++ b/_sass/uikit/theme/align.scss @@ -0,0 +1,14 @@ +// +// Component: Align +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-align-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/animation.scss b/_sass/uikit/theme/animation.scss new file mode 100644 index 00000000..03ebbc6e --- /dev/null +++ b/_sass/uikit/theme/animation.scss @@ -0,0 +1,14 @@ +// +// Component: Animation +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-animation-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/article.scss b/_sass/uikit/theme/article.scss new file mode 100644 index 00000000..a698e3ed --- /dev/null +++ b/_sass/uikit/theme/article.scss @@ -0,0 +1,51 @@ +// +// Component: Article +// +// ======================================================================== + + +// Variables +// ======================================================================== + +// +// New +// + +$article-meta-link-color: $article-meta-color !default; +$article-meta-link-hover-color: $global-color !default; + + +// Component +// ======================================================================== + +// @mixin hook-article(){} + + +// Adjacent sibling +// ======================================================================== + +// @mixin hook-article-adjacent(){} + + +// Title +// ======================================================================== + +// @mixin hook-article-title(){} + + +// Meta +// ======================================================================== + + + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-article-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-article-meta(){} \ No newline at end of file diff --git a/_sass/uikit/theme/background.scss b/_sass/uikit/theme/background.scss new file mode 100644 index 00000000..29e062e9 --- /dev/null +++ b/_sass/uikit/theme/background.scss @@ -0,0 +1,14 @@ +// +// Component: Background +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-background-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/badge.scss b/_sass/uikit/theme/badge.scss new file mode 100644 index 00000000..22ae9371 --- /dev/null +++ b/_sass/uikit/theme/badge.scss @@ -0,0 +1,29 @@ +// +// Component: Badge +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Component +// ======================================================================== + +// @mixin hook-badge(){} + +// @mixin hook-badge-hover(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-badge-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-badge(){} +// @mixin hook-inverse-badge-hover(){} \ No newline at end of file diff --git a/_sass/uikit/theme/base.scss b/_sass/uikit/theme/base.scss new file mode 100644 index 00000000..2c1c3356 --- /dev/null +++ b/_sass/uikit/theme/base.scss @@ -0,0 +1,116 @@ +// +// Component: Base +// +// ======================================================================== + + +// Variables +// ======================================================================== + +// +// New +// + +$base-code-padding-horizontal: 6px !default; +$base-code-padding-vertical: 2px !default; +$base-code-background: $global-muted-background !default; + +$base-blockquote-color: $global-emphasis-color !default; + +$base-blockquote-footer-color: $global-color !default; + +$base-pre-padding: 10px !default; +$base-pre-background: $global-background !default; +$base-pre-border-width: $global-border-width !default; +$base-pre-border: $global-border !default; +$base-pre-border-radius: 3px !default; + + +// Body +// ======================================================================== + +// @mixin hook-base-body(){} + + +// Links +// ======================================================================== + +// @mixin hook-base-link(){} + +// @mixin hook-base-link-hover(){} + + +// Text-level semantics +// ======================================================================== + + + + +// Headings +// ======================================================================== + +// @mixin hook-base-heading(){} + +// @mixin hook-base-h1(){} + +// @mixin hook-base-h2(){} + +// @mixin hook-base-h3(){} + +// @mixin hook-base-h4(){} + +// @mixin hook-base-h5(){} + +// @mixin hook-base-h6(){} + + +// Horizontal rules +// ======================================================================== + +// @mixin hook-base-hr(){} + + +// Blockquotes +// ======================================================================== + + + + + + +// Preformatted text +// ======================================================================== + + + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-base-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-base-blockquote-color: $inverse-global-emphasis-color !default; +$inverse-base-blockquote-footer-color: $inverse-global-color !default; + +// @mixin hook-inverse-base-link(){} +// @mixin hook-inverse-base-link-hover(){} + + + +// @mixin hook-inverse-base-heading(){} + +// @mixin hook-inverse-base-h1(){} +// @mixin hook-inverse-base-h2(){} +// @mixin hook-inverse-base-h3(){} +// @mixin hook-inverse-base-h4(){} +// @mixin hook-inverse-base-h5(){} +// @mixin hook-inverse-base-h6(){} + + + + +// @mixin hook-inverse-base-hr(){} \ No newline at end of file diff --git a/_sass/uikit/theme/breadcrumb.scss b/_sass/uikit/theme/breadcrumb.scss new file mode 100644 index 00000000..40c04e5d --- /dev/null +++ b/_sass/uikit/theme/breadcrumb.scss @@ -0,0 +1,45 @@ +// +// Component: Breadcrumb +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Component +// ======================================================================== + +// @mixin hook-breadcrumb(){} + + +// Items +// ======================================================================== + +// @mixin hook-breadcrumb-item(){} + +// @mixin hook-breadcrumb-item-hover(){} + +// @mixin hook-breadcrumb-item-disabled(){} + +// @mixin hook-breadcrumb-item-active(){} + +// @mixin hook-breadcrumb-divider(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-breadcrumb-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-breadcrumb-item(){} +// @mixin hook-inverse-breadcrumb-item-hover(){} +// @mixin hook-inverse-breadcrumb-item-disabled(){} +// @mixin hook-inverse-breadcrumb-item-active(){} + +// @mixin hook-inverse-breadcrumb-divider(){} \ No newline at end of file diff --git a/_sass/uikit/theme/button.scss b/_sass/uikit/theme/button.scss new file mode 100644 index 00000000..6acb5094 --- /dev/null +++ b/_sass/uikit/theme/button.scss @@ -0,0 +1,161 @@ +// +// Component: Button +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$button-line-height: $global-control-height - ($button-border-width * 2) !default; +$button-small-line-height: $global-control-small-height - ($button-border-width * 2) !default; +$button-large-line-height: $global-control-large-height - ($button-border-width * 2) !default; + +$button-font-size: $global-small-font-size !default; +$button-large-font-size: $global-small-font-size !default; + +$button-default-background: transparent !default; +$button-default-hover-background: transparent !default; +$button-default-active-background: transparent !default; + +$button-disabled-background: transparent !default; + +$button-text-color: $global-emphasis-color !default; +$button-text-hover-color: $global-emphasis-color !default; + +// +// New +// + +$button-text-transform: uppercase !default; + +$button-border-width: $global-border-width !default; + +$button-default-border: $global-border !default; +$button-default-hover-border: darken($global-border, 20%) !default; +$button-default-active-border: darken($global-border, 30%) !default; + +$button-disabled-border: $global-border !default; + +$button-text-border-width: $global-border-width !default; +$button-text-border: $button-text-hover-color !default; + + +// Component +// ======================================================================== + + + +// @mixin hook-button-hover(){} + +// @mixin hook-button-focus(){} + +// @mixin hook-button-active(){} + + +// Style modifiers +// ======================================================================== + + + + + + + +// +// Primary +// + + + +// @mixin hook-button-primary-hover(){} + +// @mixin hook-button-primary-active(){} + +// +// Secondary +// + + + +// @mixin hook-button-secondary-hover(){} + +// @mixin hook-button-secondary-active(){} + +// +// Danger +// + + + +// @mixin hook-button-danger-hover(){} + +// @mixin hook-button-danger-active(){} + + +// Disabled +// ======================================================================== + + + + +// Size modifiers +// ======================================================================== + +// @mixin hook-button-small(){} + +// @mixin hook-button-large(){} + + +// Text modifier +// ======================================================================== + + + + + + + + +// Link modifier +// ======================================================================== + +// @mixin hook-button-link(){} + + +// Miscellaneous +// ======================================================================== + + + + +// Inverse +// ======================================================================== + +$inverse-button-default-background: transparent !default; +$inverse-button-default-color: $inverse-global-emphasis-color !default; +$inverse-button-default-hover-background: transparent !default; +$inverse-button-default-hover-color: $inverse-global-emphasis-color !default; +$inverse-button-default-active-background: transparent !default; +$inverse-button-default-active-color: $inverse-global-emphasis-color !default; + +$inverse-button-text-color: $inverse-global-emphasis-color !default; +$inverse-button-text-hover-color: $inverse-global-emphasis-color !default; + + + + + +// @mixin hook-inverse-button-primary(){} +// @mixin hook-inverse-button-primary-hover(){} +// @mixin hook-inverse-button-primary-active(){} + +// @mixin hook-inverse-button-secondary(){} +// @mixin hook-inverse-button-secondary-hover(){} +// @mixin hook-inverse-button-secondary-active(){} + + +// @mixin hook-inverse-button-text-hover(){} +// @mixin hook-inverse-button-text-disabled(){} + +// @mixin hook-inverse-button-link(){} \ No newline at end of file diff --git a/_sass/uikit/theme/card.scss b/_sass/uikit/theme/card.scss new file mode 100644 index 00000000..9e8fe2bc --- /dev/null +++ b/_sass/uikit/theme/card.scss @@ -0,0 +1,125 @@ +// +// Component: Card +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$card-hover-background: $global-background !default; + +$card-default-background: $global-background !default; +$card-default-hover-background: $card-default-background !default; + +$card-primary-hover-background: $card-primary-background !default; + +$card-secondary-hover-background: $card-secondary-background !default; + +// +// New +// + +$card-hover-box-shadow: $global-large-box-shadow !default; + +$card-default-box-shadow: $global-medium-box-shadow !default; +$card-default-hover-box-shadow: $global-large-box-shadow !default; + +$card-default-header-border-width: $global-border-width !default; +$card-default-header-border: $global-border !default; + +$card-default-footer-border-width: $global-border-width !default; +$card-default-footer-border: $global-border !default; + +$card-primary-box-shadow: $global-medium-box-shadow !default; +$card-primary-hover-box-shadow: $global-large-box-shadow !default; + +$card-secondary-box-shadow: $global-medium-box-shadow !default; +$card-secondary-hover-box-shadow: $global-large-box-shadow !default; + + +// Component +// ======================================================================== + + + + +// Sections +// ======================================================================== + +// @mixin hook-card-body(){} + +// @mixin hook-card-header(){} + +// @mixin hook-card-footer(){} + + +// Media +// ======================================================================== + +// @mixin hook-card-media(){} + +// @mixin hook-card-media-top(){} + +// @mixin hook-card-media-bottom(){} + +// @mixin hook-card-media-left(){} + +// @mixin hook-card-media-right(){} + + +// Title +// ======================================================================== + +// @mixin hook-card-title(){} + + +// Badge +// ======================================================================== + +// @mixin hook-card-badge(){} + + +// Hover modifier +// ======================================================================== + + + + +// Style modifiers +// ======================================================================== + + + +// @mixin hook-card-default-title(){} + + + + + + + +// +// Primary +// + + + +// @mixin hook-card-primary-title(){} + + + +// +// Secondary +// + + + +// @mixin hook-card-secondary-title(){} + + + + +// Miscellaneous +// ======================================================================== + diff --git a/_sass/uikit/theme/close.scss b/_sass/uikit/theme/close.scss new file mode 100644 index 00000000..f0762942 --- /dev/null +++ b/_sass/uikit/theme/close.scss @@ -0,0 +1,29 @@ +// +// Component: Close +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Component +// ======================================================================== + + + +// @mixin hook-close-hover(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-close-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-close(){} +// @mixin hook-inverse-close-hover(){} \ No newline at end of file diff --git a/_sass/uikit/theme/column.scss b/_sass/uikit/theme/column.scss new file mode 100644 index 00000000..80be8505 --- /dev/null +++ b/_sass/uikit/theme/column.scss @@ -0,0 +1,14 @@ +// +// Component: Column +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-column-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/comment.scss b/_sass/uikit/theme/comment.scss new file mode 100644 index 00000000..a486c591 --- /dev/null +++ b/_sass/uikit/theme/comment.scss @@ -0,0 +1,69 @@ +// +// Component: Comment +// +// ======================================================================== + + +// Variables +// ======================================================================== + +// +// New +// + +$comment-primary-padding: $global-gutter !default; +$comment-primary-background: $global-muted-background !default; + + +// Component +// ======================================================================== + +// @mixin hook-comment(){} + + +// Sections +// ======================================================================== + +// @mixin hook-comment-body(){} + +// @mixin hook-comment-header(){} + + +// Title +// ======================================================================== + +// @mixin hook-comment-title(){} + + +// Meta +// ======================================================================== + +// @mixin hook-comment-meta(){} + + +// Avatar +// ======================================================================== + +// @mixin hook-comment-avatar(){} + + +// List +// ======================================================================== + +// @mixin hook-comment-list-adjacent(){} + +// @mixin hook-comment-list-sub(){} + +// @mixin hook-comment-list-sub-adjacent(){} + + +// Style modifier +// ======================================================================== + + + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-comment-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/container.scss b/_sass/uikit/theme/container.scss new file mode 100644 index 00000000..ba77ded7 --- /dev/null +++ b/_sass/uikit/theme/container.scss @@ -0,0 +1,14 @@ +// +// Component: Container +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-container-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/countdown.scss b/_sass/uikit/theme/countdown.scss new file mode 100644 index 00000000..01f1761c --- /dev/null +++ b/_sass/uikit/theme/countdown.scss @@ -0,0 +1,53 @@ +// +// Component: Countdown +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Component +// ======================================================================== + +// @mixin hook-countdown(){} + + +// Item +// ======================================================================== + +// @mixin hook-countdown-item(){} + + +// Number +// ======================================================================== + +// @mixin hook-countdown-number(){} + + +// Separator +// ======================================================================== + +// @mixin hook-countdown-separator(){} + + +// Label +// ======================================================================== + +// @mixin hook-countdown-label(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-countdown-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-countdown-item(){} +// @mixin hook-inverse-countdown-number(){} +// @mixin hook-inverse-countdown-separator(){} +// @mixin hook-inverse-countdown-label(){} diff --git a/_sass/uikit/theme/description-list.scss b/_sass/uikit/theme/description-list.scss new file mode 100644 index 00000000..8f836d63 --- /dev/null +++ b/_sass/uikit/theme/description-list.scss @@ -0,0 +1,32 @@ +// +// Component: Description list +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$description-list-term-font-size: $global-small-font-size !default; +$description-list-term-font-weight: normal !default; +$description-list-term-text-transform: uppercase !default; + + +// Component +// ======================================================================== + + + +// @mixin hook-description-list-description(){} + + +// Style modifier +// ======================================================================== + +// @mixin hook-description-list-divider-term(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-description-list-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/divider.scss b/_sass/uikit/theme/divider.scss new file mode 100644 index 00000000..59e2c9cc --- /dev/null +++ b/_sass/uikit/theme/divider.scss @@ -0,0 +1,41 @@ +// +// Component: Divider +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Icon +// ======================================================================== + +// @mixin hook-divider-icon(){} + +// @mixin hook-divider-icon-line(){} + +// @mixin hook-divider-icon-line-left(){} + +// @mixin hook-divider-icon-line-right(){} + + +// Small +// ======================================================================== + +// @mixin hook-divider-small(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-divider-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-divider-icon(){} +// @mixin hook-inverse-divider-icon-line(){} + +// @mixin hook-inverse-divider-small(){} \ No newline at end of file diff --git a/_sass/uikit/theme/dotnav.scss b/_sass/uikit/theme/dotnav.scss new file mode 100644 index 00000000..1bc83597 --- /dev/null +++ b/_sass/uikit/theme/dotnav.scss @@ -0,0 +1,52 @@ +// +// Component: Dotnav +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$dotnav-item-background: transparent !default; + +// +// New +// + +$dotnav-item-border-width: 1px !default; + +$dotnav-item-border: rgba($global-color, 0.4) !default; +$dotnav-item-hover-border: transparent !default; +$dotnav-item-onclick-border: transparent !default; +$dotnav-item-active-border: transparent !default; + + +// Component +// ======================================================================== + +// @mixin hook-dotnav(){} + + + + + + + + + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-dotnav-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-dotnav-item-background: transparent !default; + +// @mixin hook-inverse-dotnav(){} + + + diff --git a/_sass/uikit/theme/drop.scss b/_sass/uikit/theme/drop.scss new file mode 100644 index 00000000..69409848 --- /dev/null +++ b/_sass/uikit/theme/drop.scss @@ -0,0 +1,14 @@ +// +// Component: Drop +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-drop-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/dropdown.scss b/_sass/uikit/theme/dropdown.scss new file mode 100644 index 00000000..c5aa02ef --- /dev/null +++ b/_sass/uikit/theme/dropdown.scss @@ -0,0 +1,45 @@ +// +// Component: Dropdown +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$dropdown-padding: 25px !default; +$dropdown-background: $global-background !default; + +// +// New +// + +$dropdown-nav-font-size: $global-small-font-size !default; + +$dropdown-box-shadow: 0 5px 12px rgba(0,0,0,0.15) !default; + + +// Component +// ======================================================================== + + + + +// Nav +// ======================================================================== + + + +// @mixin hook-dropdown-nav-item(){} + +// @mixin hook-dropdown-nav-item-hover(){} + +// @mixin hook-dropdown-nav-header(){} + +// @mixin hook-dropdown-nav-divider(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-dropdown-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/form-range.scss b/_sass/uikit/theme/form-range.scss new file mode 100644 index 00000000..ca424f30 --- /dev/null +++ b/_sass/uikit/theme/form-range.scss @@ -0,0 +1,45 @@ +// +// Component: Form Range +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$form-range-thumb-background: $global-background !default; + +// +// New +// + +$form-range-thumb-border-width: $global-border-width !default; +$form-range-thumb-border: darken($global-border, 10%) !default; + +$form-range-track-border-radius: 500px !default; + + +// Component +// ======================================================================== + +// @mixin hook-form-range(){} + + +// Thumb +// ======================================================================== + + + + +// Track +// ======================================================================== + + + +// @mixin hook-form-range-track-focus(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-form-range-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/form.scss b/_sass/uikit/theme/form.scss new file mode 100644 index 00000000..ef806958 --- /dev/null +++ b/_sass/uikit/theme/form.scss @@ -0,0 +1,131 @@ +// +// Component: Form +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$form-line-height: $form-height - (2* $form-border-width) !default; + +$form-background: $global-background !default; +$form-focus-background: $global-background !default; + +$form-small-line-height: $form-small-height - (2* $form-border-width) !default; +$form-large-line-height: $form-large-height - (2* $form-border-width) !default; + +$form-radio-background: transparent !default; + +$form-stacked-margin-bottom: 5px !default; + +// +// New +// + +$form-border-width: $global-border-width !default; +$form-border: $global-border !default; + +$form-focus-border: $global-primary-background !default; + +$form-disabled-border: $global-border !default; + +$form-danger-border: $global-danger-background !default; +$form-success-border: $global-success-background !default; + +$form-blank-focus-border: $global-border !default; +$form-blank-focus-border-style: dashed !default; + +$form-radio-border-width: $global-border-width !default; +$form-radio-border: darken($global-border, 10%) !default; + +$form-radio-focus-border: $global-primary-background !default; + +$form-radio-checked-border: transparent !default; + +$form-radio-disabled-border: $global-border !default; + +$form-label-color: $global-emphasis-color !default; +$form-label-font-size: $global-small-font-size !default; + + +// Component +// ======================================================================== + + + +// @mixin hook-form-single-line(){} + +// @mixin hook-form-multi-line(){} + + + + + + +// Style modifiers +// ======================================================================== + + + + + + + + + + +// Radio and checkbox +// ======================================================================== + + + + + + + +// @mixin hook-form-radio-checked-focus(){} + + + + +// Legend +// ======================================================================== + +// @mixin hook-form-legend(){} + + +// Label +// ======================================================================== + + + + +// Layout +// ======================================================================== + +// @mixin hook-form-stacked-label(){} + +// @mixin hook-form-horizontal-label(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-form-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-form-label-color: $inverse-global-emphasis-color !default; + + + + + + + + +// @mixin hook-inverse-form-radio-checked-focus(){} + diff --git a/_sass/uikit/theme/grid.scss b/_sass/uikit/theme/grid.scss new file mode 100644 index 00000000..adc18adb --- /dev/null +++ b/_sass/uikit/theme/grid.scss @@ -0,0 +1,14 @@ +// +// Component: Grid +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-grid-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/heading.scss b/_sass/uikit/theme/heading.scss new file mode 100644 index 00000000..c6409f0b --- /dev/null +++ b/_sass/uikit/theme/heading.scss @@ -0,0 +1,59 @@ +// +// Component: Heading +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Primary +// ======================================================================== + +// @mixin hook-heading-primary(){} + + +// Hero +// ======================================================================== + +// @mixin hook-heading-hero(){} + + +// Divider +// ======================================================================== + +// @mixin hook-heading-divider(){} + + +// Bullet +// ======================================================================== + +// @mixin hook-heading-bullet(){} + + +// Line +// ======================================================================== + +// @mixin hook-heading-line(){} + + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-heading-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-heading-primary(){} + +// @mixin hook-inverse-heading-hero(){} + +// @mixin hook-inverse-heading-divider(){} + +// @mixin hook-inverse-heading-bullet(){} + +// @mixin hook-inverse-heading-line(){} diff --git a/_sass/uikit/theme/icon.scss b/_sass/uikit/theme/icon.scss new file mode 100644 index 00000000..b81c79ab --- /dev/null +++ b/_sass/uikit/theme/icon.scss @@ -0,0 +1,50 @@ +// +// Component: Icon +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Style modifiers +// ======================================================================== + +// +// Link +// + +// @mixin hook-icon-link(){} + +// @mixin hook-icon-link-hover(){} + +// @mixin hook-icon-link-active(){} + +// +// Button +// + + + +// @mixin hook-icon-button-hover(){} + +// @mixin hook-icon-button-active(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-icon-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-icon-link(){} +// @mixin hook-inverse-icon-link-hover(){} +// @mixin hook-inverse-icon-link-active(){} + +// @mixin hook-inverse-icon-button(){} +// @mixin hook-inverse-icon-button-hover(){} +// @mixin hook-inverse-icon-button-active(){} \ No newline at end of file diff --git a/_sass/uikit/theme/iconnav.scss b/_sass/uikit/theme/iconnav.scss new file mode 100644 index 00000000..94b4bbf1 --- /dev/null +++ b/_sass/uikit/theme/iconnav.scss @@ -0,0 +1,34 @@ +// +// Component: Iconnav +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Component +// ======================================================================== + +// @mixin hook-iconnav(){} + +// @mixin hook-iconnav-item(){} + +// @mixin hook-iconnav-item-hover(){} + +// @mixin hook-iconnav-item-active(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-iconnav-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-iconnav-item(){} +// @mixin hook-inverse-iconnav-item-hover(){} +// @mixin hook-inverse-iconnav-item-active(){} \ No newline at end of file diff --git a/_sass/uikit/theme/inverse.scss b/_sass/uikit/theme/inverse.scss new file mode 100644 index 00000000..75a5a3b1 --- /dev/null +++ b/_sass/uikit/theme/inverse.scss @@ -0,0 +1,14 @@ +// +// Component: Inverse +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Component +// ======================================================================== + +// @mixin hook-inverse(){} \ No newline at end of file diff --git a/_sass/uikit/theme/label.scss b/_sass/uikit/theme/label.scss new file mode 100644 index 00000000..ff09ac92 --- /dev/null +++ b/_sass/uikit/theme/label.scss @@ -0,0 +1,43 @@ +// +// Component: Label +// +// ======================================================================== + + +// Variables +// ======================================================================== + +// +// New +// + +$label-border-radius: 2px !default; +$label-text-transform: uppercase !default; + + +// Component +// ======================================================================== + + + + +// Color modifiers +// ======================================================================== + +// @mixin hook-label-success(){} + +// @mixin hook-label-warning(){} + +// @mixin hook-label-danger(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-label-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-label(){} \ No newline at end of file diff --git a/_sass/uikit/theme/lightbox.scss b/_sass/uikit/theme/lightbox.scss new file mode 100644 index 00000000..caabc625 --- /dev/null +++ b/_sass/uikit/theme/lightbox.scss @@ -0,0 +1,48 @@ +// +// Component: Lightbox +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Component +// ======================================================================== + +// @mixin hook-lightbox(){} + + +// Item +// ======================================================================== + +// @mixin hook-lightbox-item(){} + + +// Toolbar +// ======================================================================== + +// @mixin hook-lightbox-toolbar(){} + + +// Toolbar Icon +// ======================================================================== + +// @mixin hook-lightbox-toolbar-icon(){} + +// @mixin hook-lightbox-toolbar-icon-hover(){} + + +// Button +// ======================================================================== + +// @mixin hook-lightbox-button(){} + +// @mixin hook-lightbox-button-hover(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-lightbox-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/link.scss b/_sass/uikit/theme/link.scss new file mode 100644 index 00000000..0658b58a --- /dev/null +++ b/_sass/uikit/theme/link.scss @@ -0,0 +1,55 @@ +// +// Component: Link +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Muted +// ======================================================================== + +// @mixin hook-link-muted(){} + +// @mixin hook-link-muted-hover(){} + + +// Text +// ======================================================================== + +// @mixin hook-link-text(){} + +// @mixin hook-link-text-hover(){} + + +// Heading +// ======================================================================== + +// @mixin hook-link-heading(){} + +// @mixin hook-link-heading-hover(){} + + +// Reset +// ======================================================================== + +// @mixin hook-link-reset(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-link-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-link-muted(){} +// @mixin hook-inverse-link-muted-hover(){} + +// @mixin hook-inverse-link-text-hover(){} + +// @mixin hook-inverse-link-heading-hover(){} diff --git a/_sass/uikit/theme/list.scss b/_sass/uikit/theme/list.scss new file mode 100644 index 00000000..67e3c72c --- /dev/null +++ b/_sass/uikit/theme/list.scss @@ -0,0 +1,39 @@ +// +// Component: List +// +// ======================================================================== + + +// Variables +// ======================================================================== + +// +// New +// + +$list-striped-border-width: $global-border-width !default; +$list-striped-border: $global-border !default; + + +// Style modifiers +// ======================================================================== + +// @mixin hook-list-divider(){} + + + +// @mixin hook-list-bullet(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-list-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-list-divider(){} + +// @mixin hook-inverse-list-bullet(){} \ No newline at end of file diff --git a/_sass/uikit/theme/margin.scss b/_sass/uikit/theme/margin.scss new file mode 100644 index 00000000..a2cdb5ec --- /dev/null +++ b/_sass/uikit/theme/margin.scss @@ -0,0 +1,14 @@ +// +// Component: Margin +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-margin-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/marker.scss b/_sass/uikit/theme/marker.scss new file mode 100644 index 00000000..1e4fd5f3 --- /dev/null +++ b/_sass/uikit/theme/marker.scss @@ -0,0 +1,29 @@ +// +// Component: Marker +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Component +// ======================================================================== + + + +// @mixin hook-marker-hover(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-marker-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-marker(){} +// @mixin hook-inverse-marker-hover(){} diff --git a/_sass/uikit/theme/modal.scss b/_sass/uikit/theme/modal.scss new file mode 100644 index 00000000..adc21358 --- /dev/null +++ b/_sass/uikit/theme/modal.scss @@ -0,0 +1,84 @@ +// +// Component: Modal +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$modal-header-background: $modal-dialog-background !default; +$modal-footer-background: $modal-dialog-background !default; + +// +// New +// + +$modal-header-border-width: $global-border-width !default; +$modal-header-border: $global-border !default; + +$modal-footer-border-width: $global-border-width !default; +$modal-footer-border: $global-border !default; + +$modal-close-full-padding: $global-margin !default; +$modal-close-full-background: $modal-dialog-background !default; + + +// Component +// ======================================================================== + +// @mixin hook-modal(){} + + +// Dialog +// ======================================================================== + +// @mixin hook-modal-dialog(){} + + +// Full +// ======================================================================== + +// @mixin hook-modal-full(){} + + +// Sections +// ======================================================================== + + + +// @mixin hook-modal-body(){} + + + + +// Title +// ======================================================================== + +// @mixin hook-modal-title(){} + + +// Close +// ======================================================================== + +// @mixin hook-modal-close(){} + +// @mixin hook-modal-close-hover(){} + +// @mixin hook-modal-close-default(){} + +// @mixin hook-modal-close-default-hover(){} + +// @mixin hook-modal-close-outside(){} + +// @mixin hook-modal-close-outside-hover(){} + + + +// @mixin hook-modal-close-full-hover(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-modal-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/nav.scss b/_sass/uikit/theme/nav.scss new file mode 100644 index 00000000..31384982 --- /dev/null +++ b/_sass/uikit/theme/nav.scss @@ -0,0 +1,94 @@ +// +// Component: Nav +// +// ======================================================================== + + +// Variables +// ======================================================================== + +// +// New +// + +$nav-default-font-size: $global-small-font-size !default; + + +// Sublists +// ======================================================================== + +// @mixin hook-nav-sub(){} + + +// Parent icon modifier +// ======================================================================== + +// @mixin hook-nav-parent-icon(){} + + +// Header +// ======================================================================== + +// @mixin hook-nav-header(){} + + +// Divider +// ======================================================================== + +// @mixin hook-nav-divider(){} + + +// Default style modifier +// ======================================================================== + + + +// @mixin hook-nav-default-item(){} + +// @mixin hook-nav-default-item-hover(){} + +// @mixin hook-nav-default-item-active(){} + +// @mixin hook-nav-default-header(){} + +// @mixin hook-nav-default-divider(){} + + +// Primary style modifier +// ======================================================================== + +// @mixin hook-nav-primary(){} + +// @mixin hook-nav-primary-item(){} + +// @mixin hook-nav-primary-item-hover(){} + +// @mixin hook-nav-primary-item-active(){} + +// @mixin hook-nav-primary-header(){} + +// @mixin hook-nav-primary-divider(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-nav-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-nav-parent-icon(){} + +// @mixin hook-inverse-nav-default-item(){} +// @mixin hook-inverse-nav-default-item-hover(){} +// @mixin hook-inverse-nav-default-item-active(){} +// @mixin hook-inverse-nav-default-header(){} +// @mixin hook-inverse-nav-default-divider(){} + +// @mixin hook-inverse-nav-primary-item(){} +// @mixin hook-inverse-nav-primary-item-hover(){} +// @mixin hook-inverse-nav-primary-item-active(){} +// @mixin hook-inverse-nav-primary-header(){} +// @mixin hook-inverse-nav-primary-divider(){} \ No newline at end of file diff --git a/_sass/uikit/theme/navbar.scss b/_sass/uikit/theme/navbar.scss new file mode 100644 index 00000000..2a6f237f --- /dev/null +++ b/_sass/uikit/theme/navbar.scss @@ -0,0 +1,136 @@ +// +// Component: Navbar +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$navbar-nav-item-font-size: $global-small-font-size !default; + +$navbar-dropdown-margin: 15px !default; +$navbar-dropdown-padding: 25px !default; +$navbar-dropdown-background: $global-background !default; +$navbar-dropdown-grid-gutter-horizontal: ($navbar-dropdown-padding * 2) !default; + +// +// New +// + +$navbar-nav-item-text-transform: uppercase !default; + +$navbar-dropdown-nav-font-size: $global-small-font-size !default; + +$navbar-dropdown-box-shadow: 0 5px 12px rgba(0,0,0,0.15) !default; + +$navbar-dropbar-box-shadow: 0 5px 7px rgba(0, 0, 0, 0.05) !default; + +$navbar-dropdown-grid-divider-border-width: $global-border-width !default; +$navbar-dropdown-grid-divider-border: $navbar-dropdown-nav-divider-border !default; + + +// Component +// ======================================================================== + +// @mixin hook-navbar(){} + + +// Container +// ======================================================================== + +// @mixin hook-navbar-container(){} + + +// Nav +// ======================================================================== + + + +// @mixin hook-navbar-nav-item-hover(){} + +// @mixin hook-navbar-nav-item-onclick(){} + +// @mixin hook-navbar-nav-item-active(){} + + +// Item +// ======================================================================== + +// @mixin hook-navbar-item(){} + + +// Toggle +// ======================================================================== + +// @mixin hook-navbar-toggle(){} + +// @mixin hook-navbar-toggle-hover(){} + +// @mixin hook-navbar-toggle-icon(){} + +// @mixin hook-navbar-toggle-icon-hover(){} + + +// Subtitle +// ======================================================================== + +// @mixin hook-navbar-subtitle(){} + + +// Style modifiers +// ======================================================================== + +// @mixin hook-navbar-transparent(){} + +// @mixin hook-navbar-sticky(){} + + +// Dropdown +// ======================================================================== + + + + + + +// Dropdown nav +// ======================================================================== + + + +// @mixin hook-navbar-dropdown-nav-item(){} + +// @mixin hook-navbar-dropdown-nav-item-hover(){} + +// @mixin hook-navbar-dropdown-nav-header(){} + +// @mixin hook-navbar-dropdown-nav-divider(){} + + +// Dropbar +// ======================================================================== + +// @mixin hook-navbar-dropbar(){} + + + + +// Miscellaneous +// ======================================================================== + + + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-navbar-nav-item(){} +// @mixin hook-inverse-navbar-nav-item-hover(){} +// @mixin hook-inverse-navbar-nav-item-onclick(){} +// @mixin hook-inverse-navbar-nav-item-active(){} + +// @mixin hook-inverse-navbar-item(){} + +// @mixin hook-inverse-navbar-toggle(){} +// @mixin hook-inverse-navbar-toggle-hover(){} \ No newline at end of file diff --git a/_sass/uikit/theme/notification.scss b/_sass/uikit/theme/notification.scss new file mode 100644 index 00000000..57d5b553 --- /dev/null +++ b/_sass/uikit/theme/notification.scss @@ -0,0 +1,44 @@ +// +// Component: Notification +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Component +// ======================================================================== + +// @mixin hook-notification(){} + + +// Message +// ======================================================================== + +// @mixin hook-notification-message(){} + + +// Close +// ======================================================================== + +// @mixin hook-notification-close(){} + + +// Style modifiers +// ======================================================================== + +// @mixin hook-notification-primary(){} + +// @mixin hook-notification-success(){} + +// @mixin hook-notification-warning(){} + +// @mixin hook-notification-danger(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-notification-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/offcanvas.scss b/_sass/uikit/theme/offcanvas.scss new file mode 100644 index 00000000..283078ef --- /dev/null +++ b/_sass/uikit/theme/offcanvas.scss @@ -0,0 +1,32 @@ +// +// Component: Off-canvas +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Bar +// ======================================================================== + +// @mixin hook-offcanvas-bar(){} + + +// Close +// ======================================================================== + +// @mixin hook-offcanvas-close(){} + + +// Overlay +// ======================================================================== + +// @mixin hook-offcanvas-overlay(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-offcanvas-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/overlay.scss b/_sass/uikit/theme/overlay.scss new file mode 100644 index 00000000..68cda452 --- /dev/null +++ b/_sass/uikit/theme/overlay.scss @@ -0,0 +1,33 @@ +// +// Component: Overlay +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Component +// ======================================================================== + +// @mixin hook-overlay(){} + +// Icon +// ======================================================================== + +// @mixin hook-overlay-icon(){} + + +// Style modifiers +// ======================================================================== + +// @mixin hook-overlay-default(){} + +// @mixin hook-overlay-primary(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-overlay-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/padding.scss b/_sass/uikit/theme/padding.scss new file mode 100644 index 00000000..f0737b87 --- /dev/null +++ b/_sass/uikit/theme/padding.scss @@ -0,0 +1,14 @@ +// +// Component: Padding +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-padding-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/pagination.scss b/_sass/uikit/theme/pagination.scss new file mode 100644 index 00000000..a777e0c9 --- /dev/null +++ b/_sass/uikit/theme/pagination.scss @@ -0,0 +1,41 @@ +// +// Component: Pagination +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Component +// ======================================================================== + +// @mixin hook-pagination(){} + + +// Items +// ======================================================================== + + + +// @mixin hook-pagination-item-hover(){} + +// @mixin hook-pagination-item-active(){} + +// @mixin hook-pagination-item-disabled(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-pagination-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-pagination-item(){} +// @mixin hook-inverse-pagination-item-hover(){} +// @mixin hook-inverse-pagination-item-active(){} +// @mixin hook-inverse-pagination-item-disabled(){} \ No newline at end of file diff --git a/_sass/uikit/theme/placeholder.scss b/_sass/uikit/theme/placeholder.scss new file mode 100644 index 00000000..4ab662cb --- /dev/null +++ b/_sass/uikit/theme/placeholder.scss @@ -0,0 +1,29 @@ +// +// Component: Placeholder +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$placeholder-background: transparent !default; + +// +// New +// + +$placeholder-border-width: $global-border-width !default; +$placeholder-border: $global-border !default; + + +// Component +// ======================================================================== + + + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-placeholder-misc(){} diff --git a/_sass/uikit/theme/position.scss b/_sass/uikit/theme/position.scss new file mode 100644 index 00000000..fc695208 --- /dev/null +++ b/_sass/uikit/theme/position.scss @@ -0,0 +1,14 @@ +// +// Component: Position +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-position-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/progress.scss b/_sass/uikit/theme/progress.scss new file mode 100644 index 00000000..9ca100a3 --- /dev/null +++ b/_sass/uikit/theme/progress.scss @@ -0,0 +1,24 @@ +// +// Component: Progress +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$progress-border-radius: 500px !default; + + +// Component +// ======================================================================== + + + +// @mixin hook-progress-bar(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-progress-misc(){} diff --git a/_sass/uikit/theme/search.scss b/_sass/uikit/theme/search.scss new file mode 100644 index 00000000..f9e710e2 --- /dev/null +++ b/_sass/uikit/theme/search.scss @@ -0,0 +1,73 @@ +// +// Component: Search +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$search-default-background: transparent !default; + +// +// New +// + +$search-default-border-width: $global-border-width !default; +$search-default-border: $global-border !default; + + +// Component +// ======================================================================== + +// @mixin hook-search-input(){} + + +// Default modifiers +// ======================================================================== + + + + +// Navbar modifiers +// ======================================================================== + +// @mixin hook-search-navbar-input(){} + +// @mixin hook-search-default-input-focus(){} + + +// Large modifiers +// ======================================================================== + +// @mixin hook-search-large-input(){} + + +// Toggle +// ======================================================================== + +// @mixin hook-search-toggle(){} + +// @mixin hook-search-toggle-hover(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-search-misc(){} + + +// Inverse +// ======================================================================== + +$inverse-search-default-background: transparent !default; + + +// @mixin hook-inverse-search-default-input-focus(){} + +// @mixin hook-inverse-search-navbar-input(){} + +// @mixin hook-inverse-search-large-input(){} + +// @mixin hook-inverse-search-toggle(){} +// @mixin hook-inverse-search-toggle-hover(){} \ No newline at end of file diff --git a/_sass/uikit/theme/section.scss b/_sass/uikit/theme/section.scss new file mode 100644 index 00000000..6d7f761b --- /dev/null +++ b/_sass/uikit/theme/section.scss @@ -0,0 +1,32 @@ +// +// Component: Section +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Component +// ======================================================================== + +// @mixin hook-section(){} + + +// Style modifiers +// ======================================================================== + +// @mixin hook-section-default(){} + +// @mixin hook-section-muted(){} + +// @mixin hook-section-primary(){} + +// @mixin hook-section-secondary(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-section-misc(){} diff --git a/_sass/uikit/theme/slidenav.scss b/_sass/uikit/theme/slidenav.scss new file mode 100644 index 00000000..c1654e77 --- /dev/null +++ b/_sass/uikit/theme/slidenav.scss @@ -0,0 +1,52 @@ +// +// Component: Slidenav +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Component +// ======================================================================== + + + +// @mixin hook-slidenav-hover(){} + +// @mixin hook-slidenav-active(){} + + +// Icon modifier +// ======================================================================== + +// @mixin hook-slidenav-previous(){} + +// @mixin hook-slidenav-next(){} + + +// Size modifier +// ======================================================================== + +// @mixin hook-slidenav-large(){} + + +// Container +// ======================================================================== + +// @mixin hook-slidenav-container(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-icon-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-slidenav(){} +// @mixin hook-inverse-slidenav-hover(){} +// @mixin hook-inverse-slidenav-active(){} \ No newline at end of file diff --git a/_sass/uikit/theme/sortable.scss b/_sass/uikit/theme/sortable.scss new file mode 100644 index 00000000..3ab18c3d --- /dev/null +++ b/_sass/uikit/theme/sortable.scss @@ -0,0 +1,38 @@ +// +// Component: Sortable +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Component +// ======================================================================== + +// @mixin hook-sortable(){} + + +// Drag +// ======================================================================== + +// @mixin hook-sortable-drag(){} + + +// Placeholder +// ======================================================================== + +// @mixin hook-sortable-placeholder(){} + + +// Empty +// ======================================================================== + +// @mixin hook-sortable-empty(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-sortable-misc(){} diff --git a/_sass/uikit/theme/spinner.scss b/_sass/uikit/theme/spinner.scss new file mode 100644 index 00000000..d70e10fa --- /dev/null +++ b/_sass/uikit/theme/spinner.scss @@ -0,0 +1,14 @@ +// +// Component: Spinner +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-spinner-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/sticky.scss b/_sass/uikit/theme/sticky.scss new file mode 100644 index 00000000..94e5ee69 --- /dev/null +++ b/_sass/uikit/theme/sticky.scss @@ -0,0 +1,14 @@ +// +// Component: Sticky +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-sticky-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/subnav.scss b/_sass/uikit/theme/subnav.scss new file mode 100644 index 00000000..f4d1c7fd --- /dev/null +++ b/_sass/uikit/theme/subnav.scss @@ -0,0 +1,74 @@ +// +// Component: Subnav +// +// ======================================================================== + + +// Variables +// ======================================================================== + +// +// New +// + +$subnav-item-font-size: $global-small-font-size !default; +$subnav-item-text-transform: uppercase !default; + + +// Component +// ======================================================================== + +// @mixin hook-subnav(){} + + + +// @mixin hook-subnav-item-hover(){} + +// @mixin hook-subnav-item-active(){} + + +// Divider modifier +// ======================================================================== + +// @mixin hook-subnav-divider(){} + + +// Pill modifier +// ======================================================================== + +// @mixin hook-subnav-pill-item(){} + +// @mixin hook-subnav-pill-item-hover(){} + +// @mixin hook-subnav-pill-item-onclick(){} + +// @mixin hook-subnav-pill-item-active(){} + + +// Disabled +// ======================================================================== + +// @mixin hook-subnav-item-disabled(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-subnav-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-subnav-item(){} +// @mixin hook-inverse-subnav-item-hover(){} +// @mixin hook-inverse-subnav-item-active(){} + +// @mixin hook-inverse-subnav-divider(){} + +// @mixin hook-inverse-subnav-pill-item(){} +// @mixin hook-inverse-subnav-pill-item-hover(){} +// @mixin hook-inverse-subnav-pill-item-onclick(){} +// @mixin hook-inverse-subnav-pill-item-active(){} + +// @mixin hook-inverse-subnav-item-disabled(){} diff --git a/_sass/uikit/theme/tab.scss b/_sass/uikit/theme/tab.scss new file mode 100644 index 00000000..51c4ba28 --- /dev/null +++ b/_sass/uikit/theme/tab.scss @@ -0,0 +1,74 @@ +// +// Component: Tab +// +// ======================================================================== + + +// Variables +// ======================================================================== + +// +// New +// + +$tab-border-width: $global-border-width !default; +$tab-border: $global-border !default; + +$tab-item-border-width: $global-border-width !default; +$tab-item-font-size: $global-small-font-size !default; +$tab-item-text-transform: uppercase !default; + +$tab-item-active-border: $global-primary-background !default; + + +// Component +// ======================================================================== + + + + +// Items +// ======================================================================== + + + +// @mixin hook-tab-item-hover(){} + + + +// @mixin hook-tab-item-disabled(){} + + +// Position modifiers +// ======================================================================== + + + + + + + + + + + + + + +// Miscellaneous +// ======================================================================== + + + + +// Inverse +// ======================================================================== + +$inverse-tab-border: $inverse-global-border !default; + + + +// @mixin hook-inverse-tab-item(){} +// @mixin hook-inverse-tab-item-hover(){} + +// @mixin hook-inverse-tab-item-disabled(){} \ No newline at end of file diff --git a/_sass/uikit/theme/table.scss b/_sass/uikit/theme/table.scss new file mode 100644 index 00000000..d6a66079 --- /dev/null +++ b/_sass/uikit/theme/table.scss @@ -0,0 +1,68 @@ +// +// Component: Table +// +// ======================================================================== + + +// Variables +// ======================================================================== + +$table-header-cell-font-size: $global-small-font-size !default; +$table-header-cell-font-weight: normal !default; +$table-header-cell-color: $global-muted-color !default; + +// +// New +// + +$table-striped-border-width: $global-border-width !default; +$table-striped-border: $global-border !default; + + +// Component +// ======================================================================== + + + +// @mixin hook-table-cell(){} + +// @mixin hook-table-footer(){} + +// @mixin hook-table-caption(){} + +// @mixin hook-table-row-active(){} + + +// Style modifiers +// ======================================================================== + +// @mixin hook-table-divider(){} + + + +// @mixin hook-table-hover(){} + + +// Size modifier +// ======================================================================== + +// @mixin hook-table-small(){} + +// @mixin hook-table-large(){} + + +// Miscellaneous +// ======================================================================== + + + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-table-header-cell(){} +// @mixin hook-inverse-table-caption(){} +// @mixin hook-inverse-table-row-active(){} +// @mixin hook-inverse-table-divider(){} + +// @mixin hook-inverse-table-hover(){} \ No newline at end of file diff --git a/_sass/uikit/theme/text.scss b/_sass/uikit/theme/text.scss new file mode 100644 index 00000000..b6e35c43 --- /dev/null +++ b/_sass/uikit/theme/text.scss @@ -0,0 +1,50 @@ +// +// Component: Text +// +// ======================================================================== + + +// Variables +// ======================================================================== + +// +// New +// + +$text-meta-link-color: $text-meta-color !default; +$text-meta-link-hover-color: $global-color !default; + + +// Style modifiers +// ======================================================================== + +// @mixin hook-text-lead(){} + + + + +// Size modifiers +// ======================================================================== + +// @mixin hook-text-small(){} + +// @mixin hook-text-large(){} + + +// Background modifier +// ======================================================================== + +// @mixin hook-text-background(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-text-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-text-lead(){} +// @mixin hook-inverse-text-meta(){} diff --git a/_sass/uikit/theme/thumbnav.scss b/_sass/uikit/theme/thumbnav.scss new file mode 100644 index 00000000..7f26c38a --- /dev/null +++ b/_sass/uikit/theme/thumbnav.scss @@ -0,0 +1,42 @@ +// +// Component: Thumbnav +// +// ======================================================================== + + +// Variables +// ======================================================================== + +// +// New +// + +$thumbnav-item-background: rgba($global-background, 0.4) !default; +$thumbnav-item-hover-background: transparent !default; +$thumbnav-item-active-background: transparent !default; + + +// Component +// ======================================================================== + +// @mixin hook-thumbnav(){} + + + + + + + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-thumbnav-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-thumbnav-item(){} +// @mixin hook-inverse-thumbnav-item-hover(){} +// @mixin hook-inverse-thumbnav-item-active(){} \ No newline at end of file diff --git a/_sass/uikit/theme/tile.scss b/_sass/uikit/theme/tile.scss new file mode 100644 index 00000000..2d043a63 --- /dev/null +++ b/_sass/uikit/theme/tile.scss @@ -0,0 +1,32 @@ +// +// Component: Tile +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Component +// ======================================================================== + +// @mixin hook-tile(){} + + +// Style modifiers +// ======================================================================== + +// @mixin hook-tile-default(){} + +// @mixin hook-tile-muted(){} + +// @mixin hook-tile-primary(){} + +// @mixin hook-tile-secondary(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-tile-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/tooltip.scss b/_sass/uikit/theme/tooltip.scss new file mode 100644 index 00000000..5115139c --- /dev/null +++ b/_sass/uikit/theme/tooltip.scss @@ -0,0 +1,20 @@ +// +// Component: Tooltip +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Component +// ======================================================================== + +// @mixin hook-tooltip(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-tooltip-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/totop.scss b/_sass/uikit/theme/totop.scss new file mode 100644 index 00000000..feb7165a --- /dev/null +++ b/_sass/uikit/theme/totop.scss @@ -0,0 +1,32 @@ +// +// Component: Totop +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Component +// ======================================================================== + + + +// @mixin hook-totop-hover(){} + +// @mixin hook-totop-active(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-icon-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-totop(){} +// @mixin hook-inverse-totop-hover(){} +// @mixin hook-inverse-totop-active(){} \ No newline at end of file diff --git a/_sass/uikit/theme/transition.scss b/_sass/uikit/theme/transition.scss new file mode 100644 index 00000000..fd7bdede --- /dev/null +++ b/_sass/uikit/theme/transition.scss @@ -0,0 +1,14 @@ +// +// Component: Transition +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-transition-misc(){} \ No newline at end of file diff --git a/_sass/uikit/theme/utility.scss b/_sass/uikit/theme/utility.scss new file mode 100644 index 00000000..ae24e15c --- /dev/null +++ b/_sass/uikit/theme/utility.scss @@ -0,0 +1,57 @@ +// +// Component: Utility +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Panel +// ======================================================================== + +// @mixin hook-panel-scrollable(){} + + +// Box-shadow bottom +// ======================================================================== + +// @mixin hook-box-shadow-bottom(){} + + +// Drop cap +// ======================================================================== + + + + +// Leader +// ======================================================================== + +// @mixin hook-leader(){} + + +// Logo +// ======================================================================== + +// @mixin hook-logo(){} + +// @mixin hook-logo-hover(){} + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-utility-misc(){} + + +// Inverse +// ======================================================================== + +// @mixin hook-inverse-dropcap(){} + +// @mixin hook-inverse-leader(){} + +// @mixin hook-inverse-logo(){} +// @mixin hook-inverse-logo-hover(){} \ No newline at end of file diff --git a/_sass/uikit/theme/variables.scss b/_sass/uikit/theme/variables.scss new file mode 100644 index 00000000..d74b3a99 --- /dev/null +++ b/_sass/uikit/theme/variables.scss @@ -0,0 +1,36 @@ +// +// Component: Variables +// +// ======================================================================== + + +// Global variables +// ======================================================================== + +// +// Typography +// + +// +// Colors +// + +// +// Backgrounds +// + +// +// Borders +// + +// +// Spacings +// + +// +// Controls +// + +// +// Z-index +// \ No newline at end of file diff --git a/_sass/uikit/theme/width.scss b/_sass/uikit/theme/width.scss new file mode 100644 index 00000000..b67a7954 --- /dev/null +++ b/_sass/uikit/theme/width.scss @@ -0,0 +1,14 @@ +// +// Component: Width +// +// ======================================================================== + + +// Variables +// ======================================================================== + + +// Miscellaneous +// ======================================================================== + +// @mixin hook-width-misc(){} \ No newline at end of file diff --git a/_sass/uikit/uikit-theme.scss b/_sass/uikit/uikit-theme.scss new file mode 100644 index 00000000..13dbd022 --- /dev/null +++ b/_sass/uikit/uikit-theme.scss @@ -0,0 +1,9 @@ +// +// Theme +// + +@import "theme/_import.scss"; + +@import "components/_import.scss"; + + diff --git a/_sass/uikit/uikit.scss b/_sass/uikit/uikit.scss new file mode 100644 index 00000000..66248231 --- /dev/null +++ b/_sass/uikit/uikit.scss @@ -0,0 +1,5 @@ +// +// Core +// + +@import "components/_import.scss"; \ No newline at end of file diff --git a/_sass/uikit/variables-theme.scss b/_sass/uikit/variables-theme.scss new file mode 100644 index 00000000..8aa5a9c4 --- /dev/null +++ b/_sass/uikit/variables-theme.scss @@ -0,0 +1,1093 @@ +$global-margin: 20px !default; +$accordion-item-margin-top: $global-margin !default; +$global-medium-font-size: 1.25rem !default; +$accordion-title-font-size: $global-medium-font-size !default; +$accordion-title-line-height: 1.4 !default; +$global-emphasis-color: #333 !default; +$accordion-title-color: $global-emphasis-color !default; +$global-color: #666 !default; +$accordion-title-hover-color: $global-color !default; +$accordion-content-margin-top: $global-margin !default; +$global-inverse-color: #fff !default; +$inverse-global-emphasis-color: $global-inverse-color !default; +$inverse-accordion-title-color: $inverse-global-emphasis-color !default; +$inverse-global-inverse-color: $global-color !default; +$inverse-accordion-title-hover-color: $inverse-global-inverse-color !default; +$global-gutter: 30px !default; +$align-margin-horizontal: $global-gutter !default; +$align-margin-vertical: $global-gutter !default; +$global-medium-gutter: 40px !default; +$align-margin-horizontal-l: $global-medium-gutter !default; +$alert-margin-vertical: $global-margin !default; +$global-small-gutter: 15px !default; +$alert-padding: $global-small-gutter !default; +$alert-padding-right: $alert-padding + 14px !default; +$global-muted-background: #f8f8f8 !default; +$alert-background: $global-muted-background !default; +$alert-color: $global-color !default; +$alert-close-top: $alert-padding + 5px !default; +$alert-close-right: $alert-padding !default; +$global-primary-background: #1e87f0 !default; +$alert-primary-background: lighten(mix(white, $global-primary-background, 40%), 20%) !default; +$alert-primary-color: $global-primary-background !default; +$global-success-background: #32d296 !default; +$alert-success-background: lighten(mix(white, $global-success-background, 40%), 25%) !default; +$alert-success-color: $global-success-background !default; +$global-warning-background: #faa05a !default; +$alert-warning-background: lighten(mix(white, $global-warning-background, 45%), 15%) !default; +$alert-warning-color: $global-warning-background !default; +$global-danger-background: #f0506e !default; +$alert-danger-background: lighten(mix(white, $global-danger-background, 40%), 20%) !default; +$alert-danger-color: $global-danger-background !default; +$global-large-margin: 70px !default; +$article-margin-top: $global-large-margin !default; +$global-xxlarge-font-size: 2.625rem !default; +$article-title-font-size: $global-xxlarge-font-size !default; +$article-title-line-height: 1.2 !default; +$global-small-font-size: 0.875rem !default; +$article-meta-font-size: $global-small-font-size !default; +$article-meta-line-height: 1.4 !default; +$global-muted-color: #999 !default; +$article-meta-color: $global-muted-color !default; +$inverse-global-muted-color: rgba($global-inverse-color, 0.5) !default; +$inverse-article-meta-color: $inverse-global-muted-color !default; +$animation-duration: 0.5s !default; +$animation-fade-duration: 0.8s !default; +$animation-kenburns-duration: 15s !default; +$animation-fast-duration: 0.1s !default; +$animation-slide-small-translate: 10px !default; +$animation-slide-medium-translate: 50px !default; +$global-background: #fff !default; +$background-default-background: $global-background !default; +$background-muted-background: $global-muted-background !default; +$background-primary-background: $global-primary-background !default; +$global-secondary-background: #222 !default; +$background-secondary-background: $global-secondary-background !default; +$badge-size: 22px !default; +$badge-padding-vertical: 0 !default; +$badge-padding-horizontal: 5px !default; +$badge-border-radius: 500px !default; +$badge-background: $global-primary-background !default; +$badge-color: $global-inverse-color !default; +$badge-font-size: $global-small-font-size !default; +$badge-hover-color: $global-inverse-color !default; +$inverse-global-primary-background: $global-inverse-color !default; +$inverse-badge-background: $inverse-global-primary-background !default; +$inverse-badge-color: $inverse-global-inverse-color !default; +$inverse-badge-hover-color: $inverse-global-inverse-color !default; +$base-body-background: $global-background !default; +$global-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !default; +$base-body-font-family: $global-font-family !default; +$base-body-font-weight: normal !default; +$global-font-size: 16px !default; +$base-body-font-size: $global-font-size !default; +$global-line-height: 1.5 !default; +$base-body-line-height: $global-line-height !default; +$base-body-color: $global-color !default; +$global-link-color: #1e87f0 !default; +$base-link-color: $global-link-color !default; +$base-link-text-decoration: none !default; +$global-link-hover-color: #0f6ecd !default; +$base-link-hover-color: $global-link-hover-color !default; +$base-link-hover-text-decoration: underline !default; +$base-strong-font-weight: bolder !default; +$base-code-font-size: $global-small-font-size !default; +$base-code-font-family: Consolas, monaco, monospace !default; +$base-code-color: $global-danger-background !default; +$base-em-color: $global-danger-background !default; +$base-ins-background: #ffd !default; +$base-ins-color: $global-color !default; +$base-mark-background: #ffd !default; +$base-mark-color: $global-color !default; +$base-quote-font-style: italic !default; +$base-small-font-size: 80% !default; +$base-margin-vertical: $global-margin !default; +$base-heading-font-family: $global-font-family !default; +$base-heading-font-weight: normal !default; +$base-heading-color: $global-emphasis-color !default; +$base-heading-text-transform: none !default; +$global-medium-margin: 40px !default; +$base-heading-margin-top: $global-medium-margin !default; +$base-h1-font-size: $global-xxlarge-font-size !default; +$base-h1-line-height: 1.2 !default; +$global-xlarge-font-size: 2rem !default; +$base-h2-font-size: $global-xlarge-font-size !default; +$base-h2-line-height: 1.3 !default; +$global-large-font-size: 1.5rem !default; +$base-h3-font-size: $global-large-font-size !default; +$base-h3-line-height: 1.4 !default; +$base-h4-font-size: $global-medium-font-size !default; +$base-h4-line-height: 1.4 !default; +$base-h5-font-size: $global-font-size !default; +$base-h5-line-height: 1.4 !default; +$base-h6-font-size: $global-small-font-size !default; +$base-h6-line-height: 1.4 !default; +$base-list-padding-left: 30px !default; +$base-hr-margin-vertical: $global-margin !default; +$global-border-width: 1px !default; +$base-hr-border-width: $global-border-width !default; +$global-border: #e5e5e5 !default; +$base-hr-border: $global-border !default; +$base-blockquote-font-size: $global-medium-font-size !default; +$base-blockquote-line-height: 1.5 !default; +$base-blockquote-font-style: italic !default; +$base-blockquote-margin-vertical: $global-margin !default; +$global-small-margin: 10px !default; +$base-blockquote-footer-margin-top: $global-small-margin !default; +$base-blockquote-footer-font-size: $global-small-font-size !default; +$base-blockquote-footer-line-height: 1.5 !default; +$base-pre-font-size: $global-small-font-size !default; +$base-pre-line-height: 1.5 !default; +$base-pre-font-family: $base-code-font-family !default; +$base-pre-color: $global-color !default; +$base-selection-background: #39f !default; +$base-selection-color: $global-inverse-color !default; +$inverse-global-color: rgba($global-inverse-color, 0.7) !default; +$inverse-base-color: $inverse-global-color !default; +$inverse-base-link-color: $inverse-global-emphasis-color !default; +$inverse-base-link-hover-color: $inverse-global-emphasis-color !default; +$inverse-base-code-color: $inverse-global-color !default; +$inverse-base-em-color: $inverse-global-emphasis-color !default; +$inverse-base-heading-color: $inverse-global-emphasis-color !default; +$inverse-global-border: rgba($global-inverse-color, 0.2) !default; +$inverse-base-hr-border: $inverse-global-border !default; +$breadcrumb-item-font-size: $global-small-font-size !default; +$breadcrumb-item-color: $global-muted-color !default; +$breadcrumb-item-hover-color: $global-color !default; +$breadcrumb-item-hover-text-decoration: none !default; +$breadcrumb-item-active-color: $global-color !default; +$breadcrumb-divider: "/" !default; +$breadcrumb-divider-margin-horizontal: 20px !default; +$breadcrumb-divider-color: $global-muted-color !default; +$inverse-breadcrumb-item-color: $inverse-global-muted-color !default; +$inverse-breadcrumb-item-hover-color: $inverse-global-color !default; +$inverse-breadcrumb-item-active-color: $inverse-global-color !default; +$inverse-breadcrumb-divider-color: $inverse-global-muted-color !default; +$global-control-height: 40px !default; +$button-border-width: $global-border-width !default; +$button-line-height: $global-control-height - ($button-border-width * 2) !default; +$global-control-small-height: 30px !default; +$button-small-line-height: $global-control-small-height - ($button-border-width * 2) !default; +$global-control-large-height: 55px !default; +$button-large-line-height: $global-control-large-height - ($button-border-width * 2) !default; +$button-font-size: $global-small-font-size !default; +$button-small-font-size: $global-small-font-size !default; +$button-large-font-size: $global-small-font-size !default; +$button-padding-horizontal: $global-gutter !default; +$button-small-padding-horizontal: $global-small-gutter !default; +$button-large-padding-horizontal: $global-medium-gutter !default; +$button-default-background: transparent !default; +$button-default-color: $global-emphasis-color !default; +$button-default-hover-background: transparent !default; +$button-default-hover-color: $global-emphasis-color !default; +$button-default-active-background: transparent !default; +$button-default-active-color: $global-emphasis-color !default; +$button-primary-background: $global-primary-background !default; +$button-primary-color: $global-inverse-color !default; +$button-primary-hover-background: darken($button-primary-background, 5%) !default; +$button-primary-hover-color: $global-inverse-color !default; +$button-primary-active-background: darken($button-primary-background, 10%) !default; +$button-primary-active-color: $global-inverse-color !default; +$button-secondary-background: $global-secondary-background !default; +$button-secondary-color: $global-inverse-color !default; +$button-secondary-hover-background: darken($button-secondary-background, 5%) !default; +$button-secondary-hover-color: $global-inverse-color !default; +$button-secondary-active-background: darken($button-secondary-background, 10%) !default; +$button-secondary-active-color: $global-inverse-color !default; +$button-danger-background: $global-danger-background !default; +$button-danger-color: $global-inverse-color !default; +$button-danger-hover-background: darken($button-danger-background, 5%) !default; +$button-danger-hover-color: $global-inverse-color !default; +$button-danger-active-background: darken($button-danger-background, 10%) !default; +$button-danger-active-color: $global-inverse-color !default; +$button-disabled-background: transparent !default; +$button-disabled-color: $global-muted-color !default; +$button-text-line-height: $global-line-height !default; +$button-text-color: $global-emphasis-color !default; +$button-text-hover-color: $global-emphasis-color !default; +$button-text-disabled-color: $global-muted-color !default; +$button-link-line-height: $global-line-height !default; +$button-link-color: $global-link-color !default; +$button-link-hover-color: $global-link-hover-color !default; +$button-link-hover-text-decoration: underline !default; +$button-link-disabled-color: $global-muted-color !default; +$inverse-button-default-background: transparent !default; +$inverse-button-default-color: $inverse-global-emphasis-color !default; +$inverse-button-default-hover-background: transparent !default; +$inverse-button-default-hover-color: $inverse-global-emphasis-color !default; +$inverse-button-default-active-background: transparent !default; +$inverse-button-default-active-color: $inverse-global-emphasis-color !default; +$inverse-button-primary-background: $inverse-global-primary-background !default; +$inverse-button-primary-color: $inverse-global-inverse-color !default; +$inverse-button-primary-hover-background: darken($inverse-button-primary-background, 5%) !default; +$inverse-button-primary-hover-color: $inverse-global-inverse-color !default; +$inverse-button-primary-active-background: darken($inverse-button-primary-background, 10%) !default; +$inverse-button-primary-active-color: $inverse-global-inverse-color !default; +$inverse-button-secondary-background: $inverse-global-primary-background !default; +$inverse-button-secondary-color: $inverse-global-inverse-color !default; +$inverse-button-secondary-hover-background: darken($inverse-button-secondary-background, 5%) !default; +$inverse-button-secondary-hover-color: $inverse-global-inverse-color !default; +$inverse-button-secondary-active-background: darken($inverse-button-secondary-background, 10%) !default; +$inverse-button-secondary-active-color: $inverse-global-inverse-color !default; +$inverse-button-text-color: $inverse-global-emphasis-color !default; +$inverse-button-text-hover-color: $inverse-global-emphasis-color !default; +$inverse-button-text-disabled-color: $inverse-global-muted-color !default; +$inverse-button-link-color: $inverse-global-muted-color !default; +$inverse-button-link-hover-color: $inverse-global-color !default; +$card-body-padding-horizontal: $global-gutter !default; +$card-body-padding-vertical: $global-gutter !default; +$card-body-padding-horizontal-l: $global-medium-gutter !default; +$card-body-padding-vertical-l: $global-medium-gutter !default; +$card-header-padding-horizontal: $global-gutter !default; +$card-header-padding-vertical: round($global-gutter / 2) !default; +$card-header-padding-horizontal-l: $global-medium-gutter !default; +$card-header-padding-vertical-l: round($global-medium-gutter / 2) !default; +$card-footer-padding-horizontal: $global-gutter !default; +$card-footer-padding-vertical: ($global-gutter / 2) !default; +$card-footer-padding-horizontal-l: $global-medium-gutter !default; +$card-footer-padding-vertical-l: round($global-medium-gutter / 2) !default; +$card-title-font-size: $global-large-font-size !default; +$card-title-line-height: 1.4 !default; +$card-badge-top: $global-gutter !default; +$card-badge-right: $card-badge-top !default; +$card-hover-background: $global-background !default; +$card-default-background: $global-background !default; +$card-default-color: $global-color !default; +$card-default-title-color: $global-emphasis-color !default; +$card-default-hover-background: $card-default-background !default; +$card-primary-background: $global-primary-background !default; +$card-primary-color: $global-inverse-color !default; +$card-primary-title-color: $card-primary-color !default; +$card-primary-hover-background: $card-primary-background !default; +$card-primary-color-mode: light !default; +$card-secondary-background: $global-secondary-background !default; +$card-secondary-color: $global-inverse-color !default; +$card-secondary-title-color: $card-secondary-color !default; +$card-secondary-hover-background: $card-secondary-background !default; +$card-secondary-color-mode: light !default; +$card-small-body-padding-horizontal: $global-margin !default; +$card-small-body-padding-vertical: $global-margin !default; +$card-small-header-padding-horizontal: $global-margin !default; +$card-small-header-padding-vertical: round($global-margin / 1.5) !default; +$card-small-footer-padding-horizontal: $global-margin !default; +$card-small-footer-padding-vertical: round($global-margin / 1.5) !default; +$global-large-gutter: 70px !default; +$card-large-body-padding-horizontal-l: $global-large-gutter !default; +$card-large-body-padding-vertical-l: $global-large-gutter !default; +$card-large-header-padding-horizontal-l: $global-large-gutter !default; +$card-large-header-padding-vertical-l: round($global-large-gutter / 2) !default; +$card-large-footer-padding-horizontal-l: $global-large-gutter !default; +$card-large-footer-padding-vertical-l: round($global-large-gutter / 2) !default; +$close-color: $global-muted-color !default; +$close-hover-color: $global-color !default; +$inverse-close-color: $inverse-global-muted-color !default; +$inverse-close-hover-color: $inverse-global-color !default; +$column-gutter: $global-gutter !default; +$column-gutter-l: $global-medium-gutter !default; +$column-divider-rule-color: $global-border !default; +$column-divider-rule-width: 1px !default; +$inverse-column-divider-rule-color: $inverse-global-border !default; +$comment-header-margin-bottom: $global-margin !default; +$comment-title-font-size: $global-medium-font-size !default; +$comment-title-line-height: 1.4 !default; +$comment-meta-font-size: $global-small-font-size !default; +$comment-meta-line-height: 1.4 !default; +$comment-meta-color: $global-muted-color !default; +$comment-list-margin-top: $global-large-margin !default; +$comment-list-padding-left: 30px !default; +$comment-list-padding-left-m: 100px !default; +$container-max-width: 1200px !default; +$container-small-max-width: 900px !default; +$container-large-max-width: 1600px !default; +$container-padding-horizontal: 15px !default; +$container-padding-horizontal-s: $global-gutter !default; +$container-padding-horizontal-m: $global-medium-gutter !default; +$countdown-item-line-height: 70px !default; +$countdown-number-font-size: 2rem !default; +$countdown-number-font-size-s: 4rem !default; +$countdown-number-font-size-m: 6rem !default; +$countdown-separator-font-size: 1rem !default; +$countdown-separator-font-size-s: 2rem !default; +$countdown-separator-font-size-m: 3rem !default; +$description-list-term-color: $global-emphasis-color !default; +$description-list-term-margin-top: $global-margin !default; +$description-list-divider-term-margin-top: $global-margin !default; +$description-list-divider-term-border-width: $global-border-width !default; +$description-list-divider-term-border: $global-border !default; +$divider-margin-vertical: $global-margin !default; +$divider-icon-width: 50px !default; +$divider-icon-height: 20px !default; +$divider-icon-color: $global-border !default; +$divider-icon-line-top: 50% !default; +$divider-icon-line-width: 100% !default; +$divider-icon-line-border-width: $global-border-width !default; +$divider-icon-line-border: $global-border !default; +$internal-divider-icon-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22none%22%20stroke%3D%22#000%22%20stroke-width%3D%222%22%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%227%22%20%2F%3E%0A%3C%2Fsvg%3E%0A" !default; +$divider-small-width: 100px !default; +$divider-small-border-width: $global-border-width !default; +$divider-small-border: $global-border !default; +$inverse-divider-icon-color: $inverse-global-border !default; +$inverse-divider-icon-line-border: $inverse-global-border !default; +$inverse-divider-small-border: $inverse-global-border !default; +$dotnav-margin-horizontal: 12px !default; +$dotnav-margin-vertical: $dotnav-margin-horizontal !default; +$dotnav-item-width: 10px !default; +$dotnav-item-height: $dotnav-item-width !default; +$dotnav-item-border-radius: 50% !default; +$dotnav-item-background: transparent !default; +$dotnav-item-hover-background: rgba($global-color, 0.6) !default; +$dotnav-item-onclick-background: rgba($global-color, 0.2) !default; +$dotnav-item-active-background: rgba($global-color, 0.6) !default; +$inverse-dotnav-item-background: transparent !default; +$inverse-dotnav-item-hover-background: rgba($inverse-global-color, 0.9) !default; +$inverse-dotnav-item-onclick-background: rgba($inverse-global-color, 0.5) !default; +$inverse-dotnav-item-active-background: rgba($inverse-global-color, 0.9) !default; +$global-z-index: 1000 !default; +$drop-z-index: $global-z-index + 20 !default; +$drop-width: 300px !default; +$drop-margin: $global-margin !default; +$dropdown-z-index: $global-z-index + 20 !default; +$dropdown-min-width: 200px !default; +$dropdown-padding: 25px !default; +$dropdown-background: $global-background !default; +$dropdown-color: $global-color !default; +$dropdown-margin: $global-small-margin !default; +$dropdown-nav-item-color: $global-muted-color !default; +$dropdown-nav-item-hover-color: $global-color !default; +$dropdown-nav-header-color: $global-emphasis-color !default; +$dropdown-nav-divider-border-width: $global-border-width !default; +$dropdown-nav-divider-border: $global-border !default; +$dropdown-nav-sublist-item-color: $global-muted-color !default; +$dropdown-nav-sublist-item-hover-color: $global-color !default; +$form-range-thumb-height: 15px !default; +$form-range-thumb-border-radius: 500px !default; +$form-range-thumb-background: $global-background !default; +$form-range-track-height: 3px !default; +$form-range-track-background: darken($global-muted-background, 5%) !default; +$form-range-track-focus-background: darken($global-muted-background, 15%) !default; +$form-height: $global-control-height !default; +$form-border-width: $global-border-width !default; +$form-line-height: $form-height - (2* $form-border-width) !default; +$form-padding-horizontal: 10px !default; +$form-padding-vertical: 4px !default; +$form-background: $global-background !default; +$form-color: $global-color !default; +$form-focus-background: $global-background !default; +$form-focus-color: $global-color !default; +$form-disabled-background: $global-muted-background !default; +$form-disabled-color: $global-muted-color !default; +$form-placeholder-color: $global-muted-color !default; +$form-small-height: $global-control-small-height !default; +$form-small-padding-horizontal: 8px !default; +$form-small-line-height: $form-small-height - (2* $form-border-width) !default; +$form-small-font-size: $global-small-font-size !default; +$form-large-height: $global-control-large-height !default; +$form-large-padding-horizontal: 12px !default; +$form-large-line-height: $form-large-height - (2* $form-border-width) !default; +$form-large-font-size: $global-medium-font-size !default; +$form-danger-color: $global-danger-background !default; +$form-success-color: $global-success-background !default; +$form-width-xsmall: 50px !default; +$form-width-small: 130px !default; +$form-width-medium: 200px !default; +$form-width-large: 500px !default; +$form-select-padding-right: 20px !default; +$form-select-icon-color: $global-color !default; +$form-select-disabled-icon-color: $global-muted-color !default; +$form-radio-size: 16px !default; +$form-radio-margin-top: -4px !default; +$form-radio-background: transparent !default; +$form-radio-checked-background: $global-primary-background !default; +$form-radio-checked-icon-color: $global-inverse-color !default; +$form-radio-checked-focus-background: darken($global-primary-background, 10%) !default; +$form-radio-disabled-background: $global-muted-background !default; +$form-radio-disabled-icon-color: $global-muted-color !default; +$form-legend-font-size: $global-large-font-size !default; +$form-legend-line-height: 1.4 !default; +$form-stacked-margin-bottom: 5px !default; +$form-horizontal-label-width: 200px !default; +$form-horizontal-label-margin-top: 7px !default; +$form-horizontal-controls-margin-left: 215px !default; +$form-horizontal-controls-text-padding-top: 7px !default; +$form-icon-width: $form-height !default; +$form-icon-font-size: $global-font-size !default; +$form-icon-color: $global-muted-color !default; +$form-icon-hover-color: $global-color !default; +$internal-form-select-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22#000%22%20points%3D%2212%201%209%206%2015%206%22%20%2F%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22#000%22%20points%3D%2212%2013%209%208%2015%208%22%20%2F%3E%0A%3C%2Fsvg%3E%0A" !default; +$internal-form-radio-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22#000%22%20cx%3D%228%22%20cy%3D%228%22%20r%3D%222%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; +$internal-form-checkbox-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2211%22%20viewBox%3D%220%200%2014%2011%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22#000%22%20points%3D%2212%201%205%207.5%202%205%201%205.5%205%2010%2013%201.5%22%20%2F%3E%0A%3C%2Fsvg%3E%0A" !default; +$internal-form-checkbox-indeterminate-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22#000%22%20x%3D%223%22%20y%3D%228%22%20width%3D%2210%22%20height%3D%221%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; +$inverse-global-muted-background: rgba($global-inverse-color, 0.1) !default; +$inverse-form-background: $inverse-global-muted-background !default; +$inverse-form-color: $inverse-global-color !default; +$inverse-form-focus-background: $inverse-global-muted-background !default; +$inverse-form-focus-color: $inverse-global-color !default; +$inverse-form-placeholder-color: $inverse-global-muted-color !default; +$inverse-form-select-icon-color: $inverse-global-color !default; +$inverse-form-radio-background: darken($inverse-global-muted-background, 5%) !default; +$inverse-form-radio-checked-background: $inverse-global-primary-background !default; +$inverse-form-radio-checked-icon-color: $inverse-global-inverse-color !default; +$inverse-form-radio-checked-focus-background: darken($inverse-global-primary-background, 10%) !default; +$grid-gutter-horizontal: $global-gutter !default; +$grid-gutter-vertical: $grid-gutter-horizontal !default; +$grid-gutter-horizontal-l: $global-medium-gutter !default; +$grid-gutter-vertical-l: $grid-gutter-horizontal-l !default; +$grid-small-gutter-horizontal: $global-small-gutter !default; +$grid-small-gutter-vertical: $grid-small-gutter-horizontal !default; +$grid-medium-gutter-horizontal: $global-gutter !default; +$grid-medium-gutter-vertical: $grid-medium-gutter-horizontal !default; +$grid-large-gutter-horizontal: $global-medium-gutter !default; +$grid-large-gutter-vertical: $grid-large-gutter-horizontal !default; +$grid-large-gutter-horizontal-l: $global-large-gutter !default; +$grid-large-gutter-vertical-l: $grid-large-gutter-horizontal-l !default; +$grid-divider-border-width: $global-border-width !default; +$grid-divider-border: $global-border !default; +$inverse-grid-divider-border: $inverse-global-border !default; +$heading-primary-font-size: $global-xxlarge-font-size !default; +$heading-primary-line-height: 1.2 !default; +$heading-primary-font-size-m: 3.75rem !default; +$heading-primary-line-height-m: 1.1 !default; +$heading-hero-font-size: 4rem !default; +$heading-hero-line-height: 1.1 !default; +$heading-hero-font-size-s: 6rem !default; +$heading-hero-line-height-s: 1 !default; +$heading-hero-font-size-m: 8rem !default; +$heading-hero-line-height-m: 1 !default; +$heading-divider-padding-bottom: 10px !default; +$heading-divider-border-width: $global-border-width !default; +$heading-divider-border: $global-border !default; +$heading-bullet-top: unquote('calc(-0.1 * 1em)') !default; +$heading-bullet-height: 0.9em !default; +$heading-bullet-margin-right: 10px !default; +$heading-bullet-border-width: 5px !default; +$heading-bullet-border: $global-border !default; +$heading-line-top: 50% !default; +$heading-line-border-width: $global-border-width !default; +$heading-line-height: $heading-line-border-width !default; +$heading-line-width: 2000px !default; +$heading-line-border: $global-border !default; +$heading-line-margin-horizontal: 0.6em !default; +$inverse-heading-divider-border: $inverse-global-border !default; +$inverse-heading-bullet-border: $inverse-global-border !default; +$inverse-heading-line-border: $inverse-global-border !default; +$icon-image-size: 20px !default; +$icon-link-color: $global-muted-color !default; +$icon-link-hover-color: $global-color !default; +$icon-link-active-color: darken($global-color, 5%) !default; +$icon-button-size: 36px !default; +$icon-button-border-radius: 500px !default; +$icon-button-background: $global-muted-background !default; +$icon-button-color: $global-muted-color !default; +$icon-button-hover-background: darken($icon-button-background, 5%) !default; +$icon-button-hover-color: $global-color !default; +$icon-button-active-background: darken($icon-button-background, 10%) !default; +$icon-button-active-color: $global-color !default; +$inverse-icon-link-color: $inverse-global-muted-color !default; +$inverse-icon-link-hover-color: $inverse-global-color !default; +$inverse-icon-link-active-color: $inverse-global-color !default; +$inverse-icon-button-background: $inverse-global-muted-background !default; +$inverse-icon-button-color: $inverse-global-muted-color !default; +$inverse-icon-button-hover-background: darken($inverse-icon-button-background, 5%) !default; +$inverse-icon-button-hover-color: $inverse-global-color !default; +$inverse-icon-button-active-background: darken($inverse-icon-button-background, 10%) !default; +$inverse-icon-button-active-color: $inverse-global-color !default; +$iconnav-margin-horizontal: $global-small-margin !default; +$iconnav-margin-vertical: $iconnav-margin-horizontal !default; +$iconnav-item-color: $global-muted-color !default; +$iconnav-item-hover-color: $global-color !default; +$iconnav-item-active-color: $global-color !default; +$inverse-iconnav-item-color: $inverse-global-muted-color !default; +$inverse-iconnav-item-hover-color: $inverse-global-color !default; +$inverse-iconnav-item-active-color: $inverse-global-color !default; +$inverse-global-color-mode: light !default; +$label-padding-vertical: 0 !default; +$label-padding-horizontal: $global-small-margin !default; +$label-background: $global-primary-background !default; +$label-line-height: $global-line-height !default; +$label-font-size: $global-small-font-size !default; +$label-color: $global-inverse-color !default; +$label-success-background: $global-success-background !default; +$label-success-color: $global-inverse-color !default; +$label-warning-background: $global-warning-background !default; +$label-warning-color: $global-inverse-color !default; +$label-danger-background: $global-danger-background !default; +$label-danger-color: $global-inverse-color !default; +$inverse-label-background: $inverse-global-primary-background !default; +$inverse-label-color: $inverse-global-inverse-color !default; +$lightbox-z-index: $global-z-index + 10 !default; +$lightbox-background: #000 !default; +$lightbox-item-color: rgba(255,255,255,0.7) !default; +$lightbox-toolbar-padding-vertical: 10px !default; +$lightbox-toolbar-padding-horizontal: 10px !default; +$lightbox-toolbar-background: rgba(0,0,0,0.3) !default; +$lightbox-toolbar-color: rgba(255,255,255,0.7) !default; +$lightbox-toolbar-icon-padding: 5px !default; +$lightbox-toolbar-icon-color: rgba(255,255,255,0.7) !default; +$lightbox-toolbar-icon-hover-color: #fff !default; +$lightbox-button-size: 50px !default; +$lightbox-button-background: $lightbox-toolbar-background !default; +$lightbox-button-color: rgba(255,255,255,0.7) !default; +$lightbox-button-hover-color: #fff !default; +$link-muted-color: $global-muted-color !default; +$link-muted-hover-color: $global-color !default; +$link-text-hover-color: $global-muted-color !default; +$link-heading-hover-color: $global-primary-background !default; +$link-heading-hover-text-decoration: none !default; +$inverse-link-muted-color: $inverse-global-muted-color !default; +$inverse-link-muted-hover-color: $inverse-global-color !default; +$inverse-link-text-hover-color: $inverse-global-muted-color !default; +$inverse-link-heading-hover-color: $inverse-global-primary-background !default; +$list-margin-top: $global-small-margin !default; +$list-nested-padding-left: $global-gutter !default; +$list-divider-margin-top: $global-small-margin !default; +$list-divider-border-width: $global-border-width !default; +$list-divider-border: $global-border !default; +$list-striped-padding-vertical: $global-small-margin !default; +$list-striped-padding-horizontal: $global-small-margin !default; +$list-striped-background: $global-muted-background !default; +$list-bullet-width: ($global-line-height * 1em) !default; +$list-bullet-height: $list-bullet-width !default; +$list-bullet-margin-right: $global-small-margin !default; +$list-bullet-icon-color: $global-color !default; +$list-large-margin-top: $global-margin !default; +$list-large-divider-margin-top: $global-margin !default; +$list-large-striped-padding-vertical: $global-margin !default; +$list-large-striped-padding-horizontal: $global-small-margin !default; +$internal-list-bullet-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%226%22%20height%3D%226%22%20viewBox%3D%220%200%206%206%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22#000%22%20cx%3D%223%22%20cy%3D%223%22%20r%3D%223%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; +$inverse-list-divider-border: $inverse-global-border !default; +$inverse-list-striped-background: $inverse-global-muted-background !default; +$inverse-list-bullet-icon-color: $inverse-global-color !default; +$margin-margin: $global-margin !default; +$margin-small-margin: $global-small-margin !default; +$margin-medium-margin: $global-medium-margin !default; +$margin-large-margin: $global-medium-margin !default; +$margin-large-margin-l: $global-large-margin !default; +$margin-xlarge-margin: $global-large-margin !default; +$global-xlarge-margin: 140px !default; +$margin-xlarge-margin-l: $global-xlarge-margin !default; +$marker-padding: 5px !default; +$marker-background: $global-secondary-background !default; +$marker-color: $global-inverse-color !default; +$marker-hover-color: $global-inverse-color !default; +$inverse-marker-background: $global-muted-background !default; +$inverse-marker-color: $global-color !default; +$inverse-marker-hover-color: $global-color !default; +$modal-z-index: $global-z-index + 10 !default; +$modal-background: rgba(0,0,0,0.6) !default; +$modal-padding-horizontal: 15px !default; +$modal-padding-horizontal-s: $global-gutter !default; +$modal-padding-horizontal-m: $global-medium-gutter !default; +$modal-padding-vertical: $modal-padding-horizontal !default; +$modal-padding-vertical-s: 50px !default; +$modal-dialog-width: 600px !default; +$modal-dialog-background: $global-background !default; +$modal-container-width: 1200px !default; +$modal-body-padding-horizontal: $global-gutter !default; +$modal-body-padding-vertical: $global-gutter !default; +$modal-header-padding-horizontal: $global-gutter !default; +$modal-header-padding-vertical: ($modal-header-padding-horizontal / 2) !default; +$modal-header-background: $modal-dialog-background !default; +$modal-footer-padding-horizontal: $global-gutter !default; +$modal-footer-padding-vertical: ($modal-footer-padding-horizontal / 2) !default; +$modal-footer-background: $modal-dialog-background !default; +$modal-title-font-size: $global-xlarge-font-size !default; +$modal-title-line-height: 1.3 !default; +$modal-close-position: $global-small-margin !default; +$modal-close-padding: 5px !default; +$modal-close-outside-position: 0 !default; +$modal-close-outside-translate: 100% !default; +$modal-close-outside-color: lighten($global-inverse-color, 20%) !default; +$modal-close-outside-hover-color: $global-inverse-color !default; +$nav-item-padding-vertical: 5px !default; +$nav-item-padding-horizontal: 0 !default; +$nav-sublist-padding-vertical: 5px !default; +$nav-sublist-padding-left: 15px !default; +$nav-sublist-deeper-padding-left: 15px !default; +$nav-sublist-item-padding-vertical: 2px !default; +$nav-parent-icon-width: ($global-line-height * 1em) !default; +$nav-parent-icon-height: $nav-parent-icon-width !default; +$nav-parent-icon-color: $global-color !default; +$nav-header-padding-vertical: $nav-item-padding-vertical !default; +$nav-header-padding-horizontal: $nav-item-padding-horizontal !default; +$nav-header-font-size: $global-small-font-size !default; +$nav-header-text-transform: uppercase !default; +$nav-header-margin-top: $global-margin !default; +$nav-divider-margin-vertical: 5px !default; +$nav-divider-margin-horizontal: 0 !default; +$nav-default-item-color: $global-muted-color !default; +$nav-default-item-hover-color: $global-color !default; +$nav-default-item-active-color: $global-emphasis-color !default; +$nav-default-header-color: $global-emphasis-color !default; +$nav-default-divider-border-width: $global-border-width !default; +$nav-default-divider-border: $global-border !default; +$nav-default-sublist-item-color: $global-muted-color !default; +$nav-default-sublist-item-hover-color: $global-color !default; +$nav-primary-item-font-size: $global-large-font-size !default; +$nav-primary-item-line-height: $global-line-height !default; +$nav-primary-item-color: $global-muted-color !default; +$nav-primary-item-hover-color: $global-color !default; +$nav-primary-item-active-color: $global-emphasis-color !default; +$nav-primary-header-color: $global-emphasis-color !default; +$nav-primary-divider-border-width: $global-border-width !default; +$nav-primary-divider-border: $global-border !default; +$nav-primary-sublist-item-color: $global-muted-color !default; +$nav-primary-sublist-item-hover-color: $global-color !default; +$internal-nav-parent-close-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20viewBox%3D%220%200%2014%2014%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolyline%20fill%3D%22none%22%20stroke%3D%22#000%22%20stroke-width%3D%221.1%22%20points%3D%2210%201%204%207%2010%2013%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; +$internal-nav-parent-open-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20viewBox%3D%220%200%2014%2014%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolyline%20fill%3D%22none%22%20stroke%3D%22#000%22%20stroke-width%3D%221.1%22%20points%3D%221%204%207%2010%2013%204%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; +$inverse-nav-parent-icon-color: $inverse-global-color !default; +$inverse-nav-default-item-color: $inverse-global-muted-color !default; +$inverse-nav-default-item-hover-color: $inverse-global-color !default; +$inverse-nav-default-item-active-color: $inverse-global-emphasis-color !default; +$inverse-nav-default-header-color: $inverse-global-emphasis-color !default; +$inverse-nav-default-divider-border: $inverse-global-border !default; +$inverse-nav-default-sublist-item-color: $inverse-global-muted-color !default; +$inverse-nav-default-sublist-item-hover-color: $inverse-global-color !default; +$inverse-nav-primary-item-color: $inverse-global-muted-color !default; +$inverse-nav-primary-item-hover-color: $inverse-global-color !default; +$inverse-nav-primary-item-active-color: $inverse-global-emphasis-color !default; +$inverse-nav-primary-header-color: $inverse-global-emphasis-color !default; +$inverse-nav-primary-divider-border: $inverse-global-border !default; +$inverse-nav-primary-sublist-item-color: $inverse-global-muted-color !default; +$inverse-nav-primary-sublist-item-hover-color: $inverse-global-color !default; +$navbar-background: $global-muted-background !default; +$navbar-color-mode: none !default; +$navbar-nav-item-height: 80px !default; +$navbar-nav-item-padding-horizontal: 15px !default; +$navbar-nav-item-color: $global-muted-color !default; +$navbar-nav-item-font-size: $global-small-font-size !default; +$navbar-nav-item-font-family: $global-font-family !default; +$navbar-nav-item-hover-color: $global-color !default; +$navbar-nav-item-onclick-color: $global-emphasis-color !default; +$navbar-nav-item-active-color: $global-emphasis-color !default; +$navbar-item-color: $global-color !default; +$navbar-toggle-color: $global-muted-color !default; +$navbar-toggle-hover-color: $global-color !default; +$navbar-subtitle-font-size: $global-small-font-size !default; +$navbar-dropdown-z-index: $global-z-index + 20 !default; +$navbar-dropdown-width: 200px !default; +$navbar-dropdown-margin: 15px !default; +$navbar-dropdown-padding: 25px !default; +$navbar-dropdown-background: $global-background !default; +$navbar-dropdown-color: $global-color !default; +$navbar-dropdown-grid-gutter-horizontal: ($navbar-dropdown-padding * 2) !default; +$navbar-dropdown-grid-gutter-vertical: $navbar-dropdown-grid-gutter-horizontal !default; +$navbar-dropdown-dropbar-margin-top: 0 !default; +$navbar-dropdown-dropbar-margin-bottom: $navbar-dropdown-dropbar-margin-top !default; +$navbar-dropdown-nav-item-color: $global-muted-color !default; +$navbar-dropdown-nav-item-hover-color: $global-color !default; +$navbar-dropdown-nav-item-active-color: $global-emphasis-color !default; +$navbar-dropdown-nav-header-color: $global-emphasis-color !default; +$navbar-dropdown-nav-divider-border-width: $global-border-width !default; +$navbar-dropdown-nav-divider-border: $global-border !default; +$navbar-dropdown-nav-sublist-item-color: $global-muted-color !default; +$navbar-dropdown-nav-sublist-item-hover-color: $global-color !default; +$navbar-dropbar-background: $navbar-dropdown-background !default; +$navbar-dropbar-z-index: $global-z-index - 20 !default; +$inverse-navbar-nav-item-color: $inverse-global-muted-color !default; +$inverse-navbar-nav-item-hover-color: $inverse-global-color !default; +$inverse-navbar-nav-item-onclick-color: $inverse-global-emphasis-color !default; +$inverse-navbar-nav-item-active-color: $inverse-global-emphasis-color !default; +$inverse-navbar-item-color: $inverse-global-color !default; +$inverse-navbar-toggle-color: $inverse-global-muted-color !default; +$inverse-navbar-toggle-hover-color: $inverse-global-color !default; +$notification-position: 10px !default; +$notification-z-index: $global-z-index + 40 !default; +$notification-width: 350px !default; +$notification-message-margin-bottom: 10px !default; +$notification-message-padding: $global-small-gutter !default; +$notification-message-background: $global-muted-background !default; +$notification-message-color: $global-color !default; +$notification-message-font-size: $global-medium-font-size !default; +$notification-message-line-height: 1.4 !default; +$notification-close-top: $notification-message-padding + 5px !default; +$notification-close-right: $notification-message-padding !default; +$notification-message-primary-color: $global-primary-background !default; +$notification-message-success-color: $global-success-background !default; +$notification-message-warning-color: $global-warning-background !default; +$notification-message-danger-color: $global-danger-background !default; +$offcanvas-z-index: $global-z-index !default; +$offcanvas-bar-width: 270px !default; +$offcanvas-bar-padding-vertical: $global-margin !default; +$offcanvas-bar-padding-horizontal: $global-margin !default; +$offcanvas-bar-background: $global-secondary-background !default; +$offcanvas-bar-color-mode: light !default; +$offcanvas-bar-width-m: 350px !default; +$offcanvas-bar-padding-vertical-m: $global-medium-gutter !default; +$offcanvas-bar-padding-horizontal-m: $global-medium-gutter !default; +$offcanvas-close-position: 20px !default; +$offcanvas-close-padding: 5px !default; +$offcanvas-overlay-background: rgba(0,0,0,0.1) !default; +$overlay-padding-horizontal: $global-gutter !default; +$overlay-padding-vertical: $global-gutter !default; +$overlay-default-background: rgba($global-background, 0.8) !default; +$overlay-primary-background: rgba($global-secondary-background, 0.8) !default; +$overlay-primary-color-mode: light !default; +$padding-padding: $global-gutter !default; +$padding-padding-l: $global-medium-gutter !default; +$padding-small-padding: $global-small-gutter !default; +$padding-large-padding: $global-gutter !default; +$padding-large-padding-l: $global-large-gutter !default; +$pagination-margin-horizontal: 20px !default; +$pagination-item-color: $global-muted-color !default; +$pagination-item-hover-color: $global-color !default; +$pagination-item-hover-text-decoration: none !default; +$pagination-item-active-color: $global-color !default; +$pagination-item-disabled-color: $global-muted-color !default; +$inverse-pagination-item-color: $inverse-global-muted-color !default; +$inverse-pagination-item-hover-color: $inverse-global-color !default; +$inverse-pagination-item-active-color: $inverse-global-color !default; +$inverse-pagination-item-disabled-color: $inverse-global-muted-color !default; +$placeholder-margin-vertical: $global-margin !default; +$placeholder-padding-vertical: $global-gutter !default; +$placeholder-padding-horizontal: $global-gutter !default; +$placeholder-background: transparent !default; +$position-small-margin: $global-small-gutter !default; +$position-medium-margin: $global-gutter !default; +$position-large-margin: $global-gutter !default; +$position-large-margin-l: 50px !default; +$progress-height: 15px !default; +$progress-margin-vertical: $global-margin !default; +$progress-background: $global-muted-background !default; +$progress-bar-background: $global-primary-background !default; +$search-color: $global-color !default; +$search-placeholder-color: $global-muted-color !default; +$search-icon-color: $global-muted-color !default; +$search-default-width: 180px !default; +$search-default-height: $global-control-height !default; +$search-default-padding-horizontal: 6px !default; +$search-default-background: transparent !default; +$search-default-focus-background: $search-default-background !default; +$search-default-icon-width: $global-control-height !default; +$search-navbar-width: 400px !default; +$search-navbar-height: 40px !default; +$search-navbar-background: transparent !default; +$search-navbar-font-size: $global-large-font-size !default; +$search-navbar-icon-width: 40px !default; +$search-large-width: 500px !default; +$search-large-height: 80px !default; +$search-large-background: transparent !default; +$search-large-font-size: $global-xxlarge-font-size !default; +$search-large-icon-width: 80px !default; +$search-toggle-color: $global-muted-color !default; +$search-toggle-hover-color: $global-color !default; +$inverse-search-color: $inverse-global-color !default; +$inverse-search-placeholder-color: $inverse-global-muted-color !default; +$inverse-search-icon-color: $inverse-global-muted-color !default; +$inverse-search-default-background: transparent !default; +$inverse-search-default-focus-background: $inverse-search-default-background !default; +$inverse-search-navbar-background: transparent !default; +$inverse-search-large-background: transparent !default; +$inverse-search-toggle-color: $inverse-global-muted-color !default; +$inverse-search-toggle-hover-color: $inverse-global-color !default; +$section-padding-vertical: $global-medium-margin !default; +$section-padding-vertical-m: $global-large-margin !default; +$section-xsmall-padding-vertical: $global-margin !default; +$section-small-padding-vertical: $global-medium-margin !default; +$section-large-padding-vertical: $global-large-margin !default; +$section-large-padding-vertical-m: $global-xlarge-margin !default; +$section-xlarge-padding-vertical: $global-xlarge-margin !default; +$section-xlarge-padding-vertical-m: ($global-large-margin + $global-xlarge-margin) !default; +$section-default-background: $global-background !default; +$section-muted-background: $global-muted-background !default; +$section-primary-background: $global-primary-background !default; +$section-primary-color-mode: light !default; +$section-secondary-background: $global-secondary-background !default; +$section-secondary-color-mode: light !default; +$slidenav-padding-vertical: 5px !default; +$slidenav-padding-horizontal: 10px !default; +$slidenav-color: rgba($global-color, 0.5) !default; +$slidenav-hover-color: rgba($global-color, 0.9) !default; +$slidenav-active-color: rgba($global-color, 0.5) !default; +$slidenav-large-padding-vertical: 10px !default; +$slidenav-large-padding-horizontal: $slidenav-large-padding-vertical !default; +$inverse-slidenav-color: rgba($inverse-global-color, 0.7) !default; +$inverse-slidenav-hover-color: rgba($inverse-global-color, 0.95) !default; +$inverse-slidenav-active-color: rgba($inverse-global-color, 0.7) !default; +$sortable-dragged-z-index: $global-z-index + 50 !default; +$sortable-placeholder-opacity: 0 !default; +$sortable-empty-height: 50px !default; +$spinner-size: 30px !default; +$spinner-stroke-width: 1 !default; +$spinner-radius: floor(($spinner-size - $spinner-stroke-width) / 2) !default; +$spinner-circumference: round(2 * 3.141 * $spinner-radius) !default; +$spinner-duration: 1.4s !default; +$sticky-z-index: $global-z-index - 20 !default; +$sticky-animation-duration: 0.2s !default; +$sticky-reverse-animation-duration: 0.2s !default; +$subnav-margin-horizontal: 20px !default; +$subnav-item-color: $global-muted-color !default; +$subnav-item-hover-color: $global-color !default; +$subnav-item-hover-text-decoration: none !default; +$subnav-item-active-color: $global-emphasis-color !default; +$subnav-divider-margin-horizontal: $subnav-margin-horizontal !default; +$subnav-divider-border-height: 1.5em !default; +$subnav-divider-border-width: $global-border-width !default; +$subnav-divider-border: $global-border !default; +$subnav-pill-item-padding-vertical: 5px !default; +$subnav-pill-item-padding-horizontal: 10px !default; +$subnav-pill-item-background: transparent !default; +$subnav-pill-item-color: $subnav-item-color !default; +$subnav-pill-item-hover-background: $global-muted-background !default; +$subnav-pill-item-hover-color: $global-color !default; +$subnav-pill-item-onclick-background: $subnav-pill-item-hover-background !default; +$subnav-pill-item-onclick-color: $subnav-pill-item-hover-color !default; +$subnav-pill-item-active-background: $global-primary-background !default; +$subnav-pill-item-active-color: $global-inverse-color !default; +$subnav-item-disabled-color: $global-muted-color !default; +$inverse-subnav-item-color: $inverse-global-muted-color !default; +$inverse-subnav-item-hover-color: $inverse-global-color !default; +$inverse-subnav-item-active-color: $inverse-global-emphasis-color !default; +$inverse-subnav-divider-border: $inverse-global-border !default; +$inverse-subnav-pill-item-background: transparent !default; +$inverse-subnav-pill-item-color: $inverse-global-muted-color !default; +$inverse-subnav-pill-item-hover-background: $inverse-global-muted-background !default; +$inverse-subnav-pill-item-hover-color: $inverse-global-color !default; +$inverse-subnav-pill-item-onclick-background: $inverse-subnav-pill-item-hover-background !default; +$inverse-subnav-pill-item-onclick-color: $inverse-subnav-pill-item-hover-color !default; +$inverse-subnav-pill-item-active-background: $inverse-global-primary-background !default; +$inverse-subnav-pill-item-active-color: $inverse-global-inverse-color !default; +$inverse-subnav-item-disabled-color: $inverse-global-muted-color !default; +$tab-margin-horizontal: 20px !default; +$tab-item-padding-horizontal: 10px !default; +$tab-item-padding-vertical: 5px !default; +$tab-item-color: $global-muted-color !default; +$tab-item-hover-color: $global-color !default; +$tab-item-hover-text-decoration: none !default; +$tab-item-active-color: $global-emphasis-color !default; +$tab-item-disabled-color: $global-muted-color !default; +$inverse-tab-item-color: $inverse-global-muted-color !default; +$inverse-tab-item-hover-color: $inverse-global-color !default; +$inverse-tab-item-active-color: $inverse-global-emphasis-color !default; +$inverse-tab-item-disabled-color: $inverse-global-muted-color !default; +$table-margin-vertical: $global-margin !default; +$table-cell-padding-vertical: 16px !default; +$table-cell-padding-horizontal: 12px !default; +$table-header-cell-font-size: $global-small-font-size !default; +$table-header-cell-font-weight: normal !default; +$table-header-cell-color: $global-muted-color !default; +$table-footer-font-size: $global-small-font-size !default; +$table-caption-font-size: $global-small-font-size !default; +$table-caption-color: $global-muted-color !default; +$table-row-active-background: #ffd !default; +$table-divider-border-width: $global-border-width !default; +$table-divider-border: $global-border !default; +$table-striped-row-background: $global-muted-background !default; +$table-hover-row-background: $table-row-active-background !default; +$table-small-cell-padding-vertical: 10px !default; +$table-small-cell-padding-horizontal: 12px !default; +$table-large-cell-padding-vertical: 22px !default; +$table-large-cell-padding-horizontal: 12px !default; +$table-expand-min-width: 150px !default; +$inverse-table-header-cell-color: $inverse-global-color !default; +$inverse-table-caption-color: $inverse-global-muted-color !default; +$inverse-table-row-active-background: fade-out($inverse-global-muted-background, 0.02) !default; +$inverse-table-divider-border: $inverse-global-border !default; +$inverse-table-striped-row-background: $inverse-global-muted-background !default; +$inverse-table-hover-row-background: $inverse-table-row-active-background !default; +$text-lead-font-size: $global-large-font-size !default; +$text-lead-line-height: 1.5 !default; +$text-lead-color: $global-emphasis-color !default; +$text-meta-font-size: $global-small-font-size !default; +$text-meta-line-height: 1.4 !default; +$text-meta-color: $global-muted-color !default; +$text-small-font-size: $global-small-font-size !default; +$text-small-line-height: 1.5 !default; +$text-large-font-size: $global-large-font-size !default; +$text-large-line-height: 1.5 !default; +$text-bold-font-weight: bolder !default; +$text-muted-color: $global-muted-color !default; +$text-primary-color: $global-primary-background !default; +$text-success-color: $global-success-background !default; +$text-warning-color: $global-warning-background !default; +$text-danger-color: $global-danger-background !default; +$text-background-color: $global-primary-background !default; +$inverse-text-lead-color: $inverse-global-color !default; +$inverse-text-meta-color: $inverse-global-muted-color !default; +$inverse-text-muted-color: $inverse-global-muted-color !default; +$inverse-text-primary-color: $inverse-global-color !default; +$thumbnav-margin-horizontal: 15px !default; +$thumbnav-margin-vertical: $thumbnav-margin-horizontal !default; +$tile-padding-horizontal: 15px !default; +$tile-padding-horizontal-s: $global-gutter !default; +$tile-padding-horizontal-m: $global-medium-gutter !default; +$tile-padding-vertical: $global-medium-margin !default; +$tile-padding-vertical-m: $global-large-margin !default; +$tile-xsmall-padding-vertical: $global-margin !default; +$tile-small-padding-vertical: $global-medium-margin !default; +$tile-large-padding-vertical: $global-large-margin !default; +$tile-large-padding-vertical-m: $global-xlarge-margin !default; +$tile-xlarge-padding-vertical: $global-xlarge-margin !default; +$tile-xlarge-padding-vertical-m: ($global-large-margin + $global-xlarge-margin) !default; +$tile-default-background: $global-background !default; +$tile-muted-background: $global-muted-background !default; +$tile-primary-background: $global-primary-background !default; +$tile-primary-color-mode: light !default; +$tile-secondary-background: $global-secondary-background !default; +$tile-secondary-color-mode: light !default; +$tooltip-z-index: $global-z-index + 30 !default; +$tooltip-max-width: 200px !default; +$tooltip-padding-vertical: 3px !default; +$tooltip-padding-horizontal: 6px !default; +$tooltip-background: #666 !default; +$tooltip-border-radius: 2px !default; +$tooltip-color: $global-inverse-color !default; +$tooltip-font-size: 12px !default; +$tooltip-margin: 10px !default; +$totop-padding: 5px !default; +$totop-color: $global-muted-color !default; +$totop-hover-color: $global-color !default; +$totop-active-color: $global-emphasis-color !default; +$inverse-totop-color: $inverse-global-muted-color !default; +$inverse-totop-hover-color: $inverse-global-color !default; +$inverse-totop-active-color: $inverse-global-emphasis-color !default; +$transition-duration: 0.3s !default; +$transition-scale: 1.1 !default; +$transition-slide-small-translate: 10px !default; +$transition-slide-medium-translate: 50px !default; +$transition-slow-duration: 0.7s !default; +$panel-scrollable-height: 170px !default; +$panel-scrollable-padding: 10px !default; +$panel-scrollable-border-width: $global-border-width !default; +$panel-scrollable-border: $global-border !default; +$height-small-height: 150px !default; +$height-medium-height: 300px !default; +$height-large-height: 450px !default; +$border-rounded-border-radius: 5px !default; +$box-shadow-duration: 0.1s !default; +$box-shadow-bottom-height: 30px !default; +$box-shadow-bottom-border-radius: 100% !default; +$box-shadow-bottom-background: #444 !default; +$box-shadow-bottom-blur: 20px !default; +$dropcap-margin-right: 10px !default; +$dropcap-font-size: (($global-line-height * 3) * 1em) !default; +$leader-fill-content: '.' !default; +$leader-fill-margin-left: $global-small-gutter !default; +$logo-font-size: $global-large-font-size !default; +$logo-font-family: $global-font-family !default; +$logo-color: $global-color !default; +$logo-hover-color: $global-color !default; +$dragover-box-shadow: 0 0 20px rgba(100,100,100,0.3) !default; +$inverse-logo-color: $inverse-global-color !default; +$inverse-logo-hover-color: $inverse-global-color !default; +$breakpoint-small: 640px !default; +$breakpoint-medium: 960px !default; +$breakpoint-large: 1200px !default; +$breakpoint-xlarge: 1600px !default; +$breakpoint-xsmall-max: ($breakpoint-small - 1) !default; +$breakpoint-small-max: ($breakpoint-medium - 1) !default; +$breakpoint-medium-max: ($breakpoint-large - 1) !default; +$breakpoint-large-max: ($breakpoint-xlarge - 1) !default; +$global-small-box-shadow: 0 2px 8px rgba(0,0,0,0.08) !default; +$global-medium-box-shadow: 0 5px 15px rgba(0,0,0,0.08) !default; +$global-large-box-shadow: 0 14px 25px rgba(0,0,0,0.16) !default; +$global-xlarge-box-shadow: 0 28px 50px rgba(0,0,0,0.16) !default; +$width-small-width: 150px !default; +$width-medium-width: 300px !default; +$width-large-width: 450px !default; +$width-xlarge-width: 600px !default; +$width-xxlarge-width: 750px !default; +$accordion-icon-color: $global-color !default; +$internal-accordion-open-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22#000%22%20width%3D%2213%22%20height%3D%221%22%20x%3D%220%22%20y%3D%226%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; +$internal-accordion-close-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22#000%22%20width%3D%2213%22%20height%3D%221%22%20x%3D%220%22%20y%3D%226%22%20%2F%3E%0A%20%20%20%20%3Crect%20fill%3D%22#000%22%20width%3D%221%22%20height%3D%2213%22%20x%3D%226%22%20y%3D%220%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; +$alert-close-opacity: 0.4 !default; +$alert-close-hover-opacity: 0.8 !default; +$article-meta-link-color: $article-meta-color !default; +$article-meta-link-hover-color: $global-color !default; +$base-code-padding-horizontal: 6px !default; +$base-code-padding-vertical: 2px !default; +$base-code-background: $global-muted-background !default; +$base-blockquote-color: $global-emphasis-color !default; +$base-blockquote-footer-color: $global-color !default; +$base-pre-padding: 10px !default; +$base-pre-background: $global-background !default; +$base-pre-border-width: $global-border-width !default; +$base-pre-border: $global-border !default; +$base-pre-border-radius: 3px !default; +$inverse-base-blockquote-color: $inverse-global-emphasis-color !default; +$inverse-base-blockquote-footer-color: $inverse-global-color !default; +$button-text-transform: uppercase !default; +$button-default-border: $global-border !default; +$button-default-hover-border: darken($global-border, 20%) !default; +$button-default-active-border: darken($global-border, 30%) !default; +$button-disabled-border: $global-border !default; +$button-text-border-width: $global-border-width !default; +$button-text-border: $button-text-hover-color !default; +$card-hover-box-shadow: $global-large-box-shadow !default; +$card-default-box-shadow: $global-medium-box-shadow !default; +$card-default-hover-box-shadow: $global-large-box-shadow !default; +$card-default-header-border-width: $global-border-width !default; +$card-default-header-border: $global-border !default; +$card-default-footer-border-width: $global-border-width !default; +$card-default-footer-border: $global-border !default; +$card-primary-box-shadow: $global-medium-box-shadow !default; +$card-primary-hover-box-shadow: $global-large-box-shadow !default; +$card-secondary-box-shadow: $global-medium-box-shadow !default; +$card-secondary-hover-box-shadow: $global-large-box-shadow !default; +$comment-primary-padding: $global-gutter !default; +$comment-primary-background: $global-muted-background !default; +$description-list-term-font-size: $global-small-font-size !default; +$description-list-term-font-weight: normal !default; +$description-list-term-text-transform: uppercase !default; +$dotnav-item-border-width: 1px !default; +$dotnav-item-border: rgba($global-color, 0.4) !default; +$dotnav-item-hover-border: transparent !default; +$dotnav-item-onclick-border: transparent !default; +$dotnav-item-active-border: transparent !default; +$dropdown-nav-font-size: $global-small-font-size !default; +$dropdown-box-shadow: 0 5px 12px rgba(0,0,0,0.15) !default; +$form-range-thumb-border-width: $global-border-width !default; +$form-range-thumb-border: darken($global-border, 10%) !default; +$form-range-track-border-radius: 500px !default; +$form-border: $global-border !default; +$form-focus-border: $global-primary-background !default; +$form-disabled-border: $global-border !default; +$form-danger-border: $global-danger-background !default; +$form-success-border: $global-success-background !default; +$form-blank-focus-border: $global-border !default; +$form-blank-focus-border-style: dashed !default; +$form-radio-border-width: $global-border-width !default; +$form-radio-border: darken($global-border, 10%) !default; +$form-radio-focus-border: $global-primary-background !default; +$form-radio-checked-border: transparent !default; +$form-radio-disabled-border: $global-border !default; +$form-label-color: $global-emphasis-color !default; +$form-label-font-size: $global-small-font-size !default; +$inverse-form-label-color: $inverse-global-emphasis-color !default; +$label-border-radius: 2px !default; +$label-text-transform: uppercase !default; +$list-striped-border-width: $global-border-width !default; +$list-striped-border: $global-border !default; +$modal-header-border-width: $global-border-width !default; +$modal-header-border: $global-border !default; +$modal-footer-border-width: $global-border-width !default; +$modal-footer-border: $global-border !default; +$modal-close-full-padding: $global-margin !default; +$modal-close-full-background: $modal-dialog-background !default; +$nav-default-font-size: $global-small-font-size !default; +$navbar-nav-item-text-transform: uppercase !default; +$navbar-dropdown-nav-font-size: $global-small-font-size !default; +$navbar-dropdown-box-shadow: 0 5px 12px rgba(0,0,0,0.15) !default; +$navbar-dropbar-box-shadow: 0 5px 7px rgba(0, 0, 0, 0.05) !default; +$navbar-dropdown-grid-divider-border-width: $global-border-width !default; +$navbar-dropdown-grid-divider-border: $navbar-dropdown-nav-divider-border !default; +$placeholder-border-width: $global-border-width !default; +$placeholder-border: $global-border !default; +$progress-border-radius: 500px !default; +$search-default-border-width: $global-border-width !default; +$search-default-border: $global-border !default; +$subnav-item-font-size: $global-small-font-size !default; +$subnav-item-text-transform: uppercase !default; +$tab-border-width: $global-border-width !default; +$tab-border: $global-border !default; +$tab-item-border-width: $global-border-width !default; +$tab-item-font-size: $global-small-font-size !default; +$tab-item-text-transform: uppercase !default; +$tab-item-active-border: $global-primary-background !default; +$inverse-tab-border: $inverse-global-border !default; +$table-striped-border-width: $global-border-width !default; +$table-striped-border: $global-border !default; +$text-meta-link-color: $text-meta-color !default; +$text-meta-link-hover-color: $global-color !default; +$thumbnav-item-background: rgba($global-background, 0.4) !default; +$thumbnav-item-hover-background: transparent !default; +$thumbnav-item-active-background: transparent !default; \ No newline at end of file diff --git a/_sass/uikit/variables.scss b/_sass/uikit/variables.scss new file mode 100644 index 00000000..90b5afbb --- /dev/null +++ b/_sass/uikit/variables.scss @@ -0,0 +1,986 @@ +$global-margin: 20px !default; +$accordion-item-margin-top: $global-margin !default; +$global-medium-font-size: 1.25rem !default; +$accordion-title-font-size: $global-medium-font-size !default; +$accordion-title-line-height: 1.4 !default; +$global-emphasis-color: #333 !default; +$accordion-title-color: $global-emphasis-color !default; +$global-color: #666 !default; +$accordion-title-hover-color: $global-color !default; +$accordion-content-margin-top: $global-margin !default; +$global-inverse-color: #fff !default; +$inverse-global-emphasis-color: $global-inverse-color !default; +$inverse-accordion-title-color: $inverse-global-emphasis-color !default; +$inverse-global-inverse-color: $global-color !default; +$inverse-accordion-title-hover-color: $inverse-global-inverse-color !default; +$global-gutter: 30px !default; +$align-margin-horizontal: $global-gutter !default; +$align-margin-vertical: $global-gutter !default; +$global-medium-gutter: 40px !default; +$align-margin-horizontal-l: $global-medium-gutter !default; +$alert-margin-vertical: $global-margin !default; +$global-small-gutter: 15px !default; +$alert-padding: $global-small-gutter !default; +$alert-padding-right: $alert-padding + 14px !default; +$global-muted-background: #f8f8f8 !default; +$alert-background: $global-muted-background !default; +$alert-color: $global-color !default; +$alert-close-top: $alert-padding + 5px !default; +$alert-close-right: $alert-padding !default; +$global-primary-background: #1e87f0 !default; +$alert-primary-background: lighten(mix(white, $global-primary-background, 40%), 20%) !default; +$alert-primary-color: $global-primary-background !default; +$global-success-background: #32d296 !default; +$alert-success-background: lighten(mix(white, $global-success-background, 40%), 25%) !default; +$alert-success-color: $global-success-background !default; +$global-warning-background: #faa05a !default; +$alert-warning-background: lighten(mix(white, $global-warning-background, 45%), 15%) !default; +$alert-warning-color: $global-warning-background !default; +$global-danger-background: #f0506e !default; +$alert-danger-background: lighten(mix(white, $global-danger-background, 40%), 20%) !default; +$alert-danger-color: $global-danger-background !default; +$global-large-margin: 70px !default; +$article-margin-top: $global-large-margin !default; +$global-xxlarge-font-size: 2.625rem !default; +$article-title-font-size: $global-xxlarge-font-size !default; +$article-title-line-height: 1.2 !default; +$global-small-font-size: 0.875rem !default; +$article-meta-font-size: $global-small-font-size !default; +$article-meta-line-height: 1.4 !default; +$global-muted-color: #999 !default; +$article-meta-color: $global-muted-color !default; +$inverse-global-muted-color: rgba($global-inverse-color, 0.5) !default; +$inverse-article-meta-color: $inverse-global-muted-color !default; +$animation-duration: 0.5s !default; +$animation-fade-duration: 0.8s !default; +$animation-kenburns-duration: 15s !default; +$animation-fast-duration: 0.1s !default; +$animation-slide-small-translate: 10px !default; +$animation-slide-medium-translate: 50px !default; +$global-background: #fff !default; +$background-default-background: $global-background !default; +$background-muted-background: $global-muted-background !default; +$background-primary-background: $global-primary-background !default; +$global-secondary-background: #222 !default; +$background-secondary-background: $global-secondary-background !default; +$badge-size: 22px !default; +$badge-padding-vertical: 0 !default; +$badge-padding-horizontal: 5px !default; +$badge-border-radius: 500px !default; +$badge-background: $global-primary-background !default; +$badge-color: $global-inverse-color !default; +$badge-font-size: $global-small-font-size !default; +$badge-hover-color: $global-inverse-color !default; +$inverse-global-primary-background: $global-inverse-color !default; +$inverse-badge-background: $inverse-global-primary-background !default; +$inverse-badge-color: $inverse-global-inverse-color !default; +$inverse-badge-hover-color: $inverse-global-inverse-color !default; +$base-body-background: $global-background !default; +$global-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !default; +$base-body-font-family: $global-font-family !default; +$base-body-font-weight: normal !default; +$global-font-size: 16px !default; +$base-body-font-size: $global-font-size !default; +$global-line-height: 1.5 !default; +$base-body-line-height: $global-line-height !default; +$base-body-color: $global-color !default; +$global-link-color: #1e87f0 !default; +$base-link-color: $global-link-color !default; +$base-link-text-decoration: none !default; +$global-link-hover-color: #0f6ecd !default; +$base-link-hover-color: $global-link-hover-color !default; +$base-link-hover-text-decoration: underline !default; +$base-strong-font-weight: bolder !default; +$base-code-font-size: $global-small-font-size !default; +$base-code-font-family: Consolas, monaco, monospace !default; +$base-code-color: $global-danger-background !default; +$base-em-color: $global-danger-background !default; +$base-ins-background: #ffd !default; +$base-ins-color: $global-color !default; +$base-mark-background: #ffd !default; +$base-mark-color: $global-color !default; +$base-quote-font-style: italic !default; +$base-small-font-size: 80% !default; +$base-margin-vertical: $global-margin !default; +$base-heading-font-family: $global-font-family !default; +$base-heading-font-weight: normal !default; +$base-heading-color: $global-emphasis-color !default; +$base-heading-text-transform: none !default; +$global-medium-margin: 40px !default; +$base-heading-margin-top: $global-medium-margin !default; +$base-h1-font-size: $global-xxlarge-font-size !default; +$base-h1-line-height: 1.2 !default; +$global-xlarge-font-size: 2rem !default; +$base-h2-font-size: $global-xlarge-font-size !default; +$base-h2-line-height: 1.3 !default; +$global-large-font-size: 1.5rem !default; +$base-h3-font-size: $global-large-font-size !default; +$base-h3-line-height: 1.4 !default; +$base-h4-font-size: $global-medium-font-size !default; +$base-h4-line-height: 1.4 !default; +$base-h5-font-size: $global-font-size !default; +$base-h5-line-height: 1.4 !default; +$base-h6-font-size: $global-small-font-size !default; +$base-h6-line-height: 1.4 !default; +$base-list-padding-left: 30px !default; +$base-hr-margin-vertical: $global-margin !default; +$global-border-width: 1px !default; +$base-hr-border-width: $global-border-width !default; +$global-border: #e5e5e5 !default; +$base-hr-border: $global-border !default; +$base-blockquote-font-size: $global-medium-font-size !default; +$base-blockquote-line-height: 1.5 !default; +$base-blockquote-font-style: italic !default; +$base-blockquote-margin-vertical: $global-margin !default; +$global-small-margin: 10px !default; +$base-blockquote-footer-margin-top: $global-small-margin !default; +$base-blockquote-footer-font-size: $global-small-font-size !default; +$base-blockquote-footer-line-height: 1.5 !default; +$base-pre-font-size: $global-small-font-size !default; +$base-pre-line-height: 1.5 !default; +$base-pre-font-family: $base-code-font-family !default; +$base-pre-color: $global-color !default; +$base-selection-background: #39f !default; +$base-selection-color: $global-inverse-color !default; +$inverse-global-color: rgba($global-inverse-color, 0.7) !default; +$inverse-base-color: $inverse-global-color !default; +$inverse-base-link-color: $inverse-global-emphasis-color !default; +$inverse-base-link-hover-color: $inverse-global-emphasis-color !default; +$inverse-base-code-color: $inverse-global-color !default; +$inverse-base-em-color: $inverse-global-emphasis-color !default; +$inverse-base-heading-color: $inverse-global-emphasis-color !default; +$inverse-global-border: rgba($global-inverse-color, 0.2) !default; +$inverse-base-hr-border: $inverse-global-border !default; +$breadcrumb-item-font-size: $global-small-font-size !default; +$breadcrumb-item-color: $global-muted-color !default; +$breadcrumb-item-hover-color: $global-color !default; +$breadcrumb-item-hover-text-decoration: none !default; +$breadcrumb-item-active-color: $global-color !default; +$breadcrumb-divider: "/" !default; +$breadcrumb-divider-margin-horizontal: 20px !default; +$breadcrumb-divider-color: $global-muted-color !default; +$inverse-breadcrumb-item-color: $inverse-global-muted-color !default; +$inverse-breadcrumb-item-hover-color: $inverse-global-color !default; +$inverse-breadcrumb-item-active-color: $inverse-global-color !default; +$inverse-breadcrumb-divider-color: $inverse-global-muted-color !default; +$global-control-height: 40px !default; +$button-line-height: $global-control-height !default; +$global-control-small-height: 30px !default; +$button-small-line-height: $global-control-small-height !default; +$global-control-large-height: 55px !default; +$button-large-line-height: $global-control-large-height !default; +$button-font-size: $global-font-size !default; +$button-small-font-size: $global-small-font-size !default; +$button-large-font-size: $global-medium-font-size !default; +$button-padding-horizontal: $global-gutter !default; +$button-small-padding-horizontal: $global-small-gutter !default; +$button-large-padding-horizontal: $global-medium-gutter !default; +$button-default-background: $global-muted-background !default; +$button-default-color: $global-emphasis-color !default; +$button-default-hover-background: darken($button-default-background, 5%) !default; +$button-default-hover-color: $global-emphasis-color !default; +$button-default-active-background: darken($button-default-background, 10%) !default; +$button-default-active-color: $global-emphasis-color !default; +$button-primary-background: $global-primary-background !default; +$button-primary-color: $global-inverse-color !default; +$button-primary-hover-background: darken($button-primary-background, 5%) !default; +$button-primary-hover-color: $global-inverse-color !default; +$button-primary-active-background: darken($button-primary-background, 10%) !default; +$button-primary-active-color: $global-inverse-color !default; +$button-secondary-background: $global-secondary-background !default; +$button-secondary-color: $global-inverse-color !default; +$button-secondary-hover-background: darken($button-secondary-background, 5%) !default; +$button-secondary-hover-color: $global-inverse-color !default; +$button-secondary-active-background: darken($button-secondary-background, 10%) !default; +$button-secondary-active-color: $global-inverse-color !default; +$button-danger-background: $global-danger-background !default; +$button-danger-color: $global-inverse-color !default; +$button-danger-hover-background: darken($button-danger-background, 5%) !default; +$button-danger-hover-color: $global-inverse-color !default; +$button-danger-active-background: darken($button-danger-background, 10%) !default; +$button-danger-active-color: $global-inverse-color !default; +$button-disabled-background: $global-muted-background !default; +$button-disabled-color: $global-muted-color !default; +$button-text-line-height: $global-line-height !default; +$button-text-color: $global-muted-color !default; +$button-text-hover-color: $global-color !default; +$button-text-disabled-color: $global-muted-color !default; +$button-link-line-height: $global-line-height !default; +$button-link-color: $global-link-color !default; +$button-link-hover-color: $global-link-hover-color !default; +$button-link-hover-text-decoration: underline !default; +$button-link-disabled-color: $global-muted-color !default; +$inverse-button-default-background: $inverse-global-primary-background !default; +$inverse-button-default-color: $inverse-global-inverse-color !default; +$inverse-button-default-hover-background: darken($inverse-button-default-background, 5%) !default; +$inverse-button-default-hover-color: $inverse-global-inverse-color !default; +$inverse-button-default-active-background: darken($inverse-button-default-background, 10%) !default; +$inverse-button-default-active-color: $inverse-global-inverse-color !default; +$inverse-button-primary-background: $inverse-global-primary-background !default; +$inverse-button-primary-color: $inverse-global-inverse-color !default; +$inverse-button-primary-hover-background: darken($inverse-button-primary-background, 5%) !default; +$inverse-button-primary-hover-color: $inverse-global-inverse-color !default; +$inverse-button-primary-active-background: darken($inverse-button-primary-background, 10%) !default; +$inverse-button-primary-active-color: $inverse-global-inverse-color !default; +$inverse-button-secondary-background: $inverse-global-primary-background !default; +$inverse-button-secondary-color: $inverse-global-inverse-color !default; +$inverse-button-secondary-hover-background: darken($inverse-button-secondary-background, 5%) !default; +$inverse-button-secondary-hover-color: $inverse-global-inverse-color !default; +$inverse-button-secondary-active-background: darken($inverse-button-secondary-background, 10%) !default; +$inverse-button-secondary-active-color: $inverse-global-inverse-color !default; +$inverse-button-text-color: $inverse-global-muted-color !default; +$inverse-button-text-hover-color: $inverse-global-color !default; +$inverse-button-text-disabled-color: $inverse-global-muted-color !default; +$inverse-button-link-color: $inverse-global-muted-color !default; +$inverse-button-link-hover-color: $inverse-global-color !default; +$card-body-padding-horizontal: $global-gutter !default; +$card-body-padding-vertical: $global-gutter !default; +$card-body-padding-horizontal-l: $global-medium-gutter !default; +$card-body-padding-vertical-l: $global-medium-gutter !default; +$card-header-padding-horizontal: $global-gutter !default; +$card-header-padding-vertical: round($global-gutter / 2) !default; +$card-header-padding-horizontal-l: $global-medium-gutter !default; +$card-header-padding-vertical-l: round($global-medium-gutter / 2) !default; +$card-footer-padding-horizontal: $global-gutter !default; +$card-footer-padding-vertical: ($global-gutter / 2) !default; +$card-footer-padding-horizontal-l: $global-medium-gutter !default; +$card-footer-padding-vertical-l: round($global-medium-gutter / 2) !default; +$card-title-font-size: $global-large-font-size !default; +$card-title-line-height: 1.4 !default; +$card-badge-top: $global-gutter !default; +$card-badge-right: $card-badge-top !default; +$card-hover-background: $global-muted-background !default; +$card-default-background: $global-muted-background !default; +$card-default-color: $global-color !default; +$card-default-title-color: $global-emphasis-color !default; +$card-default-hover-background: darken($card-default-background, 5%) !default; +$card-primary-background: $global-primary-background !default; +$card-primary-color: $global-inverse-color !default; +$card-primary-title-color: $card-primary-color !default; +$card-primary-hover-background: darken($card-primary-background, 5%) !default; +$card-primary-color-mode: light !default; +$card-secondary-background: $global-secondary-background !default; +$card-secondary-color: $global-inverse-color !default; +$card-secondary-title-color: $card-secondary-color !default; +$card-secondary-hover-background: darken($card-secondary-background, 5%) !default; +$card-secondary-color-mode: light !default; +$card-small-body-padding-horizontal: $global-margin !default; +$card-small-body-padding-vertical: $global-margin !default; +$card-small-header-padding-horizontal: $global-margin !default; +$card-small-header-padding-vertical: round($global-margin / 1.5) !default; +$card-small-footer-padding-horizontal: $global-margin !default; +$card-small-footer-padding-vertical: round($global-margin / 1.5) !default; +$global-large-gutter: 70px !default; +$card-large-body-padding-horizontal-l: $global-large-gutter !default; +$card-large-body-padding-vertical-l: $global-large-gutter !default; +$card-large-header-padding-horizontal-l: $global-large-gutter !default; +$card-large-header-padding-vertical-l: round($global-large-gutter / 2) !default; +$card-large-footer-padding-horizontal-l: $global-large-gutter !default; +$card-large-footer-padding-vertical-l: round($global-large-gutter / 2) !default; +$close-color: $global-muted-color !default; +$close-hover-color: $global-color !default; +$inverse-close-color: $inverse-global-muted-color !default; +$inverse-close-hover-color: $inverse-global-color !default; +$column-gutter: $global-gutter !default; +$column-gutter-l: $global-medium-gutter !default; +$column-divider-rule-color: $global-border !default; +$column-divider-rule-width: 1px !default; +$inverse-column-divider-rule-color: $inverse-global-border !default; +$comment-header-margin-bottom: $global-margin !default; +$comment-title-font-size: $global-medium-font-size !default; +$comment-title-line-height: 1.4 !default; +$comment-meta-font-size: $global-small-font-size !default; +$comment-meta-line-height: 1.4 !default; +$comment-meta-color: $global-muted-color !default; +$comment-list-margin-top: $global-large-margin !default; +$comment-list-padding-left: 30px !default; +$comment-list-padding-left-m: 100px !default; +$container-max-width: 1200px !default; +$container-small-max-width: 900px !default; +$container-large-max-width: 1600px !default; +$container-padding-horizontal: 15px !default; +$container-padding-horizontal-s: $global-gutter !default; +$container-padding-horizontal-m: $global-medium-gutter !default; +$countdown-item-line-height: 70px !default; +$countdown-number-font-size: 2rem !default; +$countdown-number-font-size-s: 4rem !default; +$countdown-number-font-size-m: 6rem !default; +$countdown-separator-font-size: 1rem !default; +$countdown-separator-font-size-s: 2rem !default; +$countdown-separator-font-size-m: 3rem !default; +$description-list-term-color: $global-emphasis-color !default; +$description-list-term-margin-top: $global-margin !default; +$description-list-divider-term-margin-top: $global-margin !default; +$description-list-divider-term-border-width: $global-border-width !default; +$description-list-divider-term-border: $global-border !default; +$divider-margin-vertical: $global-margin !default; +$divider-icon-width: 50px !default; +$divider-icon-height: 20px !default; +$divider-icon-color: $global-border !default; +$divider-icon-line-top: 50% !default; +$divider-icon-line-width: 100% !default; +$divider-icon-line-border-width: $global-border-width !default; +$divider-icon-line-border: $global-border !default; +$internal-divider-icon-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22none%22%20stroke%3D%22#000%22%20stroke-width%3D%222%22%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%227%22%20%2F%3E%0A%3C%2Fsvg%3E%0A" !default; +$divider-small-width: 100px !default; +$divider-small-border-width: $global-border-width !default; +$divider-small-border: $global-border !default; +$inverse-divider-icon-color: $inverse-global-border !default; +$inverse-divider-icon-line-border: $inverse-global-border !default; +$inverse-divider-small-border: $inverse-global-border !default; +$dotnav-margin-horizontal: 12px !default; +$dotnav-margin-vertical: $dotnav-margin-horizontal !default; +$dotnav-item-width: 10px !default; +$dotnav-item-height: $dotnav-item-width !default; +$dotnav-item-border-radius: 50% !default; +$dotnav-item-background: rgba($global-color, 0.2) !default; +$dotnav-item-hover-background: rgba($global-color, 0.6) !default; +$dotnav-item-onclick-background: rgba($global-color, 0.2) !default; +$dotnav-item-active-background: rgba($global-color, 0.6) !default; +$inverse-dotnav-item-background: rgba($inverse-global-color, 0.5) !default; +$inverse-dotnav-item-hover-background: rgba($inverse-global-color, 0.9) !default; +$inverse-dotnav-item-onclick-background: rgba($inverse-global-color, 0.5) !default; +$inverse-dotnav-item-active-background: rgba($inverse-global-color, 0.9) !default; +$global-z-index: 1000 !default; +$drop-z-index: $global-z-index + 20 !default; +$drop-width: 300px !default; +$drop-margin: $global-margin !default; +$dropdown-z-index: $global-z-index + 20 !default; +$dropdown-min-width: 200px !default; +$dropdown-padding: 15px !default; +$dropdown-background: $global-muted-background !default; +$dropdown-color: $global-color !default; +$dropdown-margin: $global-small-margin !default; +$dropdown-nav-item-color: $global-muted-color !default; +$dropdown-nav-item-hover-color: $global-color !default; +$dropdown-nav-header-color: $global-emphasis-color !default; +$dropdown-nav-divider-border-width: $global-border-width !default; +$dropdown-nav-divider-border: $global-border !default; +$dropdown-nav-sublist-item-color: $global-muted-color !default; +$dropdown-nav-sublist-item-hover-color: $global-color !default; +$form-range-thumb-height: 15px !default; +$form-range-thumb-border-radius: 500px !default; +$form-range-thumb-background: $global-color !default; +$form-range-track-height: 3px !default; +$form-range-track-background: darken($global-muted-background, 5%) !default; +$form-range-track-focus-background: darken($global-muted-background, 15%) !default; +$form-height: $global-control-height !default; +$form-line-height: $form-height !default; +$form-padding-horizontal: 10px !default; +$form-padding-vertical: 4px !default; +$form-background: $global-muted-background !default; +$form-color: $global-color !default; +$form-focus-background: $global-muted-background !default; +$form-focus-color: $global-color !default; +$form-disabled-background: $global-muted-background !default; +$form-disabled-color: $global-muted-color !default; +$form-placeholder-color: $global-muted-color !default; +$form-small-height: $global-control-small-height !default; +$form-small-padding-horizontal: 8px !default; +$form-small-line-height: $form-small-height !default; +$form-small-font-size: $global-small-font-size !default; +$form-large-height: $global-control-large-height !default; +$form-large-padding-horizontal: 12px !default; +$form-large-line-height: $form-large-height !default; +$form-large-font-size: $global-medium-font-size !default; +$form-danger-color: $global-danger-background !default; +$form-success-color: $global-success-background !default; +$form-width-xsmall: 50px !default; +$form-width-small: 130px !default; +$form-width-medium: 200px !default; +$form-width-large: 500px !default; +$form-select-padding-right: 20px !default; +$form-select-icon-color: $global-color !default; +$form-select-disabled-icon-color: $global-muted-color !default; +$form-radio-size: 16px !default; +$form-radio-margin-top: -4px !default; +$form-radio-background: darken($global-muted-background, 5%) !default; +$form-radio-checked-background: $global-primary-background !default; +$form-radio-checked-icon-color: $global-inverse-color !default; +$form-radio-checked-focus-background: darken($global-primary-background, 10%) !default; +$form-radio-disabled-background: $global-muted-background !default; +$form-radio-disabled-icon-color: $global-muted-color !default; +$form-legend-font-size: $global-large-font-size !default; +$form-legend-line-height: 1.4 !default; +$form-stacked-margin-bottom: $global-small-margin !default; +$form-horizontal-label-width: 200px !default; +$form-horizontal-label-margin-top: 7px !default; +$form-horizontal-controls-margin-left: 215px !default; +$form-horizontal-controls-text-padding-top: 7px !default; +$form-icon-width: $form-height !default; +$form-icon-font-size: $global-font-size !default; +$form-icon-color: $global-muted-color !default; +$form-icon-hover-color: $global-color !default; +$internal-form-select-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22#000%22%20points%3D%2212%201%209%206%2015%206%22%20%2F%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22#000%22%20points%3D%2212%2013%209%208%2015%208%22%20%2F%3E%0A%3C%2Fsvg%3E%0A" !default; +$internal-form-radio-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22#000%22%20cx%3D%228%22%20cy%3D%228%22%20r%3D%222%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; +$internal-form-checkbox-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2211%22%20viewBox%3D%220%200%2014%2011%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22#000%22%20points%3D%2212%201%205%207.5%202%205%201%205.5%205%2010%2013%201.5%22%20%2F%3E%0A%3C%2Fsvg%3E%0A" !default; +$internal-form-checkbox-indeterminate-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22#000%22%20x%3D%223%22%20y%3D%228%22%20width%3D%2210%22%20height%3D%221%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; +$inverse-global-muted-background: rgba($global-inverse-color, 0.1) !default; +$inverse-form-background: $inverse-global-muted-background !default; +$inverse-form-color: $inverse-global-color !default; +$inverse-form-focus-background: $inverse-global-muted-background !default; +$inverse-form-focus-color: $inverse-global-color !default; +$inverse-form-placeholder-color: $inverse-global-muted-color !default; +$inverse-form-select-icon-color: $inverse-global-color !default; +$inverse-form-radio-background: darken($inverse-global-muted-background, 5%) !default; +$inverse-form-radio-checked-background: $inverse-global-primary-background !default; +$inverse-form-radio-checked-icon-color: $inverse-global-inverse-color !default; +$inverse-form-radio-checked-focus-background: darken($inverse-global-primary-background, 10%) !default; +$grid-gutter-horizontal: $global-gutter !default; +$grid-gutter-vertical: $grid-gutter-horizontal !default; +$grid-gutter-horizontal-l: $global-medium-gutter !default; +$grid-gutter-vertical-l: $grid-gutter-horizontal-l !default; +$grid-small-gutter-horizontal: $global-small-gutter !default; +$grid-small-gutter-vertical: $grid-small-gutter-horizontal !default; +$grid-medium-gutter-horizontal: $global-gutter !default; +$grid-medium-gutter-vertical: $grid-medium-gutter-horizontal !default; +$grid-large-gutter-horizontal: $global-medium-gutter !default; +$grid-large-gutter-vertical: $grid-large-gutter-horizontal !default; +$grid-large-gutter-horizontal-l: $global-large-gutter !default; +$grid-large-gutter-vertical-l: $grid-large-gutter-horizontal-l !default; +$grid-divider-border-width: $global-border-width !default; +$grid-divider-border: $global-border !default; +$inverse-grid-divider-border: $inverse-global-border !default; +$heading-primary-font-size: $global-xxlarge-font-size !default; +$heading-primary-line-height: 1.2 !default; +$heading-primary-font-size-m: 3.75rem !default; +$heading-primary-line-height-m: 1.1 !default; +$heading-hero-font-size: 4rem !default; +$heading-hero-line-height: 1.1 !default; +$heading-hero-font-size-s: 6rem !default; +$heading-hero-line-height-s: 1 !default; +$heading-hero-font-size-m: 8rem !default; +$heading-hero-line-height-m: 1 !default; +$heading-divider-padding-bottom: 10px !default; +$heading-divider-border-width: $global-border-width !default; +$heading-divider-border: $global-border !default; +$heading-bullet-top: unquote('calc(-0.1 * 1em)') !default; +$heading-bullet-height: 0.9em !default; +$heading-bullet-margin-right: 10px !default; +$heading-bullet-border-width: 5px !default; +$heading-bullet-border: $global-border !default; +$heading-line-top: 50% !default; +$heading-line-border-width: $global-border-width !default; +$heading-line-height: $heading-line-border-width !default; +$heading-line-width: 2000px !default; +$heading-line-border: $global-border !default; +$heading-line-margin-horizontal: 0.6em !default; +$inverse-heading-divider-border: $inverse-global-border !default; +$inverse-heading-bullet-border: $inverse-global-border !default; +$inverse-heading-line-border: $inverse-global-border !default; +$icon-image-size: 20px !default; +$icon-link-color: $global-muted-color !default; +$icon-link-hover-color: $global-color !default; +$icon-link-active-color: darken($global-color, 5%) !default; +$icon-button-size: 36px !default; +$icon-button-border-radius: 500px !default; +$icon-button-background: $global-muted-background !default; +$icon-button-color: $global-muted-color !default; +$icon-button-hover-background: darken($icon-button-background, 5%) !default; +$icon-button-hover-color: $global-color !default; +$icon-button-active-background: darken($icon-button-background, 10%) !default; +$icon-button-active-color: $global-color !default; +$inverse-icon-link-color: $inverse-global-muted-color !default; +$inverse-icon-link-hover-color: $inverse-global-color !default; +$inverse-icon-link-active-color: $inverse-global-color !default; +$inverse-icon-button-background: $inverse-global-muted-background !default; +$inverse-icon-button-color: $inverse-global-muted-color !default; +$inverse-icon-button-hover-background: darken($inverse-icon-button-background, 5%) !default; +$inverse-icon-button-hover-color: $inverse-global-color !default; +$inverse-icon-button-active-background: darken($inverse-icon-button-background, 10%) !default; +$inverse-icon-button-active-color: $inverse-global-color !default; +$iconnav-margin-horizontal: $global-small-margin !default; +$iconnav-margin-vertical: $iconnav-margin-horizontal !default; +$iconnav-item-color: $global-muted-color !default; +$iconnav-item-hover-color: $global-color !default; +$iconnav-item-active-color: $global-color !default; +$inverse-iconnav-item-color: $inverse-global-muted-color !default; +$inverse-iconnav-item-hover-color: $inverse-global-color !default; +$inverse-iconnav-item-active-color: $inverse-global-color !default; +$inverse-global-color-mode: light !default; +$label-padding-vertical: 0 !default; +$label-padding-horizontal: $global-small-margin !default; +$label-background: $global-primary-background !default; +$label-line-height: $global-line-height !default; +$label-font-size: $global-small-font-size !default; +$label-color: $global-inverse-color !default; +$label-success-background: $global-success-background !default; +$label-success-color: $global-inverse-color !default; +$label-warning-background: $global-warning-background !default; +$label-warning-color: $global-inverse-color !default; +$label-danger-background: $global-danger-background !default; +$label-danger-color: $global-inverse-color !default; +$inverse-label-background: $inverse-global-primary-background !default; +$inverse-label-color: $inverse-global-inverse-color !default; +$lightbox-z-index: $global-z-index + 10 !default; +$lightbox-background: #000 !default; +$lightbox-item-color: rgba(255,255,255,0.7) !default; +$lightbox-toolbar-padding-vertical: 10px !default; +$lightbox-toolbar-padding-horizontal: 10px !default; +$lightbox-toolbar-background: rgba(0,0,0,0.3) !default; +$lightbox-toolbar-color: rgba(255,255,255,0.7) !default; +$lightbox-toolbar-icon-padding: 5px !default; +$lightbox-toolbar-icon-color: rgba(255,255,255,0.7) !default; +$lightbox-toolbar-icon-hover-color: #fff !default; +$lightbox-button-size: 50px !default; +$lightbox-button-background: $lightbox-toolbar-background !default; +$lightbox-button-color: rgba(255,255,255,0.7) !default; +$lightbox-button-hover-color: #fff !default; +$link-muted-color: $global-muted-color !default; +$link-muted-hover-color: $global-color !default; +$link-text-hover-color: $global-muted-color !default; +$link-heading-hover-color: $global-primary-background !default; +$link-heading-hover-text-decoration: none !default; +$inverse-link-muted-color: $inverse-global-muted-color !default; +$inverse-link-muted-hover-color: $inverse-global-color !default; +$inverse-link-text-hover-color: $inverse-global-muted-color !default; +$inverse-link-heading-hover-color: $inverse-global-primary-background !default; +$list-margin-top: $global-small-margin !default; +$list-nested-padding-left: $global-gutter !default; +$list-divider-margin-top: $global-small-margin !default; +$list-divider-border-width: $global-border-width !default; +$list-divider-border: $global-border !default; +$list-striped-padding-vertical: $global-small-margin !default; +$list-striped-padding-horizontal: $global-small-margin !default; +$list-striped-background: $global-muted-background !default; +$list-bullet-width: ($global-line-height * 1em) !default; +$list-bullet-height: $list-bullet-width !default; +$list-bullet-margin-right: $global-small-margin !default; +$list-bullet-icon-color: $global-color !default; +$list-large-margin-top: $global-margin !default; +$list-large-divider-margin-top: $global-margin !default; +$list-large-striped-padding-vertical: $global-margin !default; +$list-large-striped-padding-horizontal: $global-small-margin !default; +$internal-list-bullet-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%226%22%20height%3D%226%22%20viewBox%3D%220%200%206%206%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22#000%22%20cx%3D%223%22%20cy%3D%223%22%20r%3D%223%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; +$inverse-list-divider-border: $inverse-global-border !default; +$inverse-list-striped-background: $inverse-global-muted-background !default; +$inverse-list-bullet-icon-color: $inverse-global-color !default; +$margin-margin: $global-margin !default; +$margin-small-margin: $global-small-margin !default; +$margin-medium-margin: $global-medium-margin !default; +$margin-large-margin: $global-medium-margin !default; +$margin-large-margin-l: $global-large-margin !default; +$margin-xlarge-margin: $global-large-margin !default; +$global-xlarge-margin: 140px !default; +$margin-xlarge-margin-l: $global-xlarge-margin !default; +$marker-padding: 5px !default; +$marker-background: $global-secondary-background !default; +$marker-color: $global-inverse-color !default; +$marker-hover-color: $global-inverse-color !default; +$inverse-marker-background: $global-muted-background !default; +$inverse-marker-color: $global-color !default; +$inverse-marker-hover-color: $global-color !default; +$modal-z-index: $global-z-index + 10 !default; +$modal-background: rgba(0,0,0,0.6) !default; +$modal-padding-horizontal: 15px !default; +$modal-padding-horizontal-s: $global-gutter !default; +$modal-padding-horizontal-m: $global-medium-gutter !default; +$modal-padding-vertical: $modal-padding-horizontal !default; +$modal-padding-vertical-s: 50px !default; +$modal-dialog-width: 600px !default; +$modal-dialog-background: $global-background !default; +$modal-container-width: 1200px !default; +$modal-body-padding-horizontal: $global-gutter !default; +$modal-body-padding-vertical: $global-gutter !default; +$modal-header-padding-horizontal: $global-gutter !default; +$modal-header-padding-vertical: ($modal-header-padding-horizontal / 2) !default; +$modal-header-background: $global-muted-background !default; +$modal-footer-padding-horizontal: $global-gutter !default; +$modal-footer-padding-vertical: ($modal-footer-padding-horizontal / 2) !default; +$modal-footer-background: $global-muted-background !default; +$modal-title-font-size: $global-xlarge-font-size !default; +$modal-title-line-height: 1.3 !default; +$modal-close-position: $global-small-margin !default; +$modal-close-padding: 5px !default; +$modal-close-outside-position: 0 !default; +$modal-close-outside-translate: 100% !default; +$modal-close-outside-color: lighten($global-inverse-color, 20%) !default; +$modal-close-outside-hover-color: $global-inverse-color !default; +$nav-item-padding-vertical: 5px !default; +$nav-item-padding-horizontal: 0 !default; +$nav-sublist-padding-vertical: 5px !default; +$nav-sublist-padding-left: 15px !default; +$nav-sublist-deeper-padding-left: 15px !default; +$nav-sublist-item-padding-vertical: 2px !default; +$nav-parent-icon-width: ($global-line-height * 1em) !default; +$nav-parent-icon-height: $nav-parent-icon-width !default; +$nav-parent-icon-color: $global-color !default; +$nav-header-padding-vertical: $nav-item-padding-vertical !default; +$nav-header-padding-horizontal: $nav-item-padding-horizontal !default; +$nav-header-font-size: $global-small-font-size !default; +$nav-header-text-transform: uppercase !default; +$nav-header-margin-top: $global-margin !default; +$nav-divider-margin-vertical: 5px !default; +$nav-divider-margin-horizontal: 0 !default; +$nav-default-item-color: $global-muted-color !default; +$nav-default-item-hover-color: $global-color !default; +$nav-default-item-active-color: $global-emphasis-color !default; +$nav-default-header-color: $global-emphasis-color !default; +$nav-default-divider-border-width: $global-border-width !default; +$nav-default-divider-border: $global-border !default; +$nav-default-sublist-item-color: $global-muted-color !default; +$nav-default-sublist-item-hover-color: $global-color !default; +$nav-primary-item-font-size: $global-large-font-size !default; +$nav-primary-item-line-height: $global-line-height !default; +$nav-primary-item-color: $global-muted-color !default; +$nav-primary-item-hover-color: $global-color !default; +$nav-primary-item-active-color: $global-emphasis-color !default; +$nav-primary-header-color: $global-emphasis-color !default; +$nav-primary-divider-border-width: $global-border-width !default; +$nav-primary-divider-border: $global-border !default; +$nav-primary-sublist-item-color: $global-muted-color !default; +$nav-primary-sublist-item-hover-color: $global-color !default; +$internal-nav-parent-close-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20viewBox%3D%220%200%2014%2014%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolyline%20fill%3D%22none%22%20stroke%3D%22#000%22%20stroke-width%3D%221.1%22%20points%3D%2210%201%204%207%2010%2013%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; +$internal-nav-parent-open-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20viewBox%3D%220%200%2014%2014%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolyline%20fill%3D%22none%22%20stroke%3D%22#000%22%20stroke-width%3D%221.1%22%20points%3D%221%204%207%2010%2013%204%22%20%2F%3E%0A%3C%2Fsvg%3E" !default; +$inverse-nav-parent-icon-color: $inverse-global-color !default; +$inverse-nav-default-item-color: $inverse-global-muted-color !default; +$inverse-nav-default-item-hover-color: $inverse-global-color !default; +$inverse-nav-default-item-active-color: $inverse-global-emphasis-color !default; +$inverse-nav-default-header-color: $inverse-global-emphasis-color !default; +$inverse-nav-default-divider-border: $inverse-global-border !default; +$inverse-nav-default-sublist-item-color: $inverse-global-muted-color !default; +$inverse-nav-default-sublist-item-hover-color: $inverse-global-color !default; +$inverse-nav-primary-item-color: $inverse-global-muted-color !default; +$inverse-nav-primary-item-hover-color: $inverse-global-color !default; +$inverse-nav-primary-item-active-color: $inverse-global-emphasis-color !default; +$inverse-nav-primary-header-color: $inverse-global-emphasis-color !default; +$inverse-nav-primary-divider-border: $inverse-global-border !default; +$inverse-nav-primary-sublist-item-color: $inverse-global-muted-color !default; +$inverse-nav-primary-sublist-item-hover-color: $inverse-global-color !default; +$navbar-background: $global-muted-background !default; +$navbar-color-mode: none !default; +$navbar-nav-item-height: 80px !default; +$navbar-nav-item-padding-horizontal: 15px !default; +$navbar-nav-item-color: $global-muted-color !default; +$navbar-nav-item-font-size: $global-font-size !default; +$navbar-nav-item-font-family: $global-font-family !default; +$navbar-nav-item-hover-color: $global-color !default; +$navbar-nav-item-onclick-color: $global-emphasis-color !default; +$navbar-nav-item-active-color: $global-emphasis-color !default; +$navbar-item-color: $global-color !default; +$navbar-toggle-color: $global-muted-color !default; +$navbar-toggle-hover-color: $global-color !default; +$navbar-subtitle-font-size: $global-small-font-size !default; +$navbar-dropdown-z-index: $global-z-index + 20 !default; +$navbar-dropdown-width: 200px !default; +$navbar-dropdown-margin: 0 !default; +$navbar-dropdown-padding: 15px !default; +$navbar-dropdown-background: $global-muted-background !default; +$navbar-dropdown-color: $global-color !default; +$navbar-dropdown-grid-gutter-horizontal: $global-gutter !default; +$navbar-dropdown-grid-gutter-vertical: $navbar-dropdown-grid-gutter-horizontal !default; +$navbar-dropdown-dropbar-margin-top: 0 !default; +$navbar-dropdown-dropbar-margin-bottom: $navbar-dropdown-dropbar-margin-top !default; +$navbar-dropdown-nav-item-color: $global-muted-color !default; +$navbar-dropdown-nav-item-hover-color: $global-color !default; +$navbar-dropdown-nav-item-active-color: $global-emphasis-color !default; +$navbar-dropdown-nav-header-color: $global-emphasis-color !default; +$navbar-dropdown-nav-divider-border-width: $global-border-width !default; +$navbar-dropdown-nav-divider-border: $global-border !default; +$navbar-dropdown-nav-sublist-item-color: $global-muted-color !default; +$navbar-dropdown-nav-sublist-item-hover-color: $global-color !default; +$navbar-dropbar-background: $navbar-dropdown-background !default; +$navbar-dropbar-z-index: $global-z-index - 20 !default; +$inverse-navbar-nav-item-color: $inverse-global-muted-color !default; +$inverse-navbar-nav-item-hover-color: $inverse-global-color !default; +$inverse-navbar-nav-item-onclick-color: $inverse-global-emphasis-color !default; +$inverse-navbar-nav-item-active-color: $inverse-global-emphasis-color !default; +$inverse-navbar-item-color: $inverse-global-color !default; +$inverse-navbar-toggle-color: $inverse-global-muted-color !default; +$inverse-navbar-toggle-hover-color: $inverse-global-color !default; +$notification-position: 10px !default; +$notification-z-index: $global-z-index + 40 !default; +$notification-width: 350px !default; +$notification-message-margin-bottom: 10px !default; +$notification-message-padding: $global-small-gutter !default; +$notification-message-background: $global-muted-background !default; +$notification-message-color: $global-color !default; +$notification-message-font-size: $global-medium-font-size !default; +$notification-message-line-height: 1.4 !default; +$notification-close-top: $notification-message-padding + 5px !default; +$notification-close-right: $notification-message-padding !default; +$notification-message-primary-color: $global-primary-background !default; +$notification-message-success-color: $global-success-background !default; +$notification-message-warning-color: $global-warning-background !default; +$notification-message-danger-color: $global-danger-background !default; +$offcanvas-z-index: $global-z-index !default; +$offcanvas-bar-width: 270px !default; +$offcanvas-bar-padding-vertical: $global-margin !default; +$offcanvas-bar-padding-horizontal: $global-margin !default; +$offcanvas-bar-background: $global-secondary-background !default; +$offcanvas-bar-color-mode: light !default; +$offcanvas-bar-width-m: 350px !default; +$offcanvas-bar-padding-vertical-m: $global-medium-gutter !default; +$offcanvas-bar-padding-horizontal-m: $global-medium-gutter !default; +$offcanvas-close-position: 20px !default; +$offcanvas-close-padding: 5px !default; +$offcanvas-overlay-background: rgba(0,0,0,0.1) !default; +$overlay-padding-horizontal: $global-gutter !default; +$overlay-padding-vertical: $global-gutter !default; +$overlay-default-background: rgba($global-background, 0.8) !default; +$overlay-primary-background: rgba($global-secondary-background, 0.8) !default; +$overlay-primary-color-mode: light !default; +$padding-padding: $global-gutter !default; +$padding-padding-l: $global-medium-gutter !default; +$padding-small-padding: $global-small-gutter !default; +$padding-large-padding: $global-gutter !default; +$padding-large-padding-l: $global-large-gutter !default; +$pagination-margin-horizontal: 20px !default; +$pagination-item-color: $global-muted-color !default; +$pagination-item-hover-color: $global-color !default; +$pagination-item-hover-text-decoration: none !default; +$pagination-item-active-color: $global-color !default; +$pagination-item-disabled-color: $global-muted-color !default; +$inverse-pagination-item-color: $inverse-global-muted-color !default; +$inverse-pagination-item-hover-color: $inverse-global-color !default; +$inverse-pagination-item-active-color: $inverse-global-color !default; +$inverse-pagination-item-disabled-color: $inverse-global-muted-color !default; +$placeholder-margin-vertical: $global-margin !default; +$placeholder-padding-vertical: $global-gutter !default; +$placeholder-padding-horizontal: $global-gutter !default; +$placeholder-background: $global-muted-background !default; +$position-small-margin: $global-small-gutter !default; +$position-medium-margin: $global-gutter !default; +$position-large-margin: $global-gutter !default; +$position-large-margin-l: 50px !default; +$progress-height: 15px !default; +$progress-margin-vertical: $global-margin !default; +$progress-background: $global-muted-background !default; +$progress-bar-background: $global-primary-background !default; +$search-color: $global-color !default; +$search-placeholder-color: $global-muted-color !default; +$search-icon-color: $global-muted-color !default; +$search-default-width: 180px !default; +$search-default-height: $global-control-height !default; +$search-default-padding-horizontal: 6px !default; +$search-default-background: $global-muted-background !default; +$search-default-focus-background: $search-default-background !default; +$search-default-icon-width: $global-control-height !default; +$search-navbar-width: 400px !default; +$search-navbar-height: 40px !default; +$search-navbar-background: transparent !default; +$search-navbar-font-size: $global-large-font-size !default; +$search-navbar-icon-width: 40px !default; +$search-large-width: 500px !default; +$search-large-height: 80px !default; +$search-large-background: transparent !default; +$search-large-font-size: $global-xxlarge-font-size !default; +$search-large-icon-width: 80px !default; +$search-toggle-color: $global-muted-color !default; +$search-toggle-hover-color: $global-color !default; +$inverse-search-color: $inverse-global-color !default; +$inverse-search-placeholder-color: $inverse-global-muted-color !default; +$inverse-search-icon-color: $inverse-global-muted-color !default; +$inverse-search-default-background: $inverse-global-muted-background !default; +$inverse-search-default-focus-background: $inverse-search-default-background !default; +$inverse-search-navbar-background: transparent !default; +$inverse-search-large-background: transparent !default; +$inverse-search-toggle-color: $inverse-global-muted-color !default; +$inverse-search-toggle-hover-color: $inverse-global-color !default; +$section-padding-vertical: $global-medium-margin !default; +$section-padding-vertical-m: $global-large-margin !default; +$section-xsmall-padding-vertical: $global-margin !default; +$section-small-padding-vertical: $global-medium-margin !default; +$section-large-padding-vertical: $global-large-margin !default; +$section-large-padding-vertical-m: $global-xlarge-margin !default; +$section-xlarge-padding-vertical: $global-xlarge-margin !default; +$section-xlarge-padding-vertical-m: ($global-large-margin + $global-xlarge-margin) !default; +$section-default-background: $global-background !default; +$section-muted-background: $global-muted-background !default; +$section-primary-background: $global-primary-background !default; +$section-primary-color-mode: light !default; +$section-secondary-background: $global-secondary-background !default; +$section-secondary-color-mode: light !default; +$slidenav-padding-vertical: 5px !default; +$slidenav-padding-horizontal: 10px !default; +$slidenav-color: rgba($global-color, 0.5) !default; +$slidenav-hover-color: rgba($global-color, 0.9) !default; +$slidenav-active-color: rgba($global-color, 0.5) !default; +$slidenav-large-padding-vertical: 10px !default; +$slidenav-large-padding-horizontal: $slidenav-large-padding-vertical !default; +$inverse-slidenav-color: rgba($inverse-global-color, 0.7) !default; +$inverse-slidenav-hover-color: rgba($inverse-global-color, 0.95) !default; +$inverse-slidenav-active-color: rgba($inverse-global-color, 0.7) !default; +$sortable-dragged-z-index: $global-z-index + 50 !default; +$sortable-placeholder-opacity: 0 !default; +$sortable-empty-height: 50px !default; +$spinner-size: 30px !default; +$spinner-stroke-width: 1 !default; +$spinner-radius: floor(($spinner-size - $spinner-stroke-width) / 2) !default; +$spinner-circumference: round(2 * 3.141 * $spinner-radius) !default; +$spinner-duration: 1.4s !default; +$sticky-z-index: $global-z-index - 20 !default; +$sticky-animation-duration: 0.2s !default; +$sticky-reverse-animation-duration: 0.2s !default; +$subnav-margin-horizontal: 20px !default; +$subnav-item-color: $global-muted-color !default; +$subnav-item-hover-color: $global-color !default; +$subnav-item-hover-text-decoration: none !default; +$subnav-item-active-color: $global-emphasis-color !default; +$subnav-divider-margin-horizontal: $subnav-margin-horizontal !default; +$subnav-divider-border-height: 1.5em !default; +$subnav-divider-border-width: $global-border-width !default; +$subnav-divider-border: $global-border !default; +$subnav-pill-item-padding-vertical: 5px !default; +$subnav-pill-item-padding-horizontal: 10px !default; +$subnav-pill-item-background: transparent !default; +$subnav-pill-item-color: $subnav-item-color !default; +$subnav-pill-item-hover-background: $global-muted-background !default; +$subnav-pill-item-hover-color: $global-color !default; +$subnav-pill-item-onclick-background: $subnav-pill-item-hover-background !default; +$subnav-pill-item-onclick-color: $subnav-pill-item-hover-color !default; +$subnav-pill-item-active-background: $global-primary-background !default; +$subnav-pill-item-active-color: $global-inverse-color !default; +$subnav-item-disabled-color: $global-muted-color !default; +$inverse-subnav-item-color: $inverse-global-muted-color !default; +$inverse-subnav-item-hover-color: $inverse-global-color !default; +$inverse-subnav-item-active-color: $inverse-global-emphasis-color !default; +$inverse-subnav-divider-border: $inverse-global-border !default; +$inverse-subnav-pill-item-background: transparent !default; +$inverse-subnav-pill-item-color: $inverse-global-muted-color !default; +$inverse-subnav-pill-item-hover-background: $inverse-global-muted-background !default; +$inverse-subnav-pill-item-hover-color: $inverse-global-color !default; +$inverse-subnav-pill-item-onclick-background: $inverse-subnav-pill-item-hover-background !default; +$inverse-subnav-pill-item-onclick-color: $inverse-subnav-pill-item-hover-color !default; +$inverse-subnav-pill-item-active-background: $inverse-global-primary-background !default; +$inverse-subnav-pill-item-active-color: $inverse-global-inverse-color !default; +$inverse-subnav-item-disabled-color: $inverse-global-muted-color !default; +$tab-margin-horizontal: 20px !default; +$tab-item-padding-horizontal: 10px !default; +$tab-item-padding-vertical: 5px !default; +$tab-item-color: $global-muted-color !default; +$tab-item-hover-color: $global-color !default; +$tab-item-hover-text-decoration: none !default; +$tab-item-active-color: $global-emphasis-color !default; +$tab-item-disabled-color: $global-muted-color !default; +$inverse-tab-item-color: $inverse-global-muted-color !default; +$inverse-tab-item-hover-color: $inverse-global-color !default; +$inverse-tab-item-active-color: $inverse-global-emphasis-color !default; +$inverse-tab-item-disabled-color: $inverse-global-muted-color !default; +$table-margin-vertical: $global-margin !default; +$table-cell-padding-vertical: 16px !default; +$table-cell-padding-horizontal: 12px !default; +$table-header-cell-font-size: $global-font-size !default; +$table-header-cell-font-weight: bold !default; +$table-header-cell-color: $global-color !default; +$table-footer-font-size: $global-small-font-size !default; +$table-caption-font-size: $global-small-font-size !default; +$table-caption-color: $global-muted-color !default; +$table-row-active-background: #ffd !default; +$table-divider-border-width: $global-border-width !default; +$table-divider-border: $global-border !default; +$table-striped-row-background: $global-muted-background !default; +$table-hover-row-background: $table-row-active-background !default; +$table-small-cell-padding-vertical: 10px !default; +$table-small-cell-padding-horizontal: 12px !default; +$table-large-cell-padding-vertical: 22px !default; +$table-large-cell-padding-horizontal: 12px !default; +$table-expand-min-width: 150px !default; +$inverse-table-header-cell-color: $inverse-global-color !default; +$inverse-table-caption-color: $inverse-global-muted-color !default; +$inverse-table-row-active-background: fade-out($inverse-global-muted-background, 0.02) !default; +$inverse-table-divider-border: $inverse-global-border !default; +$inverse-table-striped-row-background: $inverse-global-muted-background !default; +$inverse-table-hover-row-background: $inverse-table-row-active-background !default; +$text-lead-font-size: $global-large-font-size !default; +$text-lead-line-height: 1.5 !default; +$text-lead-color: $global-emphasis-color !default; +$text-meta-font-size: $global-small-font-size !default; +$text-meta-line-height: 1.4 !default; +$text-meta-color: $global-muted-color !default; +$text-small-font-size: $global-small-font-size !default; +$text-small-line-height: 1.5 !default; +$text-large-font-size: $global-large-font-size !default; +$text-large-line-height: 1.5 !default; +$text-bold-font-weight: bolder !default; +$text-muted-color: $global-muted-color !default; +$text-primary-color: $global-primary-background !default; +$text-success-color: $global-success-background !default; +$text-warning-color: $global-warning-background !default; +$text-danger-color: $global-danger-background !default; +$text-background-color: $global-primary-background !default; +$inverse-text-lead-color: $inverse-global-color !default; +$inverse-text-meta-color: $inverse-global-muted-color !default; +$inverse-text-muted-color: $inverse-global-muted-color !default; +$inverse-text-primary-color: $inverse-global-color !default; +$thumbnav-margin-horizontal: 15px !default; +$thumbnav-margin-vertical: $thumbnav-margin-horizontal !default; +$tile-padding-horizontal: 15px !default; +$tile-padding-horizontal-s: $global-gutter !default; +$tile-padding-horizontal-m: $global-medium-gutter !default; +$tile-padding-vertical: $global-medium-margin !default; +$tile-padding-vertical-m: $global-large-margin !default; +$tile-xsmall-padding-vertical: $global-margin !default; +$tile-small-padding-vertical: $global-medium-margin !default; +$tile-large-padding-vertical: $global-large-margin !default; +$tile-large-padding-vertical-m: $global-xlarge-margin !default; +$tile-xlarge-padding-vertical: $global-xlarge-margin !default; +$tile-xlarge-padding-vertical-m: ($global-large-margin + $global-xlarge-margin) !default; +$tile-default-background: $global-background !default; +$tile-muted-background: $global-muted-background !default; +$tile-primary-background: $global-primary-background !default; +$tile-primary-color-mode: light !default; +$tile-secondary-background: $global-secondary-background !default; +$tile-secondary-color-mode: light !default; +$tooltip-z-index: $global-z-index + 30 !default; +$tooltip-max-width: 200px !default; +$tooltip-padding-vertical: 3px !default; +$tooltip-padding-horizontal: 6px !default; +$tooltip-background: #666 !default; +$tooltip-border-radius: 2px !default; +$tooltip-color: $global-inverse-color !default; +$tooltip-font-size: 12px !default; +$tooltip-margin: 10px !default; +$totop-padding: 5px !default; +$totop-color: $global-muted-color !default; +$totop-hover-color: $global-color !default; +$totop-active-color: $global-emphasis-color !default; +$inverse-totop-color: $inverse-global-muted-color !default; +$inverse-totop-hover-color: $inverse-global-color !default; +$inverse-totop-active-color: $inverse-global-emphasis-color !default; +$transition-duration: 0.3s !default; +$transition-scale: 1.1 !default; +$transition-slide-small-translate: 10px !default; +$transition-slide-medium-translate: 50px !default; +$transition-slow-duration: 0.7s !default; +$panel-scrollable-height: 170px !default; +$panel-scrollable-padding: 10px !default; +$panel-scrollable-border-width: $global-border-width !default; +$panel-scrollable-border: $global-border !default; +$height-small-height: 150px !default; +$height-medium-height: 300px !default; +$height-large-height: 450px !default; +$border-rounded-border-radius: 5px !default; +$box-shadow-duration: 0.1s !default; +$box-shadow-bottom-height: 30px !default; +$box-shadow-bottom-border-radius: 100% !default; +$box-shadow-bottom-background: #444 !default; +$box-shadow-bottom-blur: 20px !default; +$dropcap-margin-right: 10px !default; +$dropcap-font-size: (($global-line-height * 3) * 1em) !default; +$leader-fill-content: '.' !default; +$leader-fill-margin-left: $global-small-gutter !default; +$logo-font-size: $global-large-font-size !default; +$logo-font-family: $global-font-family !default; +$logo-color: $global-color !default; +$logo-hover-color: $global-color !default; +$dragover-box-shadow: 0 0 20px rgba(100,100,100,0.3) !default; +$inverse-logo-color: $inverse-global-color !default; +$inverse-logo-hover-color: $inverse-global-color !default; +$breakpoint-small: 640px !default; +$breakpoint-medium: 960px !default; +$breakpoint-large: 1200px !default; +$breakpoint-xlarge: 1600px !default; +$breakpoint-xsmall-max: ($breakpoint-small - 1) !default; +$breakpoint-small-max: ($breakpoint-medium - 1) !default; +$breakpoint-medium-max: ($breakpoint-large - 1) !default; +$breakpoint-large-max: ($breakpoint-xlarge - 1) !default; +$global-small-box-shadow: 0 2px 8px rgba(0,0,0,0.08) !default; +$global-medium-box-shadow: 0 5px 15px rgba(0,0,0,0.08) !default; +$global-large-box-shadow: 0 14px 25px rgba(0,0,0,0.16) !default; +$global-xlarge-box-shadow: 0 28px 50px rgba(0,0,0,0.16) !default; +$width-small-width: 150px !default; +$width-medium-width: 300px !default; +$width-large-width: 450px !default; +$width-xlarge-width: 600px !default; +$width-xxlarge-width: 750px !default; \ No newline at end of file diff --git a/assets/css/main.scss b/assets/css/main.scss new file mode 100644 index 00000000..109f4248 --- /dev/null +++ b/assets/css/main.scss @@ -0,0 +1,22 @@ +--- +# Only the main Sass file needs front matter (the dashes are enough) +--- + +// System fonts +@import "system-font-css/_system-font"; + +// Custom variables and variable overwrites. +@import "theme/variables"; + +// Import default variables and available mixins. +@import "uikit/variables-theme"; +@import "uikit/mixins-theme"; + +// Custom mixin overwrites. +@import "theme/mixins"; + +// Import UIkit. +@import "theme/uikit"; + +// Other vendor styles +@import "syntax-highlighting/github"; diff --git a/assets/img/favicon.png b/assets/img/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..09d6ca94a9c9b2548bd9fa9e02708c6e5fb59f1d GIT binary patch literal 863 zcmeAS@N?(olHy`uVBq!ia0vp^nLwPx!3HFQUH|?BQY`6?zK#qG8~eHcB(gFvFpGJ* zIEGX(zMX5^eI-DoE#19P{Gy+<^!80#FZv01vmQKk>(n9pC;b~XPS{#j-@svZOD7_F z&5lRz506`(=IJ&tpX@U!b^h$q#`)mJn4{g)ef2Ld2aipGe4}h{Lymj z(v^kNKPP)BOIGGDDLnsZL-H>R>EaK~n_s8}UY;@Go)GWNfY0+^e9t<(FMIdge2XOe zZ?zdW_GevxdgF)DE7y>DvzK3yJC^d^#kOmgSgFX>rM9_NJ4zm2xN^Mquyw$r3l$Fy zo~ zFeqG9;pBY4;E;5AZe+us|0;P$o9_mi6JSbKd2#PN_Nf;Ps*++x+zK%U#=Z z6^+lZOr2M%T+7)l<1tyIHeD#_>RL9BtAD;t*_UbRpmlcbthY`~3q%OpxX4pT=m2Ab z%VbiWN}9$JExsSOW(9BDdB6RM^v-YLJReoJJ+-S@{j|2cy!puH6~DQa)+hh0*%)_p z(GRZmT4~2;x=d^q=VRz_BHeih6+;VOOCCsAdt}+|=lzSnJ6<_=E6|Vchve${i|pp- z%(`-`?98`sY{q`~^US_#-`%GBw|u?X?fWLR2}^%}lI%9SS7Q6@hk7QDhi1z5Ac@t> zruI)QHQoRA<7Y#C8M!sHdT;NtHc(r#_g&GOz@i5RWm|gVZa-f3WA+sBsNBCVi|*K* zU%ERmd{Le2*WAj|&xWs7ymz?p&+`B4z@0Ly_WozjU8l8^G5+gaV2)w%boFyt=akR{ E0Fu6Nj{pDw literal 0 HcmV?d00001 diff --git a/assets/img/location.svg b/assets/img/location.svg new file mode 100644 index 00000000..e71e58b0 --- /dev/null +++ b/assets/img/location.svg @@ -0,0 +1,13 @@ + + + + location-dark + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/assets/img/touch-icon.png b/assets/img/touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..243615bb9ffcd1530a72d24c69a65a2bfd22a23b GIT binary patch literal 9274 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 literal 0 HcmV?d00001 diff --git a/assets/js/custom.js b/assets/js/custom.js new file mode 100644 index 00000000..d123eb35 --- /dev/null +++ b/assets/js/custom.js @@ -0,0 +1 @@ +// Custom scripts diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 00000000..031cf722 --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,8772 @@ +(function(global, factory) { + typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define("uikit", factory) : global.UIkit = factory(); +})(this, function() { + "use strict"; + function bind(fn, context) { + return function(a) { + var l = arguments.length; + return l ? l > 1 ? fn.apply(context, arguments) : fn.call(context, a) : fn.call(context); + }; + } + var ref = Object.prototype; + var hasOwnProperty = ref.hasOwnProperty; + function hasOwn(obj, key) { + return hasOwnProperty.call(obj, key); + } + var hyphenateRe = /([a-z\d])([A-Z])/g; + function hyphenate(str) { + return str.replace(hyphenateRe, "$1-$2").toLowerCase(); + } + var camelizeRE = /-(\w)/g; + function camelize(str) { + return str.replace(camelizeRE, toUpper); + } + function toUpper(_, c) { + return c ? c.toUpperCase() : ""; + } + function ucfirst(str) { + return str.length ? toUpper(null, str.charAt(0)) + str.slice(1) : ""; + } + var strPrototype = String.prototype; + var startsWithFn = strPrototype.startsWith || function(search) { + return this.lastIndexOf(search, 0) === 0; + }; + function startsWith(str, search) { + return startsWithFn.call(str, search); + } + var endsWithFn = strPrototype.endsWith || function(search) { + return this.substr(-search.length) === search; + }; + function endsWith(str, search) { + return endsWithFn.call(str, search); + } + var includesFn = function(search) { + return ~this.indexOf(search); + }; + var includesStr = strPrototype.includes || includesFn; + var includesArray = Array.prototype.includes || includesFn; + function includes(obj, search) { + return obj && (isString(obj) ? includesStr : includesArray).call(obj, search); + } + var isArray = Array.isArray; + function isFunction(obj) { + return typeof obj === "function"; + } + function isObject(obj) { + return obj !== null && typeof obj === "object"; + } + function isPlainObject(obj) { + return isObject(obj) && Object.getPrototypeOf(obj) === Object.prototype; + } + function isWindow(obj) { + return isObject(obj) && obj === obj.window; + } + function isDocument(obj) { + return isObject(obj) && obj.nodeType === 9; + } + function isJQuery(obj) { + return isObject(obj) && !!obj.jquery; + } + function isNode(element) { + return element instanceof Node || isObject(element) && element.nodeType === 1; + } + function isNodeCollection(element) { + return element instanceof NodeList || element instanceof HTMLCollection; + } + function isBoolean(value) { + return typeof value === "boolean"; + } + function isString(value) { + return typeof value === "string"; + } + function isNumber(value) { + return typeof value === "number"; + } + function isNumeric(value) { + return isNumber(value) || isString(value) && !isNaN(value - parseFloat(value)); + } + function isUndefined(value) { + return value === void 0; + } + function toBoolean(value) { + return isBoolean(value) ? value : value === "true" || value === "1" || value === "" ? true : value === "false" || value === "0" ? false : value; + } + function toNumber(value) { + var number = Number(value); + return !isNaN(number) ? number : false; + } + function toFloat(value) { + return parseFloat(value) || 0; + } + function toNode(element) { + return isNode(element) || isWindow(element) || isDocument(element) ? element : isNodeCollection(element) || isJQuery(element) ? element[0] : isArray(element) ? toNode(element[0]) : null; + } + var arrayProto = Array.prototype; + function toNodes(element) { + return isNode(element) ? [ element ] : isNodeCollection(element) ? arrayProto.slice.call(element) : isArray(element) ? element.map(toNode).filter(Boolean) : isJQuery(element) ? element.toArray() : []; + } + function toList(value) { + return isArray(value) ? value : isString(value) ? value.split(/,(?![^(]*\))/).map(function(value) { + return isNumeric(value) ? toNumber(value) : toBoolean(value.trim()); + }) : [ value ]; + } + function toMs(time) { + return !time ? 0 : endsWith(time, "ms") ? toFloat(time) : toFloat(time) * 1e3; + } + function swap(value, a, b) { + return value.replace(new RegExp(a + "|" + b, "mg"), function(match) { + return match === a ? b : a; + }); + } + var assign = Object.assign || function(target) { + var args = [], len = arguments.length - 1; + while (len-- > 0) args[len] = arguments[len + 1]; + target = Object(target); + for (var i = 0; i < args.length; i++) { + var source = args[i]; + if (source !== null) { + for (var key in source) { + if (hasOwn(source, key)) { + target[key] = source[key]; + } + } + } + } + return target; + }; + function each(obj, cb) { + for (var key in obj) { + if (cb.call(obj[key], obj[key], key) === false) { + break; + } + } + } + function sortBy(collection, prop) { + return collection.sort(function(a, b) { + return a[prop] - b[prop]; + }); + } + function clamp(number, min, max) { + if (min === void 0) min = 0; + if (max === void 0) max = 1; + return Math.min(Math.max(number, min), max); + } + function noop() {} + function intersectRect(r1, r2) { + return r1.left <= r2.right && r2.left <= r1.right && r1.top <= r2.bottom && r2.top <= r1.bottom; + } + function pointInRect(point, rect) { + return intersectRect({ + top: point.y, + bottom: point.y, + left: point.x, + right: point.x + }, rect); + } + var Dimensions = { + ratio: function ratio(dimensions, prop, value) { + var obj; + var aProp = prop === "width" ? "height" : "width"; + return obj = {}, obj[aProp] = Math.round(value * dimensions[aProp] / dimensions[prop]), + obj[prop] = value, obj; + }, + contain: function contain(dimensions, maxDimensions) { + var this$1 = this; + dimensions = assign({}, dimensions); + each(dimensions, function(_, prop) { + return dimensions = dimensions[prop] > maxDimensions[prop] ? this$1.ratio(dimensions, prop, maxDimensions[prop]) : dimensions; + }); + return dimensions; + }, + cover: function cover(dimensions, maxDimensions) { + var this$1 = this; + dimensions = this.contain(dimensions, maxDimensions); + each(dimensions, function(_, prop) { + return dimensions = dimensions[prop] < maxDimensions[prop] ? this$1.ratio(dimensions, prop, maxDimensions[prop]) : dimensions; + }); + return dimensions; + } + }; + function attr(element, name, value) { + if (isObject(name)) { + for (var key in name) { + attr(element, key, name[key]); + } + return; + } + if (isUndefined(value)) { + element = toNode(element); + return element && element.getAttribute(name); + } else { + toNodes(element).forEach(function(element) { + if (isFunction(value)) { + value = value.call(element, attr(element, name)); + } + if (value === null) { + removeAttr(element, name); + } else { + element.setAttribute(name, value); + } + }); + } + } + function hasAttr(element, name) { + return toNodes(element).some(function(element) { + return element.hasAttribute(name); + }); + } + function removeAttr(element, name) { + element = toNodes(element); + name.split(" ").forEach(function(name) { + return element.forEach(function(element) { + return element.removeAttribute(name); + }); + }); + } + function filterAttr(element, attribute, pattern, replacement) { + attr(element, attribute, function(value) { + return value ? value.replace(pattern, replacement) : value; + }); + } + function data(element, attribute) { + for (var i = 0, attrs = [ attribute, "data-" + attribute ]; i < attrs.length; i++) { + if (hasAttr(element, attrs[i])) { + return attr(element, attrs[i]); + } + } + } + function query(selector, context) { + return toNode(selector) || find(selector, isContextSelector(selector) ? context : document); + } + function queryAll(selector, context) { + var nodes = toNodes(selector); + return nodes.length && nodes || findAll(selector, isContextSelector(selector) ? context : document); + } + function find(selector, context) { + return toNode(_query(selector, context, "querySelector")); + } + function findAll(selector, context) { + return toNodes(_query(selector, context, "querySelectorAll")); + } + function _query(selector, context, queryFn) { + if (context === void 0) context = document; + if (!selector || !isString(selector)) { + return null; + } + selector = selector.replace(contextSanitizeRe, "$1 *"); + var removes; + if (isContextSelector(selector)) { + removes = []; + selector = selector.split(",").map(function(selector, i) { + var ctx = context; + selector = selector.trim(); + if (selector[0] === "!") { + var selectors = selector.substr(1).trim().split(" "); + ctx = closest(context.parentNode, selectors[0]); + selector = selectors.slice(1).join(" "); + } + if (!ctx) { + return null; + } + if (!ctx.id) { + ctx.id = "uk-" + Date.now() + i; + removes.push(function() { + return removeAttr(ctx, "id"); + }); + } + return "#" + escape(ctx.id) + " " + selector; + }).filter(Boolean).join(","); + context = document; + } + try { + return context[queryFn](selector); + } catch (e) { + return null; + } finally { + removes && removes.forEach(function(remove) { + return remove(); + }); + } + } + var contextSelectorRe = /(^|,)\s*[!>+~]/; + var contextSanitizeRe = /([!>+~])(?=\s+[!>+~]|\s*$)/g; + function isContextSelector(selector) { + return isString(selector) && selector.match(contextSelectorRe); + } + var elProto = Element.prototype; + var matchesFn = elProto.matches || elProto.webkitMatchesSelector || elProto.msMatchesSelector; + function matches(element, selector) { + return toNodes(element).some(function(element) { + return matchesFn.call(element, selector); + }); + } + var closestFn = elProto.closest || function(selector) { + var ancestor = this; + do { + if (matches(ancestor, selector)) { + return ancestor; + } + ancestor = ancestor.parentNode; + } while (ancestor && ancestor.nodeType === 1); + }; + function closest(element, selector) { + if (startsWith(selector, ">")) { + selector = selector.slice(1); + } + return isNode(element) ? element.parentNode && closestFn.call(element, selector) : toNodes(element).map(function(element) { + return element.parentNode && closestFn.call(element, selector); + }).filter(Boolean); + } + function parents(element, selector) { + var elements = []; + var parent = toNode(element).parentNode; + while (parent && parent.nodeType === 1) { + if (matches(parent, selector)) { + elements.push(parent); + } + parent = parent.parentNode; + } + return elements; + } + var escapeFn = window.CSS && CSS.escape || function(css) { + return css.replace(/([^\x7f-\uFFFF\w-])/g, function(match) { + return "\\" + match; + }); + }; + function escape(css) { + return isString(css) ? escapeFn.call(null, css) : ""; + } + var voidElements = { + area: true, + base: true, + br: true, + col: true, + embed: true, + hr: true, + img: true, + input: true, + keygen: true, + link: true, + menuitem: true, + meta: true, + param: true, + source: true, + track: true, + wbr: true + }; + function isVoidElement(element) { + return toNodes(element).some(function(element) { + return voidElements[element.tagName.toLowerCase()]; + }); + } + function isVisible(element) { + return toNodes(element).some(function(element) { + return element.offsetHeight || element.getBoundingClientRect().height; + }); + } + var selInput = "input,select,textarea,button"; + function isInput(element) { + return toNodes(element).some(function(element) { + return matches(element, selInput); + }); + } + function filter(element, selector) { + return toNodes(element).filter(function(element) { + return matches(element, selector); + }); + } + function within(element, selector) { + return !isString(selector) ? element === selector || (isDocument(selector) ? selector.documentElement : toNode(selector)).contains(toNode(element)) : matches(element, selector) || closest(element, selector); + } + function on() { + var args = [], len = arguments.length; + while (len--) args[len] = arguments[len]; + var ref = getArgs(args); + var target = ref[0]; + var type = ref[1]; + var selector = ref[2]; + var listener = ref[3]; + var useCapture = ref[4]; + target = toEventTarget(target); + if (selector) { + listener = delegate(target, selector, listener); + } + if (listener.length > 1) { + listener = detail(listener); + } + type.split(" ").forEach(function(type) { + return target && target.addEventListener(type, listener, useCapture); + }); + return function() { + return off(target, type, listener, useCapture); + }; + } + function off(target, type, listener, useCapture) { + if (useCapture === void 0) useCapture = false; + target = toEventTarget(target); + target && type.split(" ").forEach(function(type) { + return target.removeEventListener(type, listener, useCapture); + }); + } + function once() { + var args = [], len = arguments.length; + while (len--) args[len] = arguments[len]; + var ref = getArgs(args); + var element = ref[0]; + var type = ref[1]; + var selector = ref[2]; + var listener = ref[3]; + var useCapture = ref[4]; + var condition = ref[5]; + var off = on(element, type, selector, function(e) { + var result = !condition || condition(e); + if (result) { + off(); + listener(e, result); + } + }, useCapture); + return off; + } + function trigger(target, event, detail) { + return toEventTargets(target).reduce(function(notCanceled, target) { + return notCanceled && target.dispatchEvent(createEvent(event, true, true, detail)); + }, true); + } + function createEvent(e, bubbles, cancelable, detail) { + if (bubbles === void 0) bubbles = true; + if (cancelable === void 0) cancelable = false; + if (isString(e)) { + var event = document.createEvent("CustomEvent"); + event.initCustomEvent(e, bubbles, cancelable, detail); + e = event; + } + return e; + } + function getArgs(args) { + if (isString(args[0])) { + args[0] = find(args[0]); + } + if (isFunction(args[2])) { + args.splice(2, 0, false); + } + return args; + } + function delegate(element, selector, listener) { + var this$1 = this; + return function(e) { + var target = e.target; + var current = selector[0] === ">" ? findAll(selector, element).reverse().filter(function(element) { + return within(target, element); + })[0] : closest(target, selector); + if (current) { + e.delegate = element; + e.current = current; + listener.call(this$1, e); + } + }; + } + function detail(listener) { + return function(e) { + return isArray(e.detail) ? listener.apply(listener, [ e ].concat(e.detail)) : listener(e); + }; + } + function isEventTarget(target) { + return "EventTarget" in window ? target instanceof EventTarget : target && "addEventListener" in target; + } + function toEventTarget(target) { + return isEventTarget(target) ? target : toNode(target); + } + function toEventTargets(target) { + return isEventTarget(target) ? [ target ] : isArray(target) ? target.map(toEventTarget).filter(Boolean) : toNodes(target); + } + function preventClick() { + var timer = setTimeout(once(document, "click", function(e) { + e.preventDefault(); + e.stopImmediatePropagation(); + clearTimeout(timer); + }, true)); + trigger(document, "touchcancel"); + } + var Promise = "Promise" in window ? window.Promise : PromiseFn; + var Deferred = function Deferred() { + var this$1 = this; + this.promise = new Promise(function(resolve, reject) { + this$1.reject = reject; + this$1.resolve = resolve; + }); + }; + var RESOLVED = 0; + var REJECTED = 1; + var PENDING = 2; + var async = "setImmediate" in window ? setImmediate : setTimeout; + function PromiseFn(executor) { + this.state = PENDING; + this.value = undefined; + this.deferred = []; + var promise = this; + try { + executor(function(x) { + promise.resolve(x); + }, function(r) { + promise.reject(r); + }); + } catch (e) { + promise.reject(e); + } + } + PromiseFn.reject = function(r) { + return new PromiseFn(function(resolve, reject) { + reject(r); + }); + }; + PromiseFn.resolve = function(x) { + return new PromiseFn(function(resolve, reject) { + resolve(x); + }); + }; + PromiseFn.all = function all(iterable) { + return new PromiseFn(function(resolve, reject) { + var result = []; + var count = 0; + if (iterable.length === 0) { + resolve(result); + } + function resolver(i) { + return function(x) { + result[i] = x; + count += 1; + if (count === iterable.length) { + resolve(result); + } + }; + } + for (var i = 0; i < iterable.length; i += 1) { + PromiseFn.resolve(iterable[i]).then(resolver(i), reject); + } + }); + }; + PromiseFn.race = function race(iterable) { + return new PromiseFn(function(resolve, reject) { + for (var i = 0; i < iterable.length; i += 1) { + PromiseFn.resolve(iterable[i]).then(resolve, reject); + } + }); + }; + var p = PromiseFn.prototype; + p.resolve = function resolve(x) { + var promise = this; + if (promise.state === PENDING) { + if (x === promise) { + throw new TypeError("Promise settled with itself."); + } + var called = false; + try { + var then = x && x.then; + if (x !== null && isObject(x) && isFunction(then)) { + then.call(x, function(x) { + if (!called) { + promise.resolve(x); + } + called = true; + }, function(r) { + if (!called) { + promise.reject(r); + } + called = true; + }); + return; + } + } catch (e) { + if (!called) { + promise.reject(e); + } + return; + } + promise.state = RESOLVED; + promise.value = x; + promise.notify(); + } + }; + p.reject = function reject(reason) { + var promise = this; + if (promise.state === PENDING) { + if (reason === promise) { + throw new TypeError("Promise settled with itself."); + } + promise.state = REJECTED; + promise.value = reason; + promise.notify(); + } + }; + p.notify = function notify() { + var this$1 = this; + async(function() { + if (this$1.state !== PENDING) { + while (this$1.deferred.length) { + var ref = this$1.deferred.shift(); + var onResolved = ref[0]; + var onRejected = ref[1]; + var resolve = ref[2]; + var reject = ref[3]; + try { + if (this$1.state === RESOLVED) { + if (isFunction(onResolved)) { + resolve(onResolved.call(undefined, this$1.value)); + } else { + resolve(this$1.value); + } + } else if (this$1.state === REJECTED) { + if (isFunction(onRejected)) { + resolve(onRejected.call(undefined, this$1.value)); + } else { + reject(this$1.value); + } + } + } catch (e) { + reject(e); + } + } + } + }); + }; + p.then = function then(onResolved, onRejected) { + var this$1 = this; + return new PromiseFn(function(resolve, reject) { + this$1.deferred.push([ onResolved, onRejected, resolve, reject ]); + this$1.notify(); + }); + }; + p.catch = function(onRejected) { + return this.then(undefined, onRejected); + }; + function ajax(url, options) { + return new Promise(function(resolve, reject) { + var env = assign({ + data: null, + method: "GET", + headers: {}, + xhr: new XMLHttpRequest(), + beforeSend: noop, + responseType: "" + }, options); + env.beforeSend(env); + var xhr = env.xhr; + for (var prop in env) { + if (prop in xhr) { + try { + xhr[prop] = env[prop]; + } catch (e) {} + } + } + xhr.open(env.method.toUpperCase(), url); + for (var header in env.headers) { + xhr.setRequestHeader(header, env.headers[header]); + } + on(xhr, "load", function() { + if (xhr.status === 0 || xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) { + resolve(xhr); + } else { + reject(assign(Error(xhr.statusText), { + xhr: xhr, + status: xhr.status + })); + } + }); + on(xhr, "error", function() { + return reject(assign(Error("Network Error"), { + xhr: xhr + })); + }); + on(xhr, "timeout", function() { + return reject(assign(Error("Network Timeout"), { + xhr: xhr + })); + }); + xhr.send(env.data); + }); + } + function getImage(src) { + return new Promise(function(resolve, reject) { + var img = new Image(); + img.onerror = reject; + img.onload = function() { + return resolve(img); + }; + img.src = src; + }); + } + function isReady() { + return document.readyState === "complete" || document.readyState !== "loading" && !document.documentElement.doScroll; + } + function ready(fn) { + if (isReady()) { + fn(); + return; + } + var handle = function() { + unbind1(); + unbind2(); + fn(); + }; + var unbind1 = on(document, "DOMContentLoaded", handle); + var unbind2 = on(window, "load", handle); + } + function index(element, ref) { + return ref ? toNodes(element).indexOf(toNode(ref)) : toNodes((element = toNode(element)) && element.parentNode.children).indexOf(element); + } + function getIndex(i, elements, current, finite) { + if (current === void 0) current = 0; + if (finite === void 0) finite = false; + elements = toNodes(elements); + var length = elements.length; + i = isNumeric(i) ? toNumber(i) : i === "next" ? current + 1 : i === "previous" ? current - 1 : index(elements, i); + if (finite) { + return clamp(i, 0, length - 1); + } + i %= length; + return i < 0 ? i + length : i; + } + function empty(element) { + element = toNode(element); + element.innerHTML = ""; + return element; + } + function html(parent, html) { + parent = toNode(parent); + return isUndefined(html) ? parent.innerHTML : append(parent.hasChildNodes() ? empty(parent) : parent, html); + } + function prepend(parent, element) { + parent = toNode(parent); + if (!parent.hasChildNodes()) { + return append(parent, element); + } else { + return insertNodes(element, function(element) { + return parent.insertBefore(element, parent.firstChild); + }); + } + } + function append(parent, element) { + parent = toNode(parent); + return insertNodes(element, function(element) { + return parent.appendChild(element); + }); + } + function before(ref, element) { + ref = toNode(ref); + return insertNodes(element, function(element) { + return ref.parentNode.insertBefore(element, ref); + }); + } + function after(ref, element) { + ref = toNode(ref); + return insertNodes(element, function(element) { + return ref.nextSibling ? before(ref.nextSibling, element) : append(ref.parentNode, element); + }); + } + function insertNodes(element, fn) { + element = isString(element) ? fragment(element) : element; + return element ? "length" in element ? toNodes(element).map(fn) : fn(element) : null; + } + function remove(element) { + toNodes(element).map(function(element) { + return element.parentNode && element.parentNode.removeChild(element); + }); + } + function wrapAll(element, structure) { + structure = toNode(before(element, structure)); + while (structure.firstChild) { + structure = structure.firstChild; + } + append(structure, element); + return structure; + } + function wrapInner(element, structure) { + return toNodes(toNodes(element).map(function(element) { + return element.hasChildNodes ? wrapAll(toNodes(element.childNodes), structure) : append(element, structure); + })); + } + function unwrap(element) { + toNodes(element).map(function(element) { + return element.parentNode; + }).filter(function(value, index, self) { + return self.indexOf(value) === index; + }).forEach(function(parent) { + before(parent, parent.childNodes); + remove(parent); + }); + } + var fragmentRE = /^\s*<(\w+|!)[^>]*>/; + var singleTagRE = /^<(\w+)\s*\/?>(?:<\/\1>)?$/; + function fragment(html) { + var matches = singleTagRE.exec(html); + if (matches) { + return document.createElement(matches[1]); + } + var container = document.createElement("div"); + if (fragmentRE.test(html)) { + container.insertAdjacentHTML("beforeend", html.trim()); + } else { + container.textContent = html; + } + return container.childNodes.length > 1 ? toNodes(container.childNodes) : container.firstChild; + } + function apply(node, fn) { + if (!node || node.nodeType !== 1) { + return; + } + fn(node); + node = node.firstElementChild; + while (node) { + apply(node, fn); + node = node.nextElementSibling; + } + } + function addClass(element) { + var args = [], len = arguments.length - 1; + while (len-- > 0) args[len] = arguments[len + 1]; + apply$1(element, args, "add"); + } + function removeClass(element) { + var args = [], len = arguments.length - 1; + while (len-- > 0) args[len] = arguments[len + 1]; + apply$1(element, args, "remove"); + } + function removeClasses(element, cls) { + filterAttr(element, "class", new RegExp("(^|\\s)" + cls + "(?!\\S)", "g"), ""); + } + function replaceClass(element) { + var args = [], len = arguments.length - 1; + while (len-- > 0) args[len] = arguments[len + 1]; + args[0] && removeClass(element, args[0]); + args[1] && addClass(element, args[1]); + } + function hasClass(element, cls) { + return toNodes(element).some(function(element) { + return element.classList.contains(cls); + }); + } + function toggleClass(element) { + var args = [], len = arguments.length - 1; + while (len-- > 0) args[len] = arguments[len + 1]; + if (!args.length) { + return; + } + args = getArgs$1(args); + var force = !isString(args[args.length - 1]) ? args.pop() : []; + args = args.filter(Boolean); + toNodes(element).forEach(function(ref) { + var classList = ref.classList; + for (var i = 0; i < args.length; i++) { + supports.Force ? classList.toggle.apply(classList, [ args[i] ].concat(force)) : classList[(!isUndefined(force) ? force : !classList.contains(args[i])) ? "add" : "remove"](args[i]); + } + }); + } + function apply$1(element, args, fn) { + args = getArgs$1(args).filter(Boolean); + args.length && toNodes(element).forEach(function(ref) { + var classList = ref.classList; + supports.Multiple ? classList[fn].apply(classList, args) : args.forEach(function(cls) { + return classList[fn](cls); + }); + }); + } + function getArgs$1(args) { + return args.reduce(function(args, arg) { + return args.concat.call(args, isString(arg) && includes(arg, " ") ? arg.trim().split(" ") : arg); + }, []); + } + var supports = {}; + (function() { + var list = document.createElement("_").classList; + if (list) { + list.add("a", "b"); + list.toggle("c", false); + supports.Multiple = list.contains("b"); + supports.Force = !list.contains("c"); + } + list = null; + })(); + var cssNumber = { + "animation-iteration-count": true, + "column-count": true, + "fill-opacity": true, + "flex-grow": true, + "flex-shrink": true, + "font-weight": true, + "line-height": true, + opacity: true, + order: true, + orphans: true, + widows: true, + "z-index": true, + zoom: true + }; + function css(element, property, value) { + return toNodes(element).map(function(element) { + if (isString(property)) { + property = propName(property); + if (isUndefined(value)) { + return getStyle(element, property); + } else if (!value && value !== 0) { + element.style.removeProperty(property); + } else { + element.style[property] = isNumeric(value) && !cssNumber[property] ? value + "px" : value; + } + } else if (isArray(property)) { + var styles = getStyles(element); + return property.reduce(function(props, property) { + props[property] = styles[propName(property)]; + return props; + }, {}); + } else if (isObject(property)) { + each(property, function(value, property) { + return css(element, property, value); + }); + } + return element; + })[0]; + } + function getStyles(element, pseudoElt) { + element = toNode(element); + return element.ownerDocument.defaultView.getComputedStyle(element, pseudoElt); + } + function getStyle(element, property, pseudoElt) { + return getStyles(element, pseudoElt)[property]; + } + var vars = {}; + function getCssVar(name) { + if (!(name in vars)) { + var element = append(document.documentElement, document.createElement("div")); + addClass(element, "var-" + name); + try { + vars[name] = getStyle(element, "content", ":before").replace(/^["'](.*)["']$/, "$1"); + vars[name] = JSON.parse(vars[name]); + } catch (e) {} + document.documentElement.removeChild(element); + } + return vars[name]; + } + var cssProps = {}; + function propName(name) { + var ret = cssProps[name]; + if (!ret) { + ret = cssProps[name] = vendorPropName(name) || name; + } + return ret; + } + var cssPrefixes = [ "webkit", "moz", "ms" ]; + var ref$1 = document.createElement("_"); + var style = ref$1.style; + function vendorPropName(name) { + name = hyphenate(name); + if (name in style) { + return name; + } + var i = cssPrefixes.length, prefixedName; + while (i--) { + prefixedName = "-" + cssPrefixes[i] + "-" + name; + if (prefixedName in style) { + return prefixedName; + } + } + } + function transition(element, props, duration, timing) { + if (duration === void 0) duration = 400; + if (timing === void 0) timing = "linear"; + return Promise.all(toNodes(element).map(function(element) { + return new Promise(function(resolve, reject) { + for (var name in props) { + var value = css(element, name); + if (value === "") { + css(element, name, value); + } + } + var timer = setTimeout(function() { + return trigger(element, "transitionend"); + }, duration); + once(element, "transitionend transitioncanceled", function(ref) { + var type = ref.type; + clearTimeout(timer); + removeClass(element, "uk-transition"); + css(element, { + "transition-property": "", + "transition-duration": "", + "transition-timing-function": "" + }); + type === "transitioncanceled" ? reject() : resolve(); + }, false, function(ref) { + var target = ref.target; + return element === target; + }); + addClass(element, "uk-transition"); + css(element, assign({ + "transition-property": Object.keys(props).map(propName).join(","), + "transition-duration": duration + "ms", + "transition-timing-function": timing + }, props)); + }); + })); + } + var Transition = { + start: transition, + stop: function stop(element) { + trigger(element, "transitionend"); + return Promise.resolve(); + }, + cancel: function cancel(element) { + trigger(element, "transitioncanceled"); + }, + inProgress: function inProgress(element) { + return hasClass(element, "uk-transition"); + } + }; + var animationPrefix = "uk-animation-"; + var clsCancelAnimation = "uk-cancel-animation"; + function animate(element, animation, duration, origin, out) { + var arguments$1 = arguments; + if (duration === void 0) duration = 200; + return Promise.all(toNodes(element).map(function(element) { + return new Promise(function(resolve, reject) { + if (hasClass(element, clsCancelAnimation)) { + requestAnimationFrame(function() { + return Promise.resolve().then(function() { + return animate.apply(void 0, arguments$1).then(resolve, reject); + }); + }); + return; + } + var cls = animation + " " + animationPrefix + (out ? "leave" : "enter"); + if (startsWith(animation, animationPrefix)) { + if (origin) { + cls += " uk-transform-origin-" + origin; + } + if (out) { + cls += " " + animationPrefix + "reverse"; + } + } + reset(); + once(element, "animationend animationcancel", function(ref) { + var type = ref.type; + var hasReset = false; + if (type === "animationcancel") { + reject(); + reset(); + } else { + resolve(); + Promise.resolve().then(function() { + hasReset = true; + reset(); + }); + } + requestAnimationFrame(function() { + if (!hasReset) { + addClass(element, clsCancelAnimation); + requestAnimationFrame(function() { + return removeClass(element, clsCancelAnimation); + }); + } + }); + }, false, function(ref) { + var target = ref.target; + return element === target; + }); + css(element, "animationDuration", duration + "ms"); + addClass(element, cls); + function reset() { + css(element, "animationDuration", ""); + removeClasses(element, animationPrefix + "\\S*"); + } + }); + })); + } + var inProgress = new RegExp(animationPrefix + "(enter|leave)"); + var Animation = { + in: function in$1(element, animation, duration, origin) { + return animate(element, animation, duration, origin, false); + }, + out: function out(element, animation, duration, origin) { + return animate(element, animation, duration, origin, true); + }, + inProgress: function inProgress$1(element) { + return inProgress.test(attr(element, "class")); + }, + cancel: function cancel(element) { + trigger(element, "animationcancel"); + } + }; + function $(selector, context) { + return !isString(selector) ? toNode(selector) : isHtml(selector) ? toNode(fragment(selector)) : find(selector, context); + } + function $$(selector, context) { + return !isString(selector) ? toNodes(selector) : isHtml(selector) ? toNodes(fragment(selector)) : findAll(selector, context); + } + function isHtml(str) { + return str[0] === "<" || str.match(/^\s* boundary[alignFlip]) { + var centerOffset = dim[prop] / 2; + var centerTargetOffset = targetAttach[dir] === "center" ? -targetDim[prop] / 2 : 0; + elAttach[dir] === "center" && (apply(centerOffset, centerTargetOffset) || apply(-centerOffset, -centerTargetOffset)) || apply(elemOffset, targetOffset); + } + function apply(elemOffset, targetOffset) { + var newVal = position[align] + elemOffset + targetOffset - elOffset[dir] * 2; + if (newVal >= boundary[align] && newVal + dim[prop] <= boundary[alignFlip]) { + position[align] = newVal; + [ "element", "target" ].forEach(function(el) { + flipped[el][dir] = !elemOffset ? flipped[el][dir] : flipped[el][dir] === dirs[prop][1] ? dirs[prop][2] : dirs[prop][1]; + }); + return true; + } + } + }); + } + offset(element, position); + return flipped; + } + function offset(element, coordinates) { + element = toNode(element); + if (coordinates) { + var currentOffset = offset(element); + var pos = css(element, "position"); + [ "left", "top" ].forEach(function(prop) { + if (prop in coordinates) { + var value = css(element, prop); + element.style[prop] = coordinates[prop] - currentOffset[prop] + toFloat(pos === "absolute" && value === "auto" ? position(element)[prop] : value) + "px"; + } + }); + return; + } + return getDimensions(element); + } + function getDimensions(element) { + element = toNode(element); + var ref = window$1(element); + var top = ref.pageYOffset; + var left = ref.pageXOffset; + if (isWindow(element)) { + var height = element.innerHeight; + var width = element.innerWidth; + return { + top: top, + left: left, + height: height, + width: width, + bottom: top + height, + right: left + width + }; + } + var display = false; + if (!isVisible(element)) { + display = element.style.display; + element.style.display = "block"; + } + var rect = element.getBoundingClientRect(); + if (display !== false) { + element.style.display = display; + } + return { + height: rect.height, + width: rect.width, + top: rect.top + top, + left: rect.left + left, + bottom: rect.bottom + top, + right: rect.right + left + }; + } + function position(element) { + element = toNode(element); + var parent = offsetParent(element); + var parentOffset = parent === docEl(element) ? { + top: 0, + left: 0 + } : offset(parent); + var ref = [ "top", "left" ].reduce(function(props, prop) { + var propName$$1 = ucfirst(prop); + props[prop] -= parentOffset[prop] + (toFloat(css(element, "margin" + propName$$1)) || 0) + (toFloat(css(parent, "border" + propName$$1 + "Width")) || 0); + return props; + }, offset(element)); + var top = ref.top; + var left = ref.left; + return { + top: top, + left: left + }; + } + function offsetParent(element) { + var parent = toNode(element).offsetParent; + while (parent && css(parent, "position") === "static") { + parent = parent.offsetParent; + } + return parent || docEl(element); + } + var height = dimension("height"); + var width = dimension("width"); + function dimension(prop) { + var propName$$1 = ucfirst(prop); + return function(element, value) { + element = toNode(element); + if (isUndefined(value)) { + if (isWindow(element)) { + return element["inner" + propName$$1]; + } + if (isDocument(element)) { + var doc = element.documentElement; + return Math.max(doc["offset" + propName$$1], doc["scroll" + propName$$1]); + } + value = css(element, prop); + value = value === "auto" ? element["offset" + propName$$1] : toFloat(value) || 0; + return value - boxModelAdjust(prop, element); + } else { + css(element, prop, !value && value !== 0 ? "" : +value + boxModelAdjust(prop, element) + "px"); + } + }; + } + function boxModelAdjust(prop, element) { + return css(element, "boxSizing") === "border-box" ? dirs[prop].slice(1).map(ucfirst).reduce(function(value, prop) { + return value + toFloat(css(element, "padding" + prop)) + toFloat(css(element, "border" + prop + "Width")); + }, 0) : 0; + } + function moveTo(position, attach, dim, factor) { + each(dirs, function(ref, prop) { + var dir = ref[0]; + var align = ref[1]; + var alignFlip = ref[2]; + if (attach[dir] === alignFlip) { + position[align] += dim[prop] * factor; + } else if (attach[dir] === "center") { + position[align] += dim[prop] * factor / 2; + } + }); + } + function getPos(pos) { + var x = /left|center|right/; + var y = /top|center|bottom/; + pos = (pos || "").split(" "); + if (pos.length === 1) { + pos = x.test(pos[0]) ? pos.concat([ "center" ]) : y.test(pos[0]) ? [ "center" ].concat(pos) : [ "center", "center" ]; + } + return { + x: x.test(pos[0]) ? pos[0] : "center", + y: y.test(pos[1]) ? pos[1] : "center" + }; + } + function getOffsets(offsets, width, height) { + var ref = (offsets || "").split(" "); + var x = ref[0]; + var y = ref[1]; + return { + x: x ? toFloat(x) * (endsWith(x, "%") ? width / 100 : 1) : 0, + y: y ? toFloat(y) * (endsWith(y, "%") ? height / 100 : 1) : 0 + }; + } + function flipPosition(pos) { + switch (pos) { + case "left": + return "right"; + + case "right": + return "left"; + + case "top": + return "bottom"; + + case "bottom": + return "top"; + + default: + return pos; + } + } + function isInView(element, top, left) { + if (top === void 0) top = 0; + if (left === void 0) left = 0; + element = toNode(element); + var win = window$1(element); + return isVisible(element) && intersectRect(element.getBoundingClientRect(), { + top: top, + left: left, + bottom: top + height(win), + right: left + width(win) + }); + } + function scrolledOver(element) { + if (!isVisible(element)) { + return 0; + } + element = toNode(element); + var win = window$1(element); + var doc = document$1(element); + var elHeight = element.offsetHeight; + var top = positionTop(element); + var vp = height(win); + var vh = vp + Math.min(0, top - vp); + var diff = Math.max(0, vp - (height(doc) - (top + elHeight))); + return clamp((vh + win.pageYOffset - top) / ((vh + (elHeight - (diff < vp ? diff : 0))) / 100) / 100); + } + function positionTop(element) { + var top = 0; + do { + top += element.offsetTop; + } while (element = element.offsetParent); + return top; + } + function window$1(element) { + return isWindow(element) ? element : document$1(element).defaultView; + } + function document$1(element) { + return toNode(element).ownerDocument; + } + function docEl(element) { + return document$1(element).documentElement; + } + var isRtl = attr(document.documentElement, "dir") === "rtl"; + var hasTouchEvents = "ontouchstart" in window; + var hasPointerEvents = window.PointerEvent; + var hasTouch = hasTouchEvents || window.DocumentTouch && document instanceof DocumentTouch || navigator.maxTouchPoints; + var pointerDown = !hasTouch ? "mousedown" : "mousedown " + (hasTouchEvents ? "touchstart" : "pointerdown"); + var pointerMove = !hasTouch ? "mousemove" : "mousemove " + (hasTouchEvents ? "touchmove" : "pointermove"); + var pointerUp = !hasTouch ? "mouseup" : "mouseup " + (hasTouchEvents ? "touchend" : "pointerup"); + var pointerEnter = hasTouch && hasPointerEvents ? "pointerenter" : "mouseenter"; + var pointerLeave = hasTouch && hasPointerEvents ? "pointerleave" : "mouseleave"; + var fastdom = { + reads: [], + writes: [], + read: function read(task) { + this.reads.push(task); + scheduleFlush(); + return task; + }, + write: function write(task) { + this.writes.push(task); + scheduleFlush(); + return task; + }, + clear: function clear(task) { + return remove$1(this.reads, task) || remove$1(this.writes, task); + }, + flush: function flush() { + runTasks(this.reads); + runTasks(this.writes.splice(0, this.writes.length)); + this.scheduled = false; + if (this.reads.length || this.writes.length) { + scheduleFlush(); + } + } + }; + function scheduleFlush() { + if (!fastdom.scheduled) { + fastdom.scheduled = true; + requestAnimationFrame(fastdom.flush.bind(fastdom)); + } + } + function runTasks(tasks) { + var task; + while (task = tasks.shift()) { + task(); + } + } + function remove$1(array, item) { + var index = array.indexOf(item); + return !!~index && !!array.splice(index, 1); + } + function MouseTracker() {} + MouseTracker.prototype = { + positions: [], + position: null, + init: function init() { + var this$1 = this; + this.positions = []; + this.position = null; + var ticking = false; + this.unbind = on(document, "mousemove", function(e) { + if (ticking) { + return; + } + setTimeout(function() { + var time = Date.now(); + var ref = this$1.positions; + var length = ref.length; + if (length && time - this$1.positions[length - 1].time > 100) { + this$1.positions.splice(0, length); + } + this$1.positions.push({ + time: time, + x: e.pageX, + y: e.pageY + }); + if (this$1.positions.length > 5) { + this$1.positions.shift(); + } + ticking = false; + }, 5); + ticking = true; + }); + }, + cancel: function cancel() { + if (this.unbind) { + this.unbind(); + } + }, + movesTo: function movesTo(target) { + if (this.positions.length < 2) { + return false; + } + var p = offset(target); + var position$$1 = this.positions[this.positions.length - 1]; + var ref = this.positions; + var prevPos = ref[0]; + if (p.left <= position$$1.x && position$$1.x <= p.right && p.top <= position$$1.y && position$$1.y <= p.bottom) { + return false; + } + var points = [ [ { + x: p.left, + y: p.top + }, { + x: p.right, + y: p.bottom + } ], [ { + x: p.right, + y: p.top + }, { + x: p.left, + y: p.bottom + } ] ]; + if (p.right <= position$$1.x) {} else if (p.left >= position$$1.x) { + points[0].reverse(); + points[1].reverse(); + } else if (p.bottom <= position$$1.y) { + points[0].reverse(); + } else if (p.top >= position$$1.y) { + points[1].reverse(); + } + return !!points.reduce(function(result, point) { + return result + (slope(prevPos, point[0]) < slope(position$$1, point[0]) && slope(prevPos, point[1]) > slope(position$$1, point[1])); + }, 0); + } + }; + function slope(a, b) { + return (b.y - a.y) / (b.x - a.x); + } + var strats = {}; + strats.args = strats.events = strats.init = strats.created = strats.beforeConnect = strats.connected = strats.ready = strats.beforeDisconnect = strats.disconnected = strats.destroy = function(parentVal, childVal) { + parentVal = parentVal && !isArray(parentVal) ? [ parentVal ] : parentVal; + return childVal ? parentVal ? parentVal.concat(childVal) : isArray(childVal) ? childVal : [ childVal ] : parentVal; + }; + strats.update = function(parentVal, childVal) { + return strats.args(parentVal, isFunction(childVal) ? { + read: childVal + } : childVal); + }; + strats.props = function(parentVal, childVal) { + if (isArray(childVal)) { + childVal = childVal.reduce(function(value, key) { + value[key] = String; + return value; + }, {}); + } + return strats.methods(parentVal, childVal); + }; + strats.computed = strats.defaults = strats.methods = function(parentVal, childVal) { + return childVal ? parentVal ? assign({}, parentVal, childVal) : childVal : parentVal; + }; + var defaultStrat = function(parentVal, childVal) { + return isUndefined(childVal) ? parentVal : childVal; + }; + function mergeOptions(parent, child) { + var options = {}; + if (child.mixins) { + for (var i = 0, l = child.mixins.length; i < l; i++) { + parent = mergeOptions(parent, child.mixins[i]); + } + } + for (var key in parent) { + mergeKey(key); + } + for (var key$1 in child) { + if (!hasOwn(parent, key$1)) { + mergeKey(key$1); + } + } + function mergeKey(key) { + options[key] = (strats[key] || defaultStrat)(parent[key], child[key]); + } + return options; + } + var id = 0; + var Player = function Player(el) { + this.id = ++id; + this.el = toNode(el); + }; + Player.prototype.isVideo = function isVideo() { + return this.isYoutube() || this.isVimeo() || this.isHTML5(); + }; + Player.prototype.isHTML5 = function isHTML5() { + return this.el.tagName === "VIDEO"; + }; + Player.prototype.isIFrame = function isIFrame() { + return this.el.tagName === "IFRAME"; + }; + Player.prototype.isYoutube = function isYoutube() { + return this.isIFrame() && !!this.el.src.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/); + }; + Player.prototype.isVimeo = function isVimeo() { + return this.isIFrame() && !!this.el.src.match(/vimeo\.com\/video\/.*/); + }; + Player.prototype.enableApi = function enableApi() { + var this$1 = this; + if (this.ready) { + return this.ready; + } + var youtube = this.isYoutube(); + var vimeo = this.isVimeo(); + var poller; + if (youtube || vimeo) { + return this.ready = new Promise(function(resolve) { + once(this$1.el, "load", function() { + if (youtube) { + var listener = function() { + return post(this$1.el, { + event: "listening", + id: this$1.id + }); + }; + poller = setInterval(listener, 100); + listener(); + } + }); + listen(function(data$$1) { + return youtube && data$$1.id === this$1.id && data$$1.event === "onReady" || vimeo && Number(data$$1.player_id) === this$1.id; + }).then(function() { + resolve(); + poller && clearInterval(poller); + }); + attr(this$1.el, "src", "" + this$1.el.src + (includes(this$1.el.src, "?") ? "&" : "?") + (youtube ? "enablejsapi=1" : "api=1&player_id=" + this$1.id)); + }); + } + return Promise.resolve(); + }; + Player.prototype.play = function play() { + var this$1 = this; + if (!this.isVideo()) { + return; + } + if (this.isIFrame()) { + this.enableApi().then(function() { + return post(this$1.el, { + func: "playVideo", + method: "play" + }); + }); + } else if (this.isHTML5()) { + try { + var promise = this.el.play(); + if (promise) { + promise.catch(noop); + } + } catch (e) {} + } + }; + Player.prototype.pause = function pause() { + var this$1 = this; + if (!this.isVideo()) { + return; + } + if (this.isIFrame()) { + this.enableApi().then(function() { + return post(this$1.el, { + func: "pauseVideo", + method: "pause" + }); + }); + } else if (this.isHTML5()) { + this.el.pause(); + } + }; + Player.prototype.mute = function mute() { + var this$1 = this; + if (!this.isVideo()) { + return; + } + if (this.isIFrame()) { + this.enableApi().then(function() { + return post(this$1.el, { + func: "mute", + method: "setVolume", + value: 0 + }); + }); + } else if (this.isHTML5()) { + this.el.muted = true; + attr(this.el, "muted", ""); + } + }; + function post(el, cmd) { + try { + el.contentWindow.postMessage(JSON.stringify(assign({ + event: "command" + }, cmd)), "*"); + } catch (e) {} + } + function listen(cb) { + return new Promise(function(resolve) { + once(window, "message", function(_, data$$1) { + return resolve(data$$1); + }, false, function(ref) { + var data$$1 = ref.data; + if (!data$$1 || !isString(data$$1)) { + return; + } + try { + data$$1 = JSON.parse(data$$1); + } catch (e) { + return; + } + return data$$1 && cb(data$$1); + }); + }); + } + var touch = {}; + var clickTimeout; + var swipeTimeout; + var tapTimeout; + var clicked; + function swipeDirection(ref) { + var x1 = ref.x1; + var x2 = ref.x2; + var y1 = ref.y1; + var y2 = ref.y2; + return Math.abs(x1 - x2) >= Math.abs(y1 - y2) ? x1 - x2 > 0 ? "Left" : "Right" : y1 - y2 > 0 ? "Up" : "Down"; + } + function cancelAll() { + clickTimeout && clearTimeout(clickTimeout); + swipeTimeout && clearTimeout(swipeTimeout); + tapTimeout && clearTimeout(tapTimeout); + clickTimeout = swipeTimeout = tapTimeout = null; + touch = {}; + } + ready(function() { + on(document, "click", function() { + return clicked = true; + }, true); + on(document, pointerDown, function(e) { + var target = e.target; + var ref = getPos$1(e); + var x = ref.x; + var y = ref.y; + var now = Date.now(); + var type = getType(e.type); + if (touch.type && touch.type !== type) { + return; + } + touch.el = "tagName" in target ? target : target.parentNode; + clickTimeout && clearTimeout(clickTimeout); + touch.x1 = x; + touch.y1 = y; + if (touch.last && now - touch.last <= 250) { + touch = {}; + } + touch.type = type; + touch.last = now; + clicked = e.button > 0; + }); + on(document, pointerMove, function(e) { + if (e.defaultPrevented) { + return; + } + var ref = getPos$1(e); + var x = ref.x; + var y = ref.y; + touch.x2 = x; + touch.y2 = y; + }); + on(document, pointerUp, function(ref) { + var type = ref.type; + var target = ref.target; + if (touch.type !== getType(type)) { + return; + } + if (touch.x2 && Math.abs(touch.x1 - touch.x2) > 30 || touch.y2 && Math.abs(touch.y1 - touch.y2) > 30) { + swipeTimeout = setTimeout(function() { + if (touch.el) { + trigger(touch.el, "swipe"); + trigger(touch.el, "swipe" + swipeDirection(touch)); + } + touch = {}; + }); + } else if ("last" in touch) { + tapTimeout = setTimeout(function() { + return trigger(touch.el, "tap"); + }); + if (touch.el && type !== "mouseup" && within(target, touch.el)) { + clickTimeout = setTimeout(function() { + clickTimeout = null; + if (touch.el && !clicked) { + trigger(touch.el, "click"); + } + touch = {}; + }, 350); + } + } else { + touch = {}; + } + }); + on(document, "touchcancel", cancelAll); + on(window, "scroll", cancelAll); + }); + var touching = false; + on(document, "touchstart", function() { + return touching = true; + }, true); + on(document, "click", function() { + touching = false; + }); + on(document, "touchcancel", function() { + return touching = false; + }, true); + function isTouch(e) { + return touching || e.pointerType === "touch"; + } + function getPos$1(e) { + var touches = e.touches; + var changedTouches = e.changedTouches; + var ref = touches && touches[0] || changedTouches && changedTouches[0] || e; + var x = ref.pageX; + var y = ref.pageY; + return { + x: x, + y: y + }; + } + function getType(type) { + return type.slice(0, 5); + } + var util = Object.freeze({ + ajax: ajax, + getImage: getImage, + transition: transition, + Transition: Transition, + animate: animate, + Animation: Animation, + attr: attr, + hasAttr: hasAttr, + removeAttr: removeAttr, + filterAttr: filterAttr, + data: data, + addClass: addClass, + removeClass: removeClass, + removeClasses: removeClasses, + replaceClass: replaceClass, + hasClass: hasClass, + toggleClass: toggleClass, + $: $, + $$: $$, + positionAt: positionAt, + offset: offset, + position: position, + height: height, + width: width, + flipPosition: flipPosition, + isInView: isInView, + scrolledOver: scrolledOver, + isReady: isReady, + ready: ready, + index: index, + getIndex: getIndex, + empty: empty, + html: html, + prepend: prepend, + append: append, + before: before, + after: after, + remove: remove, + wrapAll: wrapAll, + wrapInner: wrapInner, + unwrap: unwrap, + fragment: fragment, + apply: apply, + isRtl: isRtl, + hasTouch: hasTouch, + pointerDown: pointerDown, + pointerMove: pointerMove, + pointerUp: pointerUp, + pointerEnter: pointerEnter, + pointerLeave: pointerLeave, + on: on, + off: off, + once: once, + trigger: trigger, + createEvent: createEvent, + toEventTargets: toEventTargets, + preventClick: preventClick, + fastdom: fastdom, + isVoidElement: isVoidElement, + isVisible: isVisible, + selInput: selInput, + isInput: isInput, + filter: filter, + within: within, + bind: bind, + hasOwn: hasOwn, + hyphenate: hyphenate, + camelize: camelize, + ucfirst: ucfirst, + startsWith: startsWith, + endsWith: endsWith, + includes: includes, + isArray: isArray, + isFunction: isFunction, + isObject: isObject, + isPlainObject: isPlainObject, + isWindow: isWindow, + isDocument: isDocument, + isJQuery: isJQuery, + isNode: isNode, + isNodeCollection: isNodeCollection, + isBoolean: isBoolean, + isString: isString, + isNumber: isNumber, + isNumeric: isNumeric, + isUndefined: isUndefined, + toBoolean: toBoolean, + toNumber: toNumber, + toFloat: toFloat, + toNode: toNode, + toNodes: toNodes, + toList: toList, + toMs: toMs, + swap: swap, + assign: assign, + each: each, + sortBy: sortBy, + clamp: clamp, + noop: noop, + intersectRect: intersectRect, + pointInRect: pointInRect, + Dimensions: Dimensions, + MouseTracker: MouseTracker, + mergeOptions: mergeOptions, + Player: Player, + Promise: Promise, + Deferred: Deferred, + query: query, + queryAll: queryAll, + find: find, + findAll: findAll, + matches: matches, + closest: closest, + parents: parents, + escape: escape, + css: css, + getStyles: getStyles, + getStyle: getStyle, + getCssVar: getCssVar, + propName: propName, + isTouch: isTouch, + getPos: getPos$1 + }); + function componentAPI(UIkit) { + var DATA = UIkit.data; + UIkit.components = {}; + UIkit.component = function(id, options) { + var name = camelize(id); + if (isPlainObject(options)) { + options.name = name; + options = UIkit.extend(options); + } else if (isUndefined(options)) { + return UIkit.components[name]; + } else { + options.options.name = name; + } + UIkit.components[name] = options; + UIkit[name] = function(element, data) { + var i = arguments.length, argsArray = Array(i); + while (i--) argsArray[i] = arguments[i]; + if (isPlainObject(element)) { + return new UIkit.components[name]({ + data: element + }); + } + if (UIkit.components[name].options.functional) { + return new UIkit.components[name]({ + data: [].concat(argsArray) + }); + } + return element && element.nodeType ? init(element) : $$(element).map(init)[0]; + function init(element) { + var cmp = UIkit.getComponent(element, name); + if (cmp && data) { + cmp.$reset(data); + } + return cmp || new UIkit.components[name]({ + el: element, + data: data || {} + }); + } + }; + if (UIkit._initialized && !options.options.functional) { + fastdom.read(function() { + return UIkit[name]("[uk-" + id + "],[data-uk-" + id + "]"); + }); + } + return UIkit.components[name]; + }; + UIkit.getComponents = function(element) { + return element && element[DATA] || {}; + }; + UIkit.getComponent = function(element, name) { + return UIkit.getComponents(element)[name]; + }; + UIkit.connect = function(node) { + if (node[DATA]) { + for (var name in node[DATA]) { + node[DATA][name]._callConnected(); + } + } + for (var i = 0; i < node.attributes.length; i++) { + var name$1 = getComponentName(node.attributes[i].name); + if (name$1 && name$1 in UIkit.components) { + UIkit[name$1](node); + } + } + }; + UIkit.disconnect = function(node) { + for (var name in node[DATA]) { + node[DATA][name]._callDisconnected(); + } + }; + } + function getComponentName(attribute) { + return startsWith(attribute, "uk-") || startsWith(attribute, "data-uk-") ? camelize(attribute.replace("data-uk-", "").replace("uk-", "")) : false; + } + function boot(UIkit) { + var connect = UIkit.connect; + var disconnect = UIkit.disconnect; + if (!("MutationObserver" in window)) { + return; + } + if (document.body) { + init(); + } else { + new MutationObserver(function() { + if (document.body) { + this.disconnect(); + init(); + } + }).observe(document, { + childList: true, + subtree: true + }); + } + function init() { + apply(document.body, connect); + fastdom.flush(); + new MutationObserver(function(mutations) { + return mutations.forEach(applyMutation); + }).observe(document, { + childList: true, + subtree: true, + characterData: true, + attributes: true + }); + UIkit._initialized = true; + } + function applyMutation(mutation) { + var target = mutation.target; + var type = mutation.type; + var update = type !== "attributes" ? applyChildList(mutation) : applyAttribute(mutation); + update && UIkit.update(target); + } + function applyAttribute(ref) { + var target = ref.target; + var attributeName = ref.attributeName; + if (attributeName === "href") { + return true; + } + var name = getComponentName(attributeName); + if (!name || !(name in UIkit.components)) { + return; + } + if (hasAttr(target, attributeName)) { + UIkit[name](target); + return true; + } + var component = UIkit.getComponent(target, name); + if (component) { + component.$destroy(); + return true; + } + } + function applyChildList(ref) { + var addedNodes = ref.addedNodes; + var removedNodes = ref.removedNodes; + for (var i = 0; i < addedNodes.length; i++) { + apply(addedNodes[i], connect); + } + for (var i$1 = 0; i$1 < removedNodes.length; i$1++) { + apply(removedNodes[i$1], disconnect); + } + return true; + } + function apply(node, fn) { + if (node.nodeType !== 1 || hasAttr(node, "uk-no-boot")) { + return; + } + fn(node); + node = node.firstElementChild; + while (node) { + var next = node.nextElementSibling; + apply(node, fn); + node = next; + } + } + } + function globalAPI(UIkit) { + var DATA = UIkit.data; + UIkit.use = function(plugin) { + if (plugin.installed) { + return; + } + plugin.call(null, this); + plugin.installed = true; + return this; + }; + UIkit.mixin = function(mixin, component) { + component = (isString(component) ? UIkit.components[component] : component) || this; + mixin = mergeOptions({}, mixin); + mixin.mixins = component.options.mixins; + delete component.options.mixins; + component.options = mergeOptions(mixin, component.options); + }; + UIkit.extend = function(options) { + options = options || {}; + var Super = this; + var Sub = function UIkitComponent(options) { + this._init(options); + }; + Sub.prototype = Object.create(Super.prototype); + Sub.prototype.constructor = Sub; + Sub.options = mergeOptions(Super.options, options); + Sub["super"] = Super; + Sub.extend = Super.extend; + return Sub; + }; + UIkit.update = function(element, e) { + e = createEvent(e || "update"); + element = element ? toNode(element) : document.body; + apply(element, function(element) { + return update(element[DATA], e); + }); + while (element && element.parentNode) { + update(element.parentNode[DATA], e); + element = element.parentNode; + } + }; + var container; + Object.defineProperty(UIkit, "container", { + get: function get() { + return container || document.body; + }, + set: function set(element) { + container = $(element); + } + }); + function update(data, e) { + if (!data) { + return; + } + for (var name in data) { + if (data[name]._isReady) { + data[name]._callUpdate(e); + } + } + } + } + function hooksAPI(UIkit) { + UIkit.prototype._callHook = function(hook) { + var this$1 = this; + var handlers = this.$options[hook]; + if (handlers) { + handlers.forEach(function(handler) { + return handler.call(this$1); + }); + } + }; + UIkit.prototype._callConnected = function() { + var this$1 = this; + if (this._connected) { + return; + } + this._data = {}; + this._callHook("beforeConnect"); + this._connected = true; + this._initEvents(); + this._initObserver(); + this._callHook("connected"); + if (!this._isReady) { + ready(function() { + return this$1._callReady(); + }); + } + this._callUpdate(); + }; + UIkit.prototype._callDisconnected = function() { + if (!this._connected) { + return; + } + this._callHook("beforeDisconnect"); + if (this._observer) { + this._observer.disconnect(); + this._observer = null; + } + this._unbindEvents(); + this._callHook("disconnected"); + this._connected = false; + }; + UIkit.prototype._callReady = function() { + if (this._isReady) { + return; + } + this._isReady = true; + this._callHook("ready"); + this._resetComputeds(); + this._callUpdate(); + }; + UIkit.prototype._callUpdate = function(e) { + var this$1 = this; + e = createEvent(e || "update"); + var type = e.type; + if (includes([ "update", "load", "resize" ], type)) { + this._resetComputeds(); + } + var updates = this.$options.update; + var ref = this._frames; + var reads = ref.reads; + var writes = ref.writes; + if (!updates) { + return; + } + updates.forEach(function(ref, i) { + var read = ref.read; + var write = ref.write; + var events = ref.events; + if (type !== "update" && !includes(events, type)) { + return; + } + if (read && !includes(fastdom.reads, reads[i])) { + reads[i] = fastdom.read(function() { + var result = read.call(this$1, this$1._data, e); + if (result === false && write) { + fastdom.clear(writes[i]); + delete writes[i]; + } else if (isPlainObject(result)) { + assign(this$1._data, result); + } + delete reads[i]; + }); + } + if (write && !includes(fastdom.writes, writes[i])) { + writes[i] = fastdom.write(function() { + write.call(this$1, this$1._data, e); + delete writes[i]; + }); + } + }); + }; + } + function stateAPI(UIkit) { + var uid = 0; + UIkit.prototype.props = {}; + UIkit.prototype._init = function(options) { + options = options || {}; + options = this.$options = mergeOptions(this.constructor.options, options, this); + this.$el = null; + this.$name = UIkit.prefix + hyphenate(this.$options.name); + this.$props = {}; + this._frames = { + reads: {}, + writes: {} + }; + this._events = []; + this._uid = uid++; + this._initData(); + this._initMethods(); + this._initComputeds(); + this._callHook("created"); + if (options.el) { + this.$mount(options.el); + } + }; + UIkit.prototype._initData = function() { + var this$1 = this; + var ref = this.$options; + var defaults = ref.defaults; + var data$$1 = ref.data; + if (data$$1 === void 0) data$$1 = {}; + var args = ref.args; + if (args === void 0) args = []; + var props = ref.props; + if (props === void 0) props = {}; + var el = ref.el; + if (args.length && isArray(data$$1)) { + data$$1 = data$$1.slice(0, args.length).reduce(function(data$$1, value, index) { + if (isPlainObject(value)) { + assign(data$$1, value); + } else { + data$$1[args[index]] = value; + } + return data$$1; + }, {}); + } + for (var key in assign({}, defaults, props)) { + this$1.$props[key] = this$1[key] = hasOwn(data$$1, key) && !isUndefined(data$$1[key]) ? coerce(props[key], data$$1[key], el) : defaults ? defaults[key] && isArray(defaults[key]) ? defaults[key].concat() : defaults[key] : null; + } + }; + UIkit.prototype._initMethods = function() { + var this$1 = this; + var ref = this.$options; + var methods = ref.methods; + if (methods) { + for (var key in methods) { + this$1[key] = bind(methods[key], this$1); + } + } + }; + UIkit.prototype._initComputeds = function() { + var this$1 = this; + var ref = this.$options; + var computed = ref.computed; + this._resetComputeds(); + if (computed) { + for (var key in computed) { + registerComputed(this$1, key, computed[key]); + } + } + }; + UIkit.prototype._resetComputeds = function() { + this._computeds = {}; + }; + UIkit.prototype._initProps = function(props) { + var this$1 = this; + var key; + this._resetComputeds(); + props = props || getProps(this.$options, this.$name); + for (key in props) { + if (!isUndefined(props[key])) { + this$1.$props[key] = props[key]; + } + } + var exclude = [ this.$options.computed, this.$options.methods ]; + for (key in this$1.$props) { + if (key in props && notIn(exclude, key)) { + this$1[key] = this$1.$props[key]; + } + } + }; + UIkit.prototype._initEvents = function() { + var this$1 = this; + var ref = this.$options; + var events = ref.events; + if (events) { + events.forEach(function(event) { + if (!hasOwn(event, "handler")) { + for (var key in event) { + registerEvent(this$1, event[key], key); + } + } else { + registerEvent(this$1, event); + } + }); + } + }; + UIkit.prototype._unbindEvents = function() { + this._events.forEach(function(unbind) { + return unbind(); + }); + this._events = []; + }; + UIkit.prototype._initObserver = function() { + var this$1 = this; + var ref = this.$options; + var attrs = ref.attrs; + var props = ref.props; + var el = ref.el; + if (this._observer || !props || !attrs) { + return; + } + attrs = isArray(attrs) ? attrs : Object.keys(props).map(function(key) { + return hyphenate(key); + }); + this._observer = new MutationObserver(function() { + var data$$1 = getProps(this$1.$options, this$1.$name); + if (attrs.some(function(key) { + return !isUndefined(data$$1[key]) && data$$1[key] !== this$1.$props[key]; + })) { + this$1.$reset(data$$1); + } + }); + this._observer.observe(el, { + attributes: true, + attributeFilter: attrs.concat([ this.$name, "data-" + this.$name ]) + }); + }; + function getProps(opts, name) { + var data$$1 = {}; + var args = opts.args; + if (args === void 0) args = []; + var props = opts.props; + if (props === void 0) props = {}; + var el = opts.el; + if (!props) { + return data$$1; + } + for (var key in props) { + var prop = hyphenate(key); + if (hasAttr(el, prop)) { + var value = coerce(props[key], attr(el, prop), el); + if (prop === "target" && (!value || startsWith(value, "_"))) { + continue; + } + data$$1[key] = value; + } + } + var options = parseOptions(data(el, name), args); + for (var key$1 in options) { + var prop$1 = camelize(key$1); + if (props[prop$1] !== undefined) { + data$$1[prop$1] = coerce(props[prop$1], options[key$1], el); + } + } + return data$$1; + } + function parseOptions(options, args) { + var obj; + if (args === void 0) args = []; + try { + return !options ? {} : startsWith(options, "{") ? JSON.parse(options) : args.length && !includes(options, ":") ? (obj = {}, + obj[args[0]] = options, obj) : options.split(";").reduce(function(options, option) { + var ref = option.split(/:(.+)/); + var key = ref[0]; + var value = ref[1]; + if (key && value) { + options[key.trim()] = value.trim(); + } + return options; + }, {}); + } catch (e) { + return {}; + } + } + function registerComputed(component, key, cb) { + Object.defineProperty(component, key, { + enumerable: true, + get: function get() { + var _computeds = component._computeds; + var $props = component.$props; + var $el = component.$el; + if (!hasOwn(_computeds, key)) { + _computeds[key] = cb.call(component, $props, $el); + } + return _computeds[key]; + }, + set: function set(value) { + component._computeds[key] = value; + } + }); + } + function registerEvent(component, event, key) { + if (!isPlainObject(event)) { + event = { + name: key, + handler: event + }; + } + var name = event.name; + var el = event.el; + var handler = event.handler; + var capture = event.capture; + var delegate = event.delegate; + var filter = event.filter; + var self = event.self; + el = isFunction(el) ? el.call(component) : el || component.$el; + if (isArray(el)) { + el.forEach(function(el) { + return registerEvent(component, assign({}, event, { + el: el + }), key); + }); + return; + } + if (!el || filter && !filter.call(component)) { + return; + } + handler = detail(isString(handler) ? component[handler] : bind(handler, component)); + if (self) { + handler = selfFilter(handler); + } + component._events.push(on(el, name, !delegate ? null : isString(delegate) ? delegate : delegate.call(component), handler, capture)); + } + function selfFilter(handler) { + return function selfHandler(e) { + if (e.target === e.currentTarget || e.target === e.current) { + return handler.call(null, e); + } + }; + } + function notIn(options, key) { + return options.every(function(arr) { + return !arr || !hasOwn(arr, key); + }); + } + function detail(listener) { + return function(e) { + return isArray(e.detail) ? listener.apply(void 0, [ e ].concat(e.detail)) : listener(e); + }; + } + function coerce(type, value, context) { + if (type === Boolean) { + return toBoolean(value); + } else if (type === Number) { + return toNumber(value); + } else if (type === "query") { + return query(value, context); + } else if (type === "list") { + return toList(value); + } else if (type === "media") { + return toMedia(value); + } + return type ? type(value) : value; + } + function toMedia(value) { + if (isString(value)) { + if (value[0] === "@") { + var name = "media-" + value.substr(1); + value = toFloat(getCssVar(name)); + } else if (isNaN(value)) { + return value; + } + } + return value && !isNaN(value) ? "(min-width: " + value + "px)" : false; + } + } + function instanceAPI(UIkit) { + var DATA = UIkit.data; + UIkit.prototype.$mount = function(el) { + var ref = this.$options; + var name = ref.name; + if (!el[DATA]) { + el[DATA] = {}; + } + if (el[DATA][name]) { + return; + } + el[DATA][name] = this; + this.$el = this.$options.el = this.$options.el || el; + this._initProps(); + this._callHook("init"); + if (within(el, document)) { + this._callConnected(); + } + }; + UIkit.prototype.$emit = function(e) { + this._callUpdate(e); + }; + UIkit.prototype.$reset = function(data) { + this._callDisconnected(); + this._initProps(data); + this._callConnected(); + }; + UIkit.prototype.$destroy = function(removeEl) { + if (removeEl === void 0) removeEl = false; + var ref = this.$options; + var el = ref.el; + var name = ref.name; + if (el) { + this._callDisconnected(); + } + this._callHook("destroy"); + if (!el || !el[DATA]) { + return; + } + delete el[DATA][name]; + if (!Object.keys(el[DATA]).length) { + delete el[DATA]; + } + if (removeEl) { + remove(this.$el); + } + }; + } + var UIkit$2 = function(options) { + this._init(options); + }; + UIkit$2.util = util; + UIkit$2.data = "__uikit__"; + UIkit$2.prefix = "uk-"; + UIkit$2.options = {}; + globalAPI(UIkit$2); + hooksAPI(UIkit$2); + stateAPI(UIkit$2); + instanceAPI(UIkit$2); + componentAPI(UIkit$2); + var Class = { + init: function init() { + addClass(this.$el, this.$name); + } + }; + var Container = { + props: { + container: Boolean + }, + defaults: { + container: true + }, + computed: { + container: function container(ref) { + var container = ref.container; + return container === true && UIkit$2.container || container && $(container); + } + } + }; + var Togglable = { + props: { + cls: Boolean, + animation: "list", + duration: Number, + origin: String, + transition: String, + queued: Boolean + }, + defaults: { + cls: false, + animation: [ false ], + duration: 200, + origin: false, + transition: "linear", + queued: false, + initProps: { + overflow: "", + height: "", + paddingTop: "", + paddingBottom: "", + marginTop: "", + marginBottom: "" + }, + hideProps: { + overflow: "hidden", + height: 0, + paddingTop: 0, + paddingBottom: 0, + marginTop: 0, + marginBottom: 0 + } + }, + computed: { + hasAnimation: function hasAnimation(ref) { + var animation = ref.animation; + return !!animation[0]; + }, + hasTransition: function hasTransition(ref) { + var animation = ref.animation; + return this.hasAnimation && animation[0] === true; + } + }, + methods: { + toggleElement: function toggleElement(targets, show, animate) { + var this$1 = this; + return new Promise(function(resolve) { + targets = toNodes(targets); + var all = function(targets) { + return Promise.all(targets.map(function(el) { + return this$1._toggleElement(el, show, animate); + })); + }; + var toggled = targets.filter(function(el) { + return this$1.isToggled(el); + }); + var untoggled = targets.filter(function(el) { + return !includes(toggled, el); + }); + var p; + if (!this$1.queued || !isUndefined(animate) || !isUndefined(show) || !this$1.hasAnimation || targets.length < 2) { + p = all(untoggled.concat(toggled)); + } else { + var body = document.body; + var scroll = body.scrollTop; + var el = toggled[0]; + var inProgress = Animation.inProgress(el) && hasClass(el, "uk-animation-leave") || Transition.inProgress(el) && el.style.height === "0px"; + p = all(toggled); + if (!inProgress) { + p = p.then(function() { + var p = all(untoggled); + body.scrollTop = scroll; + return p; + }); + } + } + p.then(resolve, noop); + }); + }, + toggleNow: function toggleNow(targets, show) { + var this$1 = this; + return new Promise(function(resolve) { + return Promise.all(toNodes(targets).map(function(el) { + return this$1._toggleElement(el, show, false); + })).then(resolve, noop); + }); + }, + isToggled: function isToggled(el) { + var nodes = toNodes(el || this.$el); + return this.cls ? hasClass(nodes, this.cls.split(" ")[0]) : !hasAttr(nodes, "hidden"); + }, + updateAria: function updateAria(el) { + if (this.cls === false) { + attr(el, "aria-hidden", !this.isToggled(el)); + } + }, + _toggleElement: function _toggleElement(el, show, animate) { + var this$1 = this; + show = isBoolean(show) ? show : Animation.inProgress(el) ? hasClass(el, "uk-animation-leave") : Transition.inProgress(el) ? el.style.height === "0px" : !this.isToggled(el); + if (!trigger(el, "before" + (show ? "show" : "hide"), [ this ])) { + return Promise.reject(); + } + var promise = (animate === false || !this.hasAnimation ? this._toggleImmediate : this.hasTransition ? this._toggleHeight : this._toggleAnimation)(el, show); + trigger(el, show ? "show" : "hide", [ this ]); + return promise.then(function() { + trigger(el, show ? "shown" : "hidden", [ this$1 ]); + trigger(el, "resize"); + }); + }, + _toggle: function _toggle(el, toggled) { + if (!el) { + return; + } + var changed; + if (this.cls) { + changed = includes(this.cls, " ") || Boolean(toggled) !== hasClass(el, this.cls); + changed && toggleClass(el, this.cls, includes(this.cls, " ") ? undefined : toggled); + } else { + changed = Boolean(toggled) === hasAttr(el, "hidden"); + changed && attr(el, "hidden", !toggled ? "" : null); + } + $$("[autofocus]", el).some(function(el) { + return isVisible(el) && (el.focus() || true); + }); + this.updateAria(el); + changed && trigger(el, "resize"); + }, + _toggleImmediate: function _toggleImmediate(el, show) { + this._toggle(el, show); + return Promise.resolve(); + }, + _toggleHeight: function _toggleHeight(el, show) { + var this$1 = this; + var inProgress = Transition.inProgress(el); + var inner = el.hasChildNodes ? toFloat(css(el.firstElementChild, "marginTop")) + toFloat(css(el.lastElementChild, "marginBottom")) : 0; + var currentHeight = isVisible(el) ? height(el) + (inProgress ? 0 : inner) : 0; + Transition.cancel(el); + if (!this.isToggled(el)) { + this._toggle(el, true); + } + height(el, ""); + fastdom.flush(); + var endHeight = height(el) + (inProgress ? 0 : inner); + height(el, currentHeight); + return (show ? Transition.start(el, assign({}, this.initProps, { + overflow: "hidden", + height: endHeight + }), Math.round(this.duration * (1 - currentHeight / endHeight)), this.transition) : Transition.start(el, this.hideProps, Math.round(this.duration * (currentHeight / endHeight)), this.transition).then(function() { + return this$1._toggle(el, false); + })).then(function() { + return css(el, this$1.initProps); + }); + }, + _toggleAnimation: function _toggleAnimation(el, show) { + var this$1 = this; + Animation.cancel(el); + if (show) { + this._toggle(el, true); + return Animation.in(el, this.animation[0], this.duration, this.origin); + } + return Animation.out(el, this.animation[1] || this.animation[0], this.duration, this.origin).then(function() { + return this$1._toggle(el, false); + }); + } + } + }; + var active; + var Modal = { + mixins: [ Class, Container, Togglable ], + props: { + selPanel: String, + selClose: String, + escClose: Boolean, + bgClose: Boolean, + stack: Boolean + }, + defaults: { + cls: "uk-open", + escClose: true, + bgClose: true, + overlay: true, + stack: false + }, + computed: { + panel: function panel(ref, $el) { + var selPanel = ref.selPanel; + return $(selPanel, $el); + }, + transitionElement: function transitionElement() { + return this.panel; + }, + transitionDuration: function transitionDuration() { + return toMs(css(this.transitionElement, "transitionDuration")); + } + }, + events: [ { + name: "click", + delegate: function delegate() { + return this.selClose; + }, + handler: function handler(e) { + e.preventDefault(); + this.hide(); + } + }, { + name: "toggle", + self: true, + handler: function handler(e) { + if (e.defaultPrevented) { + return; + } + e.preventDefault(); + this.toggle(); + } + }, { + name: "beforeshow", + self: true, + handler: function handler(e) { + var prev = active && active !== this && active; + active = this; + if (prev) { + if (this.stack) { + this.prev = prev; + } else { + prev.hide().then(this.show); + e.preventDefault(); + return; + } + } + registerEvents(); + } + }, { + name: "beforehide", + self: true, + handler: function handler() { + active = active && active !== this && active || this.prev; + if (!active) { + deregisterEvents(); + } + } + }, { + name: "show", + self: true, + handler: function handler() { + if (!hasClass(document.documentElement, this.clsPage)) { + this.scrollbarWidth = width(window) - width(document); + css(document.body, "overflowY", this.scrollbarWidth && this.overlay ? "scroll" : ""); + } + addClass(document.documentElement, this.clsPage); + } + }, { + name: "hidden", + self: true, + handler: function handler() { + var this$1 = this; + var found; + var ref = this; + var prev = ref.prev; + while (prev) { + if (prev.clsPage === this$1.clsPage) { + found = true; + break; + } + prev = prev.prev; + } + if (!found) { + removeClass(document.documentElement, this.clsPage); + } + !this.prev && css(document.body, "overflowY", ""); + } + } ], + methods: { + toggle: function toggle() { + return this.isToggled() ? this.hide() : this.show(); + }, + show: function show() { + if (this.isToggled()) { + return; + } + if (this.container && this.$el.parentNode !== this.container) { + append(this.container, this.$el); + this._callConnected(); + } + return this.toggleNow(this.$el, true); + }, + hide: function hide() { + if (this.isToggled()) { + return this.toggleNow(this.$el, false); + } + }, + getActive: function getActive() { + return active; + }, + _toggleImmediate: function _toggleImmediate(el, show) { + var this$1 = this; + return new Promise(function(resolve) { + return requestAnimationFrame(function() { + this$1._toggle(el, show); + if (this$1.transitionDuration) { + once(this$1.transitionElement, "transitionend", resolve, false, function(e) { + return e.target === this$1.transitionElement; + }); + } else { + resolve(); + } + }); + }); + } + } + }; + var events; + function registerEvents() { + if (events) { + return; + } + events = [ on(document, "click", function(ref) { + var target = ref.target; + var defaultPrevented = ref.defaultPrevented; + if (active && active.bgClose && !defaultPrevented && (!active.overlay || within(target, active.$el)) && (!active.panel || !within(target, active.panel))) { + active.hide(); + } + }), on(document, "keydown", function(e) { + if (e.keyCode === 27 && active && active.escClose) { + e.preventDefault(); + active.hide(); + } + }) ]; + } + function deregisterEvents() { + events && events.forEach(function(unbind) { + return unbind(); + }); + events = null; + } + var Position = { + props: { + pos: String, + offset: null, + flip: Boolean, + clsPos: String + }, + defaults: { + pos: "bottom-" + (!isRtl ? "left" : "right"), + flip: true, + offset: false, + clsPos: "" + }, + computed: { + pos: function pos(ref) { + var pos = ref.pos; + return (pos + (!includes(pos, "-") ? "-center" : "")).split("-"); + }, + dir: function dir() { + return this.pos[0]; + }, + align: function align() { + return this.pos[1]; + } + }, + methods: { + positionAt: function positionAt$1(element, target, boundary) { + removeClasses(element, this.clsPos + "-(top|bottom|left|right)(-[a-z]+)?"); + css(element, { + top: "", + left: "" + }); + var node; + var ref = this; + var offset$$1 = ref.offset; + offset$$1 = isNumeric(offset$$1) ? offset$$1 : (node = $(offset$$1)) ? offset(node)[axis === "x" ? "left" : "top"] - offset(target)[axis === "x" ? "right" : "bottom"] : 0; + var axis = this.getAxis(); + var ref$1 = positionAt(element, target, axis === "x" ? flipPosition(this.dir) + " " + this.align : this.align + " " + flipPosition(this.dir), axis === "x" ? this.dir + " " + this.align : this.align + " " + this.dir, axis === "x" ? "" + (this.dir === "left" ? -offset$$1 : offset$$1) : " " + (this.dir === "top" ? -offset$$1 : offset$$1), null, this.flip, boundary).target; + var x = ref$1.x; + var y = ref$1.y; + this.dir = axis === "x" ? x : y; + this.align = axis === "x" ? y : x; + toggleClass(element, this.clsPos + "-" + this.dir + "-" + this.align, this.offset === false); + }, + getAxis: function getAxis() { + return this.dir === "top" || this.dir === "bottom" ? "y" : "x"; + } + } + }; + function mixin(UIkit) { + UIkit.mixin.class = Class; + UIkit.mixin.container = Container; + UIkit.mixin.modal = Modal; + UIkit.mixin.position = Position; + UIkit.mixin.togglable = Togglable; + } + function Accordion(UIkit) { + UIkit.component("accordion", { + mixins: [ Class, Togglable ], + props: { + targets: String, + active: null, + collapsible: Boolean, + multiple: Boolean, + toggle: String, + content: String, + transition: String + }, + defaults: { + targets: "> *", + active: false, + animation: [ true ], + collapsible: true, + multiple: false, + clsOpen: "uk-open", + toggle: "> .uk-accordion-title", + content: "> .uk-accordion-content", + transition: "ease" + }, + computed: { + items: function items(ref, $el) { + var targets = ref.targets; + return $$(targets, $el); + } + }, + events: [ { + name: "click", + delegate: function delegate() { + return this.targets + " " + this.$props.toggle; + }, + handler: function handler(e) { + e.preventDefault(); + this.toggle(index($$(this.targets + " " + this.$props.toggle, this.$el), e.current)); + } + } ], + connected: function connected() { + if (this.active === false) { + return; + } + var active = this.items[Number(this.active)]; + if (active && !hasClass(active, this.clsOpen)) { + this.toggle(active, false); + } + }, + update: function update() { + var this$1 = this; + this.items.forEach(function(el) { + return this$1._toggleImmediate($(this$1.content, el), hasClass(el, this$1.clsOpen)); + }); + var active = !this.collapsible && !hasClass(this.items, this.clsOpen) && this.items[0]; + if (active) { + this.toggle(active, false); + } + }, + methods: { + toggle: function toggle(item, animate) { + var this$1 = this; + var index = getIndex(item, this.items); + var active = filter(this.items, "." + this.clsOpen); + item = this.items[index]; + item && [ item ].concat(!this.multiple && !includes(active, item) && active || []).forEach(function(el) { + var isItem = el === item; + var state = isItem && !hasClass(el, this$1.clsOpen); + if (!state && isItem && !this$1.collapsible && active.length < 2) { + return; + } + toggleClass(el, this$1.clsOpen, state); + var content = el._wrapper ? el._wrapper.firstElementChild : $(this$1.content, el); + if (!el._wrapper) { + el._wrapper = wrapAll(content, "
    "); + attr(el._wrapper, "hidden", state ? "" : null); + } + this$1._toggleImmediate(content, true); + this$1.toggleElement(el._wrapper, state, animate).then(function() { + if (hasClass(el, this$1.clsOpen) === state) { + if (!state) { + this$1._toggleImmediate(content, false); + } + el._wrapper = null; + unwrap(content); + } + }); + }); + } + } + }); + } + function Alert(UIkit) { + UIkit.component("alert", { + attrs: true, + mixins: [ Class, Togglable ], + args: "animation", + props: { + close: String + }, + defaults: { + animation: [ true ], + selClose: ".uk-alert-close", + duration: 150, + hideProps: assign({ + opacity: 0 + }, Togglable.defaults.hideProps) + }, + events: [ { + name: "click", + delegate: function delegate() { + return this.selClose; + }, + handler: function handler(e) { + e.preventDefault(); + this.close(); + } + } ], + methods: { + close: function close() { + var this$1 = this; + this.toggleElement(this.$el).then(function() { + return this$1.$destroy(true); + }); + } + } + }); + } + function Core(UIkit) { + ready(function() { + var scroll = 0; + var started = 0; + on(window, "load resize", function(e) { + return UIkit.update(null, e); + }); + on(window, "scroll", function(e) { + e.dir = scroll <= window.pageYOffset ? "down" : "up"; + e.scrollY = scroll = window.pageYOffset; + UIkit.update(null, e); + }); + on(document, "animationstart", function(ref) { + var target = ref.target; + if ((css(target, "animationName") || "").match(/^uk-.*(left|right)/)) { + started++; + css(document.body, "overflowX", "hidden"); + setTimeout(function() { + if (!--started) { + css(document.body, "overflowX", ""); + } + }, toMs(css(target, "animationDuration")) + 100); + } + }, true); + if (!hasTouch) { + return; + } + var cls = "uk-hover"; + on(document, "tap", function(ref) { + var target = ref.target; + return $$("." + cls).forEach(function(el) { + return !within(target, el) && removeClass(el, cls); + }); + }); + Object.defineProperty(UIkit, "hoverSelector", { + set: function set(selector) { + on(document, "tap", selector, function(ref) { + var current = ref.current; + return addClass(current, cls); + }); + } + }); + UIkit.hoverSelector = ".uk-animation-toggle, .uk-transition-toggle, [uk-hover]"; + }); + } + function Cover(UIkit) { + UIkit.component("cover", { + mixins: [ Class, UIkit.components.video.options ], + props: { + width: Number, + height: Number + }, + defaults: { + automute: true + }, + update: { + write: function write() { + var el = this.$el; + if (!isVisible(el)) { + return; + } + var ref = el.parentNode; + var height = ref.offsetHeight; + var width = ref.offsetWidth; + css(css(el, { + width: "", + height: "" + }), Dimensions.cover({ + width: this.width || el.clientWidth, + height: this.height || el.clientHeight + }, { + width: width + (width % 2 ? 1 : 0), + height: height + (height % 2 ? 1 : 0) + })); + }, + events: [ "load", "resize" ] + }, + events: { + loadedmetadata: function loadedmetadata() { + this.$emit(); + } + } + }); + } + function Drop(UIkit) { + var active; + UIkit.component("drop", { + mixins: [ Position, Togglable ], + args: "pos", + props: { + mode: "list", + toggle: Boolean, + boundary: "query", + boundaryAlign: Boolean, + delayShow: Number, + delayHide: Number, + clsDrop: String + }, + defaults: { + mode: [ "click", "hover" ], + toggle: true, + boundary: window, + boundaryAlign: false, + delayShow: 0, + delayHide: 800, + clsDrop: false, + hoverIdle: 200, + animation: [ "uk-animation-fade" ], + cls: "uk-open" + }, + computed: { + clsDrop: function clsDrop(ref) { + var clsDrop = ref.clsDrop; + return clsDrop || "uk-" + this.$options.name; + }, + clsPos: function clsPos() { + return this.clsDrop; + } + }, + init: function init() { + this.tracker = new MouseTracker(); + addClass(this.$el, this.clsDrop); + }, + connected: function connected() { + var ref = this.$props; + var toggle = ref.toggle; + this.toggle = toggle && UIkit.toggle(isString(toggle) ? query(toggle, this.$el) : this.$el.previousElementSibling, { + target: this.$el, + mode: this.mode + }); + this.updateAria(this.$el); + }, + events: [ { + name: "click", + delegate: function delegate() { + return "." + this.clsDrop + "-close"; + }, + handler: function handler(e) { + e.preventDefault(); + this.hide(false); + } + }, { + name: "click", + delegate: function delegate() { + return 'a[href^="#"]'; + }, + handler: function handler(e) { + if (e.defaultPrevented) { + return; + } + var id = e.target.hash; + if (!id) { + e.preventDefault(); + } + if (!id || !within(id, this.$el)) { + this.hide(false); + } + } + }, { + name: "beforescroll", + handler: function handler() { + this.hide(false); + } + }, { + name: "toggle", + self: true, + handler: function handler(e, toggle) { + e.preventDefault(); + if (this.isToggled()) { + this.hide(false); + } else { + this.show(toggle, false); + } + } + }, { + name: pointerEnter, + filter: function filter() { + return includes(this.mode, "hover"); + }, + handler: function handler(e) { + if (isTouch(e)) { + return; + } + if (active && active !== this && active.toggle && includes(active.toggle.mode, "hover") && !within(e.target, active.toggle.$el) && !pointInRect({ + x: e.pageX, + y: e.pageY + }, offset(active.$el))) { + active.hide(false); + } + e.preventDefault(); + this.show(this.toggle); + } + }, { + name: "toggleshow", + handler: function handler(e, toggle) { + if (toggle && !includes(toggle.target, this.$el)) { + return; + } + e.preventDefault(); + this.show(toggle || this.toggle); + } + }, { + name: "togglehide " + pointerLeave, + handler: function handler(e, toggle) { + if (isTouch(e) || toggle && !includes(toggle.target, this.$el)) { + return; + } + e.preventDefault(); + if (this.toggle && includes(this.toggle.mode, "hover")) { + this.hide(); + } + } + }, { + name: "beforeshow", + self: true, + handler: function handler() { + this.clearTimers(); + Animation.cancel(this.$el); + this.position(); + } + }, { + name: "show", + self: true, + handler: function handler() { + this.tracker.init(); + if (this.toggle) { + addClass(this.toggle.$el, this.cls); + attr(this.toggle.$el, "aria-expanded", "true"); + } + registerEvent(); + } + }, { + name: "beforehide", + self: true, + handler: function handler() { + this.clearTimers(); + } + }, { + name: "hide", + handler: function handler(ref) { + var target = ref.target; + if (this.$el !== target) { + active = active === null && within(target, this.$el) && this.isToggled() ? this : active; + return; + } + active = this.isActive() ? null : active; + if (this.toggle) { + removeClass(this.toggle.$el, this.cls); + attr(this.toggle.$el, "aria-expanded", "false"); + this.toggle.$el.blur(); + $$("a, button", this.toggle.$el).forEach(function(el) { + return el.blur(); + }); + } + this.tracker.cancel(); + } + } ], + update: { + write: function write() { + if (this.isToggled() && !Animation.inProgress(this.$el)) { + this.position(); + } + }, + events: [ "resize" ] + }, + methods: { + show: function show(toggle, delay) { + var this$1 = this; + if (delay === void 0) delay = true; + var show = function() { + return !this$1.isToggled() && this$1.toggleElement(this$1.$el, true); + }; + var tryShow = function() { + this$1.toggle = toggle || this$1.toggle; + this$1.clearTimers(); + if (this$1.isActive()) { + return; + } else if (delay && active && active !== this$1 && active.isDelaying) { + this$1.showTimer = setTimeout(this$1.show, 10); + return; + } else if (this$1.isParentOf(active)) { + if (active.hideTimer) { + active.hide(false); + } else { + return; + } + } else if (active && !this$1.isChildOf(active) && !this$1.isParentOf(active)) { + var prev; + while (active && active !== prev && !this$1.isChildOf(active)) { + prev = active; + active.hide(false); + } + } + if (delay && this$1.delayShow) { + this$1.showTimer = setTimeout(show, this$1.delayShow); + } else { + show(); + } + active = this$1; + }; + if (toggle && this.toggle && toggle.$el !== this.toggle.$el) { + once(this.$el, "hide", tryShow); + this.hide(false); + } else { + tryShow(); + } + }, + hide: function hide(delay) { + var this$1 = this; + if (delay === void 0) delay = true; + var hide = function() { + return this$1.toggleNow(this$1.$el, false); + }; + this.clearTimers(); + this.isDelaying = this.tracker.movesTo(this.$el); + if (delay && this.isDelaying) { + this.hideTimer = setTimeout(this.hide, this.hoverIdle); + } else if (delay && this.delayHide) { + this.hideTimer = setTimeout(hide, this.delayHide); + } else { + hide(); + } + }, + clearTimers: function clearTimers() { + clearTimeout(this.showTimer); + clearTimeout(this.hideTimer); + this.showTimer = null; + this.hideTimer = null; + this.isDelaying = false; + }, + isActive: function isActive() { + return active === this; + }, + isChildOf: function isChildOf(drop) { + return drop && drop !== this && within(this.$el, drop.$el); + }, + isParentOf: function isParentOf(drop) { + return drop && drop !== this && within(drop.$el, this.$el); + }, + position: function position() { + removeClasses(this.$el, this.clsDrop + "-(stack|boundary)"); + css(this.$el, { + top: "", + left: "", + display: "block" + }); + toggleClass(this.$el, this.clsDrop + "-boundary", this.boundaryAlign); + var boundary = offset(this.boundary); + var alignTo = this.boundaryAlign ? boundary : offset(this.toggle.$el); + if (this.align === "justify") { + var prop = this.getAxis() === "y" ? "width" : "height"; + css(this.$el, prop, alignTo[prop]); + } else if (this.$el.offsetWidth > Math.max(boundary.right - alignTo.left, alignTo.right - boundary.left)) { + addClass(this.$el, this.clsDrop + "-stack"); + } + this.positionAt(this.$el, this.boundaryAlign ? this.boundary : this.toggle.$el, this.boundary); + css(this.$el, "display", ""); + } + } + }); + UIkit.drop.getActive = function() { + return active; + }; + var registered; + function registerEvent() { + if (registered) { + return; + } + registered = true; + on(document, "click", function(ref) { + var target = ref.target; + var defaultPrevented = ref.defaultPrevented; + var prev; + if (defaultPrevented) { + return; + } + while (active && active !== prev && !within(target, active.$el) && !(active.toggle && within(target, active.toggle.$el))) { + prev = active; + active.hide(false); + } + }); + } + } + function Dropdown(UIkit) { + UIkit.component("dropdown", UIkit.components.drop.extend({ + name: "dropdown" + })); + } + function FormCustom(UIkit) { + UIkit.component("form-custom", { + mixins: [ Class ], + args: "target", + props: { + target: Boolean + }, + defaults: { + target: false + }, + computed: { + input: function input(_, $el) { + return $(selInput, $el); + }, + state: function state() { + return this.input.nextElementSibling; + }, + target: function target(ref, $el) { + var target = ref.target; + return target && (target === true && this.input.parentNode === $el && this.input.nextElementSibling || query(target, $el)); + } + }, + update: function update() { + var ref = this; + var target = ref.target; + var input = ref.input; + if (!target) { + return; + } + var option; + target[isInput(target) ? "value" : "textContent"] = input.files && input.files[0] ? input.files[0].name : matches(input, "select") && (option = $$("option", input).filter(function(el) { + return el.selected; + })[0]) ? option.textContent : input.value; + }, + events: [ { + name: "focusin focusout mouseenter mouseleave", + delegate: selInput, + handler: function handler(ref) { + var type = ref.type; + var current = ref.current; + if (current === this.input) { + toggleClass(this.state, "uk-" + (includes(type, "focus") ? "focus" : "hover"), includes([ "focusin", "mouseenter" ], type)); + } + } + }, { + name: "change", + handler: function handler() { + this.$emit(); + } + } ] + }); + } + function Gif(UIkit) { + UIkit.component("gif", { + update: { + read: function read(data) { + var inview = isInView(this.$el); + if (!inview || data.isInView === inview) { + return false; + } + data.isInView = inview; + }, + write: function write() { + this.$el.src = this.$el.src; + }, + events: [ "scroll", "load", "resize" ] + } + }); + } + function Grid(UIkit) { + UIkit.component("grid", UIkit.components.margin.extend({ + mixins: [ Class ], + name: "grid", + defaults: { + margin: "uk-grid-margin", + clsStack: "uk-grid-stack" + }, + update: { + write: function write(ref) { + var stacks = ref.stacks; + toggleClass(this.$el, this.clsStack, stacks); + }, + events: [ "load", "resize" ] + } + })); + } + function HeightMatch(UIkit) { + UIkit.component("height-match", { + args: "target", + props: { + target: String, + row: Boolean + }, + defaults: { + target: "> *", + row: true + }, + computed: { + elements: function elements(ref, $el) { + var target = ref.target; + return $$(target, $el); + } + }, + update: { + read: function read() { + var this$1 = this; + var lastOffset = false; + css(this.elements, "minHeight", ""); + return { + rows: !this.row ? [ this.match(this.elements) ] : this.elements.reduce(function(rows, el) { + if (lastOffset !== el.offsetTop) { + rows.push([ el ]); + } else { + rows[rows.length - 1].push(el); + } + lastOffset = el.offsetTop; + return rows; + }, []).map(function(elements) { + return this$1.match(elements); + }) + }; + }, + write: function write(ref) { + var rows = ref.rows; + rows.forEach(function(ref) { + var height = ref.height; + var elements = ref.elements; + return css(elements, "minHeight", height); + }); + }, + events: [ "load", "resize" ] + }, + methods: { + match: function match(elements) { + if (elements.length < 2) { + return {}; + } + var heights = []; + var max = 0; + elements.forEach(function(el) { + var style, hidden; + if (!isVisible(el)) { + style = attr(el, "style"); + hidden = attr(el, "hidden"); + attr(el, { + style: (style || "") + ";display:block !important;", + hidden: null + }); + } + max = Math.max(max, el.offsetHeight); + heights.push(el.offsetHeight); + if (!isUndefined(style)) { + attr(el, { + style: style, + hidden: hidden + }); + } + }); + elements = elements.filter(function(el, i) { + return heights[i] < max; + }); + return { + height: max, + elements: elements + }; + } + } + }); + } + function HeightViewport(UIkit) { + UIkit.component("height-viewport", { + props: { + expand: Boolean, + offsetTop: Boolean, + offsetBottom: Boolean, + minHeight: Number + }, + defaults: { + expand: false, + offsetTop: false, + offsetBottom: false, + minHeight: 0 + }, + update: { + write: function write() { + css(this.$el, "boxSizing", "border-box"); + var viewport = height(window); + var minHeight, offsetTop = 0; + if (this.expand) { + css(this.$el, { + height: "", + minHeight: "" + }); + var diff = viewport - offsetHeight(document.documentElement); + if (diff > 0) { + minHeight = offsetHeight(this.$el) + diff; + } + } else { + var ref = offset(this.$el); + var top = ref.top; + if (top < viewport / 2 && this.offsetTop) { + offsetTop += top; + } + if (this.offsetBottom === true) { + offsetTop += offsetHeight(this.$el.nextElementSibling); + } else if (isNumeric(this.offsetBottom)) { + offsetTop += viewport / 100 * this.offsetBottom; + } else if (this.offsetBottom && endsWith(this.offsetBottom, "px")) { + offsetTop += toFloat(this.offsetBottom); + } else if (isString(this.offsetBottom)) { + offsetTop += offsetHeight(query(this.offsetBottom, this.$el)); + } + minHeight = offsetTop ? "calc(100vh - " + offsetTop + "px)" : "100vh"; + } + if (!minHeight) { + return; + } + css(this.$el, { + height: "", + minHeight: minHeight + }); + var elHeight = this.$el.offsetHeight; + if (this.minHeight && this.minHeight > elHeight) { + css(this.$el, "minHeight", this.minHeight); + } + if (viewport - offsetTop >= elHeight) { + css(this.$el, "height", minHeight); + } + }, + events: [ "load", "resize" ] + } + }); + function offsetHeight(el) { + return el && el.offsetHeight || 0; + } + } + var closeIcon = ''; + var closeLarge = ''; + var marker = ''; + var navbarToggleIcon = ''; + var overlayIcon = ''; + var paginationNext = ''; + var paginationPrevious = ''; + var searchIcon = ''; + var searchLarge = ''; + var searchNavbar = ''; + var slidenavNext = ''; + var slidenavNextLarge = ''; + var slidenavPrevious = ''; + var slidenavPreviousLarge = ''; + var spinner = ''; + var totop = ''; + function Icon(UIkit) { + var parsed = {}; + var icons = { + spinner: spinner, + totop: totop, + marker: marker, + "close-icon": closeIcon, + "close-large": closeLarge, + "navbar-toggle-icon": navbarToggleIcon, + "overlay-icon": overlayIcon, + "pagination-next": paginationNext, + "pagination-previous": paginationPrevious, + "search-icon": searchIcon, + "search-large": searchLarge, + "search-navbar": searchNavbar, + "slidenav-next": slidenavNext, + "slidenav-next-large": slidenavNextLarge, + "slidenav-previous": slidenavPrevious, + "slidenav-previous-large": slidenavPreviousLarge + }; + UIkit.component("icon", UIkit.components.svg.extend({ + attrs: [ "icon", "ratio" ], + mixins: [ Class ], + name: "icon", + args: "icon", + props: [ "icon" ], + defaults: { + exclude: [ "id", "style", "class", "src", "icon" ] + }, + init: function init() { + addClass(this.$el, "uk-icon"); + if (isRtl) { + this.icon = swap(swap(this.icon, "left", "right"), "previous", "next"); + } + }, + methods: { + getSvg: function getSvg() { + var icon = getIcon(this.icon); + if (!icon) { + return Promise.reject("Icon not found."); + } + return Promise.resolve(icon); + } + } + })); + [ "marker", "navbar-toggle-icon", "overlay-icon", "pagination-previous", "pagination-next", "totop" ].forEach(function(name) { + return registerComponent(name); + }); + [ "slidenav-previous", "slidenav-next" ].forEach(function(name) { + return registerComponent(name, { + init: function init() { + addClass(this.$el, "uk-slidenav"); + if (hasClass(this.$el, "uk-slidenav-large")) { + this.icon += "-large"; + } + } + }); + }); + registerComponent("search-icon", { + init: function init() { + if (hasClass(this.$el, "uk-search-icon") && parents(this.$el, ".uk-search-large").length) { + this.icon = "search-large"; + } else if (parents(this.$el, ".uk-search-navbar").length) { + this.icon = "search-navbar"; + } + } + }); + registerComponent("close", { + init: function init() { + this.icon = "close-" + (hasClass(this.$el, "uk-close-large") ? "large" : "icon"); + } + }); + registerComponent("spinner", { + connected: function connected() { + var this$1 = this; + this.svg.then(function(svg) { + return this$1.ratio !== 1 && css($("circle", svg), "stroke-width", 1 / this$1.ratio); + }, noop); + } + }); + UIkit.icon.add = function(added) { + Object.keys(added).forEach(function(name) { + icons[name] = added[name]; + delete parsed[name]; + }); + if (UIkit._initialized) { + apply(document.body, function(el) { + var icon = UIkit.getComponent(el, "icon"); + if (icon) { + icon.$reset(); + } + }); + } + }; + function registerComponent(name, mixin$$1) { + UIkit.component(name, UIkit.components.icon.extend({ + name: name, + mixins: mixin$$1 ? [ mixin$$1 ] : [], + defaults: { + icon: name + } + })); + } + function getIcon(icon) { + if (!icons[icon]) { + return null; + } + if (!parsed[icon]) { + parsed[icon] = $(icons[icon].trim()); + } + return parsed[icon]; + } + } + function Leader(UIkit) { + UIkit.component("leader", { + mixins: [ Class ], + props: { + fill: String, + media: "media" + }, + defaults: { + fill: "", + media: false, + clsWrapper: "uk-leader-fill", + clsHide: "uk-leader-hide", + attrFill: "data-fill" + }, + computed: { + fill: function fill(ref) { + var fill = ref.fill; + return fill || getCssVar("leader-fill"); + } + }, + connected: function connected() { + var assign; + assign = wrapInner(this.$el, ''), this.wrapper = assign[0]; + }, + disconnected: function disconnected() { + unwrap(this.wrapper.childNodes); + }, + update: [ { + read: function read(ref) { + var changed = ref.changed; + var width = ref.width; + var prev = width; + width = Math.floor(this.$el.offsetWidth / 2); + return { + width: width, + changed: changed || prev !== width, + hide: this.media && !window.matchMedia(this.media).matches + }; + }, + write: function write(data) { + toggleClass(this.wrapper, this.clsHide, data.hide); + if (data.changed) { + data.changed = false; + attr(this.wrapper, this.attrFill, new Array(data.width).join(this.fill)); + } + }, + events: [ "load", "resize" ] + } ] + }); + } + function Margin(UIkit) { + UIkit.component("margin", { + props: { + margin: String, + firstColumn: Boolean + }, + defaults: { + margin: "uk-margin-small-top", + firstColumn: "uk-first-column" + }, + update: { + read: function read(data) { + var items = this.$el.children; + if (!items.length || !isVisible(this.$el)) { + return data.rows = false; + } + data.stacks = true; + var rows = [ [] ]; + for (var i = 0; i < items.length; i++) { + var el = items[i]; + var dim = el.getBoundingClientRect(); + if (!dim.height) { + continue; + } + for (var j = rows.length - 1; j >= 0; j--) { + var row = rows[j]; + if (!row[0]) { + row.push(el); + break; + } + var leftDim = row[0].getBoundingClientRect(); + if (dim.top >= Math.floor(leftDim.bottom)) { + rows.push([ el ]); + break; + } + if (Math.floor(dim.bottom) > leftDim.top) { + data.stacks = false; + if (dim.left < leftDim.left && !isRtl) { + row.unshift(el); + break; + } + row.push(el); + break; + } + if (j === 0) { + rows.unshift([ el ]); + break; + } + } + } + data.rows = rows; + }, + write: function write(ref) { + var this$1 = this; + var rows = ref.rows; + rows.forEach(function(row, i) { + return row.forEach(function(el, j) { + toggleClass(el, this$1.margin, i !== 0); + toggleClass(el, this$1.firstColumn, j === 0); + }); + }); + }, + events: [ "load", "resize" ] + } + }); + } + function Modal$1(UIkit) { + UIkit.component("modal", { + mixins: [ Modal ], + defaults: { + clsPage: "uk-modal-page", + selPanel: ".uk-modal-dialog", + selClose: ".uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full" + }, + events: [ { + name: "show", + self: true, + handler: function handler() { + if (hasClass(this.panel, "uk-margin-auto-vertical")) { + addClass(this.$el, "uk-flex"); + } else { + css(this.$el, "display", "block"); + } + height(this.$el); + } + }, { + name: "hidden", + self: true, + handler: function handler() { + css(this.$el, "display", ""); + removeClass(this.$el, "uk-flex"); + } + } ] + }); + UIkit.component("overflow-auto", { + mixins: [ Class ], + computed: { + modal: function modal(_, $el) { + return closest($el, ".uk-modal"); + }, + panel: function panel(_, $el) { + return closest($el, ".uk-modal-dialog"); + } + }, + connected: function connected() { + css(this.$el, "minHeight", 150); + }, + update: { + write: function write() { + if (!this.panel || !this.modal) { + return; + } + var current = css(this.$el, "maxHeight"); + css(css(this.$el, "maxHeight", 150), "maxHeight", Math.max(150, 150 + height(this.modal) - this.panel.offsetHeight)); + if (current !== css(this.$el, "maxHeight")) { + trigger(this.$el, "resize"); + } + }, + events: [ "load", "resize" ] + } + }); + UIkit.modal.dialog = function(content, options) { + var dialog = UIkit.modal('
    ' + content + "
    ", options); + dialog.show(); + on(dialog.$el, "hidden", function(ref) { + var target = ref.target; + var currentTarget = ref.currentTarget; + if (target === currentTarget) { + dialog.$destroy(true); + } + }); + return dialog; + }; + UIkit.modal.alert = function(message, options) { + options = assign({ + bgClose: false, + escClose: false, + labels: UIkit.modal.labels + }, options); + return new Promise(function(resolve) { + return on(UIkit.modal.dialog('
    ' + (isString(message) ? message : html(message)) + '
    ", options).$el, "hide", resolve); + }); + }; + UIkit.modal.confirm = function(message, options) { + options = assign({ + bgClose: false, + escClose: true, + labels: UIkit.modal.labels + }, options); + return new Promise(function(resolve, reject) { + var confirm = UIkit.modal.dialog('
    ' + (isString(message) ? message : html(message)) + '
    ", options); + var resolved = false; + on(confirm.$el, "submit", "form", function(e) { + e.preventDefault(); + resolve(); + resolved = true; + confirm.hide(); + }); + on(confirm.$el, "hide", function() { + if (!resolved) { + reject(); + } + }); + }); + }; + UIkit.modal.prompt = function(message, value, options) { + options = assign({ + bgClose: false, + escClose: true, + labels: UIkit.modal.labels + }, options); + return new Promise(function(resolve) { + var prompt = UIkit.modal.dialog('
    ", options), input = $("input", prompt.$el); + input.value = value; + var resolved = false; + on(prompt.$el, "submit", "form", function(e) { + e.preventDefault(); + resolve(input.value); + resolved = true; + prompt.hide(); + }); + on(prompt.$el, "hide", function() { + if (!resolved) { + resolve(null); + } + }); + }); + }; + UIkit.modal.labels = { + ok: "Ok", + cancel: "Cancel" + }; + } + function Nav(UIkit) { + UIkit.component("nav", UIkit.components.accordion.extend({ + name: "nav", + defaults: { + targets: "> .uk-parent", + toggle: "> a", + content: "> ul" + } + })); + } + function Navbar(UIkit) { + UIkit.component("navbar", { + mixins: [ Class ], + props: { + dropdown: String, + mode: "list", + align: String, + offset: Number, + boundary: Boolean, + boundaryAlign: Boolean, + clsDrop: String, + delayShow: Number, + delayHide: Number, + dropbar: Boolean, + dropbarMode: String, + dropbarAnchor: "query", + duration: Number + }, + defaults: { + dropdown: ".uk-navbar-nav > li", + align: !isRtl ? "left" : "right", + clsDrop: "uk-navbar-dropdown", + mode: undefined, + offset: undefined, + delayShow: undefined, + delayHide: undefined, + boundaryAlign: undefined, + flip: "x", + boundary: true, + dropbar: false, + dropbarMode: "slide", + dropbarAnchor: false, + duration: 200 + }, + computed: { + boundary: function boundary(ref, $el) { + var boundary = ref.boundary; + var boundaryAlign = ref.boundaryAlign; + return boundary === true || boundaryAlign ? $el : boundary; + }, + pos: function pos(ref) { + var align = ref.align; + return "bottom-" + align; + } + }, + beforeConnect: function beforeConnect() { + var ref = this.$props; + var dropbar = ref.dropbar; + this.dropbar = dropbar && (isString(dropbar) && query(dropbar, this.$el) || $("
    ")); + if (this.dropbar) { + addClass(this.dropbar, "uk-navbar-dropbar"); + if (this.dropbarMode === "slide") { + addClass(this.dropbar, "uk-navbar-dropbar-slide"); + } + } + }, + disconnected: function disconnected() { + this.dropbar && remove(this.dropbar); + }, + update: function update() { + UIkit.drop($$(this.dropdown + " ." + this.clsDrop, this.$el).filter(function(el) { + return !UIkit.getComponent(el, "drop") && !UIkit.getComponent(el, "dropdown"); + }), assign({}, this.$props, { + boundary: this.boundary, + pos: this.pos, + offset: this.dropbar || this.offset + })); + }, + events: [ { + name: "mouseover", + delegate: function delegate() { + return this.dropdown; + }, + handler: function handler(ref) { + var current = ref.current; + var active = this.getActive(); + if (active && active.toggle && !within(active.toggle.$el, current) && !active.tracker.movesTo(active.$el)) { + active.hide(false); + } + } + }, { + name: "mouseleave", + el: function el() { + return this.dropbar; + }, + handler: function handler() { + var active = this.getActive(); + if (active && !matches(this.dropbar, ":hover")) { + active.hide(); + } + } + }, { + name: "beforeshow", + capture: true, + filter: function filter() { + return this.dropbar; + }, + handler: function handler() { + if (!this.dropbar.parentNode) { + after(this.dropbarAnchor || this.$el, this.dropbar); + } + } + }, { + name: "show", + capture: true, + filter: function filter() { + return this.dropbar; + }, + handler: function handler(_, drop) { + var $el = drop.$el; + var dir = drop.dir; + this.clsDrop && addClass($el, this.clsDrop + "-dropbar"); + if (dir === "bottom") { + this.transitionTo($el.offsetHeight + toFloat(css($el, "marginTop")) + toFloat(css($el, "marginBottom")), $el); + } + } + }, { + name: "beforehide", + filter: function filter() { + return this.dropbar; + }, + handler: function handler(e, ref) { + var $el = ref.$el; + var active = this.getActive(); + if (matches(this.dropbar, ":hover") && active && active.$el === $el) { + e.preventDefault(); + } + } + }, { + name: "hide", + filter: function filter() { + return this.dropbar; + }, + handler: function handler(_, ref) { + var $el = ref.$el; + var active = this.getActive(); + if (!active || active && active.$el === $el) { + this.transitionTo(0); + } + } + } ], + methods: { + getActive: function getActive() { + var active = UIkit.drop.getActive(); + return active && includes(active.mode, "hover") && within(active.toggle.$el, this.$el) && active; + }, + transitionTo: function transitionTo(newHeight, el) { + var ref = this; + var dropbar = ref.dropbar; + var oldHeight = isVisible(dropbar) ? height(dropbar) : 0; + el = oldHeight < newHeight && el; + css(el, { + height: oldHeight, + overflow: "hidden" + }); + height(dropbar, oldHeight); + Transition.cancel([ el, dropbar ]); + return Transition.start([ el, dropbar ], { + height: newHeight + }, this.duration).catch(noop).then(function() { + return css(el, { + height: "", + overflow: "" + }); + }); + } + } + }); + } + var scroll; + function Offcanvas(UIkit) { + UIkit.component("offcanvas", { + mixins: [ Modal ], + args: "mode", + props: { + content: String, + mode: String, + flip: Boolean, + overlay: Boolean + }, + defaults: { + content: ".uk-offcanvas-content", + mode: "slide", + flip: false, + overlay: false, + clsPage: "uk-offcanvas-page", + clsContainer: "uk-offcanvas-container", + selPanel: ".uk-offcanvas-bar", + clsFlip: "uk-offcanvas-flip", + clsContent: "uk-offcanvas-content", + clsContentAnimation: "uk-offcanvas-content-animation", + clsSidebarAnimation: "uk-offcanvas-bar-animation", + clsMode: "uk-offcanvas", + clsOverlay: "uk-offcanvas-overlay", + selClose: ".uk-offcanvas-close" + }, + computed: { + content: function content(ref) { + var content = ref.content; + return $(content) || document.body; + }, + clsFlip: function clsFlip(ref) { + var flip = ref.flip; + var clsFlip = ref.clsFlip; + return flip ? clsFlip : ""; + }, + clsOverlay: function clsOverlay(ref) { + var overlay = ref.overlay; + var clsOverlay = ref.clsOverlay; + return overlay ? clsOverlay : ""; + }, + clsMode: function clsMode(ref) { + var mode = ref.mode; + var clsMode = ref.clsMode; + return clsMode + "-" + mode; + }, + clsSidebarAnimation: function clsSidebarAnimation(ref) { + var mode = ref.mode; + var clsSidebarAnimation = ref.clsSidebarAnimation; + return mode === "none" || mode === "reveal" ? "" : clsSidebarAnimation; + }, + clsContentAnimation: function clsContentAnimation(ref) { + var mode = ref.mode; + var clsContentAnimation = ref.clsContentAnimation; + return mode !== "push" && mode !== "reveal" ? "" : clsContentAnimation; + }, + transitionElement: function transitionElement(ref) { + var mode = ref.mode; + return mode === "reveal" ? this.panel.parentNode : this.panel; + } + }, + update: { + write: function write() { + if (this.getActive() === this) { + if (this.overlay || this.clsContentAnimation) { + width(this.content, width(window) - this.scrollbarWidth); + } + if (this.overlay) { + height(this.content, height(window)); + if (scroll) { + this.content.scrollTop = scroll.y; + } + } + } + }, + events: [ "resize" ] + }, + events: [ { + name: "click", + delegate: function delegate() { + return 'a[href^="#"]'; + }, + handler: function handler(ref) { + var current = ref.current; + if (current.hash && $(current.hash, this.content)) { + scroll = null; + this.hide(); + } + } + }, { + name: "beforescroll", + filter: function filter() { + return this.overlay; + }, + handler: function handler(e, scroll, target) { + if (scroll && target && this.isToggled() && $(target, this.content)) { + once(this.$el, "hidden", function() { + return scroll.scrollTo(target); + }); + e.preventDefault(); + } + } + }, { + name: "show", + self: true, + handler: function handler() { + scroll = scroll || { + x: window.pageXOffset, + y: window.pageYOffset + }; + if (this.mode === "reveal" && !hasClass(this.panel, this.clsMode)) { + wrapAll(this.panel, "
    "); + addClass(this.panel.parentNode, this.clsMode); + } + css(document.documentElement, "overflowY", (!this.clsContentAnimation || this.flip) && this.scrollbarWidth && this.overlay ? "scroll" : ""); + addClass(document.body, this.clsContainer, this.clsFlip, this.clsOverlay); + height(document.body); + addClass(this.content, this.clsContentAnimation); + addClass(this.panel, this.clsSidebarAnimation, this.mode !== "reveal" ? this.clsMode : ""); + addClass(this.$el, this.clsOverlay); + css(this.$el, "display", "block"); + height(this.$el); + } + }, { + name: "hide", + self: true, + handler: function handler() { + removeClass(this.content, this.clsContentAnimation); + var active = this.getActive(); + if (this.mode === "none" || active && active !== this && active !== this.prev) { + trigger(this.panel, "transitionend"); + } + } + }, { + name: "hidden", + self: true, + handler: function handler() { + if (this.mode === "reveal") { + unwrap(this.panel); + } + if (!this.overlay) { + scroll = { + x: window.pageXOffset, + y: window.pageYOffset + }; + } else if (!scroll) { + var ref = this.content; + var x = ref.scrollLeft; + var y = ref.scrollTop; + scroll = { + x: x, + y: y + }; + } + removeClass(this.panel, this.clsSidebarAnimation, this.clsMode); + removeClass(this.$el, this.clsOverlay); + css(this.$el, "display", ""); + removeClass(document.body, this.clsContainer, this.clsFlip, this.clsOverlay); + document.body.scrollTop = scroll.y; + css(document.documentElement, "overflowY", ""); + width(this.content, ""); + height(this.content, ""); + window.scrollTo(scroll.x, scroll.y); + scroll = null; + } + }, { + name: "swipeLeft swipeRight", + handler: function handler(e) { + if (this.isToggled() && isTouch(e) && (e.type === "swipeLeft" && !this.flip || e.type === "swipeRight" && this.flip)) { + this.hide(); + } + } + } ] + }); + } + function Responsive(UIkit) { + UIkit.component("responsive", { + props: [ "width", "height" ], + init: function init() { + addClass(this.$el, "uk-responsive-width"); + }, + update: { + read: function read() { + return isVisible(this.$el) && this.width && this.height ? { + width: width(this.$el.parentNode), + height: this.height + } : false; + }, + write: function write(dim) { + height(this.$el, Dimensions.contain({ + height: this.height, + width: this.width + }, dim).height); + }, + events: [ "load", "resize" ] + } + }); + } + function Scroll(UIkit) { + UIkit.component("scroll", { + props: { + duration: Number, + offset: Number + }, + defaults: { + duration: 1e3, + offset: 0 + }, + methods: { + scrollTo: function scrollTo(el) { + var this$1 = this; + el = el && $(el) || document.body; + var docHeight = height(document); + var winHeight = height(window); + var target = offset(el).top - this.offset; + if (target + winHeight > docHeight) { + target = docHeight - winHeight; + } + if (!trigger(this.$el, "beforescroll", [ this, el ])) { + return; + } + var start = Date.now(); + var startY = window.pageYOffset; + var step = function() { + var currentY = startY + (target - startY) * ease(clamp((Date.now() - start) / this$1.duration)); + window.scrollTo(window.pageXOffset, currentY); + if (currentY !== target) { + requestAnimationFrame(step); + } else { + trigger(this$1.$el, "scrolled", [ this$1, el ]); + } + }; + step(); + } + }, + events: { + click: function click(e) { + if (e.defaultPrevented) { + return; + } + e.preventDefault(); + this.scrollTo(escape(this.$el.hash).substr(1)); + } + } + }); + function ease(k) { + return .5 * (1 - Math.cos(Math.PI * k)); + } + } + function Scrollspy(UIkit) { + UIkit.component("scrollspy", { + args: "cls", + props: { + cls: "list", + target: String, + hidden: Boolean, + offsetTop: Number, + offsetLeft: Number, + repeat: Boolean, + delay: Number + }, + defaults: { + cls: [], + target: false, + hidden: true, + offsetTop: 0, + offsetLeft: 0, + repeat: false, + delay: 0, + inViewClass: "uk-scrollspy-inview" + }, + computed: { + elements: function elements(ref, $el) { + var target = ref.target; + return target ? $$(target, $el) : [ $el ]; + } + }, + update: [ { + write: function write() { + if (this.hidden) { + css(filter(this.elements, ":not(." + this.inViewClass + ")"), "visibility", "hidden"); + } + } + }, { + read: function read(els) { + var this$1 = this; + if (!UIkit._initialized) { + if (document.readyState === "complete") { + requestAnimationFrame(function() { + return this$1.$emit(); + }); + } + return false; + } + this.elements.forEach(function(el, i) { + var elData = els[i]; + if (!elData || elData.el !== el) { + var cls = data(el, "uk-scrollspy-class"); + elData = { + el: el, + toggles: cls && cls.split(",") || this$1.cls + }; + } + elData.show = isInView(el, this$1.offsetTop, this$1.offsetLeft); + els[i] = elData; + }); + }, + write: function write(els) { + var this$1 = this; + var index = this.elements.length === 1 ? 1 : 0; + this.elements.forEach(function(el, i) { + var elData = els[i]; + var cls = elData.toggles[i] || elData.toggles[0]; + if (elData.show && !elData.inview && !elData.timer) { + var show = function() { + css(el, "visibility", ""); + addClass(el, this$1.inViewClass); + toggleClass(el, cls); + trigger(el, "inview"); + UIkit.update(el); + elData.inview = true; + delete elData.timer; + }; + if (this$1.delay && index) { + elData.timer = setTimeout(show, this$1.delay * index); + } else { + show(); + } + index++; + } else if (!elData.show && elData.inview && this$1.repeat) { + if (elData.timer) { + clearTimeout(elData.timer); + delete elData.timer; + } + css(el, "visibility", this$1.hidden ? "hidden" : ""); + removeClass(el, this$1.inViewClass); + toggleClass(el, cls); + trigger(el, "outview"); + UIkit.update(el); + elData.inview = false; + } + }); + }, + events: [ "scroll", "load", "resize" ] + } ] + }); + } + function ScrollspyNav(UIkit) { + UIkit.component("scrollspy-nav", { + props: { + cls: String, + closest: String, + scroll: Boolean, + overflow: Boolean, + offset: Number + }, + defaults: { + cls: "uk-active", + closest: false, + scroll: false, + overflow: true, + offset: 0 + }, + computed: { + links: function links(_, $el) { + return $$('a[href^="#"]', $el).filter(function(el) { + return el.hash; + }); + }, + elements: function elements() { + return this.closest ? closest(this.links, this.closest) : this.links; + }, + targets: function targets() { + return $$(this.links.map(function(el) { + return el.hash; + }).join(",")); + } + }, + update: [ { + read: function read() { + if (this.scroll) { + UIkit.scroll(this.links, { + offset: this.offset || 0 + }); + } + } + }, { + read: function read(data) { + var this$1 = this; + var scroll = window.pageYOffset + this.offset + 1; + var max = height(document) - height(window) + this.offset; + data.active = false; + this.targets.every(function(el, i) { + var ref = offset(el); + var top = ref.top; + var last = i + 1 === this$1.targets.length; + if (!this$1.overflow && (i === 0 && top > scroll || last && top + el.offsetTop < scroll)) { + return false; + } + if (!last && offset(this$1.targets[i + 1]).top <= scroll) { + return true; + } + if (scroll >= max) { + for (var j = this$1.targets.length - 1; j > i; j--) { + if (isInView(this$1.targets[j])) { + el = this$1.targets[j]; + break; + } + } + } + return !(data.active = $(filter(this$1.links, '[href="#' + el.id + '"]'))); + }); + }, + write: function write(ref) { + var active = ref.active; + this.links.forEach(function(el) { + return el.blur(); + }); + removeClass(this.elements, this.cls); + if (active) { + trigger(this.$el, "active", [ active, addClass(this.closest ? closest(active, this.closest) : active, this.cls) ]); + } + }, + events: [ "scroll", "load", "resize" ] + } ] + }); + } + function Sticky(UIkit) { + UIkit.component("sticky", { + mixins: [ Class ], + attrs: true, + props: { + top: null, + bottom: Boolean, + offset: Number, + animation: String, + clsActive: String, + clsInactive: String, + clsFixed: String, + clsBelow: String, + selTarget: String, + widthElement: "query", + showOnUp: Boolean, + media: "media", + target: Number + }, + defaults: { + top: 0, + bottom: false, + offset: 0, + animation: "", + clsActive: "uk-active", + clsInactive: "", + clsFixed: "uk-sticky-fixed", + clsBelow: "uk-sticky-below", + selTarget: "", + widthElement: false, + showOnUp: false, + media: false, + target: false + }, + computed: { + selTarget: function selTarget(ref, $el) { + var selTarget = ref.selTarget; + return selTarget && $(selTarget, $el) || $el; + } + }, + connected: function connected() { + this.placeholder = $('
    '); + this.widthElement = this.$props.widthElement || this.placeholder; + if (!this.isActive) { + this.hide(); + } + }, + disconnected: function disconnected() { + if (this.isActive) { + this.isActive = false; + this.hide(); + removeClass(this.selTarget, this.clsInactive); + } + remove(this.placeholder); + this.placeholder = null; + this.widthElement = null; + }, + ready: function ready() { + var this$1 = this; + if (!(this.target && location.hash && window.pageYOffset > 0)) { + return; + } + var target = $(location.hash); + if (target) { + fastdom.read(function() { + var ref = offset(target); + var top = ref.top; + var elTop = offset(this$1.$el).top; + var elHeight = this$1.$el.offsetHeight; + if (elTop + elHeight >= top && elTop <= top + target.offsetHeight) { + window.scrollTo(0, top - elHeight - this$1.target - this$1.offset); + } + }); + } + }, + events: [ { + name: "active", + self: true, + handler: function handler() { + replaceClass(this.selTarget, this.clsInactive, this.clsActive); + } + }, { + name: "inactive", + self: true, + handler: function handler() { + replaceClass(this.selTarget, this.clsActive, this.clsInactive); + } + } ], + update: [ { + write: function write() { + var ref = this; + var placeholder = ref.placeholder; + var outerHeight = (this.isActive ? placeholder : this.$el).offsetHeight; + css(placeholder, assign({ + height: css(this.$el, "position") !== "absolute" ? outerHeight : "" + }, css(this.$el, [ "marginTop", "marginBottom", "marginLeft", "marginRight" ]))); + if (!within(placeholder, document)) { + after(this.$el, placeholder); + attr(placeholder, "hidden", ""); + } + attr(this.widthElement, "hidden", null); + this.width = this.widthElement.offsetWidth; + attr(this.widthElement, "hidden", this.isActive ? null : ""); + this.topOffset = offset(this.isActive ? placeholder : this.$el).top; + this.bottomOffset = this.topOffset + outerHeight; + var bottom = parseProp("bottom", this); + this.top = Math.max(toFloat(parseProp("top", this)), this.topOffset) - this.offset; + this.bottom = bottom && bottom - outerHeight; + this.inactive = this.media && !window.matchMedia(this.media).matches; + if (this.isActive) { + this.update(); + } + }, + events: [ "load", "resize" ] + }, { + read: function read(_, ref) { + var scrollY = ref.scrollY; + if (scrollY === void 0) scrollY = window.pageYOffset; + return { + scroll: this.scroll = scrollY, + visible: isVisible(this.$el) + }; + }, + write: function write(ref, ref$1) { + var this$1 = this; + var visible = ref.visible; + var scroll = ref.scroll; + if (ref$1 === void 0) ref$1 = {}; + var dir = ref$1.dir; + if (scroll < 0 || !visible || this.disabled || this.showOnUp && !dir) { + return; + } + if (this.inactive || scroll < this.top || this.showOnUp && (scroll <= this.top || dir === "down" || dir === "up" && !this.isActive && scroll <= this.bottomOffset)) { + if (!this.isActive) { + return; + } + this.isActive = false; + if (this.animation && scroll > this.topOffset) { + Animation.cancel(this.$el); + Animation.out(this.$el, this.animation).then(function() { + return this$1.hide(); + }, noop); + } else { + this.hide(); + } + } else if (this.isActive) { + this.update(); + } else if (this.animation) { + Animation.cancel(this.$el); + this.show(); + Animation.in(this.$el, this.animation).catch(noop); + } else { + this.show(); + } + }, + events: [ "scroll" ] + } ], + methods: { + show: function show() { + this.isActive = true; + this.update(); + attr(this.placeholder, "hidden", null); + }, + hide: function hide() { + if (!this.isActive || hasClass(this.selTarget, this.clsActive)) { + trigger(this.$el, "inactive"); + } + removeClass(this.$el, this.clsFixed, this.clsBelow); + css(this.$el, { + position: "", + top: "", + width: "" + }); + attr(this.placeholder, "hidden", ""); + }, + update: function update() { + var active = this.top !== 0 || this.scroll > this.top; + var top = Math.max(0, this.offset); + if (this.bottom && this.scroll > this.bottom - this.offset) { + top = this.bottom - this.scroll; + } + css(this.$el, { + position: "fixed", + top: top + "px", + width: this.width + }); + if (hasClass(this.selTarget, this.clsActive)) { + if (!active) { + trigger(this.$el, "inactive"); + } + } else if (active) { + trigger(this.$el, "active"); + } + toggleClass(this.$el, this.clsBelow, this.scroll > this.bottomOffset); + addClass(this.$el, this.clsFixed); + } + } + }); + function parseProp(prop, ref) { + var $props = ref.$props; + var $el = ref.$el; + var propOffset = ref[prop + "Offset"]; + var value = $props[prop]; + if (!value) { + return; + } + if (isNumeric(value)) { + return propOffset + toFloat(value); + } else if (isString(value) && value.match(/^-?\d+vh$/)) { + return height(window) * toFloat(value) / 100; + } else { + var el = value === true ? $el.parentNode : query(value, $el); + if (el) { + return offset(el).top + el.offsetHeight; + } + } + } + } + var svgs = {}; + function Svg(UIkit) { + UIkit.component("svg", { + attrs: true, + props: { + id: String, + icon: String, + src: String, + style: String, + width: Number, + height: Number, + ratio: Number, + class: String + }, + defaults: { + ratio: 1, + id: false, + exclude: [ "src" ], + class: "" + }, + init: function init() { + this.class += " uk-svg"; + }, + connected: function connected() { + var this$1 = this; + if (!this.icon && includes(this.src, "#")) { + var parts = this.src.split("#"); + if (parts.length > 1) { + var assign; + assign = parts, this.src = assign[0], this.icon = assign[1]; + } + } + this.svg = this.getSvg().then(function(svg) { + var el; + if (isString(svg)) { + if (this$1.icon && includes(svg, "/g; + var symbols = {}; + function parseSymbols(svg, icon) { + if (!symbols[svg]) { + symbols[svg] = {}; + var match; + while (match = symbolRe.exec(svg)) { + symbols[svg][match[3]] = '"; + } + } + return symbols[svg][icon]; + } + } + function Switcher(UIkit) { + UIkit.component("switcher", { + mixins: [ Togglable ], + args: "connect", + props: { + connect: String, + toggle: String, + active: Number, + swiping: Boolean + }, + defaults: { + connect: "~.uk-switcher", + toggle: "> *", + active: 0, + swiping: true, + cls: "uk-active", + clsContainer: "uk-switcher", + attrItem: "uk-switcher-item", + queued: true + }, + computed: { + connects: function connects(ref, $el) { + var connect = ref.connect; + return queryAll(connect, $el); + }, + toggles: function toggles(ref, $el) { + var toggle = ref.toggle; + return $$(toggle, $el); + } + }, + events: [ { + name: "click", + delegate: function delegate() { + return this.toggle + ":not(.uk-disabled)"; + }, + handler: function handler(e) { + e.preventDefault(); + this.show(e.current); + } + }, { + name: "click", + el: function el() { + return this.connects; + }, + delegate: function delegate() { + return "[" + this.attrItem + "],[data-" + this.attrItem + "]"; + }, + handler: function handler(e) { + e.preventDefault(); + this.show(data(e.current, this.attrItem)); + } + }, { + name: "swipeRight swipeLeft", + filter: function filter() { + return this.swiping; + }, + el: function el() { + return this.connects; + }, + handler: function handler(e) { + if (!isTouch(e)) { + return; + } + e.preventDefault(); + if (!window.getSelection().toString()) { + this.show(e.type === "swipeLeft" ? "next" : "previous"); + } + } + } ], + update: function update() { + var this$1 = this; + this.connects.forEach(function(list) { + return this$1.updateAria(list.children); + }); + this.show(filter(this.toggles, "." + this.cls)[0] || this.toggles[this.active] || this.toggles[0]); + }, + methods: { + show: function show(item) { + var this$1 = this; + var ref = this.toggles; + var length = ref.length; + var prev = !!this.connects.length && index(filter(this.connects[0].children, "." + this.cls)[0]); + var hasPrev = prev >= 0; + var dir = item === "previous" ? -1 : 1; + var toggle, next = getIndex(item, this.toggles, prev); + for (var i = 0; i < length; i++, next = (next + dir + length) % length) { + if (!matches(this$1.toggles[next], ".uk-disabled, [disabled]")) { + toggle = this$1.toggles[next]; + break; + } + } + if (!toggle || prev >= 0 && hasClass(toggle, this.cls) || prev === next) { + return; + } + removeClass(this.toggles, this.cls); + attr(this.toggles, "aria-expanded", false); + addClass(toggle, this.cls); + attr(toggle, "aria-expanded", true); + this.connects.forEach(function(list) { + if (!hasPrev) { + this$1.toggleNow(list.children[next]); + } else { + this$1.toggleElement([ list.children[prev], list.children[next] ]); + } + }); + } + } + }); + } + function Tab(UIkit) { + UIkit.component("tab", UIkit.components.switcher.extend({ + mixins: [ Class ], + name: "tab", + props: { + media: "media" + }, + defaults: { + media: 960, + attrItem: "uk-tab-item" + }, + init: function init() { + var cls = hasClass(this.$el, "uk-tab-left") ? "uk-tab-left" : hasClass(this.$el, "uk-tab-right") ? "uk-tab-right" : false; + if (cls) { + UIkit.toggle(this.$el, { + cls: cls, + mode: "media", + media: this.media + }); + } + } + })); + } + function Toggle(UIkit) { + UIkit.component("toggle", { + mixins: [ UIkit.mixin.togglable ], + args: "target", + props: { + href: String, + target: null, + mode: "list", + media: "media" + }, + defaults: { + href: false, + target: false, + mode: "click", + queued: true, + media: false + }, + computed: { + target: function target(ref, $el) { + var href = ref.href; + var target = ref.target; + target = queryAll(target || href, $el); + return target.length && target || [ $el ]; + } + }, + events: [ { + name: pointerEnter + " " + pointerLeave, + filter: function filter() { + return includes(this.mode, "hover"); + }, + handler: function handler(e) { + if (!isTouch(e)) { + this.toggle("toggle" + (e.type === pointerEnter ? "show" : "hide")); + } + } + }, { + name: "click", + filter: function filter() { + return includes(this.mode, "click") || hasTouch; + }, + handler: function handler(e) { + if (!isTouch(e) && !includes(this.mode, "click")) { + return; + } + var link; + if (closest(e.target, 'a[href="#"], button') || (link = closest(e.target, "a[href]")) && (this.cls || !isVisible(this.target) || link.hash && matches(this.target, link.hash))) { + once(document, "click", function(e) { + return e.preventDefault(); + }); + } + this.toggle(); + } + } ], + update: { + write: function write() { + if (!includes(this.mode, "media") || !this.media) { + return; + } + var toggled = this.isToggled(this.target); + if (window.matchMedia(this.media).matches ? !toggled : toggled) { + this.toggle(); + } + }, + events: [ "load", "resize" ] + }, + methods: { + toggle: function toggle(type) { + if (trigger(this.target, type || "toggle", [ this ])) { + this.toggleElement(this.target); + } + } + } + }); + } + function Video(UIkit) { + UIkit.component("video", { + args: "autoplay", + props: { + automute: Boolean, + autoplay: Boolean + }, + defaults: { + automute: false, + autoplay: true + }, + computed: { + inView: function inView(ref) { + var autoplay = ref.autoplay; + return autoplay === "inview"; + } + }, + connected: function connected() { + if (this.inView && !hasAttr(this.$el, "preload")) { + this.$el.preload = "none"; + } + }, + ready: function ready() { + this.player = new Player(this.$el); + if (this.automute) { + this.player.mute(); + } + }, + update: [ { + read: function read(_, ref) { + var type = ref.type; + return !this.player || (type === "scroll" || type === "resize") && !this.inView ? false : { + visible: isVisible(this.$el) && css(this.$el, "visibility") !== "hidden", + inView: this.inView && isInView(this.$el) + }; + }, + write: function write(ref) { + var visible = ref.visible; + var inView = ref.inView; + if (!visible || this.inView && !inView) { + this.player.pause(); + } else if (this.autoplay === true || this.inView && inView) { + this.player.play(); + } + }, + events: [ "load", "resize", "scroll" ] + } ] + }); + } + function core(UIkit) { + UIkit.use(Toggle); + UIkit.use(Accordion); + UIkit.use(Alert); + UIkit.use(Video); + UIkit.use(Cover); + UIkit.use(Drop); + UIkit.use(Dropdown); + UIkit.use(FormCustom); + UIkit.use(HeightMatch); + UIkit.use(HeightViewport); + UIkit.use(Margin); + UIkit.use(Gif); + UIkit.use(Grid); + UIkit.use(Leader); + UIkit.use(Modal$1); + UIkit.use(Nav); + UIkit.use(Navbar); + UIkit.use(Offcanvas); + UIkit.use(Responsive); + UIkit.use(Scroll); + UIkit.use(Scrollspy); + UIkit.use(ScrollspyNav); + UIkit.use(Sticky); + UIkit.use(Svg); + UIkit.use(Icon); + UIkit.use(Switcher); + UIkit.use(Tab); + UIkit.use(Core); + } + UIkit$2.version = "3.0.0-beta.42"; + mixin(UIkit$2); + core(UIkit$2); + function plugin(UIkit) { + if (plugin.installed) { + return; + } + var ref = UIkit.util; + var $ = ref.$; + var empty = ref.empty; + var html = ref.html; + UIkit.component("countdown", { + mixins: [ UIkit.mixin.class ], + attrs: true, + props: { + date: String, + clsWrapper: String + }, + defaults: { + date: "", + clsWrapper: ".uk-countdown-%unit%" + }, + computed: { + date: function date(ref) { + var date = ref.date; + return Date.parse(date); + }, + days: function days(ref, $el) { + var clsWrapper = ref.clsWrapper; + return $(clsWrapper.replace("%unit%", "days"), $el); + }, + hours: function hours(ref, $el) { + var clsWrapper = ref.clsWrapper; + return $(clsWrapper.replace("%unit%", "hours"), $el); + }, + minutes: function minutes(ref, $el) { + var clsWrapper = ref.clsWrapper; + return $(clsWrapper.replace("%unit%", "minutes"), $el); + }, + seconds: function seconds(ref, $el) { + var clsWrapper = ref.clsWrapper; + return $(clsWrapper.replace("%unit%", "seconds"), $el); + }, + units: function units() { + var this$1 = this; + return [ "days", "hours", "minutes", "seconds" ].filter(function(unit) { + return this$1[unit]; + }); + } + }, + connected: function connected() { + this.start(); + }, + disconnected: function disconnected() { + var this$1 = this; + this.stop(); + this.units.forEach(function(unit) { + return empty(this$1[unit]); + }); + }, + events: [ { + name: "visibilitychange", + el: document, + handler: function handler() { + if (document.hidden) { + this.stop(); + } else { + this.start(); + } + } + } ], + update: { + write: function write() { + var this$1 = this; + var timespan = getTimeSpan(this.date); + if (timespan.total <= 0) { + this.stop(); + timespan.days = timespan.hours = timespan.minutes = timespan.seconds = 0; + } + this.units.forEach(function(unit) { + var digits = String(Math.floor(timespan[unit])); + digits = digits.length < 2 ? "0" + digits : digits; + var el = this$1[unit]; + if (el.textContent !== digits) { + digits = digits.split(""); + if (digits.length !== el.children.length) { + html(el, digits.map(function() { + return ""; + }).join("")); + } + digits.forEach(function(digit, i) { + return el.children[i].textContent = digit; + }); + } + }); + } + }, + methods: { + start: function start() { + var this$1 = this; + this.stop(); + if (this.date && this.units.length) { + this.$emit(); + this.timer = setInterval(function() { + return this$1.$emit(); + }, 1e3); + } + }, + stop: function stop() { + if (this.timer) { + clearInterval(this.timer); + this.timer = null; + } + } + } + }); + function getTimeSpan(date) { + var total = date - Date.now(); + return { + total: total, + seconds: total / 1e3 % 60, + minutes: total / 1e3 / 60 % 60, + hours: total / 1e3 / 60 / 60 % 24, + days: total / 1e3 / 60 / 60 / 24 + }; + } + } + function plugin$1(UIkit) { + if (plugin$1.installed) { + return; + } + var ref = UIkit.util; + var addClass = ref.addClass; + var css = ref.css; + var scrolledOver = ref.scrolledOver; + var sortBy = ref.sortBy; + var toFloat = ref.toFloat; + UIkit.component("grid-parallax", UIkit.components.grid.extend({ + props: { + target: String, + translate: Number + }, + defaults: { + target: false, + translate: 150 + }, + computed: { + translate: function translate(ref) { + var translate = ref.translate; + return Math.abs(translate); + } + }, + init: function init() { + addClass(this.$el, "uk-grid"); + }, + disconnected: function disconnected() { + this.reset(); + css(this.$el, "marginBottom", ""); + }, + update: [ { + read: function read(ref) { + var rows = ref.rows; + return { + columns: rows && rows[0] && rows[0].length || 0, + rows: rows && rows.map(function(elements) { + return sortBy(elements, "offsetLeft"); + }) + }; + }, + write: function write(ref) { + var columns = ref.columns; + css(this.$el, "marginBottom", columns > 1 ? this.translate + toFloat(css(css(this.$el, "marginBottom", ""), "marginBottom")) : ""); + }, + events: [ "load", "resize" ] + }, { + read: function read() { + return { + scrolled: scrolledOver(this.$el) * this.translate + }; + }, + write: function write(ref) { + var rows = ref.rows; + var columns = ref.columns; + var scrolled = ref.scrolled; + if (!rows || columns === 1 || !scrolled) { + return this.reset(); + } + rows.forEach(function(row) { + return row.forEach(function(el, i) { + return css(el, "transform", "translateY(" + (i % 2 ? scrolled : scrolled / 8) + "px)"); + }); + }); + }, + events: [ "scroll", "load", "resize" ] + } ], + methods: { + reset: function reset() { + css(this.$el.children, "transform", ""); + } + } + })); + UIkit.components.gridParallax.options.update.unshift({ + read: function read() { + this.reset(); + }, + events: [ "load", "resize" ] + }); + } + function AnimationsPlugin(UIkit) { + var ref = UIkit.util; + var css = ref.css; + var Animations = { + slide: { + show: function show(dir) { + return [ { + transform: translate(dir * -100) + }, { + transform: translate() + } ]; + }, + percent: function percent(current) { + return Animations.translated(current); + }, + translate: function translate$1(percent, dir) { + return [ { + transform: translate(dir * -100 * percent) + }, { + transform: translate(dir * 100 * (1 - percent)) + } ]; + } + }, + translated: function translated(el) { + return Math.abs(css(el, "transform").split(",")[4] / el.offsetWidth) || 0; + } + }; + return Animations; + } + function translate(value, unit) { + if (value === void 0) value = 0; + if (unit === void 0) unit = "%"; + return "translateX(" + value + (value ? unit : "") + ")"; + } + function scale3d(value) { + return "scale3d(" + value + ", " + value + ", 1)"; + } + function TransitionerPlugin(UIkit) { + var ref = UIkit.util; + var createEvent = ref.createEvent; + var clamp = ref.clamp; + var css = ref.css; + var Deferred = ref.Deferred; + var noop = ref.noop; + var Promise = ref.Promise; + var Transition = ref.Transition; + var trigger = ref.trigger; + function Transitioner(prev, next, dir, ref) { + var animation = ref.animation; + var easing = ref.easing; + var percent = animation.percent; + var translate = animation.translate; + var show = animation.show; + if (show === void 0) show = noop; + var props = show(dir); + var deferred = new Deferred(); + return { + dir: dir, + show: function show(duration, percent, linear) { + var this$1 = this; + if (percent === void 0) percent = 0; + var timing = linear ? "linear" : easing; + duration -= Math.round(duration * clamp(percent, -1, 1)); + this.translate(percent); + triggerUpdate(next, "itemin", { + percent: percent, + duration: duration, + timing: timing, + dir: dir + }); + triggerUpdate(prev, "itemout", { + percent: 1 - percent, + duration: duration, + timing: timing, + dir: dir + }); + Promise.all([ Transition.start(next, props[1], duration, timing), Transition.start(prev, props[0], duration, timing) ]).then(function() { + this$1.reset(); + deferred.resolve(); + }, noop); + return deferred.promise; + }, + stop: function stop() { + return Transition.stop([ next, prev ]); + }, + cancel: function cancel() { + Transition.cancel([ next, prev ]); + }, + reset: function reset() { + for (var prop in props[0]) { + css([ next, prev ], prop, ""); + } + }, + forward: function forward(duration, percent) { + if (percent === void 0) percent = this.percent(); + Transition.cancel([ next, prev ]); + return this.show(duration, percent, true); + }, + translate: function translate$1(percent) { + this.reset(); + var props = translate(percent, dir); + css(next, props[1]); + css(prev, props[0]); + triggerUpdate(next, "itemtranslatein", { + percent: percent, + dir: dir + }); + triggerUpdate(prev, "itemtranslateout", { + percent: 1 - percent, + dir: dir + }); + }, + percent: function percent$1() { + return percent(prev || next, next, dir); + }, + getDistance: function getDistance() { + return prev.offsetWidth; + } + }; + } + function triggerUpdate(el, type, data) { + trigger(el, createEvent(type, false, false, data)); + } + return Transitioner; + } + function AutoplayMixin(UIkit) { + var ref = UIkit.util; + var pointerDown = ref.pointerDown; + return { + props: { + autoplay: Boolean, + autoplayInterval: Number, + pauseOnHover: Boolean + }, + defaults: { + autoplay: false, + autoplayInterval: 7e3, + pauseOnHover: true + }, + connected: function connected() { + this.startAutoplay(); + }, + disconnected: function disconnected() { + this.stopAutoplay(); + }, + events: [ { + name: "visibilitychange", + el: document, + handler: function handler() { + if (document.hidden) { + this.stopAutoplay(); + } else { + this.startAutoplay(); + } + } + }, { + name: pointerDown, + handler: "stopAutoplay" + }, { + name: "mouseenter", + filter: function filter() { + return this.autoplay; + }, + handler: function handler() { + this.isHovering = true; + } + }, { + name: "mouseleave", + filter: function filter() { + return this.autoplay; + }, + handler: function handler() { + this.isHovering = false; + } + } ], + methods: { + startAutoplay: function startAutoplay() { + var this$1 = this; + this.stopAutoplay(); + if (this.autoplay) { + this.interval = setInterval(function() { + return !(this$1.isHovering && this$1.pauseOnHover) && !this$1.stack.length && this$1.show("next"); + }, this.autoplayInterval); + } + }, + stopAutoplay: function stopAutoplay() { + if (this.interval) { + clearInterval(this.interval); + } + } + } + }; + } + function DragMixin(UIkit) { + var ref = UIkit.util; + var getPos = ref.getPos; + var includes = ref.includes; + var isRtl = ref.isRtl; + var isTouch = ref.isTouch; + var off = ref.off; + var on = ref.on; + var pointerDown = ref.pointerDown; + var pointerMove = ref.pointerMove; + var pointerUp = ref.pointerUp; + var preventClick = ref.preventClick; + var trigger = ref.trigger; + return { + defaults: { + threshold: 10, + preventCatch: false + }, + init: function init() { + var this$1 = this; + [ "start", "move", "end" ].forEach(function(key) { + var fn = this$1[key]; + this$1[key] = function(e) { + var pos = getPos(e).x * (isRtl ? -1 : 1); + this$1.prevPos = pos !== this$1.pos ? this$1.pos : this$1.prevPos; + this$1.pos = pos; + fn(e); + }; + }); + }, + events: [ { + name: pointerDown, + delegate: function delegate() { + return this.slidesSelector; + }, + handler: function handler(e) { + if (!isTouch(e) && hasTextNodesOnly(e.target) || e.button > 0 || this.length < 2 || this.preventCatch) { + return; + } + this.start(e); + } + }, { + name: "dragstart", + handler: function handler(e) { + e.preventDefault(); + } + } ], + methods: { + start: function start() { + this.drag = this.pos; + if (this._transitioner) { + this.percent = this._transitioner.percent(); + this.drag += this._transitioner.getDistance() * this.percent * this.dir; + this._transitioner.translate(this.percent); + this._transitioner.cancel(); + this.dragging = true; + this.stack = []; + } else { + this.prevIndex = this.index; + } + this.unbindMove = on(document, pointerMove, this.move, { + capture: true, + passive: false + }); + on(window, "scroll", this.unbindMove); + on(document, pointerUp, this.end, true); + }, + move: function move(e) { + var this$1 = this; + var distance = this.pos - this.drag; + if (distance === 0 || this.prevPos === this.pos || !this.dragging && Math.abs(distance) < this.threshold) { + return; + } + e.cancelable && e.preventDefault(); + this.dragging = true; + this.dir = distance < 0 ? 1 : -1; + var ref = this; + var slides = ref.slides; + var ref$1 = this; + var prevIndex = ref$1.prevIndex; + var dis = Math.abs(distance); + var nextIndex = this.getIndex(prevIndex + this.dir, prevIndex); + var width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth; + while (nextIndex !== prevIndex && dis > width) { + this$1.drag -= width * this$1.dir; + prevIndex = nextIndex; + dis -= width; + nextIndex = this$1.getIndex(prevIndex + this$1.dir, prevIndex); + width = this$1._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth; + } + this.percent = dis / width; + var prev = slides[prevIndex]; + var next = slides[nextIndex]; + var changed = this.index !== nextIndex; + var edge = prevIndex === nextIndex; + var itemShown; + [ this.index, this.prevIndex ].filter(function(i) { + return !includes([ nextIndex, prevIndex ], i); + }).forEach(function(i) { + trigger(slides[i], "itemhidden", [ this$1 ]); + if (edge) { + itemShown = true; + this$1.prevIndex = prevIndex; + } + }); + if (this.index === prevIndex && this.prevIndex !== prevIndex || itemShown) { + trigger(slides[this.index], "itemshown", [ this ]); + } + if (changed) { + this.prevIndex = prevIndex; + this.index = nextIndex; + !edge && trigger(prev, "beforeitemhide", [ this ]); + trigger(next, "beforeitemshow", [ this ]); + } + this._transitioner = this._translate(Math.abs(this.percent), prev, !edge && next); + if (changed) { + !edge && trigger(prev, "itemhide", [ this ]); + trigger(next, "itemshow", [ this ]); + } + }, + end: function end() { + off(window, "scroll", this.unbindMove); + this.unbindMove(); + off(document, pointerUp, this.end, true); + if (this.dragging) { + this.dragging = null; + if (this.index === this.prevIndex) { + this.percent = 1 - this.percent; + this.dir *= -1; + this._show(false, this.index, true); + this._transitioner = null; + } else { + var dirChange = (isRtl ? this.dir * (isRtl ? 1 : -1) : this.dir) < 0 === this.prevPos > this.pos; + this.index = dirChange ? this.index : this.prevIndex; + if (dirChange) { + this.percent = 1 - this.percent; + } + this.show(this.dir > 0 && !dirChange || this.dir < 0 && dirChange ? "next" : "previous", true); + } + preventClick(); + } + this.drag = this.percent = null; + } + } + }; + function hasTextNodesOnly(el) { + return !el.children.length && el.childNodes.length; + } + } + function NavMixin(UIkit) { + var ref = UIkit.util; + var $ = ref.$; + var $$ = ref.$$; + var data = ref.data; + var html = ref.html; + var toggleClass = ref.toggleClass; + var toNumber = ref.toNumber; + return { + defaults: { + selNav: false + }, + computed: { + nav: function nav(ref, $el) { + var selNav = ref.selNav; + return $(selNav, $el); + }, + navItemSelector: function navItemSelector(ref) { + var attrItem = ref.attrItem; + return "[" + attrItem + "],[data-" + attrItem + "]"; + }, + navItems: function navItems(_, $el) { + return $$(this.navItemSelector, $el); + } + }, + update: [ { + write: function write() { + var this$1 = this; + if (this.nav && this.length !== this.nav.children.length) { + html(this.nav, this.slides.map(function(_, i) { + return "
  • '; + }).join("")); + } + toggleClass($$(this.navItemSelector, this.$el).concat(this.nav), "uk-hidden", !this.maxIndex); + this.updateNav(); + }, + events: [ "load", "resize" ] + } ], + events: [ { + name: "click", + delegate: function delegate() { + return this.navItemSelector; + }, + handler: function handler(e) { + e.preventDefault(); + e.current.blur(); + this.show(data(e.current, this.attrItem)); + } + }, { + name: "itemshow", + handler: "updateNav" + } ], + methods: { + updateNav: function updateNav() { + var this$1 = this; + var i = this.getValidIndex(); + this.navItems.forEach(function(el) { + var cmd = data(el, this$1.attrItem); + toggleClass(el, this$1.clsActive, toNumber(cmd) === i); + toggleClass(el, "uk-invisible", this$1.finite && (cmd === "previous" && i === 0 || cmd === "next" && i >= this$1.maxIndex)); + }); + } + } + }; + } + function plugin$5(UIkit) { + if (plugin$5.installed) { + return; + } + var ref = UIkit.util; + var $ = ref.$; + var assign = ref.assign; + var clamp = ref.clamp; + var fastdom = ref.fastdom; + var getIndex = ref.getIndex; + var hasClass = ref.hasClass; + var isNumber = ref.isNumber; + var isRtl = ref.isRtl; + var Promise = ref.Promise; + var toNodes = ref.toNodes; + var trigger = ref.trigger; + UIkit.mixin.slider = { + attrs: true, + mixins: [ AutoplayMixin(UIkit), DragMixin(UIkit), NavMixin(UIkit) ], + props: { + clsActivated: Boolean, + easing: String, + index: Number, + finite: Boolean, + velocity: Number + }, + defaults: { + easing: "ease", + finite: false, + velocity: 1, + index: 0, + stack: [], + percent: 0, + clsActive: "uk-active", + clsActivated: false, + Transitioner: false, + transitionOptions: {} + }, + computed: { + duration: function duration(ref, $el) { + var velocity = ref.velocity; + return speedUp($el.offsetWidth / velocity); + }, + length: function length() { + return this.slides.length; + }, + list: function list(ref, $el) { + var selList = ref.selList; + return $(selList, $el); + }, + maxIndex: function maxIndex() { + return this.length - 1; + }, + slidesSelector: function slidesSelector(ref) { + var selList = ref.selList; + return selList + " > *"; + }, + slides: function slides() { + return toNodes(this.list.children); + } + }, + methods: { + show: function show(index, force) { + var this$1 = this; + if (force === void 0) force = false; + if (this.dragging || !this.length) { + return; + } + var ref = this; + var stack = ref.stack; + var queueIndex = force ? 0 : stack.length; + var reset = function() { + stack.splice(queueIndex, 1); + if (stack.length) { + this$1.show(stack.shift(), true); + } + }; + stack[force ? "unshift" : "push"](index); + if (!force && stack.length > 1) { + if (stack.length === 2) { + this._transitioner.forward(Math.min(this.duration, 200)); + } + return; + } + var prevIndex = this.index; + var prev = hasClass(this.slides, this.clsActive) && this.slides[prevIndex]; + var nextIndex = this.getIndex(index, this.index); + var next = this.slides[nextIndex]; + if (prev === next) { + reset(); + return; + } + this.dir = getDirection(index, prevIndex); + this.prevIndex = prevIndex; + this.index = nextIndex; + prev && trigger(prev, "beforeitemhide", [ this ]); + if (!trigger(next, "beforeitemshow", [ this, prev ])) { + this.index = this.prevIndex; + reset(); + return; + } + var promise = this._show(prev, next, force).then(function() { + prev && trigger(prev, "itemhidden", [ this$1 ]); + trigger(next, "itemshown", [ this$1 ]); + return new Promise(function(resolve) { + fastdom.write(function() { + stack.shift(); + if (stack.length) { + this$1.show(stack.shift(), true); + } else { + this$1._transitioner = null; + } + resolve(); + }); + }); + }); + prev && trigger(prev, "itemhide", [ this ]); + trigger(next, "itemshow", [ this ]); + return promise; + }, + getIndex: function getIndex$1(index, prev) { + if (index === void 0) index = this.index; + if (prev === void 0) prev = this.index; + return clamp(getIndex(index, this.slides, prev, this.finite), 0, this.maxIndex); + }, + getValidIndex: function getValidIndex(index, prevIndex) { + if (index === void 0) index = this.index; + if (prevIndex === void 0) prevIndex = this.prevIndex; + return this.getIndex(index, prevIndex); + }, + _show: function _show(prev, next, force) { + this._transitioner = this._getTransitioner(prev, next, this.dir, assign({ + easing: force ? next.offsetWidth < 600 ? "cubic-bezier(0.25, 0.46, 0.45, 0.94)" : "cubic-bezier(0.165, 0.84, 0.44, 1)" : this.easing + }, this.transitionOptions)); + if (!force && !prev) { + this._transitioner.translate(1); + return Promise.resolve(); + } + var ref = this.stack; + var length = ref.length; + return this._transitioner[length > 1 ? "forward" : "show"](length > 1 ? Math.min(this.duration, 75 + 75 / (length - 1)) : this.duration, this.percent); + }, + _getDistance: function _getDistance(prev, next) { + return new this._getTransitioner(prev, prev !== next && next).getDistance(); + }, + _translate: function _translate(percent, prev, next) { + if (prev === void 0) prev = this.prevIndex; + if (next === void 0) next = this.index; + var transitioner = this._getTransitioner(prev !== next ? prev : false, next); + transitioner.translate(percent); + return transitioner; + }, + _getTransitioner: function _getTransitioner(prev, next, dir, options) { + if (prev === void 0) prev = this.prevIndex; + if (next === void 0) next = this.index; + if (dir === void 0) dir = this.dir || 1; + if (options === void 0) options = this.transitionOptions; + return new this.Transitioner(isNumber(prev) ? this.slides[prev] : prev, isNumber(next) ? this.slides[next] : next, dir * (isRtl ? -1 : 1), options); + } + } + }; + function getDirection(index, prevIndex) { + return index === "next" ? 1 : index === "previous" ? -1 : index < prevIndex ? -1 : 1; + } + } + function speedUp(x) { + return .5 * x + 300; + } + function plugin$4(UIkit) { + if (plugin$4.installed) { + return; + } + UIkit.use(plugin$5); + var mixin = UIkit.mixin; + var UIkit_util = UIkit.util; + var addClass = UIkit_util.addClass; + var assign = UIkit_util.assign; + var fastdom = UIkit_util.fastdom; + var isNumber = UIkit_util.isNumber; + var removeClass = UIkit_util.removeClass; + var Animations = AnimationsPlugin(UIkit); + var Transitioner = TransitionerPlugin(UIkit); + UIkit.mixin.slideshow = { + mixins: [ mixin.slider ], + props: { + animation: String + }, + defaults: { + animation: "slide", + clsActivated: "uk-transition-active", + Animations: Animations, + Transitioner: Transitioner + }, + computed: { + animation: function animation(ref) { + var animation = ref.animation; + var Animations = ref.Animations; + return assign(animation in Animations ? Animations[animation] : Animations.slide, { + name: animation + }); + }, + transitionOptions: function transitionOptions() { + return { + animation: this.animation + }; + } + }, + events: { + "itemshow itemhide itemshown itemhidden": function itemshowitemhideitemshownitemhidden(ref) { + var target = ref.target; + UIkit.update(target); + }, + itemshow: function itemshow() { + isNumber(this.prevIndex) && fastdom.flush(); + }, + beforeitemshow: function beforeitemshow(ref) { + var target = ref.target; + addClass(target, this.clsActive); + }, + itemshown: function itemshown(ref) { + var target = ref.target; + addClass(target, this.clsActivated); + }, + itemhidden: function itemhidden(ref) { + var target = ref.target; + removeClass(target, this.clsActive, this.clsActivated); + } + } + }; + } + function AnimationsPlugin$1(UIkit) { + var mixin = UIkit.mixin; + var UIkit_util = UIkit.util; + var assign = UIkit_util.assign; + var css = UIkit_util.css; + return assign({}, mixin.slideshow.defaults.Animations, { + fade: { + show: function show() { + return [ { + opacity: 0 + }, { + opacity: 1 + } ]; + }, + percent: function percent(current) { + return 1 - css(current, "opacity"); + }, + translate: function translate$$1(percent) { + return [ { + opacity: 1 - percent + }, { + opacity: percent + } ]; + } + }, + scale: { + show: function show() { + return [ { + opacity: 0, + transform: scale3d(1 - .2) + }, { + opacity: 1, + transform: scale3d(1) + } ]; + }, + percent: function percent(current) { + return 1 - css(current, "opacity"); + }, + translate: function translate$$1(percent) { + return [ { + opacity: 1 - percent, + transform: scale3d(1 - .2 * percent) + }, { + opacity: percent, + transform: scale3d(1 - .2 + .2 * percent) + } ]; + } + } + }); + } + function plugin$3(UIkit) { + if (plugin$3.installed) { + return; + } + UIkit.use(plugin$4); + var mixin = UIkit.mixin; + var util = UIkit.util; + var $ = util.$; + var addClass = util.addClass; + var ajax = util.ajax; + var append = util.append; + var assign = util.assign; + var attr = util.attr; + var css = util.css; + var getImage = util.getImage; + var html = util.html; + var index = util.index; + var on = util.on; + var pointerDown = util.pointerDown; + var pointerMove = util.pointerMove; + var removeClass = util.removeClass; + var Transition = util.Transition; + var trigger = util.trigger; + var Animations = AnimationsPlugin$1(UIkit); + UIkit.component("lightbox-panel", { + mixins: [ mixin.container, mixin.modal, mixin.togglable, mixin.slideshow ], + functional: true, + props: { + delayControls: Number, + preload: Number, + videoAutoplay: Boolean, + template: String + }, + defaults: { + preload: 1, + videoAutoplay: false, + delayControls: 3e3, + items: [], + cls: "uk-open", + clsPage: "uk-lightbox-page", + selList: ".uk-lightbox-items", + attrItem: "uk-lightbox-item", + selClose: ".uk-close-large", + pauseOnHover: false, + velocity: 2, + Animations: Animations, + template: '
      ' + }, + created: function created() { + var this$1 = this; + this.$mount(append(this.container, this.template)); + this.caption = $(".uk-lightbox-caption", this.$el); + this.items.forEach(function() { + return append(this$1.list, "
    • "); + }); + }, + events: [ { + name: pointerMove + " " + pointerDown + " keydown", + handler: "showControls" + }, { + name: "click", + self: true, + delegate: function delegate() { + return this.slidesSelector; + }, + handler: function handler(e) { + e.preventDefault(); + this.hide(); + } + }, { + name: "shown", + self: true, + handler: "showControls" + }, { + name: "hide", + self: true, + handler: function handler() { + this.hideControls(); + removeClass(this.slides, this.clsActive); + Transition.stop(this.slides); + } + }, { + name: "keyup", + el: document, + handler: function handler(e) { + if (!this.isToggled(this.$el)) { + return; + } + switch (e.keyCode) { + case 37: + this.show("previous"); + break; + + case 39: + this.show("next"); + break; + } + } + }, { + name: "beforeitemshow", + handler: function handler(e) { + if (this.isToggled()) { + return; + } + this.preventCatch = true; + e.preventDefault(); + this.toggleNow(this.$el, true); + this.animation = Animations["scale"]; + removeClass(e.target, this.clsActive); + this.stack.splice(1, 0, this.index); + } + }, { + name: "itemshow", + handler: function handler(ref) { + var this$1 = this; + var target = ref.target; + var i = index(target); + var ref$1 = this.getItem(i); + var caption = ref$1.caption; + css(this.caption, "display", caption ? "" : "none"); + html(this.caption, caption); + for (var j = 0; j <= this.preload; j++) { + this$1.loadItem(this$1.getIndex(i + j)); + this$1.loadItem(this$1.getIndex(i - j)); + } + } + }, { + name: "itemshown", + handler: function handler() { + this.preventCatch = false; + } + }, { + name: "itemload", + handler: function handler(_, item) { + var this$1 = this; + var source = item.source; + var type = item.type; + var alt = item.alt; + this.setItem(item, ""); + if (!source) { + return; + } + var matches; + if (type === "image" || source.match(/\.(jp(e)?g|png|gif|svg)$/i)) { + getImage(source).then(function(img) { + return this$1.setItem(item, '' + (alt ? alt : '); + }, function() { + return this$1.setError(item); + }); + } else if (type === "video" || source.match(/\.(mp4|webm|ogv)$/i)) { + var video = $("'); + attr(video, "src", source); + on(video, "error", function() { + return this$1.setError(item); + }); + on(video, "loadedmetadata", function() { + attr(video, { + width: video.videoWidth, + height: video.videoHeight + }); + this$1.setItem(item, video); + }); + } else if (type === "iframe") { + this.setItem(item, ''); + } else if (matches = source.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/watch\?v=([^&\s]+)/) || source.match(/()youtu\.be\/(.*)/)) { + var id = matches[2]; + var setIframe = function(width, height) { + if (width === void 0) width = 640; + if (height === void 0) height = 450; + return this$1.setItem(item, getIframe("//www.youtube" + (matches[1] || "") + ".com/embed/" + id, width, height, this$1.videoAutoplay)); + }; + getImage("//img.youtube.com/vi/" + id + "/maxresdefault.jpg").then(function(ref) { + var width = ref.width; + var height = ref.height; + if (width === 120 && height === 90) { + getImage("//img.youtube.com/vi/" + id + "/0.jpg").then(function(ref) { + var width = ref.width; + var height = ref.height; + return setIframe(width, height); + }, setIframe); + } else { + setIframe(width, height); + } + }, setIframe); + } else if (matches = source.match(/(\/\/.*?)vimeo\.[a-z]+\/([0-9]+).*?/)) { + ajax("//vimeo.com/api/oembed.json?maxwidth=1920&url=" + encodeURI(source), { + responseType: "json" + }).then(function(ref) { + var ref_response = ref.response; + var height = ref_response.height; + var width = ref_response.width; + return this$1.setItem(item, getIframe("//player.vimeo.com/video/" + matches[2], width, height, this$1.videoAutoplay)); + }); + } + } + } ], + methods: { + loadItem: function loadItem(index) { + if (index === void 0) index = this.index; + var item = this.getItem(index); + if (item.content) { + return; + } + trigger(this.$el, "itemload", [ item ]); + }, + getItem: function getItem(index) { + if (index === void 0) index = this.index; + return this.items[index] || {}; + }, + setItem: function setItem(item, content) { + assign(item, { + content: content + }); + var el = html(this.slides[this.items.indexOf(item)], content); + trigger(this.$el, "itemloaded", [ this, el ]); + UIkit.update(el); + }, + setError: function setError(item) { + this.setItem(item, ''); + }, + showControls: function showControls() { + clearTimeout(this.controlsTimer); + this.controlsTimer = setTimeout(this.hideControls, this.delayControls); + addClass(this.$el, "uk-active", "uk-transition-active"); + }, + hideControls: function hideControls() { + removeClass(this.$el, "uk-active", "uk-transition-active"); + } + } + }); + function getIframe(src, width, height, autoplay) { + return ''; + } + } + function plugin$2(UIkit) { + if (plugin$2.installed) { + return; + } + UIkit.use(plugin$3); + var util = UIkit.util; + var $$ = util.$$; + var assign = util.assign; + var data = util.data; + var index = util.index; + var ref = UIkit.components.lightboxPanel; + var options = ref.options; + UIkit.component("lightbox", { + attrs: true, + props: assign({ + toggle: String + }, options.props), + defaults: assign({ + toggle: "a" + }, Object.keys(options.props).reduce(function(defaults, key) { + defaults[key] = options.defaults[key]; + return defaults; + }, {})), + computed: { + toggles: function toggles(ref, $el) { + var toggle = ref.toggle; + return $$(toggle, $el); + } + }, + disconnected: function disconnected() { + this._destroy(); + }, + events: [ { + name: "click", + delegate: function delegate() { + return this.toggle + ":not(.uk-disabled)"; + }, + handler: function handler(e) { + e.preventDefault(); + e.current.blur(); + this.show(index(this.toggles, e.current)); + } + } ], + update: function update(data) { + data.toggles = data.toggles || this.toggles; + if (this.panel && this.animation) { + this.panel.$props.animation = this.animation; + this.panel.$emit(); + } + if (!this.panel || isEqualList(data.toggles, this.toggles)) { + return; + } + data.toggles = this.toggles; + this._destroy(); + this._init(); + }, + methods: { + _init: function _init() { + return this.panel = this.panel || UIkit.lightboxPanel(assign({}, this.$props, { + items: this.toggles.reduce(function(items, el) { + items.push([ "href", "caption", "type", "poster", "alt" ].reduce(function(obj, attr) { + obj[attr === "href" ? "source" : attr] = data(el, attr); + return obj; + }, {})); + return items; + }, []) + })); + }, + _destroy: function _destroy() { + if (this.panel) { + this.panel.$destroy(true); + this.panel = null; + } + }, + show: function show(index) { + if (!this.panel) { + this._init(); + } + return this.panel.show(index); + }, + hide: function hide() { + return this.panel && this.panel.hide(); + } + } + }); + function isEqualList(listA, listB) { + return listA.length === listB.length && listA.every(function(el, i) { + return el === listB[i]; + }); + } + } + function plugin$6(UIkit) { + var obj; + if (plugin$6.installed) { + return; + } + var ref = UIkit.util; + var append = ref.append; + var apply = ref.apply; + var closest = ref.closest; + var css = ref.css; + var pointerEnter = ref.pointerEnter; + var pointerLeave = ref.pointerLeave; + var remove = ref.remove; + var toFloat = ref.toFloat; + var Transition = ref.Transition; + var trigger = ref.trigger; + var containers = {}; + UIkit.component("notification", { + functional: true, + args: [ "message", "status" ], + defaults: { + message: "", + status: "", + timeout: 5e3, + group: null, + pos: "top-center", + clsClose: "uk-notification-close", + clsMsg: "uk-notification-message" + }, + created: function created() { + if (!containers[this.pos]) { + containers[this.pos] = append(UIkit.container, '
      '); + } + var container = css(containers[this.pos], "display", "block"); + this.$mount(append(container, '
      ' + this.message + "
      ")); + }, + ready: function ready() { + var this$1 = this; + var marginBottom = toFloat(css(this.$el, "marginBottom")); + Transition.start(css(this.$el, { + opacity: 0, + marginTop: -this.$el.offsetHeight, + marginBottom: 0 + }), { + opacity: 1, + marginTop: 0, + marginBottom: marginBottom + }).then(function() { + if (this$1.timeout) { + this$1.timer = setTimeout(this$1.close, this$1.timeout); + } + }); + }, + events: (obj = { + click: function click(e) { + if (closest(e.target, 'a[href="#"]')) { + e.preventDefault(); + } + this.close(); + } + }, obj[pointerEnter] = function() { + if (this.timer) { + clearTimeout(this.timer); + } + }, obj[pointerLeave] = function() { + if (this.timeout) { + this.timer = setTimeout(this.close, this.timeout); + } + }, obj), + methods: { + close: function close(immediate) { + var this$1 = this; + var removeFn = function() { + trigger(this$1.$el, "close", [ this$1 ]); + remove(this$1.$el); + if (!containers[this$1.pos].children.length) { + css(containers[this$1.pos], "display", "none"); + } + }; + if (this.timer) { + clearTimeout(this.timer); + } + if (immediate) { + removeFn(); + } else { + Transition.start(this.$el, { + opacity: 0, + marginTop: -this.$el.offsetHeight, + marginBottom: 0 + }).then(removeFn); + } + } + } + }); + UIkit.notification.closeAll = function(group, immediate) { + apply(document.body, function(el) { + var notification = UIkit.getComponent(el, "notification"); + if (notification && (!group || group === notification.group)) { + notification.close(immediate); + } + }); + }; + } + function plugin$8(UIkit) { + if (plugin$8.installed) { + return; + } + var mixin = UIkit.mixin; + var util = UIkit.util; + var css = util.css; + var Dimensions = util.Dimensions; + var each = util.each; + var getImage = util.getImage; + var includes = util.includes; + var isNumber = util.isNumber; + var isUndefined = util.isUndefined; + var toFloat = util.toFloat; + var props = [ "x", "y", "bgx", "bgy", "rotate", "scale", "color", "backgroundColor", "borderColor", "opacity", "blur", "hue", "grayscale", "invert", "saturate", "sepia", "fopacity" ]; + mixin.parallax = { + props: props.reduce(function(props, prop) { + props[prop] = "list"; + return props; + }, { + media: "media" + }), + defaults: props.reduce(function(defaults, prop) { + defaults[prop] = undefined; + return defaults; + }, { + media: false + }), + computed: { + props: function props$1(properties, $el) { + var this$1 = this; + return props.reduce(function(props, prop) { + if (isUndefined(properties[prop])) { + return props; + } + var isColor = prop.match(/color/i); + var isCssProp = isColor || prop === "opacity"; + var pos, bgPos, diff; + var steps = properties[prop].slice(0); + if (isCssProp) { + css($el, prop, ""); + } + if (steps.length < 2) { + steps.unshift((prop === "scale" ? 1 : isCssProp ? css($el, prop) : 0) || 0); + } + var unit = includes(steps.join(""), "%") ? "%" : "px"; + if (isColor) { + var ref = $el.style; + var color = ref.color; + steps = steps.map(function(step) { + return parseColor($el, step); + }); + $el.style.color = color; + } else { + steps = steps.map(toFloat); + } + if (prop.match(/^bg/)) { + css($el, "background-position-" + prop[2], ""); + bgPos = css($el, "backgroundPosition").split(" ")[prop[2] === "x" ? 0 : 1]; + if (this$1.covers) { + var min = Math.min.apply(Math, steps); + var max = Math.max.apply(Math, steps); + var down = steps.indexOf(min) < steps.indexOf(max); + diff = max - min; + steps = steps.map(function(step) { + return step - (down ? min : max); + }); + pos = (down ? -diff : 0) + "px"; + } else { + pos = bgPos; + } + } + props[prop] = { + steps: steps, + unit: unit, + pos: pos, + bgPos: bgPos, + diff: diff + }; + return props; + }, {}); + }, + bgProps: function bgProps() { + var this$1 = this; + return [ "bgx", "bgy" ].filter(function(bg) { + return bg in this$1.props; + }); + }, + covers: function covers$1(_, $el) { + return covers($el); + } + }, + disconnected: function disconnected() { + delete this._image; + }, + update: [ { + read: function read(data) { + var this$1 = this; + data.active = !this.media || window.matchMedia(this.media).matches; + if (data.image) { + data.image.dimEl = { + width: this.$el.offsetWidth, + height: this.$el.offsetHeight + }; + } + if ("image" in data || !this.covers || !this.bgProps.length) { + return; + } + var src = css(this.$el, "backgroundImage").replace(/^none|url\(["']?(.+?)["']?\)$/, "$1"); + if (!src) { + return; + } + data.image = false; + getImage(src).then(function(img) { + data.image = { + width: img.naturalWidth, + height: img.naturalHeight + }; + this$1.$emit(); + }); + }, + write: function write(ref) { + var this$1 = this; + var image = ref.image; + var active = ref.active; + if (!image) { + return; + } + if (!active) { + css(this.$el, { + backgroundSize: "", + backgroundRepeat: "" + }); + return; + } + var dimEl = image.dimEl; + var dim = Dimensions.cover(image, dimEl); + this.bgProps.forEach(function(prop) { + var ref = this$1.props[prop]; + var diff = ref.diff; + var bgPos = ref.bgPos; + var steps = ref.steps; + var attr = prop === "bgy" ? "height" : "width"; + var span = dim[attr] - dimEl[attr]; + if (!bgPos.match(/%$|0px/)) { + return; + } + if (span < diff) { + dimEl[attr] = dim[attr] + diff - span; + } else if (span > diff) { + var bgPosFloat = parseFloat(bgPos); + if (bgPosFloat) { + this$1.props[prop].steps = steps.map(function(step) { + return step - (span - diff) / (100 / bgPosFloat); + }); + } + } + dim = Dimensions.cover(image, dimEl); + }); + css(this.$el, { + backgroundSize: dim.width + "px " + dim.height + "px", + backgroundRepeat: "no-repeat" + }); + }, + events: [ "load", "resize" ] + } ], + methods: { + reset: function reset() { + var this$1 = this; + each(this.getCss(0), function(_, prop) { + return css(this$1.$el, prop, ""); + }); + }, + getCss: function getCss(percent) { + var ref = this; + var props = ref.props; + var translated = false; + return Object.keys(props).reduce(function(css, prop) { + var ref = props[prop]; + var steps = ref.steps; + var unit = ref.unit; + var pos = ref.pos; + var value = getValue(steps, percent); + switch (prop) { + case "x": + case "y": + if (translated) { + break; + } + var ref$1 = [ "x", "y" ].map(function(dir) { + return prop === dir ? value + unit : props[dir] ? getValue(props[dir].steps, percent) + props[dir].unit : 0; + }); + var x = ref$1[0]; + var y = ref$1[1]; + translated = css.transform += " translate3d(" + x + ", " + y + ", 0)"; + break; + + case "rotate": + css.transform += " rotate(" + value + "deg)"; + break; + + case "scale": + css.transform += " scale(" + value + ")"; + break; + + case "bgy": + case "bgx": + css["background-position-" + prop[2]] = "calc(" + pos + " + " + (value + unit) + ")"; + break; + + case "color": + case "backgroundColor": + case "borderColor": + var ref$2 = getStep(steps, percent); + var start = ref$2[0]; + var end = ref$2[1]; + var p = ref$2[2]; + css[prop] = "rgba(" + start.map(function(value, i) { + value = value + p * (end[i] - value); + return i === 3 ? toFloat(value) : parseInt(value, 10); + }).join(",") + ")"; + break; + + case "blur": + css.filter += " blur(" + value + "px)"; + break; + + case "hue": + css.filter += " hue-rotate(" + value + "deg)"; + break; + + case "fopacity": + css.filter += " opacity(" + value + "%)"; + break; + + case "grayscale": + case "invert": + case "saturate": + case "sepia": + css.filter += " " + prop + "(" + value + "%)"; + break; + + default: + css[prop] = value; + } + return css; + }, { + transform: "", + filter: "" + }); + } + } + }; + function parseColor(el, color) { + return css(css(el, "color", color), "color").split(/[(),]/g).slice(1, -1).concat(1).slice(0, 4).map(function(n) { + return toFloat(n); + }); + } + function getStep(steps, percent) { + var count = steps.length - 1; + var index = Math.min(Math.floor(count * percent), count - 1); + var step = steps.slice(index, index + 2); + step.push(percent === 1 ? 1 : percent % (1 / count) * count); + return step; + } + function getValue(steps, percent) { + var ref = getStep(steps, percent); + var start = ref[0]; + var end = ref[1]; + var p = ref[2]; + return (isNumber(start) ? start + Math.abs(start - end) * p * (start < end ? 1 : -1) : +end).toFixed(2); + } + function covers(el) { + var ref = el.style; + var backgroundSize = ref.backgroundSize; + var covers = css(css(el, "backgroundSize", ""), "backgroundSize") === "cover"; + el.style.backgroundSize = backgroundSize; + return covers; + } + } + function plugin$7(UIkit) { + if (plugin$7.installed) { + return; + } + UIkit.use(plugin$8); + var mixin = UIkit.mixin; + var util = UIkit.util; + var clamp = util.clamp; + var css = util.css; + var scrolledOver = util.scrolledOver; + var query = util.query; + UIkit.component("parallax", { + mixins: [ mixin.parallax ], + props: { + target: String, + viewport: Number, + easing: Number + }, + defaults: { + target: false, + viewport: 1, + easing: 1 + }, + computed: { + target: function target(ref, $el) { + var target = ref.target; + return target && query(target, $el) || $el; + } + }, + update: [ { + read: function read(ref) { + var percent = ref.percent; + return { + prev: percent, + percent: ease(scrolledOver(this.target) / (this.viewport || 1), this.easing) + }; + }, + write: function write(ref, ref$1) { + var prev = ref.prev; + var percent = ref.percent; + var active = ref.active; + var type = ref$1.type; + if (type !== "scroll") { + prev = false; + } + if (!active) { + this.reset(); + return; + } + if (prev !== percent) { + css(this.$el, this.getCss(percent)); + } + }, + events: [ "scroll", "load", "resize" ] + } ] + }); + function ease(percent, easing) { + return clamp(percent * (1 - (easing - easing * percent))); + } + } + function SliderReactive(UIkit) { + var ref = UIkit.util; + var removeClass = ref.removeClass; + return { + update: [ { + write: function write() { + if (this.stack.length || this.dragging) { + return; + } + var index = this.getValidIndex(); + delete this.index; + removeClass(this.slides, this.clsActive, this.clsActivated); + this.show(index); + }, + events: [ "load", "resize" ] + } ] + }; + } + function TransitionerPlugin$1(UIkit) { + var ref = UIkit.util; + var assign = ref.assign; + var clamp = ref.clamp; + var createEvent = ref.createEvent; + var css = ref.css; + var Deferred = ref.Deferred; + var includes = ref.includes; + var index = ref.index; + var isRtl = ref.isRtl; + var noop = ref.noop; + var sortBy = ref.sortBy; + var toNodes = ref.toNodes; + var Transition = ref.Transition; + var trigger = ref.trigger; + var Transitioner = assign(function(prev, next, dir, ref) { + var center = ref.center; + var easing = ref.easing; + var list = ref.list; + var deferred = new Deferred(); + var from = prev ? Transitioner.getLeft(prev, list, center) : Transitioner.getLeft(next, list, center) + next.offsetWidth * dir, to = next ? Transitioner.getLeft(next, list, center) : from + prev.offsetWidth * dir * (isRtl ? -1 : 1); + return { + dir: dir, + show: function show(duration, percent, linear) { + if (percent === void 0) percent = 0; + var timing = linear ? "linear" : easing; + duration -= Math.round(duration * clamp(percent, -1, 1)); + this.translate(percent); + prev && this.updateTranslates(); + percent = prev ? percent : clamp(percent, 0, 1); + triggerUpdate(this.getItemIn(), "itemin", { + percent: percent, + duration: duration, + timing: timing, + dir: dir + }); + prev && triggerUpdate(this.getItemIn(true), "itemout", { + percent: 1 - percent, + duration: duration, + timing: timing, + dir: dir + }); + Transition.start(list, { + transform: translate(-to * (isRtl ? -1 : 1), "px") + }, duration, timing).then(deferred.resolve, noop); + return deferred.promise; + }, + stop: function stop() { + return Transition.stop(list); + }, + cancel: function cancel() { + Transition.cancel(list); + }, + reset: function reset() { + css(list, "transform", ""); + }, + forward: function forward(duration, percent) { + if (percent === void 0) percent = this.percent(); + Transition.cancel(list); + return this.show(duration, percent, true); + }, + translate: function translate$1(percent) { + var distance = this.getDistance() * dir * (isRtl ? -1 : 1); + css(list, "transform", translate(clamp(-to + (distance - distance * percent), -Transitioner.getWidth(list), list.offsetWidth) * (isRtl ? -1 : 1), "px")); + this.updateTranslates(); + if (prev) { + percent = clamp(percent, -1, 1); + triggerUpdate(this.getItemIn(), "itemtranslatein", { + percent: percent, + dir: dir + }); + triggerUpdate(this.getItemIn(true), "itemtranslateout", { + percent: 1 - percent, + dir: dir + }); + } + }, + percent: function percent() { + return Math.abs((css(list, "transform").split(",")[4] * (isRtl ? -1 : 1) + from) / (to - from)); + }, + getDistance: function getDistance() { + return Math.abs(to - from); + }, + getItemIn: function getItemIn(out) { + if (out === void 0) out = false; + var actives = this.getActives(); + var all = sortBy(slides(list), "offsetLeft"); + var i = index(all, actives[dir * (out ? -1 : 1) > 0 ? actives.length - 1 : 0]); + return ~i && all[i + (prev && !out ? dir : 0)]; + }, + getActives: function getActives() { + var left = Transitioner.getLeft(prev || next, list, center); + return sortBy(slides(list).filter(function(slide) { + var slideLeft = Transitioner.getElLeft(slide, list); + return slideLeft >= left && slideLeft + slide.offsetWidth <= list.offsetWidth + left; + }), "offsetLeft"); + }, + updateTranslates: function updateTranslates() { + var actives = this.getActives(); + slides(list).forEach(function(slide) { + var isActive = includes(actives, slide); + triggerUpdate(slide, "itemtranslate" + (isActive ? "in" : "out"), { + percent: isActive ? 1 : 0, + dir: slide.offsetLeft <= next.offsetLeft ? 1 : -1 + }); + }); + } + }; + }, { + getLeft: function getLeft(el, list, center) { + var left = this.getElLeft(el, list); + return center ? left - this.center(el, list) : Math.min(left, this.getMax(list)); + }, + getMax: function getMax(list) { + return Math.max(0, this.getWidth(list) - list.offsetWidth); + }, + getWidth: function getWidth(list) { + return slides(list).reduce(function(right, el) { + return el.offsetWidth + right; + }, 0); + }, + getMaxWidth: function getMaxWidth(list) { + return slides(list).reduce(function(right, el) { + return Math.max(right, el.offsetWidth); + }, 0); + }, + center: function center(el, list) { + return list.offsetWidth / 2 - el.offsetWidth / 2; + }, + getElLeft: function getElLeft(el, list) { + return (el.offsetLeft + (isRtl ? el.offsetWidth - list.offsetWidth : 0)) * (isRtl ? -1 : 1); + } + }); + function triggerUpdate(el, type, data) { + trigger(el, createEvent(type, false, false, data)); + } + function slides(list) { + return toNodes(list.children); + } + return Transitioner; + } + function ParallaxPlugin(UIkit, parent) { + UIkit.use(plugin$8); + var mixin = UIkit.mixin; + var UIkit_util = UIkit.util; + var closest = UIkit_util.closest; + var css = UIkit_util.css; + var endsWith = UIkit_util.endsWith; + var noop = UIkit_util.noop; + var Transition = UIkit_util.Transition; + return { + mixins: [ mixin.parallax ], + computed: { + item: function item() { + var slider = UIkit.getComponent(closest(this.$el, ".uk-" + parent), parent); + return slider && closest(this.$el, slider.slidesSelector); + } + }, + events: [ { + name: "itemshown", + self: true, + el: function el() { + return this.item; + }, + handler: function handler() { + css(this.$el, this.getCss(.5)); + } + }, { + name: "itemin itemout", + self: true, + el: function el() { + return this.item; + }, + handler: function handler(ref) { + var type = ref.type; + var ref_detail = ref.detail; + var percent = ref_detail.percent; + var duration = ref_detail.duration; + var timing = ref_detail.timing; + var dir = ref_detail.dir; + Transition.cancel(this.$el); + css(this.$el, this.getCss(getCurrent(type, dir, percent))); + Transition.start(this.$el, this.getCss(isIn(type) ? .5 : dir > 0 ? 1 : 0), duration, timing).catch(noop); + } + }, { + name: "transitioncanceled transitionend", + self: true, + el: function el() { + return this.item; + }, + handler: function handler() { + Transition.cancel(this.$el); + } + }, { + name: "itemtranslatein itemtranslateout", + self: true, + el: function el() { + return this.item; + }, + handler: function handler(ref) { + var type = ref.type; + var ref_detail = ref.detail; + var percent = ref_detail.percent; + var dir = ref_detail.dir; + Transition.cancel(this.$el); + css(this.$el, this.getCss(getCurrent(type, dir, percent))); + } + } ] + }; + function isIn(type) { + return endsWith(type, "in"); + } + function getCurrent(type, dir, percent) { + percent /= 2; + return !isIn(type) ? dir < 0 ? percent : 1 - percent : dir < 0 ? 1 - percent : percent; + } + } + function plugin$9(UIkit) { + if (plugin$9.installed) { + return; + } + UIkit.use(plugin$5); + var mixin = UIkit.mixin; + var UIkit_util = UIkit.util; + var $ = UIkit_util.$; + var $$ = UIkit_util.$$; + var addClass = UIkit_util.addClass; + var css = UIkit_util.css; + var data = UIkit_util.data; + var includes = UIkit_util.includes; + var isNumeric = UIkit_util.isNumeric; + var isUndefined = UIkit_util.isUndefined; + var offset = UIkit_util.offset; + var toggleClass = UIkit_util.toggleClass; + var toFloat = UIkit_util.toFloat; + var Transitioner = TransitionerPlugin$1(UIkit); + UIkit.component("slider-parallax", ParallaxPlugin(UIkit, "slider")); + UIkit.component("slider", { + mixins: [ mixin.class, mixin.slider, SliderReactive(UIkit) ], + props: { + center: Boolean, + sets: Boolean + }, + defaults: { + center: false, + sets: false, + attrItem: "uk-slider-item", + selList: ".uk-slider-items", + selNav: ".uk-slider-nav", + clsContainer: "uk-slider-container", + Transitioner: Transitioner + }, + computed: { + avgWidth: function avgWidth() { + return Transitioner.getWidth(this.list) / this.length; + }, + finite: function finite(ref) { + var finite = ref.finite; + return finite || Transitioner.getWidth(this.list) < this.list.offsetWidth + Transitioner.getMaxWidth(this.list) + this.center; + }, + maxIndex: function maxIndex() { + var this$1 = this; + if (!this.finite || this.center && !this.sets) { + return this.length - 1; + } + if (this.center) { + return this.sets[this.sets.length - 1]; + } + css(this.slides, "order", ""); + var max = Transitioner.getMax(this.list); + var i = this.length; + while (i--) { + if (Transitioner.getElLeft(this$1.list.children[i], this$1.list) < max) { + return Math.min(i + 1, this$1.length - 1); + } + } + return 0; + }, + sets: function sets(ref) { + var this$1 = this; + var sets = ref.sets; + var width = this.list.offsetWidth / (this.center ? 2 : 1); + var left = 0; + var leftCenter = width; + sets = sets && this.slides.reduce(function(sets, slide, i) { + var dim = offset(slide); + if (dim.right > left) { + if (!this$1.center && i > this$1.maxIndex) { + i = this$1.maxIndex; + } + if (!includes(sets, i)) { + var cmp = this$1.slides[i + 1]; + if (this$1.center && cmp && dim.width < leftCenter - offset(cmp).width / 2) { + leftCenter -= dim.width; + } else { + leftCenter = width; + sets.push(i); + left = dim.left + width + (this$1.center ? dim.width / 2 : 0); + } + } + } + return sets; + }, []); + return sets && sets.length && sets; + }, + transitionOptions: function transitionOptions() { + return { + center: this.center, + list: this.list + }; + } + }, + connected: function connected() { + toggleClass(this.$el, this.clsContainer, !$("." + this.clsContainer, this.$el)); + }, + update: { + write: function write() { + var this$1 = this; + $$("[" + this.attrItem + "],[data-" + this.attrItem + "]", this.$el).forEach(function(el) { + var index = data(el, this$1.attrItem); + this$1.maxIndex && toggleClass(el, "uk-hidden", isNumeric(index) && (this$1.sets && !includes(this$1.sets, toFloat(index)) || index > this$1.maxIndex)); + }); + }, + events: [ "load", "resize" ] + }, + events: { + beforeitemshow: function beforeitemshow(e) { + var this$1 = this; + if (!this.dragging && this.sets && this.stack.length < 2 && !includes(this.sets, this.index)) { + this.index = this.getValidIndex(); + } + var diff = Math.abs(this.index - this.prevIndex + (this.dir > 0 && this.index < this.prevIndex || this.dir < 0 && this.index > this.prevIndex ? (this.maxIndex + 1) * this.dir : 0)); + if (!this.dragging && diff > 1) { + for (var i = 0; i < diff; i++) { + this$1.stack.splice(1, 0, this$1.dir > 0 ? "next" : "previous"); + } + e.preventDefault(); + return; + } + this.duration = speedUp(this.avgWidth / this.velocity) * ((this.dir < 0 || !this.slides[this.prevIndex] ? this.slides[this.index] : this.slides[this.prevIndex]).offsetWidth / this.avgWidth); + this.reorder(); + }, + itemshow: function itemshow() { + !isUndefined(this.prevIndex) && addClass(this._getTransitioner().getItemIn(), this.clsActive); + }, + itemshown: function itemshown() { + var this$1 = this; + var actives = this._getTransitioner(this.index).getActives(); + this.slides.forEach(function(slide) { + return toggleClass(slide, this$1.clsActive, includes(actives, slide)); + }); + (!this.sets || includes(this.sets, toFloat(this.index))) && this.slides.forEach(function(slide) { + return toggleClass(slide, this$1.clsActivated, includes(actives, slide)); + }); + } + }, + methods: { + reorder: function reorder() { + var this$1 = this; + css(this.slides, "order", ""); + if (this.finite) { + return; + } + var index = this.dir > 0 && this.slides[this.prevIndex] ? this.prevIndex : this.index; + this.slides.forEach(function(slide, i) { + return css(slide, "order", this$1.dir > 0 && i < index ? 1 : this$1.dir < 0 && i >= this$1.index ? -1 : ""); + }); + if (!this.center) { + return; + } + var next = this.slides[index]; + var width = this.list.offsetWidth / 2 - next.offsetWidth / 2; + var j = 0; + while (width > 0) { + var slideIndex = this$1.getIndex(--j + index, index); + var slide = this$1.slides[slideIndex]; + css(slide, "order", slideIndex > index ? -2 : -1); + width -= slide.offsetWidth; + } + }, + getValidIndex: function getValidIndex(index, prevIndex) { + var this$1 = this; + if (index === void 0) index = this.index; + if (prevIndex === void 0) prevIndex = this.prevIndex; + index = this.getIndex(index, prevIndex); + if (!this.sets) { + return index; + } + var prev; + do { + if (includes(this$1.sets, index)) { + return index; + } + prev = index; + index = this$1.getIndex(index + this$1.dir, prevIndex); + } while (index !== prev); + return index; + } + } + }); + } + function AnimationsPlugin$2(UIkit) { + var mixin = UIkit.mixin; + var UIkit_util = UIkit.util; + var assign = UIkit_util.assign; + var css = UIkit_util.css; + var Animations = assign({}, mixin.slideshow.defaults.Animations, { + fade: { + show: function show() { + return [ { + opacity: 0, + zIndex: 0 + }, { + zIndex: -1 + } ]; + }, + percent: function percent(current) { + return 1 - css(current, "opacity"); + }, + translate: function translate$$1(percent) { + return [ { + opacity: 1 - percent, + zIndex: 0 + }, { + zIndex: -1 + } ]; + } + }, + scale: { + show: function show() { + return [ { + opacity: 0, + transform: scale3d(1 + .5), + zIndex: 0 + }, { + zIndex: -1 + } ]; + }, + percent: function percent(current) { + return 1 - css(current, "opacity"); + }, + translate: function translate$$1(percent) { + return [ { + opacity: 1 - percent, + transform: scale3d(1 + .5 * percent), + zIndex: 0 + }, { + zIndex: -1 + } ]; + } + }, + pull: { + show: function show(dir) { + return dir < 0 ? [ { + transform: translate(30), + zIndex: -1 + }, { + transform: translate(), + zIndex: 0 + } ] : [ { + transform: translate(-100), + zIndex: 0 + }, { + transform: translate(), + zIndex: -1 + } ]; + }, + percent: function percent(current, next, dir) { + return dir < 0 ? 1 - Animations.translated(next) : Animations.translated(current); + }, + translate: function translate$1(percent, dir) { + return dir < 0 ? [ { + transform: translate(30 * percent), + zIndex: -1 + }, { + transform: translate(-100 * (1 - percent)), + zIndex: 0 + } ] : [ { + transform: translate(-percent * 100), + zIndex: 0 + }, { + transform: translate(30 * (1 - percent)), + zIndex: -1 + } ]; + } + }, + push: { + show: function show(dir) { + return dir < 0 ? [ { + transform: translate(100), + zIndex: 0 + }, { + transform: translate(), + zIndex: -1 + } ] : [ { + transform: translate(-30), + zIndex: -1 + }, { + transform: translate(), + zIndex: 0 + } ]; + }, + percent: function percent(current, next, dir) { + return dir > 0 ? 1 - Animations.translated(next) : Animations.translated(current); + }, + translate: function translate$2(percent, dir) { + return dir < 0 ? [ { + transform: translate(percent * 100), + zIndex: 0 + }, { + transform: translate(-30 * (1 - percent)), + zIndex: -1 + } ] : [ { + transform: translate(-30 * percent), + zIndex: -1 + }, { + transform: translate(100 * (1 - percent)), + zIndex: 0 + } ]; + } + } + }); + return Animations; + } + function plugin$10(UIkit) { + if (plugin$10.installed) { + return; + } + UIkit.use(plugin$4); + var mixin = UIkit.mixin; + var height = UIkit.util.height; + var Animations = AnimationsPlugin$2(UIkit); + UIkit.component("slideshow-parallax", ParallaxPlugin(UIkit, "slideshow")); + UIkit.component("slideshow", { + mixins: [ mixin.class, mixin.slideshow, SliderReactive(UIkit) ], + props: { + ratio: String, + minHeight: Boolean, + maxHeight: Boolean + }, + defaults: { + ratio: "16:9", + minHeight: false, + maxHeight: false, + selList: ".uk-slideshow-items", + attrItem: "uk-slideshow-item", + selNav: ".uk-slideshow-nav", + Animations: Animations + }, + update: { + read: function read() { + var ref = this.ratio.split(":").map(Number); + var width = ref[0]; + var height = ref[1]; + height = height * this.$el.offsetWidth / width; + if (this.minHeight) { + height = Math.max(this.minHeight, height); + } + if (this.maxHeight) { + height = Math.min(this.maxHeight, height); + } + return { + height: height + }; + }, + write: function write(ref) { + var hgt = ref.height; + height(this.list, Math.floor(hgt)); + }, + events: [ "load", "resize" ] + } + }); + } + function plugin$11(UIkit) { + var obj; + if (plugin$11.installed) { + return; + } + var mixin = UIkit.mixin; + var util = UIkit.util; + var addClass = util.addClass; + var after = util.after; + var assign = util.assign; + var append = util.append; + var attr = util.attr; + var before = util.before; + var closest = util.closest; + var css = util.css; + var height = util.height; + var fastdom = util.fastdom; + var getPos = util.getPos; + var includes = util.includes; + var index = util.index; + var isInput = util.isInput; + var noop = util.noop; + var offset = util.offset; + var off = util.off; + var on = util.on; + var pointerDown = util.pointerDown; + var pointerMove = util.pointerMove; + var pointerUp = util.pointerUp; + var position = util.position; + var preventClick = util.preventClick; + var Promise = util.Promise; + var remove = util.remove; + var removeClass = util.removeClass; + var toggleClass = util.toggleClass; + var toNodes = util.toNodes; + var Transition = util.Transition; + var trigger = util.trigger; + var within = util.within; + UIkit.component("sortable", { + mixins: [ mixin.class ], + props: { + group: String, + animation: Number, + threshold: Number, + clsItem: String, + clsPlaceholder: String, + clsDrag: String, + clsDragState: String, + clsBase: String, + clsNoDrag: String, + clsEmpty: String, + clsCustom: String, + handle: String + }, + defaults: { + group: false, + animation: 150, + threshold: 5, + clsItem: "uk-sortable-item", + clsPlaceholder: "uk-sortable-placeholder", + clsDrag: "uk-sortable-drag", + clsDragState: "uk-drag", + clsBase: "uk-sortable", + clsNoDrag: "uk-sortable-nodrag", + clsEmpty: "uk-sortable-empty", + clsCustom: "", + handle: false + }, + init: function init() { + var this$1 = this; + [ "init", "start", "move", "end" ].forEach(function(key) { + var fn = this$1[key]; + this$1[key] = function(e) { + this$1.scrollY = window.pageYOffset; + var ref = getPos(e); + var x = ref.x; + var y = ref.y; + this$1.pos = { + x: x, + y: y + }; + fn(e); + }; + }); + }, + events: (obj = {}, obj[pointerDown] = "init", obj), + update: { + write: function write() { + if (this.clsEmpty) { + toggleClass(this.$el, this.clsEmpty, !this.$el.children.length); + } + if (!this.drag) { + return; + } + offset(this.drag, { + top: this.pos.y + this.origin.top, + left: this.pos.x + this.origin.left + }); + var ref = offset(this.drag); + var top = ref.top; + var bottom = top + this.drag.offsetHeight; + var scroll; + if (top > 0 && top < this.scrollY) { + scroll = this.scrollY - 5; + } else if (bottom < height(document) && bottom > height(window) + this.scrollY) { + scroll = this.scrollY + 5; + } + scroll && setTimeout(function() { + return window.scrollTo(window.scrollX, scroll); + }, 5); + } + }, + methods: { + init: function init(e) { + var target = e.target; + var button = e.button; + var defaultPrevented = e.defaultPrevented; + var ref = toNodes(this.$el.children).filter(function(el) { + return within(target, el); + }); + var placeholder = ref[0]; + if (!placeholder || isInput(e.target) || this.handle && !within(target, this.handle) || button > 0 || within(target, "." + this.clsNoDrag) || defaultPrevented) { + return; + } + e.preventDefault(); + this.touched = [ this ]; + this.placeholder = placeholder; + this.origin = assign({ + target: target, + index: index(placeholder) + }, this.pos); + on(document, pointerMove, this.move); + on(document, pointerUp, this.end); + on(window, "scroll", this.scroll); + if (!this.threshold) { + this.start(e); + } + }, + start: function start(e) { + this.drag = append(UIkit.container, this.placeholder.outerHTML.replace(/^
    • $/i, "div>")); + css(this.drag, assign({ + boxSizing: "border-box", + width: this.placeholder.offsetWidth, + height: this.placeholder.offsetHeight + }, css(this.placeholder, [ "paddingLeft", "paddingRight", "paddingTop", "paddingBottom" ]))); + attr(this.drag, "uk-no-boot", ""); + addClass(this.drag, this.clsDrag, this.clsCustom); + height(this.drag.firstElementChild, height(this.placeholder.firstElementChild)); + var ref = offset(this.placeholder); + var left = ref.left; + var top = ref.top; + assign(this.origin, { + left: left - this.pos.x, + top: top - this.pos.y + }); + addClass(this.placeholder, this.clsPlaceholder); + addClass(this.$el.children, this.clsItem); + addClass(document.documentElement, this.clsDragState); + trigger(this.$el, "start", [ this, this.placeholder, this.drag ]); + this.move(e); + }, + move: function move(e) { + if (!this.drag) { + if (Math.abs(this.pos.x - this.origin.x) > this.threshold || Math.abs(this.pos.y - this.origin.y) > this.threshold) { + this.start(e); + } + return; + } + this.$emit(); + var target = e.type === "mousemove" ? e.target : document.elementFromPoint(this.pos.x - document.body.scrollLeft, this.pos.y - document.body.scrollTop); + var sortable = getSortable(target); + var previous = getSortable(this.placeholder); + var move = sortable !== previous; + if (!sortable || within(target, this.placeholder) || move && (!sortable.group || sortable.group !== previous.group)) { + return; + } + target = sortable.$el === target.parentNode && target || toNodes(sortable.$el.children).filter(function(element) { + return within(target, element); + })[0]; + if (move) { + previous.remove(this.placeholder); + } else if (!target) { + return; + } + sortable.insert(this.placeholder, target); + if (!includes(this.touched, sortable)) { + this.touched.push(sortable); + } + }, + scroll: function scroll() { + var scroll = window.pageYOffset; + if (scroll !== this.scrollY) { + this.pos.y += scroll - this.scrollY; + this.scrollY = scroll; + this.$emit(); + } + }, + end: function end(e) { + off(document, pointerMove, this.move); + off(document, pointerUp, this.end); + off(window, "scroll", this.scroll); + if (!this.drag) { + if (e.type !== "mouseup" && within(e.target, "a[href]")) { + location.href = closest(e.target, "a[href]").href; + } + return; + } + preventClick(); + var sortable = getSortable(this.placeholder); + if (this === sortable) { + if (this.origin.index !== index(this.placeholder)) { + trigger(this.$el, "moved", [ this, this.placeholder ]); + } + } else { + trigger(sortable.$el, "added", [ sortable, this.placeholder ]); + trigger(this.$el, "removed", [ this, this.placeholder ]); + } + trigger(this.$el, "stop", [ this ]); + remove(this.drag); + this.drag = null; + var classes = this.touched.map(function(sortable) { + return sortable.clsPlaceholder + " " + sortable.clsItem; + }).join(" "); + this.touched.forEach(function(sortable) { + return removeClass(sortable.$el.children, classes); + }); + removeClass(document.documentElement, this.clsDragState); + }, + insert: function insert(element, target) { + var this$1 = this; + addClass(this.$el.children, this.clsItem); + var insert = function() { + if (target) { + if (!within(element, this$1.$el) || isPredecessor(element, target)) { + before(target, element); + } else { + after(target, element); + } + } else { + append(this$1.$el, element); + } + }; + if (this.animation) { + this.animate(insert); + } else { + insert(); + } + }, + remove: function remove$1(element) { + if (!within(element, this.$el)) { + return; + } + if (this.animation) { + this.animate(function() { + return remove(element); + }); + } else { + remove(element); + } + }, + animate: function animate(action) { + var this$1 = this; + var props = []; + var children = toNodes(this.$el.children); + var reset = { + position: "", + width: "", + height: "", + pointerEvents: "", + top: "", + left: "", + bottom: "", + right: "" + }; + children.forEach(function(el) { + props.push(assign({ + position: "absolute", + pointerEvents: "none", + width: el.offsetWidth, + height: el.offsetHeight + }, position(el))); + }); + action(); + children.forEach(Transition.cancel); + css(this.$el.children, reset); + UIkit.update(this.$el); + fastdom.flush(); + css(this.$el, "minHeight", height(this.$el)); + var positions = children.map(function(el) { + return position(el); + }); + Promise.all(children.map(function(el, i) { + return Transition.start(css(el, props[i]), positions[i], this$1.animation); + })).then(function() { + css(this$1.$el, "minHeight", ""); + css(children, reset); + UIkit.update(this$1.$el); + fastdom.flush(); + }, noop); + } + } + }); + function getSortable(element) { + return element && (UIkit.getComponent(element, "sortable") || getSortable(element.parentNode)); + } + function isPredecessor(element, target) { + return element.parentNode === target.parentNode && index(element) > index(target); + } + } + function plugin$12(UIkit) { + var obj; + if (plugin$12.installed) { + return; + } + var util = UIkit.util; + var mixin = UIkit.mixin; + var append = util.append; + var attr = util.attr; + var flipPosition = util.flipPosition; + var hasAttr = util.hasAttr; + var includes = util.includes; + var isTouch = util.isTouch; + var isVisible = util.isVisible; + var matches = util.matches; + var on = util.on; + var pointerDown = util.pointerDown; + var pointerEnter = util.pointerEnter; + var pointerLeave = util.pointerLeave; + var remove = util.remove; + var within = util.within; + var actives = []; + UIkit.component("tooltip", { + attrs: true, + args: "title", + mixins: [ mixin.container, mixin.togglable, mixin.position ], + props: { + delay: Number, + title: String + }, + defaults: { + pos: "top", + title: "", + delay: 0, + animation: [ "uk-animation-scale-up" ], + duration: 100, + cls: "uk-active", + clsPos: "uk-tooltip" + }, + beforeConnect: function beforeConnect() { + this._hasTitle = hasAttr(this.$el, "title"); + attr(this.$el, { + title: "", + "aria-expanded": false + }); + }, + disconnected: function disconnected() { + this.hide(); + attr(this.$el, { + title: this._hasTitle ? this.title : null, + "aria-expanded": null + }); + }, + methods: { + show: function show() { + var this$1 = this; + if (includes(actives, this)) { + return; + } + actives.forEach(function(active) { + return active.hide(); + }); + actives.push(this); + this._unbind = on(document, "click", function(e) { + return !within(e.target, this$1.$el) && this$1.hide(); + }); + clearTimeout(this.showTimer); + this.tooltip = append(this.container, '
      ' + this.title + "
      "); + attr(this.$el, "aria-expanded", true); + this.positionAt(this.tooltip, this.$el); + this.origin = this.getAxis() === "y" ? flipPosition(this.dir) + "-" + this.align : this.align + "-" + flipPosition(this.dir); + this.showTimer = setTimeout(function() { + this$1.toggleElement(this$1.tooltip, true); + this$1.hideTimer = setInterval(function() { + if (!isVisible(this$1.$el)) { + this$1.hide(); + } + }, 150); + }, this.delay); + }, + hide: function hide() { + var index = actives.indexOf(this); + if (!~index || matches(this.$el, "input") && this.$el === document.activeElement) { + return; + } + actives.splice(index, 1); + clearTimeout(this.showTimer); + clearInterval(this.hideTimer); + attr(this.$el, "aria-expanded", false); + this.toggleElement(this.tooltip, false); + this.tooltip && remove(this.tooltip); + this.tooltip = false; + this._unbind(); + } + }, + events: (obj = {}, obj["focus " + pointerEnter + " " + pointerDown] = function(e) { + if (e.type !== pointerDown || !isTouch(e)) { + this.show(); + } + }, obj.blur = "hide", obj[pointerLeave] = function(e) { + if (!isTouch(e)) { + this.hide(); + } + }, obj) + }); + } + function plugin$13(UIkit) { + if (plugin$13.installed) { + return; + } + var ref = UIkit.util; + var addClass = ref.addClass; + var ajax = ref.ajax; + var matches = ref.matches; + var noop = ref.noop; + var on = ref.on; + var removeClass = ref.removeClass; + var trigger = ref.trigger; + UIkit.component("upload", { + props: { + allow: String, + clsDragover: String, + concurrent: Number, + maxSize: Number, + method: String, + mime: String, + msgInvalidMime: String, + msgInvalidName: String, + msgInvalidSize: String, + multiple: Boolean, + name: String, + params: Object, + type: String, + url: String + }, + defaults: { + allow: false, + clsDragover: "uk-dragover", + concurrent: 1, + maxSize: 0, + method: "POST", + mime: false, + msgInvalidMime: "Invalid File Type: %s", + msgInvalidName: "Invalid File Name: %s", + msgInvalidSize: "Invalid File Size: %s Bytes Max", + multiple: false, + name: "files[]", + params: {}, + type: "", + url: "", + abort: noop, + beforeAll: noop, + beforeSend: noop, + complete: noop, + completeAll: noop, + error: noop, + fail: noop, + load: noop, + loadEnd: noop, + loadStart: noop, + progress: noop + }, + events: { + change: function change(e) { + if (!matches(e.target, 'input[type="file"]')) { + return; + } + e.preventDefault(); + if (e.target.files) { + this.upload(e.target.files); + } + e.target.value = ""; + }, + drop: function drop(e) { + stop(e); + var transfer = e.dataTransfer; + if (!transfer || !transfer.files) { + return; + } + removeClass(this.$el, this.clsDragover); + this.upload(transfer.files); + }, + dragenter: function dragenter(e) { + stop(e); + }, + dragover: function dragover(e) { + stop(e); + addClass(this.$el, this.clsDragover); + }, + dragleave: function dragleave(e) { + stop(e); + removeClass(this.$el, this.clsDragover); + } + }, + methods: { + upload: function upload(files) { + var this$1 = this; + if (!files.length) { + return; + } + trigger(this.$el, "upload", [ files ]); + for (var i = 0; i < files.length; i++) { + if (this$1.maxSize && this$1.maxSize * 1e3 < files[i].size) { + this$1.fail(this$1.msgInvalidSize.replace("%s", this$1.allow)); + return; + } + if (this$1.allow && !match(this$1.allow, files[i].name)) { + this$1.fail(this$1.msgInvalidName.replace("%s", this$1.allow)); + return; + } + if (this$1.mime && !match(this$1.mime, files[i].type)) { + this$1.fail(this$1.msgInvalidMime.replace("%s", this$1.mime)); + return; + } + } + if (!this.multiple) { + files = [ files[0] ]; + } + this.beforeAll(this, files); + var chunks = chunk(files, this.concurrent); + var upload = function(files) { + var data = new FormData(); + files.forEach(function(file) { + return data.append(this$1.name, file); + }); + for (var key in this$1.params) { + data.append(key, this$1.params[key]); + } + ajax(this$1.url, { + data: data, + method: this$1.method, + responseType: this$1.type, + beforeSend: function(env) { + var xhr = env.xhr; + xhr.upload && on(xhr.upload, "progress", this$1.progress); + [ "loadStart", "load", "loadEnd", "abort" ].forEach(function(type) { + return on(xhr, type.toLowerCase(), this$1[type]); + }); + this$1.beforeSend(env); + } + }).then(function(xhr) { + this$1.complete(xhr); + if (chunks.length) { + upload(chunks.shift()); + } else { + this$1.completeAll(xhr); + } + }, function(e) { + return this$1.error(e.message); + }); + }; + upload(chunks.shift()); + } + } + }); + function match(pattern, path) { + return path.match(new RegExp("^" + pattern.replace(/\//g, "\\/").replace(/\*\*/g, "(\\/[^\\/]+)*").replace(/\*/g, "[^\\/]+").replace(/((?!\\))\?/g, "$1.") + "$", "i")); + } + function chunk(files, size) { + var chunks = []; + for (var i = 0; i < files.length; i += size) { + var chunk = []; + for (var j = 0; j < size; j++) { + chunk.push(files[i + j]); + } + chunks.push(chunk); + } + return chunks; + } + function stop(e) { + e.preventDefault(); + e.stopPropagation(); + } + } + UIkit$2.use(plugin); + UIkit$2.use(plugin$1); + UIkit$2.use(plugin$2); + UIkit$2.use(plugin$6); + UIkit$2.use(plugin$7); + UIkit$2.use(plugin$9); + UIkit$2.use(plugin$10); + UIkit$2.use(plugin$11); + UIkit$2.use(plugin$12); + UIkit$2.use(plugin$13); + { + boot(UIkit$2); + } + return UIkit$2; +}); + +(function(global, factory) { + typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define("uikiticons", factory) : global.UIkitIcons = factory(); +})(this, function() { + "use strict"; + var album = ' '; + var ban = ' '; + var behance = ' '; + var bell = ' '; + var bold = ' '; + var bolt = ' '; + var bookmark = ' '; + var calendar = ' '; + var camera = ' '; + var cart = ' '; + var check = ' '; + var clock = ' '; + var close = ' '; + var code = ' '; + var cog = ' '; + var comment = ' '; + var commenting = ' '; + var comments = ' '; + var copy = ' '; + var database = ' '; + var desktop = ' '; + var download = ' '; + var dribbble = ' '; + var expand = ' '; + var facebook = ' '; + var file = ' '; + var flickr = ' '; + var folder = ' '; + var forward = ' '; + var foursquare = ' '; + var future = ' '; + var github = ' '; + var gitter = ' '; + var google = ' '; + var grid = ' '; + var happy = ' '; + var hashtag = ' '; + var heart = ' '; + var history = ' '; + var home = ' '; + var image = ' '; + var info = ' '; + var instagram = ' '; + var italic = ' '; + var joomla = ' '; + var laptop = ' '; + var lifesaver = ' '; + var link = ' '; + var linkedin = ' '; + var list = ' '; + var location = ' '; + var lock = ' '; + var mail = ' '; + var menu = ' '; + var minus = ' '; + var more = ' '; + var move = ' '; + var nut = ' '; + var pagekit = ' '; + var pencil = ' '; + var phone = ' '; + var pinterest = ' '; + var play = ' '; + var plus = ' '; + var pull = ' '; + var push = ' '; + var question = ' '; + var receiver = ' '; + var refresh = ' '; + var reply = ' '; + var rss = ' '; + var search = ' '; + var server = ' '; + var settings = ' '; + var shrink = ' '; + var social = ' '; + var soundcloud = ' '; + var star = ' '; + var strikethrough = ' '; + var table = ' '; + var tablet = ' '; + var tag = ' '; + var thumbnails = ' '; + var trash = ' '; + var tripadvisor = ' '; + var tumblr = ' '; + var tv = ' '; + var twitter = ' '; + var uikit = ' '; + var unlock = ' '; + var upload = ' '; + var user = ' '; + var users = ' '; + var vimeo = ' '; + var warning = ' '; + var whatsapp = ' '; + var wordpress = ' '; + var world = ' '; + var xing = ' '; + var yelp = ' '; + var youtube = ' '; + var Icons = { + album: album, + ban: ban, + behance: behance, + bell: bell, + bold: bold, + bolt: bolt, + bookmark: bookmark, + calendar: calendar, + camera: camera, + cart: cart, + check: check, + clock: clock, + close: close, + code: code, + cog: cog, + comment: comment, + commenting: commenting, + comments: comments, + copy: copy, + database: database, + desktop: desktop, + download: download, + dribbble: dribbble, + expand: expand, + facebook: facebook, + file: file, + flickr: flickr, + folder: folder, + forward: forward, + foursquare: foursquare, + future: future, + github: github, + gitter: gitter, + google: google, + grid: grid, + happy: happy, + hashtag: hashtag, + heart: heart, + history: history, + home: home, + image: image, + info: info, + instagram: instagram, + italic: italic, + joomla: joomla, + laptop: laptop, + lifesaver: lifesaver, + link: link, + linkedin: linkedin, + list: list, + location: location, + lock: lock, + mail: mail, + menu: menu, + minus: minus, + more: more, + move: move, + nut: nut, + pagekit: pagekit, + pencil: pencil, + phone: phone, + pinterest: pinterest, + play: play, + plus: plus, + pull: pull, + push: push, + question: question, + receiver: receiver, + refresh: refresh, + reply: reply, + rss: rss, + search: search, + server: server, + settings: settings, + shrink: shrink, + social: social, + soundcloud: soundcloud, + star: star, + strikethrough: strikethrough, + table: table, + tablet: tablet, + tag: tag, + thumbnails: thumbnails, + trash: trash, + tripadvisor: tripadvisor, + tumblr: tumblr, + tv: tv, + twitter: twitter, + uikit: uikit, + unlock: unlock, + upload: upload, + user: user, + users: users, + vimeo: vimeo, + warning: warning, + whatsapp: whatsapp, + wordpress: wordpress, + world: world, + xing: xing, + yelp: yelp, + youtube: youtube, + "500px": ' ', + "arrow-down": ' ', + "arrow-left": ' ', + "arrow-right": ' ', + "arrow-up": ' ', + "chevron-down": ' ', + "chevron-left": ' ', + "chevron-right": ' ', + "chevron-up": ' ', + "cloud-download": ' ', + "cloud-upload": ' ', + "credit-card": ' ', + "file-edit": ' ', + "git-branch": ' ', + "git-fork": ' ', + "github-alt": ' ', + "google-plus": ' ', + "minus-circle": ' ', + "more-vertical": ' ', + "paint-bucket": ' ', + "phone-landscape": ' ', + "play-circle": ' ', + "plus-circle": ' ', + "quote-right": ' ', + "sign-in": ' ', + "sign-out": ' ', + "tablet-landscape": ' ', + "triangle-down": ' ', + "triangle-left": ' ', + "triangle-right": ' ', + "triangle-up": ' ', + "video-camera": ' ' + }; + function plugin(UIkit) { + if (plugin.installed) { + return; + } + UIkit.icon.add(Icons); + } + if (typeof window !== "undefined" && window.UIkit) { + window.UIkit.use(plugin); + } + return plugin; +}); + +(function() { + "use strict"; + var _$JSONLoader_2 = { + load: load + }; + function load(location, callback) { + var xhr = getXHR(); + xhr.open("GET", location, true); + xhr.onreadystatechange = createStateChangeListener(xhr, callback); + xhr.send(); + } + function createStateChangeListener(xhr, callback) { + return function() { + if (xhr.readyState === 4 && xhr.status === 200) { + try { + callback(null, JSON.parse(xhr.responseText)); + } catch (err) { + callback(err, null); + } + } + }; + } + function getXHR() { + return window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); + } + "use strict"; + var _$OptionsValidator_3 = function OptionsValidator(params) { + if (!validateParams(params)) { + throw new Error("-- OptionsValidator: required options missing"); + } + if (!(this instanceof OptionsValidator)) { + return new OptionsValidator(params); + } + var requiredOptions = params.required; + this.getRequiredOptions = function() { + return requiredOptions; + }; + this.validate = function(parameters) { + var errors = []; + requiredOptions.forEach(function(requiredOptionName) { + if (typeof parameters[requiredOptionName] === "undefined") { + errors.push(requiredOptionName); + } + }); + return errors; + }; + function validateParams(params) { + if (!params) { + return false; + } + return typeof params.required !== "undefined" && params.required instanceof Array; + } + }; + "use strict"; + function fuzzysearch(needle, haystack) { + var tlen = haystack.length; + var qlen = needle.length; + if (qlen > tlen) { + return false; + } + if (qlen === tlen) { + return needle === haystack; + } + outer: for (var i = 0, j = 0; i < qlen; i++) { + var nch = needle.charCodeAt(i); + while (j < tlen) { + if (haystack.charCodeAt(j++) === nch) { + continue outer; + } + } + return false; + } + return true; + } + var _$fuzzysearch_1 = fuzzysearch; + "use strict"; + var _$FuzzySearchStrategy_5 = new FuzzySearchStrategy(); + function FuzzySearchStrategy() { + this.matches = function(string, crit) { + return _$fuzzysearch_1(crit.toLowerCase(), string.toLowerCase()); + }; + } + "use strict"; + var _$LiteralSearchStrategy_6 = new LiteralSearchStrategy(); + function LiteralSearchStrategy() { + this.matches = function(str, crit) { + if (typeof str !== "string") { + return false; + } + str = str.trim(); + return str.toLowerCase().indexOf(crit.toLowerCase()) >= 0; + }; + } + "use strict"; + var _$Repository_4 = { + put: put, + clear: clear, + search: search, + setOptions: setOptions + }; + function NoSort() { + return 0; + } + var data = []; + var opt = {}; + opt.fuzzy = false; + opt.limit = 10; + opt.searchStrategy = opt.fuzzy ? _$FuzzySearchStrategy_5 : _$LiteralSearchStrategy_6; + opt.sort = NoSort; + function put(data) { + if (isObject(data)) { + return addObject(data); + } + if (isArray(data)) { + return addArray(data); + } + return undefined; + } + function clear() { + data.length = 0; + return data; + } + function isObject(obj) { + return Boolean(obj) && Object.prototype.toString.call(obj) === "[object Object]"; + } + function isArray(obj) { + return Boolean(obj) && Object.prototype.toString.call(obj) === "[object Array]"; + } + function addObject(_data) { + data.push(_data); + return data; + } + function addArray(_data) { + var added = []; + clear(); + for (var i = 0, len = _data.length; i < len; i++) { + if (isObject(_data[i])) { + added.push(addObject(_data[i])); + } + } + return added; + } + function search(crit) { + if (!crit) { + return []; + } + return findMatches(data, crit, opt.searchStrategy, opt).sort(opt.sort); + } + function setOptions(_opt) { + opt = _opt || {}; + opt.fuzzy = _opt.fuzzy || false; + opt.limit = _opt.limit || 10; + opt.searchStrategy = _opt.fuzzy ? _$FuzzySearchStrategy_5 : _$LiteralSearchStrategy_6; + opt.sort = _opt.sort || NoSort; + } + function findMatches(data, crit, strategy, opt) { + var matches = []; + for (var i = 0; i < data.length && matches.length < opt.limit; i++) { + var match = findMatchesInObject(data[i], crit, strategy, opt); + if (match) { + matches.push(match); + } + } + return matches; + } + function findMatchesInObject(obj, crit, strategy, opt) { + for (var key in obj) { + if (!isExcluded(obj[key], opt.exclude) && strategy.matches(obj[key], crit)) { + return obj; + } + } + } + function isExcluded(term, excludedTerms) { + var excluded = false; + excludedTerms = excludedTerms || []; + for (var i = 0, len = excludedTerms.length; i < len; i++) { + var excludedTerm = excludedTerms[i]; + if (!excluded && new RegExp(term).test(excludedTerm)) { + excluded = true; + } + } + return excluded; + } + "use strict"; + var _$Templater_7 = { + compile: compile, + setOptions: __setOptions_7 + }; + var options = {}; + options.pattern = /\{(.*?)\}/g; + options.template = ""; + options.middleware = function() {}; + function __setOptions_7(_options) { + options.pattern = _options.pattern || options.pattern; + options.template = _options.template || options.template; + if (typeof _options.middleware === "function") { + options.middleware = _options.middleware; + } + } + function compile(data) { + return options.template.replace(options.pattern, function(match, prop) { + var value = options.middleware(prop, data[prop], options.template); + if (typeof value !== "undefined") { + return value; + } + return data[prop] || match; + }); + } + "use strict"; + var _$utils_9 = { + merge: merge, + isJSON: isJSON + }; + function merge(defaultParams, mergeParams) { + var mergedOptions = {}; + for (var option in defaultParams) { + if (Object.prototype.hasOwnProperty.call(defaultParams, option)) { + mergedOptions[option] = defaultParams[option]; + if (typeof mergeParams[option] !== "undefined") { + mergedOptions[option] = mergeParams[option]; + } + } + } + return mergedOptions; + } + function isJSON(json) { + try { + if (json instanceof Object && JSON.parse(JSON.stringify(json))) { + return true; + } + return false; + } catch (err) { + return false; + } + } + var _$src_8 = {}; + (function(window) { + "use strict"; + var options = { + searchInput: null, + resultsContainer: null, + json: [], + searchResultTemplate: '
    • {title}
    • ', + templateMiddleware: function() {}, + sortMiddleware: function() { + return 0; + }, + noResultsText: "No results found", + limit: 10, + fuzzy: false, + exclude: [] + }; + var requiredOptions = [ "searchInput", "resultsContainer", "json" ]; + var optionsValidator = _$OptionsValidator_3({ + required: requiredOptions + }); + window.SimpleJekyllSearch = function(_options) { + var errors = optionsValidator.validate(_options); + if (errors.length > 0) { + throwError("You must specify the following required options: " + requiredOptions); + } + options = _$utils_9.merge(options, _options); + _$Templater_7.setOptions({ + template: options.searchResultTemplate, + middleware: options.templateMiddleware + }); + _$Repository_4.setOptions({ + fuzzy: options.fuzzy, + limit: options.limit, + sort: options.sortMiddleware + }); + if (_$utils_9.isJSON(options.json)) { + initWithJSON(options.json); + } else { + initWithURL(options.json); + } + return { + search: search + }; + }; + window.SimpleJekyllSearch.init = window.SimpleJekyllSearch; + if (typeof window.SimpleJekyllSearchInit === "function") { + window.SimpleJekyllSearchInit.call(this, window.SimpleJekyllSearch); + } + function initWithJSON(json) { + _$Repository_4.put(json); + registerInput(); + } + function initWithURL(url) { + _$JSONLoader_2.load(url, function(err, json) { + if (err) { + throwError("failed to get JSON (" + url + ")"); + } + initWithJSON(json); + }); + } + function emptyResultsContainer() { + options.resultsContainer.innerHTML = ""; + } + function appendToResultsContainer(text) { + options.resultsContainer.innerHTML += text; + } + function registerInput() { + options.searchInput.addEventListener("keyup", function(e) { + if (isWhitelistedKey(e.which)) { + emptyResultsContainer(); + search(e.target.value); + } + }); + } + function search(query) { + if (isValidQuery(query)) { + emptyResultsContainer(); + render(_$Repository_4.search(query)); + } + } + function render(results) { + var len = results.length; + if (len === 0) { + return appendToResultsContainer(options.noResultsText); + } + for (var i = 0; i < len; i++) { + appendToResultsContainer(_$Templater_7.compile(results[i])); + } + } + function isValidQuery(query) { + return query && query.length > 0; + } + function isWhitelistedKey(key) { + return [ 13, 16, 20, 37, 38, 39, 40, 91 ].indexOf(key) === -1; + } + function throwError(message) { + throw new Error("SimpleJekyllSearch --- " + message); + } + })(window); +})(); \ No newline at end of file diff --git a/assets/posts/7C04AAA0EE9E3886.png b/assets/posts/7C04AAA0EE9E3886.png new file mode 100644 index 0000000000000000000000000000000000000000..8af764e0b534018eb5105b2e2fb2b72fd552f3ab GIT binary patch literal 9671 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 literal 0 HcmV?d00001 diff --git a/assets/posts/SVG/logo.svg b/assets/posts/SVG/logo.svg new file mode 100644 index 00000000..886b00f8 --- /dev/null +++ b/assets/posts/SVG/logo.svg @@ -0,0 +1 @@ +logo \ No newline at end of file diff --git a/assets/posts/books.svg b/assets/posts/books.svg new file mode 100644 index 00000000..6e5638ac --- /dev/null +++ b/assets/posts/books.svg @@ -0,0 +1,51 @@ + + + + Books + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/posts/box.svg b/assets/posts/box.svg new file mode 100644 index 00000000..625e607a --- /dev/null +++ b/assets/posts/box.svg @@ -0,0 +1,100 @@ + + + + Box + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/posts/city.svg b/assets/posts/city.svg new file mode 100644 index 00000000..337229f8 --- /dev/null +++ b/assets/posts/city.svg @@ -0,0 +1,188 @@ + + + + Style 9 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/posts/imac.svg b/assets/posts/imac.svg new file mode 100644 index 00000000..88139857 --- /dev/null +++ b/assets/posts/imac.svg @@ -0,0 +1,47 @@ + + + + iMac + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/posts/image1.png b/assets/posts/image1.png new file mode 100644 index 0000000000000000000000000000000000000000..a7125c314069016aab0de6736e5e1cddfad6dbe2 GIT binary patch literal 53716 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

      Bv` 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 DES#I! literal 0 HcmV?d00001 diff --git a/assets/posts/logo.png b/assets/posts/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4b1793c8b5a88650dd4df4548c768458339b5c5d GIT binary patch literal 1006 zcmV zE>?*_H!f_&g{2_bxhP$fK%-qqaigGA5kW*zM8wkis1cN`OwFkHK$;5HS1jl11Y&*WC{<49Af!B7s{i!I5DFEUCC;)`tVtsA^{{Xmn zp5M@FwLgqTqqVTG@RwxZ*|F2zYLKB+&Z1^v&CY0qf{zSJm89oif=ZX z?Nx}N9_jV^k5;R-nSqCghhH=_G)#sXda2Xi-rh78x1OFJ<2^x1Tvu0DJ_FnB_GkA9 z#>&dd69yJVF*%T7SXdZ%o=0qKY`_WQd(-DHICy_4Q$TdK!z1 zi>R-!M?^$~k6m?jHM>7EGee<6N=ix~wn73&`MXOyZE0yiK|z6M5zWob$j{IBvP(@( zMO#}NIPRh?6c-nxwY3#7F)?yrP6GRF4#~;M&}cMXW6{ykP^na2W4XDxY*AO0kdT0+ zq$D|Tc))H%J0KUIo}PNfR##WCxw+|O=W@9yK|R;U$H!P&TEgz`uI${bj#Vm^--aC- z8Hu8zB4lT0BQGxxJ3Bj=n3%xiEWEbW>S z#qD-uYio;r`%_|KBFp;y{e9+vATs+rB(96x>~uPVnPG2lk9}^c+dOgZR1XFY>S|J1 zSs5xTE3vV$f$r{ZpR6WP9+*rfRz`z^gP59{LZCxN(BvvFFGpu*C&Di)Z*6T227`fp zOQP%_9UVnxW+odsJ3B*rdpr9d{q`esKvz?i*4EZ~prnk93|2Zv c@t_9qA6tEA5CyAw+W-In07*qoM6N<$g6K}l-v9sr literal 0 HcmV?d00001 diff --git a/assets/posts/logo.svg b/assets/posts/logo.svg new file mode 100644 index 00000000..4cf1acad --- /dev/null +++ b/assets/posts/logo.svg @@ -0,0 +1,8 @@ + + + +logo + + + diff --git a/assets/posts/old.logo.svg b/assets/posts/old.logo.svg new file mode 100755 index 00000000..c12f8625 --- /dev/null +++ b/assets/posts/old.logo.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/assets/posts/safe.svg b/assets/posts/safe.svg new file mode 100644 index 00000000..4ece3600 --- /dev/null +++ b/assets/posts/safe.svg @@ -0,0 +1,41 @@ + + + + Safe + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/posts/sky.svg b/assets/posts/sky.svg new file mode 100644 index 00000000..3913866c --- /dev/null +++ b/assets/posts/sky.svg @@ -0,0 +1,113 @@ + + + + Style 1 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/posts/slideshow-1/image1.png b/assets/posts/slideshow-1/image1.png new file mode 100644 index 0000000000000000000000000000000000000000..a7125c314069016aab0de6736e5e1cddfad6dbe2 GIT binary patch literal 53716 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

      Bv` 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 DES#I! literal 0 HcmV?d00001 diff --git a/assets/posts/teacup.svg b/assets/posts/teacup.svg new file mode 100644 index 00000000..729cf60e --- /dev/null +++ b/assets/posts/teacup.svg @@ -0,0 +1,26 @@ + + + + Teacup + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/posts/touch-icon.png b/assets/posts/touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..243615bb9ffcd1530a72d24c69a65a2bfd22a23b GIT binary patch literal 9274 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 literal 0 HcmV?d00001 diff --git a/assets/posts/touch-icon.svg b/assets/posts/touch-icon.svg new file mode 100644 index 00000000..cc1205e3 --- /dev/null +++ b/assets/posts/touch-icon.svg @@ -0,0 +1 @@ +Asset 1 \ No newline at end of file diff --git a/changelog.md b/changelog.md new file mode 100644 index 00000000..8bac0500 --- /dev/null +++ b/changelog.md @@ -0,0 +1,7 @@ +--- +layout: changelog +title: Changelog +permalink: /changelog/ +--- + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. diff --git a/contact.md b/contact.md new file mode 100644 index 00000000..00c0d0f9 --- /dev/null +++ b/contact.md @@ -0,0 +1,14 @@ +--- +layout: contact +title: Got Any Questions +permalink: /contact/ +formspree: + email: my_name@gmail.com + redirect: /thanks/ +--- + +##### Morbi varius in accumsan blandit, elit ligula velit, luctus mattis ante nulla nulla. + +Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. + +{% include map.html latitude="40.6700" longitude="-73.9400" zoom="16" %} diff --git a/images/blockstack-bar.png b/images/blockstack-bar.png new file mode 100644 index 0000000000000000000000000000000000000000..1d95fee194fefa7ddb11d2f38de6df3bb643dc16 GIT binary patch literal 12072 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
      &xd*a_~WXKY?lbg)VZ> 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 KMNUMnLSTXn*d?j} literal 0 HcmV?d00001 diff --git a/images/browser-uninstall.png b/images/browser-uninstall.png new file mode 100644 index 0000000000000000000000000000000000000000..4b3d4a5f80b5cfc8560993fe16428a511343bfb4 GIT binary patch literal 38259 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

      Ok49*iyg6iIm(%7x;W#J!zfxs%T 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 z%0D-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

      hWdV5#b8L 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 %Q6+z3;|3&n#hJFSu>6EqE$ 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 literal 0 HcmV?d00001 diff --git a/images/create-id-1.png b/images/create-id-1.png new file mode 100644 index 0000000000000000000000000000000000000000..bf6c096af261dede356dd4b40c7d1e5c11b6bbfa GIT binary patch literal 42054 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 literal 0 HcmV?d00001 diff --git a/images/create-id-3.png b/images/create-id-3.png new file mode 100644 index 0000000000000000000000000000000000000000..26d8867265e8b4e5a51663538cdf259f6dc22fb1 GIT binary patch literal 64761 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

      c{ivj6aSsmF8cBD224KnK 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�e-K_e0 z!97Fheg=NnKw)TdIJrKxieMSl3!+kgV*&`wAEl|HVa@;U9b?sO;?LuFqk}yV|4;`J zWf9I*PD9D0lP1xY?()qe6Tl{q;pzT2RLDKK; znu|t`$jBWwg#CqFkFR&nEBIU!x3;@jW$jp}6rJ`FPds+;2Ipb> zEx*nzDwM-j3g(p&Hsfh_IzFm-vF5lYjO4P0;DdwT6A--{tZrZV6d(qcgIK308VLOx z9wvih`=S^9YEpIZ^b(D=gDQ(!eyx%H_6*SFGpPRJeox(=ch;9!vARjqOuEDXArfeT9U{Z}UabG$yP?dwyM^IS8W%~!Q`6y@Aq8{2e zBiwhUkc2+Z^r0v$5|50UKcP>7OFH7Mhuk9euH0S!eLXP>%^yB_57|&7T&$bVs{UpH zuZ5QvOV!0d`~LFJdhB0t#CQAte1$Byt6l%Y+v+35H5bZ-M4p51EpkmknJ*4)W6tz% zP6|I9+u((ux*C&l3ehB6=4)H>u~6({obVfMx-eyf2Azs>FCwxC8&*`j3;zhMGgXgT zz&dk)-`17AhjKX-^rxofg(~MqNUR&JfS7w#wVPdK}Jxb2!~Bulk7ar|G^ zI7haEqbf-ytCTcy*|^WvP?VByXz`ZOZcL-Uhr?;Sa<;Bfd^lKdfJ7tIUh6yKXz#UD z()@|>h8<#8thzaDSTd;Nb7|R$T8U5q85L@Yq48+Mh6i6MN=}#_7CD4#*$jBfp=`ka&7V0!T&2ZP%Qn$NJoy0$_HUm zSeoL%r~pfz@=AIbQ2w8tczv>4>yRAT;Ad$&ebfAf(EqLdV_h})Ne zZr%?S6zPlT`&Y(c-_|5i@V{aRb>j-iFONEtjZmV`!O{`5h+Xk&jl5-}>ptg?Lc2Ii z8Ak(kKmm}Dc}pb}-BpjF!F8{zzDy&%P%UB~b>os=-4yV*`(LIr$_S7pSGgr66L(Et~N|zQJ6gy)@WU zjsdU-t!D?o-78s(;LH76;adJj?8Kms!x%77p3M}`2jW@9;f>iifPG| z9x&$olmf3klvna`=!FUuMy<8~r=C%lWZ!|HtpqwbewOe7RPE9I`RODVZJ-FH)OkM4 z!W3oy_NpnWTXfetP*wxF)(*|;e`G}v4UUG&?*i$2pHVMMQW4A%bSmMJwL+4WR1`W? zI^LX>?th0UOq_HwJO|Fd6>(-2WA`@?uD1yFXv5ae0!tZoOq=`vBE>mANQgu#(`Dma zK5PKT&!q->{IUeUXzqWJ`X97TpgB1*Gd2_ap8>xVFuIW_pc)--o6(K`?`^!~vq`2> zLHJ$&)$jkuTS#R==c%^Ij$kdsZT~kg(oh40xKyK4+1zcoKmYGs3!MA}To`bcN~$}? z?TdjinT@n|ff3@rG8X(|;E+y;mKI0Aoi#T%hh6wz6JZC-V1e%o?hB_AD$fbkwAJZ% z{jpnZGFO2vb#MLu^pykyqI94Dm2P*`(!Z!8I8{$jR$ZsEI2lD0H=XBwHpyqdgvFXX zXecu0$HouB3SeU3%$&JwHtBM$?r2|!>roaSyM=rf=}*vq;U%93XZKaU{ncS4D_yl* zA^R|i!o?(oPy`nbZ)eQt-2M6HAcxR$I>)-~d;SI6={~&vKkNSve+&RZi&r9GaEe{I; zNHTC5__9IwFhrEoEZ!0A8jk;mLo2kEOo{?;WI-G9uh~N15>#RO8YtpgG{Hk|SPAxZ N$Ve!P*NGa1{6FtQ2-5%n literal 0 HcmV?d00001 diff --git a/images/display-complete.png b/images/display-complete.png new file mode 100644 index 0000000000000000000000000000000000000000..097ae3b0f631f18087d11ff9e42d0a979ebc0c7f GIT binary patch literal 45162 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 literal 0 HcmV?d00001 diff --git a/images/dmg-notice.png b/images/dmg-notice.png new file mode 100644 index 0000000000000000000000000000000000000000..f0eb285ca5d762e64da83f4db537105f864a9262 GIT binary patch literal 47406 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