[
  {
    "path": ".babelrc",
    "content": "{\n  \"presets\": [\"es2015\"],\n  \"plugins\": [\n    \"babel-plugin-add-module-exports\", [\"transform-es2015-classes\", {\n      \"loose\": true\n    }]\n  ]\n}\n"
  },
  {
    "path": ".editorconfig",
    "content": "# EditorConfig helps developers define and maintain consistent\n# coding styles between different editors and IDEs\n# editorconfig.org\n\nroot = true\n\n\n[*]\n\n# Change these settings to your own preference\nindent_style = space\nindent_size = 2\n\n# We recommend you to keep these unchanged\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline = true\ncurly_bracket_next_line = false\nspaces_around_operators = false\nspaces_around_brackets = both\n\n[*.md]\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": ".eslintrc",
    "content": "{\n  \"parser\": \"babel-eslint\",\n  \"env\": {\n    \"browser\": true,\n    \"es6\": true,\n    \"node\": true,\n    \"jquery\": true\n  },\n  \"ecmaFeatures\": {\n    \"classes\": true,\n    \"globalReturn\": true,\n    \"modules\": true\n  },\n  \"rules\": {\n    \"no-debugger\": 1,\n    \"eqeqeq\": 1,\n    \"key-spacing\": 0,\n    \"new-cap\": 0,\n    \"strict\": [2, \"global\"],\n    \"no-underscore-dangle\": 0,\n    \"no-use-before-define\": 0,\n    \"eol-last\": 0,\n    \"quotes\": 0,\n    \"semi\": 0,\n    \"space-infix-ops\": 0,\n    \"no-trailing-spaces\": 0,\n    \"no-multi-spaces\": 0,\n    \"no-alert\": 0,\n    \"no-undef\": 2,\n    \"no-unused-vars\": [1, {\n      \"vars\": \"local\",\n      \"args\": \"none\"\n    }],\n    \"valid-jsdoc\": [1, {\n      \"prefer\": {\n        \"arg\": \"param\",\n        \"argument\": \"param\",\n        \"class\": \"constructor\",\n        \"return\": \"returns\",\n        \"virtual\": \"abstract\"\n      },\n      # \"preferType\": {\n      #   \"Boolean\": \"boolean\",\n      #   \"Number\": \"number\",\n      #   \"object\": \"Object\",\n      #   \"array\": \"Array\",\n      #   \"String\": \"string\"\n      # },\n      \"requireReturn\": false\n    }]\n  },\n  \"globals\": {\n    \"document\": false,\n    \"escape\": false,\n    \"navigator\": false,\n    \"unescape\": false,\n    \"window\": true,\n    \"describe\": true,\n    \"before\": true,\n    \"it\": true,\n    \"expect\": true,\n    \"sinon\": true\n  }\n}\n"
  },
  {
    "path": ".gitignore",
    "content": "# Project specific\n.temp\n\n# Logs\nlogs\n*.log\n\n# Runtime data\npids\n*.pid\n*.seed\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n\n# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (http://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directory\n# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git\nnode_modules\n.DS_Store\n"
  },
  {
    "path": "README.md",
    "content": "# Audi UI\n\n> An implementation of Audi UI components in CSS, Vanilla JavaScript, and HTML.\n> Complementary [typefaces](https://github.com/audi/audi-type) and [icons](http://github.com/audi/audi-icon) can be found in the corresponding repositories on the same organization account.\n\n> Project status: **alpha**\n\n## Want to contribute?\n\nIf you found a bug, have any questions or want to contribute feel free to file an issue on GitHub. For general information on the audi corporate design please follow the [official guidelines](https://www.audi.com/ci).\n\n## Getting Started\n\n### Build workflow\n\nOur current build workflow requires [Gulp](http://gulpjs.com/) v4. Make sure you have the latest version installed.\n\nYou will need to remove your current gulp global package before installing v4 in order to do an upgrade.\n\n```\nnpm rm -g gulp\nnpm install -g gulp-cli\n```\n\nThis command removes your current global package and installs v4 from the gulp-cli 4.0 branch.\n\nMake sure you don't get any errors from the first command before you type the second. Depending on your set-up, you may need to run them with `sudo`.\n\nTo verify what version you have installed globally, you can run the below command (and should see a similar output).\n\n```\ngulp -v\nCLI version 1.2.2\n```\n\n### Setup the repo:\n\n```\ngit clone https://github.com/audi/audi-ui.git && cd audi-ui\nnpm i\n```\n\n### Build library files:\n```\ngulp\n```\n\n### Build library and run the development server:\n```\ncd /path/to/audi-ui\ngulp test:visual\n```\n\n## Use Audi UI for your project\n\n#### 1. Install Audi UI via NPM\n```\nnpm install @audi/audi-ui\n```\n\n#### 2. Link CSS directly OR import library SCSS in your styles\n``` html\n<link rel=\"stylesheet\" href=\"/node_modules/@audi/audi-ui/lib/audiui.min.css\">\n```\n\n``` CSS\n@import \"/node_modules/@audi/audi-ui/src/index\";\n```\n\n#### 3. Initialize JS\n``` JavaScript\n// Add DOM4 support, https://github.com/WebReflection/dom4\nimport 'dom4';\n\n// Add Babel polyfill for ES2015, https://babeljs.io/docs/usage/polyfill/\nimport 'babel-polyfill';\n\n// Import all components from Audi UI library\nimport aui from 'audi-ui';\n\n// Or only some\nimport {Modal, Nav, Spinner} from 'audi-ui';\n\n// Initialize all Audi UI components\naui.upgradeAllElements();\n\n// Or only some\nModal.upgradeElements();\nNav.upgradeElements();\nSpinner.upgradeElements();\n```\n\n#### 4. Check if JavaScript is enabled\n\nWe use an approach like [Modernizr](https://modernizr.com/docs#no-js) to detect JS support, and change the styling accordingly.\nAdd the class `aui-no-js` to the `html` element.\n``` html\n<html class=\"aui-no-js\">\n```\nReplace the name with `aui-js` if JS is supported.\n``` html\n<head>\n  <script type=\"text/javascript\">\n    document.documentElement.className = document.documentElement.className.replace(new RegExp(\"(^|\\\\s)aui-no-js(\\\\s|$)\"), \"$1aui-js$2\");\n  </script>\n</head>\n```\n\n## Browser Support\n\nSupported evergreen browsers:\n\n- Chrome\n- Edge\n- Firefox\n- Opera\n\nSupported versioned browsers:\n\n- Internet Explorer 10\n- Safari 8\n- Mobile Safari 8\n"
  },
  {
    "path": "dist/audi-ui.css",
    "content": "/**\n * @audi/audi-ui - Audi UI components in HTML, CSS and JS.\n * @version v1.0.0-alpha.1\n * @license Apache-2.0\n * @copyright 2023 Audi\n * @link https://github.com/audi/audi-ui\n */\n@charset \"UTF-8\";\n/**\n * Returns multiple unit\n * @param {number (unitless)} $multiple\n * @return {number (rem)}\n */\n/**\n * Convert pixels to ems\n * eg. for a relational value of 12px write em(12) when the parent is equal\n * the em-base (defined in $audui-config).\n * If the parent is another value say 24px write em(12, 24)\n * @param {number (px)} $val\n * @param {number} $base\n * @return {number (em)}\n */\n/**\n * Convert pixels to rems\n * Assumes that the defined em-base is the font-size of <html>\n * @param {number (px)} $val\n * @param {number} $base\n * @return {number (rem)}\n */\n/**\n * Strips the unit from a number.\n * @param {number (with unit)} $value\n * @return {number (unitless)}\n */\n/**\n * Modular Scale\n */\n/**\n * Animation & Transitions\n */\n/**\n * Colors\n */\n/**\n * Font\n */\n/**\n * Icons\n */\n/**\n * SVG\n */\n/**\n * Breakpoints\n */\n/**\n * Card Component\n */\n/**\n * Form Field Components, like Textfield\n */\n/**\n * Grid Component\n */\n/**\n * Visibility Component\n */\n/**\n * z-index\n */\n.aui-js .aui-checkbox__input, .aui-js .aui-radio__input, .aui-switch .aui-switch__input {\n  -webkit-appearance: none;\n     -moz-appearance: none;\n          appearance: none;\n  position: absolute;\n  width: 0;\n  height: 0;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  outline: 0;\n  opacity: 0;\n  z-index: -1; }\n\n.aui-alert {\n  position: relative;\n  transition: height 0.3s cubic-bezier(0.75, 0.02, 0.5, 1);\n  font-size: 14px;\n  line-height: 20px; }\n  @media (min-width: 375px) {\n    .aui-alert {\n      font-size: 14px;\n      line-height: 20px; } }\n  @media (min-width: 1024px) {\n    .aui-alert {\n      font-size: 15px;\n      line-height: 24px; } }\n  @media (min-width: 1920px) {\n    .aui-alert {\n      font-size: 16px;\n      line-height: 24px; } }\n  .aui-alert__content {\n    position: relative;\n    color: inherit;\n    background: inherit;\n    margin-right: 27px;\n    padding: 1.25rem 3.5rem 1.25rem 1.75rem;\n    transition: transform 0.3s cubic-bezier(0.75, 0.02, 0.5, 1), box-shadow 0.3s cubic-bezier(0.75, 0.02, 0.5, 1); }\n  .aui-alert__close {\n    position: absolute;\n    top: 1.25rem;\n    right: 1.75rem;\n    width: 17px;\n    height: 17px;\n    background: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 17 17' %3E%3Cpath fill='%23333333' d='M8.487,7.78l7.78,-7.777c0.235,0.236 0.471,0.472 0.707,0.707l-7.78,7.777l7.777,7.78l-0.708,0.707l-7.776,-7.78l-7.78,7.777l-0.707,-0.708l7.78,-7.776l-7.777,-7.78l0.707,-0.707l7.777,7.78Z' /%3E%3C/svg%3E\") center center no-repeat;\n    cursor: pointer;\n    vertical-align: middle;\n    outline: none;\n    box-sizing: border-box;\n    border: none;\n    -webkit-tap-highlight-color: transparent;\n    -webkit-tap-highlight-color: rgba(255, 255, 255, 0); }\n  .aui-alert.aui-color-text-light .aui-alert__close,\n  .aui-alert.aui-color-text-warning .aui-alert__close {\n    background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 17 17' %3E%3Cpath fill='%23f2f2f2' d='M8.487,7.78l7.78,-7.777c0.235,0.236 0.471,0.472 0.707,0.707l-7.78,7.777l7.777,7.78l-0.708,0.707l-7.776,-7.78l-7.78,7.777l-0.707,-0.708l7.78,-7.776l-7.777,-7.78l0.707,-0.707l7.777,7.78Z' /%3E%3C/svg%3E\"); }\n  .aui-alert--sticky .aui-alert__content {\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n    box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.1), 0 0 40px 0 rgba(0, 0, 0, 0.15);\n    z-index: 1700; }\n  .aui-alert.is-open .aui-alert__content {\n    transform: translateY(0); }\n  .aui-alert.is-closed {\n    overflow: hidden;\n    height: 0 !important; }\n  .aui-alert.is-closed .aui-alert__content {\n    box-shadow: none;\n    transform: translateY(-100%); }\n\n.aui-audioplayer {\n  padding: 1.25rem; }\n  .aui-audioplayer__controls {\n    line-height: 23px;\n    -ms-flex-order: 1;\n        order: 1;\n    margin-left: 1rem; }\n    .aui-audioplayer__controls .aui-button-group {\n      -ms-flex-flow: row nowrap;\n          flex-flow: row nowrap; }\n    .aui-audioplayer__controls--secondary {\n      margin-top: 1rem;\n      -ms-flex-order: 2;\n          order: 2; }\n  .aui-audioplayer__chrome {\n    -ms-flex-align: center;\n        align-items: center;\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-direction: column;\n        flex-direction: column;\n    height: 100%;\n    -ms-flex-pack: justify;\n        justify-content: space-between;\n    vertical-align: middle; }\n  .aui-audioplayer__cover {\n    background-color: #e5e5e5;\n    display: none;\n    min-height: 100px;\n    min-width: 100px;\n    max-height: 100px;\n    max-width: 100px; }\n  .aui-audioplayer--large-cover .aui-audioplayer__cover {\n    margin-bottom: 20px;\n    max-height: inherit;\n    max-width: inherit; }\n  .aui-audioplayer__cover-image {\n    width: 100%;\n    display: block; }\n  .aui-audioplayer__meta {\n    font-size: 0.875rem;\n    line-height: 1;\n    margin-bottom: 1rem;\n    -ms-flex-order: 0;\n        order: 0;\n    width: 100%; }\n  .aui-audioplayer__time {\n    font-size: 0.75rem;\n    margin-top: 0.25rem; }\n  .aui-audioplayer__title {\n    margin-bottom: 0.25rem; }\n  .aui-audioplayer__icon-previous .audiicon-small, .aui-audioplayer__icon-next .audiicon-small {\n    visibility: visible; }\n  .aui-audioplayer__icon-previous .audiicon-large, .aui-audioplayer__icon-next .audiicon-large {\n    visibility: hidden; }\n  .aui-audioplayer__icon-pause .audiicon-small, .aui-audioplayer__icon-play .audiicon-small {\n    visibility: hidden; }\n  .aui-audioplayer__icon-pause .audiicon-large, .aui-audioplayer__icon-play .audiicon-large {\n    visibility: visible; }\n  .aui-audioplayer__icon-exit-fullscreen, .aui-audioplayer__icon-pause, .aui-audioplayer__icon-replay, .aui-audioplayer__icon-unmute {\n    display: none; }\n  .aui-audioplayer.is-controlled .aui-audioplayer__chrome,\n  .aui-audioplayer:hover .aui-audioplayer__chrome {\n    transform: translateY(0); }\n  .aui-audioplayer.is-seeking .aui-audioplayer__seek-holder {\n    opacity: 1;\n    transition-delay: .1s; }\n  .aui-audioplayer.is-seeking .aui-audioplayer__preview {\n    opacity: 1;\n    transition-delay: .1s; }\n  .aui-audioplayer.is-seeking.aui-player--preview .aui-audioplayer__chrome::after {\n    transition-delay: 0s; }\n  .aui-audioplayer.is-mute .aui-audioplayer__icon-mute {\n    display: none; }\n  .aui-audioplayer.is-mute .aui-audioplayer__icon-unmute {\n    display: inline-block; }\n  .aui-audioplayer.is-playing .aui-audioplayer__icon-play {\n    display: none; }\n  .aui-audioplayer.is-playing .aui-audioplayer__icon-pause {\n    display: inline-block; }\n  .aui-audioplayer.is-complete .aui-audioplayer__icon-pause,\n  .aui-audioplayer.is-complete .aui-audioplayer__icon-play {\n    display: none; }\n  .aui-audioplayer.is-complete .aui-audioplayer__icon-replay {\n    display: inline-block; }\n  .aui-audioplayer .aui-slider {\n    min-height: 1.25rem; }\n  .aui-audioplayer .aui-slider__handle {\n    height: 1.25rem;\n    width: 1.25rem; }\n  .aui-audioplayer .aui-slider__target {\n    height: 1.25rem;\n    margin-left: 0.625rem;\n    margin-right: 0.625rem; }\n  @media (min-width: 1024px) {\n    .aui-audioplayer {\n      padding: 1.25rem 1rem 1.25rem 0px; }\n      .aui-audioplayer--frameless {\n        padding: 0px 1rem 0px 0px; }\n      .aui-audioplayer__controls--secondary {\n        margin-top: 0;\n        margin-left: 1rem; }\n      .aui-audioplayer__chrome {\n        -ms-flex-direction: row;\n            flex-direction: row; }\n      .aui-audioplayer__cover {\n        display: block;\n        margin-right: 1rem; }\n      .aui-audioplayer__cover-image {\n        max-width: 100px; }\n      .aui-audioplayer--large-cover .aui-audioplayer__cover {\n        margin-right: 0; }\n      .aui-audioplayer--large-cover .aui-audioplayer__cover-image {\n        max-width: none; }\n      .aui-audioplayer__meta {\n        margin-bottom: 0;\n        margin-left: 1rem;\n        margin-top: 0;\n        -ms-flex-order: 2;\n            order: 2; }\n      .aui-audioplayer__playhead {\n        width: 1.25rem;\n        height: 1.25rem; } }\n\n.aui-animation-morph-in, .aui-animation-morph-out {\n  transition-timing-function: cubic-bezier(0.75, 0.02, 0.5, 1);\n  transition-duration: .6s; }\n\n.aui-no-transition {\n  transition: none !important; }\n\nbody::before {\n  content: 'default';\n  display: none; }\n  @media (min-width: 0px) {\n    body::before {\n      content: \"xsmall\"; } }\n  @media (min-width: 375px) {\n    body::before {\n      content: \"small\"; } }\n  @media (min-width: 768px) {\n    body::before {\n      content: \"medium\"; } }\n  @media (min-width: 1024px) {\n    body::before {\n      content: \"large\"; } }\n  @media (min-width: 1440px) {\n    body::before {\n      content: \"xlarge\"; } }\n  @media (min-width: 1920px) {\n    body::before {\n      content: \"huge\"; } }\n\n@-moz-viewport {\n  width: device-width; }\n\n@-ms-viewport {\n  width: device-width; }\n\n@-webkit-viewport {\n  width: device-width; }\n\n@viewport {\n  width: device-width; }\n\n.aui-badge__dot {\n  display: inline-block;\n  font-family: 'AudiTypeWide', Verdana, Geneva, sans-serif;\n  font-weight: 400;\n  line-height: 24px;\n  border-radius: 50%;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  text-align: center;\n  transition: transform 0.25s cubic-bezier(0.75, 0.02, 0.5, 1), visibility 0.25s cubic-bezier(0.75, 0.02, 0.5, 1), color 0.25s cubic-bezier(0.75, 0.02, 0.5, 1) 0.1s;\n  vertical-align: middle; }\n  .aui-badge__dot--large {\n    width: 24px;\n    height: 24px;\n    font-size: 12px; }\n  .aui-badge__dot--small {\n    width: 8px;\n    height: 8px;\n    margin: 8px; }\n  .aui-badge__dot--signal-yellow {\n    border-radius: 0;\n    transform: rotate(45deg);\n    background-color: #ffaa00; }\n  .aui-badge__dot--signal-green {\n    background-color: #009900; }\n  .aui-badge__dot--signal-red {\n    margin: 8px 7px;\n    border-radius: 0;\n    width: 0;\n    height: 0;\n    border-style: solid;\n    border-width: 0 5px 8px 5px;\n    border-color: transparent transparent #eb0d3f transparent; }\n  .aui-badge__dot--charging-neon-green {\n    background-color: #15da15; }\n  .aui-badge__dot--charging-green {\n    background-color: #0da20d; }\n  .aui-badge__dot--charging-neon-blue {\n    background-color: #556EFE; }\n  .aui-badge__dot--charging-blue {\n    background-color: #2526fe; }\n\n.aui-badge.is-hidden {\n  transform: scale(0);\n  color: transparent !important;\n  transition-delay: 0s;\n  visibility: hidden; }\n\n.aui-badge--small-text {\n  font-size: 10px; }\n\n.aui-badge--label {\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  -ms-flex-align: center;\n      align-items: center; }\n\n.aui-badge--icon {\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  -ms-flex-align: center;\n      align-items: center; }\n  .aui-badge--icon .audiicon {\n    width: 24px;\n    height: 24px; }\n\n.aui-badge__label {\n  font-size: 1rem; }\n  .aui-badge__label--small {\n    font-size: 0.75rem; }\n\n.aui-badge.aui-color-text-light {\n  color: #ffffff;\n  stroke: #ffffff;\n  fill: #ffffff; }\n\n.aui-breadcrumb {\n  display: block;\n  overflow: hidden;\n  position: relative;\n  padding-top: 0.25rem;\n  color: #666666;\n  font-size: 0.6875rem;\n  line-height: 1rem;\n  font-weight: 400; }\n  .aui-breadcrumb__items {\n    display: block;\n    overflow: hidden;\n    white-space: nowrap;\n    list-style: none;\n    padding: 0; }\n  .aui-breadcrumb__item {\n    display: inline-block;\n    max-width: 10em;\n    overflow: hidden;\n    text-overflow: ellipsis; }\n    .aui-breadcrumb__item:last-child {\n      color: #000000;\n      max-width: 22em; }\n  .aui-breadcrumb__item + .aui-breadcrumb__item::before {\n    content: '';\n    display: inline-block;\n    margin-left: .5em;\n    margin-right: .7em;\n    width: 0.3125rem;\n    height: 0.5rem;\n    background: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='1px' fill='none' d='M0.5,0.5l3.24,3.252l-3.237,3.247' /%3E%3C/svg%3E\") center center no-repeat; }\n  .aui-breadcrumb__action {\n    transition: color .15s linear; }\n  .aui-breadcrumb__action:hover {\n    color: #000; }\n  .aui-breadcrumb.is-oversized::after {\n    content: '';\n    display: block;\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 40px;\n    height: 100%;\n    background: linear-gradient(to right, #ffffff 5%, rgba(255, 255, 255, 0) 100%); }\n\n.aui-button.is-active, .aui-button:active, .aui-button:hover, .aui-button:visited {\n  color: #4c4c4c;\n  stroke: #4c4c4c;\n  fill: #4c4c4c; }\n\n.aui-button {\n  border-radius: 0;\n  cursor: pointer;\n  display: inline-block;\n  position: relative;\n  padding: 1em 0 1em 0;\n  outline: 0;\n  font-family: inherit;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5rem;\n  text-align: center;\n  text-decoration: none;\n  white-space: normal;\n  vertical-align: middle;\n  transition: all 250ms cubic-bezier(0.75, 0.02, 0.5, 1);\n  -webkit-tap-highlight-color: transparent;\n  -webkit-tap-highlight-color: rgba(255, 255, 255, 0); }\n\n.aui-button, .aui-button.is-disabled, .aui-button:disabled {\n  color: #000000;\n  stroke: #000000;\n  fill: #000000;\n  border: 1px solid transparent;\n  background: transparent; }\n\n.aui-button.is-disabled, .aui-button:disabled {\n  cursor: not-allowed; }\n\n.aui-button--bold {\n  font-weight: 700; }\n\n.aui-button--padded, .aui-button--primary, .aui-button--secondary {\n  padding-left: 2rem;\n  padding-right: 2rem; }\n\n.aui-button--icon.is-disabled, .aui-button--icon:disabled, .aui-button--icon:hover, .aui-button--primary.is-disabled, .aui-button--primary:disabled, .aui-button--primary:hover, .aui-button--secondary.is-disabled, .aui-button--secondary:disabled, .aui-button--secondary:hover {\n  box-shadow: none; }\n\n.aui-button--round.is-disabled, .aui-button--round:disabled {\n  color: #b3b3b3;\n  stroke: #b3b3b3;\n  fill: #b3b3b3; }\n\n.aui-button--floating.is-active, .aui-button--floating:active, .aui-button--floating:hover, .aui-button--primary.is-active, .aui-button--primary:active, .aui-button--primary:hover {\n  border-color: #4c4c4c;\n  background-color: #4c4c4c; }\n\n.aui-button--floating, .aui-button--floating.is-active, .aui-button--floating:active, .aui-button--floating:hover, .aui-button--floating:visited, .aui-button--primary, .aui-button--primary.is-active, .aui-button--primary:active, .aui-button--primary:hover, .aui-button--primary:visited {\n  color: #ffffff;\n  stroke: #ffffff;\n  fill: #ffffff; }\n\n.aui-button--floating.is-disabled, .aui-button--floating:disabled, .aui-button--primary.is-disabled, .aui-button--primary:disabled {\n  color: #ffffff;\n  stroke: #ffffff;\n  fill: #ffffff;\n  border-color: #b3b3b3 !important;\n  background-color: #b3b3b3 !important; }\n\n.aui-button--floating, .aui-button--floating.is-disabled, .aui-button--floating:disabled, .aui-button--primary, .aui-button--primary.is-disabled, .aui-button--primary:disabled {\n  border-color: #000000;\n  background-color: #000000; }\n\n.aui-button--secondary.is-active, .aui-button--secondary:active, .aui-button--secondary:hover {\n  border-color: #808080; }\n\n.aui-button--secondary, .aui-button--secondary.is-disabled, .aui-button--secondary:disabled {\n  border-color: #000000; }\n\n.aui-button--secondary.is-disabled, .aui-button--secondary:disabled {\n  color: #b3b3b3 !important;\n  border-color: #b3b3b3 !important; }\n\n.aui-button--text .aui-button__text::after {\n  content: '';\n  display: inline-block;\n  position: relative;\n  top: 0.0625em;\n  margin-left: 0.25em;\n  width: 0.5em;\n  height: 0.8125em;\n  background: center no-repeat url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='13' viewBox='0 0 8 13'%3E%3Cpath stroke='%23000000' stroke-width='1px' fill='none' d='M1.5,1l5.485,5.504l-5.48,5.496' /%3E%3C/svg%3E\");\n  background-size: contain;\n  transition: transform 0.2s ease; }\n\n.aui-button--text:hover .aui-button__text::after {\n  background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='13' viewBox='0 0 8 13'%3E%3Cpath stroke='%234c4c4c' stroke-width='1px' fill='none' d='M1.5,1l5.485,5.504l-5.48,5.496' /%3E%3C/svg%3E\");\n  transform: translateX(5px); }\n\n.aui-button--text:disabled .aui-button__text {\n  color: #b3b3b3; }\n\n.aui-button--text.is-disabled .aui-button__text::after,\n.aui-button--text:disabled .aui-button__text::after {\n  transform: none;\n  background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='13' viewBox='0 0 8 13'%3E%3Cpath stroke='%23b3b3b3' stroke-width='1px' fill='none' d='M1.5,1l5.485,5.504l-5.48,5.496' /%3E%3C/svg%3E\"); }\n\n.aui-button--icon {\n  width: 23px;\n  height: 23px;\n  padding: 0;\n  border: none; }\n  .aui-button--icon .audiicon {\n    position: absolute;\n    top: 0;\n    left: 0;\n    margin: 0;\n    width: 24px;\n    height: 24px; }\n\n.aui-button--icon--large {\n  width: 45px;\n  height: 45px; }\n  .aui-button--icon--large .audiicon {\n    top: -1px;\n    left: -1px;\n    width: 48px;\n    height: 48px; }\n    .aui-button--icon--large .audiicon-container--small {\n      display: none; }\n    .aui-button--icon--large .audiicon-container--large {\n      display: inline; }\n\n.aui-button--round {\n  border-radius: 50%; }\n\n.aui-button--stretched {\n  width: 100%;\n  max-width: 767px; }\n\n.aui-button--sticky {\n  position: fixed;\n  left: 0;\n  bottom: 0;\n  box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.05), 0 0 50px 0 rgba(0, 0, 0, 0.07); }\n\n.aui-button--centered {\n  left: 50%;\n  transform: translateX(-50%); }\n\n.aui-button--floating {\n  position: fixed;\n  right: 1.5rem;\n  bottom: 1.5rem;\n  width: 45px;\n  height: 45px;\n  padding: 0;\n  z-index: 900;\n  box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.05), 0 0 50px 0 rgba(0, 0, 0, 0.07); }\n  .aui-button--floating .audiicon {\n    position: absolute;\n    left: -1px;\n    top: -1px;\n    width: 48px;\n    height: 48px; }\n    .aui-button--floating .audiicon-container--small {\n      display: none; }\n    .aui-button--floating .audiicon-container--large {\n      display: inline; }\n  .aui-button--floating, .aui-button--floating:focus, .aui-button--floating:hover {\n    box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.05), 0 0 50px 0 rgba(0, 0, 0, 0.07); }\n\n.aui-button__text {\n  display: inline-block;\n  position: relative;\n  text-align: left; }\n\n.aui-button__text-icon {\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  -ms-flex-align: center;\n      align-items: center;\n  position: relative;\n  text-align: left;\n  vertical-align: middle; }\n  .aui-button__text-icon .audiicon {\n    display: inline-block; }\n  .aui-button__text-icon .aui-button__text:first-child {\n    margin-right: 1em; }\n  .aui-button__text-icon .aui-button__text:not(:first-child) {\n    margin-left: 1em; }\n\n.aui-button::-moz-focus-inner {\n  border: 0;\n  padding: 0; }\n\n.aui-button-group {\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  -ms-flex-flow: row wrap;\n      flex-flow: row wrap;\n  -ms-flex-align: center;\n      align-items: center;\n  vertical-align: top;\n  margin-right: -0.2rem;\n  margin-bottom: -0.2rem; }\n  .aui-button-group .aui-button {\n    -ms-flex: 1 1 auto;\n        flex: 1 1 auto;\n    margin: 0 0.2rem 0.2rem 0; }\n    .aui-button-group .aui-button:hover, .aui-button-group .aui-button:focus, .aui-button-group .aui-button:active, .aui-button-group .aui-button.is-active {\n      z-index: 2; }\n  .aui-button-group .aui-button--icon {\n    -ms-flex: 0 0 auto;\n        flex: 0 0 auto; }\n  .aui-button-group--block {\n    display: -ms-flexbox;\n    display: flex; }\n  .aui-button-group--texts {\n    margin-right: -1.2rem;\n    margin-bottom: -1.2rem; }\n    .aui-button-group--texts .aui-button {\n      margin: 0 1.2rem 1.2rem 0; }\n  .aui-button-group--icons {\n    margin-right: -0.6rem;\n    margin-bottom: -0.6rem; }\n    .aui-button-group--icons .aui-button {\n      margin: 0 0.6rem 0.6rem 0; }\n\n.aui-card-grid {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-flow: row wrap;\n      flex-flow: row wrap;\n  margin: -0.125rem; }\n  .aui-card-grid .aui-card-grid {\n    margin: 0; }\n  .aui-card-grid__item {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-flow: row wrap;\n        flex-flow: row wrap;\n    -ms-flex-align: stretch;\n        align-items: stretch;\n    -ms-flex-pack: start;\n        justify-content: flex-start;\n    -ms-flex: 1 1 auto;\n        flex: 1 1 auto;\n    width: 288px; }\n  .aui-card-grid__item--column {\n    -ms-flex-direction: column;\n        flex-direction: column; }\n\n.aui-card {\n  -ms-flex: 1 1 auto;\n      flex: 1 1 auto;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n      flex-direction: column;\n  position: relative;\n  margin: 0.125rem;\n  width: calc(100% - 0.25rem);\n  background-repeat: no-repeat;\n  background-position: 50% 50%;\n  background-size: cover;\n  background-origin: padding-box;\n  background-attachment: scroll;\n  transition: transform 0.15s cubic-bezier(0.75, 0.02, 0.5, 1), box-shadow 0.15s cubic-bezier(0.75, 0.02, 0.5, 1);\n  /**\n   * Variant: Action\n   */\n  /**\n   * Variant: Cover\n   */ }\n  .aui-card__cover {\n    display: block; }\n    .aui-card__cover-image {\n      display: block;\n      width: 100%;\n      height: auto; }\n  .aui-card__body {\n    -ms-flex: 1 1 auto;\n        flex: 1 1 auto;\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-direction: column;\n        flex-direction: column; }\n  .aui-card__content {\n    padding: 1.25rem; }\n    .aui-card__content--bottom {\n      margin-top: auto; }\n  .aui-card__media {\n    text-align: center; }\n    .aui-card__media img {\n      display: block;\n      width: 100%;\n      height: auto; }\n  .aui-card--action:hover, .aui-card--action:focus {\n    z-index: 1;\n    outline: none;\n    box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.05), 0 0 50px 0 rgba(0, 0, 0, 0.07);\n    transform: translateY(-0.25rem); }\n  .aui-card--cover {\n    -ms-flex-direction: row;\n        flex-direction: row; }\n  .aui-card--cover .aui-card__cover {\n    -ms-flex: 1 1 auto;\n        flex: 1 1 auto; }\n  .aui-card--cover .aui-card__body {\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    overflow-x: hidden;\n    overflow-y: auto;\n    -webkit-overflow-scrolling: touch;\n    z-index: 1; }\n\n.aui-checkbox {\n  display: inline-block;\n  position: relative;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #333333;\n  cursor: pointer;\n  -webkit-tap-highlight-color: transparent;\n  -webkit-tap-highlight-color: rgba(255, 255, 255, 0);\n  /**\n   * Variant: stretch\n   */\n  /**\n   * Variant: box-right\n   */\n  /**\n   * Variant: dropdown-option\n   */\n  /**\n   * States\n   */ }\n  .aui-js .aui-checkbox {\n    padding-left: 2.5em; }\n  .aui-checkbox__label--optional {\n    color: #666666; }\n  .aui-checkbox__box {\n    display: none;\n    overflow: hidden;\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 1.5em;\n    height: 1.5em;\n    border: 1px solid #808080;\n    transition: box-shadow .15s linear, border .15s linear;\n    cursor: pointer;\n    pointer-events: none;\n    z-index: 1; }\n    .aui-js .aui-checkbox__box {\n      display: inline-block; }\n  .aui-checkbox__tick {\n    display: block;\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    width: 0.75em;\n    height: 0.75em;\n    transform: translate(-50%, -50%);\n    background: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpolygon fill='%23000000' points='4.945 12 0 7.699 0.667 6.92 4.708 10.435 11.132 0 12 0.543 4.945 12' /%3E%3C/svg%3E\") center center no-repeat;\n    opacity: 0;\n    transition: opacity 0.15s cubic-bezier(0.75, 0.02, 0.5, 1);\n    pointer-events: none; }\n  .aui-checkbox__error {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-align: center;\n        align-items: center;\n    line-height: 1.25rem;\n    margin-top: 0.875rem;\n    font-size: 0.8125rem;\n    color: #eb0d3f; }\n    .aui-checkbox__error::before {\n      content: '';\n      display: inline-block;\n      line-height: 1.25rem;\n      margin-right: 1rem;\n      width: 40px;\n      height: 24px;\n      background: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M21.5,20.5 L1.5,20.5 L11.5,2.5 L21.5,20.5 Z M11.5,16 L11.5,18 M11.5,8 L11.5,14' stroke='%23eb0d3f' stroke-width='1' fill-rule='evenodd'/%3E%3C/svg%3E\") center center no-repeat; }\n      @media (min-width: 1024px) {\n        .aui-checkbox__error::before {\n          margin-right: 0.625rem;\n          width: 36px;\n          height: 24px; } }\n  .aui-checkbox--stretch {\n    width: 100%; }\n  .aui-js .aui-checkbox--box-right {\n    padding-left: 0;\n    padding-right: 2.5em; }\n    .aui-js .aui-checkbox--box-right .aui-checkbox__box {\n      left: auto;\n      right: 0; }\n  .aui-js .aui-checkbox--dropdown-option {\n    width: 100%;\n    padding-left: 0;\n    padding-right: 2.5em; }\n    .aui-js .aui-checkbox--dropdown-option .aui-checkbox__box {\n      left: auto;\n      right: 0; }\n  .aui-checkbox:hover:not(.is-disabled) {\n    color: #000000; }\n    .aui-checkbox:hover:not(.is-disabled) .aui-checkbox__box {\n      border-color: #000000; }\n  .aui-checkbox.is-disabled {\n    color: #b3b3b3;\n    cursor: not-allowed; }\n  .aui-checkbox.is-checked .aui-checkbox__tick {\n    opacity: 1; }\n  .aui-checkbox.is-invalid,\n  .aui-checkbox.is-invalid .aui-checkbox__label {\n    color: #eb0d3f; }\n  .aui-checkbox.is-invalid .aui-checkbox__tick {\n    background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpolygon fill='%23eb0d3f' points='4.945 12 0 7.699 0.667 6.92 4.708 10.435 11.132 0 12 0.543 4.945 12' /%3E%3C/svg%3E\"); }\n  .aui-checkbox.is-invalid .aui-checkbox__box,\n  .aui-checkbox.is-invalid:hover .aui-checkbox__box {\n    border-color: #eb0d3f; }\n\n.aui-color-white {\n  background-color: #ffffff; }\n\n.aui-color-black {\n  background-color: #000000; }\n\n.aui-color-silver {\n  background-color: #b2b2b2; }\n\n.aui-color-warmsilver {\n  background-color: #b6b1a9; }\n\n.aui-color-green, .aui-color-success {\n  background-color: #009900; }\n\n.aui-color-warning, .aui-color-yellow {\n  background-color: #ffaa00; }\n\n.aui-color-danger, .aui-color-red {\n  background-color: #bb0a30; }\n\n.aui-color-danger, .aui-color-progressive-red {\n  background-color: #f50537; }\n\n.aui-color-signal-red {\n  background-color: #eb0d3f; }\n\n.aui-color-gray10 {\n  background-color: #1a1a1a; }\n\n.aui-color-gray20 {\n  background-color: #333333; }\n\n.aui-color-gray30 {\n  background-color: #4c4c4c; }\n\n.aui-color-gray40 {\n  background-color: #666666; }\n\n.aui-color-gray50 {\n  background-color: #808080; }\n\n.aui-color-gray60 {\n  background-color: #999999; }\n\n.aui-color-gray70 {\n  background-color: #b3b3b3; }\n\n.aui-color-gray80 {\n  background-color: #cccccc; }\n\n.aui-color-gray85 {\n  background-color: #d9d9d9; }\n\n.aui-color-gray90 {\n  background-color: #e5e5e5; }\n\n.aui-color-gray95 {\n  background-color: #f2f2f2; }\n\n.aui-color-text-light {\n  color: #f2f2f2; }\n\n.aui-color-text-dark {\n  color: #333333; }\n\n.aui-color-text-green, .aui-color-text-success {\n  color: #009900; }\n\n.aui-color-text-warning, .aui-color-text-yellow {\n  color: #ffaa00; }\n\n.aui-color-text-danger, .aui-color-text-red {\n  color: #bb0a30; }\n\n.aui-draggable-list {\n  padding-left: 0;\n  list-style: none;\n  font-weight: 400; }\n  .aui-draggable-list__item {\n    cursor: move;\n    position: relative;\n    padding: 1rem 3rem 1rem 1.5rem;\n    color: rgba(0, 0, 0, 0.8);\n    background: rgba(0, 0, 0, 0.1);\n    transition: background .15s linear, color .15s linear; }\n    .aui-draggable-list__item:hover {\n      color: #000000;\n      background: rgba(0, 0, 0, 0.15); }\n  .aui-draggable-list__item + .aui-draggable-list__item {\n    margin-top: 1px; }\n  .aui-draggable-list.is-dragging .aui-draggable-list__item,\n  .aui-draggable-list.is-dragging .aui-draggable-list__item:hover {\n    background: rgba(0, 0, 0, 0.05); }\n    .aui-draggable-list.is-dragging .aui-draggable-list__item.is-active,\n    .aui-draggable-list.is-dragging .aui-draggable-list__item:hover.is-active {\n      color: #000000;\n      background: #cccccc; }\n  .aui-draggable-list.is-dragging .is-placeholder,\n  .aui-draggable-list.is-dragging .is-placeholder:hover {\n    color: transparent;\n    background: none; }\n  .aui-draggable-list .is-placeholder::before {\n    content: '';\n    display: block;\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    border: 1px dotted rgba(0, 0, 0, 0.05); }\n  .aui-draggable-list__item:not(.is-placeholder)::after {\n    content: '';\n    opacity: 0;\n    display: block;\n    position: absolute;\n    top: 50%;\n    right: 1.5rem;\n    width: 16px;\n    height: 5px;\n    margin-top: -2.5px;\n    background: url(\"data:image/svg+xml;dataset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='5' viewBox='0 0 16 5'%3E%3Crect style='fill:%23000000' x='0' y='0' width='16' height='1' /%3E%3Crect style='fill:%23000000' x='0' y='4' width='16' height='1' /%3E%3C/svg%3E\") center center no-repeat;\n    transition: opacity .15s linear; }\n  .aui-draggable-list__item.is-active::after, .aui-draggable-list__item:hover::after {\n    opacity: 1; }\n\n/**\n * Add class `aui-dropzone-active` to body element, to prevent scrolling,\n * when strechted dropzone is active.\n */\n.aui-dropzone-active {\n  overflow: hidden; }\n\n.aui-dropzone {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-align: center;\n      align-items: center;\n  -ms-flex-pack: center;\n      justify-content: center;\n  min-height: 1rem;\n  color: #333333;\n  border: 1px dashed rgba(0, 0, 0, 0.2);\n  transition: border 0.15s linear; }\n  .aui-dropzone__message {\n    -ms-flex: none;\n        flex: none; }\n  .aui-dropzone:hover, .aui-dropzone.is-active {\n    border-color: rgba(0, 0, 0, 0.8); }\n  .aui-dropzone--fullpage {\n    visibility: hidden;\n    opacity: 0;\n    overflow: hidden;\n    position: fixed;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    width: 0;\n    height: 0;\n    background: rgba(255, 255, 255, 0.9);\n    border: none;\n    transition: border 0.15s linear, opacity 0.15s linear, visibility 0.15s linear; }\n    .aui-dropzone--fullpage::after {\n      content: '';\n      display: block;\n      position: absolute;\n      top: 0.5rem;\n      right: 0.5rem;\n      bottom: 0.5rem;\n      left: 0.5rem;\n      border: 1px dashed rgba(0, 0, 0, 0.8); }\n    .aui-dropzone--fullpage.is-active {\n      visibility: visible;\n      overflow: visible;\n      top: 0;\n      right: 0;\n      bottom: 0;\n      left: 0;\n      width: auto;\n      height: auto;\n      opacity: 1;\n      padding: 0.5rem; }\n\n.aui-figure {\n  display: block;\n  margin: 0; }\n  .aui-figure__image {\n    display: block;\n    max-width: 100%;\n    height: auto; }\n  .aui-figure__caption {\n    margin-top: 1rem; }\n\n.aui-fieldset {\n  margin: 0;\n  padding: 0;\n  border: none;\n  line-height: 1.5rem;\n  font-weight: 400;\n  color: #333333;\n  box-sizing: border-box; }\n  .aui-fieldset--selects .aui-fieldset__legend,\n  .aui-fieldset--textfields .aui-fieldset__legend {\n    font-weight: 700;\n    color: #333333; }\n  .aui-fieldset--radios .aui-fieldset__legend {\n    margin-bottom: 1rem; }\n  .aui-fieldset__fields {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-flow: row wrap;\n        flex-flow: row wrap;\n    margin-right: -1.5rem;\n    margin-bottom: -1.5rem; }\n  .aui-fieldset__field {\n    -ms-flex: 1 1 auto;\n        flex: 1 1 auto;\n    margin-right: 1.5rem;\n    margin-bottom: 1.5rem; }\n  .aui-fieldset--radios .aui-fieldset__field {\n    -ms-flex: 0 1 auto;\n        flex: 0 1 auto; }\n  .aui-fieldset--radios.is-invalid .aui-radio__label {\n    color: #eb0d3f; }\n  .aui-fieldset__error {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-align: center;\n        align-items: center;\n    line-height: 1.25rem;\n    margin-top: 0.875rem;\n    font-size: 0.8125rem;\n    color: #eb0d3f; }\n    .aui-fieldset__error::before {\n      content: '';\n      display: inline-block;\n      margin-right: 1rem;\n      width: 24px;\n      min-width: 24px;\n      height: 24px;\n      background: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M21.5,20.5 L1.5,20.5 L11.5,2.5 L21.5,20.5 Z M11.5,16 L11.5,18 M11.5,8 L11.5,14' stroke='%23eb0d3f' stroke-width='1' fill-rule='evenodd'/%3E%3C/svg%3E\") center center no-repeat; }\n      @media (min-width: 1024px) {\n        .aui-fieldset__error::before {\n          margin-right: 0.5rem; } }\n  .aui-fieldset.is-invalid .aui-fieldset__error,\n  .aui-fieldset.is-invalid .aui-fieldset__legend {\n    color: #eb0d3f; }\n\n/**\n * Prevent scrolling of body, when Flyout is open.\n * Added to body by JS.\n */\n@media (max-width: 399px) {\n  .aui-flyout-is-open {\n    overflow: hidden; } }\n\n.aui-flyout {\n  display: inline-block;\n  position: relative; }\n  .aui-flyout__toggle {\n    z-index: 1; }\n  .aui-flyout__panel {\n    display: block;\n    opacity: 0;\n    overflow: hidden;\n    position: fixed;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    max-height: 0;\n    color: #333333;\n    background: #e5e5e5;\n    font-size: .875rem;\n    font-weight: 400;\n    line-height: 1.25rem;\n    text-align: left;\n    transition: opacity 0.2s linear, transform 0.3s cubic-bezier(0.75, 0.02, 0.5, 1), max-height 0.1s linear 0.4s; }\n  .aui-flyout__panel-content {\n    position: absolute;\n    top: 68px;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    overflow: scroll;\n    -webkit-overflow-scrolling: touch;\n    opacity: 0;\n    padding: 0.5rem 1.75rem;\n    transition: opacity 0.4s cubic-bezier(0.75, 0.02, 0.5, 1);\n    z-index: 1;\n    background-color: inherit; }\n  .aui-flyout__triangle {\n    position: absolute;\n    top: 0;\n    margin-left: 1.5rem;\n    background: inherit;\n    opacity: 0;\n    transition: opacity 0.4s cubic-bezier(0.75, 0.02, 0.5, 1); }\n    .aui-flyout__triangle::after {\n      content: '';\n      display: block;\n      position: absolute;\n      left: -8px;\n      top: -8px;\n      width: 16px;\n      height: 16px;\n      transform: rotate(45deg);\n      transform-origin: center;\n      background: inherit;\n      box-shadow: -1px -1px 4px rgba(0, 0, 0, 0.05); }\n  .aui-flyout--center .aui-flyout__triangle {\n    left: 50%;\n    margin-left: 0; }\n  .aui-flyout--right .aui-flyout__triangle {\n    left: 100%;\n    margin-left: -1.5rem; }\n  .aui-flyout__header {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 3.5625rem; }\n  .aui-flyout__close {\n    position: absolute;\n    top: 1.25rem;\n    right: 1.25rem;\n    width: 1.0625rem;\n    height: 1.0625rem;\n    outline: 0;\n    border: 0;\n    background: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 17 17' %3E%3Cpath fill='%23333333' d='M8.487,7.78l7.78,-7.777c0.235,0.236 0.471,0.472 0.707,0.707l-7.78,7.777l7.777,7.78l-0.708,0.707l-7.776,-7.78l-7.78,7.777l-0.707,-0.708l7.78,-7.776l-7.777,-7.78l0.707,-0.707l7.777,7.78Z' /%3E%3C/svg%3E\") center center no-repeat;\n    z-index: 1;\n    cursor: pointer;\n    -webkit-tap-highlight-color: transparent;\n    -webkit-tap-highlight-color: rgba(255, 255, 255, 0); }\n  .aui-flyout::after {\n    content: '';\n    display: block;\n    position: absolute;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    z-index: 0; }\n  .aui-flyout.is-active::after {\n    bottom: -1.25rem; }\n  .aui-flyout.is-active .aui-flyout__panel {\n    opacity: 1;\n    max-height: 9999px;\n    transition-delay: 0s;\n    z-index: 9999;\n    overflow: visible; }\n  .aui-flyout.is-active .aui-flyout__panel-content {\n    opacity: 1;\n    transition-delay: .2s; }\n  .aui-flyout.is-active .aui-flyout__triangle {\n    opacity: 1;\n    transition-delay: .2s; }\n  @media (min-width: 400px) {\n    .aui-flyout__panel {\n      position: absolute;\n      top: 100%;\n      left: 0;\n      right: auto;\n      bottom: auto;\n      margin-top: 1.25rem;\n      max-width: 288px;\n      color: #333333;\n      background: #ffffff;\n      box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.05), 0 0 50px 0 rgba(0, 0, 0, 0.07);\n      transform: translateY(-10px); }\n    .aui-flyout__panel-content {\n      position: relative;\n      top: auto;\n      left: auto;\n      right: auto;\n      bottom: auto;\n      overflow: auto; }\n    .aui-flyout__header {\n      display: none; }\n    .aui-flyout--right .aui-flyout__panel {\n      left: auto;\n      right: 0; }\n    .aui-flyout--center .aui-flyout__panel {\n      left: 50%;\n      transform: translate(-50%, -10px); }\n    .aui-flyout.is-active .aui-flyout__panel {\n      transform: translateY(0);\n      transition-delay: 0s; }\n    .aui-flyout.is-active.aui-flyout--center .aui-flyout__panel {\n      transform: translate(-50%, 0); } }\n\n.aui-layout {\n  margin-left: auto;\n  margin-right: auto;\n  padding-left: 4.375%;\n  padding-right: 4.375%; }\n\n.aui-grid {\n  margin-left: -0.25rem;\n  box-sizing: border-box; }\n  .aui-grid::after {\n    content: ' ';\n    display: block;\n    clear: both; }\n\n.aui-cell {\n  float: left;\n  width: 100%;\n  padding-left: 0.25rem; }\n  .aui-cell--1 {\n    width: 8.3333333333%; }\n  .aui-cell--2 {\n    width: 16.6666666667%; }\n  .aui-cell--3 {\n    width: 25%; }\n  .aui-cell--4 {\n    width: 33.3333333333%; }\n  .aui-cell--5 {\n    width: 41.6666666667%; }\n  .aui-cell--6 {\n    width: 50%; }\n  .aui-cell--7 {\n    width: 58.3333333333%; }\n  .aui-cell--8 {\n    width: 66.6666666667%; }\n  .aui-cell--9 {\n    width: 75%; }\n  .aui-cell--10 {\n    width: 83.3333333333%; }\n  .aui-cell--11 {\n    width: 91.6666666667%; }\n  .aui-cell--12 {\n    width: 100%; }\n  .aui-cell--spacing-left {\n    padding-left: 1rem; }\n\n.aui-grid--nested-2 .aui-cell {\n  width: 600%; }\n  .aui-grid--nested-2 .aui-cell--1 {\n    width: 50%; }\n  .aui-grid--nested-2 .aui-cell--2 {\n    width: 100%; }\n  .aui-grid--nested-2 .aui-cell--3 {\n    width: 150%; }\n  .aui-grid--nested-2 .aui-cell--4 {\n    width: 200%; }\n  .aui-grid--nested-2 .aui-cell--5 {\n    width: 250%; }\n  .aui-grid--nested-2 .aui-cell--6 {\n    width: 300%; }\n  .aui-grid--nested-2 .aui-cell--7 {\n    width: 350%; }\n  .aui-grid--nested-2 .aui-cell--8 {\n    width: 400%; }\n  .aui-grid--nested-2 .aui-cell--9 {\n    width: 450%; }\n  .aui-grid--nested-2 .aui-cell--10 {\n    width: 500%; }\n  .aui-grid--nested-2 .aui-cell--11 {\n    width: 550%; }\n  .aui-grid--nested-2 .aui-cell--12 {\n    width: 600%; }\n\n.aui-grid--nested-3 .aui-cell {\n  width: 400%; }\n  .aui-grid--nested-3 .aui-cell--1 {\n    width: 33.3333333333%; }\n  .aui-grid--nested-3 .aui-cell--2 {\n    width: 66.6666666667%; }\n  .aui-grid--nested-3 .aui-cell--3 {\n    width: 100%; }\n  .aui-grid--nested-3 .aui-cell--4 {\n    width: 133.333333333%; }\n  .aui-grid--nested-3 .aui-cell--5 {\n    width: 166.666666667%; }\n  .aui-grid--nested-3 .aui-cell--6 {\n    width: 200%; }\n  .aui-grid--nested-3 .aui-cell--7 {\n    width: 233.333333333%; }\n  .aui-grid--nested-3 .aui-cell--8 {\n    width: 266.666666667%; }\n  .aui-grid--nested-3 .aui-cell--9 {\n    width: 300%; }\n  .aui-grid--nested-3 .aui-cell--10 {\n    width: 333.333333333%; }\n  .aui-grid--nested-3 .aui-cell--11 {\n    width: 366.666666667%; }\n  .aui-grid--nested-3 .aui-cell--12 {\n    width: 400%; }\n\n.aui-grid--nested-4 .aui-cell {\n  width: 300%; }\n  .aui-grid--nested-4 .aui-cell--1 {\n    width: 25%; }\n  .aui-grid--nested-4 .aui-cell--2 {\n    width: 50%; }\n  .aui-grid--nested-4 .aui-cell--3 {\n    width: 75%; }\n  .aui-grid--nested-4 .aui-cell--4 {\n    width: 100%; }\n  .aui-grid--nested-4 .aui-cell--5 {\n    width: 125%; }\n  .aui-grid--nested-4 .aui-cell--6 {\n    width: 150%; }\n  .aui-grid--nested-4 .aui-cell--7 {\n    width: 175%; }\n  .aui-grid--nested-4 .aui-cell--8 {\n    width: 200%; }\n  .aui-grid--nested-4 .aui-cell--9 {\n    width: 225%; }\n  .aui-grid--nested-4 .aui-cell--10 {\n    width: 250%; }\n  .aui-grid--nested-4 .aui-cell--11 {\n    width: 275%; }\n  .aui-grid--nested-4 .aui-cell--12 {\n    width: 300%; }\n\n.aui-grid--nested-5 .aui-cell {\n  width: 240%; }\n  .aui-grid--nested-5 .aui-cell--1 {\n    width: 20%; }\n  .aui-grid--nested-5 .aui-cell--2 {\n    width: 40%; }\n  .aui-grid--nested-5 .aui-cell--3 {\n    width: 60%; }\n  .aui-grid--nested-5 .aui-cell--4 {\n    width: 80%; }\n  .aui-grid--nested-5 .aui-cell--5 {\n    width: 100%; }\n  .aui-grid--nested-5 .aui-cell--6 {\n    width: 120%; }\n  .aui-grid--nested-5 .aui-cell--7 {\n    width: 140%; }\n  .aui-grid--nested-5 .aui-cell--8 {\n    width: 160%; }\n  .aui-grid--nested-5 .aui-cell--9 {\n    width: 180%; }\n  .aui-grid--nested-5 .aui-cell--10 {\n    width: 200%; }\n  .aui-grid--nested-5 .aui-cell--11 {\n    width: 220%; }\n  .aui-grid--nested-5 .aui-cell--12 {\n    width: 240%; }\n\n.aui-grid--nested-6 .aui-cell {\n  width: 200%; }\n  .aui-grid--nested-6 .aui-cell--1 {\n    width: 16.6666666667%; }\n  .aui-grid--nested-6 .aui-cell--2 {\n    width: 33.3333333333%; }\n  .aui-grid--nested-6 .aui-cell--3 {\n    width: 50%; }\n  .aui-grid--nested-6 .aui-cell--4 {\n    width: 66.6666666667%; }\n  .aui-grid--nested-6 .aui-cell--5 {\n    width: 83.3333333333%; }\n  .aui-grid--nested-6 .aui-cell--6 {\n    width: 100%; }\n  .aui-grid--nested-6 .aui-cell--7 {\n    width: 116.666666667%; }\n  .aui-grid--nested-6 .aui-cell--8 {\n    width: 133.333333333%; }\n  .aui-grid--nested-6 .aui-cell--9 {\n    width: 150%; }\n  .aui-grid--nested-6 .aui-cell--10 {\n    width: 166.666666667%; }\n  .aui-grid--nested-6 .aui-cell--11 {\n    width: 183.333333333%; }\n  .aui-grid--nested-6 .aui-cell--12 {\n    width: 200%; }\n\n.aui-grid--nested-7 .aui-cell {\n  width: 171.428571429%; }\n  .aui-grid--nested-7 .aui-cell--1 {\n    width: 14.2857142857%; }\n  .aui-grid--nested-7 .aui-cell--2 {\n    width: 28.5714285714%; }\n  .aui-grid--nested-7 .aui-cell--3 {\n    width: 42.8571428571%; }\n  .aui-grid--nested-7 .aui-cell--4 {\n    width: 57.1428571429%; }\n  .aui-grid--nested-7 .aui-cell--5 {\n    width: 71.4285714286%; }\n  .aui-grid--nested-7 .aui-cell--6 {\n    width: 85.7142857143%; }\n  .aui-grid--nested-7 .aui-cell--7 {\n    width: 100%; }\n  .aui-grid--nested-7 .aui-cell--8 {\n    width: 114.285714286%; }\n  .aui-grid--nested-7 .aui-cell--9 {\n    width: 128.571428571%; }\n  .aui-grid--nested-7 .aui-cell--10 {\n    width: 142.857142857%; }\n  .aui-grid--nested-7 .aui-cell--11 {\n    width: 157.142857143%; }\n  .aui-grid--nested-7 .aui-cell--12 {\n    width: 171.428571429%; }\n\n.aui-grid--nested-8 .aui-cell {\n  width: 150%; }\n  .aui-grid--nested-8 .aui-cell--1 {\n    width: 12.5%; }\n  .aui-grid--nested-8 .aui-cell--2 {\n    width: 25%; }\n  .aui-grid--nested-8 .aui-cell--3 {\n    width: 37.5%; }\n  .aui-grid--nested-8 .aui-cell--4 {\n    width: 50%; }\n  .aui-grid--nested-8 .aui-cell--5 {\n    width: 62.5%; }\n  .aui-grid--nested-8 .aui-cell--6 {\n    width: 75%; }\n  .aui-grid--nested-8 .aui-cell--7 {\n    width: 87.5%; }\n  .aui-grid--nested-8 .aui-cell--8 {\n    width: 100%; }\n  .aui-grid--nested-8 .aui-cell--9 {\n    width: 112.5%; }\n  .aui-grid--nested-8 .aui-cell--10 {\n    width: 125%; }\n  .aui-grid--nested-8 .aui-cell--11 {\n    width: 137.5%; }\n  .aui-grid--nested-8 .aui-cell--12 {\n    width: 150%; }\n\n.aui-grid--nested-9 .aui-cell {\n  width: 133.333333333%; }\n  .aui-grid--nested-9 .aui-cell--1 {\n    width: 11.1111111111%; }\n  .aui-grid--nested-9 .aui-cell--2 {\n    width: 22.2222222222%; }\n  .aui-grid--nested-9 .aui-cell--3 {\n    width: 33.3333333333%; }\n  .aui-grid--nested-9 .aui-cell--4 {\n    width: 44.4444444444%; }\n  .aui-grid--nested-9 .aui-cell--5 {\n    width: 55.5555555556%; }\n  .aui-grid--nested-9 .aui-cell--6 {\n    width: 66.6666666667%; }\n  .aui-grid--nested-9 .aui-cell--7 {\n    width: 77.7777777778%; }\n  .aui-grid--nested-9 .aui-cell--8 {\n    width: 88.8888888889%; }\n  .aui-grid--nested-9 .aui-cell--9 {\n    width: 100%; }\n  .aui-grid--nested-9 .aui-cell--10 {\n    width: 111.111111111%; }\n  .aui-grid--nested-9 .aui-cell--11 {\n    width: 122.222222222%; }\n  .aui-grid--nested-9 .aui-cell--12 {\n    width: 133.333333333%; }\n\n.aui-grid--nested-10 .aui-cell {\n  width: 120%; }\n  .aui-grid--nested-10 .aui-cell--1 {\n    width: 10%; }\n  .aui-grid--nested-10 .aui-cell--2 {\n    width: 20%; }\n  .aui-grid--nested-10 .aui-cell--3 {\n    width: 30%; }\n  .aui-grid--nested-10 .aui-cell--4 {\n    width: 40%; }\n  .aui-grid--nested-10 .aui-cell--5 {\n    width: 50%; }\n  .aui-grid--nested-10 .aui-cell--6 {\n    width: 60%; }\n  .aui-grid--nested-10 .aui-cell--7 {\n    width: 70%; }\n  .aui-grid--nested-10 .aui-cell--8 {\n    width: 80%; }\n  .aui-grid--nested-10 .aui-cell--9 {\n    width: 90%; }\n  .aui-grid--nested-10 .aui-cell--10 {\n    width: 100%; }\n  .aui-grid--nested-10 .aui-cell--11 {\n    width: 110%; }\n  .aui-grid--nested-10 .aui-cell--12 {\n    width: 120%; }\n\n.aui-grid--nested-11 .aui-cell {\n  width: 109.090909091%; }\n  .aui-grid--nested-11 .aui-cell--1 {\n    width: 9.0909090909%; }\n  .aui-grid--nested-11 .aui-cell--2 {\n    width: 18.1818181818%; }\n  .aui-grid--nested-11 .aui-cell--3 {\n    width: 27.2727272727%; }\n  .aui-grid--nested-11 .aui-cell--4 {\n    width: 36.3636363636%; }\n  .aui-grid--nested-11 .aui-cell--5 {\n    width: 45.4545454545%; }\n  .aui-grid--nested-11 .aui-cell--6 {\n    width: 54.5454545455%; }\n  .aui-grid--nested-11 .aui-cell--7 {\n    width: 63.6363636364%; }\n  .aui-grid--nested-11 .aui-cell--8 {\n    width: 72.7272727273%; }\n  .aui-grid--nested-11 .aui-cell--9 {\n    width: 81.8181818182%; }\n  .aui-grid--nested-11 .aui-cell--10 {\n    width: 90.9090909091%; }\n  .aui-grid--nested-11 .aui-cell--11 {\n    width: 100%; }\n  .aui-grid--nested-11 .aui-cell--12 {\n    width: 109.090909091%; }\n\n.aui-header {\n  z-index: 100;\n  top: 0;\n  font-size: 12px;\n  height: 3.5rem; }\n  .aui-header__content {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-flow: row wrap;\n        flex-flow: row wrap;\n    -ms-flex-align: center;\n        align-items: center;\n    height: 3.5rem;\n    transition: box-shadow linear .15s; }\n  .aui-header--grid .aui-header__content {\n    padding: 0 4.375%; }\n  .aui-header.is-sticky .aui-header__content {\n    z-index: 100;\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n    box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.05), 0 0 50px 0 rgba(0, 0, 0, 0.07); }\n\n.aui-list {\n  counter-reset: li;\n  margin-left: 0;\n  padding-left: 0;\n  list-style: none;\n  font-size: 16px;\n  line-height: 24px; }\n  @media (min-width: 375px) {\n    .aui-list {\n      font-size: 16px;\n      line-height: 24px; } }\n  @media (min-width: 1024px) {\n    .aui-list {\n      font-size: 18px;\n      line-height: 28px; } }\n  @media (min-width: 1920px) {\n    .aui-list {\n      font-size: 20px;\n      line-height: 32px; } }\n  .aui-list__item {\n    margin-left: 1.25rem; }\n    .aui-list__item + .aui-list__item {\n      margin-top: 0.75rem; }\n    .aui-list__item::before {\n      display: inline-block;\n      width: 1.25rem;\n      margin-left: -1.25rem;\n      color: #808080; }\n  .aui-list--arrow .aui-list__item::before {\n    content: '›'; }\n  .aui-list--number .aui-list__item::before {\n    content: counter(li);\n    counter-increment: li; }\n\n.aui-color-text-light .aui-list__item::before {\n  color: rgba(255, 255, 255, 0.6); }\n\n/**\n * Prevent scrolling of body, when modal is open.\n * Added to body by JS.\n */\n.aui-modal-open {\n  overflow: hidden; }\n\n/**\n * Modal container stretched to viewport size.\n */\n.aui-modal {\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 0;\n  height: 0;\n  outline: 0;\n  z-index: 1900;\n  overflow: hidden; }\n  .aui-modal.is-active {\n    right: 0;\n    bottom: 0;\n    width: auto;\n    height: auto;\n    overflow-x: hidden;\n    overflow-y: auto;\n    -webkit-overflow-scrolling: touch; }\n\n/**\n * Modal dialog\n */\n.aui-modal-dialog {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-flow: row;\n      flex-flow: row;\n  -ms-flex-pack: center;\n      justify-content: center;\n  position: relative;\n  min-height: 100vh;\n  opacity: 0;\n  transition: opacity 0.4s cubic-bezier(0.75, 0.02, 0.5, 1);\n  background-color: #ffffff; }\n  .aui-modal-dialog__body {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-flow: column;\n        flex-flow: column;\n    -ms-flex-pack: center;\n        justify-content: center;\n    position: relative;\n    min-width: 1px;\n    max-width: 100%;\n    min-height: 100vh;\n    padding: 1.625rem 4.375%; }\n  .aui-modal-dialog__body--full {\n    padding: 0; }\n  .aui-modal-dialog__content {\n    max-width: 100%; }\n  .aui-modal-dialog__close {\n    position: fixed;\n    top: 0.375rem;\n    right: 0.375rem;\n    width: 45px;\n    height: 45px;\n    cursor: pointer;\n    vertical-align: middle;\n    outline: none;\n    box-sizing: border-box;\n    border: none;\n    -webkit-tap-highlight-color: transparent;\n    -webkit-tap-highlight-color: rgba(255, 255, 255, 0);\n    transition: color 0.3s cubic-bezier(0.75, 0.02, 0.5, 1);\n    color: #ffffff; }\n    .aui-modal-dialog__close:hover {\n      color: #cccccc; }\n    .aui-modal-dialog__close--dark {\n      color: #666666; }\n      .aui-modal-dialog__close--dark:hover {\n        color: #000000; }\n\n.aui-modal-close-icon-large,\n.aui-modal-close-icon-small {\n  display: block;\n  stroke-width: 1px; }\n\n.aui-modal-close-icon-large {\n  display: none; }\n\n/**\n * Styles when modal is open:\n */\n.aui-modal-open .aui-modal.is-active .aui-modal-dialog {\n  opacity: 1;\n  transition-delay: 0.4s; }\n\n.aui-modal-open .aui-modal.is-active .aui-modal-dialog--morph {\n  transition-delay: 0s; }\n  .aui-modal-open .aui-modal.is-active .aui-modal-dialog--morph .aui-modal-dialog__body {\n    transition-delay: 0s; }\n\n/**\n * Responsive adaptions:\n */\n@media (min-width: 0px) {\n  .aui-modal-dialog__body {\n    width: 62.5%;\n    max-width: 1200px; }\n  .aui-modal-dialog--fullpage .aui-modal-dialog__close,\n  .aui-modal-dialog--window .aui-modal-dialog__close {\n    top: 0;\n    right: 0;\n    width: 81px;\n    height: 81px; }\n  .aui-modal-dialog--fullpage .aui-modal-dialog__body {\n    padding-left: 0;\n    padding-right: 0; }\n  .aui-modal-dialog--window,\n  .aui-modal-dialog--layer {\n    background-color: transparent; }\n  .aui-modal-dialog--window .aui-modal-dialog__body {\n    width: 80%;\n    padding-left: 81px;\n    padding-right: 81px;\n    background-color: #ffffff; }\n  .aui-modal-dialog--layer {\n    padding: 0 4.375%; }\n    .aui-modal-dialog--layer .aui-modal-dialog__body {\n      padding: 1.625rem 0; }\n    .aui-modal-dialog--layer .aui-modal-dialog__content {\n      transform: translateY(0);\n      background-color: #ffffff; }\n    .aui-modal-dialog--layer .aui-modal-dialog__content {\n      padding: 2rem; }\n    .aui-modal-dialog--layer:not(.aui-modal-dialog--morph) .aui-modal-dialog__body {\n      transform: translateY(10px);\n      transition: transform 0.4s cubic-bezier(0.75, 0.02, 0.5, 1); }\n    .aui-modal-dialog--layer .aui-modal-dialog__close {\n      position: absolute; }\n  .aui-modal-dialog--layer .aui-modal-dialog__body--full,\n  .aui-modal-dialog__body--full {\n    padding: 0; }\n  .aui-modal-close-icon-small {\n    display: none; }\n  .aui-modal-close-icon-large {\n    display: block; }\n  /**\n   * Styles when modal is open:\n   */\n  .aui-modal-open .aui-modal.is-active .aui-modal-dialog {\n    opacity: 1;\n    transition-delay: 0.4s; }\n  .aui-modal-open .aui-modal.is-active .aui-modal-dialog__content {\n    transform: translateY(0);\n    transition-delay: 0.4s; }\n  .aui-modal-open .aui-modal.is-active .aui-modal-dialog--layer .aui-modal-dialog__body {\n    transform: translateY(0);\n    transition-delay: 0.4s; } }\n\n/**\n * Modal morph\n * Created by JS\n */\n.aui-modal-morph {\n  position: absolute;\n  opacity: 0;\n  background-color: #ffffff;\n  transition-property: top, left, width, height, opacity;\n  transition-duration: 0.4s;\n  transition-timing-function: cubic-bezier(0.75, 0.02, 0.5, 1);\n  z-index: 1801; }\n  .aui-modal-morph.is-morphing {\n    opacity: 1; }\n\n/**\n * Modal backdrop\n * Created by JS\n */\n.aui-modal-backdrop {\n  opacity: 0;\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  background: #1a1a1a;\n  transition: opacity 0.6s cubic-bezier(0.75, 0.02, 0.5, 1);\n  z-index: 1800; }\n\n.aui-modal-open .aui-modal-backdrop {\n  opacity: 1; }\n\n.aui-nav {\n  position: relative;\n  font-weight: 400;\n  font-size: 1rem;\n  line-height: 1;\n  color: #333333;\n  fill: #333333;\n  stroke: #333333; }\n\n.aui-nav__items {\n  padding-left: 0;\n  list-style: none; }\n\n.aui-nav__action {\n  display: block;\n  width: 100%;\n  z-index: 1;\n  font-family: 'AudiTypeVariable', Verdana, Geneva, sans-serif;\n  position: relative;\n  padding: 0.625rem 0;\n  vertical-align: baseline;\n  text-align: left;\n  transition-property: color, background, fill, stroke;\n  transition-duration: .15s;\n  transition-timing-function: linear;\n  cursor: pointer; }\n  .aui-nav__action.is-active, .aui-nav__action:hover {\n    color: #000000;\n    fill: #000000;\n    stroke: #000000; }\n  .aui-nav__action, .aui-nav__action.is-disabled {\n    color: #333333;\n    fill: #333333;\n    stroke: #333333; }\n  .aui-nav__action, .aui-nav__action.is-disabled, .aui-nav__action:active, .aui-nav__action:focus {\n    outline: 0;\n    border: 0;\n    background: none;\n    -webkit-tap-highlight-color: transparent;\n    -webkit-tap-highlight-color: rgba(255, 255, 255, 0); }\n  .aui-nav__action > span {\n    position: relative; }\n  .aui-nav__action .audiicon {\n    position: relative;\n    margin-right: .75em;\n    vertical-align: middle; }\n  .aui-nav__action.is-disabled {\n    cursor: not-allowed;\n    color: #b3b3b3;\n    fill: #b3b3b3;\n    stroke: #b3b3b3; }\n\n/**\n * Modifier: List\n */\n.aui-nav--list .aui-nav__action {\n  padding: 0.75rem 0; }\n\n.aui-nav--list .aui-nav__item {\n  display: block; }\n\n.aui-nav--list .aui-nav__item + .aui-nav__item {\n  border-top: 1px solid #d9d9d9; }\n\n.aui-nav--list .aui-nav__action {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap; }\n\n/**\n * Modifier: Bar and Tab\n */\n.aui-nav--bar,\n.aui-nav--tab {\n  font-family: 'AudiTypeVariable', Verdana, Geneva, sans-serif;\n  font-variation-settings: \"wdth\" 130;\n  overflow: hidden;\n  height: 2.25rem; }\n  .aui-nav--bar .aui-nav__panel,\n  .aui-nav--tab .aui-nav__panel {\n    position: relative;\n    max-width: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n    -webkit-overflow-scrolling: touch;\n    padding-bottom: 50px;\n    box-sizing: content-box; }\n  .aui-nav--bar .aui-nav__items,\n  .aui-nav--tab .aui-nav__items {\n    display: -ms-flexbox;\n    display: flex;\n    width: 100%;\n    -ms-flex-flow: row nowrap;\n        flex-flow: row nowrap;\n    -ms-flex-align: start;\n        align-items: flex-start;\n    white-space: nowrap; }\n  .aui-nav--bar .aui-nav__item,\n  .aui-nav--tab .aui-nav__item {\n    -ms-flex: 0 0 auto;\n        flex: 0 0 auto;\n    padding: 0 1rem; }\n    .aui-nav--bar .aui-nav__item:first-child,\n    .aui-nav--tab .aui-nav__item:first-child {\n      padding-left: 0; }\n    .aui-nav--bar .aui-nav__item:last-child,\n    .aui-nav--tab .aui-nav__item:last-child {\n      padding-right: 0; }\n  .aui-nav--bar .aui-nav__action,\n  .aui-nav--tab .aui-nav__action {\n    display: inline-block;\n    width: auto;\n    font-family: inherit; }\n    .aui-nav--bar .aui-nav__action.is-active,\n    .aui-nav--tab .aui-nav__action.is-active {\n      transition-delay: .15s; }\n\n.aui-nav__indicator {\n  pointer-events: none;\n  display: block;\n  position: absolute;\n  top: 2.25rem;\n  left: 0;\n  width: 1px;\n  height: 2px;\n  background: #000000;\n  opacity: 0;\n  transform: translateY(-100%); }\n\n.aui-nav__paddle-left,\n.aui-nav__paddle-right {\n  content: '';\n  display: block;\n  position: absolute;\n  top: 0;\n  width: 2rem;\n  height: 100%;\n  z-index: 2;\n  border: 0;\n  outline: 0;\n  overflow: hidden;\n  transition: opacity .15s linear; }\n  .aui-nav__paddle-left::after,\n  .aui-nav__paddle-right::after {\n    content: '';\n    display: inline-block;\n    position: absolute;\n    top: 50%;\n    width: 8px;\n    height: 13px;\n    background: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='13' viewBox='0 0 8 13'%3E%3Cpath stroke='%23333333' stroke-width='1px' fill='none' d='M1.5,1l5.485,5.504l-5.48,5.496' /%3E%3C/svg%3E\") center center no-repeat;\n    transform: translateY(-50%); }\n  .aui-nav__paddle-left:disabled,\n  .aui-nav__paddle-right:disabled {\n    width: 0;\n    opacity: 0; }\n\n.aui-nav__paddle-left {\n  left: 0;\n  background: linear-gradient(to right, white 40%, rgba(255, 255, 255, 0) 100%); }\n  .aui-nav__paddle-left::after {\n    left: 0;\n    transform: translateY(-50%) rotate(180deg); }\n\n.aui-nav__paddle-right {\n  right: 0;\n  background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, white 60%); }\n  .aui-nav__paddle-right::after {\n    right: 0; }\n\n.is-animated .aui-nav__indicator {\n  opacity: 1;\n  transition: left 0.3s cubic-bezier(0.75, 0.02, 0.5, 1), width 0.3s cubic-bezier(0.75, 0.02, 0.5, 1), opacity 0.3s cubic-bezier(0.75, 0.02, 0.5, 1); }\n\n.aui-nav--overlap {\n  margin-top: -2.25rem; }\n\n.aui-nav--small {\n  height: 1.75rem;\n  font-size: 0.75rem;\n  font-family: 'AudiTypeVariable', Verdana, Geneva, sans-serif; }\n  .aui-nav--small .aui-nav__item {\n    padding: 0 0.75rem; }\n    .aui-nav--small .aui-nav__item:first-child {\n      padding-left: 0; }\n    .aui-nav--small .aui-nav__item:last-child {\n      padding-right: 0; }\n  .aui-nav--small .aui-nav__action {\n    padding: 0.5rem 0; }\n  .aui-nav--small .aui-nav__indicator {\n    top: 1.75rem; }\n\n.aui-nav--tab {\n  height: 3.25rem; }\n  .aui-nav--tab .aui-nav__item {\n    padding-left: 0;\n    padding-right: 0; }\n  .aui-nav--tab .aui-nav__action {\n    padding: 1.125rem 1.25rem; }\n  .aui-nav--tab .aui-nav__indicator {\n    top: 0;\n    height: 100%;\n    transform: none;\n    background: #e5e5e5; }\n  .aui-nav--tab.aui-nav--small {\n    height: 2.5rem; }\n    .aui-nav--tab.aui-nav--small .aui-nav__action {\n      padding: 0.875rem 1rem; }\n  .aui-nav--tab.aui-nav--overlap {\n    margin-top: -3.25rem; }\n\n/**\n * Modifier: dropdown\n */\n.aui-nav--dropdown {\n  color: #333333; }\n  .aui-nav--dropdown.is-active {\n    z-index: 1000; }\n  .aui-nav--dropdown .aui-nav__toggle {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    position: relative;\n    padding: 0.625rem 0;\n    width: 100%;\n    border: 0;\n    background: none;\n    outline: none;\n    line-height: 1;\n    text-align: left;\n    color: #000000; }\n  .aui-nav--dropdown .aui-nav__toggle-label {\n    display: block;\n    position: relative;\n    pointer-events: none;\n    padding-right: 18px; }\n    .aui-nav--dropdown .aui-nav__toggle-label::after {\n      content: '';\n      display: block;\n      position: absolute;\n      top: 50%;\n      right: 0;\n      width: 13px;\n      height: 8px;\n      margin-top: -4px;\n      transition-property: transform, background;\n      transition-duration: 0.25s;\n      transition-timing-function: cubic-bezier(0.75, 0.02, 0.5, 1); }\n  .aui-nav--dropdown.is-active .aui-nav__toggle-label::after {\n    transform: rotate(180deg); }\n  .aui-nav--dropdown .aui-nav__underline {\n    display: block;\n    position: relative;\n    top: -1px;\n    height: 1px;\n    background: #333333;\n    z-index: 1; }\n    .aui-nav--dropdown .aui-nav__underline::after {\n      content: '';\n      display: block;\n      opacity: 0;\n      position: absolute;\n      top: 1px;\n      width: 100%;\n      height: 1px;\n      background: inherit;\n      transition: opacity .25s linear; }\n  .aui-nav--dropdown.is-active .aui-nav__underline::after {\n    opacity: 1; }\n  .aui-nav--dropdown .aui-nav__panel {\n    position: absolute;\n    top: 100%;\n    width: 100%;\n    opacity: 0;\n    visibility: hidden;\n    background: #e5e5e5;\n    box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.05), 0 0 50px 0 rgba(0, 0, 0, 0.07);\n    transition: opacity .3s, visibility .3s;\n    transition-timing-function: cubic-bezier(0.75, 0.02, 0.5, 1);\n    z-index: 1000; }\n  .aui-nav--dropdown.is-active .aui-nav__panel {\n    visibility: visible;\n    opacity: 1; }\n  .aui-nav--dropdown .aui-nav__items {\n    max-height: 0;\n    overflow: hidden;\n    padding: 0.5rem 0;\n    transition: max-height 0s .3s; }\n  .aui-nav--dropdown.is-active .aui-nav__items {\n    max-height: 10000px;\n    transition-delay: 0s; }\n  .aui-nav--dropdown .aui-nav__item {\n    opacity: 0;\n    margin: 0 1.25rem;\n    transform: translateY(10%);\n    transition-property: transform, opacity;\n    transition-duration: .3s;\n    transition-timing-function: cubic-bezier(0.75, 0.02, 0.5, 1);\n    transition-delay: 0s; }\n    .aui-nav--dropdown .aui-nav__item:not(:last-child) {\n      border-bottom: 1px solid #d9d9d9; }\n  .aui-nav--dropdown.is-active .aui-nav__item {\n    opacity: 1;\n    transform: translateY(0); }\n  .aui-nav--dropdown .aui-nav__action {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    padding: 1.25rem 0; }\n  .aui-nav--dropdown.aui-nav--sticky {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1001; }\n  .aui-nav--dropdown.aui-nav--sticky .aui-nav__toggle {\n    background: #ffffff; }\n  .aui-nav--dropdown.is-sticky .aui-nav__toggle {\n    padding: 1.125rem 4.375%;\n    box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.05), 0 0 50px 0 rgba(0, 0, 0, 0.07);\n    z-index: 1001; }\n  .aui-nav--dropdown.is-sticky .aui-nav__toggle {\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%; }\n  .aui-nav--dropdown.is-sticky .aui-nav__panel {\n    position: fixed;\n    top: 3.25rem;\n    left: 0; }\n  .aui-nav--dropdown.is-sticky .aui-nav__underline {\n    opacity: 0; }\n  .aui-nav--dropdown.is-sticky .aui-nav__item {\n    margin-left: 4.375%;\n    margin-right: 4.375%; }\n\n.aui-notification {\n  position: relative;\n  width: 18.5rem;\n  font-size: 14px;\n  line-height: 20px;\n  transform: translateY(30px);\n  transition: height 0.4s cubic-bezier(0.75, 0.02, 0.5, 1) 0.4s, margin 0.4s cubic-bezier(0.75, 0.02, 0.5, 1) 0.4s, opacity 0.4s cubic-bezier(0.75, 0.02, 0.5, 1), visibility 0.4s cubic-bezier(0.75, 0.02, 0.5, 1), transform 0.4s cubic-bezier(0.75, 0.02, 0.5, 1), box-shadow 0.4s cubic-bezier(0.75, 0.02, 0.5, 1);\n  margin-bottom: 0.25rem;\n  opacity: 0;\n  visibility: hidden; }\n  @media (min-width: 375px) {\n    .aui-notification {\n      font-size: 14px;\n      line-height: 20px; } }\n  @media (min-width: 1024px) {\n    .aui-notification {\n      font-size: 15px;\n      line-height: 24px; } }\n  @media (min-width: 1920px) {\n    .aui-notification {\n      font-size: 16px;\n      line-height: 24px; } }\n  .aui-notification-container {\n    position: fixed;\n    right: 0.75rem;\n    top: 0.75rem;\n    z-index: 1701; }\n  .aui-notification__content {\n    position: relative;\n    margin-right: 27px;\n    padding: 0.75rem 1.5rem 0.75rem 0.75rem; }\n  .aui-notification__close {\n    position: absolute;\n    top: 0.75rem;\n    right: 0.75rem;\n    width: 17px;\n    height: 17px;\n    background: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 17 17' %3E%3Cpath fill='%23333333' d='M8.487,7.78l7.78,-7.777c0.235,0.236 0.471,0.472 0.707,0.707l-7.78,7.777l7.777,7.78l-0.708,0.707l-7.776,-7.78l-7.78,7.777l-0.707,-0.708l7.78,-7.776l-7.777,-7.78l0.707,-0.707l7.777,7.78Z' /%3E%3C/svg%3E\") center center no-repeat;\n    cursor: pointer;\n    vertical-align: middle;\n    outline: none;\n    box-sizing: border-box;\n    border: none;\n    -webkit-tap-highlight-color: transparent;\n    -webkit-tap-highlight-color: rgba(255, 255, 255, 0); }\n  .aui-notification.aui-color-text-light .aui-notification__close,\n  .aui-notification.aui-color-text-warning .aui-notification__close {\n    background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 17 17' %3E%3Cpath fill='%23f2f2f2' d='M8.487,7.78l7.78,-7.777c0.235,0.236 0.471,0.472 0.707,0.707l-7.78,7.777l7.777,7.78l-0.708,0.707l-7.776,-7.78l-7.78,7.777l-0.707,-0.708l7.78,-7.776l-7.777,-7.78l0.707,-0.707l7.777,7.78Z' /%3E%3C/svg%3E\"); }\n  .aui-notification.is-open {\n    transform: translateY(0);\n    opacity: 1;\n    visibility: visible;\n    box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.1), 0 0 40px 0 rgba(0, 0, 0, 0.15);\n    transition-duration: 0.4s; }\n  .aui-notification.is-closed {\n    transform: translateY(0);\n    overflow: hidden;\n    height: 0 !important; }\n\n.aui-pager {\n  list-style: none;\n  padding-left: 0;\n  font-weight: 400;\n  color: #666666; }\n  .aui-pager__item {\n    display: inline-block; }\n  .aui-pager__current {\n    color: #000000; }\n  .aui-pager__next, .aui-pager__prev {\n    transition: color .15s linear; }\n  .aui-pager__prev {\n    margin-right: 1em; }\n  .aui-pager__next {\n    margin-left: 1em; }\n  .aui-pager__next-icon, .aui-pager__prev-icon {\n    display: inline-block;\n    width: .5em;\n    height: .8125em;\n    text-indent: 100%;\n    overflow: hidden;\n    transition: transform 0.15s cubic-bezier(0.75, 0.02, 0.5, 1);\n    background-size: contain;\n    background-repeat: no-repeat;\n    background-position: center; }\n    .aui-pager__next-icon svg, .aui-pager__prev-icon svg {\n      display: block;\n      fill: none;\n      stroke: currentColor;\n      stroke-width: 1.1px; }\n  .aui-pager__prev-icon {\n    transform: translateY(0.0625em) rotate(180deg); }\n  .aui-pager__next:hover:not(.is-disabled), .aui-pager__prev:hover:not(.is-disabled) {\n    color: #000000; }\n  .aui-pager__prev:hover:not(.is-disabled) .aui-pager__prev-icon {\n    transform: translateX(-4px) translateY(0.0625em) rotate(180deg); }\n  .aui-pager__next:hover:not(.is-disabled) .aui-pager__next-icon {\n    transform: translateX(4px); }\n  .aui-pager__next.is-disabled, .aui-pager__prev.is-disabled {\n    cursor: not-allowed;\n    opacity: .30;\n    pointer-events: none; }\n\n.aui-pagination {\n  position: relative;\n  height: 1.75rem;\n  font-size: 1rem;\n  line-height: 1.75rem;\n  font-weight: 400;\n  color: #666666; }\n  .aui-pagination__items {\n    display: block;\n    list-style: none;\n    padding-left: 0; }\n    .aui-pagination__items::after {\n      content: '';\n      display: table;\n      clear: both; }\n  .aui-pagination__item {\n    display: block;\n    margin: 0 0.75rem;\n    float: left; }\n    .aui-pagination__item:first-child {\n      margin-left: 0; }\n    .aui-pagination__item:last-child {\n      margin-right: 0; }\n  .aui-pagination__ellipsis, .aui-pagination__link, .aui-pagination__next, .aui-pagination__prev {\n    transition: color .15s linear; }\n  .aui-pagination__link.is-active, .aui-pagination__link:hover:not(.is-disabled), .aui-pagination__next:hover:not(.is-disabled), .aui-pagination__prev:hover:not(.is-disabled) {\n    color: #000000; }\n  .aui-pagination__prev:hover:not(.is-disabled) .aui-pagination__prev-icon {\n    transform: translateX(-4px) translateY(0.0625em) rotate(180deg); }\n  .aui-pagination__next:hover:not(.is-disabled) .aui-pagination__next-icon {\n    transform: translateX(4px) translateY(0.0625em); }\n  .aui-pagination__next-icon, .aui-pagination__prev-icon {\n    display: inline-block;\n    width: .5em;\n    height: .8125em;\n    text-indent: 100%;\n    overflow: hidden;\n    transform: translateY(0.0625em);\n    transition: transform 0.15s cubic-bezier(0.75, 0.02, 0.5, 1);\n    background-size: contain;\n    background-repeat: no-repeat;\n    background-position: center; }\n    .aui-pagination__next-icon svg, .aui-pagination__prev-icon svg {\n      display: block;\n      fill: none;\n      stroke: currentColor;\n      stroke-width: 1.1px; }\n  .aui-pagination__prev-icon {\n    transform: translateY(0.0625em) rotate(180deg); }\n  .aui-pagination__indicator {\n    pointer-events: none;\n    display: block;\n    position: absolute;\n    bottom: 0;\n    left: 0;\n    width: 1px;\n    height: 2px;\n    background: #000000;\n    z-index: 1;\n    opacity: 0; }\n  .is-animated .aui-pagination__indicator {\n    opacity: 1;\n    transition: left 0.3s cubic-bezier(0.75, 0.02, 0.5, 1), width 0.3s cubic-bezier(0.75, 0.02, 0.5, 1), opacity 0.3s cubic-bezier(0.75, 0.02, 0.5, 1); }\n  [displaytype^='stepless'] .aui-pagination__indicator {\n    display: none; }\n  [pageCount^='0'] .aui-pagination__indicator {\n    display: none; }\n  .aui-pagination__link.is-disabled, .aui-pagination__next.is-disabled, .aui-pagination__prev.is-disabled {\n    cursor: not-allowed;\n    opacity: .30;\n    pointer-events: none; }\n\n.aui-player {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n  height: 0;\n  padding-bottom: 56.25%;\n  color: #ffffff;\n  background-color: #000000;\n  background-position: center;\n  background-repeat: no-repeat;\n  background-size: cover;\n  /**\n   * States\n   */\n  /**\n   * Responsiveness\n   */ }\n  .aui-player-related-container {\n    z-index: 1;\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-align: center;\n        align-items: center;\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    background: rgba(0, 0, 0, 0.5);\n    overflow: hidden; }\n  .aui-player-related-container__replay {\n    position: absolute;\n    left: 5%;\n    bottom: 19px; }\n    .aui-player-related-container__replay .audiicon {\n      width: 100%;\n      height: 100%; }\n  .aui-player-related-grid {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-flow: row nowrap;\n        flex-flow: row nowrap;\n    width: 90%;\n    margin: 0 auto;\n    overflow: hidden; }\n    .aui-player-related-grid__cell {\n      display: block;\n      -ms-flex: 1 1 auto;\n          flex: 1 1 auto;\n      width: 1px;\n      margin: 0 0.25rem 0 0; }\n      .aui-player-related-grid__cell:last-child {\n        margin-right: 0; }\n  .aui-player-related-content {\n    display: block;\n    width: 100%;\n    padding: 0;\n    outline: none;\n    color: inherit;\n    background: none;\n    border: 0 none;\n    font-size: 12px;\n    line-height: 16px;\n    font-weight: 400;\n    letter-spacing: -0.015em;\n    text-align: left;\n    cursor: pointer; }\n    .aui-player-related-content__image {\n      display: block;\n      width: 100%;\n      height: auto; }\n    .aui-player-related-content__title {\n      display: block;\n      margin-top: 0.5rem;\n      max-width: 100%;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n      word-wrap: normal;\n      padding-right: 1rem; }\n  .aui-player__overlay {\n    position: absolute;\n    background: rgba(0, 0, 0, 0.5);\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0; }\n  .aui-player__large-button {\n    position: absolute;\n    left: 50%;\n    top: 50%;\n    width: 44px;\n    height: 44px;\n    border: 1px solid #ffffff;\n    transform: translate(-50%, -50%); }\n    .aui-player__large-button .audiicon {\n      position: absolute;\n      left: 10px;\n      top: 10px;\n      width: 24px;\n      height: 24px; }\n  .aui-player__large-button, .aui-player__overlay {\n    transition: opacity .2s linear .5s; }\n  .aui-player.is-playing .aui-player__large-button,\n  .aui-player.is-playing .aui-player__overlay {\n    opacity: 0; }\n  .aui-player:hover .aui-player__large-button,\n  .aui-player:hover .aui-player__overlay {\n    transition: opacity .2s linear;\n    opacity: 1; }\n  .aui-player__chrome {\n    z-index: 3;\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-flow: row nowrap;\n        flex-flow: row nowrap;\n    -ms-flex-align: center;\n        align-items: center;\n    position: absolute;\n    left: 0;\n    bottom: 0;\n    width: 100%;\n    height: 60px;\n    padding: 0 5%;\n    font-size: 0.75rem;\n    transform: translateY(100%);\n    transition: transform 0.4s cubic-bezier(0.75, 0.02, 0.5, 1); }\n    .aui-player__chrome::after {\n      content: '';\n      display: block;\n      position: absolute;\n      bottom: 0;\n      left: 0;\n      width: 100%;\n      height: 60px;\n      background-color: rgba(0, 0, 0, 0.6);\n      transition: height 0.2s cubic-bezier(0.75, 0.02, 0.5, 1) 0.1s;\n      z-index: -1; }\n  .aui-player__current-time, .aui-player__duration, .aui-player__fullscreen, .aui-player__mute, .aui-player__play {\n    -ms-flex: 0 0 auto;\n        flex: 0 0 auto; }\n  .aui-player__progress-control {\n    -ms-flex: 1 1 auto;\n        flex: 1 1 auto; }\n  .aui-player__current-time, .aui-player__duration {\n    transform: translateY(0.0833333333em); }\n  .aui-player__current-time {\n    margin-left: 0.5rem;\n    margin-right: 0.25rem; }\n    .aui-player__current-time:first-child {\n      margin-left: 0; }\n  .aui-player__duration {\n    margin-left: 0.25rem;\n    margin-right: 0.5rem; }\n    .aui-player__duration:last-child {\n      margin-right: 0; }\n  .aui-player__progress-control {\n    position: relative;\n    height: 100%; }\n  .aui-player__progress-holder {\n    position: absolute;\n    top: 50%;\n    width: 100%;\n    height: 1px;\n    background-color: #4c4c4c; }\n  .aui-player__progress {\n    position: absolute;\n    left: 0;\n    top: 0;\n    width: 100%;\n    height: 100%; }\n    .aui-player__progress--loading {\n      background-color: #808080; }\n    .aui-player__progress--progress {\n      background-color: #ffffff; }\n  .aui-player__mute + .aui-player__fullscreen {\n    margin-left: 0.5rem; }\n  .aui-player__playhead {\n    position: absolute;\n    left: 0;\n    top: 0;\n    width: 0.75rem;\n    height: 0.75rem;\n    border: 1px solid #ffffff;\n    border-radius: 50%;\n    transform: translate(-50%, -50%);\n    background-color: #333333;\n    z-index: 1; }\n  .aui-player__seek-holder {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 0;\n    height: 100%;\n    opacity: 0;\n    transition: opacity .2s linear; }\n  .aui-player__seek-marker {\n    position: absolute;\n    top: -0.375rem;\n    right: 0;\n    width: 1px;\n    height: 0.75rem;\n    background-color: #ffffff; }\n  .aui-player__seek-time {\n    position: absolute;\n    bottom: 7px;\n    right: 0;\n    line-height: 2em;\n    transform: translateX(50%);\n    z-index: 1; }\n  .aui-player__preview {\n    display: none;\n    position: absolute;\n    right: 0;\n    transform: translateX(50%);\n    opacity: 0;\n    transition: opacity .2s linear; }\n  .aui-player__preview-image {\n    width: 80px;\n    height: 0;\n    padding-bottom: 56.25%;\n    background-position: center;\n    background-size: cover; }\n  .aui-player__icon-exit-fullscreen, .aui-player__icon-pause, .aui-player__icon-replay, .aui-player__icon-unmute {\n    display: none; }\n  .aui-player--preview .aui-player__preview,\n  .aui-player--preview .aui-player__seek-time {\n    bottom: 17px; }\n  .aui-player--preview .aui-player__preview {\n    display: block; }\n  .aui-player.is-controlled .aui-player__chrome,\n  .aui-player:hover .aui-player__chrome {\n    transform: translateY(0); }\n  .aui-player.is-seeking .aui-player__seek-holder {\n    opacity: 1;\n    transition-delay: .1s; }\n  .aui-player.is-seeking .aui-player__preview {\n    opacity: 1;\n    transition-delay: .1s; }\n  .aui-player.is-seeking.aui-player--preview .aui-player__chrome::after {\n    height: 101px;\n    transition-delay: 0s; }\n  .aui-player.is-mute .aui-player__icon-mute {\n    display: none; }\n  .aui-player.is-mute .aui-player__icon-unmute {\n    display: inline-block; }\n  .aui-player.is-playing .aui-player__icon-play {\n    display: none; }\n  .aui-player.is-playing .aui-player__icon-pause {\n    display: inline-block; }\n  .aui-player.is-complete .aui-player__icon-pause,\n  .aui-player.is-complete .aui-player__icon-play {\n    display: none; }\n  .aui-player.is-complete .aui-player__icon-replay {\n    display: inline-block; }\n  .aui-player.is-fullscreen .aui-player__icon-enter-fullscreen, .aui-player:-webkit-full-screen .aui-player__icon-enter-fullscreen {\n    visibility: hidden; }\n  .aui-player.is-fullscreen .aui-player__icon-enter-fullscreen, .aui-player:-ms-fullscreen .aui-player__icon-enter-fullscreen {\n    visibility: hidden; }\n  .aui-player.is-fullscreen .aui-player__icon-enter-fullscreen, .aui-player:fullscreen .aui-player__icon-enter-fullscreen {\n    visibility: hidden; }\n  .aui-player.is-fullscreen .aui-player__icon-exit-fullscreen, .aui-player:-webkit-full-screen .aui-player__icon-exit-fullscreen {\n    visibility: visible; }\n  .aui-player.is-fullscreen .aui-player__icon-exit-fullscreen, .aui-player:-ms-fullscreen .aui-player__icon-exit-fullscreen {\n    visibility: visible; }\n  .aui-player.is-fullscreen .aui-player__icon-exit-fullscreen, .aui-player:fullscreen .aui-player__icon-exit-fullscreen {\n    visibility: visible; }\n  @media (min-width: 0px) {\n    .aui-player__large-button {\n      width: 72px;\n      height: 72px; }\n      .aui-player__large-button .audiicon {\n        left: 12px;\n        top: 12px;\n        width: 48px;\n        height: 48px; }\n      .aui-player__large-button .audiicon-small {\n        visibility: hidden; }\n      .aui-player__large-button .audiicon-large {\n        visibility: visible; } }\n  @media (min-width: 1024px) {\n    .aui-player__chrome {\n      font-size: 1rem;\n      height: 120px; }\n      .aui-player__chrome::after {\n        height: 120px; }\n      .aui-player__chrome .aui-button--icon {\n        width: 45px;\n        height: 45px; }\n        .aui-player__chrome .aui-button--icon .audiicon {\n          left: -1px;\n          top: -1px;\n          width: 48px;\n          height: 48px; }\n        .aui-player__chrome .aui-button--icon .audiicon-small {\n          visibility: hidden; }\n        .aui-player__chrome .aui-button--icon .audiicon-large {\n          visibility: visible; }\n    .aui-player__current-time {\n      margin-left: 2.5rem;\n      margin-right: 1.25rem; }\n    .aui-player__duration {\n      margin-left: 1.25rem;\n      margin-right: 2.5rem; }\n    .aui-player__mute + .aui-player__fullscreen {\n      margin-left: 1.25rem; }\n    .aui-player__playhead {\n      width: 1.25rem;\n      height: 1.25rem; }\n    .aui-player__seek-time {\n      bottom: 20px; }\n    .aui-player__seek-marker {\n      top: -0.625rem;\n      height: 1.25rem; }\n    .aui-player__preview-image {\n      width: 128px;\n      height: 72px; }\n    .aui-player-related-container__replay {\n      bottom: 38px;\n      width: 44px;\n      height: 44px; }\n    .aui-player .audiicon-small {\n      visibility: hidden; }\n    .aui-player .audiicon-large {\n      visibility: visible; }\n    .aui-player.aui-player--preview .aui-player__preview,\n    .aui-player.aui-player--preview .aui-player__seek-time {\n      bottom: 31px; }\n    .aui-player.is-seeking.aui-player--preview .aui-player__chrome::after {\n      height: 182px; } }\n  @media (min-width: 1024px) {\n    .aui-player-related-content {\n      font-family: 'AudiTypeVariable', Verdana, Geneva, sans-serif;\n      font-variation-settings: \"wdth\" 130;\n      font-size: 14px;\n      line-height: 20px; } }\n  @media (min-width: 1024px) {\n    .aui-player-related-content {\n      font-size: 16px;\n      line-height: 24px; }\n    .aui-player__preview-image {\n      width: 160px;\n      height: 90px; }\n    .aui-player.is-seeking.aui-player--preview .aui-player__chrome::after {\n      height: 200px; } }\n\n/**\n * Prevent zooming of body, when popover is open.\n * Added to body by JS.\n */\n.aui-popover-is-open {\n  overflow-x: hidden; }\n\n.aui-popover {\n  display: block;\n  position: absolute;\n  top: 0;\n  left: 0;\n  padding: 2px;\n  width: 0;\n  height: 0;\n  font-size: 0.875rem;\n  line-height: 1.25rem;\n  text-align: left;\n  overflow: hidden;\n  opacity: 0;\n  visibility: hidden;\n  transition: opacity .15s linear, visibility .15s linear;\n  z-index: 1002;\n  /**\n   * States\n   */ }\n  .aui-popover.aui-tether-enabled {\n    width: 90vw;\n    max-width: 22em;\n    height: auto;\n    overflow: visible;\n    visibility: visible; }\n  .aui-popover__content {\n    position: relative;\n    box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.05), 0 0 50px 0 rgba(0, 0, 0, 0.07); }\n  .aui-popover__content:not([class^=\"aui-color-\"]):not([class*=\" aui-color-\"]) {\n    background-color: #ffffff; }\n  .aui-popover__text {\n    display: block;\n    position: relative;\n    padding: 1rem;\n    background-color: inherit;\n    z-index: 1; }\n  .aui-popover__media {\n    display: block;\n    position: relative;\n    width: 100%;\n    height: auto;\n    z-index: 1; }\n  .aui-popover__arrow {\n    display: block;\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    width: 20px;\n    height: 20px;\n    fill: #ffffff;\n    transform: translate(-50%, -50%); }\n  .aui-popover__arrow-shape {\n    display: block; }\n  .aui-popover.aui-tether-element-attached-top {\n    margin-top: 12px; }\n    .aui-popover.aui-tether-element-attached-top .aui-popover__arrow {\n      top: 0; }\n  .aui-popover.aui-tether-element-attached-bottom {\n    margin-top: -12px; }\n    .aui-popover.aui-tether-element-attached-bottom .aui-popover__arrow {\n      top: 100%; }\n  .aui-popover.aui-tether-element-attached-left {\n    padding-left: 12px; }\n    .aui-popover.aui-tether-element-attached-left .aui-popover__arrow {\n      left: 0; }\n  .aui-popover.aui-tether-element-attached-right {\n    padding-right: 12px; }\n    .aui-popover.aui-tether-element-attached-right .aui-popover__arrow {\n      left: 100%; }\n  .aui-popover.aui-tether-element-attached-middle.aui-tether-pinned-right {\n    left: 0 !important;\n    padding-right: 12px; }\n    .aui-popover.aui-tether-element-attached-middle.aui-tether-pinned-right .aui-popover__arrow {\n      left: 100%; }\n  .aui-popover.aui-tether-element-attached-middle.aui-tether-pinned-left {\n    right: 0;\n    left: auto !important;\n    padding-left: 12px; }\n    .aui-popover.aui-tether-element-attached-middle.aui-tether-pinned-left .aui-popover__arrow {\n      left: 0; }\n  .aui-popover.is-shown {\n    opacity: 1;\n    visibility: visible;\n    transition-duration: .25s; }\n\n.aui-progress {\n  position: relative;\n  height: 0.25rem;\n  background: #e5e5e5;\n  overflow: hidden; }\n  .aui-progress__bar {\n    display: block;\n    position: absolute;\n    top: 0;\n    left: 0;\n    height: 100%;\n    width: 100%;\n    background: #f50537;\n    transform-origin: 0% 0%; }\n  .aui-progress--continuous .aui-progress__bar {\n    animation: aui-progress 1s cubic-bezier(0.85, 0, 1, 1) 0s infinite normal none running; }\n\n@keyframes aui-progress {\n  0% {\n    transform: translateX(0%) scaleX(0); }\n  50% {\n    transform: translateX(20%) scaleX(0.5);\n    animation-timing-function: cubic-bezier(0, 0, 0, 1); }\n  100% {\n    transform: translateX(100%) scaleX(0.5); } }\n\n.aui-radio {\n  display: inline-block;\n  position: relative;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #333333;\n  cursor: pointer;\n  -webkit-tap-highlight-color: transparent;\n  -webkit-tap-highlight-color: rgba(255, 255, 255, 0); }\n  .aui-js .aui-radio {\n    padding-left: 2.5em; }\n  .aui-radio__hint {\n    display: block;\n    margin-top: 0.5rem;\n    font-size: 0.8125rem;\n    line-height: 1.25rem; }\n  .aui-radio__box {\n    display: none;\n    overflow: hidden;\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 1.5em;\n    height: 1.5em;\n    border: 1px solid #808080;\n    border-radius: 50%;\n    transition: box-shadow .15s linear, border .15s linear;\n    cursor: pointer;\n    pointer-events: none;\n    z-index: 1; }\n    .aui-js .aui-radio__box {\n      display: inline-block; }\n  .aui-radio__tick {\n    display: block;\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    width: 1.5em;\n    height: 1.5em;\n    transform: translate(-50%, -50%) scale(0.3333333333, 0.3333333333);\n    border-radius: 50%;\n    background: #d9d9d9;\n    transition: transform 0.15s cubic-bezier(0.75, 0.02, 0.5, 1), background 0.15s linear;\n    pointer-events: none; }\n  .aui-radio:hover:not(.is-disabled) {\n    color: #000000; }\n    .aui-radio:hover:not(.is-disabled) .aui-radio__box {\n      border-color: #000000; }\n    .aui-radio:hover:not(.is-disabled) .aui-radio__tick {\n      transform: translate(-50%, -50%) scale(0.4166666667, 0.4166666667); }\n  .aui-radio.is-disabled {\n    color: #666666;\n    cursor: not-allowed; }\n  .aui-radio.is-checked .aui-radio__tick {\n    background: #000000;\n    transform: translate(-50%, -50%) scale(0.5, 0.5); }\n\n.aui-response {\n  display: block;\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  z-index: 2;\n  pointer-events: none; }\n  .aui-response__effect {\n    content: '';\n    display: block;\n    position: absolute;\n    width: 40px;\n    height: 40px;\n    margin: -20px 0 0 -20px;\n    border-radius: 50%; }\n    .aui-response__effect--large {\n      width: 60px;\n      height: 60px;\n      margin: -30px 0 0 -30px; }\n  .aui-response--masked {\n    overflow: hidden; }\n  .aui-response.is-animating .aui-response__effect {\n    animation: aui-response-dark 0.6s cubic-bezier(0.75, 0.02, 0.5, 1) both; }\n  .aui-response.aui-theme-light.is-animating .aui-response__effect,\n  .aui-button.aui-theme-light .aui-response.is-animating .aui-response__effect {\n    animation: aui-response-light 0.6s cubic-bezier(0.75, 0.02, 0.5, 1) both; }\n\n/**\n * Invert effect, when used with Primary Button\n */\n.aui-button--primary .aui-response.is-animating .aui-response__effect {\n  animation: aui-response-light 0.6s cubic-bezier(0.75, 0.02, 0.5, 1) both; }\n\n.aui-button--primary.aui-theme-light .aui-response.is-animating .aui-response__effect {\n  animation: aui-response-dark 0.6s cubic-bezier(0.75, 0.02, 0.5, 1) both; }\n\n/**\n * Animations\n */\n@keyframes aui-response-dark {\n  0% {\n    opacity: 1;\n    box-shadow: inset 0 0 0 30px rgba(153, 153, 153, 0.3);\n    transform: scale3d(0.01, 0.01, 1); }\n  100% {\n    opacity: 0;\n    box-shadow: inset 0 0 0 1px #999999;\n    transform: scale3d(1.7, 1.7, 1); } }\n\n@keyframes aui-response-light {\n  0% {\n    opacity: 1;\n    box-shadow: inset 0 0 0 30px rgba(255, 255, 255, 0.3);\n    transform: scale3d(0.01, 0.01, 1); }\n  100% {\n    opacity: 0;\n    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.7);\n    transform: scale3d(1.7, 1.7, 1); } }\n\n.aui-select {\n  display: block;\n  position: relative;\n  margin: 0;\n  padding: 0;\n  padding-top: 0.6875rem;\n  font-size: 1rem;\n  line-height: 1.5;\n  box-sizing: border-box;\n  /**\n   * Variant: floating-label\n   */\n  /**\n   * States\n   */ }\n  .aui-select:hover .aui-select__focus-line {\n    background: #000000; }\n  .aui-select__input {\n    display: block;\n    margin: 0;\n    padding-right: 1.3125rem;\n    width: 100%;\n    min-height: 2.7rem;\n    font-family: 'AudiTypeVariable', Verdana, Geneva, sans-serif;\n    font-size: inherit;\n    font-weight: 400;\n    line-height: inherit;\n    color: #333333;\n    background: none;\n    border: none;\n    border-bottom: 1px solid #808080;\n    border-radius: 0;\n    box-shadow: none;\n    transition: color, border;\n    transition-duration: 0.25s;\n    transition-timing-function: cubic-bezier(0.75, 0.02, 0.5, 1);\n    -webkit-appearance: none;\n       -moz-appearance: none;\n            appearance: none;\n    outline: 0; }\n    .aui-select__input::-ms-expand {\n      display: none; }\n    .aui-select__input::-ms-value {\n      background: none;\n      color: #333333; }\n    .aui-select__input option {\n      color: #333333;\n      background: white; }\n      .aui-select__input option:disabled {\n        color: #333333; }\n\n@-moz-document url-prefix() {\n  .aui-select .aui-select__input {\n    padding-top: 0.5625em; } }\n  .aui-select__label {\n    display: block;\n    position: absolute;\n    top: 0.5rem;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    width: 100%;\n    color: #333333;\n    font-size: inherit;\n    font-weight: 400;\n    text-align: left;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    transition-property: top, font-size, color, opacity;\n    transition-duration: 0.25s;\n    transition-timing-function: cubic-bezier(0.75, 0.02, 0.5, 1);\n    opacity: 1;\n    pointer-events: none; }\n  .aui-select::after {\n    content: '';\n    display: block;\n    position: absolute;\n    top: 2.105rem;\n    right: 0;\n    width: 13px;\n    height: 8px;\n    background: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='8' viewBox='0 0 13 8'%3E%3Cpolygon fill='%23333333' points='6.511 7.371 0 0.715 0.731 0 6.51 5.907 12.267 0 13 0.714 6.511 7.371'/%3E%3C/svg%3E\") center center no-repeat;\n    transform: translateY(-50%);\n    transition: background .25s linear;\n    pointer-events: none; }\n  .aui-select__focus-line {\n    display: block;\n    position: relative;\n    width: 100%;\n    margin-top: -1px;\n    height: 1px;\n    background: #808080;\n    opacity: 1;\n    transition-property: background;\n    transition-duration: 0.25s; }\n  .aui-select__description {\n    display: block;\n    color: #666666;\n    transition: color 0.25s linear;\n    margin-top: 0.875rem;\n    font-size: 0.8125rem;\n    line-height: 1.25rem; }\n  .aui-select__error {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-align: center;\n        align-items: center;\n    line-height: 1.25rem;\n    margin-top: 0.875rem;\n    font-size: 0.8125rem;\n    color: #eb0d3f; }\n    .aui-select__error::before {\n      content: '';\n      display: inline-block;\n      margin-right: 1rem;\n      width: 40px;\n      height: 24px;\n      background: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M21.5,20.5 L1.5,20.5 L11.5,2.5 L21.5,20.5 Z M11.5,16 L11.5,18 M11.5,8 L11.5,14' stroke='%23eb0d3f' stroke-width='1' fill-rule='evenodd'/%3E%3C/svg%3E\") center center no-repeat; }\n      @media (min-width: 1024px) {\n        .aui-select__error::before {\n          margin-right: 0.5rem;\n          width: 24px;\n          height: 24px; } }\n  .aui-js .aui-select.aui-select--floating-label .aui-select__label {\n    top: 1.28rem; }\n  .aui-select.aui-select--floating-label .aui-select__input {\n    opacity: 0; }\n    .aui-select.aui-select--floating-label .aui-select__input:focus, .aui-select.aui-select--floating-label .aui-select__input:not(:focus) {\n      opacity: 1; }\n  .aui-select.aui-select--floating-label::after {\n    top: 2.105rem; }\n  .aui-select:not(.is-disabled):not(.is-invalid) .aui-select__input:hover {\n    border-color: #000000; }\n  .aui-select.is-focused .aui-select__label {\n    opacity: 0; }\n  .aui-select.is-focused.aui-select--floating-label .aui-select__label {\n    top: 0;\n    font-size: .75rem;\n    opacity: 1; }\n  .aui-select.is-focused .aui-select__input {\n    outline: none;\n    box-shadow: none;\n    border-color: #000000; }\n  .aui-select.is-focused .aui-select__focus-line {\n    opacity: 0; }\n  .aui-select.is-disabled {\n    color: #666666;\n    cursor: not-allowed; }\n    .aui-select.is-disabled .aui-select__input {\n      cursor: not-allowed; }\n    .aui-select.is-disabled .aui-select__focus-line {\n      opacity: 1; }\n  .aui-select.is-dirty::after {\n    background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='8' viewBox='0 0 13 8'%3E%3Cpolygon fill='%23333333' points='6.511 7.371 0 0.715 0.731 0 6.51 5.907 12.267 0 13 0.714 6.511 7.371'/%3E%3C/svg%3E\"); }\n  .aui-select.is-dirty .aui-select__label {\n    opacity: 0; }\n  .aui-select.is-dirty.aui-select--floating-label .aui-select__label {\n    top: 0;\n    font-size: .75rem;\n    opacity: 1; }\n  .aui-select.is-dirty .aui-select__input {\n    border-color: #000000;\n    color: #333333; }\n    .aui-select.is-dirty .aui-select__input::-ms-value {\n      color: #333333; }\n  .aui-select.is-invalid,\n  .aui-select.is-invalid:not(.is-dirty) .aui-select__input,\n  .aui-select.is-invalid .aui-select__label {\n    color: #eb0d3f; }\n  .aui-select.is-invalid::after {\n    background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='8' viewBox='0 0 13 8'%3E%3Cpolygon fill='%23eb0d3f' points='6.511 7.371 0 0.715 0.731 0 6.51 5.907 12.267 0 13 0.714 6.511 7.371'/%3E%3C/svg%3E\"); }\n  .aui-select.is-invalid .aui-select__input {\n    border-color: #eb0d3f; }\n  .aui-select.is-invalid .aui-select__focus-line {\n    background: #eb0d3f; }\n\n/**\n * NOTE\n * The Slider AUI component relies on the 3rd party library\n * noUiSlider by Leon Gersen\n * @see https://refreshless.com/nouislider/\n */\n.aui-slider {\n  position: relative;\n  padding: 0;\n  min-height: 1.5rem;\n  color: #333333;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n      flex-direction: column;\n  /**\n   * Customized noUiSlider Styles\n   */\n  /**\n   * Variants\n   */\n  /**\n   * States\n   */ }\n  .aui-slider__label {\n    -ms-flex-order: -2;\n        order: -2;\n    font-size: 0.75rem;\n    color: #666666;\n    margin-bottom: 1rem; }\n  .aui-slider__rangeOutput {\n    -ms-flex-order: -1;\n        order: -1;\n    position: relative;\n    -ms-flex-item-align: center;\n        -ms-grid-row-align: center;\n        align-self: center;\n    font-size: 14px; }\n  .aui-slider__target,\n  .aui-slider__target * {\n    -webkit-touch-callout: none;\n    -webkit-tap-highlight-color: #000000;\n    -ms-touch-action: none;\n        touch-action: none;\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n    box-sizing: border-box; }\n  .aui-slider__target {\n    position: relative;\n    direction: ltr; }\n  .aui-slider__base {\n    width: 100%;\n    height: 100%;\n    position: relative;\n    z-index: 1; }\n  .aui-slider__connect {\n    position: absolute;\n    right: 0;\n    top: 0;\n    left: 0;\n    bottom: 0; }\n  .aui-slider__origin {\n    position: absolute;\n    height: 0;\n    width: 0; }\n  .aui-slider__handle {\n    position: relative;\n    z-index: 1; }\n  .aui-slider__state-tap .aui-slider__connect,\n  .aui-slider__state-tap .aui-slider__origin {\n    transition: top 0.3s, right 0.3s, bottom 0.3s, left 0.3s; }\n  .aui-slider__state-drag * {\n    cursor: inherit !important; }\n  .aui-slider__base, .aui-slider__handle {\n    transform: translate3d(0, 0, 0); }\n  .aui-slider__horizontal {\n    height: 2px; }\n  .aui-slider__vertical {\n    width: 2px; }\n  .aui-slider__target {\n    margin: 0 0.75rem;\n    height: 1.5rem; }\n    .aui-slider__target::after {\n      content: '';\n      display: block;\n      position: absolute;\n      top: 50%;\n      left: 0;\n      right: 0;\n      height: 2px;\n      margin: 0 -0.75rem;\n      transform: translateY(-50%);\n      background: #cccccc; }\n  .aui-slider__connect::after {\n    content: '';\n    display: block;\n    position: absolute;\n    top: 50%;\n    left: 0;\n    right: 0;\n    height: 2px;\n    transform: translateY(-50%);\n    background: #000000; }\n  .aui-slider.aui-slider--single .aui-slider__connect::after {\n    margin-left: -0.75rem; }\n  .aui-slider__draggable {\n    cursor: ew-resize; }\n  .aui-slider__vertical .aui-slider__draggable {\n    cursor: ns-resize; }\n  .aui-slider__handle {\n    position: relative;\n    width: 1.5rem;\n    height: 1.5rem;\n    background: #ffffff;\n    border-radius: 50%;\n    border: 1px solid #808080;\n    transform: translateX(-50%);\n    transition: border .15s linear;\n    cursor: pointer; }\n  .aui-slider.aui-slider--output .aui-slider__origin::before {\n    position: absolute;\n    top: -35px;\n    transform: translateX(-50%);\n    font-size: 14px;\n    display: block;\n    content: attr(data-before); }\n  .aui-slider:not(.is-disabled) .aui-slider__handle:hover {\n    border-color: #000000; }\n  .aui-slider__handle[disabled],\n  [disabled] .aui-slider__handle,\n  [disabled] .aui-slider__target {\n    cursor: not-allowed; }\n  .aui-slider__pips,\n  .aui-slider__pips * {\n    box-sizing: border-box; }\n  .aui-slider__pips {\n    position: absolute;\n    color: #999; }\n  .aui-slider__value {\n    position: absolute;\n    text-align: center; }\n  .aui-slider__value-sub {\n    color: #ccc;\n    font-size: 10px; }\n  .aui-slider__range {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-pack: justify;\n        justify-content: space-between;\n    font-size: 0.75rem; }\n  .aui-slider__marker {\n    position: absolute;\n    background: #CCC; }\n  .aui-slider__marker-sub {\n    background: #AAA; }\n  .aui-slider__marker-large {\n    background: #AAA; }\n  .aui-slider__pips-horizontal {\n    padding: 10px 0;\n    height: 80px;\n    top: 100%;\n    left: 0;\n    width: 100%; }\n  .aui-slider__value-horizontal {\n    transform: translate3d(-50%, 50%, 0); }\n  .aui-slider__marker-horizontal.aui-slider__marker {\n    margin-left: -1px;\n    width: 2px;\n    height: 5px; }\n  .aui-slider__marker-horizontal.aui-slider__marker-sub {\n    height: 10px; }\n  .aui-slider__marker-horizontal.aui-slider__marker-large {\n    height: 15px; }\n  .aui-slider__pips-vertical {\n    padding: 0 10px;\n    height: 100%;\n    top: 0;\n    left: 100%; }\n  .aui-slider__value-vertical {\n    transform: translate3d(0, 50%, 0);\n    padding-left: 25px; }\n  .aui-slider__marker-vertical.aui-slider__marker {\n    width: 5px;\n    height: 2px;\n    margin-top: -1px; }\n  .aui-slider__marker-vertical.aui-slider__marker-sub {\n    width: 10px; }\n  .aui-slider__marker-vertical.aui-slider__marker-large {\n    width: 15px; }\n  .aui-slider__tooltip {\n    display: block;\n    position: absolute;\n    border: 1px solid #D9D9D9;\n    border-radius: 3px;\n    background: #fff;\n    color: #000;\n    padding: 5px;\n    text-align: center; }\n  .aui-slider__horizontal .aui-slider__tooltip {\n    transform: translate(-50%, 0);\n    left: 50%;\n    bottom: 120%; }\n  .aui-slider__vertical .aui-slider__tooltip {\n    transform: translate(0, -50%);\n    top: 50%;\n    right: 120%; }\n  .aui-slider--output .aui-slider__label {\n    margin-bottom: 2rem; }\n  .aui-slider.is-disabled {\n    cursor: not-allowed; }\n    .aui-slider.is-disabled .aui-slider__connect::after {\n      background-color: #b3b3b3; }\n    .aui-slider.is-disabled .aui-slider__target::after {\n      background-color: #e5e5e5; }\n    .aui-slider.is-disabled .aui-slider__handle,\n    .aui-slider.is-disabled .aui-slider__draggable {\n      cursor: not-allowed; }\n\n.aui-indicator {\n  display: inline-block;\n  position: relative;\n  font-family: serif;\n  margin-left: -4px;\n  line-height: 4px; }\n  .aui-indicator__items {\n    padding-left: 0;\n    list-style: none; }\n    .aui-indicator__items::after {\n      content: '';\n      display: table;\n      clear: both; }\n  .aui-indicator__item {\n    float: left;\n    margin-left: 0.25rem; }\n  .aui-indicator__trigger {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-align: center;\n        align-items: center;\n    width: 40px;\n    height: 40px;\n    padding: 0 4px 0 0; }\n    .aui-indicator__trigger:hover .aui-indicator__dot {\n      background: #666666; }\n  .aui-indicator__dot {\n    pointer-events: none;\n    display: block;\n    width: 32px;\n    height: 2px;\n    overflow: hidden;\n    text-indent: 100%;\n    white-space: nowrap;\n    text-decoration: none;\n    outline: 0;\n    transition: background 0.15s linear; }\n  .aui-indicator__dot, .aui-indicator__dot:visited {\n    background: #cccccc; }\n  .aui-indicator__indicator {\n    display: block;\n    position: absolute;\n    top: calc(50% - 1px);\n    left: 4px;\n    transform: translate(0, -50%);\n    width: 32px;\n    height: 4px;\n    background: #000000;\n    z-index: 1;\n    transition: left 0.3s cubic-bezier(0.75, 0.02, 0.5, 1);\n    pointer-events: none; }\n  .aui-indicator--shadow .aui-indicator__dot {\n    box-shadow: 0 0 8px #666666; }\n\n/**\n * NOTE\n * All animations happen in JS.\n */\n.aui-spinner {\n  display: inline-block;\n  position: relative;\n  width: 5.75rem;\n  height: 5.75rem;\n  stroke: #e5e5e5;\n  font-size: 1rem; }\n  .aui-spinner__svg {\n    overflow: visible !important;\n    width: 100%;\n    height: 100%; }\n  .aui-spinner__path {\n    stroke-miterlimit: 10;\n    stroke-width: 4px;\n    fill: none; }\n  .aui-spinner__path--progress {\n    stroke: #f50537;\n    stroke-width: 4px; }\n  .aui-spinner__value {\n    display: block;\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n    width: 100%;\n    font-family: 'AudiTypeVariable', Verdana, Geneva, sans-serif;\n    font-variation-settings: \"wdth\" 130;\n    font-size: 1rem;\n    line-height: 1;\n    text-align: center; }\n  .aui-spinner--continuous {\n    width: 3rem;\n    height: 3rem; }\n\n.aui-sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0; }\n\n.aui-switch {\n  cursor: pointer;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-align: center;\n      align-items: center;\n  position: relative;\n  font-weight: 400;\n  height: 2em;\n  min-width: 3.63em;\n  cursor: pointer;\n  -webkit-tap-highlight-color: transparent;\n  -webkit-tap-highlight-color: rgba(255, 255, 255, 0);\n  /**\n   * Variant: text-left\n   */\n  /**\n   * Variant: equal\n   */\n  /**\n   * States\n   */ }\n  .aui-switch::after {\n    content: '.';\n    display: inline-block;\n    width: 0;\n    visibility: hidden; }\n  .aui-switch__text {\n    display: inline-block;\n    padding-left: 4.63em;\n    color: #333333;\n    transition: all 250ms cubic-bezier(0.75, 0.02, 0.5, 1); }\n  .aui-switch__track {\n    display: inline-block;\n    position: absolute;\n    left: 0;\n    width: 3.63em;\n    height: 2em;\n    border-radius: 1em;\n    vertical-align: middle;\n    background-color: #d9d9d9;\n    transition: all .15s linear, border .15s linear; }\n  .aui-switch__thumb {\n    display: inline-block;\n    position: absolute;\n    z-index: 10;\n    top: 50%;\n    left: 1em;\n    width: 3.26em;\n    height: 3.26em;\n    border-radius: 50%;\n    transform: translate(-50%, -50%) scale(0.5, 0.5);\n    background: #ffffff;\n    transition: transform 0.15s cubic-bezier(0.75, 0.02, 0.5, 1), left 0.3s cubic-bezier(0.75, 0.02, 0.5, 1), background 0.3s cubic-bezier(0.75, 0.02, 0.5, 1); }\n  .aui-switch__indicator {\n    position: absolute;\n    top: 50%;\n    transform: translateY(-50%); }\n    .aui-switch__indicator--on {\n      width: 1px;\n      height: 8px;\n      background-color: #ffffff;\n      transition: transform 0.15s cubic-bezier(0.75, 0.02, 0.5, 1), opacity 0.15s cubic-bezier(0.75, 0.02, 0.5, 1); }\n    .aui-switch__indicator--off {\n      width: 6px;\n      height: 6px;\n      border-radius: 50%;\n      border: 1px solid #808080;\n      right: 0.75em;\n      transition: transform 0.15s cubic-bezier(0.75, 0.02, 0.5, 1), opacity 0.15s cubic-bezier(0.75, 0.02, 0.5, 1); }\n  .aui-switch--text-left .aui-switch__text {\n    padding-left: 0;\n    padding-right: 4.63em; }\n  .aui-switch--text-left .aui-switch__track {\n    left: auto;\n    right: 0; }\n  .aui-switch--equal {\n    display: -ms-inline-flexbox;\n    display: inline-flex; }\n    .aui-switch--equal .aui-switch__text {\n      padding-left: 0;\n      padding-right: 0;\n      -ms-flex: 1 1 auto;\n          flex: 1 1 auto;\n      -ms-flex-order: 1;\n          order: 1; }\n    .aui-switch--equal .aui-switch__text--left {\n      margin-right: 1em; }\n    .aui-switch--equal .aui-switch__text--right {\n      -ms-flex-order: 3;\n          order: 3;\n      color: #666666;\n      margin-left: 1em; }\n    .aui-switch--equal .aui-switch__track {\n      position: relative;\n      left: auto;\n      -ms-flex: 0 0 3.63em;\n          flex: 0 0 3.63em;\n      -ms-flex-order: 2;\n          order: 2; }\n    .aui-switch--equal .aui-switch__thumb {\n      background: #ffffff;\n      transform: translate(-50%, -50%) scale(0.5, 0.5); }\n  .aui-switch:hover:not(.is-disabled) .aui-switch__text {\n    color: #000000; }\n  .aui-switch:hover:not(.is-disabled) .aui-switch__track {\n    border-color: #000000; }\n    .aui-switch:hover:not(.is-disabled) .aui-switch__track .aui-switch__thumb {\n      transform: translate(-50%, -50%) scale(0.4, 0.4); }\n  .aui-switch--equal:hover:not(.is-disabled) .aui-switch__text--right {\n    color: #666666; }\n  .aui-switch--equal:hover:not(.is-disabled) .aui-switch__input:checked ~ .aui-switch__text--left {\n    color: #666666; }\n  .aui-switch--equal:hover:not(.is-disabled) .aui-switch__input:checked ~ .aui-switch__text--right {\n    color: #000000; }\n  .aui-switch.is-disabled {\n    opacity: 0.3;\n    cursor: not-allowed; }\n  .aui-switch__input:checked ~ .aui-switch__track {\n    background: #009900; }\n  .aui-switch__input:checked ~ .aui-switch__track .aui-switch__indicator--on {\n    opacity: 1;\n    transform: translate(1.05em, -50%); }\n  .aui-switch__input:checked ~ .aui-switch__track .aui-switch__indicator--off {\n    transform: translate(-0.7em, -50%);\n    opacity: 0; }\n  .aui-switch__input:not(:checked) ~ .aui-switch__track .aui-switch__indicator--on {\n    opacity: 0;\n    transform: translate(1.75em, -50%); }\n  .aui-switch__input:not(:checked) ~ .aui-switch__track .aui-switch__indicator--off {\n    opacity: 1;\n    transform: translate(0, -50%); }\n  .aui-switch__input:checked ~ .aui-switch__track .aui-switch__thumb {\n    background: #ffffff;\n    transform: translate(-50%, -50%) scale(0.5, 0.5);\n    left: 2.65em; }\n  .aui-switch--equal .aui-switch__input:checked ~ .aui-switch__text--left {\n    color: #666666; }\n  .aui-switch--equal .aui-switch__input:checked ~ .aui-switch__text--right {\n    color: #333333; }\n\n.aui-table {\n  width: calc(100% + 1rem);\n  margin-left: -0.5rem;\n  overflow: auto;\n  overflow-y: hidden; }\n  .aui-table table {\n    border-collapse: separate;\n    border-spacing: 0.5rem;\n    border-color: #000000; }\n  .aui-table caption {\n    font-weight: 700;\n    text-align: left;\n    padding: 1rem 0.5rem; }\n  .aui-table tr {\n    vertical-align: top; }\n  .aui-table th {\n    border-top: 3px solid #000000;\n    font-weight: 700;\n    text-align: left; }\n  .aui-table th,\n  .aui-table td {\n    padding: 1rem 0.75rem 0.5rem 0; }\n  .aui-table td {\n    border-top: 1px solid #000000; }\n  .aui-table__cell--colored {\n    background-color: #d9d9d9; }\n  .aui-table__cell--last-row td {\n    position: relative; }\n    .aui-table__cell--last-row td::after {\n      content: '';\n      display: block;\n      position: absolute;\n      bottom: -0.5rem;\n      left: 0;\n      right: 0;\n      border-bottom: 1px solid #000000; }\n  .aui-table--stretched table {\n    width: 100%; }\n  .aui-table--padded th,\n  .aui-table--padded td {\n    padding: 1rem 0.75rem; }\n  .aui-table--responsive thead,\n  .aui-table--responsive tfoot {\n    display: none; }\n  .aui-table--responsive tr {\n    border-top: 3px solid #000000;\n    padding-bottom: 2rem; }\n  .aui-table--responsive tr,\n  .aui-table--responsive td {\n    float: left;\n    width: 100%; }\n  .aui-table--responsive td {\n    padding-bottom: 1rem; }\n    .aui-table--responsive td:before {\n      content: attr(data-label);\n      float: left;\n      font-weight: 700;\n      -webkit-hyphens: auto;\n          -ms-hyphens: auto;\n              hyphens: auto;\n      padding-right: 0.75rem;\n      width: 50%;\n      word-break: break-word; }\n  .aui-table--responsive .aui-table__cell--last-row-responsive {\n    border-bottom: 3px solid #000000; }\n  @media (min-width: 1024px) {\n    .aui-table--responsive td {\n      padding-bottom: 0.5rem; }\n      .aui-table--responsive td:before {\n        content: none; }\n    .aui-table--responsive thead,\n    .aui-table--responsive tr,\n    .aui-table--responsive td,\n    .aui-table--responsive tfoot {\n      float: none;\n      width: auto; }\n    .aui-table--responsive th,\n    .aui-table--responsive td {\n      display: table-cell; }\n    .aui-table--responsive thead {\n      display: table-header-group; }\n    .aui-table--responsive tr {\n      display: table-row; }\n    .aui-table--responsive tfoot {\n      display: table-footer-group; }\n    .aui-table--responsive .aui-table__cell--last-row-responsive td {\n      border-bottom: 1px solid #000000;\n      padding-bottom: 1rem; } }\n\n.aui-textfield {\n  display: block;\n  position: relative;\n  margin: 0;\n  padding: 0.6875rem 0 0;\n  font-size: 1rem;\n  line-height: 1.5;\n  stroke: #333333;\n  /**\n   * Variant: floating-label\n   */\n  /**\n   * Variant: multiline\n   */\n  /**\n   * Variant: icon\n   */\n  /**\n   * States\n   */ }\n  .aui-textfield__input {\n    display: block;\n    margin: 0;\n    padding: 0.5em 0;\n    width: 100%;\n    min-height: 2.7rem;\n    font-family: 'AudiTypeVariable', Verdana, Geneva, sans-serif;\n    font-size: inherit;\n    font-weight: 400;\n    line-height: inherit;\n    text-align: left;\n    color: #333333;\n    background: none;\n    border: none;\n    transition: color 0.25s cubic-bezier(0.75, 0.02, 0.5, 1);\n    resize: none;\n    outline: 0;\n    border-radius: 0; }\n  .aui-textfield__field {\n    position: relative;\n    border-bottom: 1px solid #808080;\n    transition-property: border, padding;\n    transition-duration: 0.25s;\n    transition-timing-function: cubic-bezier(0.75, 0.02, 0.5, 1); }\n  .aui-textfield__label {\n    display: block;\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    color: #333333;\n    font-size: 0.75rem;\n    font-weight: 400;\n    text-align: left;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    pointer-events: none;\n    transition-property: top, font-size, color, opacity;\n    transition-duration: 0.25s;\n    transition-timing-function: cubic-bezier(0.75, 0.02, 0.5, 1);\n    pointer-events: none; }\n    .aui-textfield__label-optional {\n      font-size: 0.8125rem;\n      padding-left: 4px;\n      color: #666666; }\n  .aui-textfield__focus-line {\n    display: block;\n    position: relative;\n    width: 100%;\n    margin-top: -2px;\n    height: 1px;\n    background: #808080;\n    opacity: 0;\n    transition-property: opacity, background;\n    transition-duration: 0.25s; }\n  .aui-textfield__counter, .aui-textfield__description, .aui-textfield__error, .aui-textfield__valid {\n    display: block;\n    color: #666666;\n    transition: color 0.25s linear;\n    margin-top: 0.5rem;\n    font-size: 0.8125rem;\n    line-height: 1.25rem; }\n  .aui-textfield__counter {\n    position: relative;\n    height: 1.25rem; }\n  .aui-textfield__counter-value {\n    display: block;\n    position: absolute;\n    top: 0;\n    right: 0; }\n  .aui-textfield__counter ~ .aui-textfield__description,\n  .aui-textfield__counter ~ .aui-textfield__error {\n    margin-top: -1.25rem;\n    padding-right: 4em; }\n  .aui-textfield__valid {\n    position: relative; }\n    .aui-textfield__valid::before {\n      content: '';\n      display: inline-block;\n      margin-right: 1rem;\n      width: 12px;\n      height: 12px;\n      background: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpolygon fill='%23000000' points='4.945 12 0 7.699 0.667 6.92 4.708 10.435 11.132 0 12 0.543 4.945 12' /%3E%3C/svg%3E\") center center no-repeat; }\n      @media (min-width: 1024px) {\n        .aui-textfield__valid::before {\n          margin-right: 0.5rem; } }\n  .aui-textfield__error {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-align: center;\n        align-items: center;\n    font-size: 0.8125rem;\n    color: #eb0d3f; }\n    .aui-textfield__error::before {\n      content: '';\n      display: inline-block;\n      margin-right: 1rem;\n      width: 24px;\n      min-width: 24px;\n      height: 24px;\n      background: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M21.5,20.5 L1.5,20.5 L11.5,2.5 L21.5,20.5 Z M11.5,16 L11.5,18 M11.5,8 L11.5,14' stroke='%23eb0d3f' stroke-width='1' fill-rule='evenodd'/%3E%3C/svg%3E\") center center no-repeat; }\n      @media (min-width: 1024px) {\n        .aui-textfield__error::before {\n          margin-right: 0.5rem; } }\n  .aui-textfield .audiicon {\n    position: absolute;\n    top: 1.35rem;\n    left: 0;\n    transform: translateY(-50%); }\n  .aui-js .aui-textfield {\n    padding-top: 0; }\n    .aui-js .aui-textfield .aui-textfield__label {\n      top: 0.5rem;\n      font-size: inherit; }\n  .aui-textfield.aui-textfield--floating-label .aui-textfield__field {\n    padding-top: 0.6875rem; }\n  .aui-js .aui-textfield.aui-textfield--floating-label .aui-textfield__label {\n    top: 1.1875rem;\n    font-size: inherit; }\n  .aui-textfield.aui-textfield--multiline {\n    transition-property: padding;\n    transition-duration: 0.25s;\n    transition-timing-function: cubic-bezier(0.75, 0.02, 0.5, 1); }\n  .aui-textfield.aui-textfield--multiline .aui-textfield__field {\n    padding-top: 1.25em;\n    border: 1px solid #808080; }\n  .aui-textfield.aui-textfield--multiline .aui-textfield__label {\n    top: 10px;\n    left: 10px; }\n  .aui-textfield.aui-textfield--multiline .aui-textfield__input {\n    padding-left: 0.625em;\n    padding-right: 0.625em; }\n  .aui-js .aui-textfield.aui-textfield--multiline {\n    padding-top: 0.8125em; }\n  .aui-js .aui-textfield.aui-textfield--multiline .aui-textfield__field {\n    padding-top: 0.4375em; }\n  .aui-js .aui-textfield.aui-textfield--multiline .aui-textfield__label {\n    top: 7px; }\n  .aui-textfield--icon .aui-textfield__input,\n  .aui-textfield--icon .aui-textfield__label {\n    padding-left: 3rem; }\n    @media (min-width: 1024px) {\n      .aui-textfield--icon .aui-textfield__input,\n      .aui-textfield--icon .aui-textfield__label {\n        padding-left: 2rem; } }\n  .aui-textfield:not(.is-disabled):not(.is-invalid) .aui-textfield__field:hover {\n    border-bottom-color: #808080; }\n  .aui-textfield.is-focused .aui-textfield__label {\n    opacity: 0; }\n  .aui-textfield.is-focused.aui-textfield--floating-label .aui-textfield__label {\n    top: 0;\n    font-size: 0.75rem;\n    opacity: 1; }\n  .aui-textfield.is-focused.aui-textfield--multiline {\n    padding-top: 0; }\n  .aui-textfield.is-focused.aui-textfield--multiline .aui-textfield__field {\n    padding-top: 1.25em; }\n  .aui-textfield.is-focused.aui-textfield--multiline .aui-textfield__label {\n    top: 0.625em;\n    font-size: 0.75rem;\n    opacity: 1; }\n  .aui-textfield.is-focused .aui-textfield__field {\n    border-bottom-color: #000000; }\n  .aui-textfield.is-focused .aui-textfield__input {\n    outline: none;\n    box-shadow: none; }\n  .aui-textfield.is-focused .aui-textfield__focus-line {\n    opacity: 1; }\n  .aui-textfield.is-disabled {\n    color: #666666;\n    cursor: not-allowed; }\n    .aui-textfield.is-disabled .aui-textfield__input {\n      cursor: not-allowed;\n      border-color: #b3b3b3; }\n    .aui-textfield.is-disabled .aui-textfield__label {\n      color: #666666; }\n    .aui-textfield.is-disabled .aui-textfield__focus-line {\n      opacity: 0; }\n  .aui-textfield.is-dirty .aui-textfield__label {\n    opacity: 0; }\n  .aui-textfield.is-dirty.aui-textfield--floating-label .aui-textfield__label {\n    top: 0;\n    font-size: 0.75rem;\n    opacity: 1; }\n  .aui-textfield.is-dirty.aui-textfield--multiline {\n    padding-top: 0; }\n  .aui-textfield.is-dirty.aui-textfield--multiline .aui-textfield__field {\n    padding-top: 1.25em; }\n  .aui-textfield.is-dirty.aui-textfield--multiline .aui-textfield__label {\n    top: 0.625em;\n    font-size: 0.75rem;\n    opacity: 1; }\n  .aui-textfield.is-dirty .aui-textfield__field {\n    border-bottom-color: #000000; }\n  .aui-textfield.is-dirty .aui-textfield__input {\n    color: #333333; }\n  .aui-textfield.is-invalid,\n  .aui-textfield.is-invalid:not(.is-dirty) .aui-textfield__input,\n  .aui-textfield.is-invalid .aui-textfield__counter,\n  .aui-textfield.is-invalid .aui-textfield__label {\n    color: #eb0d3f; }\n  .aui-textfield.is-invalid .aui-textfield__field {\n    border-color: #eb0d3f; }\n  .aui-textfield.is-invalid .aui-textfield__focus-line {\n    background: #eb0d3f; }\n\n.aui-tooltip {\n  pointer-events: none;\n  display: block;\n  position: fixed;\n  top: -1000px;\n  left: -1000px;\n  max-width: 288px;\n  font-size: .875rem;\n  line-height: 1.25rem;\n  color: #333333;\n  background: #ffffff;\n  box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.05), 0 0 50px 0 rgba(0, 0, 0, 0.07);\n  opacity: 0;\n  visibility: hidden;\n  transition-property: opacity, visibility;\n  transition-duration: 0.15s;\n  transition-timing-function: linear;\n  /**\n   * Variant: Dark\n   */\n  /**\n   * States\n   */ }\n  .aui-tooltip__triangle {\n    display: block;\n    position: absolute;\n    top: 0;\n    left: 50%;\n    background: inherit; }\n    .aui-tooltip__triangle::after {\n      content: '';\n      display: block;\n      position: absolute;\n      left: -8px;\n      top: -8px;\n      width: 16px;\n      height: 16px;\n      transform: rotate(45deg);\n      transform-origin: center;\n      background: inherit; }\n  .aui-tooltip__text {\n    display: inline-block;\n    padding: 0.75rem 1.25rem; }\n  .aui-tooltip__media {\n    position: relative;\n    z-index: 1;\n    display: block;\n    width: 100%;\n    height: auto; }\n  .aui-tooltip--dark {\n    color: #ffffff;\n    background: #4c4c4c; }\n  .aui-tooltip.is-active {\n    opacity: 1;\n    visibility: visible;\n    transition-duration: 0.25s;\n    z-index: 1002; }\n  .aui-tooltip.is-top .aui-tooltip__triangle {\n    top: auto;\n    bottom: 0; }\n\nhtml {\n  font-size: 16px;\n  line-height: 28px; }\n  @media (min-width: 375px) {\n    html {\n      font-size: 16px;\n      line-height: 28px; } }\n  @media (min-width: 1024px) {\n    html {\n      font-size: 18px;\n      line-height: 32px; } }\n  @media (min-width: 1920px) {\n    html {\n      font-size: 20px;\n      line-height: 36px; } }\n\nbody {\n  font-family: 'AudiTypeVariable', Verdana, Geneva, sans-serif;\n  font-weight: 300;\n  color: #333333; }\n\n.aui-headline-1, .aui-headline-2, .aui-headline-3, .aui-headline-4, .aui-headline-5 {\n  font-family: 'AudiTypeVariable', Verdana, Geneva, sans-serif;\n  font-variation-settings: \"wdth\" 130;\n  font-weight: 400;\n  letter-spacing: -0.015em; }\n  .aui-headline-1--bold, .aui-headline-2--bold, .aui-headline-3--bold, .aui-headline-4--bold, .aui-headline-5--bold {\n    font-weight: 700; }\n\n.aui-headline-6 {\n  font-family: 'AudiTypeVariable', Verdana, Geneva, sans-serif; }\n\n.aui-headline-1 {\n  font-size: 46px;\n  line-height: 52px;\n  font-weight: 700;\n  color: #000000; }\n  @media (min-width: 375px) {\n    .aui-headline-1 {\n      font-size: 56px;\n      line-height: 60px; } }\n  @media (min-width: 1024px) {\n    .aui-headline-1 {\n      font-size: 83px;\n      line-height: 92px; } }\n  @media (min-width: 1920px) {\n    .aui-headline-1 {\n      font-size: 119px;\n      line-height: 132px; } }\n  .aui-headline-1--normal {\n    font-weight: 400; }\n\n.aui-color-text-light .aui-headline-1 {\n  color: #ffffff; }\n\n.aui-headline-2 {\n  font-size: 31px;\n  line-height: 36px; }\n  @media (min-width: 375px) {\n    .aui-headline-2 {\n      font-size: 35px;\n      line-height: 44px; } }\n  @media (min-width: 1024px) {\n    .aui-headline-2 {\n      font-size: 47px;\n      line-height: 56px; } }\n  @media (min-width: 1920px) {\n    .aui-headline-2 {\n      font-size: 61px;\n      line-height: 72px; } }\n\n.aui-headline-3 {\n  font-size: 21px;\n  line-height: 24px; }\n  @media (min-width: 375px) {\n    .aui-headline-3 {\n      font-size: 22px;\n      line-height: 28px; } }\n  @media (min-width: 1024px) {\n    .aui-headline-3 {\n      font-size: 26px;\n      line-height: 32px; } }\n  @media (min-width: 1920px) {\n    .aui-headline-3 {\n      font-size: 31px;\n      line-height: 36px; } }\n\n.aui-headline-4 {\n  font-size: 18px;\n  line-height: 20px; }\n  @media (min-width: 375px) {\n    .aui-headline-4 {\n      font-size: 19px;\n      line-height: 24px; } }\n  @media (min-width: 1024px) {\n    .aui-headline-4 {\n      font-size: 22px;\n      line-height: 28px; } }\n  @media (min-width: 1920px) {\n    .aui-headline-4 {\n      font-size: 25px;\n      line-height: 32px; } }\n\n.aui-headline-5 {\n  font-size: 16px;\n  line-height: 20px; }\n  @media (min-width: 375px) {\n    .aui-headline-5 {\n      font-size: 16px;\n      line-height: 20px; } }\n  @media (min-width: 1024px) {\n    .aui-headline-5 {\n      font-size: 18px;\n      line-height: 24px; } }\n  @media (min-width: 1920px) {\n    .aui-headline-5 {\n      font-size: 20px;\n      line-height: 28px; } }\n\n.aui-headline-6 {\n  font-size: 16px;\n  line-height: 24px;\n  font-weight: 700; }\n  @media (min-width: 375px) {\n    .aui-headline-6 {\n      font-size: 16px;\n      line-height: 24px; } }\n  @media (min-width: 1024px) {\n    .aui-headline-6 {\n      font-size: 18px;\n      line-height: 28px; } }\n  @media (min-width: 1920px) {\n    .aui-headline-6 {\n      font-size: 20px;\n      line-height: 32px; } }\n  .aui-headline-6--normal {\n    font-weight: 400; }\n\n.aui-shortread {\n  font-size: 16px;\n  line-height: 24px; }\n  @media (min-width: 375px) {\n    .aui-shortread {\n      font-size: 16px;\n      line-height: 24px; } }\n  @media (min-width: 1024px) {\n    .aui-shortread {\n      font-size: 18px;\n      line-height: 28px; } }\n  @media (min-width: 1920px) {\n    .aui-shortread {\n      font-size: 20px;\n      line-height: 32px; } }\n\n.aui-color-text-light .aui-accentuated::before {\n  border-top-color: #ffffff; }\n\n.aui-caption {\n  font-size: 14px;\n  line-height: 20px; }\n  @media (min-width: 375px) {\n    .aui-caption {\n      font-size: 14px;\n      line-height: 20px; } }\n  @media (min-width: 1024px) {\n    .aui-caption {\n      font-size: 15px;\n      line-height: 24px; } }\n  @media (min-width: 1920px) {\n    .aui-caption {\n      font-size: 16px;\n      line-height: 24px; } }\n\n.aui-big {\n  font-size: 18px;\n  line-height: 32px; }\n  @media (min-width: 375px) {\n    .aui-big {\n      font-size: 19px;\n      line-height: 32px; } }\n  @media (min-width: 1024px) {\n    .aui-big {\n      font-size: 22px;\n      line-height: 40px; } }\n  @media (min-width: 1920px) {\n    .aui-big {\n      font-size: 25px;\n      line-height: 44px; } }\n\n.aui-small {\n  font-size: 12px;\n  line-height: 20px; }\n  @media (min-width: 375px) {\n    .aui-small {\n      font-size: 12px;\n      line-height: 20px; } }\n  @media (min-width: 1024px) {\n    .aui-small {\n      font-size: 12px;\n      line-height: 20px; } }\n  @media (min-width: 1920px) {\n    .aui-small {\n      font-size: 13px;\n      line-height: 20px; } }\n\n.aui-blockquote {\n  margin: 0;\n  font-weight: normal;\n  font-size: 18px;\n  line-height: 28px; }\n  @media (min-width: 375px) {\n    .aui-blockquote {\n      font-size: 19px;\n      line-height: 28px; } }\n  @media (min-width: 1024px) {\n    .aui-blockquote {\n      font-size: 22px;\n      line-height: 32px; } }\n  @media (min-width: 1920px) {\n    .aui-blockquote {\n      font-size: 25px;\n      line-height: 36px; } }\n\n.aui-textlink {\n  padding-bottom: 0.06125em;\n  border-bottom: 1px solid #808080;\n  color: inherit;\n  font-weight: 400;\n  transition: color 0.3s linear, border 0.3s linear; }\n  .aui-textlink:hover {\n    color: #000000;\n    border-bottom-color: #000000; }\n  .aui-textlink:focus {\n    outline: none; }\n\n.aui-color-text-light .aui-textlink {\n  border-bottom-color: rgba(255, 255, 255, 0.3); }\n  .aui-color-text-light .aui-textlink:hover {\n    color: #ffffff;\n    border-bottom-color: #ffffff; }\n\n.aui-visible {\n  display: block !important; }\n  .aui-visible-inline {\n    display: inline !important; }\n  .aui-visible-inline-block {\n    display: inline-block !important; }\n\n.aui-hidden {\n  display: none !important; }\n\n.aui-visible-tiny,\n.aui-visible-tiny-inline,\n.aui-visible-tiny-inline-block {\n  display: none !important; }\n\n.aui-visible-tiny {\n  display: block !important; }\n\n.aui-visible-tiny-inline {\n  display: inline !important; }\n\n.aui-visible-tiny-inline-block {\n  display: inline-block !important; }\n\n.aui-hidden-tiny {\n  display: none !important; }\n\n.aui-visible-xsmall,\n.aui-visible-xsmall-inline,\n.aui-visible-xsmall-inline-block {\n  display: none !important; }\n\n@media (min-width: 0px) {\n  .aui-visible-xsmall {\n    display: block !important; }\n  .aui-visible-xsmall-inline {\n    display: inline !important; }\n  .aui-visible-xsmall-inline-block {\n    display: inline-block !important; }\n  .aui-hidden-xsmall {\n    display: none !important; } }\n\n.aui-visible-small,\n.aui-visible-small-inline,\n.aui-visible-small-inline-block {\n  display: none !important; }\n\n@media (min-width: 375px) {\n  .aui-visible-small {\n    display: block !important; }\n  .aui-visible-small-inline {\n    display: inline !important; }\n  .aui-visible-small-inline-block {\n    display: inline-block !important; }\n  .aui-hidden-small {\n    display: none !important; } }\n\n.aui-visible-medium,\n.aui-visible-medium-inline,\n.aui-visible-medium-inline-block {\n  display: none !important; }\n\n@media (min-width: 768px) {\n  .aui-visible-medium {\n    display: block !important; }\n  .aui-visible-medium-inline {\n    display: inline !important; }\n  .aui-visible-medium-inline-block {\n    display: inline-block !important; }\n  .aui-hidden-medium {\n    display: none !important; } }\n\n.aui-visible-large,\n.aui-visible-large-inline,\n.aui-visible-large-inline-block {\n  display: none !important; }\n\n@media (min-width: 1024px) {\n  .aui-visible-large {\n    display: block !important; }\n  .aui-visible-large-inline {\n    display: inline !important; }\n  .aui-visible-large-inline-block {\n    display: inline-block !important; }\n  .aui-hidden-large {\n    display: none !important; } }\n\n.aui-visible-xlarge,\n.aui-visible-xlarge-inline,\n.aui-visible-xlarge-inline-block {\n  display: none !important; }\n\n@media (min-width: 1440px) {\n  .aui-visible-xlarge {\n    display: block !important; }\n  .aui-visible-xlarge-inline {\n    display: inline !important; }\n  .aui-visible-xlarge-inline-block {\n    display: inline-block !important; }\n  .aui-hidden-xlarge {\n    display: none !important; } }\n\n.aui-visible-huge,\n.aui-visible-huge-inline,\n.aui-visible-huge-inline-block {\n  display: none !important; }\n\n@media (min-width: 1920px) {\n  .aui-visible-huge {\n    display: block !important; }\n  .aui-visible-huge-inline {\n    display: inline !important; }\n  .aui-visible-huge-inline-block {\n    display: inline-block !important; }\n  .aui-hidden-huge {\n    display: none !important; } }\n\n.aui-audioplayer.aui-theme-light {\n  color: #ffffff; }\n  .aui-audioplayer.aui-theme-light .aui-button {\n    fill: #ffffff;\n    color: #ffffff; }\n  .aui-audioplayer.aui-theme-light .aui-audioplayer__playhead {\n    background-color: #333333; }\n  .aui-audioplayer.aui-theme-light .aui-audioplayer__progress--loading {\n    background-color: #808080; }\n  .aui-audioplayer.aui-theme-light .aui-audioplayer__progress--progress {\n    background-color: #ffffff; }\n  .aui-audioplayer.aui-theme-light .aui-audioplayer__progress-holder {\n    background-color: #4c4c4c; }\n  .aui-audioplayer.aui-theme-light .aui-audioplayer__cover {\n    background-color: #000000; }\n\n.aui-breadcrumb.aui-theme-black.is-oversized::after {\n  background: linear-gradient(to right, #000000 5%, transparent 100%); }\n\n.aui-breadcrumb.aui-theme-silver.is-oversized::after {\n  background: linear-gradient(to right, #b2b2b2 5%, rgba(178, 178, 178, 0) 100%); }\n\n.aui-breadcrumb.aui-theme-warmsilver.is-oversized::after {\n  background: linear-gradient(to right, #b6b1a9 5%, rgba(182, 177, 169, 0) 100%); }\n\n.aui-breadcrumb.aui-theme-red.is-oversized::after {\n  background: linear-gradient(to right, #bb0a30 5%, rgba(187, 10, 48, 0) 100%); }\n\n.aui-breadcrumb.aui-theme-black, .aui-breadcrumb.aui-theme-silver, .aui-breadcrumb.aui-theme-warmsilver, .aui-breadcrumb.aui-theme-red {\n  color: rgba(255, 255, 255, 0.6); }\n  .aui-breadcrumb.aui-theme-black .aui-breadcrumb__item:last-child, .aui-breadcrumb.aui-theme-silver .aui-breadcrumb__item:last-child, .aui-breadcrumb.aui-theme-warmsilver .aui-breadcrumb__item:last-child, .aui-breadcrumb.aui-theme-red .aui-breadcrumb__item:last-child {\n    color: #ffffff; }\n  .aui-breadcrumb.aui-theme-black .aui-breadcrumb__item + .aui-breadcrumb__item::before, .aui-breadcrumb.aui-theme-silver .aui-breadcrumb__item + .aui-breadcrumb__item::before, .aui-breadcrumb.aui-theme-warmsilver .aui-breadcrumb__item + .aui-breadcrumb__item::before, .aui-breadcrumb.aui-theme-red .aui-breadcrumb__item + .aui-breadcrumb__item::before {\n    background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='1px' fill='none' d='M0.5,0.5l3.24,3.252l-3.237,3.247' /%3E%3C/svg%3E\"); }\n  .aui-breadcrumb.aui-theme-black .aui-breadcrumb__action:hover, .aui-breadcrumb.aui-theme-silver .aui-breadcrumb__action:hover, .aui-breadcrumb.aui-theme-warmsilver .aui-breadcrumb__action:hover, .aui-breadcrumb.aui-theme-red .aui-breadcrumb__action:hover {\n    color: rgba(255, 255, 255, 0.6); }\n  .aui-breadcrumb.aui-theme-black .aui-breadcrumb__action:hover, .aui-breadcrumb.aui-theme-silver .aui-breadcrumb__action:hover, .aui-breadcrumb.aui-theme-warmsilver .aui-breadcrumb__action:hover, .aui-breadcrumb.aui-theme-red .aui-breadcrumb__action:hover {\n    color: #fff; }\n\n.aui-button.aui-theme-light.is-active, .aui-button.aui-theme-light:active, .aui-button.aui-theme-light:hover {\n  color: #e5e5e5;\n  stroke: #e5e5e5;\n  fill: #e5e5e5; }\n\n.aui-button.aui-theme-light, .aui-button.aui-theme-light.is-disabled, .aui-button.aui-theme-light:disabled {\n  color: #ffffff;\n  stroke: #ffffff;\n  fill: #ffffff; }\n\n.aui-button.aui-theme-light.is-disabled, .aui-button.aui-theme-light:disabled {\n  opacity: .30; }\n\n.aui-button--icon.aui-theme-light:focus, .aui-button--primary.aui-theme-light:focus, .aui-button--secondary.aui-theme-light:focus {\n  box-shadow: 0 0 3px 3px rgba(255, 255, 255, 0.2); }\n\n.aui-button--icon.aui-theme-light.is-disabled, .aui-button--icon.aui-theme-light:disabled, .aui-button--icon.aui-theme-light:hover, .aui-button--primary.aui-theme-light.is-disabled, .aui-button--primary.aui-theme-light:disabled, .aui-button--primary.aui-theme-light:hover, .aui-button--secondary.aui-theme-light.is-disabled, .aui-button--secondary.aui-theme-light:disabled, .aui-button--secondary.aui-theme-light:hover {\n  box-shadow: none; }\n\n.aui-button--primary.aui-theme-light, .aui-button--primary.aui-theme-light.is-active, .aui-button--primary.aui-theme-light:active, .aui-button--primary.aui-theme-light:hover, .aui-button--floating.aui-theme-light, .aui-button--floating.aui-theme-light.is-active, .aui-button--floating.aui-theme-light:active, .aui-button--floating.aui-theme-light:hover {\n  color: #000000;\n  stroke: #000000;\n  fill: #000000; }\n\n.aui-button--primary.aui-theme-light.is-disabled, .aui-button--primary.aui-theme-light:disabled, .aui-button--floating.aui-theme-light.is-disabled, .aui-button--floating.aui-theme-light:disabled {\n  color: #666666;\n  stroke: #666666;\n  fill: #666666; }\n\n.aui-button--primary.aui-theme-light.is-active, .aui-button--primary.aui-theme-light:active, .aui-button--primary.aui-theme-light:hover, .aui-button--floating.aui-theme-light.is-active, .aui-button--floating.aui-theme-light:active, .aui-button--floating.aui-theme-light:hover {\n  border-color: #e5e5e5;\n  background-color: #e5e5e5; }\n\n.aui-button--primary.aui-theme-light, .aui-button--primary.aui-theme-light.is-disabled, .aui-button--primary.aui-theme-light:disabled, .aui-button--floating.aui-theme-light, .aui-button--floating.aui-theme-light.is-disabled, .aui-button--floating.aui-theme-light:disabled {\n  border-color: #ffffff;\n  background-color: #ffffff; }\n\n.aui-button--secondary.aui-theme-light.is-active, .aui-button--secondary.aui-theme-light:active, .aui-button--secondary.aui-theme-light:hover {\n  border-color: #cccccc; }\n\n.aui-button--secondary.aui-theme-light, .aui-button--secondary.aui-theme-light.is-disabled, .aui-button--secondary.aui-theme-light:disabled {\n  border-color: #ffffff; }\n\n.aui-button--text.aui-theme-light .aui-button__text::after {\n  background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='13' viewBox='0 0 8 13'%3E%3Cpath stroke='%23ffffff' stroke-width='1px' fill='none' d='M1.5,1l5.485,5.504l-5.48,5.496' /%3E%3C/svg%3E\"); }\n\n.aui-button--text.aui-theme-light .aui-button__text:hover::after {\n  background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='13' viewBox='0 0 8 13'%3E%3Cpath stroke='%23e5e5e5' stroke-width='1px' fill='none' d='M1.5,1l5.485,5.504l-5.48,5.496' /%3E%3C/svg%3E\"); }\n\n.aui-button--floating.aui-theme-light, .aui-button--floating.aui-theme-light:focus, .aui-button--floating.aui-theme-light:hover {\n  box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.1), 0 0 40px 0 rgba(0, 0, 0, 0.15); }\n\n.aui-button--fixed.aui-theme-light {\n  box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.1), 0 0 40px 0 rgba(0, 0, 0, 0.15); }\n\n.aui-checkbox {\n  /**\n   * Theme: light\n   */ }\n  .aui-checkbox.aui-theme-light {\n    color: #f2f2f2;\n    /**\n    * States\n    */ }\n    .aui-checkbox.aui-theme-light .aui-checkbox__box {\n      border-color: #808080; }\n    .aui-checkbox.aui-theme-light .aui-checkbox__tick {\n      background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpolygon fill='%23f2f2f2' points='4.945 12 0 7.699 0.667 6.92 4.708 10.435 11.132 0 12 0.543 4.945 12' /%3E%3C/svg%3E\"); }\n    .aui-checkbox.aui-theme-light:hover:not(.is-disabled) {\n      color: #ffffff; }\n      .aui-checkbox.aui-theme-light:hover:not(.is-disabled) .aui-checkbox__box {\n        border-color: #ffffff; }\n    .aui-checkbox.aui-theme-light .aui-checkbox__input:focus ~ .aui-checkbox__box {\n      box-shadow: 0 0 3px 3px rgba(255, 255, 255, 0.2); }\n    .aui-checkbox.aui-theme-light.is-invalid,\n    .aui-checkbox.aui-theme-light.is-invalid .aui-checkbox__label {\n      color: #eb0d3f; }\n    .aui-checkbox.aui-theme-light.is-invalid .aui-checkbox__tick {\n      background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpolygon fill='%23eb0d3f' points='4.945 12 0 7.699 0.667 6.92 4.708 10.435 11.132 0 12 0.543 4.945 12' /%3E%3C/svg%3E\"); }\n    .aui-checkbox.aui-theme-light.is-invalid .aui-checkbox__box,\n    .aui-checkbox.aui-theme-light.is-invalid:hover .aui-checkbox__box {\n      border-color: #eb0d3f; }\n\n.aui-draggable-list.aui-theme-light .aui-draggable-list__item {\n  color: rgba(255, 255, 255, 0.8);\n  background: rgba(255, 255, 255, 0.2); }\n  .aui-draggable-list.aui-theme-light .aui-draggable-list__item:hover {\n    color: rgba(255, 255, 255, 0.95);\n    background: rgba(255, 255, 255, 0.3); }\n\n.aui-draggable-list.aui-theme-light.is-dragging .aui-draggable-list__item,\n.aui-draggable-list.aui-theme-light.is-dragging .aui-draggable-list__item:hover {\n  background: rgba(255, 255, 255, 0.1); }\n  .aui-draggable-list.aui-theme-light.is-dragging .aui-draggable-list__item.is-active,\n  .aui-draggable-list.aui-theme-light.is-dragging .aui-draggable-list__item:hover.is-active {\n    color: rgba(255, 255, 255, 0.95);\n    background: #666666; }\n\n.aui-draggable-list.aui-theme-light.is-dragging .is-placeholder,\n.aui-draggable-list.aui-theme-light.is-dragging .is-placeholder:hover {\n  color: transparent;\n  background: none; }\n\n.aui-draggable-list.aui-theme-light .is-placeholder::before {\n  border-color: rgba(255, 255, 255, 0.1); }\n\n.aui-draggable-list.aui-theme-light .aui-draggable-list__item::after {\n  background-image: url(\"data:image/svg+xml;dataset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='5' viewBox='0 0 16 5'%3E%3Crect style='fill:rgba(255, 255, 255, 0.8)' x='0' y='0' width='16' height='1' /%3E%3Crect style='fill:rgba(255, 255, 255, 0.8)' x='0' y='4' width='16' height='1' /%3E%3C/svg%3E\"); }\n\n.aui-dropzone.aui-theme-light {\n  color: #f2f2f2;\n  border-color: rgba(255, 255, 255, 0.2); }\n  .aui-dropzone.aui-theme-light.is-active, .aui-dropzone.aui-theme-light:hover {\n    border-color: rgba(255, 255, 255, 0.8); }\n  .aui-dropzone.aui-theme-light.aui-dropzone--fullpage {\n    background: rgba(0, 0, 0, 0.9); }\n    .aui-dropzone.aui-theme-light.aui-dropzone--fullpage::after {\n      border-color: rgba(255, 255, 255, 0.8); }\n\n.aui-dropdown.aui-theme-black, .aui-dropdown.aui-theme-warmsilver, .aui-dropdown.aui-theme-silver {\n  /**\n  * States\n  */ }\n  .aui-dropdown.aui-theme-black .aui-dropdown__input, .aui-dropdown.aui-theme-warmsilver .aui-dropdown__input, .aui-dropdown.aui-theme-silver .aui-dropdown__input {\n    color: rgba(255, 255, 255, 0.6);\n    border-color: #808080; }\n  .aui-dropdown.aui-theme-black .aui-dropdown__label, .aui-dropdown.aui-theme-warmsilver .aui-dropdown__label, .aui-dropdown.aui-theme-silver .aui-dropdown__label {\n    color: rgba(255, 255, 255, 0.6); }\n  .aui-dropdown.aui-theme-black .aui-dropdown__field::after, .aui-dropdown.aui-theme-warmsilver .aui-dropdown__field::after, .aui-dropdown.aui-theme-silver .aui-dropdown__field::after {\n    background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='8' viewBox='0 0 13 8'%3E%3Cpolygon fill='rgba(255, 255, 255, 0.6)' points='6.511 7.371 0 0.715 0.731 0 6.51 5.907 12.267 0 13 0.714 6.511 7.371'/%3E%3C/svg%3E\"); }\n  .aui-dropdown.aui-theme-black .aui-dropdown__focus-line, .aui-dropdown.aui-theme-warmsilver .aui-dropdown__focus-line, .aui-dropdown.aui-theme-silver .aui-dropdown__focus-line {\n    background: #000000; }\n  .aui-dropdown.aui-theme-black .aui-dropdown__description, .aui-dropdown.aui-theme-warmsilver .aui-dropdown__description, .aui-dropdown.aui-theme-silver .aui-dropdown__description, .aui-dropdown.aui-theme-black .aui-dropdown__error, .aui-dropdown.aui-theme-warmsilver .aui-dropdown__error, .aui-dropdown.aui-theme-silver .aui-dropdown__error {\n    color: #808080; }\n  .aui-dropdown.aui-theme-black .aui-dropdown__error, .aui-dropdown.aui-theme-warmsilver .aui-dropdown__error, .aui-dropdown.aui-theme-silver .aui-dropdown__error {\n    color: #eb0d3f; }\n  .aui-dropdown.aui-theme-black .aui-dropdown__panel, .aui-dropdown.aui-theme-warmsilver .aui-dropdown__panel, .aui-dropdown.aui-theme-silver .aui-dropdown__panel {\n    background: #1a1a1a;\n    box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.1), 0 0 40px 0 rgba(0, 0, 0, 0.15); }\n  .aui-dropdown.aui-theme-black .aui-dropdown__list-title, .aui-dropdown.aui-theme-warmsilver .aui-dropdown__list-title, .aui-dropdown.aui-theme-silver .aui-dropdown__list-title {\n    color: rgba(255, 255, 255, 0.3); }\n  .aui-dropdown.aui-theme-black .aui-dropdown__option, .aui-dropdown.aui-theme-warmsilver .aui-dropdown__option, .aui-dropdown.aui-theme-silver .aui-dropdown__option {\n    color: #f2f2f2; }\n    .aui-dropdown.aui-theme-black .aui-dropdown__option:hover, .aui-dropdown.aui-theme-warmsilver .aui-dropdown__option:hover, .aui-dropdown.aui-theme-silver .aui-dropdown__option:hover {\n      background: rgba(255, 255, 255, 0.1); }\n  .aui-dropdown.aui-theme-black:not(.is-disabled):not(.is-invalid) .aui-dropdown__input:hover, .aui-dropdown.aui-theme-warmsilver:not(.is-disabled):not(.is-invalid) .aui-dropdown__input:hover, .aui-dropdown.aui-theme-silver:not(.is-disabled):not(.is-invalid) .aui-dropdown__input:hover {\n    border-color: #000000; }\n  .is-focused.aui-dropdown.aui-theme-black .aui-dropdown__input, .is-focused.aui-dropdown.aui-theme-warmsilver .aui-dropdown__input, .is-focused.aui-dropdown.aui-theme-silver .aui-dropdown__input {\n    border-color: #000000; }\n  .is-dirty.aui-dropdown.aui-theme-black .aui-dropdown__field::after, .is-dirty.aui-dropdown.aui-theme-warmsilver .aui-dropdown__field::after, .is-dirty.aui-dropdown.aui-theme-silver .aui-dropdown__field::after {\n    background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='8' viewBox='0 0 13 8'%3E%3Cpolygon fill='%23f2f2f2' points='6.511 7.371 0 0.715 0.731 0 6.51 5.907 12.267 0 13 0.714 6.511 7.371'/%3E%3C/svg%3E\"); }\n  .is-dirty.aui-dropdown.aui-theme-black .aui-dropdown__input, .is-dirty.aui-dropdown.aui-theme-warmsilver .aui-dropdown__input, .is-dirty.aui-dropdown.aui-theme-silver .aui-dropdown__input {\n    border-color: #000000;\n    color: #f2f2f2; }\n  .is-invalid.aui-dropdown.aui-theme-black, .is-invalid.aui-dropdown.aui-theme-warmsilver, .is-invalid.aui-dropdown.aui-theme-silver, .is-invalid.aui-dropdown.aui-theme-black:not(.is-dirty) .aui-dropdown__input, .is-invalid.aui-dropdown.aui-theme-warmsilver:not(.is-dirty) .aui-dropdown__input, .is-invalid.aui-dropdown.aui-theme-silver:not(.is-dirty) .aui-dropdown__input, .is-invalid.aui-dropdown.aui-theme-black .aui-dropdown__counter, .is-invalid.aui-dropdown.aui-theme-warmsilver .aui-dropdown__counter, .is-invalid.aui-dropdown.aui-theme-silver .aui-dropdown__counter, .is-invalid.aui-dropdown.aui-theme-black .aui-dropdown__label, .is-invalid.aui-dropdown.aui-theme-warmsilver .aui-dropdown__label, .is-invalid.aui-dropdown.aui-theme-silver .aui-dropdown__label {\n    color: #eb0d3f; }\n  .is-invalid.aui-dropdown.aui-theme-black .aui-dropdown__field::after, .is-invalid.aui-dropdown.aui-theme-warmsilver .aui-dropdown__field::after, .is-invalid.aui-dropdown.aui-theme-silver .aui-dropdown__field::after {\n    background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='8' viewBox='0 0 13 8'%3E%3Cpolygon fill='%23eb0d3f' points='6.511 7.371 0 0.715 0.731 0 6.51 5.907 12.267 0 13 0.714 6.511 7.371'/%3E%3C/svg%3E\"); }\n  .is-invalid.aui-dropdown.aui-theme-black .aui-dropdown__input, .is-invalid.aui-dropdown.aui-theme-warmsilver .aui-dropdown__input, .is-invalid.aui-dropdown.aui-theme-silver .aui-dropdown__input {\n    border-color: #eb0d3f; }\n  .is-invalid.aui-dropdown.aui-theme-black .aui-dropdown__focus-line, .is-invalid.aui-dropdown.aui-theme-warmsilver .aui-dropdown__focus-line, .is-invalid.aui-dropdown.aui-theme-silver .aui-dropdown__focus-line {\n    background: #eb0d3f; }\n\n.aui-dropdown {\n  /**\n   * Theme: black\n   */\n  /**\n    * Theme: warmsilver\n    */\n  /**\n   * Theme: silver\n   */ }\n  .aui-dropdown.aui-theme-warmsilver .aui-dropdown__panel {\n    background: #c2beb7; }\n  .aui-dropdown.aui-theme-silver .aui-dropdown__panel {\n    background: #bfbfbf; }\n\n.aui-fieldset {\n  /**\n   * Theme: light\n   */ }\n  .aui-fieldset.aui-theme-light {\n    color: rgba(255, 255, 255, 0.6); }\n    .aui-fieldset.aui-theme-light.aui-fieldset--selects .aui-fieldset__legend,\n    .aui-fieldset.aui-theme-light.aui-fieldset--textfields .aui-fieldset__legend {\n      color: #f2f2f2; }\n    .aui-fieldset.aui-theme-light.is-invalid .aui-fieldset__error,\n    .aui-fieldset.aui-theme-light.is-invalid .aui-fieldset__legend {\n      color: #eb0d3f; }\n\n.aui-flyout.aui-theme-light .aui-flyout__panel {\n  color: #808080;\n  background: #333333;\n  box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.1), 0 0 40px 0 rgba(0, 0, 0, 0.15); }\n\n.aui-flyout.aui-theme-light .aui-flyout__close {\n  background: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 17 17' %3E%3Cpath fill='%23808080' d='M8.487,7.78l7.78,-7.777c0.235,0.236 0.471,0.472 0.707,0.707l-7.78,7.777l7.777,7.78l-0.708,0.707l-7.776,-7.78l-7.78,7.777l-0.707,-0.708l7.78,-7.776l-7.777,-7.78l0.707,-0.707l7.777,7.78Z' /%3E%3C/svg%3E\") center center no-repeat; }\n\n.aui-nav.aui-theme-black, .aui-nav.aui-theme-warmsilver, .aui-nav.aui-theme-silver, .aui-nav.aui-theme-red {\n  color: rgba(255, 255, 255, 0.5);\n  fill: rgba(255, 255, 255, 0.5);\n  stroke: rgba(255, 255, 255, 0.5);\n  /**\n   * Modifier: List\n   */\n  /**\n   * Modifier: Dropdown\n   */ }\n  .aui-nav.aui-theme-black .aui-nav__action.is-active, .aui-nav.aui-theme-warmsilver .aui-nav__action.is-active, .aui-nav.aui-theme-silver .aui-nav__action.is-active, .aui-nav.aui-theme-red .aui-nav__action.is-active, .aui-nav.aui-theme-black .aui-nav__action:hover, .aui-nav.aui-theme-warmsilver .aui-nav__action:hover, .aui-nav.aui-theme-silver .aui-nav__action:hover, .aui-nav.aui-theme-red .aui-nav__action:hover {\n    color: #ffffff;\n    fill: #ffffff;\n    stroke: #ffffff; }\n  .aui-nav.aui-theme-black .aui-nav__action, .aui-nav.aui-theme-warmsilver .aui-nav__action, .aui-nav.aui-theme-silver .aui-nav__action, .aui-nav.aui-theme-red .aui-nav__action, .aui-nav.aui-theme-black .aui-nav__action.is-disabled, .aui-nav.aui-theme-warmsilver .aui-nav__action.is-disabled, .aui-nav.aui-theme-silver .aui-nav__action.is-disabled, .aui-nav.aui-theme-red .aui-nav__action.is-disabled {\n    color: rgba(255, 255, 255, 0.5);\n    fill: rgba(255, 255, 255, 0.5);\n    stroke: rgba(255, 255, 255, 0.5); }\n  .aui-nav.aui-theme-black .aui-nav__indicator, .aui-nav.aui-theme-warmsilver .aui-nav__indicator, .aui-nav.aui-theme-silver .aui-nav__indicator, .aui-nav.aui-theme-red .aui-nav__indicator {\n    background: #ffffff; }\n  .aui-nav.aui-theme-black .aui-nav__paddle-left::after, .aui-nav.aui-theme-warmsilver .aui-nav__paddle-left::after, .aui-nav.aui-theme-silver .aui-nav__paddle-left::after, .aui-nav.aui-theme-red .aui-nav__paddle-left::after, .aui-nav.aui-theme-black .aui-nav__paddle-right::after, .aui-nav.aui-theme-warmsilver .aui-nav__paddle-right::after, .aui-nav.aui-theme-silver .aui-nav__paddle-right::after, .aui-nav.aui-theme-red .aui-nav__paddle-right::after {\n    background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='13' viewBox='0 0 8 13'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='1px' fill='none' d='M1.5,1l5.485,5.504l-5.48,5.496' /%3E%3C/svg%3E\"); }\n  .aui-nav.aui-theme-black .aui-nav__paddle-left, .aui-nav.aui-theme-warmsilver .aui-nav__paddle-left, .aui-nav.aui-theme-silver .aui-nav__paddle-left, .aui-nav.aui-theme-red .aui-nav__paddle-left {\n    background: linear-gradient(to right, black 40%, transparent 100%); }\n  .aui-nav.aui-theme-black .aui-nav__paddle-right, .aui-nav.aui-theme-warmsilver .aui-nav__paddle-right, .aui-nav.aui-theme-silver .aui-nav__paddle-right, .aui-nav.aui-theme-red .aui-nav__paddle-right {\n    background: linear-gradient(to right, transparent 0%, black 60%); }\n  .aui-nav--tab.aui-nav.aui-theme-black .aui-nav__action.is-active, .aui-nav--tab.aui-nav.aui-theme-warmsilver .aui-nav__action.is-active, .aui-nav--tab.aui-nav.aui-theme-silver .aui-nav__action.is-active, .aui-nav--tab.aui-nav.aui-theme-red .aui-nav__action.is-active {\n    color: #000000; }\n  .aui-nav--tab.aui-nav.aui-theme-black .aui-nav__indicator, .aui-nav--tab.aui-nav.aui-theme-warmsilver .aui-nav__indicator, .aui-nav--tab.aui-nav.aui-theme-silver .aui-nav__indicator, .aui-nav--tab.aui-nav.aui-theme-red .aui-nav__indicator {\n    background: #e5e5e5; }\n  .aui-nav--list.aui-nav.aui-theme-black .aui-nav__item + .aui-nav__item, .aui-nav--list.aui-nav.aui-theme-warmsilver .aui-nav__item + .aui-nav__item, .aui-nav--list.aui-nav.aui-theme-silver .aui-nav__item + .aui-nav__item, .aui-nav--list.aui-nav.aui-theme-red .aui-nav__item + .aui-nav__item {\n    border-color: rgba(255, 255, 255, 0.2); }\n  .aui-nav--dropdown.aui-nav.aui-theme-black, .aui-nav--dropdown.aui-nav.aui-theme-warmsilver, .aui-nav--dropdown.aui-nav.aui-theme-silver, .aui-nav--dropdown.aui-nav.aui-theme-red {\n    color: rgba(255, 255, 255, 0.5); }\n    .aui-nav--dropdown.aui-nav.aui-theme-black .aui-nav__toggle, .aui-nav--dropdown.aui-nav.aui-theme-warmsilver .aui-nav__toggle, .aui-nav--dropdown.aui-nav.aui-theme-silver .aui-nav__toggle, .aui-nav--dropdown.aui-nav.aui-theme-red .aui-nav__toggle {\n      color: #ffffff; }\n    .aui-nav--dropdown.aui-nav.aui-theme-black .aui-nav__toggle-label::after, .aui-nav--dropdown.aui-nav.aui-theme-warmsilver .aui-nav__toggle-label::after, .aui-nav--dropdown.aui-nav.aui-theme-silver .aui-nav__toggle-label::after, .aui-nav--dropdown.aui-nav.aui-theme-red .aui-nav__toggle-label::after {\n      background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='8' viewBox='0 0 13 8'%3E%3Cpolygon fill='rgba(255, 255, 255, 0.5)' points='6.511 7.371 0 0.715 0.731 0 6.51 5.907 12.267 0 13 0.714 6.511 7.371'/%3E%3C/svg%3E\"); }\n    .aui-nav--dropdown.aui-nav.aui-theme-black .aui-nav__item:not(:last-child), .aui-nav--dropdown.aui-nav.aui-theme-warmsilver .aui-nav__item:not(:last-child), .aui-nav--dropdown.aui-nav.aui-theme-silver .aui-nav__item:not(:last-child), .aui-nav--dropdown.aui-nav.aui-theme-red .aui-nav__item:not(:last-child) {\n      border-color: rgba(255, 255, 255, 0.2); }\n    .aui-nav--dropdown.aui-nav.aui-theme-black .aui-nav__panel, .aui-nav--dropdown.aui-nav.aui-theme-warmsilver .aui-nav__panel, .aui-nav--dropdown.aui-nav.aui-theme-silver .aui-nav__panel, .aui-nav--dropdown.aui-nav.aui-theme-red .aui-nav__panel {\n      background: #333333;\n      box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.1), 0 0 40px 0 rgba(0, 0, 0, 0.15); }\n  .aui-nav.aui-theme-black .aui-nav__underline, .aui-nav.aui-theme-warmsilver .aui-nav__underline, .aui-nav.aui-theme-silver .aui-nav__underline, .aui-nav.aui-theme-red .aui-nav__underline {\n    background: rgba(255, 255, 255, 0.5); }\n  .is-sticky.aui-nav.aui-theme-black .aui-nav__toggle, .is-sticky.aui-nav.aui-theme-warmsilver .aui-nav__toggle, .is-sticky.aui-nav.aui-theme-silver .aui-nav__toggle, .is-sticky.aui-nav.aui-theme-red .aui-nav__toggle {\n    box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.1), 0 0 40px 0 rgba(0, 0, 0, 0.15); }\n\n.aui-nav {\n  /**\n   * Theme: black\n   */\n  /**\n    * Theme: warmsilver\n    */\n  /**\n   * Theme: silver\n   */\n  /**\n   * Theme: red\n   */\n  /**\n   * Theme: gray95\n   */\n  /**\n   * TODO Remove in final version.\n   * Theme: gray\n   */ }\n  .aui-nav.aui-theme-warmsilver .aui-nav__paddle-left {\n    background: linear-gradient(to right, #b6b1a9 40%, rgba(182, 177, 169, 0) 100%); }\n  .aui-nav.aui-theme-warmsilver .aui-nav__paddle-right {\n    background: linear-gradient(to right, rgba(182, 177, 169, 0) 0%, #b6b1a9 60%); }\n  .aui-nav.aui-theme-silver .aui-nav__paddle-left {\n    background: linear-gradient(to right, #b2b2b2 40%, rgba(178, 178, 178, 0) 100%); }\n  .aui-nav.aui-theme-silver .aui-nav__paddle-right {\n    background: linear-gradient(to right, rgba(178, 178, 178, 0) 0%, #b2b2b2 60%); }\n  .aui-nav.aui-theme-red .aui-nav__paddle-left {\n    background: linear-gradient(to right, #bb0a30 40%, rgba(187, 10, 48, 0) 100%); }\n  .aui-nav.aui-theme-red .aui-nav__paddle-right {\n    background: linear-gradient(to right, rgba(187, 10, 48, 0) 0%, #bb0a30 60%); }\n  .aui-nav.aui-theme-gray95 .aui-nav__paddle-left {\n    background: linear-gradient(to right, #f2f2f2 40%, rgba(242, 242, 242, 0) 100%); }\n  .aui-nav.aui-theme-gray95 .aui-nav__paddle-right {\n    background: linear-gradient(to right, rgba(242, 242, 242, 0) 0%, #f2f2f2 60%); }\n  .aui-nav.aui-theme-gray10-gray20 {\n    color: rgba(255, 255, 255, 0.5);\n    fill: rgba(255, 255, 255, 0.5);\n    stroke: rgba(255, 255, 255, 0.5); }\n    .aui-nav.aui-theme-gray10-gray20 .aui-nav__action.is-active, .aui-nav.aui-theme-gray10-gray20 .aui-nav__action:hover {\n      color: #ffffff;\n      fill: #ffffff;\n      stroke: #ffffff; }\n    .aui-nav.aui-theme-gray10-gray20 .aui-nav__action, .aui-nav.aui-theme-gray10-gray20 .aui-nav__action.is-disabled {\n      color: rgba(255, 255, 255, 0.5);\n      fill: rgba(255, 255, 255, 0.5);\n      stroke: rgba(255, 255, 255, 0.5); }\n    .aui-nav.aui-theme-gray10-gray20 .aui-nav__indicator {\n      background: #ffffff; }\n    .aui-nav.aui-theme-gray10-gray20 .aui-nav__paddle-left::after,\n    .aui-nav.aui-theme-gray10-gray20 .aui-nav__paddle-right::after {\n      background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='13' viewBox='0 0 8 13'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='1px' fill='none' d='M1.5,1l5.485,5.504l-5.48,5.496' /%3E%3C/svg%3E\"); }\n    .aui-nav.aui-theme-gray10-gray20 .aui-nav__paddle-left {\n      background: linear-gradient(to right, #1a1a1a 40%, rgba(26, 26, 26, 0) 100%); }\n    .aui-nav.aui-theme-gray10-gray20 .aui-nav__paddle-right {\n      background: linear-gradient(to right, rgba(26, 26, 26, 0) 0%, #1a1a1a 60%); }\n    .aui-nav.aui-theme-gray10-gray20.aui-nav--tab .aui-nav__action.is-active {\n      color: #ffffff; }\n    .aui-nav.aui-theme-gray10-gray20.aui-nav--tab .aui-nav__indicator {\n      background: #333333; }\n\n.aui-pager.aui-theme-light {\n  color: #808080; }\n  .aui-pager.aui-theme-light .aui-pager__current {\n    color: #ffffff; }\n  .aui-pager.aui-theme-light .aui-pager__next:hover:not(.is-disabled),\n  .aui-pager.aui-theme-light .aui-pager__prev:hover:not(.is-disabled) {\n    color: #ffffff; }\n\n.aui-pagination.aui-theme-light {\n  color: #808080; }\n  .aui-pagination.aui-theme-light .aui-pagination__link.is-active,\n  .aui-pagination.aui-theme-light .aui-pagination__link:hover:not(.is-disabled),\n  .aui-pagination.aui-theme-light .aui-pagination__next:hover:not(.is-disabled),\n  .aui-pagination.aui-theme-light .aui-pagination__prev:hover:not(.is-disabled) {\n    color: #ffffff; }\n  .aui-pagination.aui-theme-light .aui-pagination__indicator {\n    background: #ffffff; }\n\n.aui-progress.aui-theme-light {\n  background: rgba(255, 255, 255, 0.3); }\n\n.aui-radio {\n  /**\n   * Theme: light\n   */ }\n  .aui-radio.aui-theme-light {\n    color: #f2f2f2; }\n    .aui-radio.aui-theme-light .aui-radio__box {\n      border-color: #808080; }\n    .aui-radio.aui-theme-light .aui-radio__tick {\n      background: rgba(255, 255, 255, 0.2); }\n    .aui-radio.aui-theme-light:hover:not(.is-disabled) {\n      color: #ffffff; }\n      .aui-radio.aui-theme-light:hover:not(.is-disabled) .aui-radio__box {\n        border-color: #ffffff; }\n    .aui-radio.aui-theme-light .aui-radio__input:focus ~ .aui-radio__box {\n      box-shadow: 0 0 3px 3px rgba(255, 255, 255, 0.2); }\n    .aui-radio.aui-theme-light.is-checked .aui-radio__tick {\n      background: #000000; }\n\n.aui-select {\n  /**\n   * Theme: light\n   */ }\n  .aui-select.aui-theme-light {\n    /**\n    * States\n    */ }\n    .aui-select.aui-theme-light .aui-select__input {\n      color: rgba(255, 255, 255, 0.6);\n      border-color: #808080; }\n      .aui-select.aui-theme-light .aui-select__input::-ms-value {\n        color: rgba(255, 255, 255, 0.6); }\n    .aui-select.aui-theme-light .aui-select__label {\n      color: rgba(255, 255, 255, 0.6); }\n    .aui-select.aui-theme-light::after {\n      background: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='8' viewBox='0 0 13 8'%3E%3Cpolygon fill='rgba(255, 255, 255, 0.6)' points='6.511 7.371 0 0.715 0.731 0 6.51 5.907 12.267 0 13 0.714 6.511 7.371'/%3E%3C/svg%3E\") center center no-repeat; }\n    .aui-select.aui-theme-light .aui-select__focus-line {\n      background: #000000; }\n    .aui-select.aui-theme-light .aui-select__description,\n    .aui-select.aui-theme-light .aui-select__error {\n      color: #808080; }\n    .aui-select.aui-theme-light .aui-select__error {\n      color: #eb0d3f; }\n    .aui-select.aui-theme-light:not(.is-disabled):not(.is-invalid) .aui-select__input:hover {\n      border-color: #000000; }\n    .aui-select.aui-theme-light.is-dirty::after {\n      background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='8' viewBox='0 0 13 8'%3E%3Cpolygon fill='%23f2f2f2' points='6.511 7.371 0 0.715 0.731 0 6.51 5.907 12.267 0 13 0.714 6.511 7.371'/%3E%3C/svg%3E\"); }\n    .aui-select.aui-theme-light.is-dirty .aui-select__input {\n      border-color: #000000;\n      color: #f2f2f2; }\n      .aui-select.aui-theme-light.is-dirty .aui-select__input::-ms-value {\n        color: #f2f2f2; }\n    .aui-select.aui-theme-light.is-invalid,\n    .aui-select.aui-theme-light.is-invalid .aui-select__label,\n    .aui-select.aui-theme-light.is-invalid:not(.is-dirty) .aui-select__input {\n      color: #eb0d3f; }\n    .aui-select.aui-theme-light.is-invalid::after {\n      background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='8' viewBox='0 0 13 8'%3E%3Cpolygon fill='%23eb0d3f' points='6.511 7.371 0 0.715 0.731 0 6.51 5.907 12.267 0 13 0.714 6.511 7.371'/%3E%3C/svg%3E\"); }\n    .aui-select.aui-theme-light.is-invalid .aui-select__input {\n      border-color: #eb0d3f; }\n    .aui-select.aui-theme-light.is-invalid .aui-select__focus-line {\n      background: #eb0d3f; }\n\n.aui-slider {\n  /**\n   * Theme: black\n   */\n  /**\n   * Theme: silver\n   */\n  /**\n   * Theme: warmsilver\n   */ }\n  .aui-slider.aui-theme-black {\n    color: #cccccc; }\n    .aui-slider.aui-theme-black .aui-slider__target::after {\n      background: #333333; }\n    .aui-slider.aui-theme-black .aui-slider__connect::after {\n      background: #ffffff; }\n    .aui-slider.aui-theme-black .aui-slider__handle {\n      background: #000000;\n      border-color: #808080; }\n    .aui-slider.aui-theme-black:not(.is-disabled) .aui-slider__handle:hover {\n      border-color: #ffffff; }\n  .aui-slider.aui-theme-silver {\n    color: #000000; }\n    .aui-slider.aui-theme-silver .aui-slider__target::after {\n      background: #c1c1c1; }\n    .aui-slider.aui-theme-silver .aui-slider__connect::after {\n      background: #ffffff; }\n    .aui-slider.aui-theme-silver .aui-slider__handle {\n      background: #b2b2b2;\n      border-color: #d9d9d9; }\n    .aui-slider.aui-theme-silver:not(.is-disabled) .aui-slider__handle:hover {\n      border-color: #ffffff; }\n  .aui-slider.aui-theme-warmsilver {\n    color: #000000; }\n    .aui-slider.aui-theme-warmsilver .aui-slider__target::after {\n      background: #c5c1ba; }\n    .aui-slider.aui-theme-warmsilver .aui-slider__connect::after {\n      background: #ffffff; }\n    .aui-slider.aui-theme-warmsilver .aui-slider__handle {\n      background: #b6b1a9;\n      border-color: #dbd8d4; }\n    .aui-slider.aui-theme-warmsilver:not(.is-disabled) .aui-slider__handle:hover {\n      border-color: #ffffff; }\n\n.aui-indicator.aui-theme-light .aui-indicator__action,\n.aui-indicator.aui-theme-light .aui-indicator__action:visited {\n  background: rgba(255, 255, 255, 0.2); }\n\n.aui-indicator.aui-theme-light .aui-indicator__action:hover {\n  background: #808080; }\n\n.aui-indicator.aui-theme-light .aui-indicator__indicator {\n  background: #000000; }\n\n.aui-indicator.aui-theme-image .aui-indicator__action,\n.aui-indicator.aui-theme-image .aui-indicator__action:visited {\n  background: rgba(179, 179, 179, 0.5); }\n\n.aui-indicator.aui-theme-image .aui-indicator__action:hover {\n  background: #808080; }\n\n.aui-indicator.aui-theme-image .aui-indicator__indicator {\n  background: #000000; }\n\n.aui-spinner.aui-theme-light {\n  stroke: rgba(255, 255, 255, 0.6); }\n\n.aui-switch {\n  /**\n   * Theme: light\n   */ }\n  .aui-switch.aui-theme-light .aui-switch__text {\n    color: #f2f2f2; }\n  .aui-switch.aui-theme-light .aui-switch__track {\n    border-color: #808080; }\n  .aui-switch.aui-theme-light .aui-switch__thumb {\n    background: rgba(255, 255, 255, 0.2); }\n  .aui-switch.aui-theme-light.aui-switch--equal .aui-switch__text--right {\n    color: #808080; }\n  .aui-switch.aui-theme-light.aui-switch--equal .aui-switch__thumb {\n    background: #000000; }\n  .aui-switch.aui-theme-light:hover:not(.is-disabled) .aui-switch__text {\n    color: #ffffff; }\n  .aui-switch.aui-theme-light:hover:not(.is-disabled) .aui-switch__track {\n    border-color: #ffffff; }\n  .aui-switch.aui-theme-light.aui-switch--equal:hover:not(.is-disabled) .aui-switch__text--right {\n    color: #808080; }\n  .aui-switch.aui-theme-light.aui-switch--equal:hover:not(.is-disabled) .aui-switch__input:checked ~ .aui-switch__text--left {\n    color: #808080; }\n  .aui-switch.aui-theme-light.aui-switch--equal:hover:not(.is-disabled) .aui-switch__input:checked ~ .aui-switch__text--right {\n    color: #ffffff; }\n  .aui-switch.aui-theme-light .aui-switch__input:focus ~ .aui-switch__track {\n    box-shadow: 0 0 3px 3px rgba(255, 255, 255, 0.2); }\n  .aui-switch.aui-theme-light .aui-switch__input:checked ~ .aui-switch__track .aui-switch__thumb {\n    background: #000000; }\n  .aui-switch.aui-theme-light.aui-switch--equal .aui-switch__input:checked ~ .aui-switch__text--left {\n    color: #808080; }\n  .aui-switch.aui-theme-light.aui-switch--equal .aui-switch__input:checked ~ .aui-switch__text--right {\n    color: #f2f2f2; }\n\n.aui-table {\n  /**\n   * Theme: light\n   */ }\n  .aui-table.aui-theme-light table {\n    border-color: #ffffff; }\n  .aui-table.aui-theme-light th {\n    border-top-color: #ffffff; }\n  .aui-table.aui-theme-light td {\n    border-top-color: #ffffff; }\n  .aui-table.aui-theme-light .aui-table__cell--colored {\n    background-color: rgba(255, 255, 255, 0.2); }\n  .aui-table.aui-theme-light .aui-table__cell--last-row td::after {\n    border-color: #ffffff; }\n\n.aui-textfield {\n  /**\n   * Theme: light\n   */ }\n  .aui-textfield.aui-theme-light {\n    stroke: #f2f2f2;\n    /**\n     * States\n     */ }\n    .aui-textfield.aui-theme-light .aui-textfield__field {\n      border-color: #808080; }\n    .aui-textfield.aui-theme-light .aui-textfield__input {\n      color: rgba(255, 255, 255, 0.6); }\n    .aui-textfield.aui-theme-light .aui-textfield__label {\n      color: rgba(255, 255, 255, 0.6); }\n    .aui-textfield.aui-theme-light .aui-textfield__focus-line {\n      background: #000000; }\n    .aui-textfield.aui-theme-light .aui-textfield__counter,\n    .aui-textfield.aui-theme-light .aui-textfield__description,\n    .aui-textfield.aui-theme-light .aui-textfield__error,\n    .aui-textfield.aui-theme-light .aui-textfield__valid {\n      color: #808080; }\n    .aui-textfield.aui-theme-light .aui-textfield__valid::before {\n      background: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpolygon fill='%23000000' points='4.945 12 0 7.699 0.667 6.92 4.708 10.435 11.132 0 12 0.543 4.945 12' /%3E%3C/svg%3E\") center center no-repeat; }\n    .aui-textfield.aui-theme-light .aui-textfield__error {\n      color: #eb0d3f; }\n    .aui-textfield.aui-theme-light:not(.is-disabled):not(.is-invalid) .aui-textfield__field:hover {\n      border-bottom-color: #000000; }\n    .aui-textfield.aui-theme-light.is-focused .aui-textfield__field {\n      border-bottom-color: #000000; }\n    .aui-textfield.aui-theme-light.is-dirty .aui-textfield__field {\n      border-bottom-color: #000000; }\n    .aui-textfield.aui-theme-light.is-dirty .aui-textfield__input {\n      color: #f2f2f2; }\n    .aui-textfield.aui-theme-light.is-invalid,\n    .aui-textfield.aui-theme-light.is-invalid:not(.is-dirty) .aui-textfield__input,\n    .aui-textfield.aui-theme-light.is-invalid .aui-textfield__counter,\n    .aui-textfield.aui-theme-light.is-invalid .aui-textfield__label {\n      color: #eb0d3f; }\n    .aui-textfield.aui-theme-light.is-invalid .aui-textfield__field {\n      border-color: #eb0d3f; }\n    .aui-textfield.aui-theme-light.is-invalid .aui-textfield__focus-line {\n      background: #eb0d3f; }\n"
  },
  {
    "path": "gulpfile.js",
    "content": "/**\n *\n *  Audi UI\n *  Copyright 2016 Audi AG. All rights reserved.\n *\n *  Licensed under the Apache License, Version 2.0 (the \"License\");\n *  you may not use this file except in compliance with the License.\n *  You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n *  Unless required by applicable law or agreed to in writing, software\n *  distributed under the License is distributed on an \"AS IS\" BASIS,\n *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *  See the License for the specific language governing permissions and\n *  limitations under the License\n *\n */\n\n'use strict'; // eslint-disable-line strict\n\nconst _ = require('gulp-load-plugins')();\nconst browserSync = require('browser-sync').create();\nconst del = require('del');\nconst gulp = require('gulp');\nconst pkg = require('./package.json');\nconst webpack = require('webpack');\nconst webpackStream = require('webpack-stream');\n\n\n// ----------------------------------------------------------------------------\n// CONFIG\n// ----------------------------------------------------------------------------\n\nconst libraryName = 'audi-ui';\nconst libraryDest = 'dist';\nconst testFolder = '.temp/test/visual';\n\nconst banner = `/**\n * ${pkg.name} - ${pkg.description}\n * @version v${pkg.version}\n * @license ${pkg.license}\n * @copyright ${new Date().getFullYear()} ${pkg.author}\n * @link ${pkg.homepage}\n */\\n`;\n\nconst webpackConfig = {\n  output: {\n    filename: `${libraryName}.min.js`,\n    library: libraryName,\n    libraryTarget: 'umd',\n    umdNamedDefine: true\n  },\n  devtool: 'source-map',\n  module: {\n    loaders: [\n      {\n        test: /\\.js$/,\n        exclude: /node_modules/,\n        loader: 'babel',\n        query: {\n          compact: false\n        }\n      },\n      {\n        test: /\\.js$/,\n        exclude: /node_modules/,\n        loader: 'eslint-loader'\n      }\n    ]\n  },\n  plugins: [\n    new webpack.optimize.UglifyJsPlugin({ minimize: true }),\n    new webpack.BannerPlugin(banner, { raw: true })\n  ]\n};\n\nconst webpackConfigTest = {\n  output: {\n    filename: `test.min.js`,\n    libraryTarget: 'umd'\n  },\n  devtool: 'source-map',\n  module: {\n    loaders: [\n      {\n        test: /\\.js$/,\n        exclude: /node_modules/,\n        loader: 'babel',\n        query: {\n          compact: false\n        }\n      },\n      {\n        test: /\\.js$/,\n        exclude: /node_modules/,\n        loader: 'eslint-loader'\n      }\n    ]\n  }\n};\n\nconst nunjucksConfig = {\n  path: ['test/visual/', 'src'],\n  envOptions: {\n    watch: false\n  },\n  manageEnv: function(environment) {\n    environment.addFilter('path', function(str, baseDir) {\n      // TODO switch depending on environment (test, deploy, etc.)\n      const dir = {\n      test: '.temp/test/visual/',\n      //test: 'audi/audi-ui-redo-2021/',\n      };\n      baseDir = dir[baseDir] || '';\n      return `/${baseDir}${str}`;\n    });\n\n    environment.addFilter('slug', function(str) {\n      return str && str.replace(/\\s/g, '-', str).toLowerCase();\n    });\n\n    environment.addGlobal('testFolder', testFolder);\n  }\n};\n\n\n// ----------------------------------------------------------------------------\n// ERROR HANDLING\n// ----------------------------------------------------------------------------\n\n/**\n * Template for error logging messages.\n * @param {Object} error object.\n * @returns {string} template\n */\nfunction errorLoggingTemplate(error) {\n  return `${_.util.colors.bgRed(`${error.name} in ${error.relativePath}`)}\n\n  ⚠️       ${error.name} ${_.util.colors.dim(`reported by`)} ${error.plugin}\n\n  Path:   ${error.relativePath}\n  Line:   ${error.line}\n  Column: ${error.column}\n\n  ${_.util.colors.red( error.formatted ? error.formatted.split('\\n').join('\\n  ') : '' )}`;\n};\n\n\n/**\n * Template for error notifications.\n * @param {Object} error object.\n * @returns {Object} notification\n */\nfunction errorNotifyObject(error) {\n  return {\n    title: `Gulp`,\n    subtitle: `${error.name}: ${error.plugin}`,\n    message: `${error.relativePath} ${error.line}:${error.column}`,\n    sound: 'Hero',\n  };\n}\n\n\n/**\n * Error handling\n *\n * To eliminate the need of adding the error handler to each task, we overwrite\n * the `gulp.src` method and add proper error logging messages and notifications.\n */\nconst _gulpSrc = gulp.src;\ngulp.src = function() {\n  return _gulpSrc\n    .apply(gulp, arguments)\n    .pipe(_.plumber(function(error) {\n      // Log error message in console\n      _.util.log(errorLoggingTemplate(error));\n\n      // Display notification\n      _.notify.onError(errorNotifyObject(error)).apply(this, arguments);\n\n      // Emit the end event, to properly end the task\n      this.emit('end');\n    }));\n};\n\n\n// ----------------------------------------------------------------------------\n// CSS\n// ----------------------------------------------------------------------------\ngulp.task('css', function() {\n  return gulp.src('src/index.scss')\n    .pipe(_.plumber())\n    .pipe(_.sass({precision: 10}))\n    .pipe(_.autoprefixer({\n      browsers: ['last 2 version']\n    }))\n    .pipe(_.header(banner))\n    .pipe(_.rename({\n      basename: libraryName\n    }))\n    .pipe(gulp.dest(libraryDest))\n    .pipe(_.if ('*.css', _.csso()))\n    .pipe(_.header(banner))\n    .pipe(_.rename({\n      suffix: '.min'\n    }))\n    // .pipe(_.plumber.stop())\n    .pipe(gulp.dest(libraryDest))\n    .pipe(_.size({\n      title: _.util.colors.underline('CSS size:') + '\\n',\n      showFiles: true,\n      showTotal: false,\n      gzip: true\n  }));\n});\n\n\n// ----------------------------------------------------------------------------\n// JS\n// ----------------------------------------------------------------------------\ngulp.task('js', function() {\n  return gulp.src('src/index.js')\n    .pipe(webpackStream(webpackConfig, webpack))\n    .pipe(gulp.dest(libraryDest))\n    .pipe(_.size({\n      title: _.util.colors.underline('JS size:') + '\\n',\n      showFiles: true,\n      showTotal: false,\n      gzip: true\n  }));\n});\n\n\n// ----------------------------------------------------------------------------\n// SERVE & WATCH\n// ----------------------------------------------------------------------------\ngulp.task('serve:test', function(done) {\n  browserSync.init({\n    notify: false,\n    server: '.',\n    startPath: `${testFolder}/index.html`\n  }, done);\n});\n\ngulp.task('reload', function(done) {\n  browserSync.reload();\n  done();\n});\n\n// FIXME CSS live injection currently not working with proxy option.\n// Quick win is to perform a page reload.\ngulp.task('watch:css', function() {\n  gulp.watch('src/**/*.scss', gulp.series('css', 'test:visual:css', 'reload'));\n});\n\ngulp.task('watch:js', function() {\n  gulp.watch('src/**/*.js', gulp.series('js', 'reload'));\n});\n\ngulp.task('watch:test:css', function() {\n  gulp.watch(['src/**/*.scss', 'test/visual/scss/**/*.scss'], gulp.series('test:visual:css', 'reload'));\n});\n\ngulp.task('watch:test:js', function() {\n  gulp.watch(['src/**/*.js', 'test/visual/js/**/*.js'], gulp.series('test:visual:js', 'reload'));\n});\n\ngulp.task('watch:test:pages', function() {\n  gulp.watch('test/visual/pages/**/*.+(html|nunjucks|njk|md)', gulp.series('test:visual:pages', 'reload'));\n});\n\ngulp.task('watch:test', gulp.parallel('watch:test:css', 'watch:test:js', 'watch:test:pages'));\n\n\n// ----------------------------------------------------------------------------\n// CLEAN\n// ----------------------------------------------------------------------------\ngulp.task('clean', function() {\n  return del([libraryDest, '.temp']);\n});\n\n\n// ----------------------------------------------------------------------------\n// TEST\n// ----------------------------------------------------------------------------\nlet getPackageData = function(file) {\n  // Returns package.json as variable package\n  // to use it in Nunjucks templates like this {{ package.version }}\n  return {\n    'package': pkg,\n  };\n}\n\ngulp.task('test:visual:css', function() {\n  return gulp.src('test/visual/scss/test.scss')\n    .pipe(_.sass({precision: 10}))\n    .pipe(_.autoprefixer({\n      browsers: ['last 2 version']\n    }))\n    .pipe(gulp.dest(`${testFolder}/assets/css`));\n});\n\ngulp.task('test:visual:js', function() {\n  return gulp.src('test/visual/js/test.js')\n    .pipe(webpackStream(webpackConfigTest, webpack))\n    .pipe(gulp.dest(`${testFolder}/assets/js`));\n});\n\ngulp.task('test:visual:pages', function() {\n  return gulp.src(['test/visual/pages/**/*.+(html|nunjucks|njk|md)', '!test/visual/pages/_**/*.*', '!test/visual/pages/_*.*'])\n    .pipe(_.data(getPackageData))\n    .pipe(_.nunjucksRender(nunjucksConfig))\n    .pipe(gulp.dest(`${testFolder}`));\n});\n\ngulp.task('test:visual:content', function() {\n  return gulp.src(['test/visual/content/**/*.*'])\n    .pipe(gulp.dest(`${testFolder}/assets/content`));\n});\n\ngulp.task('test:visual:fonts', function() {\n  return gulp.src(['./node_modules/@audi/audi-type/dist/fonts/**/*.{woff,woff2,ttf}'])\n    .pipe(gulp.dest(`${testFolder}/assets/fonts`));\n});\n\ngulp.task('test:visual:svg', function() {\n  return gulp.src(['node_modules/@audi/audi-icon/dist/svg/sprite/sprite.svg'])\n    .pipe(gulp.dest(`${testFolder}/assets/svg`));\n});\n\ngulp.task('test:visual',\n  gulp.series(\n    gulp.parallel('clean'),\n    gulp.parallel('css', 'js'),\n    gulp.parallel('test:visual:svg', 'test:visual:css', 'test:visual:js', 'test:visual:pages', 'test:visual:content', 'test:visual:fonts'),\n    gulp.parallel('serve:test', 'watch:test')\n  )\n);\n\n// ----------------------------------------------------------------------------\n// DEFAULT\n// ----------------------------------------------------------------------------\ngulp.task('default', gulp.series('clean', 'css', 'js'));\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"@audi/audi-ui\",\n  \"version\": \"1.0.0-alpha.1\",\n  \"description\": \"Audi UI components in HTML, CSS and JS.\",\n  \"author\": \"Audi\",\n  \"private\": false,\n  \"homepage\": \"https://github.com/audi/audi-ui\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/audi/audi-ui.git\"\n  },\n  \"main\": \"dist/audi-ui.min.js\",\n  \"devDependencies\": {\n    \"@audi/audi-icon\": \"^1.0.0-alpha.1\",\n    \"@audi/audi-type\": \"^1.0.0-alpha.1\",\n    \"babel\": \"6.3.13\",\n    \"babel-core\": \"6.1.18\",\n    \"babel-eslint\": \"5.0.0\",\n    \"babel-loader\": \"6.1.0\",\n    \"babel-plugin-add-module-exports\": \"0.1.2\",\n    \"babel-plugin-transform-es2015-classes\": \"^6.9.0\",\n    \"babel-polyfill\": \"^6.16.0\",\n    \"babel-preset-es2015\": \"6.3.13\",\n    \"bezier-easing\": \"^2.0.3\",\n    \"browser-sync\": \"^2.17.3\",\n    \"del\": \"^2.2.2\",\n    \"dom4\": \"^1.8.3\",\n    \"eslint\": \"1.7.2\",\n    \"eslint-loader\": \"1.1.0\",\n    \"fontfaceobserver\": \"^2.0.5\",\n    \"gulp\": \"4.0.2\",\n    \"gulp-autoprefixer\": \"^3.1.1\",\n    \"gulp-csso\": \"^2.0.0\",\n    \"gulp-data\": \"^1.2.1\",\n    \"gulp-header\": \"^1.8.8\",\n    \"gulp-if\": \"^2.0.1\",\n    \"gulp-load-plugins\": \"^1.2.4\",\n    \"gulp-notify\": \"^2.2.0\",\n    \"gulp-nunjucks-render\": \"^2.0.0\",\n    \"gulp-plumber\": \"^1.1.0\",\n    \"gulp-rename\": \"^1.2.2\",\n    \"gulp-sass\": \"^2.3.2\",\n    \"gulp-size\": \"^2.1.0\",\n    \"gulp-sourcemaps\": \"^2.0.0\",\n    \"gulp-to-json\": \"^1.0.1\",\n    \"gulp-uglify\": \"^2.0.0\",\n    \"gulp-util\": \"^3.0.7\",\n    \"normalize.css\": \"^5.0.0\",\n    \"nouislider\": \"^9.2.0\",\n    \"path\": \"^0.12.7\",\n    \"tether\": \"^1.3.7\",\n    \"urijs\": \"^1.18.2\",\n    \"webpack\": \"1.12.9\",\n    \"webpack-stream\": \"^3.2.0\"\n  },\n  \"scripts\": {\n    \"build\": \"gulp\",\n    \"test:visual\": \"gulp test:visual\"\n  },\n  \"engines\": {\n    \"node\": \">=6.0.0\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/audi/audi-ui/issues\"\n  },\n  \"directories\": {\n    \"test\": \"test\"\n  },\n  \"license\": \"Apache-2.0\"\n}\n"
  },
  {
    "path": "src/_blank-component/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **Blank** component is … (text follows)\n\n### To include an AUI **Blank** component:\n\n```html\n```\n"
  },
  {
    "path": "src/_blank-component/_blank.scss",
    "content": "$aui-blank-variable: 'value';\n\n.aui-blank {\n  // (1) Rename 'blank' to 'name-of-component'\n  // (2) Import me in 'src/index.scss'\n}\n"
  },
  {
    "path": "src/_blank-component/blank.js",
    "content": "import Component from '../component/component';\n\nconst SELECTOR_COMPONENT = '.aui-js-blank';\n\n/**\n * Class constructor for Blank AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Blank extends Component {\n\n  /**\n   * Upgrades all Blank AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Blank(element));\n      }\n    });\n    return components;\n  };\n\n  /**\n   * Initialize component\n   */\n  init() {\n    super.init();\n\n    // (1) Define `SELECTOR_COMPONENT` like '.aui-js-name-of-component'\n    // (2) Rename 'Blank' to 'NameOfComponent'\n    // - in the comments of constructor method\n    // - in the class name\n    // - in the comments of method `upgradeElements`\n    // - in the method `upgradeElements` itself\n    // (3) Reference me in 'src/index.js'\n  }\n\n  /**\n   * Dispose component\n   */\n  dispose() {\n    super.dispose();\n\n    // Remove dynamic added classes and attributes\n    // Remove event listener\n    // etc.\n  }\n}\n"
  },
  {
    "path": "src/_functions.scss",
    "content": "// TODO Überprüfen ob die noch benötigt wird. Derzeit nur im Player.\n@function line-height($line-height-ratio, $font-size, $baseline: $aui-base-unit) {\n  @return round($line-height-ratio * $font-size / $baseline) * $baseline;\n}\n\n// TODO Complete error handling\n@function aui-map-get($map, $args...) {\n  $return: $map;\n  @for $i from 1 through length($args) {\n    $key: nth($args, $i);\n    $return: map-get($return, $key);\n    @if type-of($return) != 'map' and $i < length($args) {\n      @warn 'No map found for `' + $key + '`.';\n      @return '';\n    }\n    $last-key: $key;\n  }\n  @return $return;\n}\n\n// Fork of Bourbon SASS implememntation\n// https://github.com/thoughtbot/bourbon/blob/v4-stable/app/assets/stylesheets/functions/_modular-scale.scss\n// Multiplies $value with $ratio in power of $increment\n@function modular-scale($increment, $value: aui-map-get($aui-modular-scale, default, base), $ratio: aui-map-get($aui-modular-scale, default, ratio), $round: true) {\n  $v1: nth($value, 1);\n  $v2: nth($value, length($value));\n  $value: $v1;\n\n  // scale $v2 to just above $v1\n  @while $v2 > $v1 {\n    $v2: ($v2 / $ratio); // will be off-by-1\n  }\n  @while $v2 < $v1 {\n    $v2: ($v2 * $ratio); // will fix off-by-1\n  }\n\n  // check AFTER scaling $v2 to prevent double-counting corner-case\n  $double-stranded: $v2 > $v1;\n\n  @if $increment > 0 {\n    @for $i from 1 through $increment {\n      @if $double-stranded and ($v1 * $ratio) > $v2 {\n        $value: $v2;\n        $v2: ($v2 * $ratio);\n      } @else {\n        $v1: ($v1 * $ratio);\n        $value: $v1;\n      }\n    }\n  }\n\n  @if $increment < 0 {\n    // adjust $v2 to just below $v1\n    @if $double-stranded {\n      $v2: ($v2 / $ratio);\n    }\n\n    @for $i from $increment through -1 {\n      @if $double-stranded and ($v1 / $ratio) < $v2 {\n        $value: $v2;\n        $v2: ($v2 / $ratio);\n      } @else {\n        $v1: ($v1 / $ratio);\n        $value: $v1;\n      }\n    }\n  }\n\n  @if ($round) {\n    $value: round($value)\n  }\n\n  @return $value;\n}\n\n// Replace `$search` with `$replace` in `$string`\n// @author Hugo Giraudel\n// @param {string} $string - Initial string\n// @param {string} $search - Substring to replace\n// @param {string} $replace ('') - New value\n// @return {string} - Updated string\n// https://css-tricks.com/snippets/sass/str-replace-function/\n@function str-replace($string, $search, $replace: '') {\n  $index: str-index($string, $search);\n\n  @if $index {\n    @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n  }\n\n  @return $string;\n}\n\n// Encode SVG to use them as data-uri for background-image\n// Encodes <, > and #.\n// https://codepen.io/tigt/post/optimizing-svgs-in-data-uris\n// @param {string} $string - SVG code to encode\n// @returns {string} - encoded String\n@function encode-svg($string) {\n  $string: str-replace($string, '<', '%3C');\n  $string: str-replace($string, '>', '%3E');\n  $string: str-replace($string, '#', '%23');\n\n  @return $string;\n}\n\n// Returns a handle symbol used in Draggable components as SVG element.\n// @param {color} $color the color used as fill and/or stroke.\n// @returns {string} the SVG element as string.\n@function aui-svg-draggable-handle($color) {\n  @return encode-svg(\"<svg xmlns='http://www.w3.org/2000/svg' width='16' height='5' viewBox='0 0 16 5'><rect style='fill:#{$color}' x='0' y='0' width='16' height='1' /><rect style='fill:#{$color}' x='0' y='4' width='16' height='1' /></svg>\");\n}\n\n// Returns an arrow symbol as SVG element.\n// @param {color} $color the color used as fill and/or stroke.\n// @returns {string} the SVG element as string.\n@function aui-svg-arrow($color) {\n  @return encode-svg(\"<svg xmlns='http://www.w3.org/2000/svg' width='8' height='13' viewBox='0 0 8 13'><path stroke='#{$color}' stroke-width='1px' fill='none' d='M1.5,1l5.485,5.504l-5.48,5.496' /></svg>\");\n}\n\n// Returns an arrow symbol used in Dropdown/Select components as SVG element.\n// @param {color} $color the color used as fill and/or stroke.\n// @returns {string} the SVG element as string.\n@function aui-svg-dropdown-arrow($color) {\n  @return encode-svg(\"<svg xmlns='http://www.w3.org/2000/svg' width='13' height='8' viewBox='0 0 13 8'><polygon fill='#{$color}' points='6.511 7.371 0 0.715 0.731 0 6.51 5.907 12.267 0 13 0.714 6.511 7.371'/></svg>\");\n}\n\n// Returns a divider symbol used in breadcrumbs as SVG element.\n// @param {color} $color the color used as fill and/or stroke.\n// @returns {string} the SVG element as string.\n@function aui-svg-breadcrumb-divider($color) {\n @return encode-svg(\"<svg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'><path stroke='#{$color}' stroke-width='1px' fill='none' d='M0.5,0.5l3.24,3.252l-3.237,3.247' /></svg>\");\n}\n\n// Returns a close symbol as SVG element.\n// @param {color} $color the color used as fill and/or stroke.\n// @returns {string} the SVG element as string.\n@function aui-svg-close($color) {\n  @return encode-svg(\"<svg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 17 17' ><path fill='#{$color}' d='M8.487,7.78l7.78,-7.777c0.235,0.236 0.471,0.472 0.707,0.707l-7.78,7.777l7.777,7.78l-0.708,0.707l-7.776,-7.78l-7.78,7.777l-0.707,-0.708l7.78,-7.776l-7.777,-7.78l0.707,-0.707l7.777,7.78Z' /></svg>\");\n}\n\n// Returns a tick symbol as SVG element.\n// @param {color} $color the color used as fill and/or stroke.\n// @returns {string} the SVG element as string.\n@function aui-svg-tick($color) {\n  @return encode-svg(\"<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><polygon fill='#{$color}' points='4.945 12 0 7.699 0.667 6.92 4.708 10.435 11.132 0 12 0.543 4.945 12' /></svg>\");\n}\n\n// Returns a triangle symbol as SVG element.\n// @param {color} $color the color used as fill and/or stroke.\n// @returns {string} the SVG element as string.\n@function aui-svg-triangle($color) {\n  @return encode-svg(\"<svg xmlns='http://www.w3.org/2000/svg' width='10' height='20' viewBox='0 0 10 20'><path style='fill:#{$color}' d='M10,20l-10,-10l10,-10l0,20Z' /></svg>\");\n}\n\n// Returns a circle symbol as SVG element.\n// @param {color} $color the color used as fill and/or stroke.\n// @returns {string} the SVG element as string.\n@function aui-svg-circle($color) {\n  @return encode-svg(\"<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100'><circle style='fill:#{$color}' cx='50' cy='50' r='50' /></svg>\");\n}\n\n// Returns a circle symbol as SVG element.\n// @param {color} $color the color used as fill and/or stroke.\n// @returns {string} the SVG element as string.\n@function aui-svg-caution($color) {\n  @return encode-svg(\"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path fill='none' d='M21.5,20.5 L1.5,20.5 L11.5,2.5 L21.5,20.5 Z M11.5,16 L11.5,18 M11.5,8 L11.5,14' stroke='#{$color}' stroke-width='1' fill-rule='evenodd'/></svg>\");\n}\n"
  },
  {
    "path": "src/_mixins.scss",
    "content": "@mixin aui-respond-to($breakpoint-name) {\n  @if map-has-key($aui-breakpoint, $breakpoint-name) {\n    @media (min-width: map-get($aui-breakpoint, $breakpoint-name)) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n@mixin aui-responsive-type($font-size-increment, $line-height-ratio) {\n  $base: aui-map-get($aui-modular-scale, default, base);\n  $ratio: aui-map-get($aui-modular-scale, default, ratio);\n  $baseline: $aui-base-unit;\n\n  $font-size: modular-scale($font-size-increment, $base, $ratio);\n  font-size: round($font-size);\n  line-height: round($line-height-ratio * $font-size / $baseline) * $baseline;\n\n  @each $breakpoint-name, $scale in $aui-modular-scale {\n    @if $breakpoint-name != 'default' {\n      @if type-of($scale) == 'map' {\n        @include aui-respond-to($breakpoint-name) {\n          $changed: false;\n          @if map-get($scale, base) and map-get($scale, base) != $base {\n            $base: map-get($scale, base);\n            $changed: true;\n          }\n          @if map-get($scale, ratio) and map-get($scale, ratio) != $ratio {\n            $ratio: map-get($scale, ratio);\n            $changed: true;\n          }\n          @if $changed {\n            $font-size: modular-scale($font-size-increment, $base, $ratio);\n            font-size: round($font-size);\n            line-height: round($line-height-ratio * $font-size / $baseline) * $baseline;\n          }\n        }\n      }\n    }\n  }\n}\n\n@mixin typo-body() {\n  font-size: unit(4);\n  line-height: unit(7);\n}\n\n// TODO Ersetzen. Wird nur noch von Player verwendet.\n@mixin aui-font-size-line-height($font-size-increment, $line-height-ratio, $base: aui-map-get($aui-modular-scale, default, base), $ratio: aui-map-get($aui-modular-scale, default, ratio), $baseline: $aui-base-unit) {\n  $font-size: modular-scale($font-size-increment, $base, $ratio);\n  font-size: round($font-size);\n  line-height: round($line-height-ratio * $font-size / $baseline) * $baseline;\n}\n\n@mixin aui-remove-tap-highlight() {\n  // Remove the unwanted box around interactive elements, e.g. AUI button:\n  // http://phonegap-tips.com/articles/essential-phonegap-css-webkit-tap-highlight-color.html\n  -webkit-tap-highlight-color: transparent;\n  -webkit-tap-highlight-color: rgba(255, 255, 255, 0);\n}\n\n// Provides an easy way to include a clearfix for containing floats.\n// We use this modern clearfix from cssmojo:\n// http://cssmojo.com/latest_new_clearfix_so_far/\n@mixin clearfix() {\n  &::after {\n    content: '';\n    display: table;\n    clear: both;\n  }\n}\n\n// Shadows\n@mixin shadow() {\n  box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.05), 0 0 50px 0 rgba(0, 0, 0, 0.07);\n}\n@mixin shadow-dark() {\n  box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.1), 0 0 40px 0 rgba(0, 0, 0, 0.15);\n}\n@mixin shadow-focus() {\n  box-shadow: 0 0 3px 3px rgba(#000, 0.1);\n}\n@mixin shadow-focus-light() {\n  box-shadow: 0 0 3px 3px rgba(#fff, 0.2);\n}\n\n// SVG\n@mixin icon {\n  display: block;\n  fill: none;\n  stroke: currentColor;\n  stroke-width: $aui-icon-stroke-width;\n}\n"
  },
  {
    "path": "src/_themes.scss",
    "content": "@import \"audioplayer/audioplayer-themes\";\n@import \"breadcrumb/breadcrumb-themes\";\n@import \"button/button-themes\";\n@import \"checkbox/checkbox-themes\";\n@import \"draggable/draggable-themes\";\n@import \"dropzone/dropzone-themes\";\n@import \"dropdown/dropdown-themes\";\n@import \"fieldset/fieldset-themes\";\n@import \"flyout/flyout-themes\";\n@import \"nav/nav-themes\";\n@import \"pager/pager-themes\";\n@import \"pagination/pagination-themes\";\n@import \"progress/progress-themes\";\n@import \"radio/radio-themes\";\n@import \"select/select-themes\";\n@import \"slider/slider-themes\";\n@import \"indicator/indicator-themes\";\n@import \"spinner/spinner-themes\";\n@import \"switch/switch-themes\";\n@import \"table/table-themes\";\n@import \"textfield/textfield-themes\";\n"
  },
  {
    "path": "src/_variables.scss",
    "content": "$aui-rem-base: 16px !default; // in px\n$aui-base-unit: 4px !default; // in px\n@import \"util/units\";\n\n$aui-layout-min-width: 288px !default; // = smallest grid width on 320px viewport.\n\n$aui-pi: 3.14159;\n\n/**\n * Modular Scale\n */\n//$aui-modular-scale: ( default: ( base: 16px, ratio: 1.14, ), small: ( ratio: 1.17, ), large: ( base: 18px, ratio: 1.21, ), huge: ( base: 20px, ratio: 1.25, ), ) !default;\n$aui-modular-scale: ( default: ( base: 16px, ratio: 1.14, ), small: ( base: 16px, ratio: 1.17, ), large: ( base: 18px, ratio: 1.21, ), huge: ( base: 20px, ratio: 1.25, ), ) !default;\n\n/**\n * Animation & Transitions\n */\n$aui-easing: cubic-bezier(0.75, 0.02, 0.5, 1) !default;\n\n/**\n * Colors\n */\n$aui-color-red: #bb0a30 !default;\n$aui-color-progressive-red: #f50537 !default;\n$aui-color-signal-red: #eb0d3f !default;\n$aui-color-yellow: #ffaa00 !default;\n$aui-color-green: #009900 !default;\n$aui-color-charging-neon-blue: #556EFE !default;\n$aui-color-charging-blue: #2526fe !default;\n$aui-color-charging-neon-green: #15da15 !default;\n$aui-color-charging-green: #0da20d !default;\n$aui-color-silver: #b2b2b2 !default;\n$aui-color-warmsilver: #b6b1a9 !default;\n$aui-color-black: #000000 !default;\n$aui-color-gray10: #1a1a1a !default;\n$aui-color-gray20: #333333 !default;\n$aui-color-gray30: #4c4c4c !default;\n$aui-color-gray40: #666666 !default;\n$aui-color-gray50: #808080 !default;\n$aui-color-gray60: #999999 !default;\n$aui-color-gray70: #b3b3b3 !default;\n$aui-color-gray80: #cccccc !default;\n$aui-color-gray85: #d9d9d9 !default;\n$aui-color-gray90: #e5e5e5 !default;\n$aui-color-gray95: #f2f2f2 !default;\n$aui-color-white: #ffffff !default;\n\n$aui-color-light: $aui-color-gray95 !default;\n$aui-color-dark: $aui-color-gray20 !default;\n$aui-color-body: $aui-color-dark !default;\n$aui-color-placeholder: $aui-color-gray60 !default;\n$aui-color-invalid: $aui-color-signal-red !default;\n\n/**\n * Font\n */\n$aui-font-default: #{\"\\'AudiTypeVariable\\'\", Verdana, Geneva, sans-serif} !default;\n$aui-font-wide: #{\"\\'AudiTypeWide\\'\", Verdana, Geneva, sans-serif} !default;\n//$aui-font-extended: #{\"\\'AudiTypeExtended\\'\", Verdana, Geneva, sans-serif} !default;\n$aui-font-extended: #{\"\\'AudiTypeVariable\\'\", Verdana, Geneva, sans-serif} !default;\n$aui-font-extended-width: \"wdth\" 130;\n$aui-font-weight-light: 300 !default;\n$aui-font-weight-normal: 400 !default;\n$aui-font-weight-bold: 700 !default;\n\n// To smooth circles in Chrome on subpixel, we define an scaling factor:\n$aui-circle-smoothing-factor: 2 !default;\n\n/**\n * Icons\n */\n$aui-icon-size-small: 24px !default;\n$aui-icon-size-large: 48px !default;\n$aui-icon-system-size-small: 23px !default;\n$aui-icon-system-size-large: 45px !default;\n$aui-icon-stroke-width: 1.1px !default;\n\n/**\n * SVG\n */\n$aui-svg-arrow-width: 8px !default;\n$aui-svg-arrow-height: 13px !default;\n\n/**\n * Breakpoints\n */\n//$aui-breakpoint: ( tiny : 480px, xsmall : 600px, small : 740px, medium : 960px, large : 1264px, xlarge : 1424px, huge : 1584px, ) !default;\n$aui-breakpoint: ( xsmall : 0px, small : 375px, medium : 768px, large : 1024px, xlarge : 1440px, huge : 1920px, ) !default;\n\n\n// $aui-shadow: 0 10px 50px $aui-color-gray85;\n\n/**\n * Card Component\n */\n$aui-card-spacing: unit(1) !default;\n\n/**\n * Form Field Components, like Textfield\n */\n// $aui-field-floating-label-padding: unit(4);\n$aui-field-floating-label-padding: 0.6875rem !default;\n$aui-field-floating-label-font-size: .75rem !default;\n$aui-field-default-height: unit(10.8) !default;\n$aui-field-line-height: 1.5 !default;\n$aui-field-error-line-height: unit(5) !default;\n$aui-field-error-color: $aui-color-invalid !default;\n$aui-field-disabled-opacity: 0.3 !default;\n$aui-field-placeholder-color: $aui-color-gray20 !default;\n$aui-field-placeholder-color-light: rgba(#fff, 0.6) !default;\n$aui-field-transition-duration: 0.25s !default;\n$aui-field-label-y: 0.5rem !default;\n$aui-field-focus-line-height: 1px !default;\n\n/**\n * Grid Component\n */\n$aui-grid-columns: 12 !default;\n$aui-grid-gutters: unit(1) !default;\n$aui-grid-container-offset: 4.375% !default; // in percent\n\n/**\n * Visibility Component\n */\n$aui-visibility: ( tiny, xsmall, small, medium, large, xlarge, huge, );\n\n/**\n * z-index\n */\n$aui-zindex-header: 100 !default;\n$aui-dropdown-open-index: 1000 !default;\n$aui-alert-zindex: 1700 !default;\n$aui-notification-zindex: 1701 !default;\n$aui-button-floating-zindex: 900 !default;\n$aui-zindex-modal-backdrop: 1800 !default;\n$aui-zindex-modal-morph: 1801 !default;\n$aui-zindex-modal: 1900 !default;\n$aui-zindex-dropdown: 1000 !default;\n$aui-zindex-nav-dropdown-toggle: 1001 !default;\n$aui-zindex-tooltip: 1002 !default;\n$aui-zindex-popover: 1002 !default;\n$aui-zindex-dropdown: 1002 !default;\n$aui-zindex-nav-sticky: 1001 !default;\n\n%aui-hidden-input {\n  appearance: none;\n  position: absolute;\n  width: 0;\n  height: 0;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  outline: 0;\n  opacity: 0;\n  z-index: -1;\n}\n"
  },
  {
    "path": "src/alert/README.md",
    "content": "# AUI Alert\n\n## Usage\n\n##### ES2015\n\n```javascript\nimport {Alert} from 'audi-ui';\n```\n\n##### CommonJS\n\n```javascript\ntbd.\n```\n\n##### AMD\n\n```javascript\ntbd.\n```\n\n\n##### Global\n\n```javascript\ntbd.\n```\n\n#### Automatic Instantiation\n\nIf you do not care about retaining the component instance for the alert, simply call `upgradeElements`.  \n\n```javascript\nimport {Alert} from 'audi-ui';\n\nAlert.upgradeElements();\n```\n\n#### Manual Instantiation\n\nAlerts can easily be initialized using their default constructors as well, similar to `upgradeElements`.\n\n```javascript\nimport {Alert} from 'audi-ui';\n\nconst alert = new Alert(document.querySelector('.aui-alert'));\n```\n\n## Classes\n\n### Element\n\nThe block class is `aui-alert`. This defines the top-level alert element. Have a look into the `snippets` folder for examples.\n\n### Modifier\n\nThe provided modifiers are:\n\n| Class                 | Description                |\n| --------------------- | ---------------------------|\n| `aui-alert--sticky`   | Make the alert sticky.     |\n| `is-open`             | State, if alert is open.   |\n| `is-closed`           | State, if alert is closed. |\n"
  },
  {
    "path": "src/alert/_alert.scss",
    "content": "$aui-alert-close-btn-size: 17px !default;\n$aui-alert-text-padding-x: unit(7) !default;\n$aui-alert-text-padding-y: unit(5) !default;\n$aui-alert-closing-duration: .3s !default;\n\n.aui-alert {\n  position: relative;\n  transition: height $aui-alert-closing-duration $aui-easing;\n  @include aui-responsive-type(-1, 1.5);\n\n  &__content {\n    position: relative;\n    color: inherit;\n    background: inherit;\n    margin-right: #{$aui-alert-close-btn-size + 10px};\n    padding: $aui-alert-text-padding-y #{$aui-alert-text-padding-x * 2} $aui-alert-text-padding-y $aui-alert-text-padding-x;\n    transition: transform $aui-alert-closing-duration $aui-easing, box-shadow $aui-alert-closing-duration $aui-easing;\n  }\n\n  &__close {\n    position: absolute;\n    top: $aui-alert-text-padding-y;\n    right: $aui-alert-text-padding-x;\n    width: $aui-alert-close-btn-size;\n    height: $aui-alert-close-btn-size;\n    background: url('data:image/svg+xml,#{aui-svg-close($aui-color-dark)}') center center no-repeat;\n    cursor: pointer;\n    vertical-align: middle;\n    outline: none;\n    box-sizing: border-box;\n    border: none;\n    @include aui-remove-tap-highlight;\n  }\n\n  &.aui-color-text-light &__close,\n  &.aui-color-text-warning &__close {\n    background-image: url('data:image/svg+xml,#{aui-svg-close($aui-color-light)}');\n  }\n\n  &--sticky &__content {\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n    @include shadow-dark;\n    z-index: $aui-alert-zindex;\n  }\n\n  &.is-open &__content {\n    transform: translateY(0);\n  }\n\n  &.is-closed {\n    overflow: hidden;\n    height: 0 !important;\n  }\n\n  &.is-closed &__content {\n    box-shadow: none;\n    transform: translateY(-100%);\n  }\n}\n"
  },
  {
    "path": "src/alert/alert.js",
    "content": "import Component from '../component/component';\nimport ResizeObserver from '../util/resize-observer';\n\nconst SELECTOR_COMPONENT = '.aui-js-alert';\nconst CLASS_CONTENT = 'aui-alert__content';\nconst CLASS_CLOSE_BUTTON = 'aui-alert__close';\nconst CLASS_IS_CLOSED = 'is-closed';\nconst CLASS_IS_OPEN = 'is-open';\nconst ATTR_CLOSE = 'data-close';\nconst ATTR_OPENDELAY = 'data-opendelay';\n\n/**\n * Class constructor for Alert AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Alert extends Component {\n\n  /**\n   * Upgrades all Alert AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Alert(element));\n      }\n    });\n    return components;\n  };\n\n  /**\n   * Constructor\n   * @constructor\n   * @param {HTMLElement} element The element of the AUI component.\n   */\n  constructor(element) {\n    super(element);\n  }\n\n  /**\n   * Initialize component\n   */\n  init() {\n    super.init();\n\n    this._content = this._element.querySelector(`.${CLASS_CONTENT}`);\n\n    // Add close button\n    this._closeButton = document.createElement('button');\n    this._closeButton.setAttribute('type', 'button');\n    this._closeButton.classList.add(CLASS_CLOSE_BUTTON);\n    if (this._content) {\n      this._content.appendChild(this._closeButton);\n    }\n\n    if (this._element.hasAttribute(ATTR_OPENDELAY)) {\n      let delay = parseInt(this._element.getAttribute(ATTR_OPENDELAY));\n      this._element.classList.add(CLASS_IS_CLOSED);\n      this.openingTimeout = setTimeout(() => this.open(true), delay);\n    } else {\n      this.open();\n    }\n\n    this._resizeObserver = new ResizeObserver();\n    this._resizeObserver.resized.add(this._resizedHandler = () => this.update());\n\n    this.update();\n  }\n\n  /**\n   * Open an Alert\n   * @param {boolean} animate True, if the opening should be animated. Default: false\n   */\n  open(animate) {\n    animate = animate || false;\n    this._element.addEventListener('click', this._clickHandler = (event) => this._onClick(event));\n    if (animate) {\n      this._animateOpen();\n    } else {\n      this._element.classList.add(CLASS_IS_OPEN);\n      this._element.classList.remove(CLASS_IS_CLOSED);\n    }\n  }\n\n  /**\n   * Animate opening of Alert\n   */\n  _animateOpen() {\n    clearTimeout(this.openingTimeout);\n    // Loop until start height is set and correctly rendered\n    if (window.getComputedStyle(this._element).height && this._element.style.height) {\n      this._element.classList.add(CLASS_IS_OPEN);\n      this._element.classList.remove(CLASS_IS_CLOSED);\n    } else {\n      window.requestAnimationFrame(() => this._animateOpen());\n    }\n  }\n\n  /**\n   * Close this Alert\n   */\n  close() {\n    this._element.removeEventListener('click', this._clickHandler);\n    this._element.style.height = `${this._content.offsetHeight}px`;\n    this._animateClose();\n  }\n\n  /**\n   * Animate closing of Alert\n   */\n  _animateClose() {\n    clearTimeout(this.openingTimeout);\n    // Loop until start height is set and correctly rendered\n    if (window.getComputedStyle(this._element).height && this._element.style.height) {\n      this._element.classList.remove(CLASS_IS_OPEN);\n      this._element.classList.add(CLASS_IS_CLOSED);\n    } else {\n      window.requestAnimationFrame(() => this._animateClose());\n    }\n  }\n\n  /**\n   * Update Alert.\n   * Equalize element height with containing content.\n   */\n  update() {\n    this._element.style.height = `${this._content.offsetHeight}px`;\n  }\n\n  /**\n   * Handle click of element.\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  _onClick(event) {\n    if (event.target.classList.contains(CLASS_CLOSE_BUTTON) || event.target.hasAttribute(ATTR_CLOSE)) {\n      this.close();\n    }\n  }\n\n  /**\n   * Dispose component\n   */\n  dispose() {\n    super.dispose();\n    clearTimeout(this.openingTimeout);\n    this._element.classList.remove(CLASS_IS_CLOSED);\n    this._element.classList.remove(CLASS_IS_OPEN);\n    this._element.removeEventListener('click', this._clickHandler);\n    this._element.style.height = '';\n    this.removeChild(this._closeButton);\n    this.resizeObserver.resized.remove(this._resizedHandler);\n  }\n}\n"
  },
  {
    "path": "src/alert/snippets/alert-animate.html",
    "content": "<div class=\"aui-alert aui-js-alert aui-alert--sticky is-closed aui-color-white\" data-opendelay=\"2000\" role=\"alert\">\n  <div class=\"aui-alert__content\">\n    <strong>The Death Star</strong> plans are not in the main computer. Where are those transmissions you intercepted? What have you done with those plans? We intercepted no transmissions.\n  </div>\n</div>\n"
  },
  {
    "path": "src/alert/snippets/alert-danger.html",
    "content": "<div class=\"aui-alert aui-js-alert aui-color-danger aui-color-text-light\" role=\"alert\">\n  <div class=\"aui-alert__content\">\n    <strong>The Death Star</strong> plans are not in the main computer. Where are those transmissions you intercepted? What have you done with those plans? We intercepted no transmissions.\n  </div>\n</div>\n"
  },
  {
    "path": "src/alert/snippets/alert-sticky.html",
    "content": "<style media=\"screen\">\n  .aui-alert .aui-button-group {\n    margin-top: 1rem;\n  }\n</style>\n\n<div class=\"aui-alert aui-js-alert aui-alert--sticky aui-color-white\" role=\"alert\">\n  <div class=\"aui-alert__content\">\n    <p>\n      <strong>The Death Star</strong> plans are not in the main computer. Where are those transmissions you intercepted? What have you done with those plans? We intercepted no transmissions.\n    </p>\n    <div class=\"aui-button-group\">\n      <button class=\"aui-js-response aui-button aui-button--primary\" type=\"button\" data-close>Confirm and close</button>\n      <button class=\"aui-js-response aui-button aui-button--secondary\" type=\"button\">Cancel</button>\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "src/alert/snippets/alert-success.html",
    "content": "<div class=\"aui-alert aui-js-alert aui-color-white aui-color-text-success\" role=\"alert\">\n  <div class=\"aui-alert__content\">\n    <strong>The Death Star</strong> plans are not in the main computer. Where are those transmissions you intercepted? What have you done with those plans? We intercepted no transmissions.\n  </div>\n</div>\n"
  },
  {
    "path": "src/alert/snippets/alert-warning.html",
    "content": "<div class=\"aui-alert aui-js-alert aui-color-black aui-color-text-warning\" role=\"alert\">\n  <div class=\"aui-alert__content\">\n    <strong>The Death Star</strong> plans are not in the main computer. Where are those transmissions you intercepted? What have you done with those plans? We intercepted no transmissions.\n  </div>\n</div>\n"
  },
  {
    "path": "src/animation/_animation.scss",
    "content": ".aui-animation {\n  &-morph-in,\n  &-morph-out {\n    transition-timing-function: $aui-easing;\n    transition-duration: .6s;\n  }\n}\n\n.aui-no-transition {\n  transition: none !important;\n}\n"
  },
  {
    "path": "src/audioplayer/_audioplayer-themes.scss",
    "content": "$aui-audioplayer-light-loading: $aui-color-gray50 !default;\n$aui-audioplayer-light-progress: $aui-color-white !default;\n$aui-audioplayer-light-timeline: $aui-color-gray30 !default;\n\n.aui-audioplayer {\n\n  &.aui-theme-light {\n    color: $aui-color-white;\n\n    .aui-button {\n      fill: $aui-color-white;\n      color: $aui-color-white;\n    }\n\n    .aui-audioplayer__playhead {\n      background-color: $aui-color-gray20;\n    }\n\n    .aui-audioplayer__progress--loading {\n      background-color: $aui-audioplayer-light-loading;\n    }\n\n    .aui-audioplayer__progress--progress {\n      background-color: $aui-audioplayer-light-progress;\n    }\n\n    .aui-audioplayer__progress-holder {\n      background-color: $aui-audioplayer-light-timeline;\n    }\n\n    .aui-audioplayer__cover {\n      background-color: $aui-color-black;\n    }\n  }\n\n}"
  },
  {
    "path": "src/audioplayer/_audioplayer.scss",
    "content": "$aui-audioplayer-dark-loading: $aui-color-gray50 !default;\n$aui-audioplayer-dark-progress: $aui-color-black !default;\n$aui-audioplayer-dark-timeline: $aui-color-gray90 !default;\n\n.aui-audioplayer {\n  padding: 1.25rem;\n\n  &__controls {\n    line-height: 23px;\n    order: 1;\n    margin-left: 1rem;\n\n    .aui-button-group {\n      flex-flow: row nowrap;\n    }\n\n    &--secondary {\n      margin-top: unit(4);\n      order: 2;\n    }\n  }\n\n  &__chrome {\n    align-items: center;\n    display: flex;\n    flex-direction: column;\n    height: 100%;\n    justify-content: space-between;\n    vertical-align: middle;\n  }\n\n  &__cover {\n    background-color: $aui-color-gray90;\n    display: none;\n    min-height: 100px;\n    min-width: 100px;\n    max-height: 100px;\n    max-width: 100px;\n  }\n\n  &--large-cover {\n    .aui-audioplayer__cover {\n      margin-bottom: 20px;\n      max-height: inherit;\n      max-width: inherit;\n    }\n  }\n\n  &__cover-image {\n    width: 100%;\n    display: block;\n  }\n\n  &__meta {\n    font-size: rem(14px);\n    line-height: 1;\n    margin-bottom: unit(4);\n    //margin-top: unit(4);\n    order: 0;\n    width: 100%;\n  }\n\n  &__time {\n    font-size: rem(12px);\n    margin-top: unit(1);\n  }\n\n  &__title {\n    margin-bottom: unit(1);\n  }\n\n  &__icon-previous,\n  &__icon-next {\n    .audiicon-small {\n      visibility: visible;\n    }\n    .audiicon-large {\n      visibility: hidden;\n    }\n  }\n\n  &__icon-pause,\n  &__icon-play {\n    .audiicon-small {\n      visibility: hidden;\n    }\n    .audiicon-large {\n      visibility: visible;\n    }\n  }\n\n  &__icon-exit-fullscreen,\n  &__icon-pause,\n  &__icon-replay,\n  &__icon-unmute {\n    display: none;\n  }\n\n  &.is-controlled &__chrome,\n  &:hover &__chrome {\n    transform: translateY(0);\n  }\n\n  &.is-seeking {\n    .aui-audioplayer__seek-holder {\n      opacity: 1;\n      transition-delay: .1s;\n    }\n\n    .aui-audioplayer__preview {\n      opacity: 1;\n      transition-delay: .1s;\n    }\n  }\n\n  &.is-seeking.aui-player--preview {\n    .aui-audioplayer__chrome::after {\n      transition-delay: 0s;\n    }\n  }\n\n  &.is-mute {\n    .aui-audioplayer__icon-mute {\n      display: none;\n    }\n\n    .aui-audioplayer__icon-unmute {\n      display: inline-block;\n    }\n  }\n\n  &.is-playing {\n    .aui-audioplayer__icon-play {\n      display: none;\n    }\n\n    .aui-audioplayer__icon-pause {\n      display: inline-block;\n    }\n  }\n\n  &.is-complete {\n    .aui-audioplayer__icon-pause,\n    .aui-audioplayer__icon-play {\n      display: none;\n    }\n\n    .aui-audioplayer__icon-replay {\n      display: inline-block;\n    }\n  }\n\n  .aui-slider {\n    min-height: 1.25rem;\n  }\n  .aui-slider__handle {\n    height: 1.25rem;\n    width: 1.25rem;\n  }\n  .aui-slider__target {\n    height: 1.25rem;\n    margin-left: 0.625rem;\n    margin-right: 0.625rem;\n  }\n\n  @include aui-respond-to(large) {\n    padding: 1.25rem 1rem 1.25rem 0px;\n\n    &--frameless {\n      padding: 0px 1rem 0px 0px;\n    }\n\n    &__controls {\n      &--secondary {\n        margin-top: 0;\n        margin-left: 1rem;\n      }\n    }\n\n    &__chrome {\n      flex-direction: row;\n    }\n\n    &__cover {\n      display: block;\n      margin-right: 1rem;\n    }\n\n    &__cover-image {\n      max-width: 100px;\n    }\n\n    &--large-cover {\n      .aui-audioplayer__cover {\n        margin-right: 0;\n      }\n\n      .aui-audioplayer__cover-image {\n        max-width: none;\n      }\n    }\n\n    &__meta {\n      margin-bottom: 0;\n      margin-left: 1rem;\n      margin-top: 0;\n      order: 2;\n    }\n\n    &__playhead {\n      width: unit(5);\n      height: unit(5);\n    }\n\n  }\n\n  @include aui-respond-to(large) {\n\n  }\n}\n"
  },
  {
    "path": "src/audioplayer/audioplayer.js",
    "content": "import Component from '../component/component';\nimport Popover from './../popover/popover';\n\nconst SELECTOR_COMPONENT = '.aui-audioplayer';\n\nexport default class Audioplayer extends Component {\n\n  /**\n   * Upgrades all Audioplayer components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Audioplayer(element));\n      }\n    });\n    return components;\n  };\n\n  formatCurrentTime(currentTime) {\n    return `${('0' + Math.floor(currentTime % 3600 / 60)).slice(-2)}:${('0' + Math.floor(currentTime % 3600 % 60)).slice(-2)}`;\n  }\n\n  init() {\n    super.init();\n    this.currentTrack = 0;\n    this.scrobble = false;\n    this.embed = this.element.querySelector('.aui-audioplayer__embed');\n    this.embed.preload = true;\n    this.tracks = JSON.parse(this.element.querySelector('.aui-audioplayer__tracks').value);\n    this.embed.addEventListener('ended', (event) => {\n      this.cancelProgress();\n      if (this.tracks.length > 1) {\n        this.next();\n      } else {\n        this.pause();\n        this.element.classList.add('has-ended');\n      }\n      this.updateProgress();\n    });\n    this.embed.addEventListener('canplay', (event) => {\n      this.element.querySelector('.aui-audioplayer__time').innerHTML = this.formatCurrentTime(this.embed.duration);\n    });\n    this.embed.addEventListener('timeupdate', (event) => {\n      this.element.querySelector('.aui-audioplayer__time').innerHTML = this.formatCurrentTime(this.embed.currentTime);\n    });\n    let play = this.element.querySelector('.aui-audioplayer__play');\n    if (play) {\n      play.addEventListener('click', (event) => {\n        if (this.isPlaying()) {\n          this.pause();\n        } else {\n          this.play();\n        }\n      });\n    }\n    let mute = this.element.querySelector('.aui-audioplayer__mute');\n    if (mute) {\n      mute.addEventListener('click', (event) => {\n        if (this.isMuted()) {\n          this.unmute();\n        } else {\n          this.mute();\n        }\n      });\n    }\n    let next = this.element.querySelector('.aui-audioplayer__next');\n    if (next) {\n      next.addEventListener('click', (event) => {\n        this.next();\n      });\n    }\n    let previous = this.element.querySelector('.aui-audioplayer__previous');\n    if (previous) {\n      previous.addEventListener('click', (event) => {\n        this.previous();\n      });\n    }\n    window.setTimeout(() => {\n      this.slider = this.element.querySelector('.aui-slider__target').noUiSlider;\n      this.slider.on('start', () => {\n        this.scrobble = true;\n      });\n      this.slider.on('end', () => {\n        this.scrobble = false;\n      });\n      this.slider.on('change', (value) => {\n        this.embed.currentTime = ((Math.abs(value) * this.embed.duration) / 100);\n      });\n    }, 400);\n  }\n\n  isMuted() {\n    return this.embed.muted;\n  }\n\n  isPlaying() {\n    return !this.embed.paused;\n  }\n\n  mute() {\n    this.element.classList.add('is-mute');\n    this.embed.muted = true;\n  }\n\n  next() {\n    if (this.tracks.length > 1) {\n      let restartPlayback = this.isPlaying();\n      this.pause();\n\n      if (this.currentTrack >= this.tracks.length - 1) {\n        this.currentTrack = 0;\n      } else {\n        this.currentTrack = this.currentTrack + 1;\n      }\n      this.embed.src = this.tracks[this.currentTrack].src;\n      this.embed.load();\n      this.slider.set(0);\n      this.element.querySelector('.aui-audioplayer__time').innerHTML = this.formatCurrentTime(this.embed.duration);\n      if (restartPlayback) this.play();\n\n      this.element.querySelector('.aui-audioplayer__time').innerHTML = '00:00';\n      this.element.querySelector('.aui-audioplayer__title').innerHTML = this.tracks[this.currentTrack].title;\n      let cover = this.element.querySelector('.aui-audioplayer__cover');\n      if (cover) {\n        cover.querySelector('.aui-audioplayer__cover-image').setAttribute('src', this.tracks[this.currentTrack].cover);\n      }\n    }\n  }\n\n  pause() {\n    this.cancelProgress();\n    this.element.classList.remove('is-playing');\n    this.embed.pause();\n  }\n\n  play() {\n    this.updateProgress();\n    this.element.classList.add('is-playing');\n    this.element.classList.remove('has-ended');\n    this.embed.play();\n  }\n\n  previous() {\n    if (this.tracks.length > 1) {\n      let restartPlayback = this.isPlaying();\n      this.pause();\n\n      if (this.currentTrack === 0) {\n        this.currentTrack = this.tracks.length - 1;\n      } else {\n        this.currentTrack = this.currentTrack - 1;\n      }\n      this.embed.src = this.tracks[this.currentTrack].src;\n      this.embed.load();\n      this.slider.set(0);\n      this.element.querySelector('.aui-audioplayer__time').innerHTML = this.formatCurrentTime(this.embed.duration);\n      if (restartPlayback) this.play();\n\n      this.element.querySelector('.aui-audioplayer__time').innerHTML = '00:00';\n      this.element.querySelector('.aui-audioplayer__title').innerHTML = this.tracks[this.currentTrack].title;\n      let cover = this.element.querySelector('.aui-audioplayer__cover');\n      if (cover) {\n        cover.querySelector('.aui-audioplayer__cover-image').setAttribute('src', this.tracks[this.currentTrack].cover);\n      }\n    }\n  }\n\n  unmute() {\n    this.element.classList.remove('is-mute');\n    this.embed.muted = false;\n  }\n\n  cancelProgress() {\n    if (this.tick) {\n      window.cancelAnimationFrame(this.tick);\n      this.tick = undefined;\n    }\n  }\n\n  updateProgress() {\n    this.tick = window.requestAnimationFrame(() => {\n      if(!this.scrobble) this.slider.set(Math.abs((this.embed.currentTime * 100) / this.embed.duration));\n      this.updateProgress();\n    });\n  }\n\n}\n"
  },
  {
    "path": "src/audioplayer/snippets/audioplayer-basic.html",
    "content": "<div class=\"aui-audioplayer\">\n  <audio class=\"aui-audioplayer__embed\">\n    <source src=\"http://dev.strichpunkt-design.de/audi/brand-platform-preview/demo.mp3\" type=\"audio/mpeg\" />\n  </audio>\n  <input type=\"hidden\" class=\"aui-audioplayer__tracks\"value=\"[{&quot;title&quot;:&quot;Pink Floyd - Wish you were here&quot;,&quot;src&quot;:&quot;http://dev.strichpunkt-design.de/audi/brand-platform-preview/demo.mp3&quot;}]\" />\n  <div class=\"aui-audioplayer__chrome\">\n    <div class=\"aui-audioplayer__meta\">\n      <div class=\"aui-audioplayer__title\">Title of audio file</div>\n      <div class=\"aui-slider aui-js-slider aui-slider--single\" data-min=\"0\" data-max=\"100\">\n        <input type=\"hidden\" class=\"aui-slider__hidden-field\" value=\"50.00\" />\n      </div>\n      <div class=\"aui-audioplayer__time\">2:34 / 10:16</div>\n    </div>\n    <div class=\"aui-audioplayer__controls\">\n      <button class=\"aui-audioplayer__play aui-button aui-button--icon--large aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n        <div class=\"aui-audioplayer__icon-play\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-play-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-play-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n        <div class=\"aui-audioplayer__icon-pause\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-pause-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-pause-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n        <div class=\"aui-audioplayer__icon-replay\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-replay-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-replay-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n      </button>\n    </div>\n  </div>\n</div>\n&nbsp;<br/>\n<div class=\"aui-audioplayer aui-theme-light aui-color-gray20\">\n  <audio class=\"aui-audioplayer__embed\">\n    <source src=\"http://dev.strichpunkt-design.de/audi/brand-platform-preview/demo.mp3\" type=\"audio/mpeg\" />\n  </audio>\n  <input type=\"hidden\" class=\"aui-audioplayer__tracks\" value=\"[{&quot;title&quot;:&quot;Pink Floyd - Wish you were here&quot;,&quot;src&quot;:&quot;http://dev.strichpunkt-design.de/audi/brand-platform-preview/demo.mp3&quot;}]\" />\n  <div class=\"aui-audioplayer__chrome\">\n    <div class=\"aui-audioplayer__meta\">\n      <div class=\"aui-audioplayer__title\">Title of audio file</div>\n      <div class=\"aui-slider aui-js-slider aui-slider--single\" data-min=\"0\" data-max=\"100\">\n        <input type=\"hidden\" class=\"aui-slider__hidden-field\" value=\"50.00\" />\n      </div>\n      <div class=\"aui-audioplayer__time\">2:34 / 10:16</div>\n    </div>\n    <div class=\"aui-audioplayer__controls\">\n      <button class=\"aui-audioplayer__play aui-button aui-button--icon--large aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n        <div class=\"aui-audioplayer__icon-play\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-play-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-play-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n        <div class=\"aui-audioplayer__icon-pause\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-pause-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-pause-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n        <div class=\"aui-audioplayer__icon-replay\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-replay-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-replay-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n      </button>\n    </div>\n  </div>\n</div>\n\n"
  },
  {
    "path": "src/audioplayer/snippets/audioplayer-cover-small.html",
    "content": "<div class=\"aui-audioplayer aui-audioplayer--frameless\">\n  <div class=\"aui-audioplayer__chrome\">\n    <div class=\"aui-audioplayer__cover\"></div>\n    <div class=\"aui-audioplayer__meta\">\n      <div class=\"aui-audioplayer__title\">Title of audio file</div>\n      <div class=\"aui-slider aui-js-slider aui-slider--single\" data-min=\"0\" data-max=\"100\">\n        <input type=\"hidden\" class=\"aui-slider__hidden-field\" value=\"50.00\" />\n      </div>\n      <div class=\"aui-audioplayer__time\">2:34 / 10:16</div>\n    </div>\n    <div class=\"aui-audioplayer__controls\">\n      <button class=\"aui-audioplayer__play aui-button aui-button--icon--large aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n        <div class=\"aui-audioplayer__icon-play\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-play-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-play-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n        <div class=\"aui-audioplayer__icon-pause\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-pause-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-pause-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n        <div class=\"aui-audioplayer__icon-replay\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-replay-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-replay-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n      </button>\n    </div>\n  </div>\n</div>\n&nbsp;<br/>\n<div class=\"aui-audioplayer aui-audioplayer--frameless aui-theme-light aui-color-gray20\">\n  <div class=\"aui-audioplayer__chrome\">\n    <div class=\"aui-audioplayer__cover\"></div>\n    <div class=\"aui-audioplayer__meta\">\n      <div class=\"aui-audioplayer__title\">Title of audio file</div>\n      <div class=\"aui-slider aui-js-slider aui-slider--single\" data-min=\"0\" data-max=\"100\">\n        <input type=\"hidden\" class=\"aui-slider__hidden-field\" value=\"50.00\" />\n      </div>\n      <div class=\"aui-audioplayer__time\">2:34 / 10:16</div>\n    </div>\n    <div class=\"aui-audioplayer__controls\">\n      <button class=\"aui-audioplayer__play aui-button aui-button--icon--large aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n        <div class=\"aui-audioplayer__icon-play\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-play-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-play-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n        <div class=\"aui-audioplayer__icon-pause\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-pause-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-pause-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n        <div class=\"aui-audioplayer__icon-replay\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-replay-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-replay-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n      </button>\n    </div>\n  </div>\n</div>"
  },
  {
    "path": "src/audioplayer/snippets/audioplayer-download.html",
    "content": "<div class=\"aui-audioplayer\">\n  <div class=\"aui-audioplayer__chrome\">\n    <div class=\"aui-audioplayer__meta\">\n      <div class=\"aui-audioplayer__title\">Title of audio file</div>\n      <div class=\"aui-slider aui-js-slider aui-slider--single\" data-min=\"0\" data-max=\"100\">\n        <input type=\"hidden\" class=\"aui-slider__hidden-field\" value=\"50.00\" />\n      </div>\n      <div class=\"aui-audioplayer__time\">2:34 / 10:16</div>\n    </div>\n    <div class=\"aui-audioplayer__controls\">\n      <button class=\"aui-audioplayer__play aui-button aui-button--icon--large aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n        <div class=\"aui-audioplayer__icon-play\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-play-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-play-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n        <div class=\"aui-audioplayer__icon-pause\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-pause-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-pause-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n        <div class=\"aui-audioplayer__icon-replay\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-replay-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-replay-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n      </button>\n    </div>\n    <div class=\"aui-audioplayer__controls aui-audioplayer__controls--secondary\">\n      <div class=\"aui-button-group aui-button-group--icons\">\n        <button class=\"aui-audioplayer__mute aui-button aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n          <div class=\"aui-audioplayer__icon-mute\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-system-audio-off-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-system-audio-off-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n          <div class=\"aui-audioplayer__icon-unmute\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-system-audio-on-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-system-audio-on-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n        </button>\n        <button class=\"aui-audioplayer__play aui-button aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n          <div class=\"aui-audioplayer__icon-download\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-system-download-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-system-download-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n        </button>\n      </div>\n    </div>\n  </div>\n</div>\n&nbsp;<br/>\n<div class=\"aui-audioplayer aui-theme-light aui-color-gray20\">\n  <div class=\"aui-audioplayer__chrome\">\n    <div class=\"aui-audioplayer__meta\">\n      <div class=\"aui-audioplayer__title\">Title of audio file</div>\n      <div class=\"aui-slider aui-js-slider aui-slider--single\" data-min=\"0\" data-max=\"100\">\n        <input type=\"hidden\" class=\"aui-slider__hidden-field\" value=\"50.00\" />\n      </div>\n      <div class=\"aui-audioplayer__time\">2:34 / 10:16</div>\n    </div>\n    <div class=\"aui-audioplayer__controls\">\n      <button class=\"aui-audioplayer__play aui-button aui-button--icon--large aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n        <div class=\"aui-audioplayer__icon-play\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-play-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-play-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n        <div class=\"aui-audioplayer__icon-pause\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-pause-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-pause-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n        <div class=\"aui-audioplayer__icon-replay\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-replay-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-replay-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n      </button>\n    </div>\n    <div class=\"aui-audioplayer__controls aui-audioplayer__controls--secondary\">\n      <div class=\"aui-button-group aui-button-group--icons\">\n        <button class=\"aui-audioplayer__mute aui-button aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n          <div class=\"aui-audioplayer__icon-mute\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-system-audio-off-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-system-audio-off-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n          <div class=\"aui-audioplayer__icon-unmute\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-system-audio-on-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-system-audio-on-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n        </button>\n        <button class=\"aui-audioplayer__play aui-button aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n          <div class=\"aui-audioplayer__icon-download\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-system-download-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-system-download-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n        </button>\n      </div>\n    </div>\n  </div>\n</div>"
  },
  {
    "path": "src/audioplayer/snippets/audioplayer-playlist.html",
    "content": "<div class=\"aui-audioplayer\">\n  <div class=\"aui-audioplayer__chrome\">\n    <div class=\"aui-audioplayer__meta\">\n      <div class=\"aui-audioplayer__title\">Title of audio file</div>\n      <div class=\"aui-slider aui-js-slider aui-slider--single\" data-min=\"0\" data-max=\"100\">\n        <input type=\"hidden\" class=\"aui-slider__hidden-field\" value=\"50.00\" />\n      </div>\n      <div class=\"aui-audioplayer__time\">2:34 / 10:16</div>\n    </div>\n    <div class=\"aui-audioplayer__controls\">\n      <div class=\"aui-button-group aui-button-group--icons\">\n        <button class=\"aui-audioplayer__previous aui-button aui-button--icon--small aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n          <div class=\"aui-audioplayer__icon-previous\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-skip-previous-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-skip-previous-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n        </button>\n        <button class=\"aui-audioplayer__play aui-button aui-button--icon--large aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n          <div class=\"aui-audioplayer__icon-play\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-system-play-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-system-play-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n          <div class=\"aui-audioplayer__icon-pause\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-system-pause-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-system-pause-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n          <div class=\"aui-audioplayer__icon-replay\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-system-replay-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-system-replay-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n        </button>\n        <button class=\"aui-audioplayer__next aui-button aui-button--icon--small aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n          <div class=\"aui-audioplayer__icon-next\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-skip-next-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-skip-next-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n        </button>\n      </div>\n    </div>\n  </div>\n</div>\n&nbsp;<br/>\n<div class=\"aui-audioplayer aui-theme-light aui-color-gray20\">\n  <div class=\"aui-audioplayer__chrome\">\n    <div class=\"aui-audioplayer__meta\">\n      <div class=\"aui-audioplayer__title\">Title of audio file</div>\n      <div class=\"aui-slider aui-js-slider aui-slider--single\" data-min=\"0\" data-max=\"100\">\n        <input type=\"hidden\" class=\"aui-slider__hidden-field\" value=\"50.00\" />\n      </div>\n      <div class=\"aui-audioplayer__time\">2:34 / 10:16</div>\n    </div>\n    <div class=\"aui-audioplayer__controls\">\n      <div class=\"aui-button-group aui-button-group--icons\">\n        <button class=\"aui-audioplayer__previous aui-button aui-button--icon--small aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n          <div class=\"aui-audioplayer__icon-previous\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-skip-previous-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-skip-previous-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n        </button>\n        <button class=\"aui-audioplayer__play aui-button aui-button--icon--large aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n          <div class=\"aui-audioplayer__icon-play\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-system-play-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-system-play-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n          <div class=\"aui-audioplayer__icon-pause\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-system-pause-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-system-pause-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n          <div class=\"aui-audioplayer__icon-replay\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-system-replay-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-system-replay-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n        </button>\n        <button class=\"aui-audioplayer__next aui-button aui-button--icon--small aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n          <div class=\"aui-audioplayer__icon-next\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-skip-next-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-skip-next-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n        </button>\n      </div>\n    </div>\n  </div>\n</div>"
  },
  {
    "path": "src/audioplayer/snippets/audioplayer-volume-control.html",
    "content": "<div class=\"aui-audioplayer\">\n  <div class=\"aui-audioplayer__chrome\">\n    <div class=\"aui-audioplayer__meta\">\n      <div class=\"aui-audioplayer__title\">Title of audio file</div>\n      <div class=\"aui-slider aui-js-slider aui-slider--single\" data-min=\"0\" data-max=\"100\">\n        <input type=\"hidden\" class=\"aui-slider__hidden-field\" value=\"50.00\" />\n      </div>\n      <div class=\"aui-audioplayer__time\">2:34 / 10:16</div>\n    </div>\n    <div class=\"aui-audioplayer__controls\">\n      <button class=\"aui-audioplayer__play aui-button aui-button--icon--large aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n        <div class=\"aui-audioplayer__icon-play\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-play-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-play-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n        <div class=\"aui-audioplayer__icon-pause\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-pause-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-pause-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n        <div class=\"aui-audioplayer__icon-replay\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-replay-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-replay-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n      </button>\n    </div>\n    <div class=\"aui-audioplayer__controls aui-audioplayer__controls--secondary\">\n      <div class=\"aui-button-group aui-button-group--icons\">\n        <button class=\"aui-audioplayer__volume aui-button aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n          <div class=\"aui-audioplayer__icon-volume\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-audio-volume-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-audio-volume-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n        </button>\n        <button class=\"aui-audioplayer__play aui-button aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n          <div class=\"aui-audioplayer__icon-download\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-system-download-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-system-download-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n        </button>\n      </div>\n    </div>\n  </div>\n</div>\n&nbsp;<br/>\n<div class=\"aui-audioplayer aui-theme-light aui-color-gray20\">\n  <div class=\"aui-audioplayer__chrome\">\n    <div class=\"aui-audioplayer__meta\">\n      <div class=\"aui-audioplayer__title\">Title of audio file</div>\n      <div class=\"aui-slider aui-js-slider aui-slider--single\" data-min=\"0\" data-max=\"100\">\n        <input type=\"hidden\" class=\"aui-slider__hidden-field\" value=\"50.00\" />\n      </div>\n      <div class=\"aui-audioplayer__time\">2:34 / 10:16</div>\n    </div>\n    <div class=\"aui-audioplayer__controls\">\n      <button class=\"aui-audioplayer__play aui-button aui-button--icon--large aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n        <div class=\"aui-audioplayer__icon-play\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-play-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-play-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n        <div class=\"aui-audioplayer__icon-pause\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-pause-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-pause-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n        <div class=\"aui-audioplayer__icon-replay\">\n          <svg class=\"audiicon\">\n            <use xlink:href=\"#audiicon-system-replay-small\" class=\"audiicon-small\"></use>\n            <use xlink:href=\"#audiicon-system-replay-large\" class=\"audiicon-large\"></use>\n          </svg>\n        </div>\n      </button>\n    </div>\n    <div class=\"aui-audioplayer__controls aui-audioplayer__controls--secondary\">\n      <div class=\"aui-button-group aui-button-group--icons\">\n        <button class=\"aui-audioplayer__volume aui-button aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n          <div class=\"aui-audioplayer__icon-volume\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-audio-volume-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-audio-volume-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n        </button>\n        <button class=\"aui-audioplayer__play aui-button aui-js-response aui-button--icon aui-button--round\" type=\"button\">\n          <div class=\"aui-audioplayer__icon-download\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-system-download-small\" class=\"audiicon-small\"></use>\n              <use xlink:href=\"#audiicon-system-download-large\" class=\"audiicon-large\"></use>\n            </svg>\n          </div>\n        </button>\n      </div>\n    </div>\n  </div>\n</div>"
  },
  {
    "path": "src/badge/_badge.scss",
    "content": ".aui-badge {\n\n  $size: 24px;\n  $size-small: 8px;\n\n  &__dot {\n    display: inline-block;\n    font-family: $aui-font-wide;\n    font-weight: $aui-font-weight-normal;\n    line-height: $size;\n    border-radius: 50%;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    text-align: center;\n    transition: transform .25s $aui-easing, visibility .25s $aui-easing, color .25s $aui-easing .1s;\n    vertical-align: middle;\n\n    &--large {\n      width: $size;\n      height: $size;\n      font-size: 12px;\n    }\n\n    &--small {\n      width: $size-small;\n      height: $size-small;\n      margin:  $size-small;\n    }\n\n    &--signal-yellow {\n      border-radius: 0;\n      transform: rotate(45deg);\n      background-color: $aui-color-yellow;\n    }\n\n    &--signal-green {\n      background-color: $aui-color-green;\n    }\n\n    &--signal-red {\n      margin: $size-small 7px;\n      border-radius: 0;\n      width: 0;\n      height: 0;\n      border-style: solid;\n      border-width: 0 5px 8px 5px;\n      border-color: transparent transparent $aui-color-signal-red transparent;\n    }\n\n    &--charging-neon-green {\n      background-color: $aui-color-charging-neon-green;\n    }\n\n    &--charging-green {\n      background-color: $aui-color-charging-green;\n    }\n\n    &--charging-neon-blue {\n      background-color: $aui-color-charging-neon-blue;\n    }\n\n    &--charging-blue {\n      background-color: $aui-color-charging-blue;\n    }\n  }\n\n  &.is-hidden {\n    transform: scale(0);\n    color: transparent !important;\n    transition-delay: 0s;\n    visibility: hidden;\n  }\n\n  &--small-text {\n    font-size: 10px;\n  }\n\n\n  &--label {\n    display: inline-flex;\n    align-items: center;\n  }\n\n  &--icon {\n    display: inline-flex;\n    align-items: center;\n\n    .audiicon {\n      width: $aui-icon-size-small;\n      height: $aui-icon-size-small;\n    }\n  }\n\n  &__label {\n    //margin-left: 0.5rem;\n    font-size: 1rem;\n\n    &--small {\n      font-size: rem(12);\n    }\n\n    &--left {\n      //margin: 0 0.5rem 0 0;\n    }\n  }\n\n  &__icon {\n    //margin-left: 0.5rem;\n\n    &--left {\n      //margin: 0 0.5rem 0 0;\n    }\n  }\n\n  &.aui-color-text-light {\n    color: $aui-color-white;\n    stroke: $aui-color-white;\n    fill: $aui-color-white;\n  }\n}\n"
  },
  {
    "path": "src/badge/snippets/badge-charging-blue.html",
    "content": "<span class=\"aui-badge aui-badge__dot aui-badge__dot--small aui-badge__dot--charging-blue\"></span>"
  },
  {
    "path": "src/badge/snippets/badge-charging-green.html",
    "content": "<span class=\"aui-badge aui-badge__dot aui-badge__dot--small aui-badge__dot--charging-green\"></span>"
  },
  {
    "path": "src/badge/snippets/badge-danger.html",
    "content": "<span class=\"aui-badge aui-color-danger aui-color-text-light\">\n  <svg class=\"audiicon\"><use xlink:href=\"#audiicon-cancel-small\"></use></svg>\n</span>\n"
  },
  {
    "path": "src/badge/snippets/badge-hidden.html",
    "content": "<span class=\"aui-badge aui-badge__dot aui-badge__dot--large aui-color-signal-red aui-color-text-light is-hidden\">\n  99\n</span>\n"
  },
  {
    "path": "src/badge/snippets/badge-signal-green.html",
    "content": "<span class=\"aui-badge aui-badge--label\">\n  <span class=\"aui-badge__dot aui-badge__dot--small aui-badge__dot--signal-green\"></span>\n  <span class=\"aui-badge__label aui-badge__label--large\">Label large</span>\n</span>\n\n\n"
  },
  {
    "path": "src/badge/snippets/badge-signal-red.html",
    "content": "<span class=\"aui-badge aui-badge--label\">\n  <span class=\"aui-badge__dot ui-badge__dot aui-badge__dot--small aui-badge__dot--signal-red\"></span>\n  <span class=\"aui-badge__label aui-badge__label--large\">Label large</span>\n</span>"
  },
  {
    "path": "src/badge/snippets/badge-signal-yellow.html",
    "content": "<span class=\"aui-badge aui-badge--label\">\n  <span class=\"aui-badge__dot aui-badge__dot--small aui-badge__dot--signal-yellow\"></span>\n  <span class=\"aui-badge__label aui-badge__label--large\">Label large</span>\n</span>"
  },
  {
    "path": "src/badge/snippets/badge-single-digit.html",
    "content": "<span class=\"aui-badge aui-badge__dot aui-badge__dot--large aui-color-signal-red aui-color-text-light\">\n  8\n</span>\n"
  },
  {
    "path": "src/badge/snippets/badge-small-icon.html",
    "content": "<span class=\"aui-badge aui-badge--icon\">\n  <span class=\"aui-badge__dot aui-badge__dot--small aui-color-signal-red aui-color-text-light\"></span>\n  <svg class=\"aui-badge__icon audiicon\">\n    <use xlink:href=\"#audiicon-system-download-small\"></use>\n  </svg>\n</span>\n\n"
  },
  {
    "path": "src/badge/snippets/badge-small-label-small.html",
    "content": "<span class=\"aui-badge aui-badge--label\">\n  <span class=\"aui-badge__dot aui-badge__dot--small aui-color-signal-red aui-color-text-light\"></span>\n  <span class=\"aui-badge__label aui-badge__label--small\">Label small</span>\n</span>\n\n"
  },
  {
    "path": "src/badge/snippets/badge-small-label.html",
    "content": "<span class=\"aui-badge aui-badge--label\">\n  <span class=\"aui-badge__label aui-badge__label--left\">Label large left</span>\n  <span class=\"aui-badge__dot aui-badge__dot--small aui-color-signal-red aui-color-text-light\"></span>\n</span>\n\n"
  },
  {
    "path": "src/badge/snippets/badge-small-text.html",
    "content": "<span class=\"ui-badge aui-badge__dot aui-badge__dot--large aui-badge--small-text aui-color-signal-red aui-color-text-light\">\n  99+\n</span>\n"
  },
  {
    "path": "src/badge/snippets/badge-small.html",
    "content": "{# <span class=\"aui-badge aui-badge--small aui-color-signal-red aui-color-text-light\">\n  1\n</span> #}\n\n<span class=\"aui-badge\">\n  <span class=\"aui-badge__dot aui-badge__dot--small aui-color-signal-red aui-color-text-light\"></span>\n</span>\n\n"
  },
  {
    "path": "src/badge/snippets/badge-success.html",
    "content": "<span class=\"aui-badge aui-color-success aui-color-text-light\">\n  <svg class=\"audiicon\"><use xlink:href=\"#audiicon-select-small\"></use></svg>\n</span>\n"
  },
  {
    "path": "src/badge/snippets/badge-warning.html",
    "content": "<span class=\"aui-badge aui-color-warning aui-color-text-light\">\n  !\n</span>\n"
  },
  {
    "path": "src/badge/snippets/badge.html",
    "content": "<span class=\"aui-badge aui-badge__dot aui-badge__dot--large aui-color-signal-red aui-color-text-light\">\n  99\n</span>\n"
  },
  {
    "path": "src/breadcrumb/_breadcrumb-themes.scss",
    "content": ".aui-breadcrumb {\n  // Black color theme\n  &.aui-theme-black {\n    @extend %aui-breadcrumb-theme-light;\n\n    &.is-oversized::after {\n      background: linear-gradient(to right, $aui-color-black 5%, rgba($aui-color-black, 0) 100%);\n    }\n  }\n\n  // Silver color theme\n  &.aui-theme-silver {\n    @extend %aui-breadcrumb-theme-light;\n\n    &.is-oversized::after {\n      background: linear-gradient(to right, $aui-color-silver 5%, rgba($aui-color-silver, 0) 100%);\n    }\n  }\n\n  // Warm silver color theme\n  &.aui-theme-warmsilver {\n    @extend %aui-breadcrumb-theme-light;\n\n    &.is-oversized::after {\n      background: linear-gradient(to right, $aui-color-warmsilver 5%, rgba($aui-color-warmsilver, 0) 100%);\n    }\n  }\n\n  // Red color theme\n  &.aui-theme-red {\n    @extend %aui-breadcrumb-theme-light;\n\n    &.is-oversized::after {\n      background: linear-gradient(to right, $aui-color-red 5%, rgba($aui-color-red, 0) 100%);\n    }\n  }\n}\n\n%aui-breadcrumb-theme-light {\n  color: rgba(#fff, .6);\n\n  .aui-breadcrumb__item:last-child {\n    color: $aui-color-white;\n  }\n\n  .aui-breadcrumb__item + .aui-breadcrumb__item::before {\n    background-image: url('data:image/svg+xml,#{aui-svg-breadcrumb-divider(rgba(#fff, .5))}');\n  }\n\n  .aui-breadcrumb__action:hover {\n    color: rgba(#fff, .6);\n  }\n\n  .aui-breadcrumb__action:hover {\n    color: #fff;\n  }\n}\n"
  },
  {
    "path": "src/breadcrumb/_breadcrumb.scss",
    "content": ".aui-breadcrumb {\n  display: block;\n  overflow: hidden;\n  position: relative;\n  padding-top: unit(1);\n  color: $aui-color-gray40;\n  font-size: rem(11);\n  line-height: unit(4);\n  font-weight: $aui-font-weight-normal;\n\n  &__items {\n    // In order to make element scrollable:\n    display: block;\n    overflow: hidden;\n    white-space: nowrap;\n    // Reset list styles:\n    list-style: none;\n    padding: 0;\n  }\n\n  &__item {\n    display: inline-block;\n    max-width: 10em;\n    overflow: hidden;\n    text-overflow: ellipsis;\n\n    // Current page\n    &:last-child {\n      color: $aui-color-black ;\n      max-width: 22em;\n    }\n  }\n\n  // Divider\n  &__item + &__item::before {\n    content: '';\n    display: inline-block;\n    margin-left: .5em;\n    margin-right: .7em;\n    width: rem(5);\n    height: rem(8);\n    background: url('data:image/svg+xml,#{aui-svg-breadcrumb-divider(rgba(#000, .5))}') center center no-repeat;\n  }\n\n  &__action {\n    transition: color .15s linear;\n  }\n\n  &__action:hover {\n    color: #000;\n  }\n\n  // Added by JS, when element.offsetWidth > element.scrollWidth\n  &.is-oversized::after {\n    content: '';\n    display: block;\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 40px;\n    height: 100%;\n    background: linear-gradient(to right, #ffffff 5%, rgba(#ffffff, 0) 100%);\n  }\n}\n"
  },
  {
    "path": "src/breadcrumb/breadcrumb.js",
    "content": "import Component from '../component/component';\nimport ResizeObserver from '../util/resize-observer';\n\nconst SELECTOR_COMPONENT = '.aui-js-breadcrumb';\nconst CLASS_ITEMS = 'aui-breadcrumb__items';\nconst CLASS_IS_OVERSIZED = 'is-oversized';\n\n/**\n * Class constructor for Breadcrumb AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Breadcrumb extends Component {\n\n  /**\n   * Upgrades all Breadcrumb AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Breadcrumb(element));\n      }\n    });\n    return components;\n  };\n\n  constructor(element) {\n    super(element);\n  }\n\n  init() {\n    super.init();\n\n    this._items = this._element.querySelector(`.${CLASS_ITEMS}`);\n\n    this._resizeObserver = new ResizeObserver();\n    this._resizeObserver.resized.add(this._resizedHandler = () => this.update());\n\n    this.update();\n  }\n\n  update() {\n    this._checkSize();\n  }\n\n  dispose() {\n    super.dispose();\n\n    this._resizeObserver.resized.remove(this._resizedHandler);\n  }\n\n  _checkSize() {\n    if (this._items.scrollWidth > this._items.offsetWidth) {\n      this._items.scrollLeft = 9999;\n      this._element.classList.add(CLASS_IS_OVERSIZED);\n    } else {\n      this._element.classList.remove(CLASS_IS_OVERSIZED);\n    }\n  }\n}\n"
  },
  {
    "path": "src/breadcrumb/snippets/breadcrumb.html",
    "content": "<nav class=\"aui-breadcrumb aui-js-breadcrumb\" aria-label=\"Breadcrumbs\" role=\"navigation\">\n  <ol class=\"aui-breadcrumb__items\">\n    <li class=\"aui-breadcrumb__item\"><a class=\"aui-breadcrumb__action\" href=\"#\">Audi</a></li>\n    <li class=\"aui-breadcrumb__item\"><a class=\"aui-breadcrumb__action\" href=\"#\">Kundenbereich</a></li>\n    <li class=\"aui-breadcrumb__item\"><a class=\"aui-breadcrumb__action\" href=\"#\">Reparatur und Service</a></li>\n    <li class=\"aui-breadcrumb__item\"><a class=\"aui-breadcrumb__action\" href=\"#\">Audi Original Teile</a></li>\n    <li class=\"aui-breadcrumb__item\">Audi Original Staub- und Pollenfilter</li>\n  </ol>\n</nav>\n"
  },
  {
    "path": "src/breakpoint/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **breakpoint** component is … (text follows)\n\n### To include an AUI **breakpoint** component:\n\n```html\n<!-- Example follows ... -->\n```\n"
  },
  {
    "path": "src/breakpoint/_breakpoint.scss",
    "content": "// TODO Comment the use with js\nbody {\n  &::before {\n    content: 'default';\n    display: none;\n\n    @each $name, $size in $aui-breakpoint {\n      @include aui-respond-to($name) {\n        content: '#{$name}';\n      }\n    }\n  }\n}\n\n// Make viewport responsive\n//\n// @viewport is needed because IE 10+ doesn't honor <meta name=\"viewport\"> in\n// some cases. See http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/.\n// Eventually @viewport will replace <meta name=\"viewport\">. It's been manually\n// prefixed for forward-compatibility.\n@-moz-viewport {\n  width: device-width;\n}\n\n@-ms-viewport {\n  width: device-width;\n}\n\n@-o-viewport {\n  width: device-width;\n}\n\n@-webkit-viewport {\n  width: device-width;\n}\n\n@viewport {\n  width: device-width;\n}\n"
  },
  {
    "path": "src/button/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **button** component is an enhanced version of the standard HTML `<button>` element. A button consists of text and/or an icon that clearly communicates what action will occur when the user clicks or touches it. The AUI button component provides various types of buttons, and allows you to add both display and click effects.\n\nThe available button display types are *flat* (default), *primary*, *secondary*, *text*, and *icon*; any of these types may be initially or programmatically *disabled*. The *primary* and *secondary* button types may have an icon, either on the left or right side. The *icon* button types must not use text.\n\n### To include an AUI **button** component:\n\n&nbsp;1. Code a `<button>` element. Include any desired attributes and values, such as an id or event handler, and add a text caption or icon as appropriate.\n```html\n<button type=\"button\">Save</button>\n```\n&nbsp;2. Add one or more AUI classes, separated by spaces, to the button using the `class` attribute.\n```html\n<button class=\"aui-button aui-button--primary\" type=\"button\">Save</button>\n```\n\n&nbsp;3. All buttons must have the *Audi Response Effect*. Add Response class to button.\n```html\n<button class=\"aui-js-response aui-button aui-button--primary\" type=\"button\">Save</button>\n```\n\nThe button component is ready for use.\n\n#### Examples\n\nA flat button with padding on the sides.\n```html\n<button class=\"aui-js-response aui-button aui-button--padded\">Save</button>\n```\n\nA primary button.\n```html\n<button class=\"aui-js-response aui-button aui-button--primary\">Save</button>\n```\n\nA secondary button.\n```html\n<button class=\"aui-js-response aui-button aui-button--secondary\">Save</button>\n```\n\nA text button.\n```html\n<button class=\"aui-js-response aui-button aui-button--text\">Save</button>\n```\n\nAn icon button with the system icon *download*.\n```html\n<button class=\"aui-js-response aui-button aui-button--icon\">\n  <svg class=\"audiicon\" aria-hidden=\"true\">\n    <use xlink:href=\"#audiicon-system-download-small\"></use>\n  </svg>\n</button>\n```\n\nAn icon button with a large system icon.\n```html\n<button class=\"aui-js-response aui-button aui-button--icon aui-button--icon-large\">\n  <svg class=\"audiicon audiicon--large\" aria-hidden=\"true\">\n    <use xlink:href=\"#audiicon-system-download-large\"></use>\n  </svg>\n</button>\n```\n\n\n## Configuration options\n\nThe AUI CSS classes apply various predefined visual and behavioral enhancements to the button. The table below lists the available classes and their effects.\n\n| AUI class | Effect | Remarks |\n|-----------|--------|---------|\n| `aui-button` | Defines button as an AUI button component | Required |\n| (none) | Applies *flat* display effect to button | Default |\n| `aui-button--primary` | Applies *primary* (fill) display effect |  |\n| `aui-button--secondary` | Applies *secondary* (outline) display effect |  |\n| `aui-button--text` | Applies *text* (arrow) display effect |  |\n| `aui-button--icon` | Applies *icon* (outlined system icon) display effect | Only use system icons; no text |\n| `aui-button--icon-large` | Use together with large system icons | Mutually exclusive with *icon* |\n| `aui-button--padded` | Applies left and right padding | Mutually exclusive with *flat* and *text* |\n| `aui-js-response` | Applies *Response* click effect | Required; May be used in combination with any other classes |\n\n>**Note:** Disabled versions of all the available button types are provided, and are invoked with the standard HTML boolean attribute `disabled`. `<button class=\"aui-js-response aui-button aui-button--primary\" disabled>Primary Disabled</button>`. Alternatively, the `aui-button--disabled` class can be used to achieve the same result.\n>This attribute may be added or removed programmatically via scripting.\n"
  },
  {
    "path": "src/button/_button-themes.scss",
    "content": ".aui-button {\n\n  $aui-button-color: $aui-color-white;\n  $aui-button-color-hover: $aui-color-gray90;\n  $aui-button-color-primary: $aui-color-black;\n\n  $aui-button-border-color: $aui-color-white;\n  $aui-button-border-color-hover: $aui-color-gray80;\n\n  $aui-button-background: $aui-color-white;\n  $aui-button-background-hover: $aui-color-gray90;\n\n  &.aui-theme-light {\n    &.is-active,\n    &:active,\n    &:hover {\n      color: $aui-button-color-hover;\n      stroke: $aui-button-color-hover;\n      fill: $aui-button-color-hover;\n    }\n\n    &,\n    &.is-disabled,\n    &:disabled {\n      color: $aui-button-color;\n      stroke: $aui-button-color;\n      fill: $aui-button-color;\n    }\n\n    &.is-disabled,\n    &:disabled {\n      opacity: .30;\n    }\n  }\n\n  &--icon.aui-theme-light,\n  &--primary.aui-theme-light,\n  &--secondary.aui-theme-light {\n    &:focus {\n      @include shadow-focus-light;\n    }\n\n    &.is-disabled,\n    &:disabled,\n    &:hover {\n      box-shadow: none;\n    }\n  }\n\n  &--primary.aui-theme-light,\n  &--floating.aui-theme-light {\n    &,\n    &.is-active,\n    &:active,\n    &:hover {\n      color: $aui-button-color-primary;\n      stroke: $aui-button-color-primary;\n      fill: $aui-button-color-primary;\n    }\n\n    &.is-disabled,\n    &:disabled {\n      color: $aui-color-gray40;\n      stroke: $aui-color-gray40;\n      fill: $aui-color-gray40;\n    }\n\n    &.is-active,\n    &:active,\n    &:hover {\n      border-color: $aui-button-background-hover;\n      background-color: $aui-button-background-hover;\n    }\n\n    &,\n    &.is-disabled,\n    &:disabled {\n      border-color: $aui-button-background;\n      background-color: $aui-button-background;\n    }\n  }\n\n  &--secondary.aui-theme-light {\n    &.is-active,\n    &:active,\n    &:hover {\n      border-color: $aui-button-border-color-hover;\n    }\n\n    &,\n    &.is-disabled,\n    &:disabled {\n      border-color: $aui-button-border-color;\n    }\n  }\n\n  &--text.aui-theme-light &__text {\n    &::after {\n      background-image: url('data:image/svg+xml,#{aui-svg-arrow($aui-button-color)}');\n    }\n\n    &:hover::after {\n      background-image: url('data:image/svg+xml,#{aui-svg-arrow($aui-button-color-hover)}');\n    }\n  }\n\n  &--floating.aui-theme-light {\n    &,\n    &:focus,\n    &:hover {\n      @include shadow-dark;\n    }\n  }\n\n  &--fixed.aui-theme-light {\n    @include shadow-dark;\n  }\n}\n"
  },
  {
    "path": "src/button/_button.scss",
    "content": "$aui-button-font-size: 16 !default;\n$aui-button-font-size-rem: rem($aui-button-font-size) !default;\n$aui-button-icon-margin: 16 !default;\n$aui-button-floating-offset-x: 1.5rem !default;\n$aui-button-floating-offset-y: 1.5rem !default;\n$aui-button-color: $aui-color-black !default;\n$aui-button-color-hover: $aui-color-gray30 !default;\n$aui-button-color-disabled: $aui-color-gray70 !default;\n$aui-button-color-primary: $aui-color-white !default;\n$aui-button-border-color: $aui-color-black !default;\n$aui-button-border-color-hover: $aui-color-gray50 !default;\n$aui-button-background: $aui-color-black !default;\n$aui-button-background-hover: $aui-color-gray30 !default;\n$aui-button-padding: em(16, $aui-button-font-size) 0 em(16, $aui-button-font-size) 0 !default;\n$aui-button-stretch-max: 767px !default;\n\n.aui-button {\n  &.is-active,\n  &:active,\n  &:hover,\n  &:visited {\n    color: $aui-button-color-hover;\n    stroke: $aui-button-color-hover;\n    fill: $aui-button-color-hover;\n  };\n\n  & {\n    border-radius: 0;\n    cursor: pointer;\n    display: inline-block;\n    position: relative;\n    padding: $aui-button-padding;\n    outline: 0;\n    font-family: inherit;\n    font-size: $aui-button-font-size-rem;\n    font-weight: $aui-font-weight-normal;\n    //line-height: unit(4.8);\n    line-height: unit(6);\n    text-align: center;\n    text-decoration: none;\n    white-space: normal;\n    vertical-align: middle;\n    transition: all 250ms $aui-easing;\n    @include aui-remove-tap-highlight;\n  }\n\n  &,\n  &.is-disabled,\n  &:disabled {\n    color: $aui-button-color;\n    stroke: $aui-button-color;\n    fill: $aui-button-color;\n    border: 1px solid transparent;\n    background: transparent;\n  }\n\n  &.is-disabled,\n  &:disabled {\n    cursor: not-allowed;\n  }\n\n  &--bold {\n    font-weight: $aui-font-weight-bold;\n  }\n\n  &--padded,\n  &--primary,\n  &--secondary {\n    padding-left: 2rem;\n    padding-right: 2rem;\n  }\n\n  &--icon,\n  &--primary,\n  &--secondary {\n    &:focus {\n    //  @include shadow-focus; // adjusted to react library\n    }\n\n    &.is-disabled,\n    &:disabled,\n    &:hover {\n      box-shadow: none;\n    }\n  }\n\n  &--round {\n    &.is-disabled,\n    &:disabled {\n      color: $aui-button-color-disabled;\n      stroke: $aui-button-color-disabled;\n      fill: $aui-button-color-disabled;\n    }\n  }\n\n  &--floating,\n  &--primary {\n    &.is-active,\n    &:active,\n    &:hover {\n      border-color: $aui-button-background-hover;\n      background-color: $aui-button-background-hover;\n    }\n\n    &,\n    &.is-active,\n    &:active,\n    &:hover,\n    &:visited {\n      color: $aui-button-color-primary;\n      stroke: $aui-button-color-primary;\n      fill: $aui-button-color-primary;\n    }\n\n    &.is-disabled,\n    &:disabled {\n      color: $aui-color-white;\n      stroke: $aui-color-white;\n      fill: $aui-color-white;\n      border-color: $aui-button-color-disabled !important;\n      background-color: $aui-button-color-disabled !important;\n    }\n\n    &,\n    &.is-disabled,\n    &:disabled {\n      border-color: $aui-button-background;\n      background-color: $aui-button-background;\n    }\n  }\n\n  &--secondary {\n    &.is-active,\n    &:active,\n    &:hover {\n      border-color: $aui-button-border-color-hover;\n    };\n\n    &,\n    &.is-disabled,\n    &:disabled {\n      border-color: $aui-button-border-color;\n    }\n\n    &.is-disabled,\n    &:disabled {\n      color: $aui-button-color-disabled !important;\n      border-color: $aui-button-color-disabled !important;\n    }\n  }\n\n  &--text {\n    .aui-button__text::after {\n      content: '';\n      display: inline-block;\n      position: relative;\n      top: em(1, $aui-button-font-size);\n      margin-left: em(4, $aui-button-font-size);\n      width: 0.5em;\n      height: 0.8125em;\n      background: center no-repeat url('data:image/svg+xml,#{aui-svg-arrow($aui-button-color)}');\n      background-size: contain;\n      transition: transform 0.2s ease;\n    }\n\n    &:hover .aui-button__text::after {\n      background-image: url('data:image/svg+xml,#{aui-svg-arrow($aui-button-color-hover)}');\n      transform: translateX(5px);\n    }\n\n    &:disabled {\n      .aui-button__text {\n        color: $aui-button-color-disabled;\n      }\n    }\n\n    &.is-disabled .aui-button__text::after,\n    &:disabled .aui-button__text::after {\n      transform: none;\n      background-image: url('data:image/svg+xml,#{aui-svg-arrow($aui-button-color-disabled)}');\n    }\n  }\n\n  &--icon {\n    // System icon size without white space\n    width: 23px;\n    height: 23px;\n    padding: 0;\n    border: none;\n\n    .audiicon {\n      position: absolute;\n      top: 0;\n      left: 0;\n      margin: 0;\n      width: $aui-icon-size-small;\n      height: $aui-icon-size-small;\n    }\n  }\n\n  &--icon--large {\n    // Large system icon size without white space\n    width: 45px;\n    height: 45px;\n\n    .audiicon {\n      top: -1px;\n      left: -1px;\n      width: $aui-icon-size-large;\n      height: $aui-icon-size-large;\n\n      &-container--small {\n        display: none;\n      }\n\n      &-container--large {\n        display: inline;\n      }\n    }\n  }\n\n  &--round {\n    border-radius: 50%;\n  }\n\n  &--stretched {\n    width: 100%;\n    max-width: $aui-button-stretch-max;\n  }\n\n  &--sticky {\n    position: fixed;\n    left: 0;\n    bottom: 0;\n    @include shadow;\n  }\n\n  &--centered {\n    left: 50%;\n    transform: translateX(-50%);\n  }\n\n  &--floating {\n    position: fixed;\n    right: $aui-button-floating-offset-x;\n    bottom: $aui-button-floating-offset-y;\n    width: 45px;\n    height: 45px;\n    padding: 0;\n    z-index: $aui-button-floating-zindex;\n    @include shadow;\n\n    .audiicon {\n      position: absolute;\n      left: -1px;\n      top: -1px;\n      width: $aui-icon-size-large;\n      height: $aui-icon-size-large;\n\n      &-container--small {\n        display: none;\n      }\n\n      &-container--large {\n        display: inline;\n      }\n    }\n\n    &,\n    &:focus,\n    &:hover {\n      @include shadow;\n    }\n  }\n\n  &__text {\n    display: inline-block;\n    position: relative;\n    text-align: left;\n    // vertical-align: middle; REVIEW Increases button height by 1px; check if necessary\n  }\n\n  // Child elements\n  &__text-icon {\n    $_margin: em($aui-button-icon-margin, $aui-button-font-size);\n    display: inline-flex;\n    align-items: center;\n    position: relative;\n    text-align: left;\n    vertical-align: middle;\n\n    .audiicon {\n      display: inline-block;\n    }\n\n    .aui-button__text:first-child {\n      margin-right: $_margin;\n    }\n\n    .aui-button__text:not(:first-child) {\n      margin-left: $_margin;\n    }\n  }\n\n  // Firefox Button Height Fix\n  // @see https://davidwalsh.name/firefox-buttons\n  &::-moz-focus-inner {\n    border: 0;\n    padding: 0;\n  }\n}\n"
  },
  {
    "path": "src/button/snippets/button-bold.html",
    "content": "<button class=\"aui-button aui-button--bold aui-js-response\" type=\"button\">\n  <span class=\"aui-button__text\">Bold button</span>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-disabled.html",
    "content": "<button class=\"aui-button aui-js-response\" type=\"button\" disabled>\n  <span class=\"aui-button__text\">Button</span>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-floating.html",
    "content": "<button class=\"aui-button aui-button--floating aui-js-response\">\n  <svg class=\"audiicon audiicon--large\">\n    <use xlink:href=\"#audiicon-list-large\"></use>\n  </svg>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-icon-disabled.html",
    "content": "<button class=\"aui-button aui-button--round aui-button--icon aui-js-response\" disabled>\n  <svg class=\"audiicon\">\n    <use xlink:href=\"#audiicon-system-download-small\"></use>\n  </svg>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-icon-large-disabled.html",
    "content": "<button class=\"aui-button aui-button--round aui-button--icon aui-button--icon--large aui-js-response\" disabled>\n  <svg class=\"audiicon audiicon--large\">\n    <use xlink:href=\"#audiicon-system-download-large\"></use>\n  </svg>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-icon-large.html",
    "content": "<button class=\"aui-button aui-button--round aui-button--icon aui-button--icon--large aui-js-response\">\n  <svg class=\"audiicon audiicon--large\">\n    <use xlink:href=\"#audiicon-system-download-large\"></use>\n  </svg>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-icon.html",
    "content": "<button class=\"aui-button aui-button--round aui-button--icon aui-js-response\">\n  <svg class=\"audiicon\">\n    <use xlink:href=\"#audiicon-system-download-small\"></use>\n  </svg>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-primary-disabled.html",
    "content": "<button class=\"aui-button aui-button--primary aui-js-response\" type=\"button\" disabled>\n  <span class=\"aui-button__text\">Primary button</span>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-primary-sticky.html",
    "content": "<button class=\"aui-button aui-button--primary aui-button--stretched aui-button--sticky aui-button--centered aui-js-response\" type=\"button\">\n  <span class=\"aui-button__text\">Primary button</span>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-primary-with-icon-disabled.html",
    "content": "<button class=\"aui-button aui-button--primary aui-js-response\" type=\"button\" disabled>\n  <span class=\"aui-button__text-icon\">\n    <svg class=\"audiicon\">\n      <use xlink:href=\"#audiicon-search-small\"></use>\n    </svg>\n    <span class=\"aui-button__text\">Primary button</span>\n  </span>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-primary-with-icon-right-disabled.html",
    "content": "<button class=\"aui-button aui-button--primary aui-js-response\" type=\"button\" disabled>\n  <span class=\"aui-button__text-icon\">\n    <span class=\"aui-button__text\">Primary button</span>\n    <svg class=\"audiicon\">\n      <use xlink:href=\"#audiicon-erase-small\"></use>\n    </svg>\n  </span>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-primary-with-icon-right.html",
    "content": "<button class=\"aui-button aui-button--primary aui-js-response\" type=\"button\">\n  <span class=\"aui-button__text-icon\">\n    <span class=\"aui-button__text\">Primary button</span>\n    <svg class=\"audiicon\">\n      <use xlink:href=\"#audiicon-erase-small\"></use>\n    </svg>\n  </span>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-primary-with-icon.html",
    "content": "<button class=\"aui-button aui-button--primary aui-js-response\" type=\"button\">\n  <span class=\"aui-button__text-icon\">\n    <svg class=\"audiicon\">\n      <use xlink:href=\"#audiicon-search-small\"></use>\n    </svg>\n    <span class=\"aui-button__text\">Primary button</span>\n  </span>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-primary.html",
    "content": "<button class=\"aui-button aui-button--primary aui-js-response\" type=\"button\">\n  <span class=\"aui-button__text\">Primary button</span>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-secondary-disabled.html",
    "content": "<button class=\"aui-button aui-button--secondary aui-js-response\" type=\"button\" disabled>\n  <span class=\"aui-button__text\">Secondary button</span>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-secondary-with-icon-disabled.html",
    "content": "<button class=\"aui-button aui-button--secondary aui-js-response\" type=\"button\" disabled>\n  <span class=\"aui-button__text-icon\">\n    <svg class=\"audiicon\">\n      <use xlink:href=\"#audiicon-search-small\"></use>\n    </svg>\n    <span class=\"aui-button__text\">Secondary button</span>\n  </span>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-secondary-with-icon-right-disabled.html",
    "content": "<button class=\"aui-button aui-button--secondary aui-js-response\" type=\"button\" disabled>\n  <span class=\"aui-button__text-icon\">\n    <span class=\"aui-button__text\">Secondary button</span>\n    <svg class=\"audiicon\">\n      <use xlink:href=\"#audiicon-erase-small\"></use>\n    </svg>\n  </span>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-secondary-with-icon-right.html",
    "content": "<button class=\"aui-button aui-button--secondary aui-js-response\" type=\"button\">\n  <span class=\"aui-button__text-icon\">\n    <span class=\"aui-button__text\">Secondary button</span>\n    <svg class=\"audiicon\">\n      <use xlink:href=\"#audiicon-erase-small\"></use>\n    </svg>\n  </span>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-secondary-with-icon.html",
    "content": "<button class=\"aui-button aui-button--secondary aui-js-response\" type=\"button\">\n  <span class=\"aui-button__text-icon\">\n    <svg class=\"audiicon\">\n      <use xlink:href=\"#audiicon-search-small\"></use>\n    </svg>\n    <span class=\"aui-button__text\">Secondary button</span>\n  </span>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-secondary.html",
    "content": "<button class=\"aui-button aui-button--secondary aui-js-response\" type=\"button\">\n  <span class=\"aui-button__text\">Secondary button</span>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-text-disabled.html",
    "content": "<button class=\"aui-js-response aui-button aui-button--text aui-js-response\" type=\"button\" disabled>\n  <span class=\"aui-button__text\">Text button</span>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button-text.html",
    "content": "<button class=\"aui-button aui-button--text aui-js-response\" type=\"button\">\n  <span class=\"aui-button__text\">Text button</span>\n</button>\n"
  },
  {
    "path": "src/button/snippets/button.html",
    "content": "<button class=\"aui-button aui-js-response\" type=\"button\">\n  <span class=\"aui-button__text\">Button</span>\n</button>\n"
  },
  {
    "path": "src/button-group/README.md",
    "content": "---\ntitle: Button Group\n---\n\n## Introduction\n\nThe Audi UI (AUI) **button-group** component is … (text follows)\n\n### To include an AUI **button-group** component:\n\n```html\n<!-- Example follows ... -->\n```\n"
  },
  {
    "path": "src/button-group/_button-group.scss",
    "content": ".aui-button-group {\n  $button-spacing: unit(0.8);\n\n  display: inline-flex;\n  flex-flow: row wrap;\n  align-items: center;\n  // Fix an issue with positioning in IE10+\n  vertical-align: top;\n\n  // Remove button margin\n  margin-right: ($button-spacing * -1);\n  margin-bottom: ($button-spacing * -1);\n\n  .aui-button {\n    flex: 1 1 auto;\n    margin: 0 $button-spacing $button-spacing 0;\n\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active,\n    &.is-active {\n      z-index: 2;\n    }\n  }\n\n  // The Icon-Buttons must not scale\n  .aui-button--icon {\n    flex: 0 0 auto;\n  }\n\n  // A Button-Group, that always stretch to full width of parent\n  &--block {\n    display: flex;\n  }\n\n  // A Button-Group, that only contains Text-Buttons\n  &--texts {\n    $button-spacing: unit(4.8);\n\n    margin-right: ($button-spacing * -1);\n    margin-bottom: ($button-spacing * -1);\n\n    .aui-button {\n      margin: 0 $button-spacing $button-spacing 0;\n    }\n  }\n\n  // A Button-Group, that only contains Icon-Buttons\n  &--icons {\n    $button-spacing: unit(2.4);\n\n    margin-right: ($button-spacing * -1);\n    margin-bottom: ($button-spacing * -1);\n\n    .aui-button {\n      margin: 0 $button-spacing $button-spacing 0;\n    }\n  }\n}\n"
  },
  {
    "path": "src/button-group/snippets/button-group-icons.html",
    "content": "<!-- Button Group of system icon buttons -->\n<div class=\"aui-button-group aui-button-group--icons\">\n  <button class=\"aui-js-response aui-button aui-button--icon aui-button--icon--large aui-button--round\">\n    <svg class=\"audiicon audiicon--large\">\n      <use xlink:href=\"#audiicon-system-favorites-large\"></use>\n    </svg>\n  </button>\n  <button class=\"aui-js-response aui-button aui-button--icon aui-button--icon--large aui-button--round\">\n    <svg class=\"audiicon audiicon--large\">\n      <use xlink:href=\"#audiicon-system-download-large\"></use>\n    </svg>\n  </button>\n  <button class=\"aui-js-response aui-button aui-button--icon aui-button--icon--large aui-button--round\">\n    <svg class=\"audiicon audiicon--large\">\n      <use xlink:href=\"#audiicon-system-help-large\"></use>\n    </svg>\n  </button>\n</div>\n"
  },
  {
    "path": "src/button-group/snippets/button-group-primary-secondary.html",
    "content": "<!-- Button Group of primary and secondary buttons -->\n<div class=\"aui-button-group\">\n  <button class=\"aui-js-response aui-button aui-button--primary\" type=\"button\">\n    <span class=\"aui-button__text\">Primary button</span>\n  </button>\n  <button class=\"aui-js-response aui-button aui-button--secondary\" type=\"button\">\n    <span class=\"aui-button__text\">Secondary button</span>\n  </button>\n</div>\n"
  },
  {
    "path": "src/button-group/snippets/button-group-two-secondary.html",
    "content": "<!-- Button Group of two secondary buttons -->\n<div class=\"aui-button-group\">\n  <button class=\"aui-js-response aui-button aui-button--secondary\" type=\"button\">\n    <span class=\"aui-button__text\">Secondary button</span>\n  </button>\n  <button class=\"aui-js-response aui-button aui-button--secondary\" type=\"button\">\n    <span class=\"aui-button__text\">Secondary button</span>\n  </button>\n</div>\n"
  },
  {
    "path": "src/button-group/snippets/button-group-two-text.html",
    "content": "<!-- Button Group of two text buttons -->\n<div class=\"aui-button-group aui-button-group--texts\">\n  <button class=\"aui-js-response aui-button aui-button--text\" type=\"button\">\n    <span class=\"aui-button__text\">Text button</span>\n  </button>\n  <button class=\"aui-js-response aui-button aui-button--text\" type=\"button\">\n    <span class=\"aui-button__text\">Text button</span>\n  </button>\n</div>\n"
  },
  {
    "path": "src/card/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **card** component is … (text follows)\n\n### To include an AUI **card** component:\n"
  },
  {
    "path": "src/card/_card.scss",
    "content": ".aui-card-grid {\n  display: flex;\n  flex-flow: row wrap;\n  margin: #{$aui-card-spacing / -2};\n\n  .aui-card-grid {\n    margin: 0;\n  }\n\n  &__item {\n    display: flex;\n    flex-flow: row wrap;\n    align-items: stretch;\n    justify-content: flex-start;\n    flex: 1 1 auto;\n    width: $aui-layout-min-width;\n  }\n\n  &__item--column {\n    flex-direction: column;\n  }\n}\n\n.aui-card {\n  flex: 1 1 auto;\n  display: flex;\n  flex-direction: column;\n  position: relative;\n  margin: #{$aui-card-spacing / 2};\n  width: calc(100% - #{$aui-card-spacing}); // IE fix\n  background-repeat: no-repeat;\n  background-position: 50% 50%;\n  background-size: cover;\n  background-origin: padding-box;\n  background-attachment: scroll;\n  transition: transform .15s $aui-easing, box-shadow .15s $aui-easing;\n\n  &__cover {\n    display: block;\n\n    &-image {\n      display: block;\n      width: 100%;\n      height: auto;\n    }\n  }\n\n  &__body {\n    flex: 1 1 auto;\n    display: flex;\n    flex-direction: column;\n  }\n\n  &__content {\n    padding: unit(5); // TODO Laut Laoyut 6, dann passen aber nicht 2 System Icons nebeneinander\n\n    &--bottom {\n      margin-top: auto;\n    }\n  }\n\n  &__media {\n    text-align: center;\n\n    img {\n      display: block;\n      width: 100%;\n      height: auto;\n    }\n  }\n\n  /**\n   * Variant: Action\n   */\n  &--action:hover,\n  &--action:focus {\n    z-index: 1;\n    outline: none;\n    @include shadow;\n    transform: translateY(unit(-1));\n  }\n\n  /**\n   * Variant: Cover\n   */\n   &--cover {\n     flex-direction: row;\n   }\n\n   &--cover &__cover {\n     flex: 1 1 auto;\n   }\n\n   &--cover &__body {\n     position: absolute;\n     top: 0;\n     right: 0;\n     bottom: 0;\n     left: 0;\n     overflow-x: hidden;\n     overflow-y: auto;\n     -webkit-overflow-scrolling: touch;\n     z-index: 1;\n   }\n}\n"
  },
  {
    "path": "src/card/snippets/card-actions.html",
    "content": "<div class=\"aui-card aui-color-gray95 aui-color-text-dark\">\n  <div class=\"aui-card__body\">\n    <div class=\"aui-card__content\">\n      <h2 class=\"aui-headline-5\">\n        Headline\n      </h2>\n      <p class=\"aui-shortread\">\n        And, now Your Highness, we will discuss the location of your hidden <strong>Rebel base</strong>.\n      </p>\n    </div>\n    <div class=\"aui-card__content aui-card__content--bottom\">\n      <div class=\"aui-button-group\">\n        <button class=\"aui-button aui-button--primary aui-js-response\" type=\"button\">\n          <span class=\"aui-button__text\">Action</span>\n        </button>\n        <button class=\"aui-button aui-button--secondary aui-js-response\" type=\"button\">\n          <span class=\"aui-button__text\">Action</span>\n        </button>\n      </div>\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "src/checkbox/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **checkbox** component is … (text follows)\n\n### To include an AUI **checkbox** component:\n"
  },
  {
    "path": "src/checkbox/_checkbox-themes.scss",
    "content": ".aui-checkbox {\n  /**\n   * Theme: light\n   */\n  &.aui-theme-light {\n    $aui-checkbox-color-text: $aui-color-gray95;\n    $aui-checkbox-color-text-hover: $aui-color-white;\n    $aui-checkbox-color-border: $aui-color-gray50;\n    $aui-checkbox-color-border-hover: $aui-color-white;\n    $aui-checkbox-color-border-invalid: $aui-color-invalid;\n    $aui-checkbox-color-tick: $aui-checkbox-color-text;\n\n    color: $aui-checkbox-color-text;\n\n    .aui-checkbox__box {\n      border-color: $aui-checkbox-color-border;\n    }\n\n    .aui-checkbox__tick {\n      background-image: url('data:image/svg+xml,#{aui-svg-tick($aui-checkbox-color-tick)}');\n    }\n\n    /**\n    * States\n    */\n    // Hover state\n    &:hover:not(.is-disabled) {\n      color: $aui-checkbox-color-text-hover;\n\n      .aui-checkbox__box {\n        border-color: $aui-checkbox-color-border-hover;\n      }\n    }\n\n    // Focus state\n    .aui-checkbox__input:focus ~ .aui-checkbox__box {\n      @include shadow-focus-light;\n    }\n\n    // Invalid states\n    &.is-invalid,\n    &.is-invalid .aui-checkbox__label {\n      color: $aui-field-error-color;\n    }\n\n    &.is-invalid .aui-checkbox__tick {\n      background-image: url('data:image/svg+xml,#{aui-svg-tick($aui-color-invalid)}');\n    }\n\n    &.is-invalid .aui-checkbox__box,\n    &.is-invalid:hover .aui-checkbox__box {\n      border-color: $aui-checkbox-color-border-invalid;\n    }\n  }\n}\n"
  },
  {
    "path": "src/checkbox/_checkbox.scss",
    "content": "$aui-checkbox-box-width: 1.5em !default;\n$aui-checkbox-tick-size: .75em !default;\n$aui-checkbox-text-spacing: 1em !default;\n$aui-checkbox-color-text: $aui-color-gray20 !default;\n$aui-checkbox-color-text-hover: $aui-color-black !default;\n$aui-checkbox-color-border: $aui-color-gray50 !default;\n$aui-checkbox-color-border-hover: $aui-color-black !default;\n$aui-checkbox-color-border-invalid: $aui-color-invalid !default;\n$aui-checkbox-color-border-disabled: $aui-color-gray70 !default;\n$aui-checkbox-color-tick: $aui-color-black !default;\n\n.aui-checkbox {\n  display: inline-block;\n  position: relative;\n  font-weight: $aui-font-weight-normal;\n  line-height: $aui-field-line-height;\n  color: $aui-checkbox-color-text;\n  cursor: pointer;\n  @include aui-remove-tap-highlight;\n\n  .aui-js & {\n    padding-left: $aui-checkbox-box-width + $aui-checkbox-text-spacing;\n  }\n\n  .aui-js &__input {\n    // Visually hide input\n    @extend %aui-hidden-input;\n  }\n\n  &__label {\n    &--optional {\n      color: $aui-color-gray40;\n    }\n  }\n\n  &__box {\n    display: none;\n    overflow: hidden;\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: $aui-checkbox-box-width;\n    height: $aui-checkbox-box-width;\n    border: 1px solid $aui-checkbox-color-border;\n    transition: box-shadow .15s linear, border .15s linear;\n    cursor: pointer;\n    pointer-events: none;\n    z-index: 1;\n\n    .aui-js & {\n      display: inline-block;\n    }\n  }\n\n  &__tick {\n    display: block;\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    width: $aui-checkbox-tick-size;\n    height: $aui-checkbox-tick-size;\n    transform: translate(-50%, -50%);\n    background: url('data:image/svg+xml,#{aui-svg-tick($aui-checkbox-color-tick)}') center center no-repeat;\n    opacity: 0;\n    transition: opacity .15s $aui-easing;\n    pointer-events: none;\n  }\n\n  // &__error {\n  //   display: block;\n  //   margin-top: unit(2);\n  //   font-size: rem(13);\n  //   line-height: unit(5);\n  //   color: $aui-field-error-color;\n  //   transition: color .25s linear;\n  // }\n\n  &__error {\n    display: flex;\n    align-items: center;\n    line-height: $aui-field-error-line-height;\n    margin-top: unit(3.5);\n    font-size: rem(13);\n    color: $aui-field-error-color;\n\n    &::before {\n      content: '';\n      display: inline-block;\n      line-height: $aui-field-error-line-height;\n      margin-right: rem(16px);\n      width: 40px;\n      height: 24px;\n      background: url('data:image/svg+xml,#{aui-svg-caution($aui-field-error-color)}') center center no-repeat;\n\n      @include aui-respond-to('large') {\n        margin-right: unit(2.5);\n        width: 36px;\n        height: 24px;\n      }\n    }\n  }\n\n  /**\n   * Variant: stretch\n   */\n  &--stretch {\n    width: 100%;\n  }\n\n  /**\n   * Variant: box-right\n   */\n  .aui-js &--box-right {\n    padding-left: 0;\n    padding-right: $aui-checkbox-box-width + $aui-checkbox-text-spacing;\n\n    .aui-checkbox__box {\n      left: auto;\n      right: 0;\n    }\n  }\n\n  /**\n   * Variant: dropdown-option\n   */\n  .aui-js &--dropdown-option {\n    width: 100%;\n    padding-left: 0;\n    padding-right: $aui-checkbox-box-width + $aui-checkbox-text-spacing;\n\n    .aui-checkbox__box {\n      left: auto;\n      right: 0;\n    }\n  }\n\n  /**\n   * States\n   */\n  // Hover state\n  &:hover:not(.is-disabled) {\n    color: $aui-checkbox-color-text-hover;\n\n    .aui-checkbox__box {\n      border-color: $aui-checkbox-color-border-hover;\n    }\n  }\n\n  // Focus state\n  // &__input:focus ~ .aui-checkbox__box {\n  //   @include shadow-focus;\n  // }\n\n  // Disabled state\n  &.is-disabled {\n    //opacity: $aui-field-disabled-opacity;\n    color: $aui-checkbox-color-border-disabled;\n    cursor: not-allowed;\n  }\n\n  // Checked state\n  &.is-checked &__tick {\n    opacity: 1;\n  }\n\n  // Invalid states\n  &.is-invalid,\n  &.is-invalid &__label {\n    color: $aui-field-error-color;\n  }\n\n  &.is-invalid &__tick {\n    background-image: url('data:image/svg+xml,#{aui-svg-tick($aui-color-invalid)}');\n  }\n\n  &.is-invalid &__box,\n  &.is-invalid:hover &__box {\n    border-color: $aui-checkbox-color-border-invalid;\n  }\n}\n"
  },
  {
    "path": "src/checkbox/checkbox.js",
    "content": "import Component from '../component/component';\n\nconst NAMESPACE = 'auiCheckbox';\nconst SELECTOR_COMPONENT = '.aui-js-checkbox';\nconst CLASS_INPUT = 'aui-checkbox__input';\nconst CLASS_LABEL = 'aui-checkbox__label';\nconst CLASS_BOX = 'aui-checkbox__box';\nconst CLASS_TICK = 'aui-checkbox__tick';\nconst CLASS_IS_FOCUS = 'is-focused';\nconst CLASS_IS_CHECKED = 'is-checked';\nconst CLASS_IS_DISABLED = 'is-disabled';\n\n/**\n * Class constructor for Checkbox AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Checkbox extends Component {\n\n  /**\n   * Upgrades all Checkbox AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Checkbox(element));\n      }\n    });\n    return components;\n  };\n\n  /**\n   * Returns all AUI component instances within the given container\n   * @param {HTMLElement} container The container element to search for components\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static get(container = document) {\n    let components = [];\n    if (container) {\n      Array.from(container.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n        components.push(element.auiCheckbox);\n      });\n    }\n    return components;\n  }\n\n  constructor(element) {\n    super(element, NAMESPACE);\n  }\n\n  init() {\n    super.init();\n\n    this._input = this._element.querySelector(`.${CLASS_INPUT}`);\n    this._input.addEventListener('change', this._changeHandler = (event) => this._onChange(event));\n    this._input.addEventListener('focus', this._focusHandler = (event) => this._onFocus(event));\n    this._input.addEventListener('blur', this._blurHandler = (event) => this._onBlur(event));\n\n    // Insert box with tick after label element:\n    this._label = this._element.querySelector(`.${CLASS_LABEL}`);\n    let box = document.createElement('span');\n    box.classList.add(CLASS_BOX);\n    this._label.parentNode.insertBefore(box, this._label.nextSibling);\n    let tick = document.createElement('span');\n    tick.classList.add(CLASS_TICK);\n    box.appendChild(tick);\n\n    this.updateClasses();\n  }\n\n  updateClasses() {\n    this.checkDisabled();\n    this.checkToggleState();\n    this.checkFocus();\n  }\n\n  /**\n   * Check the disabled state and update field accordingly.\n   */\n  checkDisabled() {\n    if (this._input.disabled) {\n      this._element.classList.add(CLASS_IS_DISABLED);\n    } else {\n      this._element.classList.remove(CLASS_IS_DISABLED);\n    }\n  }\n\n  /**\n   * Check the toggle state and update field accordingly.\n   */\n  checkToggleState() {\n    if (this._input.checked) {\n      this._element.classList.add(CLASS_IS_CHECKED);\n    } else {\n      this._element.classList.remove(CLASS_IS_CHECKED);\n    }\n  }\n\n  /**\n   * Check the focus state and update field accordingly.\n   */\n  checkFocus() {\n    if (Boolean(this._element.querySelector(':focus'))) {\n      this._element.classList.add(CLASS_IS_FOCUS);\n    } else {\n      this._element.classList.remove(CLASS_IS_FOCUS);\n    }\n  }\n\n  /**\n   * Enable checkbox\n   */\n  enable() {\n    this._input.disabled = false;\n    this.updateClasses();\n  }\n\n  /**\n   * Disable checkbox\n   */\n  disable() {\n    this._input.disabled = true;\n    this.updateClasses();\n  }\n\n  /**\n   * Check checkbox\n   */\n  check() {\n    this._input.checked = true;\n    this.updateClasses();\n  }\n\n  /**\n   * Uncheck checkbox\n   */\n  uncheck() {\n    this._input.checked = false;\n    this.updateClasses();\n  }\n\n  /**\n   * Uncheck checkbox\n   */\n  toggle() {\n    if (this._input.checked) {\n      this.uncheck();\n    } else {\n      this.check();\n    }\n  }\n\n  /**\n   * Dispose component\n   */\n  dispose() {\n    super.dispose();\n\n    this._input.removeEventListener('change', this._changeHandler);\n    this._input.removeEventListener('focus', this._focusHandler);\n    this._input.removeEventListener('blur', this._blurHandler);\n\n    this._element.removeChild(this._element.querySelector(`.${CLASS_BOX}`));\n  }\n\n  /**\n   * Event Handler\n   */\n\n  _onChange(event) {\n    this.updateClasses();\n  }\n\n  // TODO Find out why unfocus is triggered on mousedown\n  _onFocus(event) {\n    this._element.classList.add(CLASS_IS_FOCUS);\n  }\n\n  _onBlur(event) {\n    this._element.classList.remove(CLASS_IS_FOCUS);\n  }\n\n  /**\n   * Getter and Setter\n   */\n\n  get input() {\n    return this._input;\n  }\n\n  get checked() {\n    return this._input.checked = true;\n  }\n\n  set checked(value) {\n    if (value) {\n      this.check();\n    } else {\n      this.uncheck();\n    }\n  }\n\n  get disabled() {\n    return this._input.disabled = true;\n  }\n\n  set disabled(value) {\n    if (value) {\n      this.disable();\n    } else {\n      this.enable();\n    }\n  }\n}\n"
  },
  {
    "path": "src/checkbox/snippets/checkbox-checked-disabled.html",
    "content": "<label class=\"aui-checkbox aui-js-checkbox is-checked is-disabled\">\n  <input class=\"aui-checkbox__input\" type=\"checkbox\" checked disabled>\n  <span class=\"aui-checkbox__label\">Text</span>\n</label>\n"
  },
  {
    "path": "src/checkbox/snippets/checkbox-checked-invalid.html",
    "content": "<label class=\"aui-checkbox aui-js-checkbox is-checked is-invalid\">\n  <input class=\"aui-checkbox__input\" type=\"checkbox\" checked invalid>\n  <span class=\"aui-checkbox__label\">Text</span>\n  <span class=\"aui-checkbox__error\">Error messages that reassure users can make it easy for them to correct their mistakes and continue with the form.</span>\n</label>\n"
  },
  {
    "path": "src/checkbox/snippets/checkbox-checked.html",
    "content": "<label class=\"aui-checkbox aui-js-checkbox is-checked\">\n  <input class=\"aui-checkbox__input\" type=\"checkbox\" checked>\n  <span class=\"aui-checkbox__label\">Text</span>\n</label>\n"
  },
  {
    "path": "src/checkbox/snippets/checkbox-disabled.html",
    "content": "<label class=\"aui-checkbox aui-js-checkbox is-disabled\">\n  <input class=\"aui-checkbox__input\" type=\"checkbox\" disabled>\n  <span class=\"aui-checkbox__label\">Text</span>\n</label>\n"
  },
  {
    "path": "src/checkbox/snippets/checkbox-invalid.html",
    "content": "<label class=\"aui-checkbox aui-js-checkbox is-invalid\">\n  <input class=\"aui-checkbox__input\" type=\"checkbox\" invalid>\n  <span class=\"aui-checkbox__label\">Text</span>\n  <span class=\"aui-checkbox__error\">Error messages that reassure users can make it easy for them to correct their mistakes and continue with the form.</span>\n</label>\n"
  },
  {
    "path": "src/checkbox/snippets/checkbox.html",
    "content": "<label class=\"aui-checkbox aui-js-checkbox\">\n  <input class=\"aui-checkbox__input\" type=\"checkbox\">\n  <span class=\"aui-checkbox__label\">Text <span class=\"aui-checkbox__label--optional\">(optional)</span></span>\n</label>\n"
  },
  {
    "path": "src/color/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **color** component is … (text follows)\n\n### To include an AUI **color** component:\n"
  },
  {
    "path": "src/color/_color.scss",
    "content": ".aui-color {\n  &-white {\n    background-color: $aui-color-white;\n  }\n\n  &-black {\n    background-color: $aui-color-black;\n  }\n\n  &-silver {\n    background-color: $aui-color-silver;\n  }\n\n  &-warmsilver {\n    background-color: $aui-color-warmsilver;\n  }\n\n  &-green,\n  &-success {\n    background-color: $aui-color-green;\n  }\n\n  &-warning,\n  &-yellow {\n    background-color: $aui-color-yellow;\n  }\n\n  &-danger,\n  &-red {\n    background-color: $aui-color-red;\n  }\n\n  &-danger,\n  &-progressive-red {\n    background-color: $aui-color-progressive-red;\n  }\n\n  &-signal-red {\n    background-color: $aui-color-signal-red;\n  }\n\n  &-gray10 {\n    background-color: $aui-color-gray10;\n  }\n\n  &-gray20 {\n    background-color: $aui-color-gray20;\n  }\n\n  &-gray30 {\n    background-color: $aui-color-gray30;\n  }\n\n  &-gray40 {\n    background-color: $aui-color-gray40;\n  }\n\n  &-gray50 {\n    background-color: $aui-color-gray50;\n  }\n\n  &-gray60 {\n    background-color: $aui-color-gray60;\n  }\n\n  &-gray70 {\n    background-color: $aui-color-gray70;\n  }\n\n  &-gray80 {\n    background-color: $aui-color-gray80;\n  }\n\n  &-gray85 {\n    background-color: $aui-color-gray85;\n  }\n\n  &-gray90 {\n    background-color: $aui-color-gray90;\n  }\n\n  &-gray95 {\n    background-color: $aui-color-gray95;\n  }\n}\n\n.aui-color-text {\n  &-light {\n    color: $aui-color-light;\n  }\n\n  &-dark {\n    color: $aui-color-dark;\n  }\n\n  &-green,\n  &-success {\n    color: $aui-color-green;\n  }\n\n  &-warning,\n  &-yellow {\n    color: $aui-color-yellow;\n  }\n\n  &-danger,\n  &-red {\n    color: $aui-color-red;\n  }\n}\n"
  },
  {
    "path": "src/component/component.js",
    "content": "const CLASS_IS_UPGRADED = 'is-upgraded';\n\nconst SVG_NS = 'http://www.w3.org/2000/svg';\n\n/**\n * Class constructor for abstract AUI Component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Component {\n\n  /**\n   * Check if an element is upgraded.\n   * @param {HTMLElement} element The element to test if its already be upgraded.\n   * @returns {boolean} Returns true if element is already upgraded\n   */\n  static isElementUpgraded(element) {\n    return element.classList.contains(CLASS_IS_UPGRADED);\n  }\n\n  /**\n   * Constructor\n   * @constructor\n   * @param {HTMLElement} element The element of the AUI component.\n   * @param {String} namespace The namespace of the AUI component, like `auiComponent`.\n   */\n  constructor(element, namespace) {\n    this._element = element;\n\n    if (this._element) {\n      if (namespace) {\n        this._element[namespace] = this;\n      }\n      this.init();\n    }\n  }\n\n  /**\n   * Initialize component\n   */\n  init() {\n    this._element.classList.add(CLASS_IS_UPGRADED);\n  }\n\n  /**\n   * Dispose component\n   */\n  dispose() {\n    this._element.classList.remove(CLASS_IS_UPGRADED);\n  }\n\n  /**\n   * Remove a child element from its parent.\n   * @param {HTMLElement} childNode The element to remove.\n   */\n  removeChild(childNode) {\n    if (childNode && childNode.parentNode) {\n      if (this.isIE()) {\n        childNode.removeNode(true);\n      } else {\n        childNode.remove();\n      }\n    }\n  }\n\n  /**\n   * Creates an HTML element and sets the given CSS classes and attributes.\n   * @param {string} tagName is a string that specifies the type of element to be created.\n   * @param {Array} classes is an array of class names to set, e.g. ['aui-class-1', 'aui-class-2'].\n   * @param {Object} attributes is an object with attributes to set, e.g. {width: 100}.\n   * @returns {HTMLElement} The created element.\n   */\n  createElement(tagName, classes, attributes) {\n    let element = document.createElement(tagName);\n    if (classes && classes.length) {\n      element.classList.add.apply(element.classList, classes);\n    }\n    for (var attr in attributes) {\n      element.setAttribute(attr, attributes[attr]);\n    }\n    return element;\n  }\n\n  /**\n   * Creates an SVG element and sets the given attributes.\n   * @param {string} qualifiedName is a string that specifies the type of element to be created.\n   * @param {Object} attributes is an object with attributes to set, e.g. {width: 100}.\n   * @returns {SVGElement} The created element.\n   */\n  createSvgNode(qualifiedName, attributes) {\n    let element = document.createElementNS(SVG_NS, qualifiedName);\n    for (var attr in attributes) {\n      element.setAttributeNS(\n        null,\n        // Replaces viewBox with view-box\n        // attr.replace(/[A-Z]/g, function(match) {\n        //   return '-' + match.toLowerCase();\n        // }),\n        attr,\n        attributes[attr]\n      );\n    }\n    return element;\n  }\n\n  /**\n   * Returns the HTMLElement of component.\n   */\n  get element() {\n    return this._element;\n  }\n\n  /**\n   * Returns boolean if browser is Internet Explorer. Other browser (also Edge) return false.\n   */\n  isIE() {\n  var ua = window.navigator.userAgent;\n    var msie = ua.indexOf('MSIE ');\n    if (msie > 0) {\n      // IE 10 or older\n      return true;\n    }\n\n    var trident = ua.indexOf('Trident/');\n    if (trident > 0) {\n      // IE 11\n      var rv = ua.indexOf('rv:');\n      return true;\n    }\n\n    var edge = ua.indexOf('Edge/');\n    if (edge > 0) {\n      // Edge (IE 12+)\n      return false;\n    }\n\n    // other browser\n    return false;\n  }\n}\n"
  },
  {
    "path": "src/draggable/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **Draggable** component is … (text follows)\n\n### To include an AUI **Draggable** component:\n\n```html\n```\n"
  },
  {
    "path": "src/draggable/_draggable-themes.scss",
    "content": ".aui-draggable-list {\n  $aui-draggable-color: rgba(#fff, .8);\n  $aui-draggable-color-hover: rgba(#fff, 0.95);\n  $aui-draggable-color-active: rgba(#fff, 0.95);\n\n  $aui-draggable-background: rgba(#fff, 0.2);\n  $aui-draggable-background-hover: rgba(#fff, 0.3);\n  $aui-draggable-background-active: $aui-color-gray40;\n  $aui-draggable-background-dragging: rgba(#fff, 0.1);\n\n  &.aui-theme-light {\n    .aui-draggable-list__item {\n      color: $aui-draggable-color;\n      background: $aui-draggable-background;\n\n      &:hover {\n        color: $aui-draggable-color-hover;\n        background: $aui-draggable-background-hover;\n      }\n    }\n\n    &.is-dragging .aui-draggable-list__item,\n    &.is-dragging .aui-draggable-list__item:hover {\n      background: $aui-draggable-background-dragging;\n\n      &.is-active {\n        color: $aui-draggable-color-active;\n        background: $aui-draggable-background-active;\n      }\n    }\n\n    // Placeholder state\n    &.is-dragging .is-placeholder,\n    &.is-dragging .is-placeholder:hover {\n      color: transparent;\n      background: none;\n    }\n\n    .is-placeholder::before {\n      border-color: $aui-draggable-background-dragging;\n    }\n\n    // Dragging icon\n    .aui-draggable-list__item::after {\n      background-image: url('data:image/svg+xml;dataset=utf-8,#{aui-svg-draggable-handle($aui-draggable-color)}');\n    }\n  }\n}\n"
  },
  {
    "path": "src/draggable/_draggable.scss",
    "content": "$aui-draggable-icon-width: rem(16) !default;\n$aui-draggable-icon-margin-left: unit(2) !default;\n$aui-draggable-padding-x: unit(6) !default;\n\n$aui-draggable-color: rgba(#000, .8) !default;\n$aui-draggable-color-hover: $aui-color-black  !default;\n$aui-draggable-color-active: $aui-color-black  !default;\n\n$aui-draggable-background: rgba(#000, 0.1) !default;\n$aui-draggable-background-hover: rgba(#000, 0.15) !default;\n$aui-draggable-background-active: $aui-color-gray80 !default;\n$aui-draggable-background-dragging: rgba(#000, 0.05) !default;\n\n.aui-draggable-list {\n  padding-left: 0;\n  list-style: none;\n  font-weight: $aui-font-weight-normal;\n\n  &__item {\n    cursor: move;\n    position: relative;\n    padding: unit(4) #{$aui-draggable-padding-x + $aui-draggable-icon-width + $aui-draggable-icon-margin-left} unit(4) $aui-draggable-padding-x;\n    color: $aui-draggable-color;\n    background: $aui-draggable-background;\n    transition: background .15s linear, color .15s linear;\n\n    &:hover {\n      color: $aui-draggable-color-hover;\n      background: $aui-draggable-background-hover;\n    }\n  }\n\n  &__item + &__item {\n    margin-top: 1px;\n  }\n\n  &.is-dragging &__item,\n  &.is-dragging &__item:hover {\n    background: $aui-draggable-background-dragging;\n\n    &.is-active {\n      color: $aui-draggable-color-active;\n      background: $aui-draggable-background-active;\n    }\n  }\n\n  // Placeholder state\n  &.is-dragging .is-placeholder,\n  &.is-dragging .is-placeholder:hover {\n    color: transparent;\n    background: none;\n  }\n\n  .is-placeholder::before {\n    content: '';\n    display: block;\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    border: 1px dotted $aui-draggable-background-dragging;\n  }\n\n  // Dragging icon\n  &__item:not(.is-placeholder)::after {\n    content: '';\n    opacity: 0;\n    display: block;\n    position: absolute;\n    top: 50%;\n    right: $aui-draggable-padding-x;\n    width: 16px;\n    height: 5px;\n    margin-top: -2.5px;\n    background: url('data:image/svg+xml;dataset=utf-8,#{aui-svg-draggable-handle($aui-draggable-color-hover)}') center center no-repeat;\n    transition: opacity .15s linear;\n  }\n\n  &__item.is-active::after,\n  &__item:hover::after {\n    opacity: 1;\n  }\n}\n"
  },
  {
    "path": "src/draggable/snippets/draggable-list-active.html",
    "content": "<ul class=\"aui-draggable-list is-dragging\">\n  <li class=\"aui-draggable aui-draggable-list__item\" draggable=\"true\">Item 1</li>\n  <li class=\"aui-draggable aui-draggable-list__item is-placeholder\" draggable=\"true\">Item 2</li>\n  <li class=\"aui-draggable aui-draggable-list__item is-active\" draggable=\"true\">Item 2 (active)</li>\n  <li class=\"aui-draggable aui-draggable-list__item\" draggable=\"true\">Item 3</li>\n  <li class=\"aui-draggable aui-draggable-list__item\" draggable=\"true\">Item 4</li>\n  <li class=\"aui-draggable aui-draggable-list__item\" draggable=\"true\">Item 5</li>\n</ul>\n"
  },
  {
    "path": "src/draggable/snippets/draggable-list.html",
    "content": "<ul class=\"aui-draggable-list\">\n  <li class=\"aui-draggable aui-draggable-list__item\" draggable=\"true\">Item 1</li>\n  <li class=\"aui-draggable aui-draggable-list__item\" draggable=\"true\">Item 2</li>\n  <li class=\"aui-draggable aui-draggable-list__item\" draggable=\"true\">Item 3</li>\n  <li class=\"aui-draggable aui-draggable-list__item\" draggable=\"true\">Item 4</li>\n  <li class=\"aui-draggable aui-draggable-list__item\" draggable=\"true\">Item 5</li>\n</ul>\n"
  },
  {
    "path": "src/dropdown/_dropdown-themes.scss",
    "content": "%aui-dropdown-theme-light {\n  $aui-dropdown-color: $aui-color-gray95;\n  $aui-dropdown-secondary-color: $aui-color-gray50;\n  $aui-dropdown-border: $aui-color-gray50;\n  $aui-dropdown-hover-border: $aui-color-black;\n  $aui-dropdown-focus-border: $aui-color-black;\n  $aui-dropdown-dirty-border: $aui-color-black;\n  $aui-dropdown-valid-tick-color: rgba(#fff, 0.6);\n  $aui-dropdown-arrow-color: $aui-field-placeholder-color-light;\n  $aui-dropdown-dirty-arrow-color: $aui-dropdown-color;\n  $aui-dropdown-panel-background: lighten($aui-color-black, 10%);\n  $aui-dropdown-list-title-color: rgba(#fff, 0.3);\n  $aui-dropdown-option-color: $aui-color-gray95;\n  $aui-dropdown-option-hover-background: rgba(#fff, 0.10);\n\n  .aui-dropdown__input {\n    color: $aui-field-placeholder-color-light;\n    border-color: $aui-dropdown-border;\n  }\n\n  .aui-dropdown__label {\n    color: $aui-field-placeholder-color-light;\n  }\n\n  // Arrow icon\n  .aui-dropdown__field::after {\n    background-image: url('data:image/svg+xml,#{aui-svg-dropdown-arrow($aui-dropdown-arrow-color)}');\n  }\n\n  // Focus line will be injected by JS\n  .aui-dropdown__focus-line {\n    background: $aui-dropdown-hover-border;\n  }\n\n  .aui-dropdown__description,\n  .aui-dropdown__error {\n    color: $aui-dropdown-secondary-color;\n  }\n\n  .aui-dropdown__error {\n    color: $aui-field-error-color;\n  }\n\n  .aui-dropdown__panel {\n    background: $aui-dropdown-panel-background;\n    @include shadow-dark;\n  }\n\n  .aui-dropdown__list-title {\n    color: $aui-dropdown-list-title-color;\n  }\n\n  .aui-dropdown__option {\n    color: $aui-dropdown-option-color;\n\n    &:hover {\n      background: $aui-dropdown-option-hover-background;\n    }\n  }\n\n  /**\n  * States\n  */\n\n  // Hover state\n  &:not(.is-disabled):not(.is-invalid) {\n    .aui-dropdown__input:hover {\n      border-color: $aui-dropdown-hover-border;\n    }\n  }\n\n  // Focus state\n  &.is-focused {\n    .aui-dropdown__input {\n      border-color: $aui-dropdown-focus-border;\n    }\n  }\n\n  // Dirty state\n  &.is-dirty {\n    .aui-dropdown__field::after {\n      // Arrow icon\n      background-image: url('data:image/svg+xml,#{aui-svg-dropdown-arrow($aui-dropdown-dirty-arrow-color)}');\n    }\n\n    .aui-dropdown__input {\n      border-color: $aui-dropdown-dirty-border;\n      color: $aui-dropdown-color;\n    }\n  }\n\n  // Invalid state\n  &.is-invalid {\n    &,\n    &:not(.is-dirty) .aui-dropdown__input,\n    .aui-dropdown__counter,\n    .aui-dropdown__label {\n      color: $aui-field-error-color;\n    }\n\n    // Arrow icon\n    .aui-dropdown__field::after {\n      background-image: url('data:image/svg+xml,#{aui-svg-dropdown-arrow($aui-field-error-color)}');\n    }\n\n    .aui-dropdown__input {\n      border-color: $aui-field-error-color;\n    }\n\n    .aui-dropdown__focus-line {\n      background: $aui-field-error-color;\n    }\n  }\n}\n\n.aui-dropdown {\n  /**\n   * Theme: black\n   */\n   &.aui-theme-black {\n     @extend %aui-dropdown-theme-light;\n   }\n\n\n   /**\n    * Theme: warmsilver\n    */\n   &.aui-theme-warmsilver {\n     @extend %aui-dropdown-theme-light;\n     $aui-dropdown-panel-background: lighten($aui-color-warmsilver, 5%);\n\n     .aui-dropdown__panel {\n       background: $aui-dropdown-panel-background;\n     }\n   }\n\n  /**\n   * Theme: silver\n   */\n  &.aui-theme-silver {\n    @extend %aui-dropdown-theme-light;\n    $aui-dropdown-panel-background: lighten($aui-color-silver, 5%);\n\n    .aui-dropdown__panel {\n      background: $aui-dropdown-panel-background;\n    }\n  }\n}\n"
  },
  {
    "path": "src/dropdown/_dropdown.scss",
    "content": "$aui-dropdown-arrow-width: 13px !default;\n$aui-dropdown-arrow-top-default: $aui-field-default-height * .525 !default;\n$aui-dropdown-font-size: 1rem !default;\n$aui-dropdown-option-box-width: 1.5em !default;\n$aui-dropdown-option-tick-size: .75em !default;\n$aui-dropdown-color: $aui-color-dark !default;\n$aui-dropdown-secondary-color: $aui-color-gray40 !default;\n$aui-dropdown-border: $aui-color-gray50 !default;\n$aui-dropdown-hover-border: $aui-color-black !default;\n$aui-dropdown-focus-border: $aui-color-black !default;\n$aui-dropdown-dirty-border: $aui-color-black !default;\n$aui-dropdown-valid-tick-color: $aui-color-black !default;\n$aui-dropdown-arrow-color: $aui-field-placeholder-color !default;\n$aui-dropdown-dirty-arrow-color: $aui-dropdown-color !default;\n$aui-dropdown-panel-background: darken($aui-color-white, 10%) !default;\n$aui-dropdown-list-title-color: rgba(#000, 0.2) !default;\n$aui-dropdown-option-color: $aui-color-dark !default;\n$aui-dropdown-option-hover-background: rgba(#000, 0.10) !default;\n\n.aui-dropdown {\n  display: block;\n  position: relative;\n  margin: 0;\n  padding: 0;\n  font-size: $aui-dropdown-font-size;\n  line-height: $aui-field-line-height;\n  box-sizing: border-box;\n  @include aui-remove-tap-highlight;\n\n  &__field {\n    position: relative;\n  }\n\n  &__input {\n    display: block;\n    margin: 0;\n    width: 100%;\n    padding-right: #{rem($aui-dropdown-arrow-width) + unit(2)};\n    min-height: $aui-field-default-height;\n    font-family: $aui-font-default;\n    font-size: inherit;\n    font-weight: $aui-font-weight-normal;\n    line-height: inherit;\n    text-align: left;\n    color: $aui-field-placeholder-color;\n    background: none;\n    border: none;\n    border-bottom: 1px solid $aui-dropdown-border;\n    border-radius: 0;\n    transition: color, border;\n    transition-duration: $aui-field-transition-duration;\n    transition-timing-function: $aui-easing;\n    resize: none;\n    outline: 0;\n    cursor: pointer;\n  }\n\n  &__label {\n    display: block;\n    position: absolute;\n    top: $aui-field-label-y;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    width: 100%;\n    color: $aui-field-placeholder-color;\n    font-size: inherit;\n    font-weight: $aui-font-weight-normal;\n    text-align: left;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    pointer-events: none;\n    transition-property: top, font-size, color, opacity;\n    transition-duration: $aui-field-transition-duration;\n    transition-timing-function: $aui-easing;\n    pointer-events: none;\n  }\n\n  // Arrow icon\n  &__field::after {\n    $_height: 8px;\n    content: '';\n    display: block;\n    position: absolute;\n    top: $aui-dropdown-arrow-top-default;\n    right: 0;\n    width: $aui-dropdown-arrow-width;\n    height: $_height;\n    margin-top: ($_height / -2);\n    background: url('data:image/svg+xml,#{aui-svg-dropdown-arrow($aui-dropdown-arrow-color)}') center center no-repeat;\n    transition-property: transform, background;\n    transition-duration: $aui-field-transition-duration;\n    transition-timing-function: $aui-easing;\n  }\n\n  // Focus line will be injected by JS\n  &__focus-line {\n    display: block;\n    position: absolute;\n    bottom: $aui-field-focus-line-height;\n    width: 100%;\n    height: $aui-field-focus-line-height;\n    background: $aui-dropdown-hover-border;\n    opacity: 0;\n    transition-property: opacity, background;\n    transition-duration: $aui-field-transition-duration;\n  }\n\n  &__description {\n    display: block;\n    color: $aui-dropdown-secondary-color;\n    transition: color $aui-field-transition-duration linear;\n    margin-top: unit(3.5);\n    font-size: rem(12);\n    line-height: $aui-field-error-line-height;\n  }\n\n  // &__error {\n  //   color: $aui-field-error-color;\n  // }\n\n  &__error {\n    display: flex;\n    align-items: center;\n    line-height: $aui-field-error-line-height;\n    margin-top: unit(3.5);\n    font-size: rem(13);\n    color: $aui-field-error-color;\n\n    &::before {\n      content: '';\n      display: inline-block;\n      margin-right: rem(16px);\n      width: 40px;\n      height: 24px;\n      background: url('data:image/svg+xml,#{aui-svg-caution($aui-field-error-color)}') center center no-repeat;\n\n      @include aui-respond-to('large') {\n        margin-right: unit(2);\n        width: 24px;\n        height: 24px;\n      }\n    }\n  }\n\n  &__panel {\n    display: block;\n    visibility: hidden;\n    overflow: auto;\n    position: absolute;\n    top: 100%;\n    left: 0;\n    width: 100%;\n    // IDEA Should Dropdown panels have max height?\n    // max-height: 80vh;\n    background: $aui-dropdown-panel-background;\n    opacity: 0;\n    @include shadow;\n    transition: opacity $aui-field-transition-duration $aui-easing;\n    z-index: 1;\n  }\n\n  &__list {\n    list-style: none;\n    padding: 0;\n  }\n\n  &__list-item--animate {\n    opacity: 0;\n    transform: translateY(.5em);\n    transition: transform .25s $aui-easing, opacity .25s $aui-easing;\n    // A transition delay will be applied by JS:\n    // transition-delay: 0.05s * i;\n  }\n\n  &__list-title,\n  &__option {\n    display: block;\n    padding: 0 unit(4);\n    font-weight: $aui-font-weight-normal;\n  }\n\n  &__list-title {\n    color: $aui-dropdown-list-title-color;\n    padding-top: unit(3);\n    padding-bottom: 0;\n  }\n\n  &__option {\n    position: relative;\n    width: 100%;\n    padding-top: unit(3);\n    padding-bottom: unit(3);\n    text-align: left;\n    text-decoration: none;\n    color: $aui-dropdown-option-color;\n    background: none;\n    border: none;\n    outline: none;\n    white-space: normal;\n    vertical-align: middle;\n    cursor: pointer;\n    transition: background $aui-field-transition-duration linear;\n    @include aui-remove-tap-highlight;\n\n    &:hover {\n      background: $aui-dropdown-option-hover-background;\n    }\n  }\n\n  &__list &__list &__option {\n    padding-left: unit(10);\n  }\n\n  /**\n   * Variant: floating-label\n   */\n  &.aui-dropdown--floating-label {\n    .aui-dropdown__field {\n      padding-top: $aui-field-floating-label-padding;\n\n      // Arrow icon\n      &::after {\n        top: $aui-dropdown-arrow-top-default + $aui-field-floating-label-padding;\n      }\n    }\n  }\n\n  .aui-js &.aui-dropdown--floating-label &__label {\n    top: $aui-field-label-y + $aui-field-floating-label-padding;\n  }\n\n  /**\n   * States\n   */\n\n  // Active state\n  &.is-active {\n    z-index: $aui-zindex-dropdown;\n\n    // Arrow icon\n    .aui-dropdown__field::after {\n      transform: rotate(180deg);\n    }\n\n    .aui-dropdown__focus-line {\n      opacity: 1;\n    }\n\n    .aui-dropdown__panel {\n      visibility: visible;\n      opacity: 1;\n    }\n\n    .aui-dropdown__list-item--animate {\n      opacity: 1;\n      transform: translateY(0);\n    }\n  }\n\n  // Hover state\n  &:not(.is-disabled):not(.is-invalid) {\n    .aui-dropdown__input:hover {\n      border-color: $aui-dropdown-hover-border;\n    }\n  }\n\n  // Focus state\n  &.is-focused {\n    .aui-dropdown__input {\n      outline: none;\n      box-shadow: none;\n      border-color: $aui-dropdown-focus-border;\n    }\n\n    .aui-dropdown__focus-line {\n      opacity: 1;\n    }\n  }\n\n  // Disabled state\n  &.is-disabled {\n    opacity: $aui-field-disabled-opacity;\n    cursor: not-allowed;\n\n    .aui-dropdown__input {\n      cursor: not-allowed;\n    }\n\n    .aui-dropdown__focus-line {\n      opacity: 0;\n    }\n  }\n\n  // Dirty state\n  &.is-dirty {\n    .aui-dropdown__label {\n      opacity: 0;\n    }\n\n    .aui-dropdown__field::after {\n      // Arrow icon\n      background-image: url('data:image/svg+xml,#{aui-svg-dropdown-arrow($aui-dropdown-dirty-arrow-color)}');\n    }\n\n    &.aui-dropdown--floating-label .aui-dropdown__label {\n      top: 0;\n      font-size: .75rem;\n      opacity: 1;\n    }\n\n    .aui-dropdown__input {\n      border-color: $aui-dropdown-dirty-border;\n      color: $aui-dropdown-color;\n    }\n  }\n\n  // Invalid state\n  &.is-invalid {\n    &,\n    &:not(.is-dirty) .aui-dropdown__input,\n    .aui-dropdown__counter,\n    .aui-dropdown__label {\n      color: $aui-field-error-color;\n    }\n\n    // Arrow icon\n    .aui-dropdown__field::after {\n      background-image: url('data:image/svg+xml,#{aui-svg-dropdown-arrow($aui-field-error-color)}');\n    }\n\n    .aui-dropdown__input {\n      border-color: $aui-field-error-color;\n    }\n\n    .aui-dropdown__focus-line {\n      background: $aui-field-error-color;\n    }\n  }\n}\n"
  },
  {
    "path": "src/dropdown/dropdown.js",
    "content": "import Component from '../component/component';\nimport Checkbox from '../checkbox/checkbox';\n\nconst SELECTOR_COMPONENT = '.aui-js-dropdown';\nconst SELECTOR_OPTION_INPUT = 'input';\nconst CLASS_ANIMATED_LIST_ITEMS = 'aui-dropdown__list-item--animate';\nconst CLASS_LABEL = 'aui-dropdown__label';\nconst CLASS_INPUT = 'aui-dropdown__input';\nconst CLASS_VALUE = 'aui-dropdown__value';\nconst CLASS_FOCUS_LINE = 'aui-dropdown__focus-line';\nconst CLASS_OPTION = 'aui-dropdown__option';\nconst CLASS_MULTIPLE = 'aui-dropdown--multiple';\nconst CLASS_IS_FOCUS = 'is-focused';\nconst CLASS_IS_DIRTY = 'is-dirty';\nconst CLASS_IS_DISABLED = 'is-disabled';\nconst CLASS_IS_ACTIVE = 'is-active';\n\n/**\n * Class constructor for Dropdown AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Dropdown extends Component {\n\n  /**\n   * Upgrades all Dropdown AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Dropdown(element));\n      }\n    });\n    return components;\n  };\n\n  /**\n   * Constructor\n   * @constructor\n   * @param {HTMLElement} element The element of the AUI component.\n   */\n  constructor(element) {\n    super(element);\n\n    this._element.addEventListener('click', this._clickHandler = event => this._onClick(event));\n\n    this.multiple = this._element.classList.contains(CLASS_MULTIPLE);\n    this._isActive = false;\n\n    this._valueField = this._element.querySelector(`.${CLASS_VALUE}`);\n\n    this._input = this._element.querySelector(`.${CLASS_INPUT}`);\n    this._input.addEventListener('input', this._inputHandler = event => this._onInput(event));\n    this._input.addEventListener('focus', this._focusHandler = event => this._onFocus(event));\n    this._input.addEventListener('blur', this._blurHandler = event => this._onBlur(event));\n    this._input.addEventListener('reset', this._resetHandler = event => this._onReset(event));\n\n    let itemsAnimated = this._element.querySelectorAll(`.${CLASS_ANIMATED_LIST_ITEMS}`);\n    for (var i = 0; i < itemsAnimated.length; i++) {\n      itemsAnimated[i].style.transitionDelay = itemsAnimated[i].style.webkitTransitionDelay = `${.05 * i}s`;\n    }\n\n    // Insert thick focus line after label element:\n    this._label = this._element.querySelector(`.${CLASS_LABEL}`);\n    let focusLine = document.createElement('span');\n    focusLine.classList.add(CLASS_FOCUS_LINE);\n    this._label.parentNode.insertBefore(focusLine, this._label.nextSibling);\n\n    this.updateClasses();\n  }\n\n  optionClicked(option) {\n    if (this._valueField) {\n      this._valueField.value = this._getOptionValue(option);\n    }\n\n    this.updateInput(option);\n\n    if (!this.multiple) {\n      this.close();\n    }\n  }\n\n  updateInput(option) {\n    let value = '';\n    if (this.multiple) {\n      let values = [];\n      Array.from(this._element.querySelectorAll(`.${CLASS_OPTION}`)).forEach(element => {\n        const input = element.querySelector(SELECTOR_OPTION_INPUT);\n        if (input && input.checked) {\n          values.push(this._getOptionTitle(element));\n        }\n      });\n      value = values.length > 0 ? `(${values.length}) ${values.join(', ')}` : '';\n    } else {\n      value = this._getOptionTitle(option);\n    }\n    this._input.value = value;\n    this.updateClasses();\n  }\n\n  _getOptionTitle(option) {\n    let title = '';\n    if (option) {\n      title = option.hasAttribute('data-title') ? option.getAttribute('data-title') : '';\n    }\n    return title;\n  }\n\n  _getOptionValue(option) {\n    let value = '';\n    if (option) {\n      value = option.hasAttribute('data-value') ? option.getAttribute('data-value') : '';\n    }\n    return value;\n  }\n\n  open() {\n    if (!this._element.classList.contains(CLASS_IS_DISABLED)) {\n      this._isActive = true;\n      this._element.classList.add(CLASS_IS_ACTIVE);\n      window.addEventListener('click', this._clickHandlerWindow = (event) => this._onClickOutside(event));\n    }\n  }\n\n  close() {\n    this._isActive = false;\n    this._element.classList.remove(CLASS_IS_ACTIVE);\n    window.removeEventListener('click', this.close);\n  }\n\n  toggleOpen() {\n    if (this._isActive) {\n      this.close();\n    } else {\n      this.open();\n    }\n  }\n\n  updateClasses() {\n    this.checkDisabled();\n    this.checkDirty();\n    this.checkFocus();\n  }\n\n  /**\n   * Check the disabled state and update field accordingly.\n   */\n  checkDisabled() {\n    if (this._input.disabled) {\n      this._element.classList.add(CLASS_IS_DISABLED);\n    } else {\n      this._element.classList.remove(CLASS_IS_DISABLED);\n    }\n  }\n\n  /**\n   * Check the dirty state and update field accordingly.\n   */\n  checkDirty() {\n    if (this._input.value && this._input.value.length > 0) {\n      this._element.classList.add(CLASS_IS_DIRTY);\n    } else {\n      this._element.classList.remove(CLASS_IS_DIRTY);\n    }\n  }\n\n  /**\n   * Check the focus state and update field accordingly.\n   */\n  checkFocus() {\n    if (Boolean(this._element.querySelector(':focus'))) {\n      this._element.classList.add(CLASS_IS_FOCUS);\n    } else {\n      this._element.classList.remove(CLASS_IS_FOCUS);\n    }\n  }\n\n  /**\n   * Disable text field.\n   */\n  disable() {\n    this._input.disabled = true;\n    this.updateClasses();\n  }\n\n  /**\n   * Dispose component\n   */\n  dispose() {\n    super.dispose();\n\n    this._input.removeEventListener('input', this._inputHandler);\n    this._input.removeEventListener('focus', this._focusHandler);\n    this._input.removeEventListener('blur', this._blurHandler);\n    this._input.removeEventListener('reset', this._resetHandler);\n\n    window.removeEventListener('click', this.close);\n  }\n\n  /**\n   * Event Handler\n   */\n\n  _onClick(event) {\n    let isOption = false;\n\n    // Find closest action element\n    let currentElement = event.target;\n    while (currentElement !== event.currentTarget) {\n      if (currentElement.classList.contains(CLASS_OPTION)) {\n        isOption = true;\n        break;\n      }\n      currentElement = currentElement.parentNode;\n    }\n\n    if (!isOption) {\n      this.toggleOpen();\n    } else {\n      // Toggle the Checkbox contained\n      Checkbox.get(currentElement).forEach(checkbox => {\n        checkbox.toggle();\n        this.optionClicked(currentElement);\n      });\n    }\n  }\n\n  _onClickOutside(event) {\n    if (!this._element.contains(event.target)) {\n      this.close();\n      this.updateClasses();\n    }\n  }\n\n  _onInput(event) {\n    this.updateClasses();\n  }\n\n  _onFocus(event) {\n    this._element.classList.add(CLASS_IS_FOCUS);\n  }\n\n  _onBlur(event) {\n    this._element.classList.remove(CLASS_IS_FOCUS);\n  }\n\n  _onReset(event) {\n    this.updateClasses();\n  }\n}\n"
  },
  {
    "path": "src/dropdown/snippets/dropdown-disabled.html",
    "content": "<div class=\"aui-dropdown aui-js-dropdown aui-dropdown--floating-label is-disabled\">\n  <input class=\"aui-dropdown__value\" type=\"hidden\">\n  <div class=\"aui-dropdown__field\">\n    <input class=\"aui-dropdown__input\" type=\"text\" id=\"sample-dropdown\" readonly disabled>\n    <label class=\"aui-dropdown__label\" for=\"sample-dropdown\">Label</label>\n    <div class=\"aui-dropdown__panel\">\n      <ul class=\"aui-dropdown__list\">\n        <li class=\"aui-dropdown__list-item aui-dropdown__list-item--animate\">\n          <span class=\"aui-dropdown__list-title\">A1</span>\n          <ul class=\"aui-dropdown__list\">\n            <li class=\"aui-dropdown__list-item\">\n              <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"A1\">A1</button>\n            </li>\n            <li class=\"aui-dropdown__list-item\">\n              <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"A1 Sportsback\">A1 Sportsback</button>\n            </li>\n            <li class=\"aui-dropdown__list-item\">\n              <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"S1\">S1</button>\n            </li>\n            <li class=\"aui-dropdown__list-item\">\n              <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"S1 Sportsback\">S1 Sportsback</button>\n            </li>\n          </ul>\n        </li>\n        <li class=\"aui-dropdown__list-item aui-dropdown__list-item--animate\">\n          <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"A3\">A3</button>\n        </li>\n        <li class=\"aui-dropdown__list-item aui-dropdown__list-item--animate\">\n          <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"A4\">A4</button>\n        </li>\n      </ul>\n    </div>\n  </div>\n  <span class=\"aui-dropdown__description\">If the customer doesn’t understand the label itself or is just unsure of its meaning, an additional description can help squash any uncertainty.</span>\n</div>\n"
  },
  {
    "path": "src/dropdown/snippets/dropdown-invalid.html",
    "content": "<div class=\"aui-dropdown aui-js-dropdown aui-dropdown--floating-label is-invalid\">\n  <input class=\"aui-dropdown__value\" type=\"hidden\">\n  <div class=\"aui-dropdown__field\">\n    <input class=\"aui-dropdown__input\" type=\"text\" id=\"sample-dropdown\" readonly>\n    <label class=\"aui-dropdown__label\" for=\"sample-dropdown\">Label</label>\n    <div class=\"aui-dropdown__panel\">\n      <ul class=\"aui-dropdown__list\">\n        <li class=\"aui-dropdown__list-item aui-dropdown__list-item--animate\">\n          <span class=\"aui-dropdown__list-title\">A1</span>\n          <ul class=\"aui-dropdown__list\">\n            <li class=\"aui-dropdown__list-item\">\n              <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"A1\">A1</button>\n            </li>\n            <li class=\"aui-dropdown__list-item\">\n              <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"A1 Sportsback\">A1 Sportsback</button>\n            </li>\n            <li class=\"aui-dropdown__list-item\">\n              <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"S1\">S1</button>\n            </li>\n            <li class=\"aui-dropdown__list-item\">\n              <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"S1 Sportsback\">S1 Sportsback</button>\n            </li>\n          </ul>\n        </li>\n        <li class=\"aui-dropdown__list-item aui-dropdown__list-item--animate\">\n          <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"A3\">A3</button>\n        </li>\n        <li class=\"aui-dropdown__list-item aui-dropdown__list-item--animate\">\n          <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"A4\">A4</button>\n        </li>\n      </ul>\n    </div>\n  </div>\n  <span class=\"aui-dropdown__error\">Error messages that reassure users can make it easy for them to correct their mistakes and continue with the form.</span>\n</div>\n"
  },
  {
    "path": "src/dropdown/snippets/dropdown-multiple.html",
    "content": "<div class=\"aui-dropdown aui-js-dropdown aui-dropdown--floating-label aui-dropdown--multiple\">\n  <div class=\"aui-dropdown__field\">\n    <input class=\"aui-dropdown__input\" type=\"text\" id=\"sample-dropdown-multiple\" readonly>\n    <label class=\"aui-dropdown__label\" for=\"sample-dropdown-multiple\">Label</label>\n    <div class=\"aui-dropdown__panel\">\n      <ul class=\"aui-dropdown__list\">\n        <li class=\"aui-dropdown__list-item aui-dropdown__list-item--animate\">\n          <span class=\"aui-dropdown__list-title\">A1</span>\n          <ul class=\"aui-dropdown__list\">\n            <li class=\"aui-dropdown__list-item\">\n              <div class=\"aui-dropdown__option\" data-title=\"A1\">\n                <label class=\"aui-checkbox aui-js-checkbox aui-checkbox--dropdown-option\">\n                  <input class=\"aui-checkbox__input\" type=\"checkbox\">\n                  <span class=\"aui-checkbox__label\">A1</span>\n                </label>\n              </div>\n            </li>\n            <li class=\"aui-dropdown__list-item\">\n              <div class=\"aui-dropdown__option\" data-title=\"A1 Sportsback\">\n                <label class=\"aui-checkbox aui-js-checkbox aui-checkbox--dropdown-option\">\n                  <input class=\"aui-checkbox__input\" type=\"checkbox\">\n                  <span class=\"aui-checkbox__label\">A1 Sportsback</span>\n                </label>\n              </div>\n            </li>\n            <li class=\"aui-dropdown__list-item\">\n              <div class=\"aui-dropdown__option\" data-title=\"S1\">\n                <label class=\"aui-checkbox aui-js-checkbox aui-checkbox--dropdown-option\">\n                  <input class=\"aui-checkbox__input\" type=\"checkbox\">\n                  <span class=\"aui-checkbox__label\">S1</span>\n                </label>\n              </div>\n            </li>\n            <li class=\"aui-dropdown__list-item\">\n              <div class=\"aui-dropdown__option\" data-title=\"S1 Sportsback\">\n                <label class=\"aui-checkbox aui-js-checkbox aui-checkbox--dropdown-option\">\n                  <input class=\"aui-checkbox__input\" type=\"checkbox\">\n                  <span class=\"aui-checkbox__label\">S1 Sportsback</span>\n                </label>\n              </div>\n            </li>\n          </ul>\n        </li>\n        <li class=\"aui-dropdown__list-item aui-dropdown__list-item--animate\">\n          <span class=\"aui-dropdown__list-title\">A3</span>\n          <ul class=\"aui-dropdown__list\">\n            <li class=\"aui-dropdown__list-item\">\n              <div class=\"aui-dropdown__option\" data-title=\"A1\">\n                <label class=\"aui-checkbox aui-js-checkbox aui-checkbox--dropdown-option\">\n                  <input class=\"aui-checkbox__input\" type=\"checkbox\">\n                  <span class=\"aui-checkbox__label\">A3</span>\n                </label>\n              </div>\n            </li>\n            <li class=\"aui-dropdown__list-item\">\n              <div class=\"aui-dropdown__option\" data-title=\"A1 Sportsback\">\n                <label class=\"aui-checkbox aui-js-checkbox aui-checkbox--dropdown-option\">\n                  <input class=\"aui-checkbox__input\" type=\"checkbox\">\n                  <span class=\"aui-checkbox__label\">A3 Sportsback</span>\n                </label>\n              </div>\n            </li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n  </div>\n  <span class=\"aui-dropdown__description\">If the customer doesn’t understand the label itself or is just unsure of its meaning, an additional description can help squash any uncertainty.</span>\n</div>\n"
  },
  {
    "path": "src/dropdown/snippets/dropdown.html",
    "content": "<div class=\"aui-dropdown aui-js-dropdown aui-dropdown--floating-label\">\n  <input class=\"aui-dropdown__value\" type=\"hidden\">\n  <div class=\"aui-dropdown__field\">\n    <input class=\"aui-dropdown__input\" type=\"text\" id=\"sample-dropdown\" readonly>\n    <label class=\"aui-dropdown__label\" for=\"sample-dropdown\">Label</label>\n    <div class=\"aui-dropdown__panel\">\n      <ul class=\"aui-dropdown__list\">\n        <li class=\"aui-dropdown__list-item aui-dropdown__list-item--animate\">\n          <span class=\"aui-dropdown__list-title\">A1</span>\n          <ul class=\"aui-dropdown__list\">\n            <li class=\"aui-dropdown__list-item\">\n              <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"A1\">A1</button>\n            </li>\n            <li class=\"aui-dropdown__list-item\">\n              <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"A1 Sportsback\">A1 Sportsback</button>\n            </li>\n            <li class=\"aui-dropdown__list-item\">\n              <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"S1\">S1</button>\n            </li>\n            <li class=\"aui-dropdown__list-item\">\n              <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"S1 Sportsback\">S1 Sportsback</button>\n            </li>\n          </ul>\n        </li>\n        <li class=\"aui-dropdown__list-item aui-dropdown__list-item--animate\">\n          <span class=\"aui-dropdown__list-title\">A3</span>\n          <ul class=\"aui-dropdown__list\">\n            <li class=\"aui-dropdown__list-item\">\n              <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"A3\">A3</button>\n            </li>\n            <li class=\"aui-dropdown__list-item\">\n              <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"A3 Sportsback\">A3 Sportsback</button>\n            </li>\n          </ul>\n        </li>\n        <li class=\"aui-dropdown__list-item aui-dropdown__list-item--animate\">\n          <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"A4\">A4</button>\n        </li>\n        <li class=\"aui-dropdown__list-item aui-dropdown__list-item--animate\">\n          <button type=\"button\" class=\"aui-dropdown__option\" data-title=\"A5\">A5</button>\n        </li>\n      </ul>\n    </div>\n  </div>\n  <span class=\"aui-dropdown__description\">If the customer doesn’t understand the label itself or is just unsure of its meaning, an additional description can help squash any uncertainty.</span>\n</div>\n"
  },
  {
    "path": "src/dropzone/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **Dropzone** component is … (text follows)\n\n### To include an AUI **Dropzone** component:\n\n```html\n```\n\n### Customize\nYou have to define a specific height for `.aui-dropzone`.\n"
  },
  {
    "path": "src/dropzone/_dropzone-themes.scss",
    "content": ".aui-dropzone {\n  $aui-dropzone-background: rgba(#000, .9);\n  $aui-dropzone-border: rgba(#fff, .2);\n  $aui-dropzone-border-active: rgba(#fff, .8);\n\n  &.aui-theme-light {\n    color: $aui-color-light;\n    border-color: $aui-dropzone-border;\n\n    &.is-active,\n    &:hover {\n      border-color: $aui-dropzone-border-active;\n    }\n\n    &.aui-dropzone--fullpage {\n      background: $aui-dropzone-background;\n\n      // Indented broder\n      &::after {\n        border-color: $aui-dropzone-border-active;\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/dropzone/_dropzone.scss",
    "content": "/**\n * Add class `aui-dropzone-active` to body element, to prevent scrolling,\n * when strechted dropzone is active.\n */\n.aui-dropzone-active {\n  overflow: hidden;\n}\n\n$aui-dropzone-background: rgba(#fff, .9) !default;\n$aui-dropzone-border: rgba(#000, .2) !default;\n$aui-dropzone-border-active: rgba(#000, .8) !default;\n$aui-dropzone-border-width: 1px !default;\n$aui-dropzone-padding-fullpage: unit(2) !default;\n\n.aui-dropzone {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  min-height: 1rem;\n  color: $aui-color-dark;\n  border: $aui-dropzone-border-width dashed $aui-dropzone-border;\n  transition: border 0.15s linear;\n\n  &__message {\n    flex: none;\n  }\n\n  &:hover,\n  &.is-active {\n    border-color: $aui-dropzone-border-active;\n  }\n\n  // Full-page dropzone covering entire viewport\n  &--fullpage {\n    visibility: hidden;\n    opacity: 0;\n    overflow: hidden;\n    position: fixed;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    width: 0;\n    height: 0;\n    background: $aui-dropzone-background;\n    border: none;\n    transition: border 0.15s linear, opacity 0.15s linear, visibility 0.15s linear;\n\n    // Indented broder\n    &::after {\n      content: '';\n      display: block;\n      position: absolute;\n      top: $aui-dropzone-padding-fullpage;\n      right: $aui-dropzone-padding-fullpage;\n      bottom: $aui-dropzone-padding-fullpage;\n      left: $aui-dropzone-padding-fullpage;\n      border: $aui-dropzone-border-width dashed $aui-dropzone-border-active;\n    }\n\n    &.is-active {\n      visibility: visible;\n      overflow: visible;\n      top: 0;\n      right: 0;\n      bottom: 0;\n      left: 0;\n      width: auto;\n      height: auto;\n      opacity: 1;\n      padding: $aui-dropzone-padding-fullpage;\n    }\n  }\n}\n"
  },
  {
    "path": "src/dropzone/snippets/dropzone-fullpage.html",
    "content": "<script type=\"text/javascript\">\n  /**\n   * Add class `aui-dropzone-active` to body element, to prevent scrolling,\n   * when full-page dropzone is active.\n   */\n  document.querySelector('body').classList.add('aui-dropzone-active');\n\n</script>\n\n<div class=\"aui-dropzone aui-dropzone--fullpage is-active\">\n  <div class=\"aui-dropzone__message\">\n    Drop here\n  </div>\n</div>\n"
  },
  {
    "path": "src/dropzone/snippets/dropzone.html",
    "content": "<style media=\"screen\">\n  /* Define a specific height */\n\n  .aui-dropzone {\n    height: 10rem;\n  }\n\n</style>\n\n<div class=\"aui-dropzone\">\n  <div class=\"aui-dropzone__message\">\n    Drop here\n  </div>\n</div>\n"
  },
  {
    "path": "src/fieldset/_fieldset-themes.scss",
    "content": ".aui-fieldset {\n  /**\n   * Theme: light\n   */\n  &.aui-theme-light {\n    color: $aui-field-placeholder-color-light;\n\n    &.aui-fieldset--selects .aui-fieldset__legend,\n    &.aui-fieldset--textfields .aui-fieldset__legend {\n      color: $aui-color-gray95;\n    }\n\n    &.is-invalid .aui-fieldset__error,\n    &.is-invalid .aui-fieldset__legend {\n      color: $aui-color-invalid;\n    }\n  }\n}\n"
  },
  {
    "path": "src/fieldset/_fieldset.scss",
    "content": "$aui-fieldset-field-spacing-x: unit(6) !default;\n$aui-fieldset-field-spacing-y: unit(6) !default;\n\n.aui-fieldset {\n  margin: 0;\n  padding: 0;\n  border: none;\n  line-height: unit(6);\n  font-weight: $aui-font-weight-normal;\n  color: $aui-field-placeholder-color;\n  box-sizing: border-box;\n\n  &--selects &__legend,\n  &--textfields &__legend {\n    font-weight: $aui-font-weight-bold;\n    color: $aui-color-dark;\n  }\n\n  &--radios &__legend {\n    margin-bottom: unit(4);\n  }\n\n  &__fields {\n    display: flex;\n    flex-flow: row wrap;\n    margin-right: #{$aui-fieldset-field-spacing-x * -1};\n    margin-bottom: #{$aui-fieldset-field-spacing-y * -1};\n  }\n\n  &__field {\n    flex: 1 1 auto;\n    margin-right: $aui-fieldset-field-spacing-x;\n    margin-bottom: $aui-fieldset-field-spacing-y;\n  }\n\n  &--radios &__field {\n    flex: 0 1 auto;\n  }\n\n  &--radios {\n\n    &.is-invalid {\n      .aui-radio__label {\n        color: $aui-color-invalid;\n      }\n    }\n  }\n\n  &__error {\n    display: flex;\n    align-items: center;\n    line-height: $aui-field-error-line-height;\n    margin-top: unit(3.5);\n    font-size: rem(13);\n    color: $aui-field-error-color;\n\n    &::before {\n      content: '';\n      display: inline-block;\n      margin-right: rem(16px);\n      width: 24px;\n      min-width: 24px;\n      height: 24px;\n      background: url('data:image/svg+xml,#{aui-svg-caution($aui-field-error-color)}') center center no-repeat;\n\n      @include aui-respond-to('large') {\n        margin-right: unit(2);\n      }\n    }\n  }\n\n  &.is-invalid &__error,\n  &.is-invalid &__legend {\n    color: $aui-color-invalid;\n  }\n}\n"
  },
  {
    "path": "src/fieldset/snippets/fieldset-radios-invalid.html",
    "content": "<fieldset class=\"aui-fieldset aui-fieldset--radios is-invalid\">\n  <legend class=\"aui-fieldset__legend\">Title</legend>\n  <div class=\"aui-fieldset__fields\">\n    <div class=\"aui-fieldset__field\">\n      <label class=\"aui-radio aui-js-radio\">\n        <input class=\"aui-radio__input\" type=\"radio\" name=\"sample-fieldset-radios-invalid\">\n        <span class=\"aui-radio__label\">Text</span>\n      </label>\n    </div>\n    <div class=\"aui-fieldset__field\">\n      <label class=\"aui-radio aui-js-radio\">\n        <input class=\"aui-radio__input\" type=\"radio\" name=\"sample-fieldset-radios-invalid\">\n        <span class=\"aui-radio__label\">Text</span>\n      </label>\n    </div>\n    <div class=\"aui-fieldset__field\">\n      <label class=\"aui-radio aui-js-radio\">\n        <input class=\"aui-radio__input\" type=\"radio\" name=\"sample-fieldset-radios-invalid\">\n        <span class=\"aui-radio__label\">Text</span>\n      </label>\n    </div>\n  </div>\n  <span class=\"aui-fieldset__error\">Error messages that reassure users can make it easy for them to correct their mistakes and continue with the form.</span>\n</fieldset>\n"
  },
  {
    "path": "src/fieldset/snippets/fieldset-radios.html",
    "content": "<fieldset class=\"aui-fieldset aui-fieldset--radios\">\n  <legend class=\"aui-fieldset__legend\">Title</legend>\n  <div class=\"aui-fieldset__fields\">\n    <div class=\"aui-fieldset__field\">\n      <label class=\"aui-radio aui-js-radio\">\n        <input class=\"aui-radio__input\" type=\"radio\" name=\"sample-fieldset-radios\">\n        <span class=\"aui-radio__label\">Text</span>\n      </label>\n    </div>\n    <div class=\"aui-fieldset__field\">\n      <label class=\"aui-radio aui-js-radio\">\n        <input class=\"aui-radio__input\" type=\"radio\" name=\"sample-fieldset-radios\">\n        <span class=\"aui-radio__label\">Text</span>\n      </label>\n    </div>\n    <div class=\"aui-fieldset__field\">\n      <label class=\"aui-radio aui-js-radio\">\n        <input class=\"aui-radio__input\" type=\"radio\" name=\"sample-fieldset-radios\">\n        <span class=\"aui-radio__label\">Text</span>\n      </label>\n    </div>\n  </div>\n</fieldset>\n"
  },
  {
    "path": "src/fieldset/snippets/fieldset-selects-invalid.html",
    "content": "<fieldset class=\"aui-fieldset aui-fieldset--selects is-invalid\">\n  <legend class=\"aui-fieldset__legend aui-fieldset__legend\">Title</legend>\n  <div class=\"aui-fieldset__fields\">\n    <div class=\"aui-fieldset__field\">\n      <div class=\"aui-select aui-js-select is-dirty\">\n        <select class=\"aui-select__input\">\n          <option disabled>Day</option>\n          <option value=\"1\">01</option>\n          <option value=\"2\">02</option>\n          <option value=\"3\">03</option>\n          <option value=\"4\">04</option>\n          <option value=\"5\">05</option>\n          <option value=\"6\">06</option>\n          <option value=\"7\">07</option>\n          <option value=\"8\">08</option>\n          <option value=\"9\">09</option>\n          <option value=\"10\" selected>10</option>\n          <option value=\"11\">11</option>\n          <option value=\"12\">12</option>\n          <option value=\"13\">13</option>\n          <option value=\"14\">14</option>\n          <option value=\"15\">15</option>\n          <option value=\"16\">16</option>\n          <option value=\"17\">17</option>\n          <option value=\"18\">18</option>\n          <option value=\"19\">19</option>\n          <option value=\"20\">20</option>\n          <option value=\"21\">21</option>\n          <option value=\"22\">22</option>\n          <option value=\"23\">23</option>\n          <option value=\"24\">24</option>\n          <option value=\"25\">25</option>\n          <option value=\"26\">26</option>\n          <option value=\"27\">27</option>\n          <option value=\"28\">28</option>\n          <option value=\"29\">29</option>\n          <option value=\"30\">30</option>\n          <option value=\"31\">31</option>\n        </select>\n        <label class=\"aui-select__label\" for=\"sample-fieldest-selects-1\">Day</label>\n      </div>\n    </div>\n    <div class=\"aui-fieldset__field\">\n      <div class=\"aui-select aui-js-select is-dirty\">\n        <select class=\"aui-select__input\">\n          <option disabled>Month</option>\n          <option value=\"1\">January</option>\n          <option value=\"2\">February</option>\n          <option value=\"3\">March</option>\n          <option value=\"4\">April</option>\n          <option value=\"5\">May</option>\n          <option value=\"6\">June</option>\n          <option value=\"7\" selected>July</option>\n          <option value=\"8\">August</option>\n          <option value=\"9\">September</option>\n          <option value=\"10\">October</option>\n          <option value=\"11\">November</option>\n          <option value=\"12\">December</option>\n        </select>\n        <label class=\"aui-select__label\" for=\"sample-fieldest-selects-1\">Month</label>\n      </div>\n    </div>\n    <div class=\"aui-fieldset__field\">\n      <div class=\"aui-select aui-js-select aui-select--floating-label is-invalid\">\n        <select class=\"aui-select__input\">\n          <option disabled selected>Year</option>\n          <option value=\"1990\">1990</option>\n          <option value=\"1991\">1991</option>\n          <option value=\"1992\">1992</option>\n          <option value=\"1993\">1993</option>\n          <option value=\"1994\">1994</option>\n          <option value=\"1995\">1995</option>\n          <option value=\"1996\">1996</option>\n          <option value=\"1997\">1997</option>\n          <option value=\"1998\">1998</option>\n          <option value=\"1999\">1999</option>\n          <option value=\"2000\">2000</option>\n        </select>\n        <label class=\"aui-select__label\" for=\"sample-fieldest-selects-1\">Year</label>\n      </div>\n    </div>\n  </div>\n  <span class=\"aui-fieldset__error\">Error messages that reassure users can make it easy for them to correct their mistakes and continue with the form.</span>\n</fieldset>\n"
  },
  {
    "path": "src/fieldset/snippets/fieldset-selects.html",
    "content": "<fieldset class=\"aui-fieldset aui-fieldset--selects\">\n  <legend class=\"aui-fieldset__legend aui-fieldset__legend\">Title</legend>\n  <div class=\"aui-fieldset__fields\">\n    <div class=\"aui-fieldset__field\">\n      <div class=\"aui-select aui-js-select aui-select--floating-label\">\n        <select class=\"aui-select__input\">\n          <option disabled selected>Day</option>\n          <option value=\"1\">01</option>\n          <option value=\"2\">02</option>\n          <option value=\"3\">03</option>\n          <option value=\"4\">04</option>\n          <option value=\"5\">05</option>\n          <option value=\"6\">06</option>\n          <option value=\"7\">07</option>\n          <option value=\"8\">08</option>\n          <option value=\"9\">09</option>\n          <option value=\"10\">10</option>\n          <option value=\"11\">11</option>\n          <option value=\"12\">12</option>\n          <option value=\"13\">13</option>\n          <option value=\"14\">14</option>\n          <option value=\"15\">15</option>\n          <option value=\"16\">16</option>\n          <option value=\"17\">17</option>\n          <option value=\"18\">18</option>\n          <option value=\"19\">19</option>\n          <option value=\"20\">20</option>\n          <option value=\"21\">21</option>\n          <option value=\"22\">22</option>\n          <option value=\"23\">23</option>\n          <option value=\"24\">24</option>\n          <option value=\"25\">25</option>\n          <option value=\"26\">26</option>\n          <option value=\"27\">27</option>\n          <option value=\"28\">28</option>\n          <option value=\"29\">29</option>\n          <option value=\"30\">30</option>\n          <option value=\"31\">31</option>\n        </select>\n        <label class=\"aui-select__label\" for=\"sample-fieldest-selects-1\">Day</label>\n      </div>\n    </div>\n    <div class=\"aui-fieldset__field\">\n      <div class=\"aui-select aui-js-select aui-select--floating-label\">\n        <select class=\"aui-select__input\" invalid>\n          <option disabled selected>Month</option>\n          <option value=\"1\">January</option>\n          <option value=\"2\">February</option>\n          <option value=\"3\">March</option>\n          <option value=\"4\">April</option>\n          <option value=\"5\">May</option>\n          <option value=\"6\">June</option>\n          <option value=\"7\">July</option>\n          <option value=\"8\">August</option>\n          <option value=\"9\">September</option>\n          <option value=\"10\">October</option>\n          <option value=\"11\">November</option>\n          <option value=\"12\">December</option>\n        </select>\n        <label class=\"aui-select__label\" for=\"sample-fieldest-selects-1\">Month</label>\n      </div>\n    </div>\n    <div class=\"aui-fieldset__field\">\n      <div class=\"aui-select aui-js-select aui-select--floating-label\">\n        <select class=\"aui-select__input\" invalid>\n          <option disabled selected>Year</option>\n          <option value=\"1990\">1990</option>\n          <option value=\"1991\">1991</option>\n          <option value=\"1992\">1992</option>\n          <option value=\"1993\">1993</option>\n          <option value=\"1994\">1994</option>\n          <option value=\"1995\">1995</option>\n          <option value=\"1996\">1996</option>\n          <option value=\"1997\">1997</option>\n          <option value=\"1998\">1998</option>\n          <option value=\"1999\">1999</option>\n          <option value=\"2000\">2000</option>\n        </select>\n        <label class=\"aui-select__label\" for=\"sample-fieldest-selects-1\">Year</label>\n      </div>\n    </div>\n  </div>\n</fieldset>\n"
  },
  {
    "path": "src/fieldset/snippets/fieldset-textfields-invalid.html",
    "content": "<fieldset class=\"aui-fieldset aui-fieldset--textfields is-invalid\">\n  <legend class=\"aui-fieldset__legend aui-fieldset__legend\">Title</legend>\n  <div class=\"aui-fieldset__fields\">\n    <div class=\"aui-fieldset__field\">\n      <div class=\"aui-textfield aui-js-textfield aui-textfield--floating-label is-dirty\">\n        <div class=\"aui-textfield__field\">\n          <input class=\"aui-textfield__input\" type=\"text\" id=\"sample-textfield-1\" value=\"Sample\">\n          <label class=\"aui-textfield__label\" for=\"sample-textfield-1\">Text</label>\n        </div>\n      </div>\n    </div>\n    <div class=\"aui-fieldset__field\">\n      <div class=\"aui-textfield aui-js-textfield aui-textfield--floating-label is-invalid\">\n        <div class=\"aui-textfield__field\">\n          <input class=\"aui-textfield__input\" type=\"text\" id=\"sample-textfield-2\">\n          <label class=\"aui-textfield__label\" for=\"sample-textfield-2\">Text</label>\n        </div>\n      </div>\n    </div>\n  </div>\n  <span class=\"aui-fieldset__error\">Error messages that reassure users can make it easy for them to correct their mistakes and continue with the form.</span>\n</fieldset>\n"
  },
  {
    "path": "src/fieldset/snippets/fieldset-textfields.html",
    "content": "<fieldset class=\"aui-fieldset aui-fieldset--textfields\">\n  <legend class=\"aui-fieldset__legend aui-fieldset__legend\">Title</legend>\n  <div class=\"aui-fieldset__fields\">\n    <div class=\"aui-fieldset__field\">\n      <div class=\"aui-textfield aui-js-textfield aui-textfield--floating-label\">\n        <div class=\"aui-textfield__field\">\n          <input class=\"aui-textfield__input\" type=\"text\" id=\"sample-textfield-1\">\n          <label class=\"aui-textfield__label\" for=\"sample-textfield-1\">Text</label>\n        </div>\n      </div>\n    </div>\n    <div class=\"aui-fieldset__field\">\n      <div class=\"aui-textfield aui-js-textfield aui-textfield--floating-label\">\n        <div class=\"aui-textfield__field\">\n          <input class=\"aui-textfield__input\" type=\"text\" id=\"sample-textfield-2\">\n          <label class=\"aui-textfield__label\" for=\"sample-textfield-2\">Text</label>\n        </div>\n      </div>\n    </div>\n  </div>\n</fieldset>\n"
  },
  {
    "path": "src/figure/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **figure** component is … (text follows)\n\n### To include an AUI **figure** component:\n"
  },
  {
    "path": "src/figure/_figure.scss",
    "content": ".aui-figure {\n  display: block;\n  margin: 0;\n\n  &__image {\n    display: block;\n    max-width: 100%;\n    height: auto;\n  }\n\n  &__caption {\n    margin-top: unit(4);\n  }\n}\n"
  },
  {
    "path": "src/flyout/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **Flyout** component is … (text follows)\n\n### To include an AUI **Flyout** component:\n\n```html\n```\n"
  },
  {
    "path": "src/flyout/_flyout-themes.scss",
    "content": ".aui-flyout {\n  $aui-nav-panel-color: $aui-color-gray50;\n  $aui-nav-panel-background: $aui-color-gray20;\n\n  &.aui-theme-light {\n    .aui-flyout__panel {\n      color: $aui-nav-panel-color;\n      background: $aui-nav-panel-background;\n      @include shadow-dark;\n    }\n\n    .aui-flyout__close {\n      background: url('data:image/svg+xml,#{aui-svg-close($aui-nav-panel-color)}') center center no-repeat;\n    }\n  }\n}\n"
  },
  {
    "path": "src/flyout/_flyout.scss",
    "content": "$aui-flyout-panel-translate-y: -10px !default;\n$aui-fylout-panel-offset-y: unit(5) !default;\n$aui-fylout-breakpoint: 400px !default;\n$aui-fylout-panel-close-size: rem(17) !default;\n$aui-fylout-panel-header-padding: unit(5) !default;\n$aui-fylout-panel-header-height: $aui-fylout-panel-close-size + 2 * $aui-fylout-panel-header-padding !default;\n\n/**\n * Prevent scrolling of body, when Flyout is open.\n * Added to body by JS.\n */\n.aui-flyout-is-open {\n  @media (max-width: $aui-fylout-breakpoint - 1px) {\n    overflow: hidden;\n  }\n}\n\n.aui-flyout {\n  display: inline-block;\n  position: relative;\n\n  &__toggle {\n    z-index: 1;\n  }\n\n  &__panel {\n    display: block;\n    opacity: 0;\n    overflow: hidden;\n    position: fixed;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    max-height: 0;\n    color: $aui-color-body;\n    background: $aui-color-gray90;\n    font-size: .875rem;\n    font-weight: $aui-font-weight-normal;\n    line-height: unit(5);\n    text-align: left;\n    transition: opacity .2s linear, transform .3s $aui-easing, max-height .1s linear .4s;\n  }\n\n  &__panel-content {\n    position: absolute;\n    top: 68px;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    overflow: scroll;\n    -webkit-overflow-scrolling: touch;\n\n    opacity: 0;\n    padding: unit(2) unit(7);\n    transition: opacity .4s $aui-easing;\n    z-index: 1;\n    background-color: inherit;\n  }\n\n  &__triangle {\n    // TODO Figure out how to implement the triangle with box-shadow\n    // display: none;\n    position: absolute;\n    top: 0;\n    margin-left: unit(6);\n    background: inherit;\n    opacity: 0;\n    transition: opacity .4s $aui-easing;\n\n    &::after {\n      $size: 16px;\n      content: '';\n      display: block;\n      position: absolute;\n      left: #{$size / -2};\n      top: #{$size / -2};\n      width: $size;\n      height: $size;\n      transform: rotate(45deg);\n      transform-origin: center;\n      background: inherit;\n      box-shadow: -1px -1px 4px rgba(#000, 0.05);\n    }\n  }\n\n  &--center &__triangle {\n    left: 50%;\n    margin-left: 0;\n  }\n\n  &--right &__triangle {\n    left: 100%;\n    margin-left: unit(-6);\n  }\n\n  &__header {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: $aui-fylout-panel-header-height;\n  }\n\n  &__close {\n    position: absolute;\n    top: $aui-fylout-panel-header-padding;\n    right: $aui-fylout-panel-header-padding;\n    width: $aui-fylout-panel-close-size;\n    height: $aui-fylout-panel-close-size;\n    outline: 0;\n    border: 0;\n    background: url('data:image/svg+xml,#{aui-svg-close($aui-color-dark)}') center center no-repeat;\n    z-index: 1;\n    cursor: pointer;\n    @include aui-remove-tap-highlight;\n  }\n\n  // Close gap between trigger and panel, when flyout is `active`.\n  &::after {\n    content: '';\n    display: block;\n    position: absolute;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    z-index: 0;\n  }\n\n  &.is-active::after {\n    bottom: #{$aui-fylout-panel-offset-y * -1};\n  }\n\n  &.is-active &__panel {\n    opacity: 1;\n    max-height: 9999px;\n    transition-delay: 0s;\n    z-index: 9999;\n    overflow: visible;\n  }\n\n  &.is-active &__panel-content {\n    opacity: 1;\n    transition-delay: .2s;\n  }\n\n  &.is-active &__triangle {\n    opacity: 1;\n    transition-delay: .2s;\n  }\n  @media (min-width: $aui-fylout-breakpoint) {\n    &__panel {\n      position: absolute;\n      top: 100%;\n      left: 0;\n      right: auto;\n      bottom: auto;\n      margin-top: $aui-fylout-panel-offset-y;\n      max-width: $aui-layout-min-width;\n      color: $aui-color-body;\n      background: $aui-color-white;\n      @include shadow;\n      transform: translateY($aui-flyout-panel-translate-y);\n    }\n\n    &__panel-content {\n      position: relative;\n      top: auto;\n      left: auto;\n      right: auto;\n      bottom: auto;\n      overflow: auto;\n    }\n\n    &__header {\n      display: none;\n    }\n\n    &--right &__panel {\n      left: auto;\n      right: 0;\n    }\n\n    &--center &__panel {\n      left: 50%;\n      transform: translate(-50%, $aui-flyout-panel-translate-y);\n    }\n\n    &.is-active &__panel {\n      transform: translateY(0);\n      transition-delay: 0s;\n    }\n\n    &.is-active.aui-flyout--center &__panel {\n      transform: translate(-50%, 0);\n    }\n  }\n}\n"
  },
  {
    "path": "src/flyout/flyout.js",
    "content": "import Component from '../component/component';\n\nconst SELECTOR_COMPONENT = '.aui-js-flyout';\nconst CLASS_TOGGLE = 'aui-flyout__toggle';\nconst CLASS_TRIANGLE = 'aui-flyout__triangle';\nconst CLASS_HEADER = 'aui-flyout__header';\nconst CLASS_CLOSE_BUTTON = 'aui-flyout__close';\nconst CLASS_PANEL = 'aui-flyout__panel';\nconst CLASS_IS_UPGRADED = 'is-upgraded';\nconst CLASS_IS_ACTIVE = 'is-active';\nconst CLASS_FLYOUT_IS_OPEN = 'aui-flyout-is-open';\nconst TOGGLE_THRESHOLD = 250; // in ms\n\n/**\n * Class constructor for Flyout AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Flyout extends Component {\n\n  /**\n   * Upgrades all Flyout AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Flyout(element));\n      }\n    });\n    return components;\n  };\n\n  /**\n   * Initialize component\n   */\n  init() {\n    super.init();\n\n    this._activationTime = 0;\n\n    this._body = document.querySelector('body');\n    this._toggle = this._element.querySelector(`.${CLASS_TOGGLE}`);\n    this._panel = this._element.querySelector(`.${CLASS_PANEL}`);\n\n    // Add triangle shape\n    this._triangle = document.createElement('span');\n    this._triangle.classList.add(CLASS_TRIANGLE);\n    this._panel.appendChild(this._triangle);\n\n    // Add panel header with close button\n    this._header = document.createElement('div');\n    this._header.classList.add(CLASS_HEADER);\n    this._header.innerHTML = `<button class=\"${CLASS_CLOSE_BUTTON}\" type=\"button\"></button>`;\n    this._panel.appendChild(this._header);\n\n    this._closeBtn = this._header.querySelector(`.${CLASS_CLOSE_BUTTON}`);\n    this._closeBtn.addEventListener('click', this._boundClickClose = (event) => this._onClickClose(event));\n    this._toggle.addEventListener('click', this._boundClickToggle = (event) => this._onClickToggle(event));\n\n    if (this._element.classList.contains(CLASS_IS_ACTIVE)) {\n      this.open();\n    }\n  }\n\n  /**\n   * Dispose component\n   */\n  dispose() {\n    this._toggle.removeEventListener('click', this._boundClickToggle);\n    this._closeBtn.removeEventListener('click', this._boundClickClose);\n    window.removeEventListener('click', this._boundClickWindow);\n    window.removeEventListener('touchend', this._boundTouchendWindow);\n\n    this._panel.removeChild(this._triangle);\n\n    this._element.classList.remove(CLASS_IS_ACTIVE, CLASS_IS_UPGRADED);\n    this._element.removeAttribute('style');\n  }\n\n  /**\n   * Open Flyout\n   */\n  open() {\n    this._body.classList.add(CLASS_FLYOUT_IS_OPEN);\n    this._activationTime = Date.now();\n    this._isActive = true;\n    this._element.classList.add(CLASS_IS_ACTIVE);\n    window.addEventListener('click', this._boundClickWindow = (event) => this._onTouchOutside(event), true);\n    window.addEventListener('touchend', this._boundTouchendWindow = (event) => this._onTouchOutside(event), true);\n  }\n\n  /**\n   * Close Flyout\n   */\n  close() {\n    this._body.classList.remove(CLASS_FLYOUT_IS_OPEN);\n    this._isActive = false;\n    this._element.classList.remove(CLASS_IS_ACTIVE);\n    window.removeEventListener('click', this._boundClickWindow, true);\n    window.removeEventListener('touchend', this._boundTouchendWindow, true);\n  }\n\n  /**\n   * Toggle open/close Flyout\n   */\n  toggle() {\n    let elapsed = Date.now() - this._activationTime;\n    if (elapsed < TOGGLE_THRESHOLD) {\n      return;\n    }\n\n    if (this._isActive) {\n      this.close();\n    } else {\n      this.open();\n    }\n  }\n\n  /**\n   * Handle click of close button.\n   * @param {Event} event that fired.\n   */\n  _onClickClose(event) {\n    this.close();\n  }\n\n  /**\n   * Handle click of toggle.\n   * @param {Event} event that fired.\n   */\n  _onClickToggle(event) {\n    this.toggle();\n  }\n\n  /**\n   * Handle mouseneter.\n   * @param {Event} event that fired.\n   */\n  _onMouseEnter(event) {\n    this.open(event.target, event.clientX);\n  }\n\n  /**\n   * Handle mouseleave.\n   * @param {Event} event that fired.\n   */\n  _onMouseLeave(event) {\n    this.close();\n  }\n\n  /**\n   * Handle touch.\n   * @param {Event} event that fired.\n   */\n  _onTouch(event) {\n    event.stopPropagation();\n    this.open();\n  }\n\n  /**\n   * Handle touch outside.\n   * @param {Event} event that fired.\n   */\n  _onTouchOutside(event) {\n    if (!this._element.contains(event.target)) {\n      this.close();\n    }\n  }\n}\n"
  },
  {
    "path": "src/flyout/snippets/flyout-center.html",
    "content": "<div class=\"aui-flyout aui-js-flyout aui-flyout--center\">\n  <button class=\"aui-flyout__toggle aui-button aui-js-response aui-button--icon aui-button--icon--large aui-button--round\">\n    <svg class=\"audiicon audiicon--large\">\n      <use xlink:href=\"#audiicon-list-large\"></use>\n    </svg>\n  </button>\n  <div class=\"aui-flyout__panel\">\n    <div class=\"aui-flyout__panel-content\">\n      <nav class=\"aui-nav aui-js-nav aui-nav--list\">\n        <ul class=\"aui-nav__items\">\n          <li class=\"aui-nav__item\">\n            <a class=\"aui-nav__action is-active\" href=\"#\">Action (active at first)</a>\n          </li>\n          <li class=\"aui-nav__item\">\n            <a class=\"aui-nav__action\" href=\"#\">Action</a>\n          </li>\n          <li class=\"aui-nav__item\">\n            <a class=\"aui-nav__action\" href=\"#\">Link</a>\n          </li>\n          <li class=\"aui-nav__item\">\n            <button class=\"aui-nav__action\" type=\"button\">Button</button>\n          </li>\n        </ul>\n      </nav>\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "src/flyout/snippets/flyout-right.html",
    "content": "<div class=\"aui-flyout aui-js-flyout aui-flyout--right\">\n  <button class=\"aui-flyout__toggle aui-button aui-js-response aui-button--icon aui-button--icon--large aui-button--round\">\n    <svg class=\"audiicon audiicon--large\">\n      <use xlink:href=\"#audiicon-list-large\"></use>\n    </svg>\n  </button>\n  <div class=\"aui-flyout__panel\">\n    <div class=\"aui-flyout__panel-content\">\n      <nav class=\"aui-nav aui-js-nav aui-nav--list\">\n        <ul class=\"aui-nav__items\">\n          <li class=\"aui-nav__item\">\n            <a class=\"aui-nav__action is-active\" href=\"#\">Action (active at first)</a>\n          </li>\n          <li class=\"aui-nav__item\">\n            <a class=\"aui-nav__action\" href=\"#\">Action</a>\n          </li>\n          <li class=\"aui-nav__item\">\n            <a class=\"aui-nav__action\" href=\"#\">Link</a>\n          </li>\n          <li class=\"aui-nav__item\">\n            <button class=\"aui-nav__action\" type=\"button\">Button</button>\n          </li>\n        </ul>\n      </nav>\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "src/flyout/snippets/flyout.html",
    "content": "<div class=\"aui-flyout aui-js-flyout\">\n  <button class=\"aui-flyout__toggle aui-button aui-js-response aui-button--icon aui-button--icon--large aui-button--round\">\n    <svg class=\"audiicon audiicon--large\">\n      <use xlink:href=\"#audiicon-list-large\"></use>\n    </svg>\n  </button>\n  <div class=\"aui-flyout__panel\">\n    <div class=\"aui-flyout__panel-content\">\n      <nav class=\"aui-nav aui-js-nav aui-nav--list\">\n        <ul class=\"aui-nav__items\">\n          <li class=\"aui-nav__item\">\n            <a class=\"aui-nav__action is-active\" href=\"#\">Action (active at first)</a>\n          </li>\n          <li class=\"aui-nav__item\">\n            <a class=\"aui-nav__action\" href=\"#\">Action</a>\n          </li>\n          <li class=\"aui-nav__item\">\n            <a class=\"aui-nav__action\" href=\"#\">Link</a>\n          </li>\n          <li class=\"aui-nav__item\">\n            <button class=\"aui-nav__action\" type=\"button\">Button</button>\n          </li>\n        </ul>\n      </nav>\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "src/fullscreen/_fullscreen.scss",
    "content": "// Make the Webkit/Blink browsers stretch like Firefox/IE11:\n:-ms-fullscreen::-ms-backdrop,\n:-webkit-full-screen {\n  position: fixed;\n  width: 100%;\n  top: 0;\n  background: none;\n}\n\n// Apply a color or image backdrop when an element with\n// a different aspect-ratio is viewed full-screen:\n:fullscreen::backdrop {\n\tbackground-color: $aui-color-black;\n}\n"
  },
  {
    "path": "src/grid/README.md",
    "content": "---\ntitle: Grid\n---\n\n## Introduction\n\nThe Audi UI (AUI) **grid** component is … (text follows)\n\n### To include an AUI **grid** component:\n\n```html\n<!-- Example follows ... -->\n```\n"
  },
  {
    "path": "src/grid/_grid.scss",
    "content": "// Grid layout\n.aui-layout {\n  margin-left: auto;\n  margin-right: auto;\n  padding-left: $aui-grid-container-offset;\n  padding-right: $aui-grid-container-offset;\n}\n\n// Grid container\n.aui-grid {\n  margin-left: #{$aui-grid-gutters * -1};\n  box-sizing: border-box;\n\n  // Clearfix\n  &::after {\n    content: ' ';\n    display: block;\n    clear: both;\n  }\n}\n\n// Grid cells\n.aui-cell {\n  float: left;\n  width: 100%;\n  padding-left: $aui-grid-gutters;\n\n  @for $i from 1 through $aui-grid-columns {\n    &--#{$i} {\n      width: 100% / $aui-grid-columns * $i;\n    }\n  }\n\n  &--spacing-left {\n    padding-left: $aui-grid-gutters * 4;\n  }\n}\n\n// Nested grids\n.aui-grid {\n  @for $nested from 2 through $aui-grid-columns - 1 {\n    &--nested-#{$nested} {\n      .aui-cell {\n        $width-of-twelve: $aui-grid-columns / $nested * 100%;\n        width: $width-of-twelve;\n\n        @for $i from 1 through $aui-grid-columns {\n          &--#{$i} {\n            width: $width-of-twelve / $aui-grid-columns * $i;\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/header/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **Header** component is … (text follows)\n\n### To include an AUI **Header** component:\n\n```html\n```\n"
  },
  {
    "path": "src/header/_header.scss",
    "content": ".aui-header {\n  // REVIEW position:sticky currently not working. See also JS.\n  // We use position:sticky for smoother behavior on iOS.\n  // Browser which didn't support it will just ignore it.\n  // position: sticky;\n  z-index: $aui-zindex-header;\n  top: 0;\n  font-size: modular-scale(-2);\n  height: unit(14);\n\n  &__content {\n    display: flex;\n    flex-flow: row wrap;\n    align-items: center;\n    height: unit(14);\n    transition: box-shadow linear .15s;\n  }\n\n  &--grid &__content {\n    padding: 0 $aui-grid-container-offset;\n  }\n\n  &.is-sticky &__content {\n    // If the Browser didn't supports position:sticky, JS will toggle .is-sticky\n    // class to handle positioning.\n    z-index: $aui-zindex-header;\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n    @include shadow;\n  }\n}\n"
  },
  {
    "path": "src/header/header.js",
    "content": "import Component from '../component/component';\nimport ScrollObserver from '../util/scroll-observer';\n\nconst SELECTOR_COMPONENT = '.aui-js-header';\nconst CLASS_STICKYABLE = 'aui-header--sticky';\nconst CLASS_IS_STICKY = 'is-sticky';\n\n/**\n * Class constructor for Header AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Header extends Component {\n\n  /**\n   * Upgrades all Header AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Header(element));\n      }\n    });\n    return components;\n  };\n\n  /**\n   * Constructor\n   * @constructor\n   * @param {HTMLElement} element The element of the AUI component.\n   */\n  constructor(element) {\n    super(element);\n  }\n\n  /**\n   * Initialize component.\n   */\n  init() {\n    super.init();\n\n    // If Header ist not sticky, there is nothing todo.\n    if (!this._element.classList.contains(CLASS_STICKYABLE)) {\n      return;\n    }\n\n    // REVIEW position:sticky currently not working. See also SCSS.\n    // If browser supports position:sticky, it will handle positioning and\n    // we can skip here.\n    // if (window.getComputedStyle(this._element).position.indexOf('sticky') !== -1) {\n    //   return;\n    // }\n\n    this._scrollObserver = new ScrollObserver();\n    this._scrollObserver.scrolled.add(this._scrollHandler = () => this.checkStickiness());\n\n    this._sticky = false;\n    this.checkStickiness();\n  }\n\n  /**\n  * Dispose component.\n  */\n  dispose() {\n    super.dispose();\n\n    this._scrollObserver.resized.remove(this._scrollHandler);\n    this._resizeObserver.resized.remove(this._resizedHandler);\n  }\n\n  /**\n   * Check if position.top is negative. If so stick otherwise release component.\n   */\n  checkStickiness() {\n    if (this._element.getBoundingClientRect().top <= 0) {\n      if (!this._sticky) {\n        this.stick();\n      }\n    } else {\n      if (this._sticky) {\n        this.release();\n      }\n    }\n  }\n\n  /**\n   * Stick component to top of viewport in adding sticky class.\n   */\n  stick() {\n    if (!this._sticky) {\n      this._element.classList.add(CLASS_IS_STICKY);\n    }\n    this._sticky = true;\n  }\n\n  /**\n   * Release component and position not fixed in removing sticky class.\n   */\n  release() {\n    if (this._sticky) {\n      this._element.classList.remove(CLASS_IS_STICKY);\n    }\n    this._sticky = false;\n  }\n}\n"
  },
  {
    "path": "src/header/snippets/header-sticky.html",
    "content": "<header class=\"aui-header aui-js-header aui-header--grid aui-header--sticky\">\n  <div class=\"aui-header__content aui-color-white\">\n    <!-- Add elements, whatever required -->\n    <!-- This example adds a grid layout with an flyout component. -->\n    <nav class=\"aui-nav aui-js-nav aui-nav--inline\">\n      <div class=\"aui-nav__panel\">\n        <ul class=\"aui-nav__items\">\n          <li class=\"aui-nav__item\">\n            <a class=\"aui-nav__action is-active\" href=\"#\">Link 1</a>\n          </li>\n          <li class=\"aui-nav__item\">\n            <a class=\"aui-nav__action\" href=\"#\">Link 2</a>\n          </li>\n          <li class=\"aui-nav__item\">\n            <a class=\"aui-nav__action\" href=\"#\">Link 3</a>\n          </li>\n          <li class=\"aui-nav__item\">\n            <a class=\"aui-nav__action\" href=\"#\">Link 4</a>\n          </li>\n        </ul>\n      </div>\n    </nav>\n  </div>\n</header>\n"
  },
  {
    "path": "src/index.js",
    "content": "// TODO Add ComponentHandler.upgradeAllRegistered components e.g. to update them when all fonts are loaded.\n// TODO Perform a `Cutting the mustard` test once. audiui-head.js\n// TODO Outsource dependencies Tether, nouislider, bezier-easing\n\n/**\n * Import all AUI components.\n */\nimport Alert from './alert/alert';\nimport Audioplayer from './audioplayer/audioplayer';\nimport Breadcrumb from './breadcrumb/breadcrumb';\nimport Checkbox from './checkbox/checkbox';\n// import Dropdown from './dropdown/dropdown';\nimport Flyout from './flyout/flyout';\nimport Header from './header/header';\nimport Modal from './modal/modal';\nimport Nav from './nav/nav';\nimport Notification from './notification/notification';\nimport Pagination from './pagination/pagination';\nimport Player from './player/player';\nimport Popover from './popover/popover';\nimport Progress from './progress/progress';\nimport Radio from './radio/radio';\nimport Response from './response/response';\nimport Select from './select/select';\nimport Slider from './slider/slider';\nimport Indicator from './indicator/indicator';\nimport Spinner from './spinner/spinner';\nimport Textfield from './textfield/textfield';\nimport Tooltip from './tooltip/tooltip';\n\n/**\n * Export all AUI components to make them accessible through npm.\n * @example\n * import {Alert} from 'audi-ui';\n * Alert.upgradeElements();\n */\nexport {\n  Alert,\n  Audioplayer,\n  Breadcrumb,\n  Checkbox,\n  // Dropdown,\n  Flyout,\n  Header,\n  Modal,\n  Nav,\n  Notification,\n  Pagination,\n  Player,\n  Popover,\n  Progress,\n  Radio,\n  Response,\n  Select,\n  Slider,\n  Indicator,\n  Spinner,\n  Textfield,\n  Tooltip\n}\n\n/**\n * Export Component Handler as default to have access to all components.\n * @example\n * import auiHandler from 'audi-ui';\n * auiHandler.upgradeAllElements();\n */\nclass ComponentHandler {\n\n  constructor() {\n\n    /**\n     * Performs a \"Cutting the mustard\" test. If the browser supports the features\n     * tested, adds a aui-js class to the <html> element.\n     */\n    if ('classList' in document.createElement('div') && 'querySelector' in document && 'addEventListener' in window && Array.prototype.forEach) {\n      document.documentElement.classList.add('aui-js');\n    }\n\n    this.upgradeAllElements();\n  }\n\n  upgradeAllElements() {\n    Alert.upgradeElements();\n    Audioplayer.upgradeElements();\n    Breadcrumb.upgradeElements();\n    Checkbox.upgradeElements();\n    // Dropdown.upgradeElements();\n    Flyout.upgradeElements();\n    Header.upgradeElements();\n    // Modal.upgradeElements();\n    Nav.upgradeElements();\n    Notification.upgradeElements();\n    Pagination.upgradeElements();\n    Player.upgradeElements();\n    Popover.upgradeElements();\n    // Progress.upgradeElements();\n    Radio.upgradeElements();\n    Response.upgradeElements();\n    Select.upgradeElements();\n    Slider.upgradeElements();\n    Indicator.upgradeElements();\n    // Spinner.upgradeElements();\n    Textfield.upgradeElements();\n    Tooltip.upgradeElements();\n  }\n\n}\n\nconst componentHandler = new ComponentHandler();\n\nexport default componentHandler;\n"
  },
  {
    "path": "src/index.scss",
    "content": "// Import variables and util\n@import 'variables';\n@import 'functions';\n@import 'mixins';\n\n// Import components\n@import \"alert/alert\";\n@import \"audioplayer/audioplayer\";\n@import \"animation/animation\";\n@import \"breakpoint/breakpoint\";\n@import \"badge/badge\";\n@import \"breadcrumb/breadcrumb\";\n@import \"button/button\";\n@import \"button-group/button-group\";\n@import \"card/card\";\n@import \"checkbox/checkbox\";\n@import \"color/color\";\n@import \"draggable/draggable\";\n@import \"dropzone/dropzone\";\n// @import \"dropdown/dropdown\";\n@import \"figure/figure\";\n@import \"fieldset/fieldset\";\n@import \"flyout/flyout\";\n@import \"grid/grid\";\n@import \"header/header\";\n@import \"list/list\";\n@import \"modal/modal\";\n@import \"nav/nav\";\n@import \"notification/notification\";\n@import \"pager/pager\";\n@import \"pagination/pagination\";\n@import \"player/player\";\n@import \"popover/popover\";\n@import \"progress/progress\";\n@import \"radio/radio\";\n@import \"response/response\";\n@import \"select/select\";\n@import \"slider/slider\";\n@import \"indicator/indicator\";\n@import \"spinner/spinner\";\n@import \"sr-only/sr-only\";\n@import \"switch/switch\";\n@import \"table/table\";\n@import \"textfield/textfield\";\n@import \"tooltip/tooltip\";\n@import \"typography/typography\";\n@import \"visibility/visibility\";\n\n// Import color themes\n@import \"themes\";\n"
  },
  {
    "path": "src/indicator/_indicator-themes.scss",
    "content": "$aui-indicator-color-light: rgba(#fff, 0.2) !default;\n$aui-indicator-color-hover-light: $aui-color-gray50 !default;\n$aui-indicator-color-active-light: $aui-color-black !default;\n$aui-indicator-color-image: rgba($aui-color-gray70, 0.5) !default;\n$aui-indicator-color-hover-image: $aui-color-gray50 !default;\n$aui-indicator-color-active-image: $aui-color-black !default;\n\n.aui-indicator {\n  &.aui-theme-light {\n    .aui-indicator__action,\n    .aui-indicator__action:visited {\n      background: $aui-indicator-color-light;\n    }\n\n    .aui-indicator__action:hover {\n      background: $aui-indicator-color-hover-light;\n    }\n\n    .aui-indicator__indicator {\n      background: $aui-indicator-color-active-light;\n    }\n  }\n\n  &.aui-theme-image {\n    .aui-indicator__action,\n    .aui-indicator__action:visited {\n      background: $aui-indicator-color-image;\n    }\n\n    .aui-indicator__action:hover {\n      background: $aui-indicator-color-hover-image;\n    }\n\n    .aui-indicator__indicator {\n      background: $aui-indicator-color-active-image;\n    }\n  }\n}\n"
  },
  {
    "path": "src/indicator/_indicator.scss",
    "content": "$aui-indicator-color: $aui-color-gray80 !default;\n$aui-indicator-color-hover: $aui-color-gray40 !default;\n$aui-indicator-color-active: $aui-color-black !default;\n\n$aui-indicator-dot-width: 32px !default;\n$aui-indicator-dot-spacing: 4px !default;\n$aui-indicator-height: 4px !default;\n$aui-indicator-action-height: 2px !default;\n$aui-indicator-trigger-width: 40px !default;\n$aui-indicator-trigger-height: 40px !default;\n\n.aui-indicator {\n  display: inline-block;\n  position: relative;\n  font-family: serif;\n  margin-left: -$aui-indicator-dot-spacing;\n  line-height: $aui-indicator-height;\n\n  &__items {\n    padding-left: 0;\n    list-style: none;\n    @include clearfix;\n  }\n\n  &__item {\n    float: left;\n    margin-left: unit(1);\n  }\n\n  &__trigger {\n    display: flex;\n    align-items: center;\n    width: $aui-indicator-trigger-width;\n    height: $aui-indicator-trigger-height;\n    padding: 0 $aui-indicator-dot-spacing 0 0;\n\n    &:hover {\n      .aui-indicator__dot {\n        background: $aui-indicator-color-hover;\n      }\n    }\n  }\n\n  &__dot {\n    pointer-events: none;\n    display: block;\n    width: $aui-indicator-dot-width;\n    height: $aui-indicator-action-height;\n    overflow: hidden;\n    text-indent: 100%;\n    white-space: nowrap;\n    text-decoration: none;\n    outline: 0;\n    transition: background 0.15s linear;\n  }\n\n  &__dot,\n  &__dot:visited {\n    background: $aui-indicator-color;\n  }\n\n  &__indicator {\n    display: block;\n    position: absolute;\n    top: calc(50% - 1px);\n    left: $aui-indicator-dot-spacing;\n    transform: translate(0, -50%);\n    width: $aui-indicator-dot-width;\n    height: $aui-indicator-height;\n    background: $aui-indicator-color-active;\n    z-index: 1;\n    transition: left 0.3s $aui-easing;\n    pointer-events: none;\n  }\n\n  &--shadow &__dot {\n    box-shadow: 0 0 8px $aui-color-gray40;\n  }\n}"
  },
  {
    "path": "src/indicator/indicator.js",
    "content": "import Component from '../component/component';\nimport clamp from '../util/clamp';\n\nconst SELECTOR_COMPONENT = '.aui-js-indicator';\nconst CLASS_ITEM = 'aui-indicator__item';\nconst CLASS_DOT = 'aui-indicator__dot';\nconst CLASS_TRIGGER = 'aui-indicator__trigger';\nconst CLASS_INDICATOR = 'aui-indicator__indicator';\nconst CLASS_IS_ACTIVE = 'is-active';\n\n/**\n * Class constructor for Indicator AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Indicator extends Component {\n\n  /**\n   * Upgrades all Indicator AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Indicator(element));\n      }\n    });\n    return components;\n  };\n\n  constructor(element) {\n    super(element);\n  }\n\n  init() {\n    super.init();\n\n    this._dots = Array.from(this._element.querySelectorAll(`.${CLASS_DOT}`));\n    this._triggers = Array.from(this._element.querySelectorAll(`.${CLASS_TRIGGER}`));\n    this._listItems = Array.from(this._element.querySelectorAll(`.${CLASS_ITEM}`));\n\n    this._indicator = document.createElement('span');\n    this._indicator.classList.add(CLASS_INDICATOR);\n    this._element.appendChild(this._indicator);\n\n    this._element.addEventListener('click', this.clickHandler = (event) => this._onClick(event));\n  }\n\n  /**\n   * Handle click.\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  _onClick(event) {\n    if (!event.target.classList.contains(CLASS_TRIGGER)) {\n      return;\n    }\n    event.preventDefault();\n\n    this.selectDot(event.target);\n  }\n\n  /**\n   * Select item with given dot element.\n   * @param {HTMLElement} dotElement Dot child element of the list item to select.\n   * @private\n   */\n  selectDot(dotElement) {\n    if (dotElement) {\n      // Find index\n      const listItem = dotElement.parentNode;\n      const index = this._listItems.indexOf(listItem);\n      this.select(index);\n    }\n  }\n\n  /**\n   * Select item.\n   * @param {Integer} index Zero-based index of the list item to select.\n   * @private\n   */\n  select(index = 0) {\n    index = clamp(index, 0, this._dots.length - 1);\n    const activeItem = this._dots[index];\n\n    // Update dots\n    this._dots.forEach(item => {\n      item.classList.remove(CLASS_IS_ACTIVE);\n    });\n    activeItem.classList.add(CLASS_IS_ACTIVE);\n\n    // Update indicator position\n    const rectContainer = this._element.getBoundingClientRect();\n    const rectTarget = activeItem.getBoundingClientRect();\n    const indicatorLeft = rectTarget.left - rectContainer.left;\n    this._indicator.style.left = `${indicatorLeft}px`;\n  }\n}\n"
  },
  {
    "path": "src/indicator/snippets/indicator-image.html",
    "content": "<div class=\"aui-indicator aui-js-indicator aui-indicator--shadow aui-theme-image\">\n  <ul class=\"aui-indicator__items\">\n    <li class=\"aui-indicator__item\"><a class=\"aui-indicator__trigger\" href=\"#\"><span class=\"aui-indicator__dot\" class=\"is-active\">1 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</span></a></li>\n    <li class=\"aui-indicator__item\"><a class=\"aui-indicator__trigger\" href=\"#\"><span class=\"aui-indicator__dot\" href=\"#\">2</span></a></li>\n    <li class=\"aui-indicator__item\"><a class=\"aui-indicator__trigger\" href=\"#\"><span class=\"aui-indicator__dot\" href=\"#\">3</span></a></li>\n    <li class=\"aui-indicator__item\"><a class=\"aui-indicator__trigger\" href=\"#\"><span class=\"aui-indicator__dot\" href=\"#\">4</span></a></li>\n    <li class=\"aui-indicator__item\"><a class=\"aui-indicator__trigger\" href=\"#\"><span class=\"aui-indicator__dot\" href=\"#\">5</span></a></li>\n    <li class=\"aui-indicator__item\"><a class=\"aui-indicator__trigger\" href=\"#\"><span class=\"aui-indicator__dot\" href=\"#\">6</span></a></li>\n  </ul>\n</div>"
  },
  {
    "path": "src/indicator/snippets/indicator.html",
    "content": "<div class=\"aui-indicator aui-js-indicator\">\n  <ul class=\"aui-indicator__items\">\n    <li class=\"aui-indicator__item\"><a class=\"aui-indicator__trigger\" href=\"#\"><span class=\"aui-indicator__dot\" class=\"is-active\">1 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</span></a></li>\n    <li class=\"aui-indicator__item\"><a class=\"aui-indicator__trigger\" href=\"#\"><span class=\"aui-indicator__dot\">2</span></a></li>\n    <li class=\"aui-indicator__item\"><a class=\"aui-indicator__trigger\" href=\"#\"><span class=\"aui-indicator__dot\" href=\"#\">3</span></a></li>\n    <li class=\"aui-indicator__item\"><a class=\"aui-indicator__trigger\" href=\"#\"><span class=\"aui-indicator__dot\" href=\"#\">4</span></a></li>\n    <li class=\"aui-indicator__item\"><a class=\"aui-indicator__trigger\" href=\"#\"><span class=\"aui-indicator__dot\" href=\"#\">5</span></a></li>\n    <li class=\"aui-indicator__item\"><a class=\"aui-indicator__trigger\" href=\"#\"><span class=\"aui-indicator__dot\" href=\"#\">6</span></a></li>\n  </ul>\n</div>\n"
  },
  {
    "path": "src/list/README.md",
    "content": "---\ntitle: List\n---\n\n## Introduction\n\nThe Audi UI (AUI) **list** component is … (text follows)\n\n### To include an AUI **list** component:\n\n```html\n<!-- Example follows ... -->\n```\n"
  },
  {
    "path": "src/list/_list.scss",
    "content": "$aui-list-style-position: unit(5) !default;\n\n.aui-list {\n  counter-reset: li;\n  margin-left: 0;\n  padding-left: 0;\n  list-style: none;\n  @include aui-responsive-type(0, 1.5);\n\n  &__item {\n    margin-left: $aui-list-style-position;\n\n    & + & {\n      margin-top: unit(3);\n    }\n\n    &::before {\n      display: inline-block;\n      width: $aui-list-style-position;\n      margin-left: #{$aui-list-style-position * -1};\n      color: $aui-color-gray50;\n    }\n  }\n\n  &--arrow &__item::before {\n    content: '›';\n  }\n\n  &--number &__item::before {\n    content: counter(li);\n    counter-increment: li;\n  }\n\n}\n\n.aui-color-text-light {\n  .aui-list__item::before {\n    color: rgba(#fff, 0.6);\n  }\n}\n"
  },
  {
    "path": "src/modal/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **Modal** component is … (text follows)\n\n### To include an AUI **Modal** component:\n\n```html\n```\n"
  },
  {
    "path": "src/modal/_modal.scss",
    "content": "$aui-modal-close-size: 45px !default; // sync with JS\n$aui-modal-close-size-large: 81px !default; // sync with JS\n$aui-modal-content-padding-x: $aui-grid-container-offset !default;\n$aui-modal-content-padding-y: unit(6.5) !default;\n$aui-modal-dialog-padding: unit(8) !default;\n$aui-modal-dialog-offset: unit(5) !default;\n$aui-modal-duration: .4s !default;\n$aui-modal-delay: .4s !default;\n$aui-modal-content-translate-y: 10px !default;\n$aui-modal-breakpoint: map-get($aui-breakpoint, xsmall) !default;\n$aui-modal-morph-duration: .4s !default;\n$aui-modal-max-width: 1200px !default;\n// $aui-modal-background: $aui-color-gray20 !default;\n$aui-modal-background: $aui-color-white !default;\n$aui-modal-close-color: $aui-color-white !default;\n$aui-modal-close-color-dark: $aui-color-gray40 !default;\n$aui-modal-close-hover-color: $aui-color-gray80 !default;\n$aui-modal-close-hover-color-dark: $aui-color-black !default;\n\n/**\n * Prevent scrolling of body, when modal is open.\n * Added to body by JS.\n */\n.aui-modal-open {\n  overflow: hidden;\n}\n\n/**\n * Modal container stretched to viewport size.\n */\n.aui-modal {\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 0;\n  height: 0;\n  outline: 0; // Prevent Chrome on Windows from adding a focus outline. For details, see https://github.com/twbs/bootstrap/pull/10951.\n  z-index: $aui-zindex-modal;\n  overflow: hidden;\n\n  &.is-active {\n    right: 0;\n    bottom: 0;\n    width: auto;\n    height: auto;\n    overflow-x: hidden;\n    overflow-y: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n\n/**\n * Modal dialog\n */\n.aui-modal-dialog {\n  display: flex;\n  flex-flow: row;\n  justify-content: center;\n  position: relative;\n  min-height: 100vh;\n  opacity: 0;\n  transition: opacity $aui-modal-duration $aui-easing;\n  background-color: $aui-modal-background;\n\n  &__body {\n    display: flex;\n    flex-flow: column;\n    justify-content: center; // vertical, because of `flex-direction: column`\n    position: relative;\n    min-width: 1px;\n    max-width: 100%;\n    min-height: 100vh;\n    padding: $aui-modal-content-padding-y $aui-modal-content-padding-x;\n  }\n\n  &__body--full {\n    padding: 0;\n  }\n\n  &__content {\n    max-width: 100%;\n  }\n\n  &__close {\n    position: fixed;\n    top: rem(6);\n    right: rem(6);\n    width: $aui-modal-close-size;\n    height: $aui-modal-close-size;\n    cursor: pointer;\n    vertical-align: middle;\n    outline: none;\n    box-sizing: border-box;\n    border: none;\n    @include aui-remove-tap-highlight;\n    transition: color .3s $aui-easing;\n    color: $aui-modal-close-color;\n\n    &:hover {\n      color: $aui-modal-close-hover-color;\n    }\n\n    &--dark {\n      color:  $aui-modal-close-color-dark;\n\n      &:hover {\n        color: $aui-modal-close-hover-color-dark;\n      }\n    }\n  }\n}\n\n.aui-modal-close-icon-large,\n.aui-modal-close-icon-small {\n  display: block;\n  stroke-width: 1px;\n}\n\n.aui-modal-close-icon-large {\n  display: none;\n}\n\n/**\n * Styles when modal is open:\n */\n.aui-modal-open .aui-modal.is-active {\n  .aui-modal-dialog {\n    opacity: 1;\n    transition-delay: $aui-modal-delay;\n  }\n\n  .aui-modal-dialog--morph {\n    transition-delay: 0s;\n\n    .aui-modal-dialog__body {\n      transition-delay: 0s;\n    }\n  }\n}\n\n/**\n * Responsive adaptions:\n */\n@media (min-width: $aui-modal-breakpoint) {\n\n  .aui-modal-dialog__body {\n    width: 62.5%;\n    max-width: $aui-modal-max-width;\n  }\n\n  .aui-modal-dialog--fullpage,\n  .aui-modal-dialog--window {\n    .aui-modal-dialog__close {\n      top: 0;\n      right: 0;\n      width: $aui-modal-close-size-large;\n      height: $aui-modal-close-size-large;\n    }\n  }\n\n  .aui-modal-dialog--fullpage {\n    .aui-modal-dialog__body {\n      padding-left: 0;\n      padding-right: 0;\n    }\n  }\n  .aui-modal-dialog--window,\n  .aui-modal-dialog--layer {\n    background-color: transparent;\n  }\n\n  .aui-modal-dialog--window {\n    .aui-modal-dialog__body {\n      width: 80%;\n      padding-left: $aui-modal-close-size-large;\n      padding-right: $aui-modal-close-size-large;\n      background-color: $aui-modal-background;\n    }\n  }\n\n  .aui-modal-dialog--layer {\n    padding: 0 $aui-modal-content-padding-x;\n\n    .aui-modal-dialog__body {\n      padding: $aui-modal-content-padding-y 0;\n    }\n\n    .aui-modal-dialog__content {\n      transform: translateY(0);\n      background-color: $aui-modal-background;\n    }\n\n    .aui-modal-dialog__content {\n      padding: $aui-modal-dialog-padding;\n    }\n\n    &:not(.aui-modal-dialog--morph) .aui-modal-dialog__body {\n      transform: translateY($aui-modal-content-translate-y);\n      transition: transform $aui-modal-duration $aui-easing;\n    }\n\n    .aui-modal-dialog__close {\n      position: absolute;\n    }\n  }\n\n  .aui-modal-dialog--layer .aui-modal-dialog__body--full,\n  .aui-modal-dialog__body--full {\n    padding: 0;\n  }\n\n  .aui-modal-close-icon-small {\n    display: none;\n  }\n\n  .aui-modal-close-icon-large {\n    display: block;\n  }\n\n  /**\n   * Styles when modal is open:\n   */\n  .aui-modal-open .aui-modal.is-active {\n    .aui-modal-dialog {\n      opacity: 1;\n      transition-delay: $aui-modal-delay;\n    }\n\n    .aui-modal-dialog__content {\n      transform: translateY(0);\n      transition-delay: $aui-modal-delay;\n    }\n\n    .aui-modal-dialog--layer .aui-modal-dialog__body {\n      transform: translateY(0);\n      transition-delay: $aui-modal-delay;\n    }\n  }\n}\n\n/**\n * Modal morph\n * Created by JS\n */\n.aui-modal-morph {\n  position: absolute;\n  opacity: 0;\n  background-color: $aui-modal-background;\n  transition-property: top, left, width, height, opacity;\n  transition-duration: $aui-modal-duration;\n  transition-timing-function: $aui-easing;\n  z-index: $aui-zindex-modal-morph;\n\n  &.is-morphing {\n    opacity: 1;\n  }\n}\n\n/**\n * Modal backdrop\n * Created by JS\n */\n.aui-modal-backdrop {\n  opacity: 0;\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  background: $aui-color-gray10;\n  transition: opacity .6s $aui-easing;\n  z-index: $aui-zindex-modal-backdrop;\n}\n\n.aui-modal-open .aui-modal-backdrop {\n  opacity: 1;\n}\n"
  },
  {
    "path": "src/modal/modal-default.js",
    "content": "import ModalDialog from '../modal/modal-dialog';\nimport ResizeObserver from '../util/resize-observer';\nimport transitionendEvent from '../util/transition-end-event';\n\nconst CLASS_MODAL_IS_OPEN = 'aui-modal-open';\nconst CLASS_WINDOW = 'aui-modal-dialog--window';\nconst CLASS_DIALOG_BODY = 'aui-modal-dialog__body';\nconst CLASS_IS_ACTIVE = 'is-active';\n\n/**\n * Class constructor for ModalDefault AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class ModalDefault extends ModalDialog {\n\n  /**\n   * Opens this modal.\n   * @param {HTMLElement} trigger The element which opens the modal.\n   */\n  open(trigger) {\n    super.open();\n    this._trigger = trigger;\n\n    // Make modal element visible\n    this._element.classList.add(CLASS_IS_ACTIVE);\n    this._element.scrollTop = 0;\n    this._addBackdrop();\n\n    // If dialog acts as window, we have to reposition the close button to\n    // stick with the dialog.\n    if (this._element.querySelector(`.${CLASS_WINDOW}`) && this._closeButton) {\n      if (this._resizeObserver === undefined) {\n        this._resizeObserver = new ResizeObserver();\n        this._dialogBody = this._element.querySelector(`.${CLASS_DIALOG_BODY}`);\n      }\n      this._resizeObserver.resized.add(this._resizedHandler = () => this._repositionCloseButton());\n      this._repositionCloseButton();\n    }\n\n    window.requestAnimationFrame(() => this._prepareOpenTransition());\n  }\n\n  /**\n   * Prepare the open transition.\n   */\n  _prepareOpenTransition() {\n    // Loops until modal is really visible.\n    // That's required to make transitions work as aspected.\n    if (this._element.offsetWidth > 0) {\n\n      // Start opening animation\n      this._body.classList.add(CLASS_MODAL_IS_OPEN);\n\n    } else {\n      window.requestAnimationFrame(() => this._prepareOpenTransition());\n    }\n  }\n\n  /**\n   * Closes this modal.\n   */\n  close() {\n    if (this._backdrop) {\n      this._backdrop.removeEventListener(transitionendEvent, this._backdropCloseTransitionendHandler);\n      transitionendEvent && this._backdrop.addEventListener(transitionendEvent, this._backdropCloseTransitionendHandler = (event) => this._onBackdropCloseTransitionend(event));\n    }\n\n    if (this._resizeObserver) {\n      this._resizeObserver.resized.remove(this._resizedHandler);\n    }\n\n    this._body.classList.remove(CLASS_MODAL_IS_OPEN);\n  }\n\n  /**\n   * Reposition close button with dialog\n   */\n  _repositionCloseButton() {\n    const rect = this._dialogBody.getBoundingClientRect();\n    const right = rect.right - rect.width;\n    // Only reposition if the window is positioned center, otherwise respect\n    // CSS styling:\n    if (right > 0) {\n      this._closeButton.style.right = `${right}px`;\n    } else {\n      this._closeButton.style.right = '';\n    }\n  }\n}\n"
  },
  {
    "path": "src/modal/modal-dialog.js",
    "content": "import Component from '../component/component';\nimport transitionendEvent from '../util/transition-end-event';\n\nconst CLOSE_BUTTON_SIZE_SMALL = 45;\nconst CLOSE_BUTTON_SIZE_LARGE = 81;\nconst CLOSE_ICON_SIZE_SMALL = 17;\nconst CLOSE_ICON_SIZE_LARGE = 31;\nconst CLASS_BACKDROP = 'aui-modal-backdrop';\nconst CLASS_CLOSE = 'aui-modal-dialog__close';\nconst CLASS_IS_ACTIVE = 'is-active';\n\n/**\n * Class constructor for ModalDialog AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class ModalDialog extends Component {\n\n  /**\n   * Initialize component\n   */\n  init() {\n    super.init();\n\n    this._body = document.querySelector('body');\n\n    this._closeButton = this._element.querySelector(`.${CLASS_CLOSE}`);\n    if (this._closeButton) {\n      this._addCloseButton(this._closeButton);\n    }\n  }\n\n  /**\n   * Opens this modal.\n   */\n  open() {\n    if (this._element.parentNode !== this._body) {\n      this._body.appendChild(this._element);\n    }\n  }\n\n  /**\n   * Handle transition end event\n   * @param {Event} event which was fired.\n   */\n  _onBackdropCloseTransitionend(event) {\n    if (event.target === event.currentTarget) {\n      this._backdrop.removeEventListener(transitionendEvent, this._backdropCloseTransitionendHandler);\n      this._element.classList.remove(CLASS_IS_ACTIVE);\n      this._removeBackdrop();\n    }\n  }\n\n  /**\n   * Adds a semi-transparent backdrop element behind the modal.\n   */\n  _addBackdrop() {\n    if (!this._backdrop) {\n      this._backdrop = document.createElement('div');\n      this._backdrop.classList.add(CLASS_BACKDROP);\n      this._body.appendChild(this._backdrop);\n    }\n  }\n\n  /**\n   * Removes the backdrop element behind modal.\n   */\n  _removeBackdrop() {\n    if (this._backdrop) {\n      this._body.removeChild(this._backdrop);\n      this._backdrop = null;\n    }\n  }\n\n  /**\n   * Adds close button\n   * @param {HTMLElement} container to append close icon to.\n   */\n  _addCloseButton(container) {\n    let diagonalHalf = (Math.sqrt(2) * CLOSE_ICON_SIZE_SMALL) / 2;\n    let btnSize = CLOSE_BUTTON_SIZE_SMALL;\n\n    const small = this.createSvgNode(\n      'svg', {\n        class: 'aui-modal-close-icon-small',\n        viewBox: `0 0 ${btnSize} ${btnSize}`\n      });\n    let group = this.createSvgNode(\n      'g', {\n        transform: `translate(${btnSize / 2}, ${btnSize / 2})`\n      });\n    group.appendChild(this.createSvgNode('line', {\n      x1: '0',\n      y1: -diagonalHalf,\n      x2: '0',\n      y2: diagonalHalf,\n      stroke: 'currentColor',\n      transform: 'rotate(-45, 0, 0)'\n    }));\n    group.appendChild(this.createSvgNode('line', {\n      x1: '0',\n      y1: -diagonalHalf,\n      x2: '0',\n      y2: diagonalHalf,\n      stroke: 'currentColor',\n      transform: 'rotate(45, 0, 0)'\n    }));\n    small.appendChild(group);\n    container.appendChild(small);\n\n    diagonalHalf = (Math.sqrt(2) * CLOSE_ICON_SIZE_LARGE) / 2;\n    btnSize = CLOSE_BUTTON_SIZE_LARGE;\n    const large = this.createSvgNode(\n      'svg', {\n        'class': 'aui-modal-close-icon-large',\n        'viewBox': `0 0 ${btnSize} ${btnSize}`\n      });\n    group = this.createSvgNode(\n      'g', {\n        transform: `translate(${btnSize / 2}, ${btnSize / 2})`\n      });\n    group.appendChild(this.createSvgNode('line', {\n      x1: '0',\n      y1: -diagonalHalf,\n      x2: '0',\n      y2: diagonalHalf,\n      stroke: 'currentColor',\n      transform: 'rotate(-45, 0, 0)'\n    }));\n    group.appendChild(this.createSvgNode('line', {\n      x1: '0',\n      y1: -diagonalHalf,\n      x2: '0',\n      y2: diagonalHalf,\n      stroke: 'currentColor',\n      transform: 'rotate(45, 0, 0)'\n    }));\n    large.appendChild(group);\n    container.appendChild(large);\n  }\n}\n"
  },
  {
    "path": "src/modal/modal-morph.js",
    "content": "import ModalDialog from '../modal/modal-dialog';\nimport transitionendEvent from '../util/transition-end-event';\n\nconst CLASS_MODAL_IS_OPEN = 'aui-modal-open';\nconst CLASS_CONTENT = 'aui-modal-dialog__content';\nconst CLASS_MORPH_DIALOG = 'aui-modal-morph';\nconst CLASS_IS_ACTIVE = 'is-active';\nconst CLASS_IS_MORPHING = 'is-morphing';\n\n/**\n * Class constructor for ModalMorph AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class ModalMorph extends ModalDialog {\n\n  /**\n   * Initialize component\n   */\n  init() {\n    super.init();\n\n    this._content = this._element.querySelector(`.${CLASS_CONTENT}`);\n  }\n\n  /**\n   * Open modal\n   * @param {HTMLElement} trigger The element which opens the modal.\n   */\n  open(trigger) {\n    console.log('Open morphing modal');\n    super.open();\n    this._trigger = trigger;\n\n    // Make modal element visible\n    this._element.classList.add(CLASS_IS_ACTIVE);\n    this._element.scrollTop = 0;\n    this._addBackdrop();\n\n    window.requestAnimationFrame(() => this._prepareOpenTransition());\n  }\n\n  _prepareOpenTransition() {\n    const rect = this._trigger.getBoundingClientRect();\n\n    // Apply bounding rect to start with to morphing element\n    this._morph = this._getMorphElement(rect);\n\n    // Start opening animation\n    window.requestAnimationFrame(() => this._startOpenTransition());\n  }\n\n  _startOpenTransition() {\n    const rect = this._content.getBoundingClientRect();\n\n    // Apply bounding rect to end on to morphing element\n    this._applyBoundingRectToElement(this._morph, rect);\n    transitionendEvent && this._element.addEventListener(transitionendEvent, this._boundTransitionendElementIn = (event) => this._onTransitionendElementIn(event));\n    this._morph.classList.add(CLASS_IS_MORPHING);\n    this._body.classList.add(CLASS_MODAL_IS_OPEN);\n  }\n\n  _onTransitionendElementIn(event) {\n    this._element.removeEventListener(transitionendEvent, this._boundTransitionendElementIn);\n    this._morph.classList.remove(CLASS_IS_MORPHING);\n  }\n\n  /**\n   * Close modal\n   */\n  close() {\n    console.log('close');\n    if (this._backdrop) {\n      this._backdrop.removeEventListener(transitionendEvent, this._backdropCloseTransitionendHandler);\n      transitionendEvent && this._backdrop.addEventListener(transitionendEvent, this._backdropCloseTransitionendHandler = (event) => this._onBackdropCloseTransitionend(event));\n    }\n\n    this._element.removeEventListener(transitionendEvent, this._boundTransitionendElementIn);\n\n    const rect = this._content.getBoundingClientRect();\n    this._applyBoundingRectToElement(this._morph, rect);\n    this._morph.classList.add(CLASS_IS_MORPHING);\n\n    transitionendEvent && this._morph.addEventListener(transitionendEvent, this._boundTransitionendMorphOut = (event) => this._onTransitionendMorphOut(event));\n\n    window.requestAnimationFrame(() => this._startCloseTransition());\n  }\n\n  _startCloseTransition() {\n    const rect = this._trigger.getBoundingClientRect();\n    this._applyBoundingRectToElement(this._morph, rect);\n\n    this._body.classList.remove(CLASS_MODAL_IS_OPEN);\n  }\n\n  _onTransitionendMorphOut(event) {\n    this._morph.removeEventListener(transitionendEvent, this._boundTransitionendMorphOut);\n    this.removeChild(this._morph);\n    this._morph = null;\n  }\n\n  _onMorpBodyCloseTransitionend(event) {\n    if (event.target === event.currentTarget) {\n      this._morphBody.removeEventListener(transitionendEvent, this._morpBodyCloseTransitionendHandler);\n      this._morphBody.removeAttribute('style');\n      this._content.classList.remove(CLASS_IS_MORPHING);\n    }\n  }\n\n  _applyBoundingRectToElement(element, rect) {\n    element.style.top = `${Math.round(rect.top + window.pageYOffset)}px`;\n    element.style.left = `${Math.round(rect.left)}px`;\n    element.style.width = `${Math.round(rect.width)}px`;\n    element.style.height = `${Math.round(rect.height)}px`;\n  }\n\n  _getMorphElement(rect) {\n    if (!this._morph) {\n      this._morph = this.createElement('div', [CLASS_MORPH_DIALOG]);\n      this._applyBoundingRectToElement(this._morph, rect);\n      this._body.append(this._morph);\n    }\n    return this._morph;\n  }\n}\n"
  },
  {
    "path": "src/modal/modal.js",
    "content": "import Component from '../component/component';\nimport ModalDefault from '../modal/modal-default';\nimport ModalMorph from '../modal/modal-morph';\n\nconst SELECTOR_COMPONENT = '.aui-js-modal';\nconst CLASS_MORPH = 'aui-modal--morph';\n\nlet modalComponents;\nlet currentModal;\n\n/**\n * Class constructor for Modal AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Modal extends Component {\n\n  /**\n   * Upgrades all Modal AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Modal(element));\n      }\n    });\n    modalComponents = components;\n    return components;\n  };\n\n  /**\n   * Get a modal component by element ID.\n   * @param {string} id The id attribute of the components HTML element.\n   * @returns {Modal} Returns a modal with the given ID.\n   */\n  static getModalById(id) {\n    for (var i = 0; i < modalComponents.length; i++) {\n      if (modalComponents[i].id === id) {\n        return modalComponents[i];\n      }\n    }\n  }\n\n  /**\n   * Close current modal.\n   */\n  static closeCurrentModal() {\n    if (currentModal) {\n      currentModal.close();\n      currentModal = null;\n    }\n  }\n\n  /**\n   * Returns modifier `morph`\n   */\n  static get MODIFIER_MORPH() {\n    return CLASS_MORPH;\n  }\n\n  /**\n   * Returns modifier `default`\n   */\n  static get MODIFIER_DEFAULT() {\n    return '';\n  }\n\n  /**\n   * Initialize component\n   */\n  init() {\n    super.init();\n\n    this._id = this._element.getAttribute('id');\n\n    // Initialize with appropriate decorator depending on modifier,\n    // represented by according CSS class:\n    if (this._element.classList.contains(CLASS_MORPH)) {\n      this._decorator = new ModalMorph(this._element);\n    } else {\n      this._decorator = new ModalDefault(this._element);\n    }\n  }\n\n  /**\n   * Opens this modal.\n   * @param {HTMLElement} trigger The element which opens the modal.\n   */\n  open(trigger) {\n    currentModal = this;\n    this._decorator.open(trigger);\n  }\n\n  /**\n   * Closes this modal.\n   */\n  close() {\n    currentModal = null;\n    this._decorator.close();\n  }\n\n  /**\n   * @returns {string} Returns the ID of the modal\n   */\n  get id() {\n    return this._id;\n  }\n}\n"
  },
  {
    "path": "src/modal/snippets/modal-layer.html",
    "content": "<div class=\"aui-modal aui-js-modal\" id=\"modal-sample-layer\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n  <div class=\"aui-modal-dialog aui-modal-dialog--layer\">\n    <div class=\"aui-modal-dialog__body\">\n      <div class=\"aui-modal-dialog__content\">\n        <!-- Start inserting content here: -->\n        <div class=\"aui-color-text-dark\">\n          <h6 class=\"aui-headline-3\" style=\"margin-bottom:20px;\">Modal Title</h6>\n          <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>\n          <div style=\"margin-top:40px;text-align:right;\">\n            <div class=\"aui-button-group\">\n              <button class=\"aui-js-response aui-button aui-button--secondary aui-theme-dark\" type=\"button\" data-dismiss=\"modal\">\n              <span class=\"aui-button__text\">Close</span>\n            </button>\n              <button class=\"aui-js-response aui-button aui-button--primary aui-theme-dark\" type=\"button\">\n              <span class=\"aui-button__text\">Confirm</span>\n            </button>\n            </div>\n          </div>\n        </div>\n        <!-- End inserting content. -->\n        <!-- NOTE Because of alignment, the close button of Modal Layer components has to be inside `aui-modal-dialog__content` element. -->\n        <div class=\"aui-modal-dialog__close aui-modal-dialog__close--dark\" data-dismiss=\"modal\"></div>\n      </div>\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "src/modal/snippets/modal-morphing-layer.html",
    "content": "<style media=\"screen\">\n  @media (min-width: 600px) {\n    #modal-sample-morphing-layer .aui-modal-dialog__body {\n      /* Define a width for this specific dialog: */\n      width: 93.75%;\n      max-width: 460px;\n    }\n  }\n\n</style>\n\n<div class=\"aui-modal aui-js-modal aui-modal--morph\" id=\"modal-sample-morphing-layer\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n  <div class=\"aui-modal-dialog aui-modal-dialog--layer aui-modal-dialog--morph\">\n    <div class=\"aui-modal-dialog__body\">\n      <div class=\"aui-modal-dialog__content\">\n        <!-- Start inserting content here: -->\n        <div class=\"aui-color-text-dark\">\n          <h6 class=\"aui-headline-3\" style=\"margin-bottom:20px;padding-right:27px;\">Modal Title</h6>\n          <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>\n          <div style=\"margin-top:40px;text-align:right;\">\n            <div class=\"aui-button-group\">\n              <button class=\"aui-js-response aui-button aui-button--secondary aui-theme-dark\" type=\"button\" data-dismiss=\"modal\">\n              <span class=\"aui-button__text\">Close</span>\n            </button>\n              <button class=\"aui-js-response aui-button aui-button--primary aui-theme-dark\" type=\"button\">\n              <span class=\"aui-button__text\">Confirm</span>\n            </button>\n            </div>\n          </div>\n        </div>\n        <!-- End inserting content. -->\n        <!-- NOTE Because of alignment, the close button of Modal Layer components has to be inside `aui-modal-dialog__content` element. -->\n        <div class=\"aui-modal-dialog__close aui-modal-dialog__close--dark\" data-dismiss=\"modal\"></div>\n      </div>\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "src/modal/snippets/modal-window.html",
    "content": "<div class=\"aui-modal aui-js-modal\" id=\"modal-sample-window\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n  <div class=\"aui-modal-dialog aui-modal-dialog--window\">\n    <div class=\"aui-modal-dialog__body\">\n      <div class=\"aui-modal-dialog__content\">\n        <!-- Start inserting content here: -->\n        <div class=\"aui-color-text-dark\">\n          <h6 class=\"aui-headline-2\" style=\"margin-bottom:20px;\">Modal Title</h6>\n          <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>\n          <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>\n          <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>\n          <div style=\"margin-top:80px; text-align:right;\">\n            <div class=\"aui-button-group\">\n              <button class=\"aui-js-response aui-button aui-button--secondary aui-theme-dark\" type=\"button\" data-dismiss=\"modal\">\n              <span class=\"aui-button__text\">Close</span>\n            </button>\n              <button class=\"aui-js-response aui-button aui-button--primary aui-theme-dark\" type=\"button\">\n              <span class=\"aui-button__text\">Confirm</span>\n            </button>\n            </div>\n          </div>\n        </div>\n        <!-- End inserting content. -->\n      </div>\n      <div class=\"aui-modal-dialog__close aui-modal-dialog__close--dark\" data-dismiss=\"modal\"></div>\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "src/modal/snippets/modal.html",
    "content": "<div class=\"aui-modal aui-js-modal\" id=\"modal-sample\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n  <div class=\"aui-modal-dialog aui-modal-dialog--fullpage\">\n    <div class=\"aui-modal-dialog__body\">\n      <div class=\"aui-modal-dialog__content\">\n        <!-- Start inserting content here: -->\n        <div class=\"aui-color-text-dark\">\n          <h6 class=\"aui-headline-2\" style=\"margin-bottom:20px;\">Modal Title</h6>\n          <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>\n          <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>\n          <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>\n          <div style=\"margin-top:80px; text-align:right;\">\n            <div class=\"aui-button-group\">\n              <button class=\"aui-js-response aui-button aui-button--secondary aui-theme-dark\" type=\"button\" data-dismiss=\"modal\">\n              <span class=\"aui-button__text\">Close</span>\n            </button>\n              <button class=\"aui-js-response aui-button aui-button--primary aui-theme-dark\" type=\"button\">\n              <span class=\"aui-button__text\">Confirm</span>\n            </button>\n            </div>\n          </div>\n        </div>\n        <!-- End inserting content. -->\n      </div>\n      <div class=\"aui-modal-dialog__close aui-modal-dialog__close--dark\" data-dismiss=\"modal\"></div>\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "src/nav/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **Nav** component is … (text follows)\n\n### To include an AUI **Nav** component:\n\n```html\n```\n"
  },
  {
    "path": "src/nav/_nav-themes.scss",
    "content": "%aui-nav-theme-light {\n  // Colors\n  $aui-nav-textcolor: rgba(#fff, .5);\n  $aui-nav-textcolor-active: $aui-color-white;\n  $aui-nav-list-separator-color: rgba(#fff, .2);\n  $aui-nav-paddle-background: $aui-color-black;\n  $aui-nav-tab-color: $aui-color-black ;\n  $aui-nav-tab-background: $aui-color-gray90;\n  $aui-nav-dropdown-textcolor: $aui-nav-textcolor;\n  $aui-nav-dropdown-textcolor-active: $aui-nav-textcolor-active;\n  $aui-nav-dropdown-panel-color: $aui-color-gray20;\n  $aui-nav-dropdown-separator-color: rgba(#fff, .2);\n\n  color: $aui-nav-textcolor;\n  fill: $aui-nav-textcolor;\n  stroke: $aui-nav-textcolor;\n\n  .aui-nav__action {\n    &.is-active,\n    &:hover {\n      color: $aui-nav-textcolor-active;\n      fill: $aui-nav-textcolor-active;\n      stroke: $aui-nav-textcolor-active;\n    }\n\n    &,\n    &.is-disabled {\n      color: $aui-nav-textcolor;\n      fill: $aui-nav-textcolor;\n      stroke: $aui-nav-textcolor;\n    }\n  }\n\n  .aui-nav__indicator {\n    background: $aui-nav-textcolor-active;\n  }\n\n  .aui-nav__paddle-left,\n  .aui-nav__paddle-right {\n    // Arrow icon\n    &::after {\n      background-image: url('data:image/svg+xml,#{aui-svg-arrow($aui-nav-textcolor)}');\n    }\n  }\n\n  .aui-nav__paddle-left {\n    background: linear-gradient(to right, rgba($aui-nav-paddle-background, 1) 40%,rgba($aui-nav-paddle-background, 0) 100%);\n  }\n\n  .aui-nav__paddle-right {\n    background: linear-gradient(to right, rgba($aui-nav-paddle-background, 0) 0%,rgba($aui-nav-paddle-background, 1) 60%);\n  }\n\n  &.aui-nav--tab {\n    .aui-nav__action.is-active {\n      color: $aui-nav-tab-color;\n    }\n\n    .aui-nav__indicator {\n      background: $aui-nav-tab-background;\n    }\n  }\n\n  /**\n   * Modifier: List\n   */\n  &.aui-nav--list {\n    .aui-nav__item + .aui-nav__item {\n      border-color: $aui-nav-list-separator-color;\n    }\n  }\n\n  /**\n   * Modifier: Dropdown\n   */\n  &.aui-nav--dropdown {\n    color: $aui-nav-dropdown-textcolor;\n\n    // Dropdown toggle added by JS\n    .aui-nav__toggle {\n      color: $aui-nav-textcolor-active;\n    }\n\n    .aui-nav__toggle-label {\n      // Arrow icon\n      &::after {\n        background-image: url('data:image/svg+xml,#{aui-svg-dropdown-arrow($aui-nav-dropdown-textcolor)}');\n      }\n    }\n\n    .aui-nav__item {\n      &:not(:last-child) {\n        border-color: $aui-nav-dropdown-separator-color;\n      }\n    }\n\n    .aui-nav__panel {\n      background: $aui-nav-dropdown-panel-color;\n      @include shadow-dark;\n    }\n  }\n\n  .aui-nav__underline {\n    background: $aui-nav-dropdown-textcolor;\n  }\n\n  &.is-sticky .aui-nav__toggle {\n    @include shadow-dark;\n  }\n}\n\n.aui-nav {\n  /**\n   * Theme: black\n   */\n  &.aui-theme-black {\n    @extend %aui-nav-theme-light;\n  }\n\n  /**\n    * Theme: warmsilver\n    */\n  &.aui-theme-warmsilver {\n    @extend %aui-nav-theme-light;\n    $aui-nav-paddle-background: $aui-color-warmsilver;\n\n    .aui-nav__paddle-left {\n      background: linear-gradient(to right, rgba($aui-nav-paddle-background, 1) 40%,rgba($aui-nav-paddle-background, 0) 100%);\n    }\n\n    .aui-nav__paddle-right {\n      background: linear-gradient(to right, rgba($aui-nav-paddle-background, 0) 0%,rgba($aui-nav-paddle-background, 1) 60%);\n    }\n  }\n\n  /**\n   * Theme: silver\n   */\n  &.aui-theme-silver {\n    @extend %aui-nav-theme-light;\n    $aui-nav-paddle-background: $aui-color-silver;\n\n    .aui-nav__paddle-left {\n      background: linear-gradient(to right, rgba($aui-nav-paddle-background, 1) 40%,rgba($aui-nav-paddle-background, 0) 100%);\n    }\n\n    .aui-nav__paddle-right {\n      background: linear-gradient(to right, rgba($aui-nav-paddle-background, 0) 0%,rgba($aui-nav-paddle-background, 1) 60%);\n    }\n  }\n\n  /**\n   * Theme: red\n   */\n  &.aui-theme-red {\n    @extend %aui-nav-theme-light;\n    $aui-nav-paddle-background: $aui-color-red;\n\n    .aui-nav__paddle-left {\n      background: linear-gradient(to right, rgba($aui-nav-paddle-background, 1) 40%,rgba($aui-nav-paddle-background, 0) 100%);\n    }\n\n    .aui-nav__paddle-right {\n      background: linear-gradient(to right, rgba($aui-nav-paddle-background, 0) 0%,rgba($aui-nav-paddle-background, 1) 60%);\n    }\n  }\n\n  /**\n   * Theme: gray95\n   */\n  &.aui-theme-gray95 {\n    $aui-nav-paddle-background: $aui-color-gray95;\n\n    .aui-nav__paddle-left {\n      background: linear-gradient(to right, rgba($aui-nav-paddle-background, 1) 40%,rgba($aui-nav-paddle-background, 0) 100%);\n    }\n\n    .aui-nav__paddle-right {\n      background: linear-gradient(to right, rgba($aui-nav-paddle-background, 0) 0%,rgba($aui-nav-paddle-background, 1) 60%);\n    }\n  }\n\n  /**\n   * TODO Remove in final version.\n   * Theme: gray\n   */\n  &.aui-theme-gray10-gray20 {\n    $aui-nav-textcolor: rgba(#fff, .5);\n    $aui-nav-textcolor-active: $aui-color-white;\n    $aui-nav-paddle-background: $aui-color-gray10;\n    $aui-nav-tab-color: $aui-color-white;\n    $aui-nav-tab-background: $aui-color-gray20;\n\n    color: $aui-nav-textcolor;\n    fill: $aui-nav-textcolor;\n    stroke: $aui-nav-textcolor;\n\n    .aui-nav__action {\n      &.is-active,\n      &:hover {\n        color: $aui-nav-textcolor-active;\n        fill: $aui-nav-textcolor-active;\n        stroke: $aui-nav-textcolor-active;\n      }\n\n      &,\n      &.is-disabled {\n        color: $aui-nav-textcolor;\n        fill: $aui-nav-textcolor;\n        stroke: $aui-nav-textcolor;\n      }\n    }\n\n    .aui-nav__indicator {\n      background: $aui-nav-textcolor-active;\n    }\n\n    .aui-nav__paddle-left,\n    .aui-nav__paddle-right {\n      // Arrow icon\n      &::after {\n        background-image: url('data:image/svg+xml,#{aui-svg-arrow($aui-nav-textcolor)}');\n      }\n    }\n\n    .aui-nav__paddle-left {\n      background: linear-gradient(to right, rgba($aui-nav-paddle-background, 1) 40%,rgba($aui-nav-paddle-background, 0) 100%);\n    }\n\n    .aui-nav__paddle-right {\n      background: linear-gradient(to right, rgba($aui-nav-paddle-background, 0) 0%,rgba($aui-nav-paddle-background, 1) 60%);\n    }\n\n    &.aui-nav--tab {\n      .aui-nav__action.is-active {\n        color: $aui-nav-tab-color;\n      }\n\n      .aui-nav__indicator {\n        background: $aui-nav-tab-background;\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/nav/_nav.scss",
    "content": "// Colors\n//$aui-nav-textcolor: rgba(#000, .5) !default;\n$aui-nav-textcolor: $aui-color-gray20 !default;\n$aui-nav-textcolor-active: $aui-color-black !default;\n$aui-nav-textcolor-disabled: $aui-color-gray70 !default;\n$aui-nav-list-separator-color: $aui-color-gray85 !default;\n$aui-nav-tab-background: $aui-color-gray90 !default;\n$aui-nav-dropdown-textcolor: $aui-nav-textcolor !default;\n$aui-nav-dropdown-textcolor-active: $aui-nav-textcolor-active !default;\n$aui-nav-dropdown-panel-color: $aui-color-gray90 !default;\n$aui-nav-dropdown-separator-color: $aui-color-gray85 !default;\n$aui-nav-layout-break: -1 !default;\n$aui-nav-dropdown-sticky-background: $aui-color-white;\n\n// Common settings\n$aui-nav-font-size: unit(4) !default;\n$aui-nav-default-height: unit(9) !default;\n$aui-nav-item-spacing: unit(8) !default;\n\n// Modification: Small\n$aui-nav-small-font-size: unit(3) !default;\n$aui-nav-small-default-height: unit(7) !default;\n$aui-nav-small-item-spacing: unit(6) !default;\n$aui-nav-small-tab-item-padding-x: unit(4) !default;\n$aui-nav-small-tab-item-padding-y: unit(3.5) !default;\n$aui-nav-small-tab-height: $aui-nav-small-font-size + 2 * $aui-nav-small-tab-item-padding-y !default;\n\n// Modification: Pills\n$aui-nav-tab-item-padding-x: unit(5) !default;\n$aui-nav-tab-item-padding-y: unit(4.5) !default;\n$aui-nav-tab-height: $aui-nav-font-size + 2 * $aui-nav-tab-item-padding-y !default;\n\n// Modification: Dropdown\n$aui-nav-dropdown-toogle-arrow-width: 13px !default;\n$aui-nav-dropdown-sticky-padding-x: $aui-grid-container-offset !default;\n$aui-nav-dropdown-sticky-padding-y: unit(4.5) !default;\n$aui-nav-dropdown-sticky-height: $aui-nav-font-size + 2* $aui-nav-dropdown-sticky-padding-y !default;\n\n.aui-nav {\n  position: relative;\n  font-weight: $aui-font-weight-normal;\n  font-size: $aui-nav-font-size;\n  line-height: 1;\n  color: $aui-nav-textcolor;\n  fill: $aui-nav-textcolor;\n  stroke: $aui-nav-textcolor;\n}\n\n.aui-nav__items {\n  padding-left: 0;\n  list-style: none;\n}\n\n.aui-nav__action {\n  display: block;\n  width: 100%;\n  z-index: 1;\n  font-family: $aui-font-default;\n  position: relative;\n  padding: #{($aui-nav-default-height - $aui-nav-font-size) / 2} 0;\n  vertical-align: baseline;\n  text-align: left;\n  transition-property: color, background, fill, stroke;\n  transition-duration: .15s;\n  transition-timing-function: linear;\n  cursor: pointer;\n\n  &.is-active,\n  &:hover {\n    color: $aui-nav-textcolor-active;\n    fill: $aui-nav-textcolor-active;\n    stroke: $aui-nav-textcolor-active;\n  }\n\n  &,\n  &.is-disabled {\n    color: $aui-nav-textcolor;\n    fill: $aui-nav-textcolor;\n    stroke: $aui-nav-textcolor;\n  }\n\n  &,\n  &.is-disabled,\n  &:active,\n  &:focus {\n    outline: 0;\n    border: 0;\n    background: none;\n    @include aui-remove-tap-highlight;\n  }\n\n  > span {\n    position: relative;\n  }\n\n  .audiicon {\n    position: relative;\n    margin-right: .75em;\n    vertical-align: middle;\n  }\n\n  &.is-disabled {\n    cursor: not-allowed;\n    color: $aui-nav-textcolor-disabled;\n    fill: $aui-nav-textcolor-disabled;\n    stroke: $aui-nav-textcolor-disabled;\n    //opacity: .3;\n  }\n}\n\n/**\n * Modifier: List\n */\n.aui-nav--list {\n  .aui-nav__action {\n    padding: unit(3) 0;\n  }\n\n  .aui-nav__item {\n    display: block;\n  }\n\n  .aui-nav__item + .aui-nav__item {\n    border-top: 1px solid $aui-nav-list-separator-color;\n  }\n\n  .aui-nav__action {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n\n/**\n * Modifier: Bar and Tab\n */\n.aui-nav--bar,\n.aui-nav--tab {\n  font-family: $aui-font-extended;\n  font-variation-settings: $aui-font-extended-width;\n  overflow: hidden;\n  height: $aui-nav-default-height;\n\n  // NOTE\n  // Define a viewport width up to we use dropdown layout,\n  // instead of the origin bar/ tab layout.\n  // JS will read `content` value and switch the layout on window resize.\n  @if $aui-nav-layout-break > 0 {\n    &::after {\n      content: '#{$aui-nav-layout-break}';\n      position: absolute;\n      top: 0;\n      left: 0;\n      width: 0;\n      height: 0;\n      overflow: hidden;\n      visibility: hidden;\n    }\n  }\n\n  .aui-nav__panel {\n    position: relative;\n    max-width: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n    -webkit-overflow-scrolling: touch;\n    padding-bottom: 50px; // Hide Scrollbars\n    box-sizing: content-box;\n  }\n\n  .aui-nav__items {\n    display: flex;\n    width: 100%;\n    flex-flow: row nowrap;\n    align-items: flex-start;\n    white-space: nowrap;\n  }\n\n  .aui-nav__item {\n    flex: 0 0 auto;\n    padding: 0 #{$aui-nav-item-spacing / 2};\n\n    &:first-child {\n      padding-left: 0;\n    }\n\n    &:last-child {\n      padding-right: 0;\n    }\n  }\n\n  .aui-nav__action {\n    display: inline-block;\n    width: auto;\n    font-family: inherit;\n\n    &.is-active {\n      transition-delay: .15s;\n    }\n  }\n}\n\n// Active indicator added by JS\n.aui-nav__indicator {\n  pointer-events: none;\n  display: block;\n  position: absolute;\n  top: $aui-nav-default-height;\n  left: 0;\n  width: 1px;\n  height: 2px;\n  background: $aui-nav-textcolor-active;\n  opacity: 0;\n  transform: translateY(-100%);\n}\n\n// Paddles added by JS\n.aui-nav__paddle-left,\n.aui-nav__paddle-right {\n  content: '';\n  display: block;\n  position: absolute;\n  top: 0;\n  width: $aui-nav-item-spacing;\n  height: 100%;\n  z-index: 2;\n  border: 0;\n  outline: 0;\n  overflow: hidden;\n  transition: opacity .15s linear;\n\n  // Arrow icon\n  &::after {\n    content: '';\n    display: inline-block;\n    position: absolute;\n    top: 50%;\n    width: 8px;\n    height: 13px;\n    background: url('data:image/svg+xml,#{aui-svg-arrow($aui-nav-textcolor)}') center center no-repeat;\n    transform: translateY(-50%);\n  }\n\n  &:disabled {\n    width: 0;\n    opacity: 0;\n  }\n}\n\n.aui-nav__paddle-left {\n  left: 0;\n  background: linear-gradient(to right, rgba(#fff,1) 40%,rgba(#fff,0) 100%);\n\n  &::after {\n    left: 0;\n    transform: translateY(-50%) rotate(180deg);\n  }\n}\n\n.aui-nav__paddle-right {\n  right: 0;\n  background: linear-gradient(to right, rgba(#fff,0) 0%,rgba(#fff,1) 60%);\n\n  &::after {\n    right: 0;\n  }\n}\n\n.is-animated .aui-nav__indicator {\n  opacity: 1;\n  transition: left .3s $aui-easing, width .3s $aui-easing, opacity .3s $aui-easing;\n}\n\n.aui-nav--overlap {\n  margin-top: #{$aui-nav-default-height * -1};\n}\n\n.aui-nav--small {\n  height: $aui-nav-small-default-height;\n  font-size: $aui-nav-small-font-size;\n  font-family: $aui-font-default;\n\n  .aui-nav__item {\n    padding: 0 #{$aui-nav-small-item-spacing / 2};\n\n    &:first-child {\n      padding-left: 0;\n    }\n\n    &:last-child {\n      padding-right: 0;\n    }\n  }\n\n  .aui-nav__action {\n    padding: #{($aui-nav-small-default-height - $aui-nav-small-font-size) / 2} 0;\n  }\n\n  .aui-nav__indicator {\n    top: $aui-nav-small-default-height;\n  }\n}\n\n.aui-nav--tab {\n  height: $aui-nav-tab-height;\n\n  .aui-nav__item {\n    padding-left: 0;\n    padding-right: 0;\n  }\n\n  .aui-nav__action {\n    padding: $aui-nav-tab-item-padding-y $aui-nav-tab-item-padding-x;\n  }\n\n  .aui-nav__indicator {\n    top: 0;\n    height: 100%;\n    transform: none;\n    background: $aui-nav-tab-background;\n  }\n\n  &.aui-nav--small {\n    height: $aui-nav-small-tab-height;\n\n    .aui-nav__action {\n      padding: $aui-nav-small-tab-item-padding-y $aui-nav-small-tab-item-padding-x;\n    }\n  }\n\n  &.aui-nav--overlap {\n    margin-top: #{$aui-nav-tab-height * -1};\n  }\n}\n\n/**\n * Modifier: dropdown\n */\n.aui-nav--dropdown {\n  color: $aui-nav-dropdown-textcolor;\n\n  &.is-active {\n    z-index: $aui-zindex-dropdown;\n  }\n\n  // Dropdown toggle added by JS\n  .aui-nav__toggle {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    position: relative;\n    padding: unit(2.5) 0;\n    width: 100%;\n    border: 0;\n    background: none;\n    outline: none;\n    line-height: 1;\n    text-align: left;\n    color: $aui-nav-textcolor-active;\n  }\n\n  .aui-nav__toggle-label {\n    display: block;\n    position: relative;\n    pointer-events: none;\n    padding-right: #{$aui-nav-dropdown-toogle-arrow-width + 5px};\n\n    // Arrow icon\n    &::after {\n      $_height: 8px;\n      content: '';\n      display: block;\n      position: absolute;\n      top: 50%;\n      right: 0;\n      width: $aui-nav-dropdown-toogle-arrow-width;\n      height: $_height;\n      margin-top: ($_height / -2);\n      // background: url('data:image/svg+xml,#{aui-svg-dropdown-arrow($aui-dropdown-arrow-color)}') center center no-repeat;\n      transition-property: transform, background;\n      transition-duration:0.25s;\n      transition-timing-function: $aui-easing;\n    }\n  }\n\n  &.is-active .aui-nav__toggle-label::after {\n    transform: rotate(180deg);\n  }\n\n  // Underline added by JS\n  .aui-nav__underline {\n    display: block;\n    position: relative;\n    top: -1px;\n    height: 1px;\n    background: $aui-nav-dropdown-textcolor;\n    z-index: 1;\n\n    &::after {\n      content: '';\n      display: block;\n      opacity: 0;\n      position: absolute;\n      top: 1px;\n      width: 100%;\n      height: 1px;\n      background: inherit;\n      transition: opacity .25s linear;\n    }\n  }\n\n  &.is-active .aui-nav__underline::after {\n    opacity: 1;\n  }\n\n  .aui-nav__panel {\n    position: absolute;\n    top: 100%;\n    width: 100%;\n    opacity: 0;\n    visibility: hidden;\n    background: $aui-nav-dropdown-panel-color;\n    @include shadow;\n    transition: opacity .3s, visibility .3s;\n    transition-timing-function: $aui-easing;\n    z-index: $aui-zindex-dropdown;\n  }\n\n  &.is-active .aui-nav__panel {\n    visibility: visible;\n    opacity: 1;\n  }\n\n  .aui-nav__items {\n    max-height: 0;\n    overflow: hidden;\n    padding: unit(2) 0;\n    transition: max-height 0s .3s;\n  }\n\n  &.is-active .aui-nav__items {\n    // max-height:auto cannot be transitioned.\n    // Use a very high number instead (something bigger than the panel will ever get).\n    max-height: 10000px;\n    transition-delay: 0s;\n  }\n\n  .aui-nav__item {\n    opacity: 0;\n    margin: 0 unit(5);\n    transform: translateY(10%);\n    transition-property: transform, opacity;\n    transition-duration: .3s;\n    transition-timing-function: $aui-easing;\n    transition-delay: 0s; // increasing transition-delay set by JS\n\n    &:not(:last-child) {\n      border-bottom: 1px solid $aui-nav-dropdown-separator-color;\n    }\n  }\n\n  &.is-active .aui-nav__item {\n    opacity: 1;\n    transform: translateY(0);\n  }\n\n  .aui-nav__action {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    padding: unit(5) 0;\n  }\n\n  &.aui-nav--sticky {\n    // We use position:sticky for smoother behavior on iOS.\n    // Browser which didn't support it will just ignore it.\n    position: sticky;\n    top: 0;\n    z-index: $aui-zindex-nav-sticky;\n  }\n\n  &.aui-nav--sticky .aui-nav__toggle {\n    background: $aui-nav-dropdown-sticky-background;\n  }\n\n  &.is-sticky .aui-nav__toggle {\n    padding: $aui-nav-dropdown-sticky-padding-y $aui-nav-dropdown-sticky-padding-x;\n    @include shadow;\n    z-index: $aui-zindex-nav-dropdown-toggle;\n  }\n\n  &.is-sticky .aui-nav__toggle {\n    // If the Browser didn't supports position:sticky, JS will toggle .is-sticky\n    // class to handle positioning.\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n  }\n\n  &.is-sticky .aui-nav__panel {\n    position: fixed;\n    top: $aui-nav-dropdown-sticky-height;\n    left: 0;\n  }\n\n  &.is-sticky .aui-nav__underline {\n    opacity: 0;\n  }\n\n  &.is-sticky .aui-nav__item {\n    margin-left: $aui-nav-dropdown-sticky-padding-x;\n    margin-right: $aui-nav-dropdown-sticky-padding-x;\n  }\n}\n"
  },
  {
    "path": "src/nav/nav-bar.js",
    "content": "import Component from '../component/component';\nimport ResizeObserver from '../util/resize-observer';\nimport ScrollObserverElement from '../util/scroll-observer-element';\nimport limit from '../util/limit';\n\nconst SELECTOR_COMPONENT = '.aui-js-nav';\nconst CLASS_PANEL = 'aui-nav__panel';\nconst CLASS_ACTION = 'aui-nav__action';\nconst CLASS_INDICATOR = 'aui-nav__indicator';\nconst CLASS_PADDLES = 'aui-nav__paddles';\nconst CLASS_PADDLE_LEFT = 'aui-nav__paddle-left';\nconst CLASS_PADDLE_RIGHT = 'aui-nav__paddle-right';\nconst CLASS_IS_ACTIVE = 'is-active';\nconst CLASS_IS_ANIMATED = 'is-animated';\nconst SHOW_INDICATOR_DELAY = 0.25; // in seconds; Delay after which, the indicator fades in.\nconst INDICATOR_HIDDEN_X = -20; // Position of indicator when it's hidden, e.g. on page load.\nconst INDICATOR_HIDDEN_WIDTH = 10; // Width of indicator when it's hidden, e.g. on page load.\nconst SCROLL_THRESHOLD = 20; // in px; How far to scroll, before paddles are visible.\nconst SCROLL_PADDING = 10; // in px;\nconst SCROLL_EASING = 0.2;\n\n/**\n * Class constructor for NavBar AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class NavBar extends Component {\n\n  /**\n   * Upgrades all NavBar AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new NavBar(element));\n      }\n    });\n    return components;\n  };\n\n  /**\n   * Constructor\n   * @constructor\n   * @param {HTMLElement} element The element of the AUI component.\n   */\n  constructor(element) {\n    super(element);\n  }\n\n  /**\n   * Initialize component.\n   */\n  init() {\n    super.init();\n\n    // Refer elements\n    this._panel = this._element.querySelector(`.${CLASS_PANEL}`);\n    this._actionElements = Array.from(this._element.querySelectorAll(`.${CLASS_ACTION}`));\n\n    // Add indicator (line underneath action elements)\n    this._indicator = document.createElement('span');\n    this._indicator.classList.add(CLASS_INDICATOR);\n    this._panel.appendChild(this._indicator);\n\n    // Add paddles (gradient and buttons on the left/right, when scrolling is required)\n    this._paddles = document.createElement('div');\n    this._paddles.classList.add(CLASS_PADDLES);\n    this._element.appendChild(this._paddles);\n    this._paddleLeft = this._addPaddle(CLASS_PADDLE_LEFT);\n    this._paddleRight = this._addPaddle(CLASS_PADDLE_RIGHT);\n\n    // Watch window resizing\n    this._resizeObserver = new ResizeObserver();\n    this._resizeObserver.resized.add(this._resizedHandler = () => this.update());\n\n    // Watch scrolling of wrapper element\n    this._scrollObserver = new ScrollObserverElement(this._panel);\n    this._scrollObserver.scrolled.add(this._scrollHandler = () => this._onScrollElement());\n    this._onScrollElement();\n\n    // Add event handler\n    this._element.addEventListener('click', this._clickHandler = (event) => this._onClick(event));\n\n    // Set initial action element active\n    this.setActive(this._element.querySelector(`.${CLASS_IS_ACTIVE}`));\n\n    // Delay fade in of indicator\n    setTimeout(() => {\n      this._element.classList.add(CLASS_IS_ANIMATED);\n    }, SHOW_INDICATOR_DELAY * 1000);\n  }\n\n  /**\n   * Dispose component.\n   */\n  dispose() {\n    super.dispose();\n    this._panel.scrollLeft = 0;\n    this._scrollActive = false;\n    this._resizeObserver.resized.remove(this._resizedHandler);\n    this._scrollObserver.scrolled.remove(this._scrollHandler);\n    this.removeChild(this._indicator);\n    this.removeChild(this._paddles);\n    this._element.removeEventListener('click', this._clickHandler);\n    this._element.classList.remove(CLASS_IS_ANIMATED);\n  }\n\n  /**\n   * Updates inidcator position and visibility of paddles.\n   */\n  update() {\n    this.setActive(this._element.querySelector(`.${CLASS_IS_ACTIVE}`));\n    this._updatePaddleVisibility();\n  }\n\n  /**\n   * Set an action element at given index active.\n   * @param {index} index The index of action element to set active.\n   */\n  setActiveByIndex(index) {\n    let i = limit(index, 0, this._actionElements.length);\n    this.setActive(this._actionElements[i]);\n  }\n\n  /**\n   * Set an action element active.\n   * @param {HTMLElement} activeTarget The action element to set active.\n   */\n  setActive(activeTarget) {\n    // TODO: Optimize like in nav-list\n    this._actionElements.forEach(item => {\n      item.classList.remove(CLASS_IS_ACTIVE);\n    });\n\n    let indicatorLeft = INDICATOR_HIDDEN_X;\n    let indicatorWidth = INDICATOR_HIDDEN_WIDTH;\n\n    if (activeTarget) {\n      activeTarget.classList.add(CLASS_IS_ACTIVE);\n      let containerBounds = this._element.getBoundingClientRect();\n      let rectTarget = activeTarget.getBoundingClientRect();\n      indicatorLeft = rectTarget.left - containerBounds.left + this._panel.scrollLeft;\n      indicatorWidth = activeTarget.offsetWidth;\n    }\n\n    this._indicator.style.left = `${indicatorLeft}px`;\n    this._indicator.style.width = `${indicatorWidth}px`;\n\n    this._index = null;\n    for (var i = 0; i < this._actionElements.length; i++) {\n      if (this._actionElements[i] === activeTarget) {\n        this._index = i;\n        break;\n      }\n    }\n  }\n\n  /**\n   * Scroll to the next visible action element on the left.\n   */\n  scrollLeft() {\n    this.scroll(-1);\n  }\n\n  /**\n   * Scroll to the next visible action element on the right.\n   */\n  scrollRight() {\n    this.scroll(1);\n  }\n\n  /**\n   * Scroll to the next visible action element on the left or right.\n   * @param {number} dir The direction to scroll to: -1=>left, 1=>right.\n   */\n  scroll(dir) {\n    let containerBounds = this._element.getBoundingClientRect();\n    let elementBounds;\n    let left = 0;\n    let right = this._panel.offsetWidth;\n    let scroll = 0;\n\n    if (dir < 0) {\n      // Scroll to previous element\n      for (let i = this._actionElements.length - 1; i > 0; i--) {\n        let element = this._actionElements[i];\n        elementBounds = element.getBoundingClientRect();\n        let elementLeft = elementBounds.left - containerBounds.left;\n        if (elementLeft < left) {\n          scroll = Math.ceil(elementLeft + this._panel.scrollLeft - SCROLL_PADDING);\n          break;\n        }\n      }\n\n    } else {\n      // Scroll to next element\n      for (let i = 0; i < this._actionElements.length; i++) {\n        let element = this._actionElements[i];\n        elementBounds = element.getBoundingClientRect();\n        let elementRight = elementBounds.left - containerBounds.left + element.offsetWidth;\n        if (elementRight > right) {\n          scroll = Math.ceil(elementRight + this._panel.scrollLeft + SCROLL_PADDING - right);\n          break;\n        }\n      }\n    }\n\n    this._animateScroll(scroll);\n  }\n\n  /**\n   * Scroll to the next visible action element on the left or right.\n   * @param {number} scroll position to scroll to.\n   * @private\n   */\n  _animateScroll(scroll) {\n    this._scrollStart = this._panel.scrollLeft;\n    this._scrollDelta = scroll - this._scrollStart;\n    this._scrollRatio = 0;\n    this._scrollActive = true;\n    window.requestAnimationFrame(() => this._animateScrollTick());\n  }\n\n  /**\n   * Scroll animation tick.\n   * @private\n   */\n  _animateScrollTick() {\n    let ratio = 1 - this._scrollRatio;\n    ratio *= SCROLL_EASING;\n    this._scrollRatio += ratio;\n\n    if (ratio < 0.001) {\n      this._scrollRatio = 1;\n    }\n    this._panel.scrollLeft = this._scrollStart + this._scrollDelta * this._scrollRatio;\n\n    if (this._scrollActive && this._scrollRatio !== 1) {\n      window.requestAnimationFrame(() => this._animateScrollTick());\n    }\n  }\n\n  /**\n   * Adds a paddle element.\n   * @param {string} cssClass to add to element.\n   * @returns {HTMLElement} the created paddle element.\n   * @private\n   */\n  _addPaddle(cssClass) {\n    let paddle = document.createElement('button');\n    paddle.setAttribute('type', 'button');\n    paddle.classList.add(cssClass);\n    this._paddles.appendChild(paddle);\n    return paddle;\n  }\n\n  /**\n   * Update visibility of paddles depending on scroll position.\n   * @private\n   */\n  _updatePaddleVisibility() {\n    if (this._scrollObserver.scrollLeft - SCROLL_THRESHOLD > 0) {\n      this._paddleLeft.disabled = false;\n    } else {\n      this._paddleLeft.disabled = true;\n    }\n\n    if (this._scrollObserver.scrollLeft + this._element.offsetWidth + SCROLL_THRESHOLD < this._panel.scrollWidth) {\n      this._paddleRight.disabled = false;\n    } else {\n      this._paddleRight.disabled = true;\n    }\n  }\n\n  /**\n   * Handle scroll of element.\n   * @private\n   */\n  _onScrollElement() {\n    this._updatePaddleVisibility();\n  }\n\n  /**\n   * Handle click of element.\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  _onClick(event) {\n    if (event.target === this._paddleLeft) {\n      event.preventDefault();\n      this.scrollLeft();\n\n    } else if (event.target === this._paddleRight) {\n      event.preventDefault();\n      this.scrollRight();\n\n    } else {\n      // Find closest action element\n      let currentElement = event.target;\n      while (currentElement !== event.currentTarget) {\n        if (currentElement.classList.contains(CLASS_ACTION)) {\n          if (!currentElement.disabled) {\n            this.setActive(currentElement);\n          }\n          break;\n        }\n        currentElement = currentElement.parentNode;\n      }\n    }\n  }\n\n  /**\n   * Returns index.\n   * @returns {number} the index of current active action element.\n   */\n  get index() {\n    return this._index;\n  }\n\n  /**\n   * Returns length.\n   * @returns {number} the number of action elements.\n   */\n  get length() {\n    return this._actionElements.length;\n  }\n}\n"
  },
  {
    "path": "src/nav/nav-dropdown.js",
    "content": "import Component from '../component/component';\nimport Sticky from '../sticky/sticky';\nimport limit from '../util/limit';\nimport isNone from '../util/is-none';\n\nconst SELECTOR_COMPONENT = '.aui-js-nav';\nconst CLASS_PANEL = 'aui-nav__panel';\nconst CLASS_UNDERLINE = 'aui-nav__underline';\nconst CLASS_ITEM = 'aui-nav__item';\nconst CLASS_ACTION = 'aui-nav__action';\nconst CLASS_TOGGLE = 'aui-nav__toggle';\nconst CLASS_TOGGLE_LABEL = 'aui-nav__toggle-label';\nconst CLASS_STICKY = 'aui-nav--sticky';\nconst CLASS_IS_ACTIVE = 'is-active';\n\n/**\n * Class constructor for NavDropdown AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class NavDropdown extends Component {\n\n  /**\n   * Upgrades all NavDropdown AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new NavDropdown(element));\n      }\n    });\n    return components;\n  };\n\n  /**\n   * Constructor\n   * @constructor\n   * @param {HTMLElement} element The element of the AUI component.\n   */\n  constructor(element) {\n    super(element);\n  }\n\n  /**\n   * Initialize component.\n   */\n  init() {\n    super.init();\n\n    this._index = 0;\n\n    // Refer elements\n    this._panel = this._element.querySelector(`.${CLASS_PANEL}`);\n    this._actions = Array.from(this._element.querySelectorAll(`.${CLASS_ACTION}`));\n\n    // Set transition delays for item elements\n    Array.from(this._element.querySelectorAll(`.${CLASS_ITEM}`)).forEach((element, index) => {\n      element.style.transitionDelay = element.style.webkitTransitionDelay = `${0.1 + 0.05 * index}s`;\n    });\n\n    // Add toggle element\n    this._toggle = this.createElement('button', [CLASS_TOGGLE], {\n      type: 'button'\n    });\n    this._element.appendChild(this._toggle);\n    this._toggleLabel = this.createElement('span', [CLASS_TOGGLE_LABEL]);\n    this._toggle.appendChild(this._toggleLabel);\n\n    // Add underline element\n    this._underline = this.createElement('div', [CLASS_UNDERLINE]);\n    this._element.appendChild(this._underline);\n\n    // Check if component is sticky\n    if (this._element.classList.contains(CLASS_STICKY)) {\n      this._stickyHandler = new Sticky(this._element);\n    }\n\n    // Add event handler\n    this._element.addEventListener('click', this._clickHandler = (event) => this._onClick(event));\n\n    // Set initial action element active\n    this.setActive(this._element.querySelector(`.${CLASS_IS_ACTIVE}`));\n  }\n\n  /**\n   * Dispose component.\n   */\n  dispose() {\n    super.dispose();\n    this._actions.forEach((element, index) => {\n      element.style.transitionDelay = '';\n    });\n    this.removeChild(this._toggle);\n    this.removeChild(this._underline);\n    this._element.removeEventListener('click', this._clickHandler);\n  }\n\n  /**\n   * Updates inidcator position and visibility of paddles.\n   */\n  update() {\n    this.setActive(this._element.querySelector(`.${CLASS_IS_ACTIVE}`));\n  }\n\n  /**\n   * Toggle active state.\n   * @param {boolean} force If is true, open panel, and if it is false, close it.\n   */\n  toggle(force) {\n    this._element.classList.toggle(CLASS_IS_ACTIVE, force);\n  }\n\n  /**\n   * Set an action element at given index active.\n   * @param {index} index The index of action element to set active.\n   */\n  setActiveByIndex(index) {\n    let i = limit(index, 0, this._actions.length);\n    this.setActive(this._actions[i]);\n  }\n\n  /**\n   * Set an action element active.\n   * @param {HTMLElement} activeTarget The action element to set active.\n   */\n  setActive(activeTarget) {\n    // TODO: Optimize like in nav-list\n\n    // Remove active class from all action elements\n    this._actions.forEach(item => {\n      item.classList.remove(CLASS_IS_ACTIVE);\n    });\n\n    // If no action element is active, pick the first one\n    if (isNone(activeTarget)) {\n      activeTarget = this._actions[0];\n    }\n\n    // Apply active class to action element and mirror innerHTML to toggle\n    activeTarget.classList.add(CLASS_IS_ACTIVE);\n    this._toggleLabel.innerHTML = activeTarget.innerHTML;\n\n    // Update active index\n    this._index = null;\n    for (var i = 0; i < this._actions.length; i++) {\n      if (this._actions[i] === activeTarget) {\n        this._index = i;\n        break;\n      }\n    }\n  }\n\n  /**\n   * Handle click of element.\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  _onClick(event) {\n    if (event.target === this._toggle) {\n      this.toggle();\n    } else {\n      // Find closest action element\n      let currentElement = event.target;\n      while (currentElement !== event.currentTarget) {\n        if (currentElement.classList.contains(CLASS_ACTION)) {\n          this.setActive(currentElement);\n          this.toggle();\n          break;\n        }\n        currentElement = currentElement.parentNode;\n      }\n    }\n  }\n\n  /**\n   * Returns index.\n   * @returns {number} the index of current active action element.\n   */\n  get index() {\n    return this._index;\n  }\n\n  /**\n   * Returns length.\n   * @returns {number} the number of action elements.\n   */\n  get length() {\n    return this._actions.length;\n  }\n}\n"
  },
  {
    "path": "src/nav/nav-list.js",
    "content": "import Component from '../component/component';\nimport limit from '../util/limit';\n\nconst SELECTOR_COMPONENT = '.aui-js-nav';\nconst CLASS_ACTION = 'aui-nav__action';\nconst CLASS_IS_ACTIVE = 'is-active';\n\n/**\n * Class constructor for NavList AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class NavList extends Component {\n\n  /**\n   * Upgrades all NavList AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new NavList(element));\n      }\n    });\n    return components;\n  };\n\n  /**\n   * Constructor\n   * @constructor\n   * @param {HTMLElement} element The element of the AUI component.\n   */\n  constructor(element) {\n    super(element);\n  }\n\n  /**\n   * Initialize component.\n   */\n  init() {\n    super.init();\n\n    // Refer elements\n    this._actionElements = Array.from(this._element.querySelectorAll(`.${CLASS_ACTION}`));\n\n    // Add event handler\n    this._element.addEventListener('click', this._clickHandler = (event) => this._onClick(event));\n\n    // Set initial action element active\n    this.setActive(this._element.querySelector(`.${CLASS_IS_ACTIVE}`));\n  }\n\n  /**\n   * Dispose component.\n   */\n  dispose() {\n    super.dispose();\n    this._element.removeEventListener('click', this._clickHandler);\n  }\n\n  /**\n   * Updates inidcator position and visibility of paddles.\n   */\n  update() {\n    this.setActive(this._element.querySelector(`.${CLASS_IS_ACTIVE}`));\n  }\n\n  /**\n   * Set an action element at given index active.\n   * @param {index} index The index of action element to set active.\n   */\n  setActiveByIndex(index) {\n    const i = limit(index, 0, this._actionElements.length);\n    this.setActive(this._actionElements[i]);\n  }\n\n  /**\n   * Set an action element active.\n   * @param {HTMLElement} activeTarget The action element to set active.\n   */\n  setActive(activeTarget) {\n    this._actionElements.forEach((item, index) => {\n      const active = (item === activeTarget);\n      item.classList.toggle(CLASS_IS_ACTIVE, active);\n      if (active) {\n        this._index = index;\n      }\n    });\n  }\n\n\n  /**\n   * Handle click of element.\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  _onClick(event) {\n    // Find closest action element\n    let currentElement = event.target;\n    while (currentElement !== event.currentTarget) {\n      if (currentElement.classList.contains(CLASS_ACTION)) {\n        if (!currentElement.disabled) {\n          this.setActive(currentElement);\n        }\n        break;\n      }\n      currentElement = currentElement.parentNode;\n    }\n  }\n\n  /**\n   * Returns index.\n   * @returns {number} the index of current active action element.\n   */\n  get index() {\n    return this._index;\n  }\n\n  /**\n   * Returns length.\n   * @returns {number} the number of action elements.\n   */\n  get length() {\n    return this._actionElements.length;\n  }\n}\n"
  },
  {
    "path": "src/nav/nav.js",
    "content": "import Component from '../component/component';\nimport NavBar from '../nav/nav-bar';\nimport NavDropdown from '../nav/nav-dropdown';\nimport NavList from '../nav/nav-list';\nimport ResizeObserver from '../util/resize-observer';\n\nconst SELECTOR_COMPONENT = '.aui-js-nav';\nconst CLASS_LIST = 'aui-nav--list';\nconst CLASS_BAR = 'aui-nav--bar';\nconst CLASS_TAB = 'aui-nav--tab';\nconst CLASS_DROPDOWN = 'aui-nav--dropdown';\n\n/**\n * Class constructor for Nav AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Nav extends Component {\n\n  /**\n   * Upgrades all Nav AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Nav(element));\n      }\n    });\n    return components;\n  };\n\n  /**\n   * Returns modifier `list`\n   */\n  static get MODIFIER_LIST() {\n    return CLASS_LIST;\n  }\n\n  /**\n   * Returns modifier `bar`\n   */\n  static get MODIFIER_BAR() {\n    return CLASS_BAR;\n  }\n\n  /**\n   * Returns modifier `tab`\n   */\n  static get MODIFIER_TAB() {\n    return CLASS_TAB;\n  }\n\n  /**\n   * Returns modifier `dropdown`\n   */\n  static get MODIFIER_DROPDOWN() {\n    return CLASS_DROPDOWN;\n  }\n\n  /**\n   * Constructor\n   * @constructor\n   * @param {HTMLElement} element The element of the AUI component.\n   */\n  constructor(element) {\n    super(element);\n  }\n\n  /**\n   * Initialize component.\n   */\n  init() {\n    super.init();\n\n    // Initialize with appropriate decorator depending on modifier,\n    // represented by according CSS class:\n    if (this._element.classList.contains(CLASS_BAR)) {\n      this._originModifier = Nav.MODIFIER_BAR;\n\n    } else if (this._element.classList.contains(CLASS_TAB)) {\n      this._originModifier = Nav.MODIFIER_TAB;\n\n    } else if (this._element.classList.contains(CLASS_DROPDOWN)) {\n      this._originModifier = Nav.MODIFIER_DROPDOWN;\n\n    } else if (this._element.classList.contains(CLASS_LIST)) {\n      this._originModifier = Nav.MODIFIER_LIST;\n    }\n\n    this._layoutBreakpoint = parseInt(window.getComputedStyle(this._element, ':after').getPropertyValue('content').replace(/['\"]+/g, ''));\n\n    if (this._layoutBreakpoint > 0 && (this._originModifier === Nav.MODIFIER_BAR || this._originModifier === Nav.MODIFIER_TAB)) {\n      this._resizeObserver = new ResizeObserver();\n      this._resizeObserver.resized.add(this._boundResize = () => this._resized());\n      this._resized();\n    } else {\n      this.setModifier(this._originModifier);\n    }\n  }\n\n  /**\n   * Dispose component.\n   */\n  dispose() {\n    super.dispose();\n\n    if (this._decorator) {\n      this._decorator.dispose();\n    }\n  }\n\n  /**\n   * Updates inidcator position and visibility of paddles.\n   */\n  update() {\n    if (this._decorator) {\n      this._decorator.update();\n    }\n  }\n\n  /**\n   * Set modifier to switch style of Nav Component.\n   * @param {string} modifier name.\n   * @throws Will throw an error, if the given modifier is not supported.\n   */\n  setModifier(modifier) {\n    if (this._modifier === modifier) {\n      return;\n    }\n\n    if (this._decorator) {\n      this._decorator.dispose();\n    }\n\n    this._element.classList.remove(CLASS_LIST, CLASS_BAR, CLASS_TAB, CLASS_DROPDOWN);\n\n    switch (modifier) {\n      case Nav.MODIFIER_BAR:\n        this._element.classList.add(CLASS_BAR);\n        this._decorator = new NavBar(this._element);\n        break;\n\n      case Nav.MODIFIER_TAB:\n        this._element.classList.add(CLASS_TAB);\n        this._decorator = new NavBar(this._element);\n        break;\n\n      case Nav.MODIFIER_DROPDOWN:\n        this._element.classList.add(CLASS_DROPDOWN);\n        this._decorator = new NavDropdown(this._element);\n        break;\n\n      case Nav.MODIFIER_LIST:\n        this._element.classList.add(CLASS_LIST);\n        this._decorator = new NavList(this._element);\n        break;\n\n      default:\n        throw new Error(`Modifier '${modifier}' for Nav component not supported.`);\n    }\n\n    this._modifier = modifier;\n  }\n\n  /**\n   * Handle resize signal.\n   */\n  _resized() {\n    const viewportWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n    if (this._originModifier === Nav.MODIFIER_BAR || this._originModifier === Nav.MODIFIER_TAB) {\n      if (viewportWidth >= this._layoutBreakpoint) {\n        this.setModifier(this._originModifier);\n      } else {\n        this.setModifier(Nav.MODIFIER_DROPDOWN);\n      }\n    }\n  }\n\n  /**\n   * Returns index.\n   * @returns {number} the index of current active action element.\n   */\n  get index() {\n    return this._decorator\n      ? this._decorator.index\n      : undefined;\n  }\n\n  /**\n   * Returns length.\n   * @returns {number} the number of action elements.\n   */\n  get length() {\n    return this._decorator\n      ? this._decorator.length\n      : undefined;\n  }\n}\n"
  },
  {
    "path": "src/nav/snippets/nav-bar-small.html",
    "content": "<nav class=\"aui-nav aui-js-nav aui-nav--bar aui-nav--small\">\n  <div class=\"aui-nav__panel\">\n    <ul class=\"aui-nav__items\">\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action is-active\" href=\"#\">Link alpha</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Link bravo</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Link charlie</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Link delta</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <button class=\"aui-nav__action\" type=\"button\">Button foxtrot</button>\n      </li>\n      <li class=\"aui-nav__item\">\n        <button class=\"aui-nav__action is-disabled\" type=\"button\" disabled>Disabled</button>\n      </li>\n    </ul>\n  </div>\n</nav>\n"
  },
  {
    "path": "src/nav/snippets/nav-bar.html",
    "content": "<nav class=\"aui-nav aui-js-nav aui-nav--bar\">\n  <div class=\"aui-nav__panel\">\n    <ul class=\"aui-nav__items\">\n      <li class=\"aui-nav__item\">\n        <button class=\"aui-nav__action\" type=\"button\"><span>Button echo</span></button>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action is-active\" href=\"#\">Link alpha</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Link bravo</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Link charlie</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Link delta</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <button class=\"aui-nav__action is-disabled\" type=\"button\" disabled>Disabled</button>\n      </li>\n    </ul>\n  </div>\n</nav>\n"
  },
  {
    "path": "src/nav/snippets/nav-dropdown-sticky.html",
    "content": "<nav class=\"aui-nav aui-js-nav aui-nav--dropdown aui-nav--sticky\">\n  <div class=\"aui-nav__panel\">\n    <ul class=\"aui-nav__items\">\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Action alpha</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Action bravo</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Action charlie</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Action delta</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <button class=\"aui-nav__action\" type=\"button\">Action echo</button>\n      </li>\n      <li class=\"aui-nav__item\">\n        <button class=\"aui-nav__action\" type=\"button\">Action foxtrot</button>\n      </li>\n      <li class=\"aui-nav__item\">\n        <button class=\"aui-nav__action is-disabled\" type=\"button\" disabled>Disabled</button>\n      </li>\n    </ul>\n  </div>\n</nav>\n"
  },
  {
    "path": "src/nav/snippets/nav-dropdown.html",
    "content": "<nav class=\"aui-nav aui-js-nav aui-nav--dropdown\">\n  <div class=\"aui-nav__panel\">\n    <ul class=\"aui-nav__items\">\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Action alpha</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Action bravo</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Action charlie</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Action delta</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <button class=\"aui-nav__action\" type=\"button\">Action echo</button>\n      </li>\n      <li class=\"aui-nav__item\">\n        <button class=\"aui-nav__action\" type=\"button\">Action foxtrot</button>\n      </li>\n      <li class=\"aui-nav__item\">\n        <button class=\"aui-nav__action is-disabled\" type=\"button\" disabled>Disabled</button>\n      </li>\n    </ul>\n  </div>\n</nav>\n"
  },
  {
    "path": "src/nav/snippets/nav-list-icons.html",
    "content": "<nav class=\"aui-nav aui-js-nav aui-nav--list\">\n  <ul class=\"aui-nav__items\">\n    <li class=\"aui-nav__item\">\n      <a class=\"aui-nav__action is-active\" href=\"#\">\n        <svg class=\"audiicon\">\n          <use xlink:href=\"#audiicon-car-small\"></use>\n        </svg>\n        Action (active at first)\n      </a>\n    </li>\n    <li class=\"aui-nav__item\">\n      <a class=\"aui-nav__action\" href=\"#\">\n        <svg class=\"audiicon\">\n          <use xlink:href=\"#audiicon-car-small\"></use>\n        </svg>\n        Action\n      </a>\n    </li>\n    <li class=\"aui-nav__item\">\n      <a class=\"aui-nav__action\" href=\"#\">\n        <svg class=\"audiicon\">\n          <use xlink:href=\"#audiicon-car-small\"></use>\n        </svg>\n        Link\n      </a>\n    </li>\n    <li class=\"aui-nav__item\">\n      <button class=\"aui-nav__action\" type=\"button\">\n        <svg class=\"audiicon\">\n          <use xlink:href=\"#audiicon-car-small\"></use>\n        </svg>\n        Button\n      </button>\n    </li>\n    <li class=\"aui-nav__item\">\n      <button class=\"aui-nav__action is-disabled\" type=\"button\" disabled>\n        <svg class=\"audiicon\">\n          <use xlink:href=\"#audiicon-car-small\"></use>\n        </svg>\n        Disabled\n      </button>\n    </li>\n  </ul>\n</nav>\n"
  },
  {
    "path": "src/nav/snippets/nav-list-large-icons.html",
    "content": "<nav class=\"aui-nav aui-js-nav aui-nav--list\">\n  <ul class=\"aui-nav__items\">\n    <li class=\"aui-nav__item\">\n      <a class=\"aui-nav__action is-active\" href=\"#\">\n        <svg class=\"audiicon audiicon--large\">\n          <use xlink:href=\"#audiicon-car-large\"></use>\n        </svg>\n        Action (active at first)\n      </a>\n    </li>\n    <li class=\"aui-nav__item\">\n      <a class=\"aui-nav__action\" href=\"#\">\n        <svg class=\"audiicon audiicon--large\">\n          <use xlink:href=\"#audiicon-car-large\"></use>\n        </svg>\n        Action\n      </a>\n    </li>\n    <li class=\"aui-nav__item\">\n      <a class=\"aui-nav__action\" href=\"#\">\n        <svg class=\"audiicon audiicon--large\">\n          <use xlink:href=\"#audiicon-car-large\"></use>\n        </svg>\n        Link\n      </a>\n    </li>\n    <li class=\"aui-nav__item\">\n      <button class=\"aui-nav__action\" type=\"button\">\n        <svg class=\"audiicon audiicon--large\">\n          <use xlink:href=\"#audiicon-car-large\"></use>\n        </svg>\n        Button\n      </button>\n    </li>\n    <li class=\"aui-nav__item\">\n      <button class=\"aui-nav__action is-disabled\" type=\"button\" disabled>\n        <svg class=\"audiicon audiicon--large\">\n          <use xlink:href=\"#audiicon-car-large\"></use>\n        </svg>\n        Disabled\n      </button>\n    </li>\n  </ul>\n</nav>\n"
  },
  {
    "path": "src/nav/snippets/nav-tab-overlap.html",
    "content": "<nav class=\"aui-nav aui-js-nav aui-nav--tab aui-nav--overlap aui-theme-gray10-gray20\">\n  <div class=\"aui-nav__panel\">\n    <ul class=\"aui-nav__items\">\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action is-active\" href=\"#\">Action alpha</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Action bravo</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Action charlie</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Action delta</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <button class=\"aui-nav__action\" type=\"button\">Action echo</button>\n      </li>\n      <li class=\"aui-nav__item\">\n        <button class=\"aui-nav__action is-disabled\" type=\"button\" disabled>Disabled</button>\n      </li>\n    </ul>\n  </div>\n</nav>\n"
  },
  {
    "path": "src/nav/snippets/nav-tab-small.html",
    "content": "<nav class=\"aui-nav aui-js-nav aui-nav--tab aui-nav--small\">\n  <div class=\"aui-nav__panel\">\n    <ul class=\"aui-nav__items\">\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action is-active\" href=\"#\">Link alpha</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Link bravo</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Link charlie</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Link delta</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <button class=\"aui-nav__action\" type=\"button\">Button echo</button>\n      </li>\n      <li class=\"aui-nav__item\">\n        <button class=\"aui-nav__action is-disabled\" type=\"button\" disabled>Disabled</button>\n      </li>\n    </ul>\n  </div>\n</nav>\n"
  },
  {
    "path": "src/nav/snippets/nav-tab.html",
    "content": "<nav class=\"aui-nav aui-js-nav aui-nav--tab\">\n  <div class=\"aui-nav__panel\">\n    <ul class=\"aui-nav__items\">\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action is-active\" href=\"#\">Link alpha</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Link bravo</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Link charlie</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <a class=\"aui-nav__action\" href=\"#\">Link delta</a>\n      </li>\n      <li class=\"aui-nav__item\">\n        <button class=\"aui-nav__action\" type=\"button\">Button echo</button>\n      </li>\n      <li class=\"aui-nav__item\">\n        <button class=\"aui-nav__action is-disabled\" type=\"button\" disabled>Disabled</button>\n      </li>\n    </ul>\n  </div>\n</nav>\n"
  },
  {
    "path": "src/nav/snippets/nav.html",
    "content": "<nav class=\"aui-nav aui-js-nav aui-nav--list\">\n  <ul class=\"aui-nav__items\">\n    <li class=\"aui-nav__item\">\n      <a class=\"aui-nav__action is-active\" href=\"#\">Action (active at first)</a>\n    </li>\n    <li class=\"aui-nav__item\">\n      <a class=\"aui-nav__action\" href=\"#\">Action</a>\n    </li>\n    <li class=\"aui-nav__item\">\n      <a class=\"aui-nav__action\" href=\"#\">Link</a>\n    </li>\n    <li class=\"aui-nav__item\">\n      <button class=\"aui-nav__action\" type=\"button\">Button</button>\n    </li>\n    <li class=\"aui-nav__item\">\n      <button class=\"aui-nav__action is-disabled\" type=\"button\" disabled>Disabled</button>\n    </li>\n  </ul>\n</nav>\n"
  },
  {
    "path": "src/notification/_notification.scss",
    "content": "$close-btn-size: 17px !default;\n$text-padding-x: unit(3) !default;\n$text-padding-y: unit(3) !default;\n$container-offset-x: unit(3) !default;\n$container-offset-y: unit(3) !default;\n$opening-duration: .4s !default;\n$closing-duration: .4s !default;\n\n.aui-notification {\n  position: relative;\n  width: #{rem(320) - 2 * $container-offset-x};\n  @include aui-responsive-type(-1, 1.5);\n  transform: translateY(30px);\n  transition: height $closing-duration $aui-easing $closing-duration, margin $closing-duration $aui-easing $closing-duration, opacity $closing-duration $aui-easing, visibility $closing-duration $aui-easing, transform $closing-duration $aui-easing, box-shadow $closing-duration $aui-easing;\n  margin-bottom: unit(1);\n  opacity: 0;\n  visibility: hidden;\n\n  &-container {\n    position: fixed;\n    right: $container-offset-x;\n    top: $container-offset-y;\n    z-index: $aui-notification-zindex;\n  }\n\n  &__content {\n    position: relative;\n    margin-right: #{$close-btn-size + 10px};\n    padding: $text-padding-y #{$text-padding-x * 2} $text-padding-y $text-padding-x;\n  }\n\n  &__close {\n    position: absolute;\n    top: $text-padding-y;\n    right: $text-padding-x;\n    width: $close-btn-size;\n    height: $close-btn-size;\n    background: url('data:image/svg+xml,#{aui-svg-close($aui-color-dark)}') center center no-repeat;\n    cursor: pointer;\n    vertical-align: middle;\n    outline: none;\n    box-sizing: border-box;\n    border: none;\n    @include aui-remove-tap-highlight;\n  }\n\n  &.aui-color-text-light &__close,\n  &.aui-color-text-warning &__close {\n    background-image: url('data:image/svg+xml,#{aui-svg-close($aui-color-light)}');\n  }\n\n  &.is-open {\n    transform: translateY(0);\n    opacity: 1;\n    visibility: visible;\n    @include shadow-dark;\n    transition-duration: $opening-duration;\n  }\n\n  &.is-closed {\n    transform: translateY(0);\n    overflow: hidden;\n    height: 0 !important;\n  }\n}\n"
  },
  {
    "path": "src/notification/notification.js",
    "content": "import Component from '../component/component';\n\nconst SELECTOR_COMPONENT = '.aui-js-notification';\nconst CLASS_CONTENT = 'aui-notification__content';\nconst CLASS_CLOSE_BUTTON = 'aui-notification__close';\nconst CLASS_IS_CLOSED = 'is-closed';\nconst CLASS_IS_OPEN = 'is-open';\nconst ATTR_CLOSE = 'data-close';\n\n/**\n * Class constructor for Notification AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Notification extends Component {\n\n  /**\n   * Upgrades all Notification AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Notification(element));\n      }\n    });\n    return components;\n  };\n\n  constructor(element) {\n    super(element);\n  }\n\n  init() {\n    super.init();\n\n    this._content = this._element.querySelector(`.${CLASS_CONTENT}`);\n    if (!this._content) {\n      this._content = document.createElement('div');\n      this._content.classList.add(CLASS_CONTENT);\n      this._element.appendChild(this._content);\n    }\n\n    // Add close button\n    this._closeButton = document.createElement('button');\n    this._closeButton.setAttribute('type', 'button');\n    this._closeButton.classList.add(CLASS_CLOSE_BUTTON);\n    this._element.appendChild(this._closeButton);\n\n    this.open();\n  }\n\n  open() {\n    this._element.addEventListener('click', this._clickHandler = (event) => this._onClick(event));\n    this.checkOpeningPreparation();\n  }\n\n  checkOpeningPreparation() {\n    clearTimeout(this.openingTimeout);\n    this._element.classList.add(CLASS_IS_OPEN);\n    this._element.classList.remove(CLASS_IS_CLOSED);\n  }\n\n  close() {\n    this._element.removeEventListener('click', this._clickHandler);\n    this._element.style.height = `${this._element.offsetHeight}px`;\n    this._element.style.marginTop = '0px';\n    this._element.style.marginBottom = '0px';\n    this.checkClosingPreparation();\n  }\n\n  checkClosingPreparation() {\n    clearTimeout(this.openingTimeout);\n    if (window.getComputedStyle(this._element).height && this._element.style.height) {\n      this._element.classList.remove(CLASS_IS_OPEN);\n      this._element.classList.add(CLASS_IS_CLOSED);\n    } else {\n      window.requestAnimationFrame(() => this.checkClosingPreparation());\n    }\n  }\n\n  _onClick(event) {\n    if (event.target.classList.contains(CLASS_CLOSE_BUTTON) || event.target.hasAttribute(ATTR_CLOSE)) {\n      this.close();\n    }\n  }\n}\n"
  },
  {
    "path": "src/notification/snippets/notification-light.html",
    "content": "<div class=\"aui-notification aui-js-notification aui-color-white aui-color-text-dark\">\n  <div class=\"aui-notification__content\">\n    The Death Star plans are not in the main computer. Where are those transmissions you intercepted? What have you done with those plans? We intercepted no transmissions.\n  </div>\n</div>\n"
  },
  {
    "path": "src/notification/snippets/notification.html",
    "content": "<div class=\"aui-notification aui-js-notification aui-color-gray20 aui-color-text-light\">\n  <div class=\"aui-notification__content\">\n    The Death Star plans are not in the main computer. Where are those transmissions you intercepted? What have you done with those plans? We intercepted no transmissions.\n  </div>\n</div>\n"
  },
  {
    "path": "src/pager/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **Pager** component is … (text follows)\n\n### To include an AUI **Pager** component:\n\n```html\n```\n"
  },
  {
    "path": "src/pager/_pager-themes.scss",
    "content": "$aui-pager-color: $aui-color-gray50;\n$aui-pager-color-active: $aui-color-white;\n\n.aui-pager {\n  &.aui-theme-light {\n    color: $aui-pager-color;\n\n    .aui-pager__current {\n      color: $aui-pager-color-active;\n    }\n\n    .aui-pager__next:hover:not(.is-disabled),\n    .aui-pager__prev:hover:not(.is-disabled) {\n      color: $aui-pager-color-active;\n    }\n  }\n}\n"
  },
  {
    "path": "src/pager/_pager.scss",
    "content": "$aui-pager-color: $aui-color-gray40 !default;\n$aui-pager-color-active: $aui-color-black !default;\n\n.aui-pager {\n  list-style: none;\n  padding-left: 0;\n  font-weight: $aui-font-weight-normal;\n  color: $aui-pager-color;\n\n  &__item {\n    display: inline-block;\n  }\n\n  &__current {\n    color: $aui-pager-color-active;\n  }\n\n  &__next,\n  &__prev {\n    transition: color .15s linear;\n  }\n\n  &__prev {\n    margin-right: 1em;\n  }\n\n  &__next {\n    margin-left: 1em;\n  }\n\n  &__next-icon,\n  &__prev-icon {\n    display: inline-block;\n    width: .5em;\n    height: .8125em;\n    text-indent: 100%;\n    overflow: hidden;\n    transition: transform .15s cubic-bezier(0.75, 0.02, 0.5, 1);\n    background-size: contain;\n    background-repeat: no-repeat;\n    background-position: center;\n\n    svg {\n      @include icon;\n    }\n  }\n\n  &__prev-icon {\n    transform: translateY(em(1)) rotate(180deg);\n  }\n\n  &__next:hover:not(.is-disabled),\n  &__prev:hover:not(.is-disabled) {\n    color: $aui-pager-color-active;\n  }\n\n  &__prev:hover:not(.is-disabled) {\n    .aui-pager__prev-icon {\n      transform: translateX(-4px) translateY(em(1)) rotate(180deg);\n    }\n  }\n\n  &__next:hover:not(.is-disabled) {\n    .aui-pager__next-icon {\n      transform: translateX(4px);\n    }\n  }\n\n  &__next,\n  &__prev {\n    &.is-disabled {\n      cursor: not-allowed;\n      opacity: .30;\n      pointer-events: none;\n    }\n  }\n}\n"
  },
  {
    "path": "src/pager/snippets/pager-minimal.html",
    "content": "<nav>\n  <ul class=\"aui-pager\">\n    <li class=\"aui-pager__item\">\n      <a class=\"aui-pager__prev\" href=\"#\">\n        <i class=\"aui-pager__prev-icon\">\n          <svg viewBox=\"0 0 8 13\"><path d=\"M1.5,1 l6,6 l-6,6\" /></svg>\n        </i>\n        <span class=\"aui-sr-only\">Previous</span>\n      </a>\n    </li>\n    <li class=\"aui-pager__item\">\n      <a class=\"aui-pager__next\" href=\"#\">\n        <span class=\"aui-sr-only\">Next</span>\n        <i class=\"aui-pager__next-icon\">\n          <svg viewBox=\"0 0 8 13\"><path d=\"M1.5,1 l6,6 l-6,6\" /></svg>\n        </i>\n      </a>\n    </li>\n  </ul>\n</nav>\n"
  },
  {
    "path": "src/pager/snippets/pager-pagination.html",
    "content": "<nav>\n  <ul class=\"aui-pager\">\n    <li class=\"aui-pager__item\">\n      <a class=\"aui-pager__prev\" href=\"#\">\n        <i class=\"aui-pager__prev-icon\">\n          <svg viewBox=\"0 0 8 13\"><path d=\"M1.5,1 l6,6 l-6,6\" /></svg>\n        </i>\n        <span class=\"aui-sr-only\">Previous</span>\n      </a>\n    </li>\n    <li class=\"aui-pager__item\">\n      <span class=\"aui-pager__pagination\"><span class=\"aui-pager__current\">4</span>/10</span>\n    </li>\n    <li class=\"aui-pager__item\">\n      <a class=\"aui-pager__next\" href=\"#\">\n        <span class=\"aui-sr-only\">Next</span>\n        <i class=\"aui-pager__next-icon\">\n          <svg viewBox=\"0 0 8 13\"><path d=\"M1.5,1 l6,6 l-6,6\" /></svg>\n        </i>\n      </a>\n    </li>\n  </ul>\n</nav>\n"
  },
  {
    "path": "src/pager/snippets/pager.html",
    "content": "<nav>\n  <ul class=\"aui-pager\">\n    <li class=\"aui-pager__item\">\n      <a class=\"aui-pager__prev\" href=\"#\">\n        <i class=\"aui-pager__prev-icon\">\n          <svg viewBox=\"0 0 8 13\"><path d=\"M1.5,1 l6,6 l-6,6\" /></svg>\n        </i>\n        <span class=\"aui-pager__prev-text\">Previous</span>\n      </a>\n    </li>\n    <li class=\"aui-pager__item\">\n      <a class=\"aui-pager__next\" href=\"#\">\n        <span class=\"aui-pager__next-text\">Next</span>\n        <i class=\"aui-pager__next-icon\">\n          <svg viewBox=\"0 0 8 13\"><path d=\"M1.5,1 l6,6 l-6,6\" /></svg>\n        </i>\n      </a>\n    </li>\n  </ul>\n</nav>\n"
  },
  {
    "path": "src/pagination/_pagination-themes.scss",
    "content": "$aui-pagination-color: $aui-color-gray50;\n$aui-pagination-color-active: $aui-color-white;\n\n.aui-pagination {\n  &.aui-theme-light {\n    color: $aui-pagination-color;\n\n    .aui-pagination__link.is-active,\n    .aui-pagination__link:hover:not(.is-disabled),\n    .aui-pagination__next:hover:not(.is-disabled),\n    .aui-pagination__prev:hover:not(.is-disabled), {\n      color: $aui-pagination-color-active;\n    }\n\n    .aui-pagination__indicator {\n      background: $aui-pagination-color-active;\n    }\n  }\n}\n"
  },
  {
    "path": "src/pagination/_pagination.scss",
    "content": "$aui-pagination-color: $aui-color-gray40 !default;\n$aui-pagination-color-active: $aui-color-black !default;\n\n.aui-pagination {\n  position: relative;\n  height: unit(7);\n  @include typo-body;\n  font-weight: $aui-font-weight-normal;\n  color: $aui-pagination-color;\n\n  &__items {\n    display: block;\n    list-style: none;\n    padding-left: 0;\n    @include clearfix;\n  }\n\n  &__item {\n    display: block;\n    margin: 0 0.75rem;\n    float: left;\n\n    &:first-child {\n      margin-left: 0;\n    }\n\n    &:last-child {\n      margin-right: 0;\n    }\n  }\n\n  &__ellipsis,\n  &__link,\n  &__next,\n  &__prev {\n    transition: color .15s linear;\n  }\n\n  &__link.is-active,\n  &__link:hover:not(.is-disabled),\n  &__next:hover:not(.is-disabled),\n  &__prev:hover:not(.is-disabled) {\n    color: $aui-pagination-color-active;\n  }\n\n  &__prev:hover:not(.is-disabled) {\n    .aui-pagination__prev-icon {\n      transform: translateX(-4px) translateY(em(1)) rotate(180deg);\n    }\n  }\n\n  &__next:hover:not(.is-disabled) {\n    .aui-pagination__next-icon {\n      transform: translateX(4px) translateY(em(1));\n    }\n  }\n\n  &__next-icon,\n  &__prev-icon {\n    display: inline-block;\n    width: .5em;\n    height: .8125em;\n    text-indent: 100%;\n    overflow: hidden;\n    transform: translateY(em(1));\n    transition: transform .15s cubic-bezier(0.75, 0.02, 0.5, 1);\n    background-size: contain;\n    background-repeat: no-repeat;\n    background-position: center;\n\n    svg {\n      @include icon;\n    }\n  }\n\n  &__prev-icon {\n    transform: translateY(em(1)) rotate(180deg);\n  }\n\n  &__indicator {\n    pointer-events: none;\n    display: block;\n    position: absolute;\n    bottom: 0;\n    left: 0;\n    width: 1px;\n    height: 2px;\n    background: $aui-pagination-color-active;\n    z-index: 1;\n    opacity: 0;\n  }\n\n  .is-animated &__indicator {\n    opacity: 1;\n    transition: left .3s $aui-easing, width .3s $aui-easing, opacity .3s $aui-easing;\n  }\n\n  [displaytype^='stepless'] &__indicator {\n    display: none;\n  }\n\n  [pageCount^='0'] &__indicator {\n    display: none;\n  }\n\n  &__link,\n  &__next,\n  &__prev {\n    &.is-disabled {\n      cursor: not-allowed;\n      opacity: .30;\n      pointer-events: none;\n    }\n  }\n}\n"
  },
  {
    "path": "src/pagination/pagination.js",
    "content": "import Component from '../component/component';\nimport ResizeObserver from '../util/resize-observer';\n\nconst SELECTOR_COMPONENT = '.aui-js-pagination';\nconst CLASS_ITEM = 'aui-pagination__link';\nconst CLASS_INDICATOR = 'aui-pagination__indicator';\nconst CLASS_IS_ACTIVE = 'is-active';\nconst CLASS_IS_ANIMATED = 'is-animated';\nconst CLASS_IS_DISABLED = 'is-disabled';\n\n/**\n * Class constructor for Pagination AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Pagination extends Component {\n\n  /**\n   * Upgrades all Pagination AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Pagination(element));\n      }\n    });\n    return components;\n  };\n\n  /**\n   * Initialize component\n   */\n  init() {\n    super.init();\n\n    this._resizeObserver = new ResizeObserver();\n    this._resizeObserver.resized.add(this._boundResized = () => this.update());\n\n    this._items = Array.from(this._element.querySelectorAll(`.${CLASS_ITEM}`));\n\n    this._indicator = document.createElement('span');\n    this._indicator.classList.add(CLASS_INDICATOR);\n    this._element.appendChild(this._indicator);\n\n    this._element.addEventListener('click', this._boundClick = (event) => this._onClick(event));\n\n    this._repositionIndicator(this._element.querySelector(`.${CLASS_IS_ACTIVE}`));\n    setTimeout(() => {\n      this._element.classList.add(CLASS_IS_ANIMATED);\n    }, 250);\n  }\n\n  /**\n   * Dispose component\n   */\n  dispose() {\n    super.dispose();\n\n    this._element.classList.remove(CLASS_IS_ANIMATED);\n\n    this._element.removeEventListener('click', this._boundClick);\n    this._resizeObserver.resized.remove(this._boundResized);\n\n    if (this._indicator) {\n      this.removeChild(this._indicator);\n    }\n  }\n\n  /**\n   * Update component.\n   */\n  update() {\n    this._repositionIndicator(this._element.querySelector(`.${CLASS_IS_ACTIVE}`));\n  }\n\n  /**\n   * Reposition indicator of `active` page.\n   * @param {HTMLElement} linkElement that is going to be `active`.\n   * @private\n   */\n  _repositionIndicator(linkElement) {\n    if (!linkElement)\n      return;\n\n    this._items.forEach(item => {\n      item.classList.remove(CLASS_IS_ACTIVE);\n    });\n    linkElement.classList.add(CLASS_IS_ACTIVE);\n\n    // Indicator position\n    const rectContainer = this._element.getBoundingClientRect();\n    const rectTarget = linkElement.getBoundingClientRect();\n    const indicatorLeft = rectTarget.left - rectContainer.left + this._element.scrollLeft;\n    this._indicator.style.left = `${indicatorLeft}px`;\n    this._indicator.style.width = `${linkElement.offsetWidth}px`;\n  }\n\n  /**\n   * Handle click.\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  _onClick(event) {\n    if (event.target.classList.contains(CLASS_ITEM) && !event.target.classList.contains(CLASS_IS_DISABLED)) {\n      this._repositionIndicator(event.target);\n    }\n  }\n}\n"
  },
  {
    "path": "src/pagination/snippets/pagination.html",
    "content": "<nav class=\"aui-pagination aui-js-pagination\">\n  <ul class=\"aui-pagination__items\">\n    <li class=\"aui-pagination__item\">\n      <a class=\"aui-pagination__prev\" href=\"#\">\n        <i class=\"aui-pagination__prev-icon\">\n          <svg viewBox=\"0 0 8 13\"><path d=\"M1.5,1 l6,6 l-6,6\" /></svg>\n        </i>\n        <span class=\"aui-sr-only\">Previous</span>\n      </a>\n    </li>\n    <li class=\"aui-pagination__item\">\n      <a class=\"aui-pagination__link\" href=\"#\">1</a>\n    </li>\n    <li class=\"aui-pagination__item\">\n      <span class=\"aui-pagination__ellipsis\">…</span>\n    </li>\n    <li class=\"aui-pagination__item\">\n      <a class=\"aui-pagination__link\" href=\"#\">9</a>\n    </li>\n    <li class=\"aui-pagination__item\">\n      <a class=\"aui-pagination__link is-active\" href=\"#\">10</a>\n    </li>\n    <li class=\"aui-pagination__item\">\n      <a class=\"aui-pagination__link\" href=\"#\">11</a>\n    </li>\n    <li class=\"aui-pagination__item\">\n      <span class=\"aui-pagination__ellipsis\">…</span>\n    </li>\n    <li class=\"aui-pagination__item\">\n      <a class=\"aui-pagination__link\" href=\"#\">20</a>\n    </li>\n    <li class=\"aui-pagination__item\">\n      <a class=\"aui-pagination__next\" href=\"#\" disabled>\n        <i class=\"aui-pagination__next-icon\">\n          <svg viewBox=\"0 0 8 13\"><path d=\"M1.5,1 l6,6 l-6,6\" /></svg>\n        </i>\n        <span class=\"aui-sr-only\">Next</span>\n      </a>\n    </li>\n  </ul>\n</nav>\n"
  },
  {
    "path": "src/player/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **player** component is … (text follows)\n\n### To include an AUI **player** component:\n\n```html\n```\n"
  },
  {
    "path": "src/player/_player.scss",
    "content": "$aui-player-font-size: 12px !default;\n$aui-player-chrome-height: 60px !default;\n$aui-player-chrome-seeking-height: 101px !default;\n\n.aui-player {\n\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n  height: 0;\n  padding-bottom: #{100% / 16 * 9};\n  color: $aui-color-white;\n  background-color: $aui-color-black;\n  background-position: center;\n  background-repeat: no-repeat;\n  background-size: cover;\n\n  &-related-container {\n    z-index: 1;\n    display: flex;\n    align-items: center;\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    background: rgba(#000, .5);\n    overflow: hidden;\n  }\n\n  &-related-container__replay {\n    position: absolute;\n    left: 5%;\n    bottom: 19px;\n\n    .audiicon {\n      width: 100%;\n      height: 100%;\n    }\n  }\n\n  &-related-grid {\n    display: flex;\n    flex-flow: row nowrap;\n    width: 90%;\n    margin: 0 auto;\n    overflow: hidden;\n\n    &__cell {\n      display: block;\n      flex: 1 1 auto;\n      width: 1px;\n      margin: 0 unit(1) 0 0;\n\n      &:last-child {\n        margin-right: 0;\n      }\n    }\n  }\n\n  &-related-content {\n    display: block;\n    width: 100%;\n    padding: 0;\n    outline: none;\n    color: inherit;\n    background: none;\n    border: 0 none;\n    @include aui-font-size-line-height(-2, 1.2);\n    font-weight: $aui-font-weight-normal;\n    letter-spacing: -0.015em;\n    text-align: left;\n    cursor: pointer;\n\n    &__image {\n      display: block;\n      width: 100%;\n      height: auto;\n    }\n\n    &__title {\n      display: block;\n      margin-top: unit(2);\n      max-width: 100%;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n      word-wrap: normal;\n      padding-right: unit(4);\n    }\n  }\n\n  &__overlay {\n    position: absolute;\n    background: rgba(#000, .5);\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0;\n  }\n\n  &__large-button {\n    $icon-size-large: 44px;\n    position: absolute;\n    left: 50%;\n    top: 50%;\n    width: $icon-size-large;\n    height: $icon-size-large;\n    border: 1px solid $aui-color-white;\n    transform: translate(-50%, -50%);\n\n    .audiicon {\n      position: absolute;\n      left: #{($icon-size-large - $aui-icon-size-small) / 2};\n      top: #{($icon-size-large - $aui-icon-size-small) / 2};\n      width: $aui-icon-size-small;\n      height: $aui-icon-size-small;\n    }\n  }\n\n  &__large-button,\n  &__overlay {\n    transition: opacity .2s linear .5s;\n  }\n\n  &.is-playing &__large-button,\n  &.is-playing &__overlay {\n    opacity: 0;\n  }\n\n  &:hover &__large-button,\n  &:hover &__overlay {\n    transition: opacity .2s linear;\n    opacity: 1;\n  }\n\n  &__chrome {\n    z-index: 3;\n    display: flex;\n    flex-flow: row nowrap;\n    align-items: center;\n    position: absolute;\n    left: 0;\n    bottom: 0;\n    width: 100%;\n    height: $aui-player-chrome-height;\n    padding: 0 5%;\n    font-size: rem($aui-player-font-size);\n    transform: translateY(100%);\n    transition: transform .4s $aui-easing;\n\n    &::after {\n      content: '';\n      display: block;\n      position: absolute;\n      bottom: 0;\n      left: 0;\n      width: 100%;\n      height: $aui-player-chrome-height;\n      background-color: rgba(#000, .6);\n      transition: height .2s $aui-easing .1s;\n      z-index: -1;\n    }\n  }\n\n  &__current-time,\n  &__duration,\n  &__fullscreen,\n  &__mute,\n  &__play {\n    flex: 0 0 auto;\n  }\n\n  &__progress-control {\n    flex: 1 1 auto;\n  }\n\n  &__current-time,\n  &__duration {\n    transform: translateY(em(1, $aui-player-font-size));\n  }\n\n  &__current-time {\n    margin-left: unit(2);\n    margin-right: unit(1);\n\n    &:first-child {\n      margin-left: 0;\n    }\n  }\n\n  &__duration {\n    margin-left: unit(1);\n    margin-right: unit(2);\n\n    &:last-child {\n      margin-right: 0;\n    }\n  }\n\n  &__progress-control {\n    position: relative;\n    height: 100%;\n  }\n\n  &__progress-holder {\n    position: absolute;\n    top: 50%;\n    width: 100%;\n    height: 1px;\n    background-color: $aui-color-gray30;\n  }\n\n  &__progress {\n    position: absolute;\n    left: 0;\n    top: 0;\n    width: 100%;\n    height: 100%;\n\n    &--loading {\n      background-color: $aui-color-gray50;\n    }\n\n    &--progress {\n      background-color: $aui-color-white;\n    }\n  }\n\n  &__mute + &__fullscreen {\n    margin-left: unit(2);\n  }\n\n  &__playhead {\n    position: absolute;\n    left: 0;\n    top: 0;\n    width: unit(3);\n    height: unit(3);\n    border: 1px solid $aui-color-white;\n    border-radius: 50%;\n    transform: translate(-50%, -50%);\n    background-color: $aui-color-gray20;\n    z-index: 1;\n  }\n\n  &__seek-holder {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 0;\n    height: 100%;\n    opacity: 0;\n    transition: opacity .2s linear;\n  }\n\n  &__seek-marker {\n    position: absolute;\n    top: #{unit(3) / -2};\n    right: 0;\n    width: 1px;\n    height: unit(3);\n    background-color: $aui-color-white;\n  }\n\n  &__seek-time {\n    position: absolute;\n    bottom: 7px;\n    right: 0;\n    line-height: 2em;\n    transform: translateX(50%);\n    z-index: 1;\n  }\n\n  &__preview {\n    display: none;\n    position: absolute;\n    right: 0;\n    transform: translateX(50%);\n    opacity: 0;\n    transition: opacity .2s linear;\n  }\n\n  &__preview-image {\n    width: 80px;\n    height: 0;\n    padding-bottom: 56.25%;\n    background-position: center;\n    background-size: cover;\n  }\n\n  // Icons\n  &__icon-exit-fullscreen,\n  &__icon-pause,\n  &__icon-replay,\n  &__icon-unmute {\n    display: none;\n  }\n\n  &--preview {\n    .aui-player__preview,\n    .aui-player__seek-time {\n      bottom: 17px;\n    }\n\n    .aui-player__preview {\n      display: block;\n    }\n  }\n\n  /**\n   * States\n   */\n  &.is-controlled &__chrome,\n  &:hover &__chrome {\n    transform: translateY(0);\n  }\n\n  &.is-seeking {\n    .aui-player__seek-holder {\n      opacity: 1;\n      transition-delay: .1s;\n    }\n\n    .aui-player__preview {\n      opacity: 1;\n      transition-delay: .1s;\n    }\n  }\n\n  &.is-seeking.aui-player--preview {\n    .aui-player__chrome::after {\n      height: $aui-player-chrome-seeking-height;\n      transition-delay: 0s;\n    }\n  }\n\n  &.is-mute {\n    .aui-player__icon-mute {\n      display: none;\n    }\n\n    .aui-player__icon-unmute {\n      display: inline-block;\n    }\n  }\n\n  &.is-playing {\n    .aui-player__icon-play {\n      display: none;\n    }\n\n    .aui-player__icon-pause {\n      display: inline-block;\n    }\n  }\n\n  &.is-complete {\n    .aui-player__icon-pause,\n    .aui-player__icon-play {\n      display: none;\n    }\n\n    .aui-player__icon-replay {\n      display: inline-block;\n    }\n  }\n\n  &.is-fullscreen,\n  &:fullscreen {\n    .aui-player__icon-enter-fullscreen {\n      visibility: hidden;\n    }\n\n    .aui-player__icon-exit-fullscreen {\n      visibility: visible;\n    }\n  }\n\n  /**\n   * Responsiveness\n   */\n  @include aui-respond-to(xsmall) {\n    &__large-button {\n      $icon-size-large: 72px;\n      width: $icon-size-large;\n      height: $icon-size-large;\n\n      .audiicon {\n        left: #{($icon-size-large - $aui-icon-size-large) / 2};\n        top: #{($icon-size-large - $aui-icon-size-large) / 2};\n        width: $aui-icon-size-large;\n        height: $aui-icon-size-large;\n      }\n\n      .audiicon-small {\n        visibility: hidden;\n      }\n\n      .audiicon-large {\n        visibility: visible;\n      }\n    }\n  }\n\n  $aui-player-chrome-height: 120px;\n  $aui-player-chrome-seeking-height: 182px;\n  @include aui-respond-to(large) {\n    &__chrome {\n      font-size: rem(16);\n      height: $aui-player-chrome-height;\n\n      &::after {\n        height: $aui-player-chrome-height;\n      }\n\n      .aui-button--icon {\n        width: $aui-icon-system-size-large;\n        height: $aui-icon-system-size-large;\n\n        .audiicon {\n          left: -1px;\n          top: -1px;\n          width: $aui-icon-size-large;\n          height: $aui-icon-size-large;\n        }\n\n        .audiicon-small {\n          visibility: hidden;\n        }\n\n        .audiicon-large {\n          visibility: visible;\n        }\n      }\n    }\n\n    &__current-time {\n      margin-left: unit(10);\n      margin-right: unit(5);\n    }\n\n    &__duration {\n      margin-left: unit(5);\n      margin-right: unit(10);\n    }\n\n    &__mute + &__fullscreen {\n      margin-left: unit(5);\n    }\n\n    &__playhead {\n      width: unit(5);\n      height: unit(5);\n    }\n\n    &__seek-time {\n      bottom: 20px;\n    }\n\n    &__seek-marker {\n      top: #{unit(5) / -2};\n      height: unit(5);\n    }\n\n    &__preview-image {\n      // width: 112px;\n      // height: 63px;\n      width: 128px;\n      height: 72px;\n      // width: 144px;\n      // height: 81px;\n      // width: 160px;\n      // height: 90px;\n    }\n\n    &-related-container__replay {\n      bottom: 38px;\n      width: 44px;\n      height: 44px;\n    }\n\n    .audiicon-small {\n      visibility: hidden;\n    }\n\n    .audiicon-large {\n      visibility: visible;\n    }\n\n    &.aui-player--preview {\n      .aui-player__preview,\n      .aui-player__seek-time {\n        bottom: 31px;\n      }\n    }\n\n    &.is-seeking.aui-player--preview {\n      .aui-player__chrome::after {\n        height: $aui-player-chrome-seeking-height;\n      }\n    }\n  }\n  @include aui-respond-to(large) {\n    &-related-content {\n      font-family: $aui-font-extended;\n      font-variation-settings: $aui-font-extended-width;\n      @include aui-font-size-line-height(-1, 1.4);\n    }\n  }\n\n  $aui-player-chrome-seeking-height: 200px;\n  @include aui-respond-to(large) {\n    &-related-content {\n      @include aui-font-size-line-height(0, 1.4);\n    }\n\n    &__preview-image {\n      width: 160px;\n      height: 90px;\n    }\n\n    &.is-seeking.aui-player--preview {\n      .aui-player__chrome::after {\n        height: $aui-player-chrome-seeking-height;\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/player/player.js",
    "content": "import Component from '../component/component';\n\nconst SELECTOR_COMPONENT = '.aui-js-player';\nconst SELECTOR_PROGRESS_CONTROL = '.aui-player__progress-control';\nconst SELECTOR_SEEK_HOLDER = '.aui-player__seek-holder';\nconst SELECTOR_PREVIEW = '.aui-player__preview';\nconst CLASS_SEEKING = 'is-seeking';\n\n/**\n * Class constructor for Player AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Player extends Component {\n\n  /**\n   * Upgrades all Player AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Player(element));\n      }\n    });\n    return components;\n  };\n\n  constructor(element) {\n    super(element);\n\n    this._progressControl = this._element.querySelector(SELECTOR_PROGRESS_CONTROL);\n    if (this._progressControl) {\n      this._progressControl.addEventListener('mouseover', this.progressControlOverListener = event => this.progressControlOverHandler(event));\n      this._progressControl.addEventListener('mouseout', this.progressControlOutListener = event => this.progressControlOutHandler(event));\n\n      this._seekHolder = this._progressControl.querySelector(SELECTOR_SEEK_HOLDER);\n    }\n\n    this._preview = this._element.querySelector(SELECTOR_PREVIEW);\n  }\n\n  progressControlOverHandler(event) {\n    this._progressControl.removeEventListener('mousemove', this.moveListener);\n    this._progressControl.addEventListener('mousemove', this.progressControlMoveListener = event => this.progressControlMoveHandler(event));\n    this._element.classList.add(CLASS_SEEKING);\n    this.updateSeek(event.clientX);\n  }\n\n  progressControlMoveHandler(event) {\n    this.updateSeek(event.clientX);\n  }\n\n  progressControlOutHandler(event) {\n    this._element.classList.remove(CLASS_SEEKING);\n  }\n\n  updateSeek() {\n    // Translate trigger position x to ratio of progress control width\n    let boundings = this._progressControl.getBoundingClientRect(),\n      offsetX = event.clientX - boundings.left,\n      ratio = offsetX / this._progressControl.offsetWidth,\n      ratioPercentStr;\n    ratio = Math.max(0, Math.min(ratio, 1));\n    ratioPercentStr = `${ratio * 100}%`\n    this._seekHolder.style.width = ratioPercentStr;\n  }\n}\n"
  },
  {
    "path": "src/player/snippets/player_chrome.html",
    "content": "<div class=\"aui-player__chrome\">\n  <button class=\"aui-player__play aui-js-player-play-toggle aui-button aui-js-response aui-button--icon aui-button--round aui-theme-light\" type=\"button\">\n    <div class=\"aui-player__icon-play\">\n      <svg class=\"audiicon\">\n        <use xlink:href=\"#audiicon-system-play-small\" class=\"audiicon-small\"></use>\n        <use xlink:href=\"#audiicon-system-play-large\" class=\"audiicon-large\"></use>\n      </svg>\n    </div>\n    <div class=\"aui-player__icon-pause\">\n      <svg class=\"audiicon\">\n        <use xlink:href=\"#audiicon-system-pause-small\" class=\"audiicon-small\"></use>\n        <use xlink:href=\"#audiicon-system-pause-large\" class=\"audiicon-large\"></use>\n      </svg>\n    </div>\n    <div class=\"aui-player__icon-replay\">\n      <svg class=\"audiicon\">\n        <use xlink:href=\"#audiicon-system-replay-small\" class=\"audiicon-small\"></use>\n        <use xlink:href=\"#audiicon-system-replay-large\" class=\"audiicon-large\"></use>\n      </svg>\n    </div>\n  </button>\n  <div class=\"aui-player__current-time\">00:00</div>\n  <div class=\"aui-player__progress-control\">\n    <div class=\"aui-player__progress-holder\">\n      <div class=\"aui-player__progress aui-player__progress--loading\" style=\"width:75%\"></div>\n      <div class=\"aui-player__progress aui-player__progress--progress\" style=\"width:25%\"></div>\n      <div class=\"aui-player__playhead\" style=\"left:25%\"></div>\n      <div class=\"aui-player__seek-holder\" style=\"width:50%\">\n        <div class=\"aui-player__seek-marker\"></div>\n        <div class=\"aui-player__seek-time\">00:00</div>\n        <div class=\"aui-player__preview\">\n          <div class=\"aui-player__preview-image\" style=\"background-image:url('https://www.audi.com/content/dam/gbp2/experience-audi/models-and-technology/production-models/q4-e-tron/1920x1080-q4-e-tron-sportback.jpg')\"></div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <div class=\"aui-player__duration\">00:00</div>\n  <button class=\"aui-player__mute aui-js-player-mute-toggle aui-button aui-js-response aui-button--icon aui-button--round aui-theme-light\" type=\"button\">\n    <div class=\"aui-player__icon-mute\">\n      <svg class=\"audiicon\">\n        <use xlink:href=\"#audiicon-system-audio-on-small\" class=\"audiicon-small\"></use>\n        <use xlink:href=\"#audiicon-system-audio-on-large\" class=\"audiicon-large\"></use>\n      </svg>\n    </div>\n    <div class=\"aui-player__icon-unmute\">\n      <svg class=\"audiicon\">\n        <use xlink:href=\"#audiicon-system-audio-off-small\" class=\"audiicon-small\"></use>\n        <use xlink:href=\"#audiicon-system-audio-off-large\" class=\"audiicon-large\"></use>\n      </svg>\n    </div>\n  </button>\n  <button class=\"aui-player__fullscreen aui-js-player-fullscreen-toggle aui-button aui-js-response aui-button--icon aui-button--round aui-theme-light\" type=\"button\">\n    <div class=\"aui-player__icon-enter-fullscreen\">\n      <svg class=\"audiicon\">\n        <use xlink:href=\"#audiicon-system-size-increase-small\" class=\"audiicon-small\"></use>\n        <use xlink:href=\"#audiicon-system-size-increase-large\" class=\"audiicon-large\"></use>\n      </svg>\n    </div>\n    <div class=\"aui-player__icon-exit-fullscreen\">\n      <svg class=\"audiicon\">\n        <use xlink:href=\"#audiicon-system-size-decrease-small\" class=\"audiicon-small\"></use>\n        <use xlink:href=\"#audiicon-system-size-decrease-large\" class=\"audiicon-large\"></use>\n      </svg>\n    </div>\n  </button>\n</div>\n"
  },
  {
    "path": "src/player/snippets/player_large-button.html",
    "content": "<button class=\"aui-player__large-button aui-js-player-play-toggle aui-button aui-js-response aui-button--icon aui-button--round aui-theme-light\" type=\"button\">\n  <div class=\"aui-player__icon-play\">\n    <svg class=\"audiicon\">\n      <use xlink:href=\"#audiicon-play-small\" class=\"audiicon-small\"></use>\n      <use xlink:href=\"#audiicon-play-large\" class=\"audiicon-large\"></use>\n    </svg>\n  </div>\n  <div class=\"aui-player__icon-pause\">\n    <svg class=\"audiicon\">\n      <use xlink:href=\"#audiicon-pause-small\" class=\"audiicon-small\"></use>\n      <use xlink:href=\"#audiicon-pause-large\" class=\"audiicon-large\"></use>\n    </svg>\n  </div>\n  <div class=\"aui-player__icon-replay\">\n    <svg class=\"audiicon\">\n      <use xlink:href=\"#audiicon-replay-small\" class=\"audiicon-small\"></use>\n      <use xlink:href=\"#audiicon-replay-large\" class=\"audiicon-large\"></use>\n    </svg>\n  </div>\n</button>\n"
  },
  {
    "path": "src/player/snippets/player_overlay.html",
    "content": "<div class=\"aui-player__overlay\"></div>\n"
  },
  {
    "path": "src/player/snippets/player_related-container.html",
    "content": "<div class=\"aui-player-related-container\">\n  <div class=\"aui-player-related-grid\">\n    <div class=\"aui-player-related-grid__cell\">\n      <a href=\"#\" class=\"aui-player-related-content\">\n        <img class=\"aui-player-related-content__image\" src=\"https://www.audi.com/content/dam/gbp2/experience-audi/models-and-technology/production-models/q4-e-tron/04_Q4_2021_2786_Desktop.jpg\" alt=\"\" />\n        <div class=\"aui-player-related-content__title\">Video related content title.</div>\n      </a>\n    </div>\n    <div class=\"aui-player-related-grid__cell\">\n      <button class=\"aui-player-related-content\">\n        <img class=\"aui-player-related-content__image\" src=\"https://www.audi.com/content/dam/gbp2/experience-audi/models-and-technology/production-models/e-tron-gt/1920x1080-rs-e-tron-gt-displays.jpg\" alt=\"\" />\n        <div class=\"aui-player-related-content__title\">Pick your side. Then pick your vehicle.</div>\n      </button>\n    </div>\n    <div class=\"aui-player-related-grid__cell\">\n      <div class=\"aui-player-related-content\">\n        <img class=\"aui-player-related-content__image\" src=\"https://www.audi.com/content/dam/gbp2/experience-audi/models-and-technology/production-models/e-tron-gt/1920x1080-e-tron-gt-performance.jpg\" alt=\"\" />\n        <div class=\"aui-player-related-content__title\">Heads and tails, you win.</div>\n      </div>\n    </div>\n  </div>\n  <button class=\"aui-player-related-container__replay aui-js-player-replay aui-button aui-js-response aui-button--icon aui-button--round aui-theme-light\" type=\"button\">\n    <div class=\"aui-player__icon-replay\">\n      <svg class=\"audiicon\">\n        <use xlink:href=\"#audiicon-replay-small\" class=\"audiicon-small\"></use>\n        <use xlink:href=\"#audiicon-replay-large\" class=\"audiicon-large\"></use>\n      </svg>\n    </div>\n  </button>\n</div>\n"
  },
  {
    "path": "src/player/snippets/player_video-container.html",
    "content": "<div class=\"aui-player__video-container\"></div>\n"
  },
  {
    "path": "src/popover/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **Popover** component is … (text follows)\n\n### To include an AUI **Popover** component:\n\n```html\n```\n\n## Configuration options\n\nThe AUI CSS classes and attributes apply various predefined visual and behavioral enhancements to the popover. The tables below lists the available classes/attributes and their effects.\n\n| AUI class | Effect | Remarks |\n|-----------|--------|---------|\n| `aui-popover` | Defines button as an AUI button component | Required |\n| `aui-js-popover` | Assigns basic AUI behavior to popover | Required |\n\n| AUI attribute | Type | Default | Description |\n|---------------|------|---------|-------------|\n| `for` | String | null | ID of element which toggles popover. |\n| `data-placement` | String | 'top' | How to position the popover: top, right, bottom, left. |\n| `data-arrow-color` | String | null | A valid value used for fill attribute of arrow shape. See https://www.w3.org/TR/SVG/painting.html#SpecifyingPaint; As default the background-color of the `aui-popover__content` element is used as fill.  |\n"
  },
  {
    "path": "src/popover/_popover.scss",
    "content": "$aui-popover-arrow-size: 10px !default;\n$aui-popover-offset: 2px !default;\n$aui-popover-offset-window: 4% !default;\n$aui-popover-content-margin: $aui-popover-offset + $aui-popover-arrow-size !default;\n\n/**\n * Prevent zooming of body, when popover is open.\n * Added to body by JS.\n */\n.aui-popover-is-open {\n  overflow-x: hidden;\n}\n\n.aui-popover {\n  display: block;\n  position: absolute;\n  top: 0;\n  left: 0;\n  padding: $aui-popover-offset;\n  width: 0;\n  height: 0;\n  font-size: unit(3.5);\n  line-height: unit(5);\n  text-align: left;\n  overflow: hidden;\n  opacity: 0;\n  visibility: hidden;\n  transition: opacity .15s linear, visibility .15s linear;\n  z-index: $aui-zindex-popover;\n\n  &.aui-tether-enabled {\n    // width: 100% - $aui-popover-offset-window;\n    width: 90vw;\n    max-width: 22em;\n    height: auto;\n    overflow: visible;\n    visibility: visible;\n  }\n\n  &__content {\n    position: relative;\n    @include shadow;\n  }\n\n  &__content:not([class^=\"aui-color-\"]):not([class*=\" aui-color-\"]) {\n    // NOTE Add a color class to element to define a background-color,\n    // otherwise fall back to white as default.\n    background-color: $aui-color-white;\n  }\n\n  &__text {\n    display: block;\n    position: relative;\n    padding: unit(4);\n    // Overlay arrow icon:\n    background-color: inherit;\n    z-index: 1;\n  }\n\n  &__media {\n    display: block;\n    position: relative;\n    width: 100%;\n    height: auto;\n    z-index: 1;\n  }\n\n  &__arrow {\n    display: block;\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    // Because we draw a diamond square ◆ double the size:\n    width: $aui-popover-arrow-size * 2;\n    height: $aui-popover-arrow-size * 2;\n    fill: $aui-color-white;\n    transform: translate(-50%, -50%);\n  }\n\n  &__arrow-shape {\n    display: block;\n  }\n\n  // Element attached top\n  &.aui-tether-element-attached-top {\n    margin-top: $aui-popover-content-margin;\n\n    .aui-popover__arrow {\n      top: 0;\n    }\n  }\n\n  // Element attached bottom\n  &.aui-tether-element-attached-bottom {\n    margin-top: -$aui-popover-content-margin;\n\n    .aui-popover__arrow {\n      top: 100%;\n    }\n  }\n\n  // Element attached left\n  &.aui-tether-element-attached-left {\n    padding-left: $aui-popover-content-margin;\n\n    .aui-popover__arrow {\n      left: 0;\n    }\n  }\n\n  // Element attached right\n  &.aui-tether-element-attached-right {\n    padding-right: $aui-popover-content-margin;\n\n    .aui-popover__arrow {\n      left: 100%;\n    }\n  }\n\n  // Pinned left (and element attached middle)\n  // HACK fix positioning of Tether\n  &.aui-tether-element-attached-middle.aui-tether-pinned-right {\n    left: 0 !important; // [1]\n    padding-right: $aui-popover-content-margin;\n\n    .aui-popover__arrow {\n      left: 100%;\n    }\n  }\n\n  // Pinned right (and element attached middle)\n  // HACK [1] fix positioning of Tether\n  &.aui-tether-element-attached-middle.aui-tether-pinned-left {\n    right: 0; // [1]\n    left: auto !important; // [1]\n    padding-left: $aui-popover-content-margin;\n\n    .aui-popover__arrow {\n      left: 0;\n    }\n  }\n\n  /**\n   * States\n   */\n\n  &.is-shown {\n    opacity: 1;\n    visibility: visible;\n    transition-duration: .25s;\n  }\n}\n"
  },
  {
    "path": "src/popover/popover.js",
    "content": "import Component from '../component/component';\nimport reflow from '../util/reflow';\nimport closest from '../util/closest';\nimport transitionend from '../util/transition-end-event';\nimport Tether from 'tether';\n\nconst SELECTOR_COMPONENT = '.aui-js-popover';\nconst SELECTOR_DISMISS = '[data-dismiss=\"popover\"]';\nconst CLASS_ARROW = 'aui-popover__arrow';\nconst CLASS_ARROW_SHAPE = 'aui-popover__arrow-shape';\nconst CLASS_ACTIVE = 'is-active';\nconst CLASS_SHOWN = 'is-shown';\nconst CLASS_POPOVER_IS_OPEN = 'aui-popover-is-open';\nconst ARROW_SIZE = 20;\n\nconst AttachmentMap = {\n  top: 'bottom center',\n  right: 'middle left',\n  bottom: 'top center',\n  left: 'middle right'\n}\n\n/**\n * Class constructor for Popover AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Popover extends Component {\n\n  /**\n   * Upgrades all Popover AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Popover(element));\n      }\n    });\n    return components;\n  };\n\n  /**\n   * Initialize component\n   */\n  init() {\n    super.init();\n\n    this._body = document.querySelector('body');\n\n    this._id = this._element.getAttribute('id');\n    this._trigger = document.getElementById(this._element.getAttribute('for'));\n    this._tether = null;\n    const placement = this._element.hasAttribute('data-placement') ? this._element.getAttribute('data-placement') : 'top';\n    this._attachement = AttachmentMap[placement.toLowerCase()];\n\n    const content = this._element.querySelector('.aui-popover__content');\n    const arrowColor = this._element.hasAttribute('data-arrow-color') ? this._element.getAttribute('data-arrow-color') : window.getComputedStyle(content).backgroundColor;\n    this._arrow = this._addArrow(content, arrowColor);\n\n    if (this._trigger) {\n      this._trigger.addEventListener('click', this._boundClickHandler = (event) => this.toggle(event));\n    }\n  }\n\n  /**\n   * Dispose component\n   */\n  dispose() {\n    super.dispose();\n\n    this.hide();\n    this.removeChild(this._arrow);\n\n    if (this._trigger) {\n      this._trigger.removeEventListener('click', this._boundClickHandler);\n    }\n  }\n\n  /**\n   * Toggle show/hide Popover\n   * @param {Event} event Click event of trigger element (optional)\n   */\n  toggle(event) {\n    const performToggle = () => {\n      if (!this._element.classList.contains(CLASS_ACTIVE) && this._tether) {\n        this.show();\n      } else {\n        this.hide();\n      }\n    };\n\n    if (event) {\n      event.preventDefault();\n\n      if (this._tether === null) {\n        this._tether = new Tether({\n          element: this._element,\n          target: event.currentTarget,\n          attachment: this._attachement,\n          classPrefix: 'aui-tether',\n          // NOTE We set an offset in CSS, because this offset wouln't be\n          // flipped as it should:\n          // https://github.com/HubSpot/tether/issues/106\n          offset: '0 0',\n          constraints: [{\n            to: 'window',\n            pin: ['left', 'right'],\n            attachment: 'together'\n          }],\n          optimizations: {\n            gpu: false\n          }\n        });\n        reflow(this._element); // REVIEW Do we need this anymore?\n        this._tether.position();\n      }\n      performToggle();\n\n    } else {\n      performToggle();\n    }\n  }\n\n  /**\n   * Show Popover\n   */\n  show() {\n    this._body.classList.add(CLASS_POPOVER_IS_OPEN);\n    this._element.classList.add(CLASS_ACTIVE);\n    this._element.classList.add(CLASS_SHOWN);\n    setTimeout(() => {\n      window.addEventListener('click', this._boundWindowClickHandler = (event) => this._onClickOutside(event));\n    })\n  }\n\n  /**\n   * Hide Popover\n   */\n  hide() {\n    this._element.classList.remove(CLASS_SHOWN);\n    this._element.addEventListener(transitionend, this._boundAnimationendHandler = (event) => this._onHideComplete(event));\n    window.removeEventListener('click', this._boundWindowClickHandler);\n  }\n\n  /**\n   * Clean up Tether instance\n   * @private\n   */\n  _cleanupTether() {\n    if (this._tether) {\n      this._tether.destroy();\n      this._tether = null;\n    }\n    this._element.removeAttribute('style');\n  }\n\n  /**\n   * Handle click of window.\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  _onClickOutside(event) {\n    // Hide if target dismisses Popover\n    if (closest(event.target, SELECTOR_DISMISS, this._element)) {\n      this.hide();\n\n      // Hide if target is not inside Popover and is not a trigger element\n    } else if (!this._element.contains(event.target) && event.target !== this._trigger) {\n      this.hide();\n    }\n  }\n\n  /**\n   * Handle hide transition complete.\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  _onHideComplete(event) {\n    this._body.classList.remove(CLASS_POPOVER_IS_OPEN);\n    this._element.classList.remove(CLASS_ACTIVE);\n    this._element.removeEventListener(transitionend, this._boundAnimationendHandler);\n    this._cleanupTether();\n  }\n\n  /**\n   * Adds an arrow SVG element\n   * <span class=\"…\"><svg … ><path … /></svg></span>\n   *\n   * @param {HTMLElement} parent element to append arrow to.\n   * @param {string} color used as value of fill property.\n   * @returns {HTMLElement} the added arrow element.\n   */\n  _addArrow(parent, color) {\n    const element = document.createElement('span');\n    element.classList.add(CLASS_ARROW);\n    const svg = this.createSvgNode('svg', {\n      class: CLASS_ARROW_SHAPE,\n      width: ARROW_SIZE,\n      height: ARROW_SIZE,\n      viewBox: `0 0 ${ARROW_SIZE} ${ARROW_SIZE}`\n    });\n    // Draw a diamond square ◆\n    const path = this.createSvgNode('path', {\n      d: `M${ARROW_SIZE / 2} 0 L ${ARROW_SIZE} ${ARROW_SIZE / 2} L ${ARROW_SIZE / 2} ${ARROW_SIZE} L 0 ${ARROW_SIZE / 2} Z`,\n      fill: color\n    });\n    svg.appendChild(path);\n    element.appendChild(svg);\n    parent.appendChild(element);\n    return element;\n  }\n}\n"
  },
  {
    "path": "src/popover/snippets/popover-dark.html",
    "content": "<button id=\"sample-popover-dark\" class=\"aui-button aui-button--primary aui-js-response\" type=\"button\">\n  <span class=\"aui-button__text\">Dark popover</span>\n</button>\n<div class=\"aui-popover aui-js-popover\" role=\"tooltip\" for=\"sample-popover-dark\" data-placement=\"top\">\n  <div class=\"aui-popover__content aui-color-gray20 aui-color-text-light\">\n    <div class=\"aui-popover__text\">\n      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "src/popover/snippets/popover-image.html",
    "content": "<button id=\"sample-popover-image\" class=\"aui-button aui-button--primary aui-js-response\" type=\"button\">\n  <span class=\"aui-button__text\">Popover with image</span>\n</button>\n<div class=\"aui-popover aui-js-popover\" role=\"tooltip\" for=\"sample-popover-image\" data-placement=\"top\">\n  <div class=\"aui-popover__content aui-color-white\">\n    <img class=\"aui-tooltip__media\" src=\"https://www.audi.com/content/dam/gbp2/experience-audi/models-and-technology/production-models/q4-e-tron/audi-q4-e-tron-exterior-desktop-03.jpg\" alt=\"\" />\n    <div class=\"aui-popover__text\">\n      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>\n      <button class=\"aui-button aui-button--round aui-button--icon aui-button--icon--large aui-js-response\" data-dismiss=\"popover\" style=\"margin-top: 16px\">\n        <svg class=\"audiicon audiicon--large\">\n          <use xlink:href=\"#audiicon-system-favorites-large\"></use>\n        </svg>\n      </button>\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "src/popover/snippets/popover.html",
    "content": "<button id=\"sample-popover\" class=\"aui-button aui-button--primary aui-js-response\" type=\"button\">\n  <span class=\"aui-button__text\">Click to toggle popover</span>\n</button>\n<div class=\"aui-popover aui-js-popover\" role=\"tooltip\" for=\"sample-popover\" data-placement=\"top\">\n  <div class=\"aui-popover__content aui-color-white\">\n    <div class=\"aui-popover__text\">\n      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "src/progress/_progress-themes.scss",
    "content": "$aui-progress-color: rgba(#fff, .3);\n\n.aui-progress {\n  &.aui-theme-light {\n    background: $aui-progress-color;\n  }\n}\n"
  },
  {
    "path": "src/progress/_progress.scss",
    "content": "$aui-progress-color: $aui-color-gray90 !default;\n$aui-progress-color-progress: $aui-color-progressive-red !default;\n\n.aui-progress {\n  position: relative;\n  height: unit(1);\n  background: $aui-progress-color;\n  overflow: hidden;\n\n  &__bar {\n    display: block;\n    position: absolute;\n    top: 0;\n    left: 0;\n    height: 100%;\n    width: 100%;\n    background: $aui-progress-color-progress;\n\n    transform-origin: 0% 0%;\n  }\n\n  &--continuous &__bar {\n    animation: aui-progress 1s cubic-bezier(0.85, 0, 1, 1) 0s infinite normal none running;\n  }\n}\n\n@keyframes aui-progress {\n  0% {\n    transform: translateX(0%) scaleX(0);\n  }\n\n  50% {\n    transform: translateX(20%) scaleX(0.5);\n    animation-timing-function: cubic-bezier(0, 0, 0, 1);\n  }\n\n  100% {\n    transform: translateX(100%) scaleX(0.5);\n  }\n}\n"
  },
  {
    "path": "src/progress/progress.js",
    "content": "import Component from '../component/component';\nimport limit from '../util/limit';\n\nconst SELECTOR_COMPONENT = '.aui-js-progress';\nconst CLASS_CONTINUOUS = 'aui-progress--continuous';\nconst CLASS_BAR = 'aui-progress__bar';\nconst CLASS_IS_PENDING = 'is-pending';\nconst CLASS_IS_LOADING = 'is-loading';\nconst CLASS_IS_COMPLETE = 'is-complete';\n\n/**\n * Class constructor for Progress AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Progress extends Component {\n\n  /**\n   * Upgrades all Progress AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Progress(element));\n      }\n    });\n    return components;\n  };\n\n  constructor(element) {\n    super(element);\n  }\n\n  init() {\n    super.init();\n\n    this._continuous = this._element.classList.contains(CLASS_CONTINUOUS);\n\n    // Add bar elements:\n    this._bar = document.createElement('span');\n    this._bar.classList.add(CLASS_BAR);\n    this._element.appendChild(this._bar);\n\n    this.progress(0);\n  }\n\n  progress(ratio) {\n    ratio = limit(ratio, 0, 1);\n    this._progress = ratio;\n\n    if (!this._continuous) {\n      this._bar.style.width = `${this._progress * 100}%`;\n    }\n\n    this.updateClasses();\n  }\n\n  updateClasses() {\n    if (this._progress === 0) {\n      this._element.classList.add(CLASS_IS_PENDING);\n    } else {\n      this._element.classList.remove(CLASS_IS_PENDING);\n    }\n\n    if (this._progress > 0 && this._progress < 1) {\n      this._element.classList.add(CLASS_IS_LOADING);\n    } else {\n      this._element.classList.remove(CLASS_IS_LOADING);\n    }\n\n    if (this._progress === 1) {\n      this._element.classList.add(CLASS_IS_COMPLETE);\n    } else {\n      this._element.classList.remove(CLASS_IS_COMPLETE);\n    }\n  }\n}\n"
  },
  {
    "path": "src/progress/snippets/continuous-progress.html",
    "content": "<div class=\"aui-progress aui-js-progress aui-progress--continuous\"></div>\n"
  },
  {
    "path": "src/progress/snippets/progress.html",
    "content": "<div class=\"aui-progress aui-js-progress\"></div>\n"
  },
  {
    "path": "src/radio/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **radio** component is … (text follows)\n\n### To include an AUI **radio** component:\n"
  },
  {
    "path": "src/radio/_radio-themes.scss",
    "content": "$aui-radio-light-color-text: $aui-color-gray95 !default;\n$aui-radio-light-color-text-hover: $aui-color-white !default;\n$aui-radio-light-color-border: $aui-color-gray50 !default;\n$aui-radio-light-color-border-hover: $aui-color-white !default;\n$aui-radio-light-color-tick: rgba(#fff, 0.2) !default;\n$aui-radio-light-color-tick-active: $aui-color-black !default;\n\n.aui-radio {\n  /**\n   * Theme: light\n   */\n  &.aui-theme-light {\n\n    color: $aui-radio-light-color-text;\n\n    .aui-radio__box {\n      border-color: $aui-radio-light-color-border;\n    }\n\n    .aui-radio__tick {\n      background: $aui-radio-light-color-tick;\n    }\n\n    // Hover state\n    &:hover:not(.is-disabled) {\n      color: $aui-radio-light-color-text-hover;\n\n      .aui-radio__box {\n        border-color: $aui-radio-light-color-border-hover;\n      }\n    }\n\n    // Focus state\n    .aui-radio__input:focus ~ .aui-radio__box {\n      @include shadow-focus-light;\n    }\n\n    // Checked state\n    &.is-checked .aui-radio__tick {\n      background: $aui-radio-light-color-tick-active;\n    }\n  }\n}\n"
  },
  {
    "path": "src/radio/_radio.scss",
    "content": "$aui-radio-box-width: 1.5em !default;\n$aui-radio-tick-scale: 8 / 12 / $aui-circle-smoothing-factor !default;\n$aui-radio-tick-scale-hover: 10 / 12 / $aui-circle-smoothing-factor !default;\n$aui-radio-tick-scale-active: 1 / $aui-circle-smoothing-factor !default;\n$aui-radio-tick-size: .75em * $aui-circle-smoothing-factor !default;\n$aui-radio-text-spacing: 1em !default;\n$aui-radio-color-text: $aui-color-gray20 !default;\n$aui-radio-color-text-hover: $aui-color-black !default;\n$aui-radio-color-border: $aui-color-gray50 !default;\n$aui-radio-color-border-hover: $aui-color-black !default;\n$aui-radio-color-tick: $aui-color-gray85 !default;\n$aui-radio-color-tick-active: $aui-color-black !default;\n\n.aui-radio {\n  display: inline-block;\n  position: relative;\n  font-weight: $aui-font-weight-normal;\n  line-height: $aui-field-line-height;\n  color: $aui-radio-color-text;\n  cursor: pointer;\n  @include aui-remove-tap-highlight;\n\n  .aui-js & {\n    padding-left: $aui-radio-box-width + $aui-radio-text-spacing;\n  }\n\n  .aui-js &__input {\n    // Visually hide input\n    @extend %aui-hidden-input;\n  }\n\n  &__hint {\n    display: block;\n    margin-top: unit(2);\n    font-size: rem(13);\n    line-height: unit(5);\n  }\n\n  &__box {\n    display: none;\n    overflow: hidden;\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: $aui-radio-box-width;\n    height: $aui-radio-box-width;\n    border: 1px solid $aui-radio-color-border;\n    border-radius: 50%;\n    transition: box-shadow .15s linear, border .15s linear;\n    cursor: pointer;\n    pointer-events: none;\n    z-index: 1;\n\n    .aui-js & {\n      display: inline-block;\n    }\n  }\n\n  &__tick {\n    display: block;\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    width: $aui-radio-tick-size;\n    height: $aui-radio-tick-size;\n    transform: translate(-50%, -50%) scale($aui-radio-tick-scale, $aui-radio-tick-scale);\n    border-radius: 50%;\n    background: $aui-radio-color-tick;\n    transition: transform .15s $aui-easing, background .15s linear;\n    pointer-events: none;\n  }\n\n  // Hover state\n  &:hover:not(.is-disabled) {\n    color: $aui-radio-color-text-hover;\n\n    .aui-radio__box {\n      border-color: $aui-radio-color-border-hover;\n    }\n\n    .aui-radio__tick {\n      transform: translate(-50%, -50%) scale($aui-radio-tick-scale-hover, $aui-radio-tick-scale-hover);\n    }\n  }\n\n  // Focus state\n  // &__input:focus ~ .aui-radio__box {\n  //   @include shadow-focus;\n  // }\n\n  // Disabled state\n  &.is-disabled {\n    //opacity: $aui-field-disabled-opacity;\n    color: $aui-color-gray40;\n    cursor: not-allowed;\n  }\n\n  // Checked state\n  &.is-checked &__tick {\n    background: $aui-radio-color-tick-active;\n    transform: translate(-50%, -50%) scale($aui-radio-tick-scale-active, $aui-radio-tick-scale-active);\n  }\n}\n"
  },
  {
    "path": "src/radio/radio.js",
    "content": "import Component from '../component/component';\n\nconst SELECTOR_COMPONENT = '.aui-js-radio';\nconst CLASS_INPUT = 'aui-radio__input';\nconst CLASS_LABEL = 'aui-radio__label';\nconst CLASS_BOX = 'aui-radio__box';\nconst CLASS_TICK = 'aui-radio__tick';\nconst CLASS_IS_FOCUS = 'is-focused';\nconst CLASS_IS_CHECKED = 'is-checked';\nconst CLASS_IS_DISABLED = 'is-disabled';\n\nlet _radios;\n\n/**\n * Class constructor for Radio AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Radio extends Component {\n\n  /**\n   * Upgrades all Radio AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Radio(element));\n      }\n    });\n    _radios = components;\n    return components;\n  };\n\n  init() {\n    super.init();\n\n    this._input = this._element.querySelector(`.${CLASS_INPUT}`);\n    this._input.addEventListener('change', this._changeHandler = (event) => this._onChange(event));\n    this._input.addEventListener('focus', this._focusHandler = (event) => this._onFocus(event));\n    this._input.addEventListener('blur', this._blurHandler = (event) => this._onBlur(event));\n\n    // Insert box with tick after label element:\n    this._label = this._element.querySelector(`.${CLASS_LABEL}`);\n    let box = document.createElement('span');\n    box.classList.add(CLASS_BOX);\n    this._label.parentNode.insertBefore(box, this._label.nextSibling);\n    let tick = document.createElement('span');\n    tick.classList.add(CLASS_TICK);\n    box.appendChild(tick);\n\n    this.groupName = this._input.getAttribute('name');\n\n    this.updateClasses();\n  }\n\n  updateClasses() {\n    this.checkDisabled();\n    this.checkToggleState();\n    this.checkFocus();\n  }\n\n  /**\n   * Check the disabled state and update field accordingly.\n   */\n  checkDisabled() {\n    if (this._input.disabled) {\n      this._element.classList.add(CLASS_IS_DISABLED);\n    } else {\n      this._element.classList.remove(CLASS_IS_DISABLED);\n    }\n  }\n\n  /**\n   * Check the toggle state and update field accordingly.\n   */\n  checkToggleState() {\n\n    // Remove all graphical 'is-active' states before re-applying to actual clicked radio button\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(e => {\n      e.classList.remove(CLASS_IS_CHECKED);\n    });\n\n    if (this._input.checked) {\n      this._element.classList.add(CLASS_IS_CHECKED);\n    } else {\n      this._element.classList.remove(CLASS_IS_CHECKED);\n    }\n  }\n\n  /**\n   * Check the focus state and update field accordingly.\n   */\n  checkFocus() {\n    if (Boolean(this._element.querySelector(':focus'))) {\n      this._element.classList.add(CLASS_IS_FOCUS);\n    } else {\n      this._element.classList.remove(CLASS_IS_FOCUS);\n    }\n  }\n\n  /**\n   * Enable radio.\n   */\n  enable() {\n    this._input.disabled = false;\n    this.updateClasses();\n  }\n\n  /**\n   * Disable radio.\n   */\n  disable() {\n    this._input.disabled = true;\n    this.updateClasses();\n  }\n\n  /**\n   * Check radio.\n   */\n  check() {\n    this._input.checked = true;\n    this.updateClasses();\n  }\n\n  /**\n   * Uncheck radio.\n   */\n  uncheck() {\n    this._input.checked = false;\n    this.updateClasses();\n  }\n\n  /**\n   * Dispose component\n   */\n  dispose() {\n    super.dispose();\n\n    this._input.removeEventListener('change', this._changeHandler);\n    this._input.removeEventListener('focus', this._focusHandler);\n    this._input.removeEventListener('blur', this._blurHandler);\n\n    this._element.removeChild(this._element.querySelector(`.${CLASS_BOX}`));\n  }\n\n  /**\n   * Handle change event.\n   * @param {Event} event that fired.\n   */\n  _onChange(event) {\n    this.updateClasses();\n    // Since other radio buttons don't get change events, we need to look for\n    // them to update their classes.\n    for (var i = 0; i < _radios.length; i++) {\n      var button = _radios[i];\n      // Different name == different group, so no point updating those.\n      if (button._input.getAttribute('name') === this.groupName) {\n        button.updateClasses();\n      }\n    }\n  }\n\n  // TODO Find out why unfocus is triggered on mousedown\n  _onFocus(event) {\n    this._element.classList.add(CLASS_IS_FOCUS);\n  }\n\n  _onBlur(event) {\n    this._element.classList.remove(CLASS_IS_FOCUS);\n  }\n\n  /**\n   * Getter and Setter\n   */\n\n  get input() {\n    return this._input;\n  }\n\n  get checked() {\n    return this._input.checked = true;\n  }\n\n  set checked(value) {\n    if (value) {\n      this.check();\n    } else {\n      this.uncheck();\n    }\n  }\n\n  get disabled() {\n    return this._input.disabled = true;\n  }\n\n  set disabled(value) {\n    if (value) {\n      this.disable();\n    } else {\n      this.enable();\n    }\n  }\n}\n"
  },
  {
    "path": "src/radio/snippets/radio-checked-disabled.html",
    "content": "<label class=\"aui-radio aui-js-radio is-checked is-disabled\">\n  <input class=\"aui-radio__input\" type=\"radio\" name=\"sample-radio-disabled\" checked disabled>\n  <span class=\"aui-radio__label\">Text</span>\n</label>\n"
  },
  {
    "path": "src/radio/snippets/radio-checked.html",
    "content": "<label class=\"aui-radio aui-js-radio is-checked\">\n  <input class=\"aui-radio__input\" type=\"radio\" name=\"sample-radio-checked\" checked>\n  <span class=\"aui-radio__label\">Text</span>\n</label>\n"
  },
  {
    "path": "src/radio/snippets/radio-disabled.html",
    "content": "<label class=\"aui-radio aui-js-radio is-disabled\">\n  <input class=\"aui-radio__input\" type=\"radio\" name=\"sample-radio-disabled\" disabled>\n  <span class=\"aui-radio__label\">Text</span>\n</label>\n"
  },
  {
    "path": "src/radio/snippets/radio.html",
    "content": "<label class=\"aui-radio aui-js-radio\">\n  <input class=\"aui-radio__input\" type=\"radio\" name=\"sample-radio\">\n  <span class=\"aui-radio__label\">Text</span>\n  <span class=\"aui-radio__hint\">Optional Description</span>\n</label>\n"
  },
  {
    "path": "src/requirements.scss",
    "content": "// The Audi-UI Kit is made to work alongside a CSS cross browser normalization.\n// Our suggestion to do so is Normalize.css. It makes browsers render all\n// elements more consistently and in line with modern standards. It precisely\n// targets only the styles that need normalizing.\n// https://necolas.github.io/normalize.css/\n@import '../node_modules/normalize.css/normalize';\n\n// The Audi UI Kit assumes {box-sizing: border-box}\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n\nhtml {\n  box-sizing: border-box;\n\n  // For a better rendering of the Audi Type:\n   -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n// Additional resets:\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np,\nol,\nul,\ntable {\n  font-size: inherit;\n  font-weight: inherit;\n  line-height: inherit;\n  margin: 0;\n}\n\na {\n  color: inherit;\n  text-decoration: none;\n}\n\ni,\nem {\n  // Because there's no italic font style of Audi Type\n  font-style: normal;\n}\n"
  },
  {
    "path": "src/response/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **response** component is … (text follows)\n\n### To include an AUI **response** component:\n\n```html\n```\n"
  },
  {
    "path": "src/response/_response.scss",
    "content": "$aui-response-duration: 0.6s !default;\n\n.aui-response {\n  display: block;\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  z-index: 2;\n  pointer-events: none;\n\n  &__effect {\n    $size: 40px;\n    content: '';\n    display: block;\n    position: absolute;\n    width: $size;\n    height: $size;\n    margin: ($size / -2) 0 0 ($size / -2);\n    border-radius: 50%;\n\n    &--large {\n      $size: 60px;\n      width: $size;\n      height: $size;\n      margin: ($size / -2) 0 0 ($size / -2);\n    }\n  }\n\n  &--masked {\n    overflow: hidden;\n  }\n\n  &.is-animating &__effect {\n    animation: aui-response-dark $aui-response-duration $aui-easing both;\n  }\n\n  &.aui-theme-light.is-animating &__effect,\n  .aui-button.aui-theme-light &.is-animating &__effect {\n    animation: aui-response-light $aui-response-duration $aui-easing both;\n  }\n}\n\n/**\n * Invert effect, when used with Primary Button\n */\n\n.aui-button--primary .aui-response.is-animating .aui-response__effect {\n  animation: aui-response-light $aui-response-duration $aui-easing both;\n}\n\n.aui-button--primary.aui-theme-light .aui-response.is-animating .aui-response__effect {\n  animation: aui-response-dark $aui-response-duration $aui-easing both;\n}\n\n/**\n * Animations\n */\n\n@keyframes aui-response-dark {\n  0% {\n    opacity: 1;\n    box-shadow: inset 0 0 0 30px rgba($aui-color-gray60, 0.3);\n    transform: scale3d(0.01, 0.01, 1);\n  }\n\n  100% {\n    opacity: 0;\n    box-shadow: inset 0 0 0 1px rgba($aui-color-gray60, 1);\n    transform: scale3d(1.7, 1.7, 1);\n  }\n}\n\n@keyframes aui-response-light {\n  0% {\n    opacity: 1;\n    box-shadow: inset 0 0 0 30px rgba($aui-color-white, 0.3);\n    transform: scale3d(0.01, 0.01, 1);\n  }\n\n  100% {\n    opacity: 0;\n    box-shadow: inset 0 0 0 1px rgba($aui-color-white, 0.7);\n    transform: scale3d(1.7, 1.7, 1);\n  }\n}\n"
  },
  {
    "path": "src/response/response.js",
    "content": "import Component from '../component/component';\nimport animationEndEvent from '../util/animation-end-event';\n\nconst SELECTOR_COMPONENT = '.aui-js-response';\nconst CLASS_BUTTON_PRIMARY = 'aui-button--primary';\nconst CLASS_BUTTON_SECONDARY = 'aui-button--secondary';\nconst CLASS_BUTTON_ICON = 'aui-button--icon';\nconst CLASS_BUTTON_FLOATING = 'aui-button--floating';\nconst CLASS_RESPONSE = 'aui-response';\nconst CLASS_RESPONSE_MASKED = 'aui-response--masked';\nconst CLASS_EFFECT = 'aui-response__effect';\nconst CLASS_EFFECT_LARGE = 'aui-response__effect--large';\nconst CLASS_IS_ANIMATING = 'is-animating';\nconst CLASS_IS_DISABLED = 'is-disabled';\n\n/**\n * Class constructor for Response AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Response extends Component {\n\n  /**\n   * Upgrades all Response AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Response(element));\n      }\n    });\n    return components;\n  };\n\n  /**\n   * Constructor\n   * @constructor\n   * @param {HTMLElement} element The element of the AUI component.\n   */\n  constructor(element) {\n    super(element);\n  }\n\n  /**\n   * Initialize component\n   */\n  init() {\n    super.init();\n\n    let boxedButton = this._element.classList.contains(CLASS_BUTTON_PRIMARY) || this._element.classList.contains(CLASS_BUTTON_SECONDARY) || this._element.classList.contains(CLASS_BUTTON_FLOATING);\n\n    this._useTriggerX = boxedButton || !this._element.classList.contains(CLASS_BUTTON_ICON);\n    this._useTriggerY = boxedButton;\n    this._masked = boxedButton;\n    this._large = boxedButton;\n\n    this._responseContainer = document.createElement('span');\n    this._responseContainer.classList.add(CLASS_RESPONSE);\n    if (this._masked) {\n      this._responseContainer.classList.add(CLASS_RESPONSE_MASKED);\n    }\n    this._element.appendChild(this._responseContainer);\n\n    this._responseEffect = document.createElement('span');\n    this._responseEffect.classList.add(CLASS_EFFECT);\n    if (this._large) {\n      this._responseEffect.classList.add(CLASS_EFFECT_LARGE);\n    }\n    this._responseContainer.appendChild(this._responseEffect);\n\n    this._element.addEventListener('mousedown', this._mousedownHandler = (event) => this._onMousedown(event));\n    animationEndEvent && this._responseEffect.addEventListener(animationEndEvent, this._animationendHandler = (event) => this._onAnimationend(event));\n  }\n\n  /**\n   * Dispose component\n   */\n  dispose() {\n    super.dispose();\n\n    this._element.removeEventListener('mousedown', this._mousedownHandler);\n    if (animationEndEvent && this._responseEffect) {\n      this._responseEffect.removeEventListener(animationEndEvent, this._animationendHandler);\n    }\n    this._element.removeChild(this._responseContainer);\n  }\n\n  /**\n   * Handle mousedown of element.\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  _onMousedown(event) {\n    // Get cross-browser offsetX, offsetY\n    let target = event.currentTarget || event.srcElement,\n      rect = target.getBoundingClientRect(),\n      offsetX = event.clientX - rect.left,\n      offsetY = event.clientY - rect.top;\n\n    if (!target.classList.contains(CLASS_IS_DISABLED)) {\n      this._responseEffect.style.left = this._useTriggerX ? `${offsetX}px` : '50%';\n      this._responseEffect.style.top = this._useTriggerY ? `${offsetY}px` : '50%';\n      this._responseContainer.classList.add(CLASS_IS_ANIMATING);\n    }\n  }\n\n  /**\n   * Handle animationend of element.\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  _onAnimationend(event) {\n    this._responseContainer.classList.remove(CLASS_IS_ANIMATING);\n  }\n}\n"
  },
  {
    "path": "src/select/_select-themes.scss",
    "content": "$aui-select-light-color: $aui-color-gray95 !default;\n$aui-select-light-color-secondary: $aui-color-gray50 !default;\n$aui-select-light-border: $aui-color-gray50 !default;\n$aui-select-light-border-hover: $aui-color-black !default;\n$aui-select-light-border-focus: $aui-color-black !default;\n$aui-select-light-border-dirty: $aui-color-black !default;\n$aui-select-light-color-arrow: $aui-field-placeholder-color-light !default;\n$aui-select-light-color-arrow-dirty: $aui-select-light-color !default;\n$aui-select-light-panel-background: $aui-color-black !default;\n\n.aui-select {\n  /**\n   * Theme: light\n   */\n  &.aui-theme-light {\n\n    .aui-select__input {\n      color: $aui-field-placeholder-color-light;\n      border-color: $aui-select-light-border;\n\n      // HACK IE: Use placeholder color, if default value is selected.\n      &::-ms-value {\n        color: $aui-field-placeholder-color-light;\n      }\n    }\n\n    .aui-select__label {\n      color: $aui-field-placeholder-color-light;\n    }\n\n    // Arrow icon\n    &::after {\n      background: url('data:image/svg+xml,#{aui-svg-dropdown-arrow($aui-select-light-color-arrow)}') center center no-repeat;\n    }\n\n    .aui-select__focus-line {\n      background: $aui-select-light-border-hover;\n    }\n\n    .aui-select__description,\n    .aui-select__error {\n      color: $aui-select-light-color-secondary;\n    }\n\n    .aui-select__error {\n      color: $aui-field-error-color;\n    }\n\n    /**\n    * States\n    */\n\n    // Hover state\n    &:not(.is-disabled):not(.is-invalid) {\n      .aui-select__input:hover {\n        border-color: $aui-select-light-border-hover;\n      }\n    }\n\n    // Dirty state\n    &.is-dirty {\n      // Arrow icon\n      &::after {\n        background-image: url('data:image/svg+xml,#{aui-svg-dropdown-arrow($aui-select-light-color-arrow-dirty)}');\n      }\n\n      .aui-select__input {\n        border-color: $aui-select-light-border-dirty;\n        color: $aui-select-light-color;\n\n        // Style color on IE10+ when selected\n        &::-ms-value {\n          color: $aui-select-light-color;\n        }\n      }\n    }\n\n    // Invalid state\n    &.is-invalid {\n      &,\n      .aui-select__label,\n      &:not(.is-dirty) .aui-select__input {\n        color: $aui-field-error-color;\n      }\n\n      // Arrow icon\n      &::after {\n        background-image: url('data:image/svg+xml,#{aui-svg-dropdown-arrow($aui-field-error-color)}');\n      }\n\n      .aui-select__input {\n        border-color: $aui-field-error-color;\n      }\n\n      .aui-select__focus-line {\n        background: $aui-field-error-color;\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/select/_select.scss",
    "content": "$aui-select-arrow-width: 13px;\n$aui-select-arrow-top-default: $aui-field-default-height * .525; // Center with label\n$aui-select-color: $aui-color-dark;\n$aui-select-color-secondary: $aui-color-gray40;\n$aui-select-border: $aui-color-gray50;\n$aui-select-border-hover: $aui-color-black;\n$aui-select-border-focus: $aui-color-black;\n$aui-select-border-dirty: $aui-color-black;\n$aui-select-color-arrow: $aui-field-placeholder-color;\n$aui-select-color-arrow-dirty: $aui-select-color;\n\n.aui-select {\n  display: block;\n  position: relative;\n  margin: 0;\n  padding: 0;\n  padding-top: $aui-field-floating-label-padding;\n  font-size: 1rem;\n  line-height: $aui-field-line-height;\n  box-sizing: border-box;\n\n\n  &:hover {\n    .aui-select__focus-line {\n      background: $aui-select-border-hover;\n    }\n  }\n\n  &__input {\n    display: block;\n    margin: 0;\n    padding-right: #{rem($aui-select-arrow-width) + unit(2)};\n    width: 100%;\n    min-height: $aui-field-default-height;\n    font-family: $aui-font-default;\n    font-size: inherit;\n    font-weight: $aui-font-weight-normal;\n    line-height: inherit;\n    color: $aui-field-placeholder-color;\n    background: none;\n    border: none;\n    border-bottom: 1px solid $aui-select-border;\n    border-radius: 0;\n    box-shadow: none;\n    transition: color, border;\n    transition-duration: $aui-field-transition-duration;\n    transition-timing-function: $aui-easing;\n    appearance: none;\n    outline: 0;\n\n    // HACK IE: Remove arrow.\n    &::-ms-expand {\n      display: none;\n    }\n\n    // HACK [1] IE: Remove blue background when selected.\n    // HACK [2] IE: Use placeholder color, if default value is selected.\n    &::-ms-value {\n      background: none; // [1]\n      color: $aui-field-placeholder-color; // [2]\n    }\n\n    // HACK Firefox, IE: Fix styling on backgrounds other than white.\n    option {\n      color: $aui-select-color;\n      background: white;\n\n      &:disabled {\n        color: $aui-field-placeholder-color;\n      }\n    }\n\n    // NOTE Don't use this kind of a hack to remove the dotted outline in Mozilla.\n    // color: transparent;\n    // text-shadow: 0 0 0 #333;\n  }\n\n  // HACK Firefox: Fix vertical aligment.\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=610733\n  @-moz-document url-prefix() {\n    .aui-select__input {\n      padding-top: (9 / 16 * 1em);\n    }\n  }\n\n  &__label {\n    display: block;\n    position: absolute;\n    top: $aui-field-label-y;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    width: 100%;\n    color: $aui-field-placeholder-color;\n    font-size: inherit;\n    font-weight: $aui-font-weight-normal;\n    text-align: left;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    transition-property: top, font-size, color, opacity;\n    transition-duration: $aui-field-transition-duration;\n    transition-timing-function: $aui-easing;\n    opacity: 1;\n    pointer-events: none;\n  }\n\n  // Arrow icon\n  &::after {\n    content: '';\n    display: block;\n    position: absolute;\n    //top: $aui-select-arrow-top-default;\n    top: $aui-select-arrow-top-default + $aui-field-floating-label-padding;\n    right: 0;\n    width: $aui-select-arrow-width;\n    height: 8px;\n    background: url('data:image/svg+xml,#{aui-svg-dropdown-arrow($aui-select-color-arrow)}') center center no-repeat;\n    transform: translateY(-50%);\n    transition: background .25s linear;\n    pointer-events: none;\n  }\n\n  // Focus line will be injected by JS\n  &__focus-line {\n    display: block;\n    position: relative;\n    width: 100%;\n    margin-top: -1px;\n    height: 1px;\n    background: $aui-select-border;\n    opacity: 1;\n    transition-property:  background;\n    transition-duration: $aui-field-transition-duration;\n  }\n\n  &__description {\n    display: block;\n    color: $aui-select-color-secondary;\n    transition: color $aui-field-transition-duration linear;\n    margin-top: unit(3.5);\n    font-size: rem(13);\n    line-height: $aui-field-error-line-height;\n  }\n\n  &__error {\n    display: flex;\n    align-items: center;\n    line-height: $aui-field-error-line-height;\n    margin-top: unit(3.5);\n    font-size: rem(13);\n    color: $aui-field-error-color;\n\n    &::before {\n      content: '';\n      display: inline-block;\n      margin-right: rem(16px);\n      width: 40px;\n      height: 24px;\n      background: url('data:image/svg+xml,#{aui-svg-caution($aui-field-error-color)}') center center no-repeat;\n\n      @include aui-respond-to('large') {\n        margin-right: unit(2);\n        width: 24px;\n        height: 24px;\n      }\n    }\n  }\n\n  /**\n   * Variant: floating-label\n   */\n  // &.aui-select--floating-label {\n  //   // padding-top: $aui-field-floating-label-padding;\n\n  //   // Arrow icon\n  //   &::after {\n  //     top: $aui-select-arrow-top-default + $aui-field-floating-label-padding;\n  //   }\n  // }\n\n  .aui-js &.aui-select--floating-label &__label {\n    top: $aui-field-label-y + $aui-field-floating-label-padding + 0.0925rem;\n  }\n\n  &.aui-select--floating-label {\n    .aui-select__input {\n      opacity: 0;\n\n      &:focus,\n      &:not(:focus)\n      {\n        opacity: 1;\n      }\n    }\n\n    // Arrow icon\n    &::after {\n      top: $aui-select-arrow-top-default + $aui-field-floating-label-padding;\n    }\n  }\n\n  /**\n   * States\n   */\n\n  // Hover state\n  &:not(.is-disabled):not(.is-invalid) {\n    .aui-select__input:hover {\n      border-color: $aui-select-border-hover;\n    }\n  }\n\n  // Focus state\n  &.is-focused {\n    .aui-select__label {\n      opacity: 0;\n    }\n\n    &.aui-select--floating-label .aui-select__label {\n      top: 0;\n      font-size: .75rem;\n      opacity: 1;\n    }\n\n    .aui-select__input {\n      outline: none;\n      box-shadow: none;\n      border-color: $aui-select-border-focus;\n    }\n\n    .aui-select__focus-line {\n      //opacity: 1;\n      opacity: 0;\n    }\n  }\n\n  // Disabled state\n  &.is-disabled {\n    //opacity: $aui-field-disabled-opacity;\n    color: $aui-color-gray40;\n    cursor: not-allowed;\n\n    .aui-select__input {\n      cursor: not-allowed;\n    }\n\n    .aui-select__focus-line {\n      opacity: 1;\n    }\n  }\n\n  // Dirty state\n  &.is-dirty {\n    &::after {\n      // Arrow icon\n      background-image: url('data:image/svg+xml,#{aui-svg-dropdown-arrow($aui-select-color-arrow-dirty)}');\n    }\n\n    .aui-select__label {\n      opacity: 0;\n    }\n\n    &.aui-select--floating-label .aui-select__label {\n      top: 0;\n      font-size: .75rem;\n      opacity: 1;\n    }\n\n    .aui-select__input {\n      border-color: $aui-select-border-dirty;\n      color: $aui-select-color;\n\n      // Style color on IE10+ when selected\n      &::-ms-value {\n        color: $aui-select-color;\n      }\n    }\n  }\n\n  // Invalid state\n  &.is-invalid {\n    &,\n    &:not(.is-dirty) .aui-select__input,\n    .aui-select__label {\n      color: $aui-field-error-color;\n    }\n\n    // Arrow icon\n    &::after {\n      background-image: url('data:image/svg+xml,#{aui-svg-dropdown-arrow($aui-field-error-color)}');\n    }\n\n    .aui-select__input {\n      border-color: $aui-field-error-color;\n    }\n\n    .aui-select__focus-line {\n      background: $aui-field-error-color;\n    }\n  }\n}\n"
  },
  {
    "path": "src/select/select.js",
    "content": "import Component from '../component/component';\n\nconst SELECTOR_COMPONENT = '.aui-js-select';\nconst CLASS_INPUT = 'aui-select__input';\nconst CLASS_LABEL = 'aui-select__label';\nconst CLASS_FOCUS_LINE = 'aui-select__focus-line';\nconst CLASS_IS_FOCUS = 'is-focused';\nconst CLASS_IS_DIRTY = 'is-dirty';\nconst CLASS_IS_DISABLED = 'is-disabled';\n\n/**\n * Class constructor for Select AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Select extends Component {\n\n  /**\n   * Upgrades all Select AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Select(element));\n      }\n    });\n    return components;\n  };\n\n  constructor(element) {\n    super(element);\n  }\n\n  init() {\n    super.init();\n\n    this._label = this._element.querySelector(`.${CLASS_LABEL}`);\n\n    this._input = this._element.querySelector(`.${CLASS_INPUT}`);\n    this._input.addEventListener('change', this._changeHandler = (event) => this._onChange(event));\n    this._input.addEventListener('focus', this._focusHandler = (event) => this._onFocus(event));\n    this._input.addEventListener('blur', this._blurHandler = (event) => this._onBlur(event));\n    this._input.addEventListener('reset', this._resetHandler = (event) => this._onReset(event));\n\n    // Insert thick focus line after select element:\n    let focusLine = document.createElement('span');\n    focusLine.classList.add(CLASS_FOCUS_LINE);\n    this._label.parentNode.insertBefore(focusLine, this._label.nextSibling);\n\n    this.updateClasses();\n  }\n\n  updateClasses() {\n    this.checkDisabled();\n    this.checkDirty();\n    this.checkFocus();\n  }\n\n  /**\n   * Check the disabled state and update field accordingly.\n   */\n  checkDisabled() {\n    if (this._input.disabled) {\n      this._element.classList.add(CLASS_IS_DISABLED);\n    } else {\n      this._element.classList.remove(CLASS_IS_DISABLED);\n    }\n  }\n\n  /**\n   * Check the dirty state and update field accordingly.\n   */\n  checkDirty() {\n    // console.log('value', this._input.value, typeof this._input.value);\n    // console.log('options', this._input.options[this._input.selectedIndex].disabled);\n    if (!this._input.options[this._input.selectedIndex].disabled) {\n      this._element.classList.add(CLASS_IS_DIRTY);\n    } else {\n      this._element.classList.remove(CLASS_IS_DIRTY);\n    }\n  }\n\n  /**\n   * Check the focus state and update field accordingly.\n   */\n  checkFocus() {\n    if (Boolean(this._element.querySelector(':focus'))) {\n      this._element.classList.add(CLASS_IS_FOCUS);\n    } else {\n      this._element.classList.remove(CLASS_IS_FOCUS);\n    }\n  }\n\n  /**\n   * Disable text field.\n   */\n  disable() {\n    this._input.disabled = true;\n    this.updateClasses();\n  }\n\n  /**\n   * Event Handler\n   */\n\n  _onChange(event) {\n    this.updateClasses();\n  }\n\n  _onFocus(event) {\n    this._element.classList.add(CLASS_IS_FOCUS);\n  }\n\n  _onBlur(event) {\n    this._element.classList.remove(CLASS_IS_FOCUS);\n  }\n\n  _onReset(event) {\n    this.updateClasses();\n  }\n}\n"
  },
  {
    "path": "src/select/snippets/select-disabled.html",
    "content": "<div class=\"aui-select aui-js-select aui-select--floating-label is-disabled\">\n  <select class=\"aui-select__input\" id=\"sample-select-disabled\" disabled>\n    <option disabled selected>Label <span class=\"aui-select__input-label--optional\">(optional)</span></option>\n    <option value=\"0\">Audi Sport</option>\n    <option value=\"1\">Audi City</option>\n    <option value=\"2\">Audi e-tron</option>\n    <option value=\"3\">Audi quattro</option>\n    <option value=\"4\">Audi connect</option>\n    <option value=\"5\">Audi mobility</option>\n    <option value=\"6\">Audi driving experience</option>\n  </select>\n  <label class=\"aui-select__label\" for=\"sample-select-disabled\">Label</label>\n  <span class=\"aui-select__description\">If the customer doesn’t understand the label itself or is just unsure of its meaning, an additional description can help squash any uncertainty.</span>\n</div>\n"
  },
  {
    "path": "src/select/snippets/select-invalid.html",
    "content": "<div class=\"aui-select aui-js-select aui-select--floating-label is-invalid\">\n  <select class=\"aui-select__input\" id=\"sample-select-invalid\">\n    <option disabled selected>Label <span class=\"aui-select__input-label--optional\">(optional)</span></option>\n    <option value=\"0\">Audi Sport</option>\n    <option value=\"1\">Audi City</option>\n    <option value=\"2\">Audi e-tron</option>\n    <option value=\"3\">Audi quattro</option>\n    <option value=\"4\">Audi connect</option>\n    <option value=\"5\">Audi mobility</option>\n    <option value=\"6\">Audi driving experience</option>\n  </select>\n  <label class=\"aui-select__label\" for=\"sample-select-invalid\">Label</label>\n  <span class=\"aui-select__error\">Error messages that reassure users can make it easy for them to correct their mistakes and continue with the form.</span>\n</div>\n"
  },
  {
    "path": "src/select/snippets/select.html",
    "content": "<div class=\"aui-select aui-js-select aui-select--floating-label\">\n  <select class=\"aui-select__input\" id=\"sample-select\">\n    <option selected disabled class=\"aui-select__input-label\">Label <span class=\"aui-select__input-label--optional\">(optional)</span></option>\n    <option value=\"0\">Audi Sport</option>\n    <option value=\"1\">Audi City</option>\n    <option value=\"2\">Audi e-tron</option>\n    <option value=\"3\">Audi quattro</option>\n    <option value=\"4\">Audi connect</option>\n    <option value=\"5\">Audi mobility</option>\n    <option value=\"6\">Audi driving experience</option>\n  </select>\n  <label class=\"aui-select__label\" for=\"sample-select\">Label</label>\n  <span class=\"aui-select__description\">If the customer doesn’t understand the label itself or is just unsure of its meaning, an additional description can help squash any uncertainty.</span>\n</div>\n"
  },
  {
    "path": "src/slider/_slider-themes.scss",
    "content": ".aui-slider {\n\n  /**\n   * Theme: black\n   */\n  &.aui-theme-black {\n    $aui-slider-color-text: $aui-color-gray80;\n    $aui-slider-color-track: $aui-color-gray20;\n    $aui-slider-color-track-active: $aui-color-white;\n    $aui-slider-color-thumb: $aui-color-black;\n    $aui-slider-color-thumb-border: $aui-color-gray50;\n    $aui-slider-color-thumb-border-hover: $aui-slider-color-track-active;\n\n    color: $aui-slider-color-text;\n\n    .aui-slider__target {\n      &::after {\n        background: $aui-slider-color-track;\n      }\n    }\n\n    .aui-slider__connect {\n      &::after {\n        background: $aui-slider-color-track-active;\n      }\n    }\n\n    .aui-slider__handle {\n      background: $aui-slider-color-thumb;\n      border-color: $aui-slider-color-thumb-border;\n    }\n\n    &:not(.is-disabled) .aui-slider__handle:hover {\n      border-color: $aui-slider-color-thumb-border-hover;\n    }\n  }\n\n  /**\n   * Theme: silver\n   */\n  &.aui-theme-silver {\n    $aui-slider-color-text: $aui-color-black;\n    $aui-slider-color-track: #c1c1c1;\n    $aui-slider-color-track-active: $aui-color-white;\n    $aui-slider-color-thumb: $aui-color-silver;\n    $aui-slider-color-thumb-border: #d9d9d9;\n    $aui-slider-color-thumb-border-hover: $aui-slider-color-track-active;\n\n    color: $aui-slider-color-text;\n\n    .aui-slider__target {\n      &::after {\n        background: $aui-slider-color-track;\n      }\n    }\n\n    .aui-slider__connect {\n      &::after {\n        background: $aui-slider-color-track-active;\n      }\n    }\n\n    .aui-slider__handle {\n      background: $aui-slider-color-thumb;\n      border-color: $aui-slider-color-thumb-border;\n    }\n\n    &:not(.is-disabled) .aui-slider__handle:hover {\n      border-color: $aui-slider-color-thumb-border-hover;\n    }\n  }\n\n  /**\n   * Theme: warmsilver\n   */\n  &.aui-theme-warmsilver {\n    $aui-slider-color-text: $aui-color-black;\n    $aui-slider-color-track: #c5c1ba;\n    $aui-slider-color-track-active: $aui-color-white;\n    $aui-slider-color-thumb: $aui-color-warmsilver;\n    $aui-slider-color-thumb-border: #dbd8d4;\n    $aui-slider-color-thumb-border-hover: $aui-slider-color-track-active;\n\n    color: $aui-slider-color-text;\n\n    .aui-slider__target {\n      &::after {\n        background: $aui-slider-color-track;\n      }\n    }\n\n    .aui-slider__connect {\n      &::after {\n        background: $aui-slider-color-track-active;\n      }\n    }\n\n    .aui-slider__handle {\n      background: $aui-slider-color-thumb;\n      border-color: $aui-slider-color-thumb-border;\n    }\n\n    &:not(.is-disabled) .aui-slider__handle:hover {\n      border-color: $aui-slider-color-thumb-border-hover;\n    }\n  }\n}\n"
  },
  {
    "path": "src/slider/_slider.scss",
    "content": "/**\n * NOTE\n * The Slider AUI component relies on the 3rd party library\n * noUiSlider by Leon Gersen\n * @see https://refreshless.com/nouislider/\n */\n$aui-slider-handle-size: unit(6) !default;\n$aui-slider-handle-offset: $aui-slider-handle-size / 2;\n$aui-slider-track-size: 2px;\n$aui-slider-color-text: $aui-color-gray20 !default;\n$aui-slider-color-disabled: $aui-color-gray40 !default;\n$aui-slider-color-track: $aui-color-gray80 !default;\n$aui-slider-color-track-active: $aui-color-black !default;\n$aui-slider-color-thumb: $aui-color-white !default;\n$aui-slider-color-thumb-border: $aui-color-gray50 !default;\n$aui-slider-color-thumb-border-hover: $aui-slider-color-track-active !default;\n\n.aui-slider {\n  position: relative;\n  padding: 0;\n  min-height: $aui-slider-handle-size;\n  color: $aui-slider-color-text;\n  display: flex;\n  flex-direction: column;\n\n  &__label {\n    order: -2;\n    font-size: rem(12);\n    color: $aui-slider-color-disabled;\n    margin-bottom: 1rem;\n  }\n\n  &__rangeOutput {\n    order: -1;\n    position: relative;\n    align-self: center;\n    font-size: modular-scale(-1);\n  }\n\n  /**\n   * Customized noUiSlider Styles\n   */\n\n  // Functional styling\n  &__target,\n  &__target * {\n    -webkit-touch-callout: none;\n    -webkit-tap-highlight-color: $aui-color-black;\n    touch-action: none;\n    user-select: none;\n    box-sizing: border-box;\n  }\n\n  &__target {\n    position: relative;\n    direction: ltr;\n  }\n\n  &__base {\n    width: 100%;\n    height: 100%;\n    position: relative;\n    z-index: 1;\n  }\n\n  &__connect {\n    position: absolute;\n    right: 0;\n    top: 0;\n    left: 0;\n    bottom: 0;\n  }\n\n  &__origin {\n    position: absolute;\n    height: 0;\n    width: 0;\n  }\n\n  &__handle {\n    position: relative;\n    z-index: 1;\n  }\n\n  &__state-tap &__connect,\n  &__state-tap &__origin {\n    transition: top 0.3s, right 0.3s, bottom 0.3s, left 0.3s;\n  }\n\n  &__state-drag * {\n    cursor: inherit !important;\n  }\n\n  // Painting and performance\n  // Browsers can paint handles in their own layer.\n  &__base,\n  &__handle {\n    transform: translate3d(0, 0, 0);\n  }\n\n  // Slider size and handle placement\n  &__horizontal {\n    height: $aui-slider-track-size;\n  }\n\n  &__vertical {\n    // width: 18px;\n    width: $aui-slider-track-size;\n  }\n\n  // Styling\n  &__target {\n    margin: 0 $aui-slider-handle-offset;\n    height: $aui-slider-handle-size;\n\n    &::after {\n      content: '';\n      display: block;\n      position: absolute;\n      top: 50%;\n      left: 0;\n      right: 0;\n      height: $aui-slider-track-size;\n      margin: 0 #{$aui-slider-handle-offset * -1};\n      transform: translateY(-50%);\n      background: $aui-slider-color-track;\n    }\n  }\n\n  &__connect {\n    &::after {\n      content: '';\n      display: block;\n      position: absolute;\n      top: 50%;\n      left: 0;\n      right: 0;\n      height: $aui-slider-track-size;\n      transform: translateY(-50%);\n      background: $aui-slider-color-track-active;\n    }\n  }\n\n  &.aui-slider--single &__connect::after{\n    margin-left: #{$aui-slider-handle-offset * -1};\n  }\n\n  // Handles and cursors\n  &__draggable {\n    cursor: ew-resize;\n  }\n\n  &__vertical &__draggable {\n    cursor: ns-resize;\n  }\n\n  &__handle {\n    position: relative;\n    width: $aui-slider-handle-size;\n    height: $aui-slider-handle-size;\n    background: $aui-slider-color-thumb;\n    border-radius: 50%;\n    border: 1px solid $aui-slider-color-thumb-border;\n    transform: translateX(-50%);\n    transition: border .15s linear;\n    cursor: pointer;\n  }\n\n  &.aui-slider--output &__origin::before{\n    position: absolute;\n    top: -35px;\n    transform: translateX(-50%);\n    font-size: modular-scale(-1);\n    display: block;\n    content: attr(data-before);\n  }\n\n  &:not(.is-disabled) &__handle:hover {\n    border-color: $aui-slider-color-thumb-border-hover;\n  }\n\n  &__active {\n  }\n\n  &__handle[disabled],\n  [disabled] &__handle,\n  [disabled] &__target {\n    cursor: not-allowed;\n  }\n\n  // Base\n  &__pips,\n  &__pips * {\n    box-sizing: border-box;\n  }\n\n  &__pips {\n    position: absolute;\n    color: #999;\n  }\n\n  // Values\n  &__value {\n    position: absolute;\n    text-align: center;\n  }\n\n  &__value-sub {\n    color: #ccc;\n    font-size: 10px;\n  }\n\n  &__range {\n    display: flex;\n    justify-content: space-between;\n    font-size: rem(12);\n  }\n\n  // Markings\n  &__marker {\n    position: absolute;\n    background: #CCC;\n  }\n\n  &__marker-sub {\n    background: #AAA;\n  }\n\n  &__marker-large {\n    background: #AAA;\n  }\n\n  // Horizontal layout\n  &__pips-horizontal {\n    padding: 10px 0;\n    height: 80px;\n    top: 100%;\n    left: 0;\n    width: 100%;\n  }\n\n  &__value-horizontal {\n    transform: translate3d(-50%, 50%, 0);\n  }\n\n  &__marker-horizontal.aui-slider__marker {\n    margin-left: -1px;\n    width: 2px;\n    height: 5px;\n  }\n\n  &__marker-horizontal.aui-slider__marker-sub {\n    height: 10px;\n  }\n\n  &__marker-horizontal.aui-slider__marker-large {\n    height: 15px;\n  }\n\n  // Vertical layout\n  &__pips-vertical {\n    padding: 0 10px;\n    height: 100%;\n    top: 0;\n    left: 100%;\n  }\n\n  &__value-vertical {\n    transform: translate3d(0, 50%, 0);\n    padding-left: 25px;\n  }\n\n  &__marker-vertical.aui-slider__marker {\n    width: 5px;\n    height: 2px;\n    margin-top: -1px;\n  }\n\n  &__marker-vertical.aui-slider__marker-sub {\n    width: 10px;\n  }\n\n  &__marker-vertical.aui-slider__marker-large {\n    width: 15px;\n  }\n\n  &__tooltip {\n    display: block;\n    position: absolute;\n    border: 1px solid #D9D9D9;\n    border-radius: 3px;\n    background: #fff;\n    color: #000;\n    padding: 5px;\n    text-align: center;\n  }\n\n  &__horizontal &__tooltip {\n    transform: translate(-50%, 0);\n    left: 50%;\n    bottom: 120%;\n  }\n\n  &__vertical &__tooltip {\n    transform: translate(0, -50%);\n    top: 50%;\n    right: 120%;\n  }\n\n  /**\n   * Variants\n   */\n\n  &--output {\n    .aui-slider__label {\n      margin-bottom: 2rem;\n    }\n  }\n\n  /**\n   * States\n   */\n\n  // Disabled state\n  &.is-disabled {\n    //opacity: $aui-field-disabled-opacity;\n    cursor: not-allowed;\n\n    .aui-slider__connect::after {\n      background-color: $aui-color-gray70;\n    }\n\n\n    .aui-slider__target::after {\n      background-color: $aui-color-gray90;\n    }\n\n    .aui-slider__handle,\n    .aui-slider__draggable {\n      cursor: not-allowed;\n    }\n  }\n}\n"
  },
  {
    "path": "src/slider/slider.js",
    "content": "/**\n * NOTE Slider AUI components rely on the 3rd party library noUiSlider.\n * @see https://github.com/leongersen/noUiSlider\n */\n\nimport Component from '../component/component';\nimport limit from '../util/limit';\nimport mapLinear from '../util/map-linear';\nimport ResizeObserver from '../util/resize-observer';\nimport noUiSlider from 'nouislider';\n\nconst SELECTOR_COMPONENT = '.aui-js-slider';\nconst SELECTOR_HIDDEN_FIELD = '.aui-slider__hidden-field';\nconst SELECTOR_OUTPUT = '.aui-slider__output';\nconst SELECTOR_RANGE_OUTPUT = '.aui-slider__rangeOutput';\nconst SELECTOR_RANGE_MIN = '.aui-slider__range-min';\nconst SELECTOR_RANGE_MAX = '.aui-slider__range-max';\nconst SELECTOR_ORIGIN = '.aui-slider__origin';\nconst CLASS_COMPONENT = 'aui-slider';\nconst CLASS_IS_DISABLED = 'is-disabled';\nconst EVENT_NAMESPACE = CLASS_COMPONENT;\n\n/**\n * Class constructor for Slider AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Slider extends Component {\n\n  /**\n   * Upgrades all Slider AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Slider(element));\n      }\n    });\n    return components;\n  };\n\n  /**\n   * Initialize component\n   */\n  init() {\n    super.init();\n\n    // Save reference to component elements\n    this._hiddenField = this._element.querySelector(SELECTOR_HIDDEN_FIELD);\n    this._output = this._element.querySelector(SELECTOR_OUTPUT);\n    this._rangeOutput = this._element.querySelector(SELECTOR_RANGE_OUTPUT);\n    this._rangeMinOutput = this._element.querySelector(SELECTOR_RANGE_MIN);\n    this._rangeMaxOutput = this._element.querySelector(SELECTOR_RANGE_MAX);\n\n    // Create slider container element\n    this._slider = document.createElement('div');\n    this._element.insertBefore(this._slider, this._element.firstChild);\n\n    // Parse and save start and range values:\n    this._value = this._parseData(this._hiddenField.value);\n    this._rangeMin = this._parseData(this._element.getAttribute('data-min'));\n    this._rangeMax = this._parseData(this._element.getAttribute('data-max'));\n\n    // Create noUiSlider instance\n    noUiSlider.create(this._slider, {\n      // Set the start value defined in the hidden field.\n      // https://refreshless.com/nouislider/slider-options/#section-start\n      start: this._value,\n\n      // Set the range as defined in the data attributes\n      // https://refreshless.com/nouislider/slider-values/#section-range\n      range: {\n        min: this._rangeMin,\n        max: this._rangeMax\n      },\n\n      // If there are two handles, set the bar between the handles, but not\n      // between the handles and the sliders edges. If there is only one handle,\n      // set the bar from the slider edge to the handle.\n      // https://refreshless.com/nouislider/slider-options/#section-Connect\n      connect: this._value.length > 1\n        ? true\n        : [true, false],\n\n      // Define behaviour depending on number of handles\n      // https://refreshless.com/nouislider/behaviour-option/\n      behaviour: this._value.length > 1\n        ? 'tap-drag'\n        : 'tap',\n\n      // Use AUI namespace for css classes\n      // https://refreshless.com/nouislider/more/#section-styling\n      cssPrefix: `${CLASS_COMPONENT}__`\n    });\n    this._slider.noUiSlider.on(`update.${EVENT_NAMESPACE}`, (values, handle, unencoded, tap, positions) => this._onUpdate(values, handle, unencoded, tap, positions));\n\n    if (this._output || this._rangeOutput) {\n      this._resizeObserver = new ResizeObserver();\n      this._rangeMinOutput.innerHTML = this._rangeMin;\n      this._rangeMaxOutput.innerHTML = this._rangeMax;\n    }\n\n    if (this._element.classList.contains(CLASS_IS_DISABLED)) {\n      this.disable();\n    }\n  }\n\n  /**\n   * Dispose component\n   */\n  dispose() {\n    if (this._slider) {\n      this._slider.noUiSlider.off(`.${EVENT_NAMESPACE}`);\n    }\n    if (this._resizeObserver) {\n      this._resizeObserver.resized.remove(this._resizedHandler);\n      this._resizeObserver = null;\n    }\n  }\n\n  /**\n   * Enable component\n   */\n  enable() {\n    this._element.classList.remove(CLASS_IS_DISABLED);\n    this._slider.removeAttribute('disabled');\n  }\n\n  /**\n   * Disable component\n   */\n  disable() {\n    this._element.classList.add(CLASS_IS_DISABLED);\n    this._slider.setAttribute('disabled', true);\n  }\n\n  /**\n   * Handle on update\n   * @param {Array} values Current slider values\n   * @param {Integer} handle Handle that caused the event 0 or 1\n   * @param {Array} unencoded Slider values without formatting\n   * @param {boolean} tap Event was caused by the user tapping the slider\n   * @param {Array} positions Left offset of the handles in relation to the slider\n   */\n  _onUpdate(values, handle, unencoded, tap, positions) {\n    if (this._hiddenField) {\n      this._hiddenField.value = unencoded;\n    }\n\n    // Display slider value above slider handle\n    if (this._output) {\n      this._origin = this._element.querySelector(SELECTOR_ORIGIN);\n      this._origin.setAttribute('data-before', parseInt(values[0]));\n    }\n\n    // Position output to center of slider handles\n    if (this._rangeOutput) {\n      this._rangeOutput.innerHTML = values.length > 1\n        ? `${parseInt(values[0])} to ${parseInt(values[1])}`\n        : `${parseInt(values[0])}`;\n    }\n  }\n\n  /**\n   * Center output bewteen handles.\n   */\n  // _centerOutput() {\n  //   const unencoded = this._slider.noUiSlider.get();\n  //   const sliderAverage = typeof unencoded === 'object'\n  //     ? unencoded.reduce((previousValue, currentValue) => {\n  //         return previousValue + parseFloat(currentValue);\n  //       }, 0) / unencoded.length\n  //     : parseFloat(unencoded);\n  //   const maxRight = this._element.offsetWidth - this._rangeOutput.offsetWidth;\n  //   const handleSize = this._slider.offsetHeight;\n  //   const position = mapLinear(sliderAverage, this._rangeMin, this._rangeMax, 0, 1) * this._slider.offsetWidth - this._rangeOutput.offsetWidth / 2 + handleSize / 2;\n  //   this._rangeOutput.style.left = `${limit(position, 0, maxRight)}px`;\n  // }\n\n  /**\n   * Parse data to use with noUiSlider\n   * Returns given value as array of floats\n   * \"0,100\" => [0,100]\n   * @param {string} value Current slider values\n   * @returns {Array} values as floats\n   */\n  _parseData(value) {\n    return value && value.split(',').map(element => parseFloat(element));\n  }\n}\n"
  },
  {
    "path": "src/slider/snippets/slider-disabled.html",
    "content": "<div class=\"aui-slider aui-js-slider aui-slider--single is-disabled\" data-min=\"0\" data-max=\"100\">\n  <span class=\"aui-slider__label\">Slider label</span>\n  <input type=\"hidden\" class=\"aui-slider__hidden-field\" value=\"50.00\">\n</div>\n"
  },
  {
    "path": "src/slider/snippets/slider-output.html",
    "content": "<div class=\"aui-slider aui-js-slider aui-slider--single aui-slider--output\" data-min=\"0\" data-max=\"100\">\n  <span class=\"aui-slider__label\">Slider label</span>\n  <input type=\"hidden\" class=\"aui-slider__hidden-field\" value=\"50.00\">\n  <output class=\"aui-slider__output\"></output>\n  <div class=\"aui-slider__range\">\n    <div class=\"aui-slider__range-min\">min</div><div class=\"aui-slider__range-max\">max</div>\n  </div>\n</div>\n"
  },
  {
    "path": "src/slider/snippets/slider-range-disabled.html",
    "content": "<div class=\"aui-slider aui-js-slider aui-slider--range is-disabled\" data-min=\"0\" data-max=\"100\">\n  <span class=\"aui-slider__label\">Slider label</span>\n  <output class=\"aui-slider__rangeOutput\"></output>\n  <input type=\"hidden\" class=\"aui-slider__hidden-field\" value=\"20.00,80.00\">\n  <div class=\"aui-slider__range\">\n    <div class=\"aui-slider__range-min\">min</div><div class=\"aui-slider__range-max\">max</div>\n  </div>\n</div>\n"
  },
  {
    "path": "src/slider/snippets/slider-range.html",
    "content": "<div class=\"aui-slider aui-js-slider aui-slider--range\" data-min=\"0\" data-max=\"100\">\n  <span class=\"aui-slider__label\">Slider label</span>\n  <output class=\"aui-slider__rangeOutput\"></output>\n  <input type=\"hidden\" class=\"aui-slider__hidden-field\" value=\"20.00,80.00\">\n  <div class=\"aui-slider__range\">\n    <div class=\"aui-slider__range-min\">min</div><div class=\"aui-slider__range-max\">max</div>\n  </div>\n</div>\n"
  },
  {
    "path": "src/spinner/_spinner-themes.scss",
    "content": "$aui-spinner-color: rgba(#fff, .6);\n\n.aui-spinner {\n  &.aui-theme-light {\n    stroke: $aui-spinner-color;\n  }\n}\n"
  },
  {
    "path": "src/spinner/_spinner.scss",
    "content": "/**\n * NOTE\n * All animations happen in JS.\n */\n\n$aui-spinner-color: $aui-color-gray90 !default;\n$aui-spinner-color-progress: $aui-color-progressive-red !default;\n$aui-spinner-size: rem(92) !default;\n$aui-spinner-size-continuous: rem(48) !default;\n\n.aui-spinner {\n  display: inline-block;\n  position: relative;\n  width: $aui-spinner-size;\n  height: $aui-spinner-size;\n  stroke: $aui-spinner-color;\n  font-size: 1rem;\n\n  &__svg {\n    overflow: visible !important; // fix cut off edges\n    width: 100%;\n    height: 100%;\n  }\n\n  &__path {\n    stroke-miterlimit: 10;\n    stroke-width: 4px;\n    fill: none;\n  }\n\n  &__path--progress {\n    stroke: $aui-spinner-color-progress;\n    stroke-width: 4px;\n  }\n\n  &__value {\n    display: block;\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n    width: 100%;\n    font-family: $aui-font-extended;\n    font-variation-settings: $aui-font-extended-width;\n    font-size: 1rem;\n    line-height: 1;\n    text-align: center;\n  }\n\n  &--continuous {\n    width: $aui-spinner-size-continuous;\n    height: $aui-spinner-size-continuous;\n  }\n}\n"
  },
  {
    "path": "src/spinner/snippets/continuous-spinner.html",
    "content": "<div class=\"aui-spinner aui-js-spinner aui-spinner--continuous\"></div>\n"
  },
  {
    "path": "src/spinner/snippets/spinner.html",
    "content": "<div class=\"aui-spinner aui-js-spinner aui-spinner--progress\"></div>\n"
  },
  {
    "path": "src/spinner/spinner.js",
    "content": "import Component from '../component/component';\nimport ObjectResize from '../util/object-resize';\nimport limit from '../util/limit';\nimport bezierEasing from 'bezier-easing';\n\nconst SELECTOR_COMPONENT = '.aui-js-spinner';\nconst CLASS_CONTINUOUS = 'aui-spinner--continuous';\nconst CLASS_SHAPE = 'aui-spinner__svg';\nconst CLASS_PATH = 'aui-spinner__path';\nconst CLASS_PATH_PROGRESS = 'aui-spinner__path--progress';\nconst CLASS_GROUP = 'aui-spinner__group';\nconst CLASS_GROUP_BASE_PATH = 'aui-spinner__group-base';\nconst CLASS_GROUP_PROGRESS_PATH = 'aui-spinner__group-progress';\nconst CLASS_VALUE = 'aui-spinner__value';\nconst CLASS_IS_PENDING = 'is-pending';\nconst CLASS_IS_LOADING = 'is-loading';\nconst CLASS_IS_COMPLETE = 'is-complete';\nconst SIZE = 48;\nconst RADIUS = 22;\nconst STROKE_WIDTH = 3;\nconst LOOP_ANIMATION_DURATION = 1.5;\nconst LOOP_ANIMATION = [\n  {\n    dashLength: 0,\n    dashOffset: 0,\n    rotate: 0,\n  },{\n    dashLength: 0.65,\n    dashOffset: -1,\n    rotate: 360,\n  }\n];\n\n/**\n * Class constructor for Spinner AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Spinner extends Component {\n\n  /**\n   * Upgrades all Spinner AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Spinner(element));\n      }\n    });\n    return components;\n  };\n\n  constructor(element) {\n    super(element);\n  }\n\n  init() {\n    super.init();\n\n    this._objectResize = new ObjectResize(this._element, this.resize, this);\n\n    this._continuous = this._element.classList.contains(CLASS_CONTINUOUS);\n\n    // Add value element, if required:\n    if (!this._continuous) {\n      this._value = document.createElement('span');\n      this._value.classList.add(CLASS_VALUE);\n      this._element.appendChild(this._value);\n    }\n\n    // Add SVG graphic:\n    // <svg class=\"aui-spinner__shape\" viewBox=\"0 0 200 200\">\n    //   <g class=\"aui-spinner__group\">\n    //     <circle class=\"aui-spinner__path\" cx=\"0\" cy=\"0\" r=\"100\" />\n    //     <circle class=\"aui-spinner__path aui-spinner__path--progress\" cx=\"0\" cy=\"0\" r=\"100\" />\n    //   </g>\n    // </svg>\n    let shape = this.createSvgNode('svg', {\n      class: CLASS_SHAPE,\n      viewBox: `0 0 ${SIZE} ${SIZE}`,\n    });\n    let group = this.createSvgNode('g', {class: CLASS_GROUP});\n    let groupCircle1 = this.createSvgNode('g', {class: CLASS_GROUP_BASE_PATH});\n    let groupCircle2 = this.createSvgNode('g', {class: CLASS_GROUP_PROGRESS_PATH});\n    let circle1 = this.createSvgNode('circle', {\n      class: CLASS_PATH,\n      cx: 0,\n      cy: 0,\n      r: RADIUS\n    });\n    let circle2 = this.createSvgNode('circle', {\n      class: `${CLASS_PATH} ${CLASS_PATH_PROGRESS}`,\n      cx: 0,\n      cy: 0,\n      r: RADIUS,\n      transform: 'rotate(-90)',\n    });\n    groupCircle1.appendChild(circle1);\n    groupCircle2.appendChild(circle2);\n    group.appendChild(groupCircle1);\n    group.appendChild(groupCircle2);\n    shape.appendChild(group);\n    this._element.appendChild(shape);\n    this._shape = shape;\n    this._group = group;\n    this._progressPath = circle2;\n    this._basePath = circle1;\n    this._groupProgress = groupCircle2;\n\n    this._easing = bezierEasing(0.75, 0.02, 0.5, 1);\n    this._easingDasharray = bezierEasing(0.4, 0, 0, 1);\n    this._progressPath.style.strokeOpacity = 0;\n\n    this.resize();\n    this.progress(0);\n  }\n\n  progress(ratio) {\n    ratio = limit(ratio, 0, 1);\n    this._progress = ratio;\n    const pathLength = this._getCircleLength(this._progressPath);\n\n    if (!this._continuous) {\n      this._progressPath.style.strokeDasharray = this._progress === 1\n        ? 'none'\n        : `${this._progress * pathLength}, ${pathLength}`;\n      this._progressPath.style.strokeOpacity = this._progress === 0\n        ? 0\n        : 1;\n    }\n\n    if (this._value) {\n      this._value.innerHTML = `${Math.round(this._progress * 100)}`;\n    }\n\n    this._updateClasses();\n  }\n\n  loop() {\n    if (this._continuous) {\n      this._progressPath.style.strokeOpacity = 1;\n      window.requestAnimationFrame(timestamp => this._animateLoop(timestamp));\n    }\n  }\n\n  stop() {}\n\n  resize() {\n    const size = this._element.offsetWidth;\n    const radius = (size - STROKE_WIDTH) / 2;\n    this._shape.setAttributeNS(null, 'viewBox', `${size / -2} ${size / -2} ${size} ${size}`);\n    this._basePath.setAttributeNS(null, 'r', `${radius}`);\n    this._progressPath.setAttributeNS(null, 'r', `${radius}`);\n  }\n\n  // TODO Optimize calculations; wording.\n  _animateLoop(timestamp) {\n    if (!this._loopStart) {\n      this._loopStart = timestamp;\n    }\n\n    // The progress in seconds 0 <= progress <= LOOP_ANIMATION_DURATION\n    let progress = (timestamp - this._loopStart) / 1000;\n    // The progress ratio between 0 <= progressRatio <= 1\n    let progressRatio = (progress / LOOP_ANIMATION_DURATION);\n    if (progressRatio > 1 || progressRatio === 0) {\n      this._animationEndSet = false;\n      progress = 0;\n      progressRatio = 0;\n      this._loopStart = timestamp;\n      this._dashLengthStart = LOOP_ANIMATION[0].dashLength;\n      this._dashOffsetStart = LOOP_ANIMATION[0].dashOffset;\n      this._dashLengthEnd = LOOP_ANIMATION[1].dashLength;\n      this._dashOffsetEnd = LOOP_ANIMATION[1].dashOffset;\n    }\n    const ease = this._easing(progressRatio);\n    const pathLength = this._getCircleLength(this._progressPath);\n    this._dashLengthRatio = this._dashLengthStart + (this._dashLengthEnd - this._dashLengthStart) * this._easingDasharray(progressRatio);\n    this._dashOffsetRatio = this._dashOffsetStart + (this._dashOffsetEnd - this._dashOffsetStart) * ease;\n    this._rotate = LOOP_ANIMATION[1].rotate * ease;\n\n    const dashLength = pathLength * this._dashLengthRatio;\n    const dashOffset = pathLength * this._dashOffsetRatio;\n\n    this._progressPath.style.strokeDasharray = `${dashLength}, ${pathLength}`;\n    this._progressPath.style.strokeDashoffset = `${dashOffset}`;\n    // this._group.setAttributeNS(null, 'transform', `rotate(${this._rotate})`);\n    this._groupProgress.setAttributeNS(null, 'transform', `rotate(${this._rotate})`);\n\n    window.requestAnimationFrame(timestamp => this._animateLoop(timestamp));\n  }\n\n  _updateClasses() {\n    if (this._progress === 0) {\n      this._element.classList.add(CLASS_IS_PENDING);\n    } else {\n      this._element.classList.remove(CLASS_IS_PENDING);\n    }\n\n    if (this._progress > 0 && this._progress < 1) {\n      this._element.classList.add(CLASS_IS_LOADING);\n    } else {\n      this._element.classList.remove(CLASS_IS_LOADING);\n    }\n\n    if (this._progress === 1) {\n      this._element.classList.add(CLASS_IS_COMPLETE);\n    } else {\n      this._element.classList.remove(CLASS_IS_COMPLETE);\n    }\n  }\n\n  _getCircleLength(circle) {\n    const r = circle.getAttribute('r');\n    return 2 * Math.PI * r;\n  }\n}\n"
  },
  {
    "path": "src/sr-only/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **sr-only** component hides an element to all devices except screen readers.\n\n### To include an AUI **sr-only** component:\n\n&nbsp;1. Code whatever element you want to hide.\n```html\n<span>Hide to all devices except screen readers<span>\n```\n\n&nbsp;2. Add AUI class, to the element using the `class` attribute.\n```html\n<span class=\"aui-sr-only\">Hidden to all devices except screen readers<span>\n```\n\nThe sr-only component is ready for use.\n"
  },
  {
    "path": "src/sr-only/_sr-only.scss",
    "content": "// Screen reader only, Credits:\n// http://getbootstrap.com/css/#helper-classes-screen-readers\n.aui-sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0,0,0,0);\n  border: 0;\n}\n"
  },
  {
    "path": "src/sticky/sticky.js",
    "content": "import Component from '../component/component';\nimport ScrollObserver from '../util/scroll-observer';\n\nconst CLASS_IS_STICKY = 'is-sticky';\n\n/**\n * Class constructor for Sticky AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Sticky extends Component {\n\n  /**\n   * Constructor\n   * @constructor\n   * @param {HTMLElement} element The element of the AUI component.\n   */\n  constructor(element) {\n    super(element);\n  }\n\n  /**\n   * Initialize component.\n   */\n  init() {\n    super.init();\n\n    // If browser supports position:sticky, it will handle positioning and\n    // we can skip here.\n    if (window.getComputedStyle(this._element).position.indexOf('sticky') !== -1) {\n      return;\n    }\n\n    this._scrollObserver = new ScrollObserver();\n    this._scrollObserver.scrolled.add(this._scrollHandler = () => this.checkStickiness());\n\n    this._sticky = false;\n    this.checkStickiness();\n  }\n\n  /**\n  * Dispose component.\n  */\n  dispose() {\n    super.dispose();\n\n    this.release();\n    this._scrollObserver.resized.remove(this._scrollHandler);\n    this._resizeObserver.resized.remove(this._resizedHandler);\n  }\n\n  /**\n   * Check if position.top is negative. If so stick otherwise release component.\n   */\n  checkStickiness() {\n    if (this._element.getBoundingClientRect().top <= 0) {\n      if (!this._sticky) {\n        this.stick();\n      }\n    } else {\n      if (this._sticky) {\n        this.release();\n      }\n    }\n  }\n\n  /**\n   * Stick component to top of viewport in adding sticky class.\n   */\n  stick() {\n    if (!this._sticky) {\n      this._element.classList.add(CLASS_IS_STICKY);\n    }\n    this._sticky = true;\n  }\n\n  /**\n   * Release component and position not fixed in removing sticky class.\n   */\n  release() {\n    if (this._sticky) {\n      this._element.classList.remove(CLASS_IS_STICKY);\n    }\n    this._sticky = false;\n  }\n}\n"
  },
  {
    "path": "src/switch/README.md",
    "content": "---\ntitle: Switch\n---\n\n## Introduction\n\nThe Audi UI (AUI) **switch** component is … (text follows)\n\n### To include an AUI **switch** component:\n\n```html\n<!-- Example follows ... -->\n```\n"
  },
  {
    "path": "src/switch/_switch-themes.scss",
    "content": "$aui-switch-light-color-text: $aui-color-gray95 !default;\n$aui-switch-light-color-text-hover: $aui-color-white !default;\n$aui-switch-light-color-text-inactive: $aui-color-gray50 !default;\n$aui-switch-light-color-track-border: $aui-color-gray50 !default;\n$aui-switch-light-color-track-border-hover: $aui-color-white !default;\n$aui-switch-light-color-thumb: rgba(#fff, 0.2) !default;\n$aui-switch-light-color-thumb-active: $aui-color-black !default;\n\n.aui-switch {\n  /**\n   * Theme: light\n   */\n  &.aui-theme-light {\n\n    .aui-switch__text {\n      color: $aui-switch-light-color-text;\n    }\n\n    .aui-switch__track {\n      border-color: $aui-switch-light-color-track-border;\n    }\n\n    .aui-switch__thumb {\n      background: $aui-switch-light-color-thumb;\n    }\n\n    &.aui-switch--equal {\n      .aui-switch__text--right {\n        color: $aui-switch-light-color-text-inactive;\n      }\n\n      .aui-switch__thumb {\n        background: $aui-switch-light-color-thumb-active;\n      }\n    }\n\n    // Hover state\n    &:hover:not(.is-disabled) {\n      .aui-switch__text {\n        color: $aui-switch-light-color-text-hover;\n      }\n\n      .aui-switch__track {\n        border-color: $aui-switch-light-color-track-border-hover;\n      }\n    }\n\n    &.aui-switch--equal:hover:not(.is-disabled) .aui-switch__text--right {\n      color: $aui-switch-light-color-text-inactive;\n    }\n\n    &.aui-switch--equal:hover:not(.is-disabled) .aui-switch__input:checked ~ .aui-switch__text--left {\n      color: $aui-switch-light-color-text-inactive;\n    }\n\n    &.aui-switch--equal:hover:not(.is-disabled) .aui-switch__input:checked ~ .aui-switch__text--right {\n      color: $aui-switch-light-color-text-hover;\n    }\n\n    // Focus state\n    .aui-switch__input:focus ~ .aui-switch__track {\n      @include shadow-focus-light;\n    }\n\n    // Checked state\n    .aui-switch__input:checked ~ .aui-switch__track .aui-switch__thumb {\n      background: $aui-switch-light-color-thumb-active;\n    }\n\n    &.aui-switch--equal .aui-switch__input:checked ~ .aui-switch__text--left {\n      color: $aui-switch-light-color-text-inactive;\n    }\n\n    &.aui-switch--equal .aui-switch__input:checked ~ .aui-switch__text--right {\n      color: $aui-switch-light-color-text;\n    }\n  }\n}\n"
  },
  {
    "path": "src/switch/_switch.scss",
    "content": "//$aui-switch-track-width: 2.9em !default;\n$aui-switch-track-width: 3.63em !default;\n//$aui-switch-track-height: 1.6em !default;\n$aui-switch-track-height: 2em !default;\n$aui-switch-track-spacing: 1em !default;\n$aui-switch-thumb-scale: 1 / $aui-circle-smoothing-factor !default;\n$aui-switch-thumb-scale-hover: 8 / 10 / $aui-circle-smoothing-factor !default;\n$aui-switch-thumb-scale-active: 1 / $aui-circle-smoothing-factor !default;\n$aui-switch-thumb-size: 1.63em * $aui-circle-smoothing-factor !default;\n//$aui-switch-thumb-size: 26px !default;\n$aui-switch-color-text: $aui-color-gray20 !default;\n$aui-switch-color-text-hover: $aui-color-black !default;\n$aui-switch-color-text-inactive: $aui-color-gray40 !default;\n$aui-switch-color-track-background: $aui-color-gray85;\n$aui-switch-color-track-background-active: $aui-color-green;\n$aui-switch-color-track-border: $aui-color-gray40 !default;\n$aui-switch-color-track-border-hover: $aui-color-black  !default;\n$aui-switch-color-thumb: $aui-color-white !default;\n$aui-switch-color-thumb-active: $aui-color-white !default;\n\n.aui-switch {\n  cursor: pointer;\n  display: flex;\n  align-items: center;\n  position: relative;\n  font-weight: $aui-font-weight-normal;\n  height: $aui-switch-track-height;\n  // Because track is positioned `absolute`, the element would have a width of 0\n  // when there's no text label.\n  min-width: $aui-switch-track-width;\n  cursor: pointer;\n  @include aui-remove-tap-highlight;\n\n  // Ensure positioning of track, when there's no text label.\n  &::after {\n    content: '.';\n    display: inline-block;\n    width: 0;\n    visibility: hidden;\n  }\n\n  // Visually hide input\n  .aui-switch__input {\n    @extend %aui-hidden-input;\n  }\n\n  &__text {\n    display: inline-block;\n    padding-left: #{$aui-switch-track-width + $aui-switch-track-spacing};\n    color: $aui-switch-color-text;\n    transition: all 250ms $aui-easing;\n  }\n\n  &__track {\n    display: inline-block;\n    position: absolute;\n    // top: .125em;\n    left: 0;\n    width: $aui-switch-track-width;\n    height: $aui-switch-track-height;\n    // border: 1px solid $aui-switch-color-track-border;\n    border-radius: #{$aui-switch-track-height / 2};\n    vertical-align: middle;\n    background-color: $aui-switch-color-track-background;\n    transition: all .15s linear, border .15s linear;\n  }\n\n  &__thumb {\n    display: inline-block;\n    position: absolute;\n    z-index: 10;\n    top: 50%;\n    //left: .75em;\n    left: 1em;\n    width: $aui-switch-thumb-size;\n    height: $aui-switch-thumb-size;\n    border-radius: 50%;\n    transform: translate(-50%, -50%) scale($aui-switch-thumb-scale, $aui-switch-thumb-scale);\n    background: $aui-switch-color-thumb;\n    transition: transform .15s $aui-easing, left .3s $aui-easing, background .3s $aui-easing;\n  }\n\n  &__indicator {\n    position: absolute;\n    top: 50%;\n    transform: translateY(-50%);\n\n    &--on {\n      //left: 1.75em;\n      width: 1px;\n      height: 8px;\n      background-color: $aui-color-white;\n      transition: transform .15s $aui-easing, opacity .15s $aui-easing;\n    }\n\n    &--off {\n      width: 6px;\n      height: 6px;\n      border-radius: 50%;\n      border: 1px solid $aui-color-gray50;\n      right: 0.75em;\n      transition: transform .15s $aui-easing, opacity .15s $aui-easing;\n    }\n  }\n\n  /**\n   * Variant: text-left\n   */\n  &--text-left {\n    .aui-switch__text {\n      padding-left: 0;\n      padding-right: #{$aui-switch-track-width + $aui-switch-track-spacing};\n    }\n\n    .aui-switch__track {\n      left: auto;\n      right: 0;\n    }\n  }\n\n  /**\n   * Variant: equal\n   */\n  &--equal {\n    display: inline-flex;\n\n    .aui-switch__text {\n      padding-left: 0;\n      padding-right: 0;\n      flex: 1 1 auto;\n      order: 1;\n    }\n\n    .aui-switch__text--left {\n      margin-right: $aui-switch-track-spacing;\n    }\n\n    .aui-switch__text--right {\n      order: 3;\n      color: $aui-switch-color-text-inactive;\n      margin-left: $aui-switch-track-spacing;\n    }\n\n    .aui-switch__track {\n      position: relative;\n      // top: auto;\n      left: auto;\n      flex: 0 0 $aui-switch-track-width;\n      order: 2;\n    }\n\n    .aui-switch__thumb {\n      background: $aui-switch-color-thumb-active;\n      transform: translate(-50%, -50%) scale($aui-switch-thumb-scale-active, $aui-switch-thumb-scale-active);\n    }\n  }\n\n  /**\n   * States\n   */\n\n  // Hover state\n  &:hover:not(.is-disabled) {\n    .aui-switch__text {\n      color: $aui-switch-color-text-hover;\n    }\n\n    .aui-switch__track {\n      border-color: $aui-switch-color-track-border-hover;\n\n      .aui-switch__thumb {\n        transform: translate(-50%, -50%) scale($aui-switch-thumb-scale-hover, $aui-switch-thumb-scale-hover);\n      }\n    }\n  }\n\n  &--equal:hover:not(.is-disabled) .aui-switch__text--right {\n    color: $aui-switch-color-text-inactive;\n  }\n\n  &--equal:hover:not(.is-disabled) &__input:checked ~ .aui-switch__text--left {\n    color: $aui-switch-color-text-inactive;\n  }\n\n  &--equal:hover:not(.is-disabled) &__input:checked ~ .aui-switch__text--right {\n    color: $aui-switch-color-text-hover;\n  }\n\n  // Focus state\n  // &__input:focus ~ .aui-switch__track {\n  //   @include shadow-focus;\n  // }\n\n  // Disabled state\n  &.is-disabled {\n    opacity: $aui-field-disabled-opacity;\n    cursor: not-allowed;\n  }\n\n  // Checked state\n  &__input:checked ~ &__track {\n    background: $aui-switch-color-track-background-active;\n  }\n\n  &__input:checked ~ &__track {\n    .aui-switch__indicator--on {\n      //left: 1.05em;\n      opacity: 1;\n      transform: translate(1.05em, -50%);\n    }\n\n    .aui-switch__indicator--off {\n      transform: translate(-0.7em, -50%);\n      //right: 0.75em;\n      opacity: 0;\n    }\n  }\n\n  // Unchecked state\n  &__input:not(:checked) ~ &__track {\n    .aui-switch__indicator--on {\n      opacity: 0;\n      transform: translate(1.75em, -50%);\n    }\n\n    .aui-switch__indicator--off {\n      opacity: 1;\n      transform: translate(0, -50%);\n    }\n  }\n\n  &__input:checked ~ &__track &__thumb {\n    background: $aui-switch-color-thumb-active;\n    transform: translate(-50%, -50%) scale($aui-switch-thumb-scale-active, $aui-switch-thumb-scale-active);\n    //left: 2.125em;\n    left: 2.65em;\n  }\n\n  &--equal &__input:checked ~ .aui-switch__text--left {\n    color: $aui-switch-color-text-inactive;\n  }\n\n  &--equal &__input:checked ~ .aui-switch__text--right {\n    color: $aui-switch-color-text;\n  }\n}\n"
  },
  {
    "path": "src/switch/snippets/switch-checked-disabled.html",
    "content": "<label class=\"aui-switch is-disabled\">\n  <input type=\"checkbox\" class=\"aui-switch__input\" checked disabled>\n  <span class=\"aui-switch__text\">Label</span>\n  <span class=\"aui-switch__track\" aria-hidden=\"true\">\n    <span class=\"aui-switch__thumb\"></span>\n  </span>\n</label>\n"
  },
  {
    "path": "src/switch/snippets/switch-checked.html",
    "content": "<label class=\"aui-switch\">\n  <input type=\"checkbox\" class=\"aui-switch__input\" checked>\n  <span class=\"aui-switch__text\">Label</span>\n  <span class=\"aui-switch__track\" aria-hidden=\"true\">\n    <span class=\"aui-switch__thumb\"></span>\n    <div class=\"aui-switch__indicator aui-switch__indicator--on\"></div>\n    <div class=\"aui-switch__indicator aui-switch__indicator--off\"></div>\n  </span>\n</label>\n"
  },
  {
    "path": "src/switch/snippets/switch-disabled.html",
    "content": "<label class=\"aui-switch is-disabled\">\n  <input type=\"checkbox\" class=\"aui-switch__input\" disabled>\n  <span class=\"aui-switch__text\">Label</span>\n  <span class=\"aui-switch__track\" aria-hidden=\"true\">\n    <span class=\"aui-switch__thumb\"></span>\n  </span>\n</label>\n"
  },
  {
    "path": "src/switch/snippets/switch-equal-checked-disabled.html",
    "content": "<label class=\"aui-switch aui-switch--equal is-disabled\">\n  <input type=\"checkbox\" class=\"aui-switch__input\" checked disabled>\n  <span class=\"aui-switch__text aui-switch__text--left\">Text left</span>\n  <span class=\"aui-switch__text aui-switch__text--right\">Text right</span>\n  <span class=\"aui-switch__track\" aria-hidden=\"true\">\n    <span class=\"aui-switch__thumb\"></span>\n  </span>\n</label>\n"
  },
  {
    "path": "src/switch/snippets/switch-equal-disabled.html",
    "content": "<label class=\"aui-switch aui-switch--equal is-disabled\">\n  <input type=\"checkbox\" class=\"aui-switch__input\" disabled>\n  <span class=\"aui-switch__text aui-switch__text--left\">Text left</span>\n  <span class=\"aui-switch__text aui-switch__text--right\">Text right</span>\n  <span class=\"aui-switch__track\" aria-hidden=\"true\">\n    <span class=\"aui-switch__thumb\"></span>\n  </span>\n</label>\n"
  },
  {
    "path": "src/switch/snippets/switch-equal.html",
    "content": "<label class=\"aui-switch aui-switch--equal\">\n  <input type=\"checkbox\" class=\"aui-switch__input\">\n  <span class=\"aui-switch__text aui-switch__text--left\">Text left</span>\n  <span class=\"aui-switch__text aui-switch__text--right\">Text right</span>\n  <span class=\"aui-switch__track\" aria-hidden=\"true\">\n    <span class=\"aui-switch__thumb\"></span>\n    <div class=\"aui-switch__indicator aui-switch__indicator--on\"></div>\n    <div class=\"aui-switch__indicator aui-switch__indicator--off\"></div>\n  </span>\n</label>\n"
  },
  {
    "path": "src/switch/snippets/switch-text-left-disabled.html",
    "content": "<label class=\"aui-switch aui-switch--text-left is-disabled\">\n  <input type=\"checkbox\" class=\"aui-switch__input\" disabled>\n  <span class=\"aui-switch__text\">Label</span>\n  <span class=\"aui-switch__track\" aria-hidden=\"true\">\n    <span class=\"aui-switch__thumb\"></span>\n  </span>\n</label>\n"
  },
  {
    "path": "src/switch/snippets/switch-text-left.html",
    "content": "<label class=\"aui-switch aui-switch--text-left\">\n  <input type=\"checkbox\" class=\"aui-switch__input\">\n  <span class=\"aui-switch__text\">Label</span>\n  <span class=\"aui-switch__track\" aria-hidden=\"true\">\n    <span class=\"aui-switch__thumb\"></span>\n    <div class=\"aui-switch__indicator aui-switch__indicator--on\"></div>\n    <div class=\"aui-switch__indicator aui-switch__indicator--off\"></div>\n  </span>\n</label>\n"
  },
  {
    "path": "src/switch/snippets/switch-without-text.html",
    "content": "<label class=\"aui-switch\">\n  <input type=\"checkbox\" class=\"aui-switch__input\">\n  <span class=\"aui-switch__track\" aria-hidden=\"true\">\n    <span class=\"aui-switch__thumb\"></span>\n    <div class=\"aui-switch__indicator aui-switch__indicator--on\"></div>\n    <div class=\"aui-switch__indicator aui-switch__indicator--off\"></div>\n  </span>\n</label>\n"
  },
  {
    "path": "src/switch/snippets/switch.html",
    "content": "<label class=\"aui-switch\">\n  <input type=\"checkbox\" class=\"aui-switch__input\">\n  <span class=\"aui-switch__text\">Label</span>\n  <span class=\"aui-switch__track\" aria-hidden=\"true\">\n    <span class=\"aui-switch__thumb\"></span>\n    <div class=\"aui-switch__indicator aui-switch__indicator--on\"></div>\n    <div class=\"aui-switch__indicator aui-switch__indicator--off\"></div>\n  </span>\n</label>\n"
  },
  {
    "path": "src/table/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **table** component is … (text follows)\n\n### To include an AUI **table** component:\n"
  },
  {
    "path": "src/table/_table-themes.scss",
    "content": "$aui-table-border-color-light: $aui-color-white !default;\n$aui-table-background-color-light: rgba(#fff, .2);\n\n.aui-table {\n  /**\n   * Theme: light\n   */\n  &.aui-theme-light {\n\n    table {\n      border-color: $aui-table-border-color-light;\n    }\n\n    th {\n      border-top-color: $aui-table-border-color-light;\n    }\n\n    td {\n      border-top-color: $aui-table-border-color-light;\n    }\n\n    .aui-table__cell--colored {\n      background-color: $aui-table-background-color-light;\n    }\n\n    .aui-table__cell--last-row td::after {\n      border-color: $aui-table-border-color-light;\n    }\n  }\n}\n"
  },
  {
    "path": "src/table/_table.scss",
    "content": "$aui-table-border-width-title: 3px !default;\n$aui-table-border-width: 1px !default;\n$aui-table-border-color: $aui-color-black !default;\n$aui-table-background-color: $aui-color-gray85 !default;\n$aui-table-gutters: unit(2) !default;\n$aui-table-cell-padding-x: unit(3) !default;\n$aui-table-cell-padding-y: unit(4) !default;\n\n.aui-table {\n  width: calc(100% + #{2 * $aui-table-gutters});\n  margin-left: #{$aui-table-gutters * -1};\n  overflow: auto;\n  overflow-y: hidden;\n\n  table {\n    border-collapse: separate;\n    border-spacing: $aui-table-gutters;\n    border-color: $aui-table-border-color;\n  }\n\n  caption {\n    font-weight: $aui-font-weight-bold;\n    text-align: left;\n    padding: $aui-table-cell-padding-y $aui-table-gutters;\n  }\n\n  tr {\n    vertical-align: top;\n  }\n\n  th {\n    border-top: $aui-table-border-width-title solid $aui-table-border-color;\n    font-weight: $aui-font-weight-bold;\n    text-align: left;\n  }\n\n  th,\n  td {\n    padding: $aui-table-cell-padding-y $aui-table-cell-padding-x #{$aui-table-cell-padding-y - $aui-table-gutters} 0;\n  }\n\n  td {\n    border-top: $aui-table-border-width solid $aui-table-border-color;\n  }\n\n  &__cell--colored {\n    background-color: $aui-table-background-color;\n  }\n\n  &__cell--last-row {\n    td {\n      position: relative;\n\n      &::after {\n        content: '';\n        display: block;\n        position: absolute;\n        bottom: #{$aui-table-gutters * -1};\n        left: 0;\n        right: 0;\n        border-bottom: $aui-table-border-width solid $aui-table-border-color;\n      }\n    }\n  }\n\n  &--stretched {\n    table {\n      width: 100%;\n    }\n  }\n\n  &--padded {\n\n    th,\n    td {\n      padding: $aui-table-cell-padding-y $aui-table-cell-padding-x;\n    }\n  }\n\n  &--responsive {\n\n    thead,\n    tfoot {\n      display: none; // Hide <thead> as table headers will be displayed in <td> on mobiles\n    }\n\n    tr {\n      border-top: $aui-table-border-width-title solid $aui-table-border-color;\n      padding-bottom: $aui-table-cell-padding-y * 2;\n    }\n\n    tr,\n    td {\n      float: left;\n      width: 100%;\n    }\n\n    td {\n      padding-bottom: $aui-table-cell-padding-y;\n\n      &:before {\n        content: attr(data-label); // Use 'data-label' as header text on mobiles\n        float: left;\n        font-weight: $aui-font-weight-bold;\n        hyphens: auto;\n        padding-right: $aui-table-cell-padding-x;\n        width: 50%;\n        word-break: break-word\n      }\n    }\n\n    .aui-table__cell--last-row-responsive {\n      border-bottom: $aui-table-border-width-title solid $aui-table-border-color;\n    }\n\n    @include aui-respond-to(large) {\n\n      td {\n        padding-bottom: #{$aui-table-cell-padding-y - $aui-table-gutters};\n\n        &:before {\n          content: none; // Hide 'data-label' attribute\n        }\n      }\n\n      thead,\n      tr,\n      td,\n      tfoot {\n        float: none;\n        width: auto;\n      }\n\n      th,\n      td {\n        display: table-cell;\n      }\n\n      thead {\n        display: table-header-group;\n      }\n\n      tr {\n        display: table-row;\n      }\n\n      tfoot {\n        display: table-footer-group;\n      }\n\n      .aui-table__cell--last-row-responsive {\n        td {\n          border-bottom: $aui-table-border-width solid $aui-table-border-color;\n          padding-bottom: $aui-table-cell-padding-y;\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/table/snippets/table-colored.html",
    "content": "<div class=\"aui-table aui-table--padded\">\n  <table>\n    <caption>Table caption</caption>\n    <thead>\n      <tr>\n        <th class=\"aui-table__cell--colored\">Header 1</th>\n        <th>Header 2</th>\n        <th>Header 3</th>\n        <th>Header 4</th>\n      </tr>\n    </thead>\n    <tr>\n      <td class=\"aui-table__cell--colored\">Row1, Column1</td>\n      <td>Row1, Column2</td>\n      <td>Row1, Column3</td>\n      <td>Row1, Column4</td>\n    </tr>\n    <tr>\n      <td class=\"aui-table__cell--colored\">Row2, Column1</td>\n      <td>Row2, Column2</td>\n      <td>Row2, Column3</td>\n      <td>Row2, Column4</td>\n    </tr>\n    <tr class=\"aui-table__cell--last-row\">\n      <td class=\"aui-table__cell--colored\">Row2, Column1</td>\n      <td>Row2, Column2</td>\n      <td>Row2, Column3</td>\n      <td>Row2, Column4</td>\n    </tr>\n  </table>\n</div>\n"
  },
  {
    "path": "src/table/snippets/table-nonsemantic.html",
    "content": "<div class=\"aui-table-nonsemnatic\">\n  <div class=\"aui-table-nonsemnatic__wrap\">\n    <div class=\"aui-table-nonsemnatic__row aui-table-nonsemnatic__row--header\">\n      <div class=\"aui-table-nonsemnatic__cell aui-table-nonsemnatic__cell--header\">\n        Header 1\n      </div>\n      <div class=\"aui-table-nonsemnatic__cell aui-table-nonsemnatic__cell--header\">\n        Header 2\n      </div>\n      <div class=\"aui-table-nonsemnatic__cell aui-table-nonsemnatic__cell--header\">\n        Header 3\n      </div>\n      <div class=\"aui-table-nonsemnatic__cell aui-table-nonsemnatic__cell--header\">\n        Header 4\n      </div>\n    </div>\n    <div class=\"aui-table-nonsemnatic__row\">\n      <div class=\"aui-table-nonsemnatic__cell\">\n        Row1 Column1\n      </div>\n      <div class=\"aui-table-nonsemnatic__cell\">\n        Row1 Column2\n      </div>\n      <div class=\"aui-table-nonsemnatic__cell\">\n        Row1 Column3\n      </div>\n      <div class=\"aui-table-nonsemnatic__cell\">\n        Row1 Column4\n      </div>\n    </div>\n    <div class=\"aui-table-nonsemnatic__row\">\n      <div class=\"aui-table-nonsemnatic__cell\">\n        Row2 Column1\n      </div>\n      <div class=\"aui-table-nonsemnatic__cell\">\n        Row2 Column2\n      </div>\n      <div class=\"aui-table-nonsemnatic__cell\">\n        Row2 Column3\n      </div>\n      <div class=\"aui-table-nonsemnatic__cell\">\n        Row2 Column4\n      </div>\n    </div>\n    <div class=\"aui-table-nonsemnatic__row\">\n      <div class=\"aui-table-nonsemnatic__cell\">\n        Row3 Column1\n      </div>\n      <div class=\"aui-table-nonsemnatic__cell\">\n        Row3 Column2\n      </div>\n      <div class=\"aui-table-nonsemnatic__cell\">\n        Row3 Column3\n      </div>\n      <div class=\"aui-table-nonsemnatic__cell\">\n        Row3 Column4\n      </div>\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "src/table/snippets/table-responsive.html",
    "content": "<div class=\"aui-table aui-table--responsive\">\n  <table>\n    <caption>Table caption</caption>\n    <thead>\n      <tr>\n        <th>Header 1</th>\n        <th>Header 2</th>\n        <th>Header 3</th>\n        <th>Header 4</th>\n      </tr>\n    </thead>\n    <tr>\n      <td data-label=\"Header 1\">Row1, Column1</td>\n      <td data-label=\"Header 2\">Row1, Column2</td>\n      <td data-label=\"Header 3\">Row1, Column3</td>\n      <td data-label=\"Header 4\">Row1, Column4</td>\n    </tr>\n    <tr>\n      <td data-label=\"Header 1\">Row2, Column1</td>\n      <td data-label=\"Header 2\">Row2, Column2</td>\n      <td data-label=\"Header 3\">Row2, Column3</td>\n      <td data-label=\"Header 4\">Row2, Column4</td>\n    </tr>\n    <tr class=\"aui-table__cell--last-row-responsive\">\n      <td data-label=\"Header 1\">Row3, Column1</td>\n      <td data-label=\"Header 2\">Row3, Column2</td>\n      <td data-label=\"Header 3\">Row3, Column3</td>\n      <td data-label=\"Header 4\">Row3, Column4</td>\n    </tr>\n  </table>\n</div>\n"
  },
  {
    "path": "src/table/snippets/table-stretched-responsive.html",
    "content": "<div class=\"aui-table aui-table--stretched aui-table--responsive\">\n  <table>\n    <caption>Table caption</caption>\n    <thead>\n      <tr>\n        <th>Header 1</th>\n        <th>Header 2</th>\n        <th>Header 3</th>\n        <th>Header 4</th>\n      </tr>\n    </thead>\n    <tr>\n      <td data-label=\"Header 1\">Row1, Column1</td>\n      <td data-label=\"Header 2\">Row1, Column2</td>\n      <td data-label=\"Header 3\">Row1, Column3</td>\n      <td data-label=\"Header 4\">Row1, Column4</td>\n    </tr>\n    <tr>\n      <td data-label=\"Header 1\">Row2, Column1</td>\n      <td data-label=\"Header 2\">Row2, Column2</td>\n      <td data-label=\"Header 3\">Row2, Column3</td>\n      <td data-label=\"Header 4\">Row2, Column4</td>\n    </tr>\n    <tr class=\"aui-table__cell--last-row-responsive\">\n      <td data-label=\"Header 1\">Row3, Column1</td>\n      <td data-label=\"Header 2\">Row3, Column2</td>\n      <td data-label=\"Header 3\">Row3, Column3</td>\n      <td data-label=\"Header 4\">Row3, Column4</td>\n    </tr>\n  </table>\n</div>\n"
  },
  {
    "path": "src/table/snippets/table-stretched.html",
    "content": "<div class=\"aui-table aui-table--stretched\">\n  <table>\n    <caption>Table caption</caption>\n    <thead>\n      <tr>\n        <th>Header 1</th>\n        <th>Header 2</th>\n        <th>Header 3</th>\n        <th>Header 4</th>\n      </tr>\n    </thead>\n    <tfoot>\n      <tr class=\"aui-table__cell--last-row\">\n        <td>Footer 1</td>\n        <td>Footer 2</td>\n        <td>Footer 3</td>\n        <td>Footer 4</td>\n      </tr>\n    </tfoot>\n    <tr>\n      <td>Row1, Column1</td>\n      <td>Row1, Column2</td>\n      <td>Row1, Column3</td>\n      <td>Row1, Column4</td>\n    </tr>\n    <tr>\n      <td>Row2, Column1</td>\n      <td>Row2, Column2</td>\n      <td>Row2, Column3</td>\n      <td>Row2, Column4</td>\n    </tr>\n    <tr>\n      <td>Row2, Column1</td>\n      <td>Row2, Column2</td>\n      <td>Row2, Column3</td>\n      <td>Row2, Column4</td>\n    </tr>\n  </table>\n</div>\n"
  },
  {
    "path": "src/textfield/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **textfield** component is … (text follows)\n\n### To include an AUI **textfield** component:\n"
  },
  {
    "path": "src/textfield/_textfield-themes.scss",
    "content": ".aui-textfield {\n  /**\n   * Theme: light\n   */\n  &.aui-theme-light {\n    $aui-textfield-color: $aui-color-gray95;\n    $aui-textfield-color-secondary: $aui-color-gray50;\n    $aui-textfield-border: $aui-color-gray50;\n    $aui-textfield-border-hover: $aui-color-black;\n    $aui-textfield-border-focus: $aui-color-black;\n    $aui-textfield-border-dirty: $aui-color-black;\n    $aui-textfield-valid-tick-color: $aui-color-black;\n\n    stroke: $aui-textfield-color;\n\n    .aui-textfield__field {\n      border-color: $aui-textfield-border;\n    }\n\n    .aui-textfield__input {\n      color: $aui-field-placeholder-color-light;\n    }\n\n    .aui-textfield__label {\n      color: $aui-field-placeholder-color-light;\n    }\n\n    .aui-textfield__focus-line {\n      background: $aui-textfield-border-hover;\n    }\n\n    .aui-textfield__counter,\n    .aui-textfield__description,\n    .aui-textfield__error,\n    .aui-textfield__valid {\n      color: $aui-textfield-color-secondary;\n    }\n\n    .aui-textfield__valid {\n      &::before {\n        background: url('data:image/svg+xml,#{aui-svg-tick($aui-textfield-valid-tick-color)}') center center no-repeat;\n      }\n    }\n\n    .aui-textfield__error {\n      color: $aui-field-error-color;\n    }\n\n    /**\n     * States\n     */\n\n    // Hover state\n    &:not(.is-disabled):not(.is-invalid) {\n      .aui-textfield__field:hover {\n        border-bottom-color: $aui-textfield-border-hover;\n      }\n    }\n\n    // Focus state\n    &.is-focused {\n      .aui-textfield__field {\n        border-bottom-color: $aui-textfield-border-focus;\n      }\n    }\n\n    // Dirty state\n    &.is-dirty {\n      .aui-textfield__field {\n        border-bottom-color: $aui-textfield-border-dirty;\n      }\n      .aui-textfield__input {\n        color: $aui-textfield-color;\n      }\n    }\n\n    // Invalid state\n    &.is-invalid {\n      &,\n      &:not(.is-dirty) .aui-textfield__input,\n      .aui-textfield__counter,\n      .aui-textfield__label {\n        color: $aui-field-error-color;\n      }\n\n      .aui-textfield__field {\n        border-color: $aui-field-error-color;\n      }\n\n      .aui-textfield__focus-line {\n        background: $aui-field-error-color;\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/textfield/_textfield.scss",
    "content": "$aui-textfield-max-lines: 0 !default;\n$aui-textfield-icon-top-default: $aui-field-default-height * .5 !default; // Center with label\n$aui-textfield-color: $aui-color-gray20 !default;\n$aui-textfield-color-secondary: $aui-color-gray40 !default;\n$aui-textfield-border: $aui-color-gray50 !default;\n$aui-textfield-border-hover: $aui-color-gray50 !default;\n$aui-textfield-border-focus: $aui-color-black !default;\n$aui-textfield-border-dirty: $aui-color-black !default;\n$aui-textfield-valid-tick-color: $aui-color-black !default;\n\n$aui-textfield-input-padding-y: (8 / 16 * 1em) !default;\n\n$aui-textfield-floating-label-active-label-top: 0 !default;\n$aui-textfield-floating-label-active-label-opacity: 1 !default;\n$aui-textfield-floating-label-active-label-font-size: $aui-field-floating-label-font-size !default;\n\n//$aui-textfield-multiline-padding-top: (21 / 16 * 1em) !default;\n$aui-textfield-multiline-padding-top: (13 / 16 * 1em) !default;\n$aui-textfield-multiline-padding-x: (10 / 16 * 1em) !default;\n$aui-textfield-multiline-active-label-top: (10 / 16 * 1em) !default;\n$aui-textfield-multiline-active-label-font-size: $aui-field-floating-label-font-size !default;\n$aui-textfield-multiline-active-label-opacity: 1 !default;\n$aui-textfield-multiline-active-field-padding-top: (20 / 16 * 1em) !default;\n\n.aui-textfield {\n  display: block;\n  position: relative;\n  margin: 0;\n  padding: $aui-field-floating-label-padding 0 0;\n  font-size: 1rem;\n  line-height: $aui-field-line-height;\n  stroke: $aui-textfield-color;\n\n  &__input {\n    display: block;\n    margin: 0;\n    padding: $aui-textfield-input-padding-y 0;\n    width: 100%;\n    min-height: $aui-field-default-height;\n    font-family: $aui-font-default;\n    font-size: inherit;\n    font-weight: $aui-font-weight-normal;\n    line-height: inherit;\n    text-align: left;\n    color: $aui-field-placeholder-color;\n    background: none;\n    border: none;\n    transition: color $aui-field-transition-duration $aui-easing;\n    resize: none;\n    outline: 0;\n    border-radius: 0;\n    @if $aui-textfield-max-lines > 0 {\n      max-height: $aui-field-line-height * $aui-textfield-max-lines;\n    }\n  }\n\n  &__field {\n    position: relative;\n    border-bottom: 1px solid $aui-textfield-border;\n    transition-property: border, padding;\n    transition-duration: $aui-field-transition-duration;\n    transition-timing-function: $aui-easing;\n  }\n\n  &__label {\n    display: block;\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    color: $aui-field-placeholder-color;\n    font-size: $aui-textfield-floating-label-active-label-font-size;\n    font-weight: $aui-font-weight-normal;\n    text-align: left;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    pointer-events: none;\n    transition-property: top, font-size, color, opacity;\n    transition-duration: $aui-field-transition-duration;\n    transition-timing-function: $aui-easing;\n    pointer-events: none;\n\n    &-optional {\n      font-size: rem(13);\n      padding-left: 4px;\n      color: $aui-color-gray40;\n    }\n  }\n\n  // Focus line will be injected by JS\n  &__focus-line {\n    display: block;\n    position: relative;\n    width: 100%;\n    margin-top: -2px;\n    height: 1px;\n    background: $aui-textfield-border-hover;\n    opacity: 0;\n    transition-property: opacity, background;\n    transition-duration: $aui-field-transition-duration;\n  }\n\n  &__counter,\n  &__description,\n  &__error,\n  &__valid {\n    display: block;\n    color: $aui-textfield-color-secondary;\n    transition: color $aui-field-transition-duration linear;\n    margin-top: unit(2);\n    font-size: rem(13);\n    line-height: $aui-field-error-line-height;\n  }\n\n  &__counter {\n    position: relative;\n    height: $aui-field-error-line-height;\n  }\n\n  &__counter-value {\n    display: block;\n    position: absolute;\n    top: 0;\n    right: 0;\n  }\n\n  &__counter ~ &__description,\n  &__counter ~ &__error {\n    margin-top: $aui-field-error-line-height * -1;\n    padding-right: 4em;\n  }\n\n  &__valid {\n    position: relative;\n\n    &::before {\n      content: '';\n      display: inline-block;\n      margin-right: rem(16px);\n      width: 12px;\n      height: 12px;\n      background: url('data:image/svg+xml,#{aui-svg-tick($aui-textfield-valid-tick-color)}') center center no-repeat;\n\n      @include aui-respond-to('large') {\n        margin-right: unit(2);\n      }\n    }\n  }\n\n  &__error {\n    display: flex;\n    align-items: center;\n    font-size: rem(13);\n    color: $aui-field-error-color;\n\n    &::before {\n      content: '';\n      display: inline-block;\n      margin-right: rem(16px);\n      width: 24px;\n      min-width: 24px;\n      height: 24px;\n      background: url('data:image/svg+xml,#{aui-svg-caution($aui-field-error-color)}') center center no-repeat;\n\n      @include aui-respond-to('large') {\n        margin-right: unit(2);\n      }\n    }\n  }\n\n  .audiicon {\n    position: absolute;\n    top: $aui-textfield-icon-top-default;\n    left: 0;\n    transform: translateY(-50%);\n  }\n\n  .aui-js & {\n    padding-top: 0;\n\n    .aui-textfield__label {\n      top: $aui-field-label-y;\n      font-size: inherit;\n    }\n  }\n\n  /**\n   * Variant: floating-label\n   */\n  &.aui-textfield--floating-label &__field {\n    padding-top: $aui-field-floating-label-padding;\n  }\n\n  .aui-js &.aui-textfield--floating-label &__label {\n    top: $aui-field-label-y + $aui-field-floating-label-padding;\n    font-size: inherit;\n  }\n\n  /**\n   * Variant: multiline\n   */\n  &.aui-textfield--multiline {\n    transition-property: padding;\n    transition-duration: $aui-field-transition-duration;\n    transition-timing-function: $aui-easing;\n  }\n\n  &.aui-textfield--multiline &__field {\n    padding-top: $aui-textfield-multiline-active-field-padding-top;\n    border: 1px solid $aui-textfield-border;\n  }\n\n  &.aui-textfield--multiline &__label {\n    top: 10px;\n    left: 10px;\n  }\n\n  &.aui-textfield--multiline &__input {\n    padding-left: $aui-textfield-multiline-padding-x;\n    padding-right: $aui-textfield-multiline-padding-x;\n  }\n\n  .aui-js &.aui-textfield--multiline {\n    padding-top: $aui-textfield-multiline-padding-top;\n  }\n\n  .aui-js &.aui-textfield--multiline &__field {\n    padding-top: $aui-textfield-multiline-active-field-padding-top - $aui-textfield-multiline-padding-top;\n  }\n\n  .aui-js &.aui-textfield--multiline &__label {\n    top: 7px;\n  }\n\n  /**\n   * Variant: icon\n   */\n  &--icon {\n    .aui-textfield__input,\n    .aui-textfield__label {\n      padding-left: unit(12);\n\n      @include aui-respond-to(large) {\n        padding-left: unit(8);\n      }\n    }\n  }\n\n  /**\n   * States\n   */\n\n  // Hover state\n  &:not(.is-disabled):not(.is-invalid) {\n    .aui-textfield__field:hover {\n      border-bottom-color: $aui-textfield-border-hover;\n    }\n  }\n\n  // Focus state\n  &.is-focused {\n    .aui-textfield__label {\n      opacity: 0;\n    }\n\n    &.aui-textfield--floating-label .aui-textfield__label {\n      top: $aui-textfield-floating-label-active-label-top;\n      font-size: $aui-textfield-floating-label-active-label-font-size;\n      opacity: $aui-textfield-floating-label-active-label-opacity;\n    }\n\n    &.aui-textfield--multiline {\n      padding-top: 0;\n    }\n\n    &.aui-textfield--multiline .aui-textfield__field {\n      padding-top: $aui-textfield-multiline-active-field-padding-top;\n    }\n\n    &.aui-textfield--multiline .aui-textfield__label {\n      top: $aui-textfield-multiline-active-label-top;\n      font-size: $aui-textfield-multiline-active-label-font-size;\n      opacity: $aui-textfield-multiline-active-label-opacity;\n    }\n\n    .aui-textfield__field {\n      border-bottom-color: $aui-textfield-border-focus;\n    }\n\n    .aui-textfield__input {\n      outline: none;\n      box-shadow: none;\n    }\n\n    .aui-textfield__focus-line {\n      opacity: 1;\n    }\n  }\n\n  // Disabled state\n  &.is-disabled {\n    //opacity: $aui-field-disabled-opacity;\n    color: $aui-color-gray40;\n    cursor: not-allowed;\n\n    .aui-textfield__input {\n      cursor: not-allowed;\n      border-color: $aui-color-gray70;\n    }\n\n    .aui-textfield__label {\n      color: $aui-color-gray40;\n    }\n\n    .aui-textfield__focus-line {\n      opacity: 0;\n    }\n  }\n\n  // Dirty state\n  &.is-dirty {\n    .aui-textfield__label {\n      opacity: 0;\n    }\n\n    &.aui-textfield--floating-label .aui-textfield__label {\n      top: $aui-textfield-floating-label-active-label-top;\n      font-size: $aui-textfield-floating-label-active-label-font-size;\n      opacity: $aui-textfield-floating-label-active-label-opacity;\n    }\n\n    &.aui-textfield--multiline {\n      padding-top: 0;\n    }\n\n    &.aui-textfield--multiline .aui-textfield__field {\n      padding-top: $aui-textfield-multiline-active-field-padding-top;\n    }\n\n    &.aui-textfield--multiline .aui-textfield__label {\n      top: $aui-textfield-multiline-active-label-top;\n      font-size: $aui-textfield-multiline-active-label-font-size;\n      opacity: $aui-textfield-multiline-active-label-opacity;\n    }\n\n    .aui-textfield__field {\n      border-bottom-color: $aui-textfield-border-dirty;\n    }\n\n    .aui-textfield__input {\n      color: $aui-textfield-color;\n    }\n  }\n\n  // Invalid state\n  &.is-invalid {\n    &,\n    &:not(.is-dirty) .aui-textfield__input,\n    .aui-textfield__counter,\n    .aui-textfield__label {\n      color: $aui-field-error-color;\n    }\n\n    .aui-textfield__field {\n      border-color: $aui-field-error-color;\n    }\n\n    .aui-textfield__focus-line {\n      background: $aui-field-error-color;\n    }\n  }\n}\n"
  },
  {
    "path": "src/textfield/snippets/textfield-disabled.html",
    "content": "<div class=\"aui-textfield aui-js-textfield aui-textfield--floating-label\">\n  <div class=\"aui-textfield__field\">\n    <input class=\"aui-textfield__input\" type=\"text\" id=\"sample-textfield-disabled\" disabled>\n    <label class=\"aui-textfield__label\" for=\"sample-textfield-disabled\">Disabled</label>\n  </div>\n  <span class=\"aui-textfield__description\">If the customer doesn’t understand the label itself or is just unsure of its meaning, an additional description can help squash any uncertainty.</span>\n</div>\n"
  },
  {
    "path": "src/textfield/snippets/textfield-floating-label.html",
    "content": "<div class=\"aui-textfield aui-js-textfield aui-textfield--floating-label\">\n  <div class=\"aui-textfield__field\">\n    <input class=\"aui-textfield__input\" type=\"text\" id=\"sample-textfield-floating-label\">\n    <label class=\"aui-textfield__label\" for=\"sample-textfield-floating-label\">Label<span class=\"aui-textfield__label-optional\">(optional)</span></label>\n  </div>\n  <span class=\"aui-textfield__description\">If the customer doesn’t understand the label itself or is just unsure of its meaning, an additional description can help squash any uncertainty.</span>\n</div>\n"
  },
  {
    "path": "src/textfield/snippets/textfield-icon.html",
    "content": "<div class=\"aui-textfield aui-js-textfield aui-textfield--icon\">\n  <div class=\"aui-textfield__field\">\n    <svg class=\"audiicon\">\n      <use xlink:href=\"#audiicon-search-small\"></use>\n    </svg>\n    <input class=\"aui-textfield__input\" type=\"text\" id=\"sample-textfield-icon\">\n    <label class=\"aui-textfield__label\" for=\"sample-textfield-icon\">Search</label>\n  </div>\n  <span class=\"aui-textfield__description\">If the customer doesn’t understand the label itself or is just unsure of its meaning, an additional description can help squash any uncertainty.</span>\n</div>\n"
  },
  {
    "path": "src/textfield/snippets/textfield-invalid.html",
    "content": "<div class=\"aui-textfield aui-js-textfield aui-textfield--floating-label is-dirty is-invalid\">\n  <div class=\"aui-textfield__field\">\n    <input class=\"aui-textfield__input\" type=\"text\" id=\"sample-textfield-invalid\" value=\"Sample\">\n    <label class=\"aui-textfield__label\" for=\"sample-textfield-invalid\">Invalid</label>\n  </div>\n  <span class=\"aui-textfield__error\">Error messages that reassure users can make it easy for them to correct their mistakes and continue with the form.</span>\n</div>\n"
  },
  {
    "path": "src/textfield/snippets/textfield-multiline-counter.html",
    "content": "<div class=\"aui-textfield aui-js-textfield aui-textfield--multiline\" data-autosize data-count=\"160\">\n  <div class=\"aui-textfield__field\">\n    <textarea class=\"aui-textfield__input\" id=\"sample-textfield-counter\" name=\"name\" rows=\"3\"></textarea>\n    <label class=\"aui-textfield__label\" for=\"sample-textfield-counter\">Label</label>\n  </div>\n  <span class=\"aui-textfield__description\">If the customer doesn’t understand the label itself or is just unsure of its meaning, an additional description can help squash any uncertainty.</span>\n</div>\n"
  },
  {
    "path": "src/textfield/snippets/textfield-multiline-disabled.html",
    "content": "<div class=\"aui-textfield aui-js-textfield aui-textfield--multiline\" data-autosize>\n  <div class=\"aui-textfield__field\">\n    <textarea class=\"aui-textfield__input\" id=\"sample-textfield-multiline-disabled\" disabled name=\"name\" rows=\"3\"></textarea>\n    <label class=\"aui-textfield__label\" for=\"sample-textfield-multiline-disabled\">Disabled<span class=\"aui-textfield__label-optional\">(optional)</span></label>\n  </div>\n  <span class=\"aui-textfield__description\">If the customer doesn’t understand the label itself or is just unsure of its meaning, an additional description can help squash any uncertainty.</span>\n</div>\n"
  },
  {
    "path": "src/textfield/snippets/textfield-multiline-invalid.html",
    "content": "<div class=\"aui-textfield aui-js-textfield aui-textfield--multiline is-dirty is-invalid\" data-autosize>\n  <div class=\"aui-textfield__field\">\n    <textarea class=\"aui-textfield__input\" id=\"sample-textfield-multiline-invalid\" name=\"name\" rows=\"3\">Sample</textarea>\n    <label class=\"aui-textfield__label\" for=\"sample-textfield-multiline-invalid\">Invalid</label>\n  </div>\n  <span class=\"aui-textfield__error\">Error messages that reassure users can make it easy for them to correct their mistakes and continue with the form.</span>\n</div>\n"
  },
  {
    "path": "src/textfield/snippets/textfield-multiline.html",
    "content": "<div class=\"aui-textfield aui-js-textfield aui-textfield--multiline\" data-autosize>\n  <div class=\"aui-textfield__field\">\n    <textarea class=\"aui-textfield__input\" id=\"sample-textfield-multiline\" name=\"name\" rows=\"3\"></textarea>\n    <label class=\"aui-textfield__label\" for=\"sample-textfield-multiline\">Label<span class=\"aui-textfield__label-optional\">(optional)</span></label>\n  </div>\n  <span class=\"aui-textfield__description\">If the customer doesn’t understand the label itself or is just unsure of its meaning, an additional description can help squash any uncertainty.</span>\n</div>\n"
  },
  {
    "path": "src/textfield/snippets/textfield-valid.html",
    "content": "<div class=\"aui-textfield aui-js-textfield aui-textfield--floating-label is-dirty is-valid\">\n  <div class=\"aui-textfield__field\">\n    <input class=\"aui-textfield__input\" type=\"text\" id=\"sample-textfield-valid\" value=\"Sample\">\n    <label class=\"aui-textfield__label\" for=\"sample-textfield-valid\">Label</label>\n  </div>\n  <span class=\"aui-textfield__valid\">Well done, young padawan.</span>\n</div>\n"
  },
  {
    "path": "src/textfield/snippets/textfield.html",
    "content": "<div class=\"aui-textfield aui-js-textfield\">\n  <div class=\"aui-textfield__field\">\n    <input class=\"aui-textfield__input\" type=\"text\" id=\"sample-textfield\">\n    <label class=\"aui-textfield__label\" for=\"sample-textfield\">Label<span class=\"aui-textfield__label-optional\">(optional)</span></label>\n  </div>\n  <span class=\"aui-textfield__description\">If the customer doesn’t understand the label itself or is just unsure of its meaning, an additional description can help squash any uncertainty.</span>\n</div>\n"
  },
  {
    "path": "src/textfield/textfield.js",
    "content": "import Component from '../component/component';\n\nconst SELECTOR_COMPONENT = '.aui-js-textfield';\nconst CLASS_FIELD = 'aui-textfield__field';\nconst CLASS_INPUT = 'aui-textfield__input';\nconst CLASS_LABEL = 'aui-textfield__label';\nconst CLASS_FOCUS_LINE = 'aui-textfield__focus-line';\nconst CLASS_COUNTER = 'aui-textfield__counter';\nconst CLASS_COUNTER_VALUE = 'aui-textfield__counter-value';\nconst CLASS_IS_FOCUS = 'is-focused';\nconst CLASS_IS_DIRTY = 'is-dirty';\nconst CLASS_IS_INVALID = 'is-invalid';\nconst CLASS_IS_DISABLED = 'is-disabled';\nconst CLASS_IS_EQUAL_MAX_CHARS = 'is-equal-max-length';\nconst CLASS_IS_GREATER_MAX_CHARS = 'is-greater-max-length';\nconst ATTR_AUTOSIZE = 'data-autosize';\n\n/**\n * Class constructor for Textfield AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Textfield extends Component {\n\n  /**\n   * Upgrades all Textfield AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Textfield(element));\n      }\n    });\n    return components;\n  };\n\n  constructor(element) {\n    super(element);\n  }\n\n  init() {\n    super.init();\n\n    this._input = this._element.querySelector(`.${CLASS_INPUT}`);\n    this._input.addEventListener('input', this._inputHandler = (event) => this._onInput(event));\n    this._input.addEventListener('focus', this._focusHandler = (event) => this._onFocus(event));\n    this._input.addEventListener('blur', this._blurHandler = (event) => this._onBlur(event));\n    this._input.addEventListener('change', this._changeHandler = (event) => this._onChange(event));\n    this._input.addEventListener('reset', this._resetHandler = (event) => this._onReset(event));\n\n    // Insert counter if data attribute 'count' is present:\n    if (this._element.getAttribute('data-count')) {\n      this._maxChars = parseInt(this._element.getAttribute('data-count')) || 0;\n      this._label = this._element.querySelector(`.${CLASS_FIELD}`);\n      this._counter = document.createElement('span');\n      this._counter.classList.add(CLASS_COUNTER);\n      this._label.parentNode.insertBefore(this._counter, this._label.nextSibling);\n      this._counterValue = document.createElement('span');\n      this._counterValue.classList.add(CLASS_COUNTER_VALUE);\n      this._counterValue.innerHTML = this._maxChars;\n      this._counter.appendChild(this._counterValue);\n      this._hasCounter = true;\n    }\n\n    // Insert thick focus line after label element:\n    this._label = this._element.querySelector(`.${CLASS_LABEL}`);\n    let focusLine = document.createElement('span');\n    focusLine.classList.add(CLASS_FOCUS_LINE);\n    this._label.parentNode.insertBefore(focusLine, this._label.nextSibling);\n\n    // If textarea should adjust height to content\n    if (this._element.hasAttribute(ATTR_AUTOSIZE) && this._element.getAttribute(ATTR_AUTOSIZE) !== 'false') {\n      let style = window.getComputedStyle(this._input);\n      this._inputPadding = parseInt(style.paddingTop) + parseInt(style.paddingBottom) || 0;\n      this._inputBorder = parseInt(style.borderTop) + parseInt(style.borderBottom) || 0;\n      this._input.addEventListener('keyup', this._keyupHandler = event => this._onKeyup(event));\n      this._autosize = true;\n    }\n\n    this.updateClasses();\n  }\n\n  update() {\n    this.updateClasses();\n    this.updateCounter();\n    if (this._autosize) {\n      this.adjustHeightToContent();\n    }\n  }\n\n  updateClasses() {\n    this.checkDisabled();\n    this.checkDirty();\n    this.checkFocus();\n  }\n\n  updateCounter() {\n    if (this._counterValue) {\n      let numChars = this._input.value.length;\n      let remainingChars = this._maxChars - numChars;\n      this._counterValue.innerHTML = remainingChars;\n\n      if (remainingChars === 0) {\n        this._element.classList.add(CLASS_IS_EQUAL_MAX_CHARS);\n      } else {\n        this._element.classList.remove(CLASS_IS_EQUAL_MAX_CHARS);\n      }\n\n      if (remainingChars < 0) {\n        this._element.classList.add(CLASS_IS_GREATER_MAX_CHARS);\n        this._element.classList.add(CLASS_IS_INVALID);\n      } else {\n        this._element.classList.remove(CLASS_IS_GREATER_MAX_CHARS);\n        this._element.classList.remove(CLASS_IS_INVALID);\n      }\n    }\n  }\n\n  /**\n   * Check the disabled state and update field accordingly.\n   */\n  checkDisabled() {\n    if (this._input.disabled) {\n      this._element.classList.add(CLASS_IS_DISABLED);\n    } else {\n      this._element.classList.remove(CLASS_IS_DISABLED);\n    }\n  }\n\n  /**\n   * Check the dirty state and update field accordingly.\n   */\n  checkDirty() {\n    if (this._input.value && this._input.value.length > 0) {\n      this._element.classList.add(CLASS_IS_DIRTY);\n    } else {\n      this._element.classList.remove(CLASS_IS_DIRTY);\n    }\n  }\n\n  /**\n   * Check the focus state and update field accordingly.\n   */\n  checkFocus() {\n    if (Boolean(this._element.querySelector(':focus'))) {\n      this._element.classList.add(CLASS_IS_FOCUS);\n    } else {\n      this._element.classList.remove(CLASS_IS_FOCUS);\n    }\n  }\n\n  /**\n   * Resize textarea\n   */\n  adjustHeightToContent() {\n    let htmlTop = window.pageYOffset;\n    let bodyTop = document.body.scrollTop;\n    let originalHeight = this._input.style.height;\n\n    this._input.style.height = 'auto';\n    if (this._input.scrollHeight === 0) {\n      // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM.\n      this._input.style.height = originalHeight;\n      return;\n    }\n    this._input.style.height = `${this._input.scrollHeight + this._inputBorder}px`;\n\n    // prevents scroll position jump\n    document.documentElement.scrollTop = htmlTop;\n    document.body.scrollTop = bodyTop;\n  }\n\n  /**\n   * Disable text field.\n   */\n  disable() {\n    this._input.disabled = true;\n    this.updateClasses();\n  }\n\n  /**\n   * Dispose component\n   */\n  dispose() {\n    super.dispose();\n\n    this._input.removeEventListener('input', this._inputHandler);\n    this._input.removeEventListener('focus', this._focusHandler);\n    this._input.removeEventListener('blur', this._blurHandler);\n    this._input.removeEventListener('change', this._changeHandler);\n    this._input.removeEventListener('reset', this._resetHandler);\n\n    super.removeChild(this._element.querySelector(`.${CLASS_FOCUS_LINE}`));\n    super.removeChild(this._element.querySelector(`.${CLASS_COUNTER}`));\n  }\n\n  /**\n   * Event Handler\n   */\n\n  _onInput(event) {\n    this.update();\n  }\n\n  _onFocus(event) {\n    this.update();\n  }\n\n  _onBlur(event) {\n    this.update();\n  }\n\n  _onChange(event) {\n    this.update();\n  }\n\n  _onReset(event) {\n    this.update();\n  }\n\n  _onKeyup(event) {\n    this.updateCounter();\n    if (this._autosize) {\n      this.adjustHeightToContent();\n    }\n  }\n\n  /**\n   * Getter and Setter\n   */\n\n  get input() {\n    return this._input;\n  }\n\n  get autoSize() {\n    return this._autosize;\n  }\n\n  set autoSize(value) {\n    return this._autosize = Boolean(value);\n  }\n}\n"
  },
  {
    "path": "src/tooltip/README.md",
    "content": "## Introduction\n\nThe Audi UI (AUI) **tooltip** component is an enhanced version of the standard HTML tooltip as produced by the `title` attribute. A tooltip consists of text and/or an image that clearly communicates additional information about an element when the user hovers over or, in a touch-based UI, touches the element. The AUI tooltip component is pre-styled to provide a vivid, attractive visual element that displays related but typically non-essential content, e.g., a definition, clarification, or brief instruction.\n\nTooltips are a ubiquitous feature of most user interfaces, regardless of a site's content or function. Their design and use is an important factor in the overall user experience. See the tooltip component's [Audi UI specifications page](http://www.audi.com/) for details.\n\n### To include an AUI **tooltip** component:\n\n&nbsp;1. Code an element, such as a `<div>`, `<p>`, or `<span>`, and style it as desired; this will be the tooltip's target. Include an `id` attribute and unique value to link the container to its tooltip.\n```html\n<p id=\"tooltip-1\">HTML</p>\n```\n&nbsp;2. Following the target element, code a second element, such as a `<div>`, `<p>`, or `<span>`; this will be the tooltip itself. Include a `for` attribute whose value matches that of the target's `id`.\n```html\n<p id=\"tooltip-1\">HTML</p>\n<span for=\"tooltip-1\">HyperText Markup Language</span>\n```\n&nbsp;3. Add one or more AUI classes, separated by spaces, to the tooltip element using the `class` attribute.\n```html\n<p id=\"tooltip-1\">HTML</p>\n<span for=\"tooltip-1\" class=\"aui-tooltip aui-js-tooltip\">HyperText Markup Language</span>\n```\n\nThe tooltip component is ready for use.\n\n#### Examples\n\nA target with a simple text tooltip.\n```html\n<p>A <span id=\"sample-tooltip-1\">tooltip</span> consists of text and/or an image.</p>\n<span class=\"aui-tooltip aui-js-tooltip\" for=\"sample-tooltip-1\">\n  <span class=\"aui-tooltip__text\">Tooltips are a ubiquitous feature of most user interfaces.</span>\n</span>\n```\n\n## Configuration options\n\nThe AUI CSS classes apply various predefined visual enhancements to the tooltip. The table below lists the available classes and their effects.\n\n| AUI class | Effect | Remarks |\n|-----------|--------|---------|\n| `aui-tooltip` | Defines a container as an AUI tooltip | Required on tooltip container element |\n| `aui-js-tooltip` | Assigns basic AUI behavior to tooltip element | Required |\n| `aui-tooltip__text` | Defines element as text | Optional |\n| `aui-tooltip__media` | Defines element as media such as an image | Optional |\n| `aui-tooltip--dark` | Use dark theme | Optional |\n"
  },
  {
    "path": "src/tooltip/_tooltip.scss",
    "content": "$aui-tooltip-open-duration: .25s;\n$aui-tooltip-close-duration: .15s;\n\n.aui-tooltip {\n  pointer-events: none;\n  display: block;\n  position: fixed;\n  top: -1000px;\n  left: -1000px;\n  max-width: $aui-layout-min-width;\n  font-size: .875rem;\n  line-height: unit(5);\n  color: $aui-color-body;\n  background: $aui-color-white;\n  @include shadow;\n  opacity: 0;\n  visibility: hidden;\n  transition-property: opacity, visibility;\n  transition-duration: $aui-tooltip-close-duration;\n  transition-timing-function: linear;\n\n  &__triangle {\n    display: block;\n    position: absolute;\n    top: 0;\n    left: 50%;\n    background: inherit;\n\n    &::after {\n      $_size: 16px;\n      content: '';\n      display: block;\n      position: absolute;\n      left: #{$_size / -2};\n      top: #{$_size / -2};\n      width: $_size;\n      height: $_size;\n      transform: rotate(45deg);\n      transform-origin: center;\n      background: inherit;\n    }\n  }\n\n  &__text {\n    display: inline-block;\n    padding: unit(3) unit(5);\n  }\n\n  &__media {\n    position: relative;\n    z-index: 1;\n    display: block;\n    width: 100%;\n    height: auto;\n  }\n\n  /**\n   * Variant: Dark\n   */\n  &--dark {\n    color: $aui-color-white;\n    background: $aui-color-gray30;\n  }\n\n  /**\n   * States\n   */\n  &.is-active {\n    opacity: 1;\n    visibility: visible;\n    transition-duration: $aui-tooltip-open-duration;\n    z-index: $aui-zindex-tooltip;\n  }\n\n  &.is-top &__triangle {\n    top: auto;\n    bottom: 0;\n  }\n}\n"
  },
  {
    "path": "src/tooltip/snippets/tooltip-dark.html",
    "content": "<p>\n  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis nostrud <a id=\"sample-tooltip-dark\" href=\"#\" class=\"aui-textlink\">exercitation ullamco</a> laborisnisi ut aliquip ex ea commodo consequat.\n</p>\n<span class=\"aui-tooltip aui-js-tooltip aui-tooltip--dark\" for=\"sample-tooltip-dark\"><span class=\"aui-tooltip__text\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</span></span>\n"
  },
  {
    "path": "src/tooltip/snippets/tooltip-image-dark.html",
    "content": "<p>\n  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis nostrud <a id=\"sample-tooltip-image-dark\" href=\"#\" class=\"aui-textlink\">exercitation ullamco</a> laboris nisi ut aliquip ex ea commodo consequat.\n</p>\n<span class=\"aui-tooltip aui-js-tooltip aui-tooltip--dark\" for=\"sample-tooltip-image-dark\"><img class=\"aui-tooltip__media\" src=\"https://www.audi.com/content/dam/gbp2/experience-audi/models-and-technology/concept-cars/2021/skysphere_2021_3371_sRGB_1920x1080.jpg\" alt=\"\" /><span class=\"aui-tooltip__text\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</span></span>\n"
  },
  {
    "path": "src/tooltip/snippets/tooltip-image.html",
    "content": "<p>\n  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud <a id=\"sample-tooltip-image\" href=\"#\" class=\"aui-textlink\">exercitation ullamco</a> laboris nisi ut aliquip ex ea commodo consequat.\n</p>\n<span class=\"aui-tooltip aui-js-tooltip\" for=\"sample-tooltip-image\"><img class=\"aui-tooltip__media\" src=\"https://www.audi.com/content/dam/gbp2/experience-audi/models-and-technology/concept-cars/2021/skysphere_2021_3371_sRGB_1920x1080.jpg\" alt=\"\" /><span class=\"aui-tooltip__text\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</span></span>\n"
  },
  {
    "path": "src/tooltip/snippets/tooltip.html",
    "content": "<p>\n  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud <a id=\"sample-tooltip\" href=\"#\" class=\"aui-textlink\">exercitation ullamco</a> laboris nisi ut aliquip ex ea commodo consequat.\n</p>\n<span class=\"aui-tooltip aui-js-tooltip\" for=\"sample-tooltip\"><span class=\"aui-tooltip__text\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</span></span>\n"
  },
  {
    "path": "src/tooltip/tooltip.js",
    "content": "import Component from '../component/component';\n\nconst SELECTOR_COMPONENT = '.aui-js-tooltip';\nconst CLASS_TRIANGLE = 'aui-tooltip__triangle';\nconst CLASS_IS_UPGRADED = 'is-upgraded';\nconst CLASS_IS_ACTIVE = 'is-active';\nconst CLASS_IS_TOP = 'is-top';\nconst OFFSET_VIEWPORT_X = 10;\nconst OFFSET_TARGET_TOP = 12;\nconst OFFSET_TARGET_BOTTOM = 12;\nconst OPEN_DELAY = 400;\n\n/**\n * Class constructor for Tooltip AUI component.\n * Implements AUI component design pattern defined at:\n * https://github.com/...\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nexport default class Tooltip extends Component {\n\n  /**\n   * Upgrades all Tooltip AUI components.\n   * @returns {Array} Returns an array of all newly upgraded components.\n   */\n  static upgradeElements() {\n    let components = [];\n    Array.from(document.querySelectorAll(SELECTOR_COMPONENT)).forEach(element => {\n      if (!Component.isElementUpgraded(element)) {\n        components.push(new Tooltip(element));\n      }\n    });\n    return components;\n  };\n\n  /**\n   * Initialize component\n   */\n  init() {\n    super.init();\n\n    let forId = this._element.getAttribute('for');\n\n    if (forId) {\n      this._trigger = document.getElementById(forId);\n    }\n\n    if (this._trigger) {\n      // Add triangle shape\n      this._triangle = document.createElement('span');\n      this._triangle.classList.add(CLASS_TRIANGLE);\n      this._element.appendChild(this._triangle);\n\n      // Prevent accidental text selection on Android\n      if (!this._trigger.hasAttribute('tabindex')) {\n        this._trigger.setAttribute('tabindex', '0');\n      }\n\n      this._trigger.addEventListener('mouseenter', this._boundMouseenter = (event) => this._onTriggerEnter(event));\n      this._trigger.addEventListener('mouseleave', this._boundMouseleave = (event) => this._onTriggerLeave(event));\n      this._trigger.addEventListener('focusin', this._boundfocusin = (event) => this._onTriggerEnter(event));\n      this._trigger.addEventListener('focusout', this._boundfocusout = (event) => this._onTriggerLeave(event));\n      this._trigger.addEventListener('touchstart', this._boundTouchstart = (event) => this._onTriggerEnter(event));\n      window.addEventListener('touchend', this._boundTouchendWindow = (event) => this._onTriggerLeaveOutside(event));\n    }\n  }\n\n  /**\n   * Dispose component\n   */\n  dispose() {\n    this._trigger.removeEventListener('mouseenter', this._boundMouseenter);\n    this._trigger.removeEventListener('mouseleave', this._boundMouseleave);\n    this._trigger.removeEventListener('mousemove', this._boundMouseMove);\n    this._trigger.removeEventListener('focusin', this._boundfocusin);\n    this._trigger.removeEventListener('focusout', this._boundfocusout);\n    this._trigger.removeEventListener('touchstart', this._boundTouchstart);\n    window.removeEventListener('touchend', this._boundTouchendWindow);\n    window.removeEventListener('scroll', this._boundScrollWindow);\n\n    this._element.classList.remove(CLASS_IS_TOP, CLASS_IS_ACTIVE, CLASS_IS_UPGRADED);\n    this._element.removeAttribute('style');\n    this._element.removeChild(this._triangle);\n  }\n\n  /**\n   * Open tooltip\n   * @param {HTMLElement} trigger element that opens the tooltip.\n   * @param {number} clientX the x-coordinate of trigger (mouse/touch).\n   */\n  open(trigger, clientX) {\n    if (!trigger) {\n      return;\n    }\n\n    const rect = trigger.getBoundingClientRect();\n    this._element.style.left = `0px`;\n    this._element.style.top = `0px`;\n    clientX = clientX || rect.left + rect.width / 2;\n    const triggerX = clientX - rect.left;\n    const yTop = rect.top - this._element.offsetHeight - OFFSET_TARGET_TOP;\n    const yBottom = rect.bottom + OFFSET_TARGET_BOTTOM + 2;\n    let x = rect.left + rect.width / 2 - this._element.offsetWidth / 2;\n    let y = yBottom;\n    let triangleX = 0;\n\n    this._element.classList.remove(CLASS_IS_TOP);\n\n    x = rect.left + triggerX - this._element.offsetWidth / 2;\n\n    if (x < OFFSET_VIEWPORT_X) {\n      x = OFFSET_VIEWPORT_X;\n    }\n\n    // If tooltip would be out of viewport on the right\n    if (x + this._element.offsetWidth > window.innerWidth - OFFSET_VIEWPORT_X) {\n      x = window.innerWidth - OFFSET_VIEWPORT_X - this._element.offsetWidth;\n    }\n\n    // If viewport height isn't large enough, place tooltip on top if possible\n    if (yBottom + this._element.offsetHeight > window.innerHeight - OFFSET_VIEWPORT_X) {\n      y = yTop;\n      this._element.classList.add(CLASS_IS_TOP);\n    }\n\n    triangleX = triggerX + rect.left - x;\n\n    this._element.classList.add(CLASS_IS_ACTIVE);\n    this._element.style.left = `${x}px`;\n    this._element.style.top = `${y}px`;\n\n    this._triangle.style.left = `${triangleX}px`;\n\n    this._scrolled = false;\n    window.addEventListener('scroll', this._boundScrollWindow = (event) => this._onScrollWindow(event));\n  }\n\n  /**\n   * Close tooltip.\n   */\n  close() {\n    clearTimeout(this.openTimeout);\n    window.removeEventListener('scroll', this._boundScrollWindow);\n    this._element.classList.remove(CLASS_IS_ACTIVE);\n  }\n\n  /**\n   * Handle enter event.\n   * @param {Event} event that fired.\n   */\n  _onTriggerEnter(event) {\n    // this.open(event.target, event.clientX);\n    this.openPositionX = event.clientX;\n    this._trigger.addEventListener('mousemove', this._boundMouseMove = (event) => this._onTriggerMove(event));\n\n    clearTimeout(this.openTimeout);\n    this.openTimeout = setTimeout(() => {\n      this._trigger.removeEventListener('mousemove', this._boundMouseMove);\n      this.open(event.target, this.openPositionX);\n    }, OPEN_DELAY);\n  }\n\n  /**\n   * Handle mousemove event.\n   * @param {Event} event that fired.\n   */\n  _onTriggerMove(event) {\n    this.openPositionX = event.clientX;\n  }\n\n  /**\n   * Handle leave event.\n   * @param {Event} event that fired.\n   */\n  _onTriggerLeave(event) {\n    this.close();\n  }\n\n  /**\n   * Handle leave outside event.\n   * @param {Event} event that fired.\n   */\n  _onTriggerLeaveOutside(event) {\n    console.log('leaveoutside', event);\n    if (!this._element.contains(event.target) && !this._trigger.contains(event.target)) {\n      console.log('-> close');\n      this.close();\n    };\n  }\n\n  /**\n   * Handle scroll event.\n   * @param {Event} event that fired.\n   */\n  _onScrollWindow(event) {\n    window.removeEventListener('scroll', this._boundScrollWindow);\n    if (!this._scrolled) {\n      this.close();\n      this._scrolled = true;\n    }\n  }\n}\n"
  },
  {
    "path": "src/typography/README.md",
    "content": "---\ntitle: Typography\n---\n\n## Introduction\n\nThe Audi UI (AUI) **typography** component is … (text follows)\n\n### To include an AUI **typography** component:\n\n```html\n<!-- Example follows ... -->\n```\n"
  },
  {
    "path": "src/typography/_typography.scss",
    "content": "html {\n  @include aui-responsive-type(0, 1.75);\n}\n\nbody {\n  font-family: $aui-font-default;\n  font-weight: $aui-font-weight-light;\n  color: $aui-color-body;\n}\n\n.aui-headline {\n  &-1,\n  &-2,\n  &-3,\n  &-4,\n  &-5 {\n    font-family: $aui-font-extended;\n    font-variation-settings: $aui-font-extended-width;\n    font-weight: $aui-font-weight-normal;\n    letter-spacing: -0.015em;\n\n    &--bold {\n      font-weight: $aui-font-weight-bold;\n    }\n  }\n\n  &-6 {\n    font-family: $aui-font-default;\n  }\n\n  &-1 {\n    @include aui-responsive-type(8, 1.1);\n    font-weight: $aui-font-weight-bold;\n    color: $aui-color-black;\n\n    &--normal {\n      font-weight: $aui-font-weight-normal;\n    }\n  }\n\n  .aui-color-text-light &-1 {\n    color: $aui-color-white;\n  }\n\n  &-2 {\n    @include aui-responsive-type(5, 1.2);\n  }\n\n  &-3 {\n    @include aui-responsive-type(2, 1.2);\n  }\n\n  &-4 {\n    @include aui-responsive-type(1, 1.2);\n  }\n\n  &-5 {\n    @include aui-responsive-type(0, 1.3333);\n  }\n\n  &-6 {\n    @include aui-responsive-type(0, 1.5);\n    font-weight: $aui-font-weight-bold;\n\n    &--normal {\n      font-weight: $aui-font-weight-normal;\n    }\n  }\n}\n\n.aui-shortread {\n  @include aui-responsive-type(0, 1.5);\n}\n\n.aui-color-text-light {\n  .aui-accentuated {\n    &::before {\n      border-top-color: $aui-color-white;\n    }\n  }\n}\n\n.aui-caption {\n  @include aui-responsive-type(-1, 1.5);\n}\n\n.aui-big {\n  @include aui-responsive-type(1, 1.75);\n}\n\n.aui-small {\n  @include aui-responsive-type(-2, 1.5);\n}\n\n.aui-blockquote {\n  margin: 0;\n  font-weight: normal;\n  @include aui-responsive-type(1, 1.5);\n}\n\n.aui-textlink {\n  padding-bottom: 0.06125em;\n  border-bottom: 1px solid $aui-color-gray50;\n  color: inherit;\n  font-weight: $aui-font-weight-normal;\n  transition: color 0.3s linear, border 0.3s linear;\n\n  &:hover {\n    color: $aui-color-black;\n    border-bottom-color: $aui-color-black;\n  }\n\n  &:focus {\n    outline: none;\n  }\n}\n\n.aui-color-text-light {\n  .aui-textlink {\n    border-bottom-color: rgba(#fff, 0.3);\n\n    &:hover {\n      color: $aui-color-white;\n      border-bottom-color: $aui-color-white;\n    }\n  }\n}\n"
  },
  {
    "path": "src/typography/snippets/headline-1.html",
    "content": "<!-- Headline 1; You can use a headline tag of different order (h1, h2, … h6) if necessary -->\n<h1 class=\"aui-headline-1\">Headline 1<br>second line</h1>\n<br />\n<h1 class=\"aui-headline-1 aui-headline-1--normal\">Headline 1<br>second line</h1>\n"
  },
  {
    "path": "src/typography/snippets/headline-2.html",
    "content": "<!-- Headline 2; You can use a headline tag of different order (h1, h2, … h6) if necessary -->\n<h1 class=\"aui-headline-2 aui-headline-2--bold\">Headline 2<br>second line</h1>\n<br />\n<h1 class=\"aui-headline-2\">Headline 2<br>second line</h1>\n"
  },
  {
    "path": "src/typography/snippets/headline-3.html",
    "content": "<!-- Headline 3; You can use a headline tag of different order (h1, h2, … h6) if necessary -->\n<h1 class=\"aui-headline-3 aui-headline-3--bold\">Headline 3<br>second line</h1>\n<br />\n<h1 class=\"aui-headline-3\">Headline 3<br>second line</h1>\n"
  },
  {
    "path": "src/typography/snippets/headline-4.html",
    "content": "<!-- Headline 4; You can use a headline tag of different order (h1, h2, … h6) if necessary -->\n<h1 class=\"aui-headline-4 aui-headline-4--bold\">Headline 4<br>second line</h1>\n<br />\n<h1 class=\"aui-headline-4\">Headline 4<br>second line</h1>\n"
  },
  {
    "path": "src/typography/snippets/headline-5.html",
    "content": "<!-- Headline 5; You can use a headline tag of different order (h1, h2, … h6) if necessary -->\n<h1 class=\"aui-headline-5 aui-headline-5--bold\">Headline 5<br>second line</h1>\n<br />\n<h1 class=\"aui-headline-5\">Headline 5<br>second line</h1>\n"
  },
  {
    "path": "src/typography/snippets/headline-6.html",
    "content": "<!-- Headline 6; You can use a headline tag of different order (h1, h2, … h6) if necessary -->\n<h1 class=\"aui-headline-6\">Headline 6<br>second line</h1>\n<br />\n<h1 class=\"aui-headline-6 aui-headline-6--normal\">Headline 6<br>second line</h1>\n"
  },
  {
    "path": "src/typography/snippets/list-arrow.html",
    "content": "<!-- Unordered list with arrow -->\n<ul class=\"aui-list aui-list--arrow\">\n  <li class=\"aui-list__item\">List with arrow</li>\n  <li class=\"aui-list__item\">Second topic</li>\n  <li class=\"aui-list__item\">Third topic</li>\n</ul>\n"
  },
  {
    "path": "src/typography/snippets/list-bullet.html",
    "content": "<!-- Unordered list with bullets -->\n<ul class=\"aui-list aui-list--bullet\">\n  <li class=\"aui-list__item\">List with bullet</li>\n  <li class=\"aui-list__item\">Second topic</li>\n  <li class=\"aui-list__item\">Third topic</li>\n</ul>\n"
  },
  {
    "path": "src/typography/snippets/list-number.html",
    "content": "<!-- Unordered list numbered -->\n<ol class=\"aui-list aui-list--number\">\n  <li class=\"aui-list__item\">List numbered</li>\n  <li class=\"aui-list__item\">Second topic</li>\n  <li class=\"aui-list__item\">Third topic</li>\n</ol>\n"
  },
  {
    "path": "src/typography/snippets/paragraph-big.html",
    "content": "<p class=\"aui-big\">\n  This little one isn't worth the <strong>effort</strong>. Come let me buy you something…\n</p>\n"
  },
  {
    "path": "src/typography/snippets/paragraph-caption.html",
    "content": "<p class=\"aui-caption\">\n  The second <strong>Death Star</strong>, was a massive battle station with enough firepower to destroy an entire planet.\n</p>\n"
  },
  {
    "path": "src/typography/snippets/paragraph-shortread.html",
    "content": "<p class=\"aui-shortread\">\n  And, now Your Highness, we will discuss the location of your hidden <strong>Rebel base</strong>.\n</p>\n"
  },
  {
    "path": "src/typography/snippets/paragraph-small.html",
    "content": "<p class=\"aui-small\">\n  This little one isn't worth the <strong>effort</strong>. Come let me buy you something…\n</p>\n"
  },
  {
    "path": "src/typography/snippets/paragraph.html",
    "content": "<p>\n  Hello, sir. I am See-Threepio, <strong>human-cyborg</strong> relations. My facilities are at your... Well, really! What's wrong with the Falcon? Hyperdrive. I'll get my people to work on it. Good. You know, that ship saved my life quite a few times. She's the fastest hunk of junk in the galaxy. How's the gas mine? Is it paying off for you? Oh, not as well as I'd like. We're a small outpost and not very self-sufficient. And I've had supply problems of every kind. I've had labor difficulties... What's so funny? You. Listen to you - you sound like a businessman, a responsible leader. Who'd have thought that, huh? You know, seeing you sure brings back a few things. Yeah. Yeah, I'm responsible these days. It's the price you pay for being successful.\n</p>\n"
  },
  {
    "path": "src/typography/snippets/textlink.html",
    "content": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr. <a class=\"aui-textlink\" href=\"#\">I am a link</a>. At vero eos et accusam et justo duo dolores et ea rebum.\n"
  },
  {
    "path": "src/util/_units.scss",
    "content": "/**\n * Returns multiple unit\n * @param {number (unitless)} $multiple\n * @return {number (rem)}\n */\n@function unit($multiple: 1) {\n   @return $aui-base-unit * $multiple / $aui-rem-base * 1rem;\n}\n\n/**\n * Convert pixels to ems\n * eg. for a relational value of 12px write em(12) when the parent is equal\n * the em-base (defined in $audui-config).\n * If the parent is another value say 24px write em(12, 24)\n * @param {number (px)} $val\n * @param {number} $base\n * @return {number (em)}\n */\n@function em($val, $base: $aui-rem-base) {\n  $val: strip-units($val);\n  $base: strip-units($base);\n  @return ($val / $base) * 1em;\n}\n\n/**\n * Convert pixels to rems\n * Assumes that the defined em-base is the font-size of <html>\n * @param {number (px)} $val\n * @param {number} $base\n * @return {number (rem)}\n */\n@function rem($val) {\n  $val: strip-units($val);\n  $base: strip-units($aui-rem-base);\n  @return ($val / $base) * 1rem;\n}\n\n/**\n * Strips the unit from a number.\n * @param {number (with unit)} $value\n * @return {number (unitless)}\n */\n@function strip-units($value) {\n   @return ($value / ($value * 0 + 1));\n}\n"
  },
  {
    "path": "src/util/animation-end-event.js",
    "content": "// From Modernizr\nfunction whichAnimationEvent() {\n  let type;\n  let element = document.createElement('fakeelement');\n  let animations = {\n    'animation': 'animationend',\n    'OAnimation': 'oAnimationEnd',\n    'MozAnimation': 'animationend',\n    'WebkitAnimation': 'webkitAnimationEnd'\n  }\n\n  for (type in animations) {\n    if (element.style[type] !== undefined) {\n      return animations[type];\n    }\n  }\n}\n\nconst ANIMATION_EVENT = whichAnimationEvent();\n\nexport default ANIMATION_EVENT;\n"
  },
  {
    "path": "src/util/clamp.js",
    "content": "/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * clamp(-10, -5, 5)\n * // => -5\n *\n * clamp(10, -5, 5)\n * // => 5\n */\nexport default function clamp(number, lower, upper) {\n  number = +number;\n  lower = +lower;\n  upper = +upper;\n  lower = lower === lower ? lower : 0;\n  upper = upper === upper ? upper : 0;\n  if (number === number) {\n    number = number <= upper ? number : upper;\n    number = number >= lower ? number : lower;\n  }\n  return number;\n}\n"
  },
  {
    "path": "src/util/closest.js",
    "content": "/**\n * Get the first element that matches the selector by testing the element itself\n * and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} element to search wherefrom\n * @param {string} selector A string containing a selector expression to match elements against.\n * @param {HTMLElement} context A DOM element within which a matching element may be found.\n * @returns {HTMLElement} found element or null\n */\nexport default function closest(element, selector, context) {\n  let matchesFn;\n\n  ['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'].some(function(fn) {\n    if (typeof document.body[fn] === 'function') {\n      matchesFn = fn;\n      return true;\n    }\n    return false;\n  });\n\n  let parent;\n\n  // traverse parents\n  parent = element;\n  while (parent) {\n    if (parent && parent[matchesFn](selector)) {\n      return parent;\n    }\n    if (parent === context) {\n      return null;\n    }\n    parent = parent.parentElement;\n  }\n\n  return null;\n}\n"
  },
  {
    "path": "src/util/is-none.js",
    "content": "/**\n * Check if value is either `undefined` or `null`.\n * @param {*} value to check.\n * @returns {boolean} true if value is `undefined` or `null`.\n */\nexport default function isNone(value) {\n  return (value === undefined || value === null);\n}\n"
  },
  {
    "path": "src/util/limit.js",
    "content": "/**\n * Limits a value to x >= min and x <= max.\n * @param {number} x The value to limit.\n * @param {number} min The value to limit.\n * @param {number} max The value to limit.\n * @returns {number} The limited value.\n */\nexport default function limit(x, min, max) {\n  if (x > max) x = max;\n  if (x < min) x = min;\n  return x;\n}\n"
  },
  {
    "path": "src/util/map-linear.js",
    "content": "/**\n * Linear mapping from range <a1, a2> to range <b1, b2>\n * @param {number} x The value to map\n * @param {number} a1 First endpoint of the range <a1, a2>\n * @param {number} a2 Final endpoint of the range <a1, a2>\n * @param {number} b1 First endpoint of the range <b1, b2>\n * @param {number} b2 Final endpoint of the range  <b1, b2>\n * @returns {number} The mapped value.\n */\nexport default function mapLinear(x, a1, a2, b1, b2) {\n  return b1 + (x - a1) * (b2 - b1) / (a2 - a1);\n}\n"
  },
  {
    "path": "src/util/matches.js",
    "content": "export default function matches(element, selector) {\n  return (element.matches || element.matchesSelector || element.msMatchesSelector || element.mozMatchesSelector || element.webkitMatchesSelector || element.oMatchesSelector).call(element, selector);\n};\n"
  },
  {
    "path": "src/util/object-resize.js",
    "content": "export default class ObjectResize {\n\n  constructor(parent, callback, callbackScope) {\n\n    let isIE = navigator.userAgent.match(/Trident/);\n\n    // NOTE\n    // this._parent.style.position != 'static'\n    // this._parent.style.display = 'block'\n\n    this._parent = parent;\n    this._helperElement = document.createElement('object');\n    this._helperElement.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1; border: 0px; opacity: 0;');\n    this._helperElement.setAttribute('border', '0');\n    this._helperElement.onload = () => this._onLoad();\n    this._helperElement.type = 'text/html';\n    if (isIE) {\n      this._parent.appendChild(this._helperElement);\n    }\n    this._helperElement.data = 'about:blank';\n    if (!isIE) {\n      this._parent.appendChild(this._helperElement);\n    }\n\n    this._callback = callback;\n    this._callbackScope = callbackScope;\n\n    this._ticking = false;\n  }\n\n  _onLoad(event) {\n    this._helperElement.contentDocument.defaultView.addEventListener('resize', this._resizeHandler = (event) => this._onResize(event));\n  }\n\n  _onResize(event) {\n    if (!this._ticking) {\n      window.requestAnimationFrame(() => {\n        this._ticking = false;\n        this._callback.call(this._callbackScope);\n      });\n    }\n    this._ticking = true;\n  }\n\n  dispose() {\n    this._helperElement.contentDocument.defaultView.removeEventListener('resize', this._resizeHandler);\n    this._parent.removeChild(this._helperElement);\n  }\n}\n\n// (function() {\n//   var attachEvent = document.attachEvent;\n//   var isIE = navigator.userAgent.match(/Trident/);\n//   var requestFrame = (function() {\n//     var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame ||\n//       function(fn) {\n//         return window.setTimeout(fn, 20);\n//       };\n//     return function(fn) {\n//       return raf(fn);\n//     };\n//   })();\n//\n//   var cancelFrame = (function() {\n//     var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame ||\n//       window.clearTimeout;\n//     return function(id) {\n//       return cancel(id);\n//     };\n//   })();\n//\n//   function resizeListener(e) {\n//     var win = e.target || e.srcElement;\n//     if (win.__resizeRAF__) cancelFrame(win.__resizeRAF__);\n//     win.__resizeRAF__ = requestFrame(function() {\n//       var trigger = win.__resizeTrigger__;\n//       trigger.__resizeListeners__.forEach(function(fn) {\n//         fn.call(trigger, e);\n//       });\n//     });\n//   }\n//\n//   function objectLoad(e) {\n//     this.contentDocument.defaultView.__resizeTrigger__ = this.__resizeElement__;\n//     this.contentDocument.defaultView.addEventListener('resize', resizeListener);\n//   }\n//\n//   window.addResizeListener = function(element, fn) {\n//     if (!element.__resizeListeners__) {\n//       element.__resizeListeners__ = [];\n//       if (attachEvent) {\n//         element.__resizeTrigger__ = element;\n//         element.attachEvent('onresize', resizeListener);\n//       } else {\n//         if (getComputedStyle(element).position === 'static') element.style.position = 'relative';\n//         var obj = element.__resizeTrigger__ = document.createElement('object');\n//         obj.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;');\n//         obj.__resizeElement__ = element;\n//         obj.onload = objectLoad;\n//         obj.type = 'text/html';\n//         if (isIE) element.appendChild(obj);\n//         obj.data = 'about:blank';\n//         if (!isIE) element.appendChild(obj);\n//       }\n//     }\n//     element.__resizeListeners__.push(fn);\n//   };\n//\n//   window.removeResizeListener = function(element, fn) {\n//     element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n//     if (!element.__resizeListeners__.length) {\n//       if (attachEvent) element.detachEvent('onresize', resizeListener);\n//       else {\n//         element.__resizeTrigger__.contentDocument.defaultView.removeEventListener('resize', resizeListener);\n//         element.__resizeTrigger__ = !element.removeChild(element.__resizeTrigger__);\n//       }\n//     }\n//   }\n// })();\n"
  },
  {
    "path": "src/util/reflow.js",
    "content": "/**\n * Trigger a reflow\n * @param {HTMLElement} element to trigger a reflow.\n */\nexport default function reflow(element) {\n  new Function('bs', 'return bs')(element.offsetHeight);\n}\n"
  },
  {
    "path": "src/util/resize-observer.js",
    "content": "import Signal from '../util/signal';\n\nlet instance = null;\n\nexport default class ResizeObserver {\n\n  constructor() {\n    if (!instance) {\n      instance = this;\n      this.init();\n    }\n\n    return instance;\n  }\n\n  init() {\n    this._ticking = false;\n\n    this.resized = new Signal();\n\n    window.addEventListener('resize', this._resizeHandler = (event) => this._onResize(event));\n  }\n\n  _onResize(event) {\n    if (!this._ticking) {\n      window.requestAnimationFrame(() => {\n        this._ticking = false;\n        this.resized.dispatch();\n      });\n    }\n    this._ticking = true;\n  }\n}\n"
  },
  {
    "path": "src/util/scroll-observer-element.js",
    "content": "import Signal from '../util/signal';\n\nconst SCROLL_END_THRESHOLD = 100; // in ms\n\nexport default class ScrollObserverElement {\n\n  constructor(element) {\n    this._element = element;\n    this._scrollX = this._element.scrollLeft;\n    this._scrollY = this._element.scrollTop;\n    this._ticking = false;\n\n    this.scrolled = new Signal();\n    this.scrollEnded = new Signal();\n\n    this._element.addEventListener('scroll', this._scrollHandler = (event) => this._onScroll(event));\n  }\n\n  _onScroll(event) {\n    this._scrollX = event.target.scrollLeft;\n    this._scrollY = event.target.scrollTop;\n\n    if (!this._ticking) {\n      window.requestAnimationFrame(() => {\n        this._ticking = false;\n        this.scrolled.dispatch(this._scrollX, this._scrollY);\n        clearTimeout(this._scrollEndTimeout);\n        this._scrollEndTimeout = setTimeout(() => {\n          this.scrollEnded.dispatch(this._scrollX, this._scrollY);\n        }, SCROLL_END_THRESHOLD);\n      });\n    }\n    this._ticking = true;\n  }\n\n  get scrollLeft() {\n    return this._scrollX;\n  }\n\n  get scrollTop() {\n    return this._scrollY;\n  }\n}\n"
  },
  {
    "path": "src/util/scroll-observer.js",
    "content": "import Signal from '../util/signal';\n\nlet instance = null;\n\nconst SCROLL_END_THRESHOLD = 100; // in ms\n\nexport default class ScrollObserver {\n\n  constructor() {\n    if (!instance) {\n      instance = this;\n      this.init();\n    }\n\n    return instance;\n  }\n\n  init() {\n    this._scrollX = 0;\n    this._scrollY = 0;\n    this._ticking = false;\n\n    this.scrolled = new Signal();\n    this.scrollEnded = new Signal();\n\n    window.addEventListener('scroll', this.scrollHandler = (event) => this.onScroll(event));\n  }\n\n  onScroll(event) {\n    this._scrollX = window.scrollX;\n    this._scrollY = window.scrollY;\n\n    if (!this._ticking) {\n      window.requestAnimationFrame(() => {\n        this._ticking = false;\n        this.scrolled.dispatch(this._scrollX, this._scrollY);\n        clearTimeout(this._scrollEndTimeout);\n        this._scrollEndTimeout = setTimeout(() => {\n          this.scrollEnded.dispatch(this._scrollX, this._scrollY);\n        }, SCROLL_END_THRESHOLD);\n      });\n    }\n    this._ticking = true;\n  }\n\n  get scrollX() {\n    return this._scrollX;\n  }\n\n  get scrollY() {\n    return this._scrollY;\n  }\n}\n"
  },
  {
    "path": "src/util/signal.js",
    "content": "// TODO Fork https://github.com/thomaseckhardt/js-signals translate to ES6\n\nclass SignalBinding {\n\n  constructor(signal, listener, isOnce, priority) {\n    // Handler function bound to the signal.\n    this._listener = listener;\n\n    // If binding should be executed just once.\n    this._isOnce = isOnce;\n\n    // Reference to Signal object that listener is currently bound to.\n    this._signal = signal;\n\n    // Listener priority\n    this._priority = priority || 0;\n\n    // If binding is active and should be executed.\n    this._active = true;\n  }\n\n  _isBound() {\n    return (!!this._signal && !!this._listener);\n  }\n\n  /**\n   * Call listener passing arbitrary parameters.\n   * If binding was added using `Signal.addOnce()` it will be automatically\n   * removed from signal dispatch queue, this method is used internally for\n   * the signal dispatch.\n   * @param {Array} Array of parameters that should be passed to the listener\n   * @return {*} Value returned by the listener.\n   */\n  execute(params) {\n    let handlerReturn;\n    if (this._active && !!this._listener) {\n      handlerReturn = this._listener.apply(this._context, params);\n      if (this._isOnce) {\n        this.detach();\n      }\n    }\n    return handlerReturn;\n  }\n\n  /**\n   * Detach binding from signal.\n   * - alias to: mySignal.remove(myBinding.getListener());\n   * @return {Function|null} Handler function bound to the signal or `null` if binding was previously detached.\n   */\n  detach() {\n    return this._isBound() ? this._signal.remove(this._listener) : null;\n  }\n\n  get isOnce() {\n    return this._isOnce;\n  }\n\n  get listener() {\n    return this._listener;\n  }\n\n  get signal() {\n    return this._signal;\n  }\n\n  get priority() {\n    return this._priority;\n  }\n\n  dispose() {\n    delete this._signal;\n    delete this._listener;\n  }\n\n  toString() {\n    return '[SignalBinding isOnce:' + this._isOnce + ', isBound:' + this.isBound() + ', active:' + this._active + ']';\n  }\n}\n\n\nclass Signal {\n\n  constructor() {\n    this._bindings = [];\n    this._prevParams = null;\n    this._active = true;\n  }\n\n  /**\n   * Add a listener to the signal.\n   * @param {Function} listener Signal handler function.\n   * @param {Object} [listenerContext] Context on which listener will be executed (object that should represent the `this` variable inside listener function).\n   * @param {Number} [priority] The priority level of the event listener. Listeners with higher priority will be executed before listeners with lower priority. Listeners with same priority level will be executed at the same order as they were added. (default = 0)\n   * @return {SignalBinding} An Object representing the binding between the Signal and listener.\n   */\n  add(listener, priority) {\n    this._validateListener(listener, 'add');\n    return this._registerListener(listener, false, priority);\n  }\n\n  addOnce(listener, priority) {\n    this._validateListener(listener, 'addOnce');\n    return this._registerListener(listener, true, priority);\n  }\n\n  remove(listener) {\n    this._validateListener(listener, 'remove');\n\n    var i = this._indexOfListener(listener);\n    if (i !== -1) {\n      this._bindings[i].dispose(); //no reason to a SignalBinding exist if it isn't attached to a signal\n      this._bindings.splice(i, 1);\n    }\n    return listener;\n  }\n\n  removeAll() {\n    let n = this._bindings.length;\n    while (n--) {\n      this._bindings[n].dispose();\n    }\n    this._bindings.length = 0;\n  }\n\n  has(listener) {\n    return this._indexOfListener(listener) !== -1;\n  }\n\n  dispatch() {\n    if (!this._active) {\n      return;\n    }\n\n    let n = this._bindings.length;\n    if (!n) {\n      return;\n    }\n\n    let params = Array.prototype.slice.call(arguments);\n    let bindings;\n\n    bindings = this._bindings.slice(); //clone array in case add/remove items during dispatch\n\n    //execute all callbacks until end of the list or until a callback returns `false` or stops propagation\n    //reverse loop since listeners with higher priority will be added at the end of the list\n    do {\n      n--;\n    } while (bindings[n] && bindings[n].execute(params) !== false);\n  }\n\n  dispose() {\n    this.removeAll();\n    delete this._bindings;\n    delete this._prevParams;\n  }\n\n  _registerListener(listener, isOnce, priority) {\n    let prevIndex = this._indexOfListener(listener);\n    let binding;\n\n    if (prevIndex !== -1) {\n      binding = this._bindings[prevIndex];\n      if (binding.isOnce() !== isOnce) {\n        throw new Error(`You cannot add${isOnce ? '' : 'Once'}() then add${!isOnce ? '' : 'Once'}() the same listener without removing the relationship first.`);\n      }\n    } else {\n      binding = new SignalBinding(this, listener, isOnce, priority);\n      this._addBinding(binding);\n    }\n\n    if (this.memorize && this._prevParams) {\n      binding.execute(this._prevParams);\n    }\n\n    return binding;\n  }\n\n  _validateListener(listener, fnName) {\n    if (typeof listener !== 'function') {\n      throw new Error(`listener is a required param of ${fnName}() and should be a Function.`);\n    }\n  }\n\n  _indexOfListener(listener) {\n    let n = this._bindings.length;\n    let current;\n    while (n--) {\n      current = this._bindings[n];\n      if (current.listener === listener) {\n        return n;\n      }\n    }\n    return -1;\n  }\n\n  _addBinding(binding) {\n    var n = this._bindings.length;\n    do {\n      --n;\n    } while (this._bindings[n] && binding.priority <= this._bindings[n].priority);\n    this._bindings.splice(n + 1, 0, binding);\n  }\n}\n\nexport default Signal;\n"
  },
  {
    "path": "src/util/transition-end-event.js",
    "content": "// From Modernizr\nfunction whichTransitionEvent() {\n  var t;\n  var el = document.createElement('fakeelement');\n  var transitions = {\n    'transition': 'transitionend',\n    'OTransition': 'oTransitionEnd',\n    'MozTransition': 'transitionend',\n    'WebkitTransition': 'webkitTransitionEnd'\n  }\n\n  for (t in transitions) {\n    if (el.style[t] !== undefined) {\n      return transitions[t];\n    }\n  }\n}\n\nconst TRANSITION_EVENT = whichTransitionEvent();\n\nexport default TRANSITION_EVENT;\n"
  },
  {
    "path": "src/visibility/README.md",
    "content": "---\ntitle: Visibility\n---\n\n## Introduction\n\nThe Audi UI (AUI) **breakpoint** component is … (text follows)\n\n### To include an AUI **breakpoint** component:\n\n```html\n<!-- Example follows ... -->\n```\n"
  },
  {
    "path": "src/visibility/_visibility.scss",
    "content": ".aui-visible {\n  display: block !important;\n\n  &-inline {\n    display: inline !important;\n  }\n\n  &-inline-block {\n    display: inline-block !important;\n  }\n}\n\n.aui-hidden {\n  display: none !important;\n}\n@if $aui-visibility {\n   @each $breakpoint-name in $aui-visibility{\n    .aui-visible-#{$breakpoint-name},\n    .aui-visible-#{$breakpoint-name}-inline,\n    .aui-visible-#{$breakpoint-name}-inline-block {\n      display: none !important;\n    }\n    @include aui-respond-to($breakpoint-name) {\n      .aui-visible-#{$breakpoint-name} {\n        display: block !important;\n      }\n\n      .aui-visible-#{$breakpoint-name}-inline {\n        display: inline !important;\n      }\n\n      .aui-visible-#{$breakpoint-name}-inline-block {\n        display: inline-block !important;\n      }\n\n      .aui-hidden-#{$breakpoint-name} {\n        display: none !important;\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "test/visual/js/test.js",
    "content": "// Add DOM4 support, https://github.com/WebReflection/dom4\nimport 'dom4';\n\n// Add Babel polyfill for ES2015, https://babeljs.io/docs/usage/polyfill/\nimport 'babel-polyfill';\n\n//\nimport FontFaceObserver from 'fontfaceobserver';\n\n// Import all components from Audi UI library\nimport {\n  Alert,\n  Audioplayer,\n  Breadcrumb,\n  Checkbox,\n  Dropdown,\n  Flyout,\n  Header,\n  Modal,\n  Nav,\n  Notification,\n  Pagination,\n  Player,\n  Popover,\n  Progress,\n  Radio,\n  Response,\n  Select,\n  Slider,\n  Indicator,\n  Spinner,\n  Textfield,\n  Tooltip\n} from '../../../src/index';\n\n// Upgrade all Audi UI components\nlet alertComponents = Alert.upgradeElements();\nlet breadcrumbComponents = Breadcrumb.upgradeElements();\nAudioplayer.upgradeElements();\nCheckbox.upgradeElements();\n// Dropdown.upgradeElements();\nFlyout.upgradeElements();\nHeader.upgradeElements();\nModal.upgradeElements();\nlet navComponents = Nav.upgradeElements();\nNotification.upgradeElements();\nlet paginationComponents = Pagination.upgradeElements();\nPlayer.upgradeElements();\nPopover.upgradeElements();\nlet progressComponents = Progress.upgradeElements();\nRadio.upgradeElements();\nResponse.upgradeElements();\nSelect.upgradeElements();\nSlider.upgradeElements();\nIndicator.upgradeElements();\nlet spinnerComponents = Spinner.upgradeElements();\nTextfield.upgradeElements();\nTooltip.upgradeElements();\n\n// Import test stuff:\nimport URI from 'urijs';\n\n\n\n\n// ----------------------------------------------------------------------------\n// Load SVG sprite with Audi Icons\n// ----------------------------------------------------------------------------\nArray.from(document.querySelectorAll('[data-svg-sprite]')).forEach(element => {\n  const src = element.getAttribute('data-svg-sprite');\n  if (typeof src === 'string' && src.length > 0) {\n    let ajax = new XMLHttpRequest();\n    ajax.open('GET', src, true);\n    ajax.responseType = 'document';\n    ajax.onload = function(event) {\n      element.removeAttribute('data-src');\n      try {\n        element.appendChild(ajax.responseXML.documentElement);\n      } catch (e) {\n        console.log(e);\n      }\n    };\n    ajax.send();\n  }\n});\n\n\n\n\n// ----------------------------------------------------------------------------\n// Demo Spinner and Progress components:\n// ----------------------------------------------------------------------------\nlet progress = 0;\n\nfunction demoLoaderProgress() {\n  progress += 0.01;\n  for (var i = 0; i < spinnerComponents.length; i++) {\n    spinnerComponents[i].progress(progress);\n  }\n  for (var i = 0; i < progressComponents.length; i++) {\n    progressComponents[i].progress(progress);\n  }\n  if (progress < 1) {\n    window.requestAnimationFrame(() => demoLoaderProgress());\n  } else {\n    progress = 0;\n    setTimeout(() => demoLoaderProgress(), 4000);\n  }\n}\nsetTimeout(() => {\n  for (var i = 0; i < spinnerComponents.length; i++) {\n    spinnerComponents[i].loop();\n  }\n}, 2000);\nsetTimeout(() => demoLoaderProgress(), 2000);\n\n\n\n\n// ----------------------------------------------------------------------------\n// Demo Spinner and Progress components:\n// ----------------------------------------------------------------------------\nArray.from(document.querySelectorAll('[data-toggle=\"modal\"]')).forEach(element => {\n  element.addEventListener('click', (event) => {\n    let modal = Modal.getModalById(element.getAttribute('data-target'));\n    if (modal) {\n      modal.open(event.currentTarget);\n    }\n  });\n});\n\nArray.from(document.querySelectorAll('[data-dismiss=\"modal\"]')).forEach(element => {\n  element.addEventListener('click', (event) => {\n    Modal.closeCurrentModal();\n  });\n});\n\n\n\n// ----------------------------------------------------------------------------\n// Update components after font 'Audi Type' was loaded:\n// ----------------------------------------------------------------------------\nlet fontFaceObserverScreen = new FontFaceObserver('AudiTypeScreen');\nfontFaceObserverScreen.load().then(function() {\n  paginationComponents.forEach(component => {\n    component.update();\n  });\n  breadcrumbComponents.forEach(component => {\n    component.update();\n  });\n  alertComponents.forEach(component => {\n    component.update();\n  });\n}, function() {\n  // Error handling: Font is not available or timeout.\n  console.warn('Warning: AudiTypeScreen not available.');\n});\n\nlet fontFaceObserverExtended = new FontFaceObserver('AudiTypeExtended');\nfontFaceObserverExtended.load().then(function() {\n  navComponents.forEach(component => {\n    component.update();\n  });\n}, function() {\n  // Error handling: Font is not available or timeout.\n  console.warn('Warning: AudiTypeExtended not available.');\n});\n\n\n\n// ----------------------------------------------------------------------------\n// Color switch:\n// ----------------------------------------------------------------------------\nif (document.getElementById('change-color')) {\n  var textColors = {\n    'white': 'dark',\n    'black': 'light',\n    'silver': 'light',\n    'warmsilver': 'light',\n    'red': 'light',\n    'image': 'dark',\n    'imagedark': 'light',\n  };\n\n  function colorChange(val) {\n    var invert = (textColors[val] !== 'dark');\n\n    $('body')\n    .removeClass(function(index, css) {\n      return (css.match(/\\baui-color-\\S+/g) || []).join(' ');\n    })\n    .addClass('aui-color-' + val)\n    .removeClass(function(index, css) {\n      return (css.match(/\\baui-color-text-\\S+/g) || []).join(' ');\n    })\n    .addClass('aui-color-text-' + textColors[val]);\n\n    $('.test-section .aui-spinner').toggleClass('is-inverted', invert);\n    $('.test-section .aui-progress').toggleClass('is-inverted', invert);\n\n    var component;\n    var componentsWithTheme = [\n      'breadcrumb',\n      'slider',\n      'dropdown',\n      'nav',\n    ];\n    for (var i = 0; i < componentsWithTheme.length; i++) {\n      component = componentsWithTheme[i];\n      $('.test-section .aui-' + component).toggleClass('aui-theme-black', val === 'black');\n      $('.test-section .aui-' + component).toggleClass('aui-theme-silver', val === 'silver');\n      $('.test-section .aui-' + component).toggleClass('aui-theme-warmsilver', val === 'warmsilver');\n      $('.test-section .aui-' + component).toggleClass('aui-theme-red', val === 'red');\n    }\n\n    var componentsTextWithTheme = [\n      'button',\n      'draggable-list',\n      'dropzone',\n      'pager',\n      'pagination',\n      'slidernav',\n      'textfield',\n      'flyout',\n      'spinner',\n      'progress',\n      'switch',\n      'radio',\n      'checkbox',\n      'fieldset',\n      'select',\n      'table',\n    ];\n    for (var i = 0; i < componentsTextWithTheme.length; i++) {\n      component = componentsTextWithTheme[i];\n      $('.test-section .aui-' + component).each(function(element, index){\n        if (!$(this).hasClass('aui-theme-image')) {\n          $(this).toggleClass('aui-theme-light', invert);\n        }\n      });\n    }\n  }\n\n  $('#change-color').on('change', function(event) {\n    colorChange($(this).val());\n  });\n\n  var uri = URI(window.location.href);\n  var color = uri.query(true).color;\n  if (color !== undefined) {\n    if (['black', 'silver', 'warmsilver', 'red'].indexOf(color) >= 0) {\n      $('#change-color').val(color);\n    }\n  }\n  colorChange($('#change-color').val());\n}\n"
  },
  {
    "path": "test/visual/pages/_layouts/default.nunjucks",
    "content": "{% import 'pages/_shared/section.nunjucks' as section %}\n<!doctype html>\n<!--\nWe use an approach like [Modernizr](https://modernizr.com/docs#no-js) to detect JS support,\nand change the styling accordingly. Add the class `aui-no-js` to the `html` element.\nLater the class will be renamed to `aui-js` by a JavaScript.\n-->\n<html class=\"aui-no-js\">\n\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"x-ua-compatible\" content=\"ie=edge\">\n    <title>\n      {% block title %}Audi UI Test{% endblock %}\n    </title>\n    <meta name=\"description\" content=\"\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <link rel=\"stylesheet\" href=\"{{ 'assets/css/test.css' | path('test') }}\">\n    <link rel=\"shortcut icon\" href=\"{{ 'assets/content/favicon.ico' | path('test') }}\">\n    <script type=\"text/javascript\">\n      // This will rewrite <html class=\"aui-no-js\"> to <html class=\"aui-js\">.\n      // This lets hide certain elements that should only be exposed in environments that execute JavaScript.\n      document.documentElement.className = document.documentElement.className.replace(new RegExp(\"(^|\\\\s)aui-no-js(\\\\s|$)\"), \"$1aui-js$2\");\n    </script>\n    {% block head %}{% endblock %}\n  </head>\n\n  <body>\n\n    {% block outside %}{% endblock %}\n\n    {% block body %}\n      <div class=\"test-page\">\n        {% block page %}{% endblock %}\n      </div>\n    {% endblock %}\n\n    <div class=\"audiicon-sprite\" data-svg-sprite=\"{{ 'assets/svg/sprite.svg' | path('test') }}\"></div>\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js\"></script>\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/URI.js/1.18.1/URI.min.js\"></script>\n    <script src={{ 'assets/js/test.min.js' | path('test') }}></script>\n    {% block javascript %}{% endblock %}\n  </body>\n\n</html>\n"
  },
  {
    "path": "test/visual/pages/_layouts/page-color.nunjucks",
    "content": "{% extends 'pages/_layouts/default.nunjucks' %}\n\n{% block page %}\n  <header class=\"test-header\">\n    {% include 'pages/_shared/nav.nunjucks' %}\n  </header>\n  {% include 'pages/_shared/color-control.nunjucks' %}\n  <div class=\"test-main\">\n\n    {% block main %}{% endblock %}\n\n  </div>\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/_layouts/page.nunjucks",
    "content": "{% extends 'pages/_layouts/default.nunjucks' %}\n\n{% block page %}\n  <header class=\"test-header\">\n    {% include 'pages/_shared/nav.nunjucks' %}\n  </header>\n  <div class=\"test-main\">\n\n    {% block main %}{% endblock %}\n\n  </div>\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/_macros/helpers.nunjucks",
    "content": "{% macro sprite(id, viewBox, classes) %}\n  {% set viewBox = viewBox or \"0 0 1 1\"%}\n  <span class='sprite -{{id}} {{classes}}'>\n    <svg viewBox=\"{{viewBox}}\"><use xlink:href='images/sprites.svg#{{id}}' /></use></svg>\n  </span>\n{% endmacro %}\n"
  },
  {
    "path": "test/visual/pages/_macros/icon.nunjucks",
    "content": "{% macro sprite(name, spriteUrl, classes = '', large = false, smart = false) %}\n  {% set size = (24 if smart else (48 if large else 24)) %}\n  {% set id = name + ('' if smart else ('-large' if large else '-small')) %}\n  {% set classes = classes + (' audiicon--smart' if smart else '') %}\n  {% set classes = classes + (' audiicon--large' if large else '') %}\n  {# TODO aria-hidden=\"true\" or role=\"presentation\" #}\n  <svg width=\"{{ size }}\" height=\"{{ size }}\" viewbox=\"0 0 {{ size }} {{ size }}\" class=\"audiicon audiicon-inject {% if classes %}{{ classes }}{% endif %}\" aria-hidden=\"true\">\n    <use xlink:href=\"{{ spriteUrl }}#{{ id }}\"></use>\n  </svg>\n{% endmacro %}\n"
  },
  {
    "path": "test/visual/pages/_macros/section.nunjucks",
    "content": "{% macro header(label) %}\n<div class=\"section--header\">\n  <div class=\"aui-layout\">\n    <div class=\"aui-grid\">\n      <div class=\"aui-cell\">\n        <h2 class=\"section--title\">{{ label }}</h2>\n      </div>\n    </div>\n  </div>\n</div>\n{% endmacro %}\n"
  },
  {
    "path": "test/visual/pages/_shared/color-control.nunjucks",
    "content": "<div class=\"test-control\">\n  <div class=\"test-control__setting\">\n    <select id=\"change-color\">\n      <option value=\"white\">Light</option>\n      <option value=\"black\">Dark</option>\n    </select>\n  </div>\n</div>\n"
  },
  {
    "path": "test/visual/pages/_shared/demo-content.nunjucks",
    "content": "<div class=\"aui-grid\">\n  <div class=\"aui-cell\">\n    <h1 class=\"aui-headline-1 trailer-8\">The New Yorker</h1>\n    <h2 class=\"aui-headline-2 trailer-8\">Samuel Delany and the Past and Future of Science Fiction</h2>\n    <p>\n      In 1968, Samuel Delany attended the third annual Nebula Awards, presented by the Science Fiction and Fantasy Writers of America (SFWA). At the ceremony that night, “an eminent member of the SFWA,” as Delany later put it, gave a speech about changes\n      in science fiction, a supposed shift away from old-fashioned storytelling to “pretentious literary nonsense,” or something along those lines. At the previous Nebula Awards, the year before, Delany had won best novel for “Babel-17,” in which an\n      invented language has the power to destroy (his book shared the award with Daniel Keyes’s “Flowers for Algernon”), and earlier on that evening in 1968, Delany had again won best novel, for “The Einstein Intersection,” which tells of an abandoned\n      Earth colonized by aliens, who elevate the popular culture of their new planet into divine myths. Sitting at his table, listening to the speech, Delany realized that he was one of its principal targets. Minutes later, he won another award, this time\n      in the short-story category, for “Aye, and Gomorrah … ,” a tale of neutered space explorers who are fetishized back on Earth. As he made his way back to his seat after accepting the award, Isaac Asimov took Delany by the arm, pulled him close, and,\n      as Delany (who goes by the nickname Chip) recalled in his essay “Racism and Science Fiction,” said: “You know, Chip, we only voted you those awards because you’re Negro … !”\n    </p>\n    <blockquote class=\"aui-blockquote leader-8 trailer-8\">\n      “Delany said he was dismayed by all this, but not surprised. “The context changes, he told me, but the rhetoric remains the same.”\n    </blockquote>\n  </div>\n  <div class=\"aui-cell aui-cell--6\">\n    <figure class=\"aui-figure\">\n      <img class=\"aui-figure__image\" src=\"https://www.audi.de/content/dam/nemo/models/q4-e-tron/q4-e-tron-sportback/my-2022/NeMo-Derivate-Startpage/highlighted-car-teaser/CTA_to_Q4_desktop_02.jpg\" alt=\"\">\n      <figcaption class=\"aui-figure__caption aui-caption\">From the beginning, Delany, in his fiction, has pushed across the traditional boundaries of\n        <a href=\"#\" class=\"aui-textlink\">science fiction</a>, embraced the other, and questioned received ideas about sex and intimacy.<div class=\"leader-4\">\n          <small class=\"aui-small\">Photograph by\n            <a href=\"#\" class=\"aui-textlink\">Michael S. Writz</a>\n            / Philadelphia Inquirer / MCT / Landov</small>\n        </div>\n      </figcaption>\n    </figure>\n  </div>\n  <div class=\"aui-cell aui-cell--6 aui-cell--spacing-left\">\n    <h3 class=\"aui-headline-3 trailer-4\">It was meant to be a Joke</h3>\n    <p class=\"aui-shortread\">\n      It was meant to be a joke, Delany immediately recognized; Asimov was trying, Delany later wrote, “to cut through the evening’s many tensions” with “a self-evidently tasteless absurdity.” The award wasn’t meant to decide what science fiction should\n      be, conventional or experimental, pulpy or avant garde. After all, where else but science fiction should experiments take place? It must be—wink, wink—that Delany’s being black is the reason he won.\n    </p>\n  </div>\n  <div class=\"aui-cell leader-10\">\n    <p class=\"aui-accentuated\">\n      Delany was born in 1942, in Harlem. His mother was a library clerk and his father owned a funeral home. He started writing in his teens, and he turned to science fiction not because he viewed the genre as particularly open to a young black man from\n      Harlem but because, he said, “I read it. It was in front of me.” He married the poet\n      <a href=\"#\">Marilyn Hacker</a>, in 1961, and soon after she took a job at Ace Books, an important publisher of paperback science fiction and fantasy. Hacker dropped one of Delany’s novels into a slush pile under a pen name. In 1962, Ace published the\n      manuscript as “The Jewels of Aptor.” (That work is being reprinted this month alongside two other early novels, in a collection titled “A, B, C: Three Short Novels.”) Delany became something of a wunderkind in the science-fiction world. “You are\n      accepted,” he says, “by the genre that can accept you.”\n    </p>\n    <h4 class=\"aui-headline-4 leader-10 trailer-4\">Out Loud:<br>Women in Science Fiction</h4>\n    <p class=\"aui-shortread\">No matter how he upends conventions, though, one rarely gets the sense that Delany is trying to shock his readers. “There is nothing in ‘Through the Valley of the Nest of Spiders’ that you can't find on Google in five minutes,” he told me.</p>\n    <h6 class=\"aui-headline-6 leader-10 trailer-4\">Watch:</h6>\n    <p class=\"aui-shortread\">Just because such acts are not often talked about in polite company does not mean they don’t exist, he said.</p>\n    <figure class=\"aui-figure leader-10\">\n      <img class=\"aui-figure__image\" src=\"https://www.audi.de/content/dam/nemo/e-mobility/883x496-editorial-teaser/883x496_Q4_2021_2787.jpg?output-format=webp&downsize=880px:*\" alt=\"\">\n      <figcaption class=\"aui-figure__caption\">\n        <h5 class=\"aui-headline-5\">Out Loud: Women in Science Fiction</h5>\n        <h6 class=\"aui-subline\">Dhalgren</h6>\n      </figcaption>\n    </figure>\n  </div>\n</div>\n"
  },
  {
    "path": "test/visual/pages/_shared/nav.nunjucks",
    "content": "<ul class=\"test-nav\">\n  <li class=\"test-nav__item\"><a class=\"test-nav__action\" href=\"{{ '' | path('test') }}\">Index</a></li>\n  <li class=\"test-nav__item\"><a class=\"test-nav__action\" href=\"{{ 'button/' | path('test') }}\">Button</a></li>\n  <li class=\"test-nav__item\"><a class=\"test-nav__action\" href=\"{{ 'button-group/' | path('test') }}\">Button Group</a></li>\n  <li class=\"test-nav__item\"><a class=\"test-nav__action\" href=\"{{ 'card/' | path('test') }}\">Card</a></li>\n  <li class=\"test-nav__item\"><a class=\"test-nav__action\" href=\"{{ 'draganddrop/' | path('test') }}\">Drag and Drop</a></li>\n  <li class=\"test-nav__item\"><a class=\"test-nav__action\" href=\"{{ 'form/' | path('test') }}\">Form</a></li>\n  <li class=\"test-nav__item\"><a class=\"test-nav__action\" href=\"{{ 'loading/' | path('test') }}\">Loading</a></li>\n  <li class=\"test-nav__item\"><a class=\"test-nav__action\" href=\"{{ 'modal/' | path('test') }}\">Modal</a></li>\n  <li class=\"test-nav__item\"><a class=\"test-nav__action\" href=\"{{ 'navigation/' | path('test') }}\">Navigation</a></li>\n  <li class=\"test-nav__item\"><a class=\"test-nav__action\" href=\"{{ 'notification/' | path('test') }}\">Notification</a></li>\n  <li class=\"test-nav__item\"><a class=\"test-nav__action\" href=\"{{ 'pagination/' | path('test') }}\">Pagination</a></li>\n  <li class=\"test-nav__item\"><a class=\"test-nav__action\" href=\"{{ 'player/' | path('test') }}\">Player</a></li>\n  <li class=\"test-nav__item\"><a class=\"test-nav__action\" href=\"{{ 'audioplayer/' | path('test') }}\">Audioplayer</a></li>\n  <li class=\"test-nav__item\"><a class=\"test-nav__action\" href=\"{{ 'popover/' | path('test') }}\">Popover</a></li>\n  <li class=\"test-nav__item\"><a class=\"test-nav__action\" href=\"{{ 'switch/' | path('test') }}\">Switch</a></li>\n  <li class=\"test-nav__item\"><a class=\"test-nav__action\" href=\"{{ 'table/' | path('test') }}\">Table</a></li>\n  <li class=\"test-nav__item\"><a class=\"test-nav__action\" href=\"{{ 'tooltip/' | path('test') }}\">Tooltip</a></li>\n  <li class=\"test-nav__item\"><a class=\"test-nav__action\" href=\"{{ 'typography/' | path('test') }}\">Typography</a></li>\n</ul>\n"
  },
  {
    "path": "test/visual/pages/_shared/section.nunjucks",
    "content": "{% macro header(label) %}\n<div class=\"test-section__header\">\n  <h2 class=\"test-section__title\">{{ label }}</h2>\n</div>\n{% endmacro %}\n"
  },
  {
    "path": "test/visual/pages/audioplayer/index.nunjucks",
    "content": "{% extends 'pages/_layouts/page.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n{% import 'pages/_macros/section.nunjucks' as section %}\n\n{% block main %}\n\n  <section class=\"test-section\" id=\"audioplayer-basic\">\n    {{ section.header('Basic audioplayer') }}\n    <div class=\"test-section__panel\">\n      {% include 'audioplayer/snippets/audioplayer-basic.html' %}\n    </div>\n  </section>\n\n  {# <section class=\"test-section\" id=\"audioplayer-download\">\n    {{ section.header('Audioplayer with downloadable content & mute functionality') }}\n    <div class=\"test-section__panel\">\n      {% include 'audioplayer/snippets/audioplayer-download.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"audioplayer-playlist\">\n    {{ section.header('Audioplayer with playlist functionality') }}\n    <div class=\"test-section__panel\">\n      {% include 'audioplayer/snippets/audioplayer-playlist.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"audioplayer-download\">\n    {{ section.header('Audioplayer with volume control button') }}\n    <div class=\"test-section__panel\">\n      {% include 'audioplayer/snippets/audioplayer-volume-control.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"audioplayer-cover-small\">\n    {{ section.header('Audioplayer with small cover') }}\n    <div class=\"test-section__panel\">\n      {% include 'audioplayer/snippets/audioplayer-cover-small.html' %}\n    </div>\n  </section> #}\n\n{% endblock %}"
  },
  {
    "path": "test/visual/pages/button/floating.nunjucks",
    "content": "{% extends 'pages/_layouts/page.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n\n{% block page %}\n{% include 'button/snippets/button-floating.html' %}\n<div class=\"aui-layout\">\n  {% include 'pages/_shared/demo-content.nunjucks' %}\n</div>\n{% endblock %}\n\n{% block javascript %}\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/button/index.nunjucks",
    "content": "{% extends 'pages/_layouts/page-color.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n{% import 'pages/_macros/section.nunjucks' as section %}\n\n{% block main %}\n\n  {# <section class=\"test-section\" id=\"button\">\n    {{ section.header('Button') }}\n    <div class=\"test-section__panel\">\n      {% include 'button/snippets/button.html' %}\n      <h3 class=\"test-section__headline\">Bold</h3>\n      {% include 'button/snippets/button-bold.html' %}\n      <h3 class=\"test-section__headline\">Disabled state</h3>\n      {% include 'button/snippets/button-disabled.html' %}\n    </div>\n  </section> #}\n\n  <section class=\"test-section\" id=\"button-text\">\n    {{ section.header('Button text style') }}\n    <div class=\"test-section__panel\">\n      {% include 'button/snippets/button-text.html' %}\n      <h3 class=\"test-section__headline\">Disabled state</h3>\n      {% include 'button/snippets/button-text-disabled.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"button-primary\">\n    {{ section.header('Button primary style') }}\n    <div class=\"test-section__panel\">\n      {% include 'button/snippets/button-primary.html' %}\n      <h3 class=\"test-section__headline\">Disabled state</h3>\n      {% include 'button/snippets/button-primary-disabled.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"button-primary-with-icon\">\n    {{ section.header('Button primary style with icon') }}\n    <div class=\"test-section__panel\">\n      {% include 'button/snippets/button-primary-with-icon.html' %}\n      <h3 class=\"test-section__headline\">Disabled state</h3>\n      {% include 'button/snippets/button-primary-with-icon-disabled.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"button-primary-with-icon-right\">\n    {{ section.header('Button primary style with icon on the right') }}\n    <div class=\"test-section__panel\">\n      {% include 'button/snippets/button-primary-with-icon-right.html' %}\n      <h3 class=\"test-section__headline\">Disabled state</h3>\n      {% include 'button/snippets/button-primary-with-icon-right-disabled.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"button-secondary\">\n    {{ section.header('Button secondary style') }}\n    <div class=\"test-section__panel\">\n      {% include 'button/snippets/button-secondary.html' %}\n      <h3 class=\"test-section__headline\">Disabled state</h3>\n      {% include 'button/snippets/button-secondary-disabled.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"button-secondary-with-icon\">\n    {{ section.header('Button secondary style with icon') }}\n    <div class=\"test-section__panel\">\n      {% include 'button/snippets/button-secondary-with-icon.html' %}\n      <h3 class=\"test-section__headline\">Disabled state</h3>\n      {% include 'button/snippets/button-secondary-with-icon-disabled.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"button-secondary-with-icon-right\">\n    {{ section.header('Button secondary style with icon on the right') }}\n    <div class=\"test-section__panel\">\n      {% include 'button/snippets/button-secondary-with-icon-right.html' %}\n      <h3 class=\"test-section__headline\">Disabled state</h3>\n      {% include 'button/snippets/button-secondary-with-icon-right-disabled.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"button-icon\">\n    {{ section.header('Button icon style with small system icon') }}\n    <div class=\"test-section__panel\">\n      {% include 'button/snippets/button-icon.html' %}\n      <h3 class=\"test-section__headline\">Disabled state</h3>\n      {% include 'button/snippets/button-icon-disabled.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"button-icon-large\">\n    {{ section.header('Button icon style with large system icon') }}\n    <div class=\"test-section__panel\">\n      {% include 'button/snippets/button-icon-large.html' %}\n      <h3 class=\"test-section__headline\">Disabled state</h3>\n      {% include 'button/snippets/button-icon-large-disabled.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"button-floating-icon\">\n    {{ section.header('Floating button with icon') }}\n    <div class=\"test-section__panel\">\n      The Floating Button is fixed to the bottom right of the viewport.\n      {% include 'button/snippets/button-floating.html' %}\n      <br>\n      <a class=\"aui-textlink\" href=\"floating.html\">Floating Button demo page</a>\n      <br>\n      <a class=\"aui-textlink\" href=\"sticky.html\">Sticky and stretched button demo page</a>\n    </div>\n  </section>\n\n  {# <section class=\"test-section\" id=\"sepcial-examples\">\n    {{ section.header('Special examples like multiline buttons') }}\n    <div class=\"test-section__panel\">\n      <div>\n        <button class=\"aui-button aui-button--text aui-js-response\" type=\"button\">\n          <span class=\"aui-button__text\">Text button</span>\n        </button>\n      </div>\n      <div class=\"leader-4\">\n        <button class=\"aui-button aui-button--primary aui-js-response\" type=\"button\">\n          <span class=\"aui-button__text\">Primary button</span>\n        </button>\n      </div>\n      <div class=\"leader-4\">\n        <button class=\"aui-button aui-button--secondary aui-js-response\" type=\"button\">\n          <span class=\"aui-button__text\">Secondary button</span>\n        </button>\n      </div>\n      <div class=\"leader-4\">\n        <button class=\"aui-button aui-button--primary aui-js-response\" type=\"button\">\n          <span class=\"aui-button__text-icon\">\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-search-small\"></use>\n            </svg>\n            <span class=\"aui-button__text\">Primary button</span>\n          </span>\n        </button>\n      </div>\n      <div class=\"leader-4\">\n        <button class=\"aui-button aui-button--secondary aui-js-response\" type=\"button\">\n          <span class=\"aui-button__text-icon\">\n            <span class=\"aui-button__text\">Secondary button</span>\n            <svg class=\"audiicon\">\n              <use xlink:href=\"#audiicon-erase-small\"></use>\n            </svg>\n          </span>\n        </button>\n      </div>\n    </div>\n  </section> #}\n\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/button/sticky.nunjucks",
    "content": "{% extends 'pages/_layouts/page.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n\n{% block page %}\n{% include 'button/snippets/button-primary-sticky.html' %}\n<div class=\"aui-layout\">\n  {% include 'pages/_shared/demo-content.nunjucks' %}\n</div>\n{% endblock %}\n\n{% block javascript %}\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/button-group/index.nunjucks",
    "content": "{% extends 'pages/_layouts/page-color.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n{% import 'pages/_macros/section.nunjucks' as section %}\n\n{% block main %}\n\n  <section class=\"test-section\" id=\"button-group-two-text\">\n    {{ section.header('Button Group of two Text Buttons') }}\n    <div class=\"test-section__panel\">\n      {% include 'button-group/snippets/button-group-two-text.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"button-group-two-secondary\">\n    {{ section.header('Button Group of two Secondary Buttons') }}\n    <div class=\"test-section__panel\">\n      {% include 'button-group/snippets/button-group-two-secondary.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"button-group-primary-secondary\">\n    {{ section.header('Button Group of Primary and Secondary Button') }}\n    <div class=\"test-section__panel\">\n      {% include 'button-group/snippets/button-group-primary-secondary.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"button-group-icons\">\n    {{ section.header('Special Button Group of (System) Icon Buttons') }}\n    <div class=\"test-section__panel\">\n      {% include 'button-group/snippets/button-group-icons.html' %}\n    </div>\n  </section>\n\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/card/index.nunjucks",
    "content": "{% extends 'pages/_layouts/page.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n{% import 'pages/_macros/section.nunjucks' as section %}\n\n{% block main %}\n\n  <style>\n    .aui-card .aui-small {\n      margin-bottom: 8px;\n    }\n    .aui-card .aui-shortread ~ .aui-button {\n      margin-top: 16px;\n    }\n    .aui-card .aui-headline-3,\n    .aui-card .aui-headline-5 {\n      margin-bottom: 8px;\n    }\n\n  </style>\n\n  <section class=\"test-section\" id=\"card-cover\">\n    {{ section.header('Card with cover image (<picture> element)') }}\n    <div class=\"test-section__panel\">\n      <div class=\"aui-card-grid\">\n        <div class=\"aui-card-grid__item\">\n          <a class=\"aui-card aui-card--action aui-card--cover aui-color-black aui-color-text-dark\" href=\"#\">\n            <div class=\"aui-card__cover\">\n              <img class=\"aui-card__cover-image\" src=\"https://www.audi.com/content/dam/gbp2/experience-audi/models-and-technology/production-models/q4-e-tron/audi-q4-e-tron-driving-dynamics-desktop.jpg\"/>\n            </div>\n            <div class=\"aui-card__body\">\n              <div class=\"aui-card__content\">\n                <h2 class=\"aui-headline-3\">\n                  Headline\n                </h2>\n                <p class=\"aui-shortread\">\n                  The whole card is clickable.\n                </p>\n              </div>\n            </div>\n          </a>\n        </div>\n        <div class=\"aui-card-grid__item\">\n          <a class=\"aui-card aui-card--action aui-card--cover aui-color-black aui-color-text-light\" href=\"#\">\n            <div class=\"aui-card__cover\">\n              <img class=\"aui-card__cover-image\" src=\"https://www.audi.com/content/dam/gbp2/company/brand/2020/1920x1080-desktop-brand-digital.jpg\"/>\n            </div>\n            <div class=\"aui-card__body\">\n              <div class=\"aui-card__content\">\n                <h2 class=\"aui-headline-3\">\n                  Headline\n                </h2>\n                <p class=\"aui-shortread\">\n                  The whole card is clickable.\n                </p>\n              </div>\n            </div>\n          </a>\n        </div>\n        <div class=\"aui-card-grid__item\">\n          <a class=\"aui-card aui-card--action aui-card--cover aui-color-black aui-color-text-dark\" href=\"#\">\n            <div class=\"aui-card__cover\">\n              <img class=\"aui-card__cover-image\" src=\"https://www.audi.com/content/dam/gbp2/experience-audi/models-and-technology/production-models/q4-e-tron/1920x1080-q4-e-tron.jpg\"/>\n            </div>\n            <div class=\"aui-card__body\">\n              <div class=\"aui-card__content\">\n                <h2 class=\"aui-headline-3\">\n                  Headline\n                </h2>\n                <p class=\"aui-shortread\">\n                  The whole card is clickable.\n                </p>\n              </div>\n            </div>\n          </a>\n        </div>\n      </div>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"card\">\n    {{ section.header('Card') }}\n    <div class=\"test-section__panel\">\n      <div class=\"aui-card-grid\">\n        <div class=\"aui-card-grid__item\">\n          <div class=\"aui-card aui-color-gray70 aui-color-text-light\">\n            <div class=\"aui-card__body\">\n              <div class=\"aui-card__media\">\n                <img src=\"https://mediaservice.audi.com/media/live/50900/fly1400x601n8/f83rj7/2022.png\" alt=\"\" width=\"390\" height=\"224\" style=\"max-width:390px;\">\n              </div>\n              <div class=\"aui-card__content\">\n                <p class=\"aui-small\">\n                  Small text\n                </p>\n                <h2 class=\"aui-headline-3\">\n                  Headline\n                </h2>\n                <p class=\"aui-shortread\">\n                  This is a short text for this card. Image with max-width.\n                </p>\n              </div>\n              <div class=\"aui-card__content aui-card__content--bottom\">\n                <div class=\"aui-button-group aui-button-group--block\">\n                  <button class=\"aui-button aui-button--secondary aui-theme-light aui-js-response\" type=\"button\">\n                    <span class=\"aui-button__text\">Action</span>\n                  </button>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <div class=\"aui-card-grid__item\">\n          {% include 'card/snippets/card-actions.html' %}\n        </div>\n        <div class=\"aui-card-grid__item\">\n          <a class=\"aui-card aui-card--action aui-card--image aui-color-black aui-color-text-light\" style=\"background-image:url('https://www.progress.audi/content/dam/progress/home/2021/210331_Audi_Rom_1920x1920_StageTeaser_CLEAN.jpg?imwidth=792&imdensity=1');background-position:100% 50%;\" href=\"#\">\n            <div class=\"aui-card__content\">\n              <p class=\"aui-small\">\n                31.07.2016\n              </p>\n              <h2 class=\"aui-headline-3\">\n                Headline\n              </h2>\n              <p class=\"aui-shortread\">\n                Card with background image; clickable.\n              </p>\n            </div>\n          </a>\n        </div>\n      </div>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"card-second\">\n    {{ section.header('Card') }}\n    <div class=\"test-section__panel\">\n      <div class=\"aui-card-grid\">\n        <div class=\"aui-card-grid__item\">\n          <a class=\"aui-card aui-card--action aui-card--image aui-color-black aui-color-text-light\" style=\"background-image:url('https://www.progress.audi/content/dam/progress/home/2021/210331_Audi_Rom_1920x1920_StageTeaser_CLEAN.jpg?imwidth=792&imdensity=1');background-position:100% 50%;\" href=\"#\">\n            <div class=\"aui-card__content\">\n              <p class=\"aui-small\">\n                31.07.2016\n              </p>\n              <h2 class=\"aui-headline-3\">\n                Headline\n              </h2>\n              <p class=\"aui-shortread\">\n                Card with background image; clickable.\n              </p>\n            </div>\n          </a>\n        </div>\n        <div class=\"aui-card-grid__item\">\n          <div class=\"aui-card aui-color-gray95 aui-color-text-dark\">\n            <div class=\"aui-card__body\">\n              <div class=\"aui-card__content\">\n                <h2 class=\"aui-headline-5\">\n                  Grow and shrink\n                </h2>\n                <p class=\"aui-shortread\">\n                  Use align-right and align-center on card content to align Button Group as you want.\n                </p>\n              </div>\n              <div class=\"aui-card__content aui-card__content--bottom align-right\">\n                <!-- Button Group of two secondary buttons -->\n                <div class=\"aui-button-group\">\n                  <button class=\"aui-js-response aui-button aui-button--secondary\" type=\"button\">\n                    <span class=\"aui-button__text\">Action</span>\n                  </button>\n                  <button class=\"aui-js-response aui-button aui-button--secondary\" type=\"button\">\n                    <span class=\"aui-button__text\">Action</span>\n                  </button>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <div class=\"aui-card-grid__item aui-card-grid__item--column\">\n          <div class=\"aui-card aui-color-red aui-color-text-light\">\n            <div class=\"aui-card__body\">\n              <div class=\"aui-card__content\">\n                <p class=\"aui-small\">\n                  December\n                </p>\n                <p class=\"aui-headline-1\">\n                  24\n                </p>\n                <button class=\"aui-js-response aui-button aui-button--text aui-theme-light\" type=\"button\">\n                  <span class=\"aui-button__text\">Text Button</span>\n                </button>\n              </div>\n            </div>\n          </div>\n          <div class=\"aui-card-grid\">\n            <div class=\"aui-card-grid__item\" style=\"width:50%;\">\n              <div class=\"aui-card aui-color-gray95 aui-color-text-dark\">\n                <div class=\"aui-card__body\">\n                  <div class=\"aui-card__content\">\n                    <h6 class=\"aui-headline-6\">\n                      Your Confi&shy;guration\n                    </h6>\n                    <p class=\"aui-small\">\n                      30.02.2025\n                    </p>\n                  </div>\n                  <div class=\"aui-card__content aui-card__content--bottom\">\n                    <div class=\"aui-button-group aui-button-group--icons\">\n                      {% include 'button/snippets/button-icon-large.html' %}\n                      {% include 'button/snippets/button-icon-large.html' %}\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n            <div class=\"aui-card-grid__item\" style=\"width:50%;\">\n              <div class=\"aui-card aui-color-gray95 aui-color-text-dark\">\n                <div class=\"aui-card__body\">\n                  <div class=\"aui-card__content align-center\">\n                    <h6 class=\"aui-headline-2\">\n                      NPR\n                    </h6>\n                    <p class=\"aui-small\">\n                      WRWA / 88.7 FM\n                    </p>\n                  </div>\n                  <div class=\"aui-card__content aui-card__content--bottom align-center\">\n                    {% include 'button/snippets/button-icon-large.html' %}\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </section>\n\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/draganddrop/dropzone-fullpage.nunjucks",
    "content": "{% extends 'pages/_layouts/default.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n{% import 'pages/_macros/section.nunjucks' as section %}\n\n{% block page %}\n\n{% include 'dropzone/snippets/dropzone-fullpage.html' %}\n{% include 'pages/_shared/demo-content.nunjucks' %}\n\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/draganddrop/index.nunjucks",
    "content": "{% extends 'pages/_layouts/page-color.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n{% import 'pages/_macros/section.nunjucks' as section %}\n\n{% block main %}\n\n  <section class=\"test-section\" id=\"draggable\">\n    {{ section.header('Draggable') }}\n    <div class=\"test-section__panel\">\n      {% include 'draggable/snippets/draggable-list.html' %}\n      <h3 class=\"test-section__headline\">While active dragging</h3>\n      {% include 'draggable/snippets/draggable-list-active.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"dropzone\">\n    {{ section.header('Dropzone') }}\n    <div class=\"test-section__panel\">\n      {% include 'dropzone/snippets/dropzone.html' %}\n      {# <h3 class=\"test-section__headline\">While active dragging</h3>\n      <a class=\"aui-textlink\" href=\"dropzone-fullpage.html\">Full-page dropzone</a> #}\n    </div>\n  </section>\n\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/form/index.nunjucks",
    "content": "{% extends 'pages/_layouts/page-color.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n{% import 'pages/_macros/section.nunjucks' as section %}\n\n{% block main %}\n\n  {# <section class=\"test-section\" id=\"dropdown\">\n    {{ section.header('Dropdown') }}\n    <div class=\"test-section__panel\">\n      <form action=\"#\">\n        {% include 'dropdown/snippets/dropdown.html' %}\n        <h3 class=\"test-section__headline\">Invalid</h3>\n        {% include 'dropdown/snippets/dropdown-invalid.html' %}\n        <h3 class=\"test-section__headline\">Disabled</h3>\n        {% include 'dropdown/snippets/dropdown-disabled.html' %}\n      </form>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"dropdown\">\n    {{ section.header('Dropdown with multiple options') }}\n    <div class=\"test-section__panel\">\n      <form action=\"#\">\n        {% include 'dropdown/snippets/dropdown-multiple.html' %}\n      </form>\n    </div>\n  </section> #}\n\n  <section class=\"test-section\" id=\"select\">\n    {{ section.header('Select') }}\n    <div class=\"test-section__panel\">\n      <form action=\"#\">\n        {% include 'select/snippets/select.html' %}\n        <h3 class=\"test-section__headline\">Invalid</h3>\n        {% include 'select/snippets/select-invalid.html' %}\n        <h3 class=\"test-section__headline\">Disabled</h3>\n        {% include 'select/snippets/select-disabled.html' %}\n      </form>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"fieldset-selects\">\n    {{ section.header('Fieldset with Selects') }}\n    <div class=\"test-section__panel\">\n      <form action=\"#\">\n        {% include 'fieldset/snippets/fieldset-selects.html' %}\n        <h3 class=\"test-section__headline\">Invalid state</h3>\n        {% include 'fieldset/snippets/fieldset-selects-invalid.html' %}\n      </form>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"textfield\">\n    {{ section.header('Textfield') }}\n    <div class=\"test-section__panel\">\n      <form action=\"#\">\n        <div class=\"aui-grid\">\n          <div class=\"aui-cell\">\n            {% include 'textfield/snippets/textfield-floating-label.html' %}\n            <h3 class=\"test-section__headline\">Invalid state</h3>\n            {% include 'textfield/snippets/textfield-invalid.html' %}\n            <h3 class=\"test-section__headline\">Valid state</h3>\n            {% include 'textfield/snippets/textfield-valid.html' %}\n            <h3 class=\"test-section__headline\">Disabled state</h3>\n            {% include 'textfield/snippets/textfield-disabled.html' %}\n          </div>\n        </div>\n      </form>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"textfield-icon\">\n    {{ section.header('Textfield with Icon') }}\n    <div class=\"test-section__panel\">\n      <form action=\"#\">\n        <div class=\"aui-grid\">\n          <div class=\"aui-cell\">\n            {% include 'textfield/snippets/textfield-icon.html' %}\n          </div>\n        </div>\n      </form>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"multiline-textfield\">\n    {{ section.header('Multiline Textfield') }}\n    <div class=\"test-section__panel\">\n      <form action=\"#\">\n        <div class=\"aui-grid\">\n          <div class=\"aui-cell\">\n            {% include 'textfield/snippets/textfield-multiline.html' %}\n            <h3 class=\"test-section__headline\">Invalid state</h3>\n            {% include 'textfield/snippets/textfield-multiline-invalid.html' %}\n            <h3 class=\"test-section__headline\">Disabled state</h3>\n            {% include 'textfield/snippets/textfield-multiline-disabled.html' %}\n          </div>\n        </div>\n      </form>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"textfield-counter\">\n    {{ section.header('Multiline Textfield with Counter') }}\n    <div class=\"test-section__panel\">\n      <form action=\"#\">\n        <div class=\"aui-grid\">\n          <div class=\"aui-cell\">\n            {% include 'textfield/snippets/textfield-multiline-counter.html' %}\n          </div>\n        </div>\n      </form>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"fieldset-textfields\">\n    {{ section.header('Fieldset with Textfields') }}\n    <div class=\"test-section__panel\">\n      <form action=\"#\">\n        {% include 'fieldset/snippets/fieldset-textfields.html' %}\n        <h3 class=\"test-section__headline\">Invalid state</h3>\n        {% include 'fieldset/snippets/fieldset-textfields-invalid.html' %}\n      </form>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"checkbox\">\n    {{ section.header('Checkbox') }}\n    <div class=\"test-section__panel\">\n      <form action=\"#\">\n        <div class=\"aui-grid\">\n          <div class=\"aui-cell aui-cell--4\">\n            <h3 class=\"test-section__headline\">Default and Checked</h3>\n            <div class=\"trailer-4\">\n              {% include 'checkbox/snippets/checkbox.html' %}\n            </div>\n            <div class=\"trailer-4\">\n              {% include 'checkbox/snippets/checkbox-checked.html' %}\n            </div>\n          </div>\n          <div class=\"aui-cell aui-cell--4\">\n            <h3 class=\"test-section__headline\">Invalid states</h3>\n            <div class=\"trailer-4\">\n              {% include 'checkbox/snippets/checkbox-invalid.html' %}\n            </div>\n            <div class=\"trailer-4\">\n              {% include 'checkbox/snippets/checkbox-checked-invalid.html' %}\n            </div>\n          </div>\n          <div class=\"aui-cell aui-cell--4\">\n            <h3 class=\"test-section__headline\">Disabled states</h3>\n            <div class=\"trailer-4\">\n              {% include 'checkbox/snippets/checkbox-disabled.html' %}\n            </div>\n            <div class=\"trailer-4\">\n              {% include 'checkbox/snippets/checkbox-checked-disabled.html' %}\n            </div>\n          </div>\n        </div>\n      </form>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"radio\">\n    {{ section.header('Radio') }}\n    <div class=\"test-section__panel\">\n      <form action=\"#\">\n        <div class=\"aui-grid\">\n          <div class=\"aui-cell aui-cell--6\">\n            <h3 class=\"test-section__headline\">Default and Checked</h3>\n          </div>\n          <div class=\"aui-cell aui-cell--6\">\n            <h3 class=\"test-section__headline\">Disabled states</h3>\n          </div>\n          <div class=\"aui-cell aui-cell--6 trailer-4\">\n            {% include 'radio/snippets/radio.html' %}\n          </div>\n          <div class=\"aui-cell aui-cell--6 trailer-4\">\n            {% include 'radio/snippets/radio-disabled.html' %}\n          </div>\n          <div class=\"aui-cell aui-cell--6 trailer-4\">\n            {% include 'radio/snippets/radio-checked.html' %}\n          </div>\n          <div class=\"aui-cell aui-cell--6 trailer-4\">\n            {% include 'radio/snippets/radio-checked-disabled.html' %}\n          </div>\n        </div>\n      </form>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"fieldset-radios\">\n    {{ section.header('Fieldset with Radios') }}\n    <div class=\"test-section__panel\">\n      <form action=\"#\">\n        {% include 'fieldset/snippets/fieldset-radios.html' %}\n        <h3 class=\"test-section__headline\">Invalid state</h3>\n        {% include 'fieldset/snippets/fieldset-radios-invalid.html' %}\n      </form>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"slider\">\n    {{ section.header('Slider') }}\n    <div class=\"test-section__panel\">\n      <form action=\"#\">\n        {% include 'slider/snippets/slider-output.html' %}\n        <h3 class=\"test-section__headline\">Disabled state</h3>\n        {% include 'slider/snippets/slider-disabled.html' %}\n        <h3 class=\"test-section__headline\">Range Slider</h3>\n        {% include 'slider/snippets/slider-range.html' %}\n        <h3 class=\"test-section__headline\">Range Slider disabled state</h3>\n        {% include 'slider/snippets/slider-range-disabled.html' %}\n      </form>\n    </div>\n  </section>\n\n  {# <section class=\"test-section\" id=\"alignment-test\">\n    {{ section.header('Alignment Test') }}\n    <div class=\"test-section__panel\">\n      <form action=\"#\">\n        <div class=\"aui-grid\">\n          <div class=\"aui-cell aui-cell--4\">\n            {% include 'textfield/snippets/textfield-floating-label.html' %}\n          </div>\n          <div class=\"aui-cell aui-cell--4\">\n            {% include 'select/snippets/select.html' %}\n          </div>\n          <div class=\"aui-cell aui-cell--4\">\n            {% include 'dropdown/snippets/dropdown.html' %}\n          </div>\n        </div>\n      </form>\n    </div>\n  </section> #}\n\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/index.nunjucks",
    "content": "{% extends 'pages/_layouts/page.nunjucks' %}\n\n{% block main %}\n  <section class=\"test-section\" id=\"index\">\n    <div class=\"test-section__panel\">\n      Audi UI Demo Page\n    </div>\n  </div>\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/loading/index.nunjucks",
    "content": "{% extends 'pages/_layouts/page-color.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n{% import 'pages/_macros/section.nunjucks' as section %}\n\n{% block main %}\n\n  <section class=\"test-section\" id=\"spinner\">\n    {{ section.header('Spinner') }}\n    <div class=\"test-section__panel\">\n      {% include 'spinner/snippets/spinner.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"continuous-spinner\">\n    {{ section.header('Continuous Spinner') }}\n    <div class=\"test-section__panel\">\n      {% include 'spinner/snippets/continuous-spinner.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"progress\">\n    {{ section.header('Progress') }}\n    <div class=\"test-section__panel\">\n      {% include 'progress/snippets/progress.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"continuous-progress\">\n    {{ section.header('Continuous Progress') }}\n    <div class=\"test-section__panel\">\n      {% include 'progress/snippets/continuous-progress.html' %}\n    </div>\n  </section>\n\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/modal/index.nunjucks",
    "content": "{% extends 'pages/_layouts/page-color.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n{% import 'pages/_macros/section.nunjucks' as section %}\n\n{% block main %}\n\n  {% include 'modal/snippets/modal.html' %}\n  {% include 'modal/snippets/modal-window.html' %}\n  {% include 'modal/snippets/modal-layer.html' %}\n  {% include 'modal/snippets/modal-morphing-layer.html' %}\n\n  <section class=\"test-section\" id=\"modal\">\n    {{ section.header('Modal') }}\n    <div class=\"section--modal\">\n      <div class=\"aui-button-group aui-button-group--primaries\">\n        <button class=\"aui-js-response aui-button aui-button--primary\" type=\"button\" data-toggle=\"modal\" data-target=\"modal-sample\">\n          <span class=\"aui-button__text\">Open modal</span>\n        </button>\n        <button class=\"aui-js-response aui-button aui-button--primary\" type=\"button\" data-toggle=\"modal\" data-target=\"modal-sample-window\">\n          <span class=\"aui-button__text\">Open modal as window</span>\n        </button>\n        <button class=\"aui-js-response aui-button aui-button--primary\" type=\"button\" data-toggle=\"modal\" data-target=\"modal-sample-layer\">\n          <span class=\"aui-button__text\">Open modal as layer</span>\n        </button>\n        <button class=\"aui-js-response aui-button aui-button--primary\" type=\"button\" data-toggle=\"modal\" data-target=\"modal-sample-morphing-layer\">\n          <span class=\"aui-button__text\">Morph modal</span>\n        </button>\n      </div>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"demo-content\">\n    <div class=\"test-section__panel\">\n      {% include 'pages/_shared/demo-content.nunjucks' %}\n    </div>\n  </section>\n\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/navigation/header.nunjucks",
    "content": "{% extends 'pages/_layouts/page.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n\n{% block main %}\n  <div class=\"aui-layout\">\n    <div class=\"aui-grid\">\n      <div class=\"aui-cell\">\n        <h1 class=\"aui-headline-1 trailer-8 leader-8\">The New Yorker</h1>\n        <h2 class=\"aui-headline-2 trailer-8\">Samuel Delany and the Past and Future of Science Fiction</h2>\n        <p>\n          In 1968, Samuel Delany attended the third annual Nebula Awards, presented by the Science Fiction and Fantasy Writers of America (SFWA). At the ceremony that night, “an eminent member of the SFWA,” as Delany later put it, gave a speech about changes\n          in science fiction, a supposed shift away from old-fashioned storytelling to “pretentious literary nonsense,” or something along those lines. At the previous Nebula Awards, the year before, Delany had won best novel for “Babel-17,” in which an\n          invented language has the power to destroy (his book shared the award with Daniel Keyes’s “Flowers for Algernon”), and earlier on that evening in 1968, Delany had again won best novel, for “The Einstein Intersection,” which tells of an abandoned\n          Earth colonized by aliens, who elevate the popular culture of their new planet into divine myths. Sitting at his table, listening to the speech, Delany realized that he was one of its principal targets. Minutes later, he won another award, this time\n          in the short-story category, for “Aye, and Gomorrah … ,” a tale of neutered space explorers who are fetishized back on Earth. As he made his way back to his seat after accepting the award, Isaac Asimov took Delany by the arm, pulled him close, and,\n          as Delany (who goes by the nickname Chip) recalled in his essay “Racism and Science Fiction,” said: “You know, Chip, we only voted you those awards because you’re Negro … !”\n        </p>\n      </div>\n    </div>\n  </div>\n  <div class=\"leader-8 trailer-8\">\n    {% include 'header/snippets/header-sticky.html' %}\n  </div>\n  <div class=\"aui-layout\">\n    {% include 'pages/_shared/demo-content.nunjucks' %}\n  </div>\n{% endblock %}\n\n{% block javascript %}{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/navigation/index.nunjucks",
    "content": "{% extends 'pages/_layouts/page-color.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n{% import 'pages/_macros/section.nunjucks' as section %}\n\n{% block main %}\n\n  <section class=\"test-section\" id=\"flyout\">\n    {{ section.header('Flyout') }}\n    <div class=\"test-section__panel\">\n      <div class=\"aui-grid\">\n        <div class=\"aui-cell aui-cell--4\">\n          <h3 class=\"test-section__headline\">left</h3>\n          {% include 'flyout/snippets/flyout.html' %}\n        </div>\n        <div class=\"aui-cell aui-cell--4 align-center\">\n          <h3 class=\"test-section__headline\">center</h3>\n          {% include 'flyout/snippets/flyout-center.html' %}\n        </div>\n        <div class=\"aui-cell aui-cell--4 align-right\">\n          <h3 class=\"test-section__headline\">right</h3>\n          {% include 'flyout/snippets/flyout-right.html' %}\n        </div>\n      </div>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"nav-bar\">\n    {{ section.header('Nav Bar') }}\n    <div class=\"test-section__panel\">\n      <div class=\"aui-grid\">\n        <div class=\"aui-cell\">\n          <h3 class=\"test-section__headline\">Default</h3>\n          {% include 'nav/snippets/nav-bar.html' %}\n        </div>\n        <div class=\"aui-cell leader-4\">\n          <h3 class=\"test-section__headline\">Small</h3>\n          {% include 'nav/snippets/nav-bar-small.html' %}\n        </div>\n      </div>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"nav-tab\">\n    {{ section.header('Nav Tab') }}\n    <div class=\"test-section__panel\">\n      <div class=\"aui-grid\">\n        <div class=\"aui-cell\">\n          <h3 class=\"test-section__headline\">Default</h3>\n          {% include 'nav/snippets/nav-tab.html' %}\n          <div class=\"leader-padding-10 trailer-padding-10 aui-color-gray90\" style=\"padding-left: 1.25rem; padding-right: 1.25rem;\">\n            Content area\n          </div>\n        </div>\n        <div class=\"aui-cell leader-4\">\n          <h3 class=\"test-section__headline\">Small</h3>\n          {% include 'nav/snippets/nav-tab-small.html' %}\n          <div class=\"leader-padding-10 trailer-padding-10 aui-color-gray90\" style=\"padding-left: 1rem; padding-right: 1rem;\">\n            Content area\n          </div>\n        </div>\n      </div>\n    </div>\n  </section>\n\n  {# <section class=\"test-section\" id=\"nav-tab-theme\">\n    {{ section.header('Nav Tab Overlap component with custom theme of gray10 and gray20') }}\n    <div class=\"test-section__panel\">\n      <div class=\"aui-grid\">\n        <div class=\"aui-cell\">\n          <div class=\"aui-color-gray10 aui-color-text-light leader-padding-10 trailer-padding-20\" style=\"padding-left: 1.25rem; padding-right: 1.25rem;\">\n            Content above\n          </div>\n        </div>\n      </div>\n      <div class=\"aui-grid\">\n        <div class=\"aui-cell\">\n          <nav class=\"aui-nav aui-js-nav aui-nav--tab aui-nav--overlap aui-theme-gray10-gray20\">\n            <div class=\"aui-nav__panel\">\n              <ul class=\"aui-nav__items\">\n                <li class=\"aui-nav__item\">\n                  <button class=\"aui-nav__action is-active\" type=\"button\">Action A</button>\n                </li>\n                <li class=\"aui-nav__item\">\n                  <button class=\"aui-nav__action\" type=\"button\">Action B</button>\n                </li>\n                <li class=\"aui-nav__item\">\n                  <button class=\"aui-nav__action\" type=\"button\">Action C</button>\n                </li>\n                <li class=\"aui-nav__item\">\n                  <button class=\"aui-nav__action is-disabled\" type=\"button\" disabled>Action Disabled</button>\n                </li>\n                <li class=\"aui-nav__item\">\n                  <button class=\"aui-nav__action\" type=\"button\">Action E</button>\n                </li>\n                <li class=\"aui-nav__item\">\n                  <button class=\"aui-nav__action\" type=\"button\">Action F</button>\n                </li>\n              </ul>\n            </div>\n          </nav>\n          <div class=\"aui-color-gray20 aui-color-text-light leader-padding-10 trailer-padding-10\" style=\"padding-left: 1.25rem; padding-right: 1.25rem;\">\n            Content below\n          </div>\n        </div>\n      </div>\n    </div>\n  </section> #}\n\n  {# <section class=\"test-section\" id=\"nav-dropdown\">\n    {{ section.header('Nav Dropdown') }}\n    <div class=\"test-section__panel\">\n      {% include 'nav/snippets/nav-dropdown.html' %}\n      <h3 class=\"test-section__headline\">Sticky</h3>\n      {% include 'nav/snippets/nav-dropdown-sticky.html' %}\n    </div>\n  </section> #}\n\n  <section class=\"test-section\" id=\"nav-list\">\n    {{ section.header('Nav List') }}\n    <div class=\"test-section__panel\">\n      {% include 'nav/snippets/nav.html' %}\n      <h3 class=\"test-section__headline\">With icons</h3>\n      {% include 'nav/snippets/nav-list-icons.html' %}\n      <h3 class=\"test-section__headline\">With large icons</h3>\n      {% include 'nav/snippets/nav-list-large-icons.html' %}\n    </div>\n  </section>\n\n  {# <section class=\"test-section\" id=\"header\">\n    {{ section.header('Header') }}\n    <div class=\"test-section__panel\">\n      <a class=\"aui-textlink\" href=\"header.html\">Sticky header demo</a>\n    </div>\n  </section> #}\n\n  <section class=\"test-section\" id=\"breadcrumb\">\n    {{ section.header('Breadcrumb') }}\n    <div class=\"test-section__panel\">\n      {% include 'breadcrumb/snippets/breadcrumb.html' %}\n    </div>\n  </section>\n\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/notification/alert-animate.nunjucks",
    "content": "{% extends 'pages/_layouts/default.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n\n{% block outside %}\n  {% include 'alert/snippets/alert-animate.html' %}\n{% endblock %}\n\n{% block page %}\n  <div class=\"aui-layout\">\n    {% include 'pages/_shared/demo-content.nunjucks' %}\n  </div>\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/notification/alert-danger.nunjucks",
    "content": "{% extends 'pages/_layouts/default.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n\n{% block outside %}\n  {% include 'alert/snippets/alert-danger.html' %}\n{% endblock %}\n\n{% block page %}\n  <div class=\"aui-layout\">\n    {% include 'pages/_shared/demo-content.nunjucks' %}\n  </div>\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/notification/alert-sticky.nunjucks",
    "content": "{% extends 'pages/_layouts/default.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n\n{% block outside %}\n  {% include 'alert/snippets/alert-sticky.html' %}\n{% endblock %}\n\n{% block page %}\n  <div class=\"aui-layout\">\n    {% include 'pages/_shared/demo-content.nunjucks' %}\n  </div>\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/notification/alert-success.nunjucks",
    "content": "{% extends 'pages/_layouts/default.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n\n{% block outside %}\n  {% include 'alert/snippets/alert-success.html' %}\n{% endblock %}\n\n{% block page %}\n  <div class=\"aui-layout\">\n    {% include 'pages/_shared/demo-content.nunjucks' %}\n  </div>\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/notification/alert-warning.nunjucks",
    "content": "{% extends 'pages/_layouts/default.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n\n{% block outside %}\n  {% include 'alert/snippets/alert-warning.html' %}\n{% endblock %}\n\n{% block page %}\n  <div class=\"aui-layout\">\n    {% include 'pages/_shared/demo-content.nunjucks' %}\n  </div>\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/notification/index.nunjucks",
    "content": "{% extends 'pages/_layouts/page.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n{% import 'pages/_macros/section.nunjucks' as section %}\n\n{% block main %}\n\n  <section class=\"test-section\" id=\"alert\">\n    {{ section.header('Alert Component') }}\n    <div class=\"test-section__panel\">\n      <ul class=\"leader-padding-10 trailer-padding-10\">\n        <li>\n          <a class=\"aui-textlink\" href=\"alert-sticky.html\" target=\"_blank\">Sticky Alert</a>\n        </li>\n        <li>\n          <a class=\"aui-textlink\" href=\"alert-animate.html\" target=\"_blank\">Animate Alert</a>\n        </li>\n        <li>\n          <a class=\"aui-textlink\" href=\"alert-success.html\" target=\"_blank\">Alert \"success\" status</a>\n        </li>\n        <li>\n          <a class=\"aui-textlink\" href=\"alert-warning.html\" target=\"_blank\">Alert \"warning\" status</a>\n        </li>\n        <li>\n          <a class=\"aui-textlink\" href=\"alert-danger.html\" target=\"_blank\">Alert \"danger\" status</a>\n        </li>\n      </ul>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"notification\">\n    {{ section.header('Notification Component') }}\n    <div class=\"test-section__panel\">\n      (See top right corner.)\n      <div class=\"aui-notification-container\" id=\"notifications\">\n        {% include 'notification/snippets/notification.html' %}\n        {% include 'notification/snippets/notification-light.html' %}\n        {% include 'notification/snippets/notification.html' %}\n        {% include 'notification/snippets/notification-light.html' %}\n      </div>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"badge\">\n    {{ section.header('Badge Component') }}\n    <div class=\"test-section__panel\">\n      <h3 class=\"test-section__headline\">Generic badge</h3>\n      {# {% include 'badge/snippets/badge-small.html' %} #}\n      {% include 'badge/snippets/badge-single-digit.html' %}\n      {% include 'badge/snippets/badge.html' %}\n      {% include 'badge/snippets/badge-small-text.html' %}\n      {# {% include 'badge/snippets/badge-success.html' %}\n      {% include 'badge/snippets/badge-warning.html' %}\n      {% include 'badge/snippets/badge-danger.html' %} #}\n      {# <h3 class=\"test-section__headline\">Badges on black</h3>\n      <div class=\"leader-padding-2 trailer-padding-2 aui-color-black align-center\">\n        <span class=\"aui-badge aui-color-white aui-color-text-dark\">\n          99\n        </span>\n        {% include 'badge/snippets/badge-danger.html' %}\n      </div> #}\n      <h3 class=\"test-section__headline\">Show/hide badge</h3>\n      {% include 'badge/snippets/badge-hidden.html' %}\n      <h3 class=\"test-section__headline\">Generic small badge</h3>\n      <div class=\"test-section__panel\">\n        {% include 'badge/snippets/badge-small.html' %}\n      </div>\n      <div class=\"test-section__panel\">\n        {% include 'badge/snippets/badge-small-label.html' %}\n      </div>\n      <div class=\"test-section__panel\">\n        {% include 'badge/snippets/badge-small-label-small.html' %}\n      </div>\n      <div class=\"test-section__panel\">\n        {% include 'badge/snippets/badge-small-icon.html' %}\n      </div>\n      <h3 class=\"test-section__headline\">Signal badge</h3>\n      <div class=\"test-section__panel\">\n        {% include 'badge/snippets/badge-signal-yellow.html' %}\n      </div>\n      <div class=\"test-section__panel\">\n        {% include 'badge/snippets/badge-signal-green.html' %}\n      </div>\n      <div class=\"test-section__panel\">\n        {% include 'badge/snippets/badge-signal-red.html' %}\n      </div>\n      <h3 class=\"test-section__headline\">Charging badge</h3>\n      <div class=\"test-section__panel\">\n        {% include 'badge/snippets/badge-charging-blue.html' %}\n      </div>\n      <div class=\"test-section__panel\">\n        {% include 'badge/snippets/badge-charging-green.html' %}\n      </div>\n    </div>\n  </section>\n\n{% endblock %}\n\n{% block javascript %}\n  <script type=\"text/javascript\">\n    var hiddenBadge = $('.aui-badge.is-hidden');\n    setInterval(function () {\n      hiddenBadge.toggleClass('is-hidden');\n    }, 3000);\n  </script>\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/pagination/index.nunjucks",
    "content": "{% extends 'pages/_layouts/page-color.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n{% import 'pages/_macros/section.nunjucks' as section %}\n\n{% block main %}\n\n  <section class=\"test-section\" id=\"indicator\">\n    {{ section.header('Indicator') }}\n    <div class=\"test-section__panel\">\n      <div>\n        {% include 'indicator/snippets/indicator.html' %}\n      </div>\n      <h3 class=\"test-section__headline\">Image theme with shadow</h3>\n      <div class=\"trailer-padding-2 align-center\" style=\"padding-top:27rem;background: no-repeat center/cover url('https://www.audi.com/content/dam/gbp2/company/brand/2020/1920x600-desktop-brand-stage.jpg');\">\n        {# {% include 'indicator/snippets/indicator-image.html' %} #}\n      </div>\n      <div class=\"align-center\">\n        {% include 'indicator/snippets/indicator.html' %}\n      </div>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"pager\">\n    {{ section.header('Pager') }}\n    <div class=\"test-section__panel\">\n      <h3 class=\"test-section__headline\">Normal Pager</h3>\n      {% include 'pager/snippets/pager.html' %}\n      <h3 class=\"test-section__headline\">Minimal Pager</h3>\n      {% include 'pager/snippets/pager-minimal.html' %}\n      <h3 class=\"test-section__headline\">Pager with pagination</h3>\n      {% include 'pager/snippets/pager-pagination.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"pagination\">\n    {{ section.header('Pagination') }}\n    <div class=\"test-section__panel\">\n      {% include 'pagination/snippets/pagination.html' %}\n    </div>\n  </section>\n\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/player/index.nunjucks",
    "content": "{% extends 'pages/_layouts/page.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n{% import 'pages/_macros/section.nunjucks' as section %}\n\n{% block main %}\n\n  <section class=\"test-section\" id=\"player-with-chrome\">\n    {{ section.header('Player with chrome') }}\n    <div class=\"test-section__panel\">\n      <div class=\"aui-player aui-js-player aui-player--preview\" style=\"background-image:url('https://www.audi.com/content/dam/gbp2/experience-audi/models-and-technology/production-models/q4-e-tron/1920x1080-q4-e-tron-sportback.jpg')\">\n        {% include 'player/snippets/player_video-container.html' %}\n        {% include 'player/snippets/player_chrome.html' %}\n      </div>\n      <h3 class=\"test-section__headline\">Complete state (and without preview)</h3>\n      <div class=\"aui-player aui-js-player is-complete\" style=\"background-image:url('https://www.audi.com/content/dam/gbp2/experience-audi/models-and-technology/production-models/q4-e-tron/1920x1080-q4-e-tron-sportback.jpg')\">\n        {% include 'player/snippets/player_video-container.html' %}\n        {% include 'player/snippets/player_chrome.html' %}\n      </div>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"Player-with-large-button\">\n    {{ section.header('Player with large button') }}\n    <div class=\"test-section__panel\">\n      <div class=\"aui-player aui-js-player\" style=\"background-image:url('https://www.audi.com/content/dam/gbp2/experience-audi/models-and-technology/production-models/q4-e-tron/1920x1080-q4-e-tron-sportback.jpg')\">\n        {% include 'player/snippets/player_video-container.html' %}\n        {% include 'player/snippets/player_overlay.html' %}\n        {% include 'player/snippets/player_large-button.html' %}\n      </div>\n      <h3 class=\"test-section__headline\">Complete state</h3>\n      <div class=\"aui-player aui-js-player is-complete\" style=\"background-image:url('https://www.audi.com/content/dam/gbp2/experience-audi/models-and-technology/production-models/q4-e-tron/1920x1080-q4-e-tron-sportback.jpg')\">\n        {% include 'player/snippets/player_video-container.html' %}\n        {% include 'player/snippets/player_overlay.html' %}\n        {% include 'player/snippets/player_large-button.html' %}\n      </div>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"video-complete-state-with-related-content\">\n    {{ section.header('Player with related content; complete state') }}\n    <div class=\"test-section__panel\">\n      <div class=\"aui-player aui-js-player is-complete\" style=\"background-image:url('https://www.audi.com/content/dam/gbp2/experience-audi/models-and-technology/production-models/q4-e-tron/1920x1080-q4-e-tron-sportback.jpg')\">\n        {% include 'player/snippets/player_video-container.html' %}\n        {% include 'player/snippets/player_overlay.html' %}\n        {% include 'player/snippets/player_related-container.html' %}\n      </div>\n    </div>\n  </section>\n\n{% endblock %}\n\n{% block javascript %}\n  <script src=\"https://cdn.rawgit.com/kayahr/jquery-fullscreen-plugin/master/jquery.fullscreen-min.js\"></script>\n  <script type=\"text/javascript\">\n    $('.aui-js-player-play-toggle').off('click').on('click', function (event) {\n      $(this).closest('.aui-player').toggleClass('is-playing');\n      $(this).closest('.aui-player').removeClass('is-complete');\n    });\n    $('.aui-js-player-mute-toggle').off('click').on('click', function (event) {\n      $(this).closest('.aui-player').toggleClass('is-mute');\n    });\n    $('.aui-js-player-fullscreen-toggle').off('click').on('click', function (event) {\n      $(this).closest('.aui-player').toggleFullScreen();\n    });\n  </script>\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/popover/index.nunjucks",
    "content": "{% extends 'pages/_layouts/page.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n{% import 'pages/_macros/section.nunjucks' as section %}\n\n{% block main %}\n\n  <section class=\"test-section\" id=\"popver\">\n    {{ section.header('Popover') }}\n    <div class=\"test-section__panel\">\n      <div class=\"trailer-padding-10\">\n        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute\n          irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>\n        <div class=\"leader-4\">\n          {% include 'popover/snippets/popover.html' %}\n        </div>\n        <div class=\"leader-4\">\n          {% include 'popover/snippets/popover-image.html' %}\n        </div>\n        <div class=\"leader-4\">\n          {% include 'popover/snippets/popover-dark.html' %}\n        </div>\n      </div>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"popover-placement\">\n    {{ section.header('Popover placement') }}\n    <div class=\"test-section__panel\">\n      <div>\n        <button id=\"sample-popover-top\" class=\"aui-js-response aui-button aui-button--primary\" type=\"button\">\n          <span class=\"aui-button__text\">Popover on top</span>\n        </button>\n        <div class=\"aui-popover aui-js-popover\" role=\"tooltip\" for=\"sample-popover-top\" data-placement=\"top\">\n          <div class=\"aui-popover__content\">\n            <div class=\"aui-popover__text\">\n              <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>\n            </div>\n          </div>\n        </div>\n      </div>\n      <div class=\"leader-4\">\n        <button id=\"sample-popover-right\" class=\"aui-js-response aui-button aui-button--primary\" type=\"button\">\n          <span class=\"aui-button__text\">Popover on right</span>\n        </button>\n        <div class=\"aui-popover aui-js-popover\" role=\"tooltip\" for=\"sample-popover-right\" data-placement=\"right\">\n          <div class=\"aui-popover__content\">\n            <div class=\"aui-popover__text\">\n              <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>\n            </div>\n          </div>\n        </div>\n      </div>\n      <div class=\"leader-4\">\n        <button id=\"sample-popover-bottom\" class=\"aui-js-response aui-button aui-button--primary\" type=\"button\">\n          <span class=\"aui-button__text\">Popover on bottom</span>\n        </button>\n        <div class=\"aui-popover aui-js-popover\" role=\"tooltip\" for=\"sample-popover-bottom\" data-placement=\"bottom\">\n          <div class=\"aui-popover__content\">\n            <div class=\"aui-popover__text\">\n              <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>\n            </div>\n          </div>\n        </div>\n      </div>\n      <div class=\"leader-4 align-right\">\n        <button id=\"sample-popover-left\" class=\"aui-js-response aui-button aui-button--primary\" type=\"button\">\n          <span class=\"aui-button__text\">Popover on left</span>\n        </button>\n        <div class=\"aui-popover aui-js-popover\" role=\"tooltip\" for=\"sample-popover-left\" data-placement=\"left\">\n          <div class=\"aui-popover__content\">\n            <div class=\"aui-popover__text\">\n              <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </section>\n\n  <div class=\"aui-layout leader-30\">\n    {% include 'pages/_shared/demo-content.nunjucks' %}\n  </div>\n\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/switch/index.nunjucks",
    "content": "{% extends 'pages/_layouts/page-color.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n{% import 'pages/_macros/section.nunjucks' as section %}\n\n{% block main %}\n\n  <section class=\"test-section\" id=\"switch\">\n    {{ section.header('Switch') }}\n    <div class=\"test-section__panel\">\n      {% include 'switch/snippets/switch.html' %}\n      <h3 class=\"test-section__headline\">Disabled state</h3>\n      {% include 'switch/snippets/switch-disabled.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"switch-checked\">\n    {{ section.header('Switch checked') }}\n    <div class=\"test-section__panel\">\n      {% include 'switch/snippets/switch-checked.html' %}\n      <h3 class=\"test-section__headline\">Disabled state</h3>\n      {% include 'switch/snippets/switch-checked-disabled.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"switch-checked\">\n    {{ section.header('Switch with text on the left') }}\n    <div class=\"test-section__panel\">\n      {% include 'switch/snippets/switch-text-left.html' %}\n      <h3 class=\"test-section__headline\">Disabled state</h3>\n      {% include 'switch/snippets/switch-text-left-disabled.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"switch-without-text\">\n    {{ section.header('Switch without text') }}\n    <div class=\"test-section__panel\">\n      {% include 'switch/snippets/switch-without-text.html' %}\n      <span>(Just some text to control positioning.)</span>\n    </div>\n  </section>\n\n  {# <section class=\"test-section\" id=\"switch-equal\">\n    {{ section.header('Switch with equal options') }}\n    <div class=\"test-section__panel\">\n      {% include 'switch/snippets/switch-equal.html' %}\n      <h3 class=\"test-section__headline\">Disabled state</h3>\n      {% include 'switch/snippets/switch-equal-disabled.html' %}\n      <h3 class=\"test-section__headline\">Checked and disabled state</h3>\n      {% include 'switch/snippets/switch-equal-checked-disabled.html' %}\n    </div>\n  </section> #}\n\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/table/index.nunjucks",
    "content": "{% extends 'pages/_layouts/page-color.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n{% import 'pages/_macros/section.nunjucks' as section %}\n\n{% block main %}\n\n  <section class=\"test-section\" id=\"table-stretched\">\n    {{ section.header('Table stretched to 100% width') }}\n    <div class=\"test-section__panel\">\n      {% include 'table/snippets/table-stretched.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"table-responsive\">\n    {{ section.header('Table with responsive behaviour') }}\n    <div class=\"test-section__panel\">\n      {% include 'table/snippets/table-responsive.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"table-stretched-responsive\">\n    {{ section.header('Table stretched to 100% width with responsive behaviour') }}\n    <div class=\"test-section__panel\">\n      {% include 'table/snippets/table-stretched-responsive.html' %}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"table-colored\">\n    {{ section.header('Table with colored and padded cells') }}\n    <div class=\"test-section__panel\">\n      {% include 'table/snippets/table-colored.html' %}\n    </div>\n  </section>\n\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/tooltip/index.nunjucks",
    "content": "{% extends 'pages/_layouts/page.nunjucks' %}\n{% import 'pages/_macros/icon.nunjucks' as icon %}\n{% import 'pages/_macros/section.nunjucks' as section %}\n\n{% block main %}\n\n  <section class=\"test-section\" id=\"tooltip-light-background\">\n    {{ section.header('Tooltip on light background') }}\n    <div class=\"test-section__panel\">\n      <div class=\"leader-padding-10 trailer-padding-10\">\n\n        <div class=\"aui-grid\">\n          <div class=\"aui-cell aui-cell--6\">\n            {% include 'tooltip/snippets/tooltip.html' %}\n          </div>\n          <div class=\"aui-cell aui-cell--6\">\n            {% include 'tooltip/snippets/tooltip-dark.html' %}\n          </div>\n        </div>\n      </div>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"tooltip-images-light-background\">\n    {{ section.header('Tooltip with images on light background') }}\n    <div class=\"test-section__panel\">\n      <div class=\"leader-padding-10 trailer-padding-10\">\n        <div class=\"aui-grid\">\n          <div class=\"aui-cell aui-cell--6\">\n            {% include 'tooltip/snippets/tooltip-image.html' %}\n          </div>\n          <div class=\"aui-cell aui-cell--6\">\n            {% include 'tooltip/snippets/tooltip-image-dark.html' %}\n          </div>\n        </div>\n      </div>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"tooltip-dark-background\">\n    {{ section.header('Tooltip on dark background') }}\n    <div class=\"test-section__panel\">\n      <div class=\"aui-color-black aui-color-text-light leader-padding-5 trailer-padding-5\" style=\"padding-left: 20px;padding-right: 20px\">\n        <div class=\"aui-grid\">\n          <div class=\"aui-cell aui-cell--6\">\n            <p>\n              Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud\n              <a id=\"sample2-tooltip\" href=\"#\" class=\"aui-textlink\">exercitation ullamco</a>\n              laboris nisi ut aliquip ex ea commodo consequat.\n            </p>\n            <span class=\"aui-tooltip aui-js-tooltip\" for=\"sample2-tooltip\">\n              <span class=\"aui-tooltip__text\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</span>\n            </span>\n          </div>\n          <div class=\"aui-cell aui-cell--6\">\n            <p>\n              Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis nostrud\n              <a id=\"sample2-tooltip-dark\" href=\"#\" class=\"aui-textlink\">exercitation ullamco</a>\n              laborisnisi ut aliquip ex ea commodo consequat.\n            </p>\n            <span class=\"aui-tooltip aui-js-tooltip aui-tooltip--dark\" for=\"sample2-tooltip-dark\">\n              <span class=\"aui-tooltip__text\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</span>\n            </span>\n          </div>\n        </div>\n      </div>\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"tooltip-image-dark-background\">\n    {{ section.header('Tooltip with image on dark background') }}\n    <div class=\"test-section__panel\">\n      <div class=\"aui-color-black aui-color-text-light leader-padding-5 trailer-padding-5\" style=\"padding-left: 20px;padding-right: 20px\">\n        <div class=\"aui-grid\">\n          <div class=\"aui-cell aui-cell--6\">\n            <p>\n              Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud\n              <a id=\"sample2-tooltip-image\" href=\"#\" class=\"aui-textlink\">exercitation ullamco</a>\n              laboris nisi ut aliquip ex ea commodo consequat.\n            </p>\n            <span class=\"aui-tooltip aui-js-tooltip\" for=\"sample2-tooltip-image\"><img class=\"aui-tooltip__media\" src=\"https://www.audi.com/content/dam/gbp2/experience-audi/models-and-technology/concept-cars/2021/skysphere_2021_3371_sRGB_1920x1080.jpg\" alt=\"\"/>\n              <span class=\"aui-tooltip__text\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</span>\n            </span>\n          </div>\n          <div class=\"aui-cell aui-cell--6\">\n            <p>\n              Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis nostrud\n              <a id=\"sample2-tooltip-image-dark\" href=\"#\" class=\"aui-textlink\">exercitation ullamco</a>\n              laboris nisi ut aliquip ex ea commodo consequat.\n            </p>\n            <span class=\"aui-tooltip aui-js-tooltip aui-tooltip--dark\" for=\"sample2-tooltip-image-dark\"><img class=\"aui-tooltip__media\" src=\"https://www.audi.com/content/dam/gbp2/experience-audi/models-and-technology/concept-cars/2021/skysphere_2021_3371_sRGB_1920x1080.jpg\" alt=\"\"/>\n              <span class=\"aui-tooltip__text\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</span>\n            </span>\n          </div>\n        </div>\n      </div>\n    </div>\n  </section>\n\n{% endblock %}\n"
  },
  {
    "path": "test/visual/pages/typography/index.nunjucks",
    "content": "{% extends 'pages/_layouts/page-color.nunjucks' %}\n{% import 'pages/_macros/section.nunjucks' as section %}\n\n{% block main %}\n\n  <section class=\"test-section\" id=\"headline-1\">\n    {{ section.header('Headline 1') }}\n    <div class=\"test-section__panel\">\n      {% include 'typography/snippets/headline-1.html'%}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"headline-2\">\n    {{ section.header('Headline 2') }}\n    <div class=\"test-section__panel\">\n      {% include 'typography/snippets/headline-2.html'%}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"headline-3\">\n    {{ section.header('Headline 3') }}\n    <div class=\"test-section__panel\">\n      {% include 'typography/snippets/headline-3.html'%}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"headline-4\">\n    {{ section.header('Headline 4') }}\n    <div class=\"test-section__panel\">\n      {% include 'typography/snippets/headline-4.html'%}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"headline-5\">\n    {{ section.header('Headline 5') }}\n    <div class=\"test-section__panel\">\n      {% include 'typography/snippets/headline-5.html'%}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"headline-6\">\n    {{ section.header('Headline 6') }}\n    <div class=\"test-section__panel\">\n      {% include 'typography/snippets/headline-6.html'%}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"paragraph\">\n    {{ section.header('Paragraphs') }}\n    <div class=\"test-section__panel\">\n      {% include 'typography/snippets/paragraph.html'%}\n      <h3 class=\"test-section__headline\">Shortread</h3>\n      {% include 'typography/snippets/paragraph-shortread.html'%}\n      <h3 class=\"test-section__headline\">Big text</h3>\n      {% include 'typography/snippets/paragraph-big.html'%}\n      <h3 class=\"test-section__headline\">Small text</h3>\n      {% include 'typography/snippets/paragraph-small.html'%}\n      <h3 class=\"test-section__headline\">Caption</h3>\n      {% include 'typography/snippets/paragraph-caption.html'%}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"textlink\">\n    {{ section.header('Textlink') }}\n    <div class=\"test-section__panel\">\n      {% include 'typography/snippets/textlink.html'%}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"list-arrow\">\n    {{ section.header('List with arrows') }}\n    <div class=\"test-section__panel\">\n      {% include 'typography/snippets/list-arrow.html'%}\n    </div>\n  </section>\n\n  <section class=\"test-section\" id=\"list-number\">\n    {{ section.header('List numbered') }}\n    <div class=\"test-section__panel\">\n      {% include 'typography/snippets/list-number.html'%}\n    </div>\n  </section>\n\n{% endblock %}\n"
  },
  {
    "path": "test/visual/scss/components/align.scss",
    "content": ".align-right {\n  text-align: right;\n}\n\n.align-center {\n  text-align: center;\n}\n"
  },
  {
    "path": "test/visual/scss/components/color.scss",
    "content": ".aui-color {\n  &-image,\n  &-imagedark {\n    background-attachment: fixed;\n    background-repeat: no-repeat;\n    background-position: center;\n    background-size: cover;\n  }\n  &-image {\n    background-image: url('../content/image.jpg');\n  }\n  &-imagedark {\n    background-image: url('../content/image-dark.jpg');\n  }\n}\n"
  },
  {
    "path": "test/visual/scss/components/control.scss",
    "content": ".test-control {\n  padding: 1em;\n  @include fontfamily;\n  font-family: $aui-font-default;\n  font-size: 12px;\n  font-weight: 400;\n  line-height: normal;\n  background-color: lighten(#bbb4ae, 20%);\n  color: $demo-highlight;\n  background: rgba($demo-highlight, 0.5);\n  border-bottom: 1px solid rgba($demo-highlight, 0.25);\n\n  &__setting {\n    font-family: $aui-font-default;\n    display: inline-block;\n    margin-right: 36px;\n  }\n}\n"
  },
  {
    "path": "test/visual/scss/components/header.scss",
    "content": ".test-header {\n}\n"
  },
  {
    "path": "test/visual/scss/components/main.scss",
    "content": ".test-main {\n  display: block;\n  padding: unit(10) 0 unit(20);\n}\n"
  },
  {
    "path": "test/visual/scss/components/nav.scss",
    "content": ".test-nav {\n  display: flex;\n  flex-flow: row wrap;\n  margin: 0;\n  padding: 0;\n  @include fontfamily;\n  font-size: 12px;\n  font-weight: 400;\n  line-height: normal;\n  list-style: none;\n  background: $demo-highlight;\n  border-bottom: 1px solid rgba($demo-highlight, 0.25);\n\n  &__item {\n    flex: 1 0 auto;\n  }\n\n  &__action {\n    display: block;\n    padding: .25em 1em;\n    margin: 1px;\n    color: $aui-color-white;\n    background: rgba(0, 0, 0, 0.1);\n    text-align: center;\n    font-family: $aui-font-default;\n\n    &:hover {\n      background: $aui-color-gray20;\n    }\n  }\n}\n"
  },
  {
    "path": "test/visual/scss/components/section.scss",
    "content": ".test-section {\n\n  // margin-left: auto;\n  // margin-right: auto;\n  // padding-left: $aui-grid-container-offset;\n  // padding-right: $aui-grid-container-offset;\n\n  @extend .aui-layout;\n\n  padding-top: unit(10);\n\n  &__title {\n    padding: unit(4) 0 calc(#{unit(1)} - 1px);\n    margin-bottom: unit(4);\n    padding: unit(1) unit(2);\n    font-family: $aui-font-default;\n    font-size: 12px;\n    font-weight: bold;\n    line-height: unit(4);\n    color: white;\n    background: $demo-highlight;\n  }\n\n  &__headline {\n    display: block;\n    padding: unit(4) 0 calc(#{unit(1)} - 1px);\n    margin-top: unit(4);\n    margin-bottom: unit(4);\n    padding: unit(1) unit(2);\n    font-family: $aui-font-default;\n    font-size: 12px;\n    font-weight: bold;\n    line-height: unit(4);\n    color: white;\n    background: rgba($demo-highlight, 0.5);\n  }\n\n  & + & {\n    margin-top: unit(30);\n  }\n\n}\n"
  },
  {
    "path": "test/visual/scss/components/snippet.scss",
    "content": ".test-snippet {\n  &-title {\n    margin: unit(6) 0 calc(#{unit(4)} - 1px);\n    @include fontfamily;\n    font-size: 12px;\n    font-weight: bold;\n    line-height: unit(4);\n    color: white;\n    background: rgba($demo-highlight, .5);\n    padding: unit(1) unit(2);\n  }\n\n  &-divider {\n    height: unit(4);\n  }\n}\n"
  },
  {
    "path": "test/visual/scss/components/spacing.scss",
    "content": ".margin {\n  @for $i from 1 through 10 {\n    &-top-#{$i} {\n      margin-top: unit($i) !important;\n    }\n    &-bottom-#{$i} {\n      margin-bottom: unit($i) !important;\n    }\n    &-vertical-#{$i} {\n      margin-top: unit($i) !important;\n      margin-bottom: unit($i) !important;\n    }\n  }\n}\n\n.leader {\n  $steps: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100;\n  @each $i in $steps {\n    &-#{$i} {\n      margin-top: unit($i) !important;\n    }\n  }\n}\n\n.trailer {\n  $steps: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100;\n  @each $i in $steps {\n    &-#{$i} {\n      margin-bottom: unit($i) !important;\n    }\n  }\n}\n\n.leader-padding {\n  $steps: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100;\n  @each $i in $steps {\n    &-#{$i} {\n      padding-top: unit($i) !important;\n    }\n  }\n}\n\n.trailer-padding {\n  $steps: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100;\n  @each $i in $steps {\n    &-#{$i} {\n      padding-bottom: unit($i) !important;\n    }\n  }\n}\n"
  },
  {
    "path": "test/visual/scss/mixins.scss",
    "content": "@mixin fontfamily {\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;\n}\n"
  },
  {
    "path": "test/visual/scss/test.scss",
    "content": "// Import Audi Type:\n$auditype-font-src: '../fonts';\n@import '/node_modules/@audi/audi-type/dist/css/audi-type.css';\n\n// Import Audi Icon:\n@import '/node_modules/@audi/audi-icon/dist/css/audi-icon.css';\n\n// Import library requirements:\n@import '../../../src/requirements';\n\n// Import Audi UI library:\n@import '../../../src/index';\n\n// Import and define demo stuff:\n$demo-highlight: #0096ED;\n$demo-highlight-opacity: 1;\n@import 'mixins';\n@import 'components/align';\n@import 'components/color';\n@import 'components/control';\n@import 'components/header';\n@import 'components/main';\n@import 'components/nav';\n@import 'components/section';\n@import 'components/snippet';\n@import 'components/spacing';\n"
  }
]