[
  {
    "path": ".drone.sec",
    "content": "eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhHQ00ifQ.j9veXnMfiC38KqZqVlEv-j3kQ4P8M9bmPYrCb3gkGhYNxJAs43Hzj30_rFiPJvW_JFjX2yGIVqGmxImJxDq9EXU0burdWRIcdKywASKtO5UCigwaBx0q_bPcXiPYCvT21ADX9HcukA_e04XcKExPJUJTlOJhfAA747p8lqheBXQjcidZJ6nVc6xt8dLpqyhcRZIX6wbKOKX3p8K60BnlHzqZ2YnnTuqk9XblJRwKwSIuSlJWqSKhYwLpJmWf8mtB9n7_Rn2vU1W3nK4o1j_-o1R6skxraNmdw9sbk26UNBUb8UtTdwbaMt0LnE_CD1TNSHW7gy05bmKjmZxGEXMH_w.gHtDLk7eq3RvXES7.f0peFsiIVOy7XTiYxakjJzPS_3U0rMesmc3PEjXbfz_ywNiGrSpbvA7lvnIgY6VgWNZyXZUmVjj34_FuwRCi6O6dqtRyYVy2-q5cJIVFWvpOtUdlQGcOfSL-TiyJS49AsbiXk0RI6-pi2hA9sfwOX8fbZK4YC1rcvEHc5xUd5WJhn0zRjyV0SowVGktVwjKXznHyxV5FCFqBHq83R7uOQIEm-nmMdlooUqQrWc3sKpwJv7fhyHfu5N5L33SIdrPHVhnc4HfCeuSESTvxV2XwZjzFxcj9Kr4BlnZyG7Dbn8WBaYEDkJ0HTie2h4MbeOewY9_SQ4YfYVhWwFzZTDCmD-Ou09G5siDA_0SyHZpS1JZI0NkKibdIkLEHB_BdpSSyFDTOFRbjf_2beXNOtD8-DCis0ZYR5h3coz6sOZaSde2Sh3IcCOLolaQvt5pZN4JB1JJspLjv6iD5R2VYGTJy8fYfH7juZi6NVq4316eQepoFgtjsjusTkTKcczkSPYxvgnjegdmNQvqKWMgZKcgV9IWdtDZCgBr3W3_K92G0xRkyMnmHevEfC0WzSTYE5SY4spDix2WF-of1SF_jrIjC3LSQlwXCHdeF8yoouWlVDqFvVB5jLlSjJG0yWi7GYgxwnweIhmduO4ojZbHUIX3UGDMYbxZkXiEegLXMCqQtTrkvutZsZFSnmULHCS1J-JF6JVgifnPOn6TSOh7h-FG-x72AtgX6W7_gmZRl_wPFTzDFtkvgsB5g6aB8jycAQfQhFSSOtNfMl4mfwqcT2dAf_orKohwGCwMfnamLOIfzfNcRXE1xHyClHTiTiDK3Nf7MMnvcxxmGq_yVjF9mSffBJMP25hMSMlg3DYqdbT88JVHXHRgE3vrl15BocpHU3E1ZEKF4VEV4bGE2MKkOOW0dBzKqFwAbFBivoD3vZEzKXpwTwg88cLwLPLnqsWyoNRKpWNFhnu6X_BmcCXNI7JP_gQxyRTe7ZHOCOW_oL93cDgA0nGWQG05pI1H87SYhZhByiaUlAwtMbo-wE_aMzwiLYjBdJ4QiOUk4Kzf4-P5QaWBEPEAHwbfuRjtSCPd9LYJzqGdCdabsv3mtgVPNdzDOTnI7mvdD5oLd9XEHV9vNuOI-xjpF4Tz130G_6V0Cvq3-oR2hCHE8ZugX9Qja7KqIwSM6sxV4JAlGv2etfJRqV01mdD2W_CnkSfWBoz6soTHTqrg1y1380DS42WvXNFAUhNj92J6n-W0MNfXWcsaFGRBwjTExerTK3HveEt3iB-gmx3DcPhXyM1FM39DbyQiHbwFV2Aw7cuQP6uYc5qgYPVdxrfrasvwPZweubHtrttZJNbbbBY2wJTbXrUX0X08U4NpDcTf80s43XNjO_P19to-tIz8WBr2BHY_-jA-ea7zIVlZGdn624tUcubHWxUsoci0jBlPX8jWQnhx4MI5vDDVKRSOotJdD7t4BD47SNJLi2H31wGOgi8MS9JTw9g8-ZXdN-WfCN4nNi5NTMhq3FbRBXIV1BRbVhvcWrpp2g4eAsDlv7ycUjcGFfExaePB1RhiqQwj-RSmXz_GbWPwOoUw3lacjoKEcf8787l6NWh9dYRXiaSzM1rNvHg4vNb2LPTkUGsPhtxUj-xO-S4ENw2FBQnPkgN0IHRKPPcagdUEWWGMEMBLFjZrTF1ihMEFLga6MnTMOoFPR7y9NjpBIHBm324aEV0IUfi2o4ML-IitbFhWSUeeyIKqBOW3ZFZMuNOQYlt0obuZYhS77vT-VIgNdr2OiGj8FSNkN6uqi-IxvjRqKBAnQaBuRgfPtMAg2AoQ4FiiALEZIEg3V9SunpmNH8WEonz3Pka-_en9dcRXffzrlVKyUAPs45Tg5330JN6OaI6jOtTSLZN0KEY2p77sTPxuPQsG5TuIX9g6mZiRZVFlzlJsi2VfhFdmR0GtZV8cwp0Sc9PVtUHkuAfZlHGaWTBGB4P7ttJlHu9iU3pEXMWrOABgf5JWan4uBwPDw_faU7vKvZ6s6PEIG7uM13RPTAnmQKCcn5xC_8Rao_GIseAQG-BKDZAsAKnJFXuUmwrwoaMOxyF6S8pw-1IFh-vr0FMne3DIl-K9T5NEjD7nF-HAXciVi4dGd1ayTymq6adh68nkNis4-ANauctQlFzGNp0_Na-3BaiDJi_DGhjXFY-w5ckLLlTuEaYVc99y8DQcTuOjfhTKo1AKcprKBe_FNmpwxjA6Pb4PO8NLOG7jksyPueFRgjfnITeTzRXuW-L4v63jR20It9wiW4T26NsYGo0sdz7C7DW3apD6Tv2wcqdr7_rbNhzqjDKBlFG-cuGBWkTaDdb5QiMxAqpBp71xt7IE4zh9vpUEUo0jL7uliKzPKch8nttjcNbhXBVkplWRwCzOLK9Kwbb1WPgNIt5Z_-qigFeHWo6p1r9ZZnO2uIhX5fXQ7ufja3NN2D5tJ1DjnHT0J-ubJd-pq2U5tOOuDRKuDlVXxa_0vWDLGEp5pOp0BQa6vUj9f8X8g5N9iajAappzI_zLG4HzEG8P0t4xDO6pO8NWSwcHgXl5VVIsXf7dVhlquH_ewkOUVNRXBk7GrhGxYjygX_yscHo57fY4O0ePexeuXoZxQw-dob99C4ZrnQQ0RhSU0n7WpByssezhB04pYbAzx_A998b5MP2gxTe4kVARgv5AgInzwx4KlrgCLpXt7bq3ZpDvk2SHSNVbGpkNFVNj3frYfo7NVxET9EAJ7VvoVeuyb7PBL-ix4cdbHkbEjp14PvvZEzJxz6ad7RflXkrd2PMJEiJ6ay8wYPFEPjO8v31cEwp9d8TOhsDfQ0O2nTGmcK_BG9ZFjIvZpIyYlrgSdcXOncL4i7LCDOmMlJdwEvAm4HMhnuMUwdLzty_V0iXqPyJR7gSpyhEgV0e7XEieUsPTNDcZ6yw14zQW6m7rjqg8XFXPw9JCTbqUIGgDAHDrSLGaknemFzlek6nq_KrTAhxlFFyopNNHMgMkjbqgw8kyFo-YVZ5dkvwgX8ux0pxW8MgBVTI4wz3vonPX-ilBKAOdrujRd6282Nih0u9ri6UjFSqikoUN_hu_K6O7gQdATrUNKEjYJc_sMKegaOk1jraogA8_YG8t-oWu8YEjzTjkehdPkhiqrCLZUDHsq3mFu0yqT4AyRjb-4S53Zfs6DqtQv8THl-iimvCV1GFTquN0fBnQRjdJh.YLmdpxyEz-RjqU8lHkRGYg"
  },
  {
    "path": ".drone.yml",
    "content": "# Note: if you modify this file, don't forget to update\n# checksum in .drone.sec with:\n# drone secure --repo google/material-design-lite --checksum\nclone:\n  depth: 1\ncache:\n  mount:\n    - node_modules\nmatrix:\n  NODE_VERSION:\n    - 4\n    - 5\nbuild:\n  image: crhym3/ci:node$$NODE_VERSION-go15\n  environment:\n    - CHROME=https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb\n    - WEBDRIVER=http://chromedriver.storage.googleapis.com/2.16/chromedriver_linux64.zip\n    - DISPLAY=:99\n  commands:\n    - npm update -qq\n    # build and unit test\n    - gulp all\n    - gulp mocha:closure\n    # additional browser tests\n    # do this after the build and unit tests to fail fast\n    - Xvfb $DISPLAY &\n    - curl -sSLo chrome.deb $CHROME && dpkg -i chrome.deb\n    - curl -sSLo driver.zip $WEBDRIVER && unzip -q driver.zip -d /usr/bin\npublish:\n  # see http://addons.drone.io/google_cloud_storage/ for details\n  gcs:\n    when:\n      repo: google/material-design-lite\n      branch: master\n      event: push\n      matrix:\n        NODE_VERSION: 5\n    auth_key: >\n      $$SERVICE_ACCOUNT_KEY\n    source: dist\n    target: mdl-staging\n    cache_control: public,max-age=0\n    acl:\n      - allUsers:READER\n    gzip:\n      - html\n      - css\n      - js\n      - svg\n"
  },
  {
    "path": ".editorconfig",
    "content": "# editorconfig.org\nroot = true\n\n[*]\nindent_style = space\nindent_size = 2\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline = true\n\n[*.md]\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": ".gitattributes",
    "content": "* text=auto\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "content": "** PLEASE READ THIS BEFORE FILING AN ISSUE **\n\n## Feature Requests / Breaking Changes in mdl-1.x\n\nThe MDL core team has actively begun work on the next major version of MDL, dubbed **MDL v2**. Because we are a small team that's hyper-focused on delivering the best Material Design Library possible for the web, _it is highly unlikely that we will be actively working on new features or making backwards-incompatible changes for MDL as it currently exists._\n\nIf there is a non-breaking feature you would like to see implemented in `mdl-1.x` and are willing to contribute, we'd be happy to offer assistance with you doing so. But we will not personally be actively working on said features.\n\nWhile we are just getting started with our next version of MDL, you can see our current progress on [master](https://github.com/google/material-design-lite/tree/master) as well as an overview of the direction we're headed in our [(WIP) developer guide](https://github.com/google/material-design-lite/blob/master/docs/DEVELOPER.md) as well as our [initial POC branch](https://github.com/google/material-design-lite/tree/experimental/v2-architecture-poc) for our new architecture.\n\nIf you're interested in information for a specific MDL v2 component, check out our [v2-component issues](https://github.com/google/material-design-lite/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20label%3Av2-component) to see which v2 milestone it's associated with and feel free to subscribe to that issue for updates.\n\n## Bugs\n\nPlease include the following information with your bug report:\n\n> What MDL Version are you using? (please be specific, e.g. _major.minor.patch_)\n\n\n> What browser(s) is this bug affecting (including version)? \n\n\n> What OS (and version) are you using?\n\n\n> What are the steps to reproduce the bug? Can you create a plunker/codepen/jsfiddle which reproduces it?\n\n\n> What is the expected behavior?\n\n\n> What is the actual behavior?\n\n\n> Any other information you believe would be useful?"
  },
  {
    "path": ".gitignore",
    "content": "node_modules\n.tmp\ngulp-cache\n.DS_Store\ndocs/out\n.publish\n/dist\n.drone.sec.yml\n"
  },
  {
    "path": ".jscsrc",
    "content": "{\n  \"preset\": \"google\",\n  \"disallowSpacesInAnonymousFunctionExpression\": null,\n  \"validateLineBreaks\": \"LF\",\n  \"validateIndentation\": 2,\n  \"excludeFiles\": [\"node_modules/**\"],\n  \"maximumLineLength\": 130,\n  \"validateQuoteMarks\": \"'\",\n  \"requireDotNotation\": false,\n  \"requireCamelCaseOrUpperCaseIdentifiers\": {\"allowedPrefixes\": [\"opt_\"]},\n  \"jsDoc\": {\n    \"checkAnnotations\": {\n      \"preset\": \"closurecompiler\",\n      \"extra\": {\n        \"type\": true,\n        \"suppress\": true\n      }\n    },\n    \"checkTypes\": \"strictNativeCase\",\n    \"enforceExistence\": \"exceptExports\"\n  }\n}\n"
  },
  {
    "path": ".jshintrc",
    "content": "{\n  \"node\": true,\n  \"browser\": true,\n  \"esnext\": true,\n  \"bitwise\": true,\n  \"curly\": true,\n  \"eqeqeq\": true,\n  \"immed\": true,\n  \"newcap\": true,\n  \"noarg\": true,\n  \"undef\": true,\n  \"unused\": \"vars\",\n  \"strict\": true,\n  \"sub\": true,\n  \"globals\": {\n    \"componentHandler\": true\n  }\n}\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "\n# Contributing to Material Design Lite\n\nWe'd love for you to contribute to our source code and to make Material Design Lite even better than it is today! Here are the guidelines we'd like you to follow:\n\n - [Code of Conduct](#coc)\n - [Question or Problem?](#question)\n - [Issues and Bugs](#issue)\n - [Feature Requests](#feature)\n - [Submission Guidelines](#submit)\n - [Coding Rules](#rules)\n - [Signing the CLA](#cla)\n\n## <a name=\"coc\"></a> Code of Conduct\n\nAs contributors and maintainers of the Material Design Lite project, we pledge to respect everyone who contributes by posting issues, updating documentation, submitting pull requests, providing feedback in comments, and any other activities.\n\nCommunication through any of Material Design Lite's channels (GitHub, StackOverflow, Google+, Twitter, etc.) must be constructive and never resort to personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.\n\nWe promise to extend courtesy and respect to everyone involved in this project regardless of gender, gender identity, sexual orientation, disability, age, race, ethnicity, religion, or level of experience. We expect anyone contributing to the Material Design Lite project to do the same.\n\nIf any member of the community violates this code of conduct, the maintainers of the Material Design Lite project may take action, removing issues, comments, and PRs or blocking accounts as deemed appropriate.\n\nIf you are subject to or witness unacceptable behavior, or have any other concerns, please drop us a line at addyo@google.com.\n\n## <a name=\"question\"></a> Got a Question or Problem?\n\nIf you have questions about how to use Material Design Lite, please direct these to [StackOverflow][stackoverflow] and use the `material-design-lite` tag. We are also available on GitHub issues.\n\nIf you feel that we're missing an important bit of documentation, feel free to\nfile an issue so we can help. Here's an example to get you started:\n\n```\nComponent (if any):\n\nWhat are you trying to do or find out more about?\n\nWhere have you looked?\n\nWhere did you expect to find this information?\n```\n\nOr, if you're looking for a new design template:\n\n```\nPlease provide a short summary of the template you’re looking for.\n\nWhat makes this template interesting or challenging from a design perspective?\n\nPlease provide any URLs to good examples of this type of page that you may have come across.\n```\n\n## <a name=\"issue\"></a> Found an Issue?\nIf you find a bug in the source code or a mistake in the documentation, you can help us by\nsubmitting an issue to our [GitHub Repository][github]. Even better you can submit a Pull Request\nwith a fix.\n\nSee [below](#submit) for some guidelines.\n\n## <a name=\"feature\"></a> Want a Feature?\nYou can request a new feature by submitting an issue to our [GitHub Repository][github].\n\nHere is a template to get you started:\n\n```\nIs this a new component, or a missing feature in an existing one?\nComponent name:\nMaterial Design spec URL for the component (if any):\n\nWhat does this component or feature allow you to do which isn’t possible at the moment?\n\nPlease provide any URLs or screenshots of good examples of usage of this component or feature that you may have come across.\n```\n\nIf you would like to implement a new feature then consider what kind of change it is:\n\n* **Major Changes** that you wish to contribute to the project should be discussed first on our\n[issue tracker][] so that we can better coordinate our efforts, prevent\nduplication of work, and help you to craft the change so that it is successfully accepted into the\nproject.\n* **Small Changes** can be crafted and submitted to the [GitHub Repository][github] as a Pull Request.\n\n## <a name=\"submit\"></a> Submission Guidelines\n\n### Submitting an Issue\nBefore you submit your issue search the archive, maybe your question was already answered.\n\nIf your issue appears to be a bug, and hasn't been reported, open a new issue.\nHelp us to maximize the effort we can spend fixing issues and adding new\nfeatures, by not reporting duplicate issues.  Providing the following information will increase the\nchances of your issue being dealt with quickly:\n\n* **Overview of the Issue** - if an error is being thrown a non-minified stack trace helps\n* **Motivation for or Use Case** - explain why this is a bug for you\n* **Material Design Lite Version(s)** - is it a regression?\n* **Browsers and Operating System** - is this a problem with all browsers or only IE9?\n* **Reproduce the Error** - provide a live example (using JSBin) or a unambiguous set of steps.\n* **Related Issues** - has a similar issue been reported before?\n* **Suggest a Fix** - if you can't fix the bug yourself, perhaps you can point to what might be\n  causing the problem (line of code or commit)\n\n**If you get help, help others. Good karma rulez!**\n\nHere's a template to get you started:\n\n```\nMDL version:\nBrowser:\nBrowser version:\nOperating system:\nOperating system version:\nURL, if applicable (you can use a [codepen as a starting point][http://codepen.io/pen/def?fork=xGWgXa]):\n\nWhat steps will reproduce the problem:\n1.\n2.\n3.\n\nWhat is the expected result?\n\nWhat happens instead of that?\n\nPlease provide any other information below, and attach a screenshot if possible.\n```\n\n### Submitting a Pull Request\nBefore you submit your pull request consider the following guidelines:\n\n* Search [GitHub](https://github.com/google/material-design-lite/pulls) for an open or closed Pull Request\n  that relates to your submission. You don't want to duplicate effort.\n* Please sign our [Contributor License Agreement (CLA)](#cla) before sending pull\n  requests. We cannot accept code without this.\n* Make your changes in a new git branch:\n\n     ```shell\n     git checkout -b my-fix-branch master\n     ```\n\n* Create your patch, **including appropriate test cases**.\n* Follow our [Coding Rules](#rules).\n* Run the full Material Design Lite test suite (`gulp test`),\n  and ensure that all tests pass.\n* Avoid checking in files that shouldn't be tracked (e.g `node_modules`, `gulp-cache`, `.tmp`, `.idea`). We recommend using a [global .gitignore](https://help.github.com/articles/ignoring-files/#create-a-global-gitignore) for this.\n* Make sure **not** to include a recompiled version of the files found in `/css` and `/js` as part of your PR. We will generate these automatically.\n* Commit your changes using a descriptive commit message.\n\n     ```shell\n     git commit -a\n     ```\n  Note: the optional commit `-a` command line option will automatically \"add\" and \"rm\" edited files.\n\n* Build your changes locally to ensure all the tests pass:\n\n    ```shell\n   gulp\n    ```\n\n* Push your branch to GitHub:\n\n    ```shell\n    git push origin my-fix-branch\n    ```\n\n* In GitHub, send a pull request to `material-design-lite:master`.\n* If we suggest changes then:\n  * Make the required updates.\n  * Re-run the Material Design Lite test suite to ensure tests are still passing.\n  * Rebase your branch and force push to your GitHub repository (this will update your Pull Request):\n\n    ```shell\n    git rebase master -i\n    git push origin my-fix-branch -f\n    ```\n\nThat's it! Thank you for your contribution!\n\n#### After your pull request is merged\n\nAfter your pull request is merged, you can safely delete your branch and pull the changes\nfrom the main (upstream) repository:\n\n* Delete the remote branch on GitHub either through the GitHub web UI or your local shell as follows:\n\n    ```shell\n    git push origin --delete my-fix-branch\n    ```\n\n* Check out the master branch:\n\n    ```shell\n    git checkout master -f\n    ```\n\n* Delete the local branch:\n\n    ```shell\n    git branch -D my-fix-branch\n    ```\n\n* Update your master with the latest upstream version:\n\n    ```shell\n    git pull --ff upstream master\n    ```\n\n## <a name=\"rules\"></a> Coding Rules\n\nWe generally follow the [Google JavaScript style guide][js-style-guide] with a few minor exceptions documented in our [JSCS configuration][jscs-config].\n\n[JSCS](http://jscs.info) is a tool for linting code against a style guide and has plugins available for both editors and build tools. Should\nyou find that you would prefer to automatically format your code to match our style guide, you can use the JSCS [autoformatting][autoformatting]\nfeature.\n\n## <a name=\"cla\"></a> Signing the CLA\n\nPlease sign our Contributor License Agreement (CLA) before sending pull requests. For any code\nchanges to be accepted, the CLA must be signed. It's a quick process, we promise!\n\n* For individuals we have a [simple click-through form][individual-cla].\n* For corporations we'll need you to\n  [print, sign and one of scan+email, fax or mail the form][corporate-cla].\n\n*This guide was inspired by the [AngularJS contribution guidelines](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md).*\n\n[github]: https://github.com/google/material-design-lite\n[issue tracker]: https://github.com/google/material-design-lite/issues\n[individual-cla]: http://code.google.com/legal/individual-cla-v1.0.html\n[corporate-cla]: http://code.google.com/legal/corporate-cla-v1.0.html\n[js-style-guide]: http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml\n[jsbin]: http://jsbin.com/\n[stackoverflow]: http://stackoverflow.com/questions/tagged/material-design-lite\n[global-gitignore]: https://help.github.com/articles/ignoring-files/#create-a-global-gitignore\n[autoformatting]: https://medium.com/@addyosmani/auto-formatting-javascript-code-style-fe0f98a923b8\n[jscs-config]: https://github.com/google/material-design-lite/blob/master/.jscsrc\n"
  },
  {
    "path": "LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright 2015 Google Inc\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       http://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   All code in any directories or sub-directories that end with *.html or\n   *.css is licensed under the Creative Commons Attribution International\n   4.0 License, which full text can be found here:\n   https://creativecommons.org/licenses/by/4.0/legalcode.\n\n   As an exception to this license, all html or css that is generated by\n   the software at the direction of the user is copyright the user. The\n   user has full ownership and control over such content, including\n   whether and how they wish to license it.\n"
  },
  {
    "path": "README.md",
    "content": "# Material Design Lite\n\n[![GitHub version](https://badge.fury.io/gh/google%2Fmaterial-design-lite.svg)](https://badge.fury.io/gh/google%2Fmaterial-design-lite)\n[![npm version](https://badge.fury.io/js/material-design-lite.svg)](https://badge.fury.io/js/material-design-lite)\n[![Bower version](https://badge.fury.io/bo/material-design-lite.svg)](https://badge.fury.io/bo/material-design-lite)\n[![Gitter version](https://img.shields.io/gitter/room/gitterHQ/gitter.svg)](https://gitter.im/google/material-design-lite)\n[![Dependency Status](https://david-dm.org/google/material-design-lite.svg)](https://david-dm.org/google/material-design-lite)\n\n> An implementation of [Material Design](http://www.google.com/design/spec/material-design/introduction.html)\ncomponents in vanilla CSS, JS, and HTML.\n\nMaterial Design Lite (MDL) lets you add a Material Design look and feel to your\nstatic content websites. It doesn't rely on any JavaScript frameworks or\nlibraries. Optimized for cross-device use, gracefully degrades in older\nbrowsers, and offers an experience that is accessible from the get-go.\n\n> ### Limited support\n\n> Material Design Lite is now in limited support, with development having moved to the\n> [Material Components for the web](https://github.com/material-components/material-components-web) repository.\n\n> No further development is taking place in MDL by the core team, but we are happy to review PRs, fix critical bugs and\n> push out new releases. No breaking changes will be accepted.\n\n## Use MDL on your site?\n\n**This document is targeted at developers that will contribute to or compile\nMDL. If you are looking to use MDL on your website or web app please head to\n[getmdl.io](http://getmdl.io).**\n\n## Browser Support\n\n\n| IE9 | IE10 | IE11 | Chrome | Opera | Firefox | Safari | Chrome (Android) | Mobile Safari |\n|-----|------|------|--------|-------|---------|--------|------------------|---------------|\n| B   | A    | A    | A      | A     | A       | A      | A                | A             |\n\nA-grade browsers are fully supported. B-grade browsers will gracefully degrade\nto our CSS-only experience.\n\n### Download / Clone\n\nClone the repo using Git:\n\n```bash\ngit clone https://github.com/google/material-design-lite.git\n```\n\nAlternatively you can [download](https://github.com/google/material-design-lite/archive/master.zip)\nthis repository.\n\nWindows users, if you have trouble compiling due to line endings then make sure\nyou configure git to checkout the repository with `lf` (unix) line endings. This\ncan be achieved by setting `core.eol`.\n\n```bash\ngit config core.eol lf\ngit config core.autocrlf input\ngit rm --cached -r .\ngit reset --hard\n```\n\n> Remember, the master branch is considered unstable. Do not use this in\nproduction. Use a tagged state of the repository, npm, or bower for stability!\n\n## Feature requests\n\nMDL is currently in limited support mode, with no further development taking place by the core team.\nWe are happy to accept and review pull requests for new functionality, however, as long as there are no breaking\nchanges.\n\n## Want to contribute?\n\nIf you found a bug, have any questions or want to contribute. Follow our\n[guidelines](https://github.com/google/material-design-lite/blob/mdl-1.x/CONTRIBUTING.md),\nand help improve the Material Design Lite. For more information visit our\n[wiki](https://github.com/google/material-design-lite/wiki).\n\nPlease use the default branch, `mdl-1.x`.\n\nTake note that [Material Components for Web](https://github.com/material-components/material-components-web), which is MDL v2, is under early Alpha stages (which means everything is a moving target, and we can change anything at any moment). Use with caution.\n\nHowever, we would absolutely love to have people testing MCW and provide feedback about their experiences using it, especially integrating with other frameworks and libraries.\n\n## License\n\n© Google, 2015. Licensed under an\n[Apache-2](https://github.com/google/material-design-lite/blob/master/LICENSE)\nlicense.\n"
  },
  {
    "path": "bower.json",
    "content": "{\n  \"name\": \"material-design-lite\",\n  \"version\": \"1.3.0\",\n  \"homepage\": \"https://github.com/google/material-design-lite\",\n  \"authors\": [\n    \"Material Design Lite team\"\n  ],\n  \"description\": \"Material Design Components in CSS, JS and HTML\",\n  \"main\": [\n    \"material.min.css\",\n    \"material.min.js\"\n  ],\n  \"keywords\": [\n    \"material\",\n    \"design\",\n    \"styleguide\",\n    \"style\",\n    \"guide\"\n  ],\n  \"license\": \"Apache-2\",\n  \"ignore\": [\n    \"**/.*\",\n    \"node_modules\",\n    \"bower_components\",\n    \"./lib/.bower_components\",\n    \"test\",\n    \"tests\"\n  ]\n}\n"
  },
  {
    "path": "docs/_assets/codepen.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\nfunction CodeBlockCodePen() {\n  'use strict';\n\n  this.codepenButtons = document.getElementsByClassName('codepen-button');\n  this.init();\n}\n\n// Also insert the MDL Library.\nCodeBlockCodePen.prototype.MDLIBS = [\n  '<!-- Material Design Lite -->',\n  '<script src=\"$$hosted_libs_prefix$$/$$version$$/material.min.js\"></script>',\n  '<link rel=\"stylesheet\" href=\"$$hosted_libs_prefix$$/$$version$$/material.indigo-pink.min.css\">',\n  '<!-- Material Design icon font -->',\n  '<link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">'\n];\n\n/**\n * Creates CodePen buttons in all code blocks (`pre`) that are HTML.\n */\nCodeBlockCodePen.prototype.init = function() {\n  'use strict';\n\n  [].slice.call(this.codepenButtons).forEach(function(form) {\n    // Attach the click event to the codepen button.\n    form.addEventListener('click', this.clickHandler(form, form.parentNode));\n  }, this);\n};\n\n/**\n * Extracts the parts of the text that is inside occurrences of the tag and\n * endTag.\n * @param  {String} tag The start tag which content we need to extract\n * @param  {String} endTag The end tag which content we need to extract\n * @param  {String} text The text for which we need to extract the content in\n *                       the given tags\n * @return {Object} An Object with 2 attributes: textRemainder which contains\n *                  the text not inside any of the given tag. and tagContent\n *                  which contains a concatenation of what was inside the tags\n */\nCodeBlockCodePen.prototype.extractTagsContent = function(tag, endTag, text) {\n  'use strict';\n  var tagStartIndex;\n  var tagEndIndex;\n  var tagText = '';\n\n  while (text.indexOf(tag) !== -1) {\n    tagStartIndex = text.indexOf(tag);\n    tagEndIndex = text.indexOf(endTag);\n    tagText += text.substring(tagStartIndex + tag.length, tagEndIndex);\n    text = text.substring(0, tagStartIndex).trim() + '\\n' +\n      text.substr(tagEndIndex + endTag.length).trim();\n  }\n\n  return {textRemainder: text, tagContent: tagText};\n};\n\n/**\n * Click handler for CodePen buttons. Prepares the content for CodePen and\n * submits the form.\n * @param  {HTMLElement} form The CodePen form\n * @param  {HTMLElement} pre The pre containing the code to send to CodePen\n * @return {function} The click handler\n */\nCodeBlockCodePen.prototype.clickHandler = function(form, pre) {\n  'use strict';\n\n  return function() {\n\n    // Track codepen button clicks\n    if (typeof ga !== 'undefined') {\n      ga('send', {\n        hitType: 'event',\n        eventCategory: 'codepen',\n        eventAction: 'click',\n        eventLabel: window.location.pathname +\n          (window.location.hash ? window.location.hash : '')\n      });\n    }\n\n    // Modify relative URLs to make them absolute.\n    var code = pre.textContent.replace('../assets/demos/',\n      window.location.origin + '/assets/demos/');\n\n    // Extract <style> blocks from the source code.\n    var cssExtractResult = this.extractTagsContent('<style>', '</style>',\n      code);\n\n    code = cssExtractResult.textRemainder;\n    var css = cssExtractResult.tagContent.trim();\n\n    // Extract <script> blocks from the source code.\n    var jsExtractResult = this.extractTagsContent('<script>', '</script>',\n      code);\n\n    code = jsExtractResult.textRemainder.trim();\n    var js = jsExtractResult.tagContent.trim();\n\n    // Remove <input> children from previous clicks.\n    while (form.firstChild) {\n      form.removeChild(form.firstChild);\n    }\n    var input = document.createElement('input');\n    input.setAttribute('type', 'hidden');\n    input.setAttribute('name', 'data');\n    input.setAttribute('value', JSON.stringify(\n      {\n        title: 'Material Design Lite components demo',\n        html:\n          '<html>\\n' +\n          '  <head>\\n    ' + this.MDLIBS.join('\\n    ') + '\\n  </head>\\n' +\n          '  <body>\\n    ' + code.split('\\n').join('\\n    ') + '\\n  </body>\\n' +\n          '</html>',\n        css: css,\n        js: js}));\n    form.appendChild(input);\n\n    form.submit();\n  }.bind(this);\n};\n\nwindow.addEventListener('load', function() {\n  'use strict';\n\n  new CodeBlockCodePen();\n});\n"
  },
  {
    "path": "docs/_assets/components.css",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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.mdl-components {\n  display: flex;\n}\n\n.mdl-components-index {\n  box-sizing: border-box;\n  position: relative;\n  padding-top: 64px;\n}\n\n.mdl-components-index-text {\n  max-width: 960px;\n  margin: 0;\n}\n.mdl-components-index-text .mdl-components-dl {\n  justify-content: flex-start;\n  margin-left: 40px;\n}\n\n.mdl-components-img {\n  position: absolute;\n  margin-top: 24px;\n  left: 40px;\n  height: 90%;\n  width: 90%;\n  max-height: 600px;\n  background: url('../assets/compindex_2x.png') no-repeat top left / contain;\n}\n\n.mdl-components-text {\n  margin: 0;\n  padding: 0;\n}\n\nmdl-components-dl {\n  padding: 0.5em;\n  width: 80%;\n}\n\nmdl-components-dt {\n  float: left;\n  clear: left;\n  width: 150px;\n  font-weight: bold;\n}\n\nmdl-components-dd {\n  margin: 0 0 0 150px;\n  padding: 0 0 0.5em 0;\n}\n\n.mdl-components .mdl-components__nav {\n  display: inline-block;\n  background: #fff;\n  width: 200px;\n  box-sizing: border-box;\n  padding: 24px 0;\n  flex-shrink: 0;\n  z-index: 1;\n}\n\n.mdl-components .mdl-components__pages {\n  display: inline-block;\n  flex-grow: 1;\n}\n.mdl-components .mdl-components__pages {\n  padding-bottom: 120px;\n}\n.mdl-components .mdl-components__link {\n  margin: 16px;\n  font-weight: normal;\n  color: rgba(0, 0, 0, 0.66);\n  position: relative;\n  padding-left: 72px;\n  min-height: 48px;\n  display: table;\n  line-height: 48px;\n}\n\n.mdl-components .mdl-components__link.is-active {\n  font-weight: bold;\n  color: #c2185b;\n}\n\n.content {\n  background: #fafafa;\n}\n\n.mdl-components .mdl-components__page {\n  display: none;\n  min-height: 1000px;\n}\n\n.mdl-components .docs-toc {\n  margin-bottom: 60px;\n  margin-left: 32px;\n}\n\n.mdl-components .component-title {\n  margin-bottom: 60px;\n  margin-top: 30px;\n  margin-left: 32px;\n}\n\n.mdl-components .component-title h3 {\n  font-size: 16px;\n  font-weight: 500;\n  margin-top: 80px;\n  text-transform: uppercase;\n}\n\n.mdl-components .snippet-code pre.language-markup code {\n  padding-left: 40px;\n}\n\n.mdl-components .mdl-components__page.is-active {\n  display: block;\n}\n\n.mdl-components__link-image {\n  display: inline-block;\n  margin: 0 10px;\n  position: absolute;\n  left: 0;\n  top: 0;\n  background-color: #ddd;\n  background-position: center;\n  background-repeat: no-repeat;\n  background-size: auto 48px;\n\n  border-radius: 50%;\n  height: 46px;\n  width: 46px;\n}\n\n.mdl-components__warning {\n  width: 100%;\n  max-width: 640px;\n  margin: 0 auto;\n  background-color: #FFF9C4;\n  padding: 16px;\n  border-radius: 2px;\n  color: #212121;\n}\n\n.mdl-components__link.is-active .mdl-components__link-image {\n  box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.14),\n      0 3px 3px -2px rgba(0, 0, 0, 0.2),\n      0 1px 8px 0 rgba(0, 0, 0, 0.12);\n}\n.docs-readme {\n  width: 100%;\n  max-width: 640px;\n  margin: 0 auto;\n}\n\n.docs-readme .language-markup {\n  width: 100%;\n}\n@media (max-width: 850px) {\n  .mdl-components .component-title,\n  .mdl-components .docs-toc {\n    margin-left: 0;\n  }\n  .mdl-components .snippet-code pre.language-markup code {\n    padding-left: 8px;\n  }\n  .docs-layout-content {\n    position: relative;\n    height: 100%;\n    overflow: hidden !important;\n  }\n\n  .mdl-components .mdl-components__nav {\n    position: fixed;\n    top: 64px;\n    left: 0;\n    display: block;\n    flex-wrap: nowrap;\n    width: 100%;\n    height: 120px;\n    overflow-x: auto;\n    overflow-y: hidden;\n    padding: 8px;\n    z-index: 100;\n    white-space: nowrap;\n  }\n\n  .mdl-components-index-text .mdl-components-dl {\n    margin: 0px;\n  }\n  .mdl-components-img {\n    left: 8px;\n  }\n  .components .content .about-panel {\n    padding: 8px;\n  }\n\n  .mdl-components__nav .mdl-components__link {\n    display: inline-block;\n    vertical-align: top;\n    height: 100%;\n    margin: 0;\n    width: auto;\n    min-width: 48px;\n    margin-right: 8px;\n    padding-left: 0px;\n    padding-top: 10px;\n  }\n\n  .mdl-components__nav .mdl-components__link > *{\n    display: block;\n    width: auto;\n    margin: 0 auto;\n    text-align: center;\n  }\n  .mdl-components__nav .mdl-components__link > .mdl-components__link-image {\n    position: static;\n    width: 48px;\n  }\n\n  .content {\n    padding-top: 64px !important;\n    padding-left: 0 !important;\n    overflow-y: auto;\n    height: 100%;\n  }\n}\n"
  },
  {
    "path": "docs/_assets/components.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\nfunction MaterialComponentsNav() {\n  'use strict';\n\n  this.element_ = document.querySelector('.mdl-js-components');\n  if (this.element_) {\n    this.componentLinks = this.element_.querySelectorAll('.mdl-components__link');\n    this.activeLink = null;\n    this.activePage = null;\n\n    this.init();\n  }\n}\n\n/**\n * Stores a Map of the components links using their corresponding hashFragment\n * as key.\n * @type {Object.<string, HTMLElement>}\n * @private\n */\nMaterialComponentsNav.prototype.linksMap_ = {};\n\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n * @enum {string}\n * @private\n */\nMaterialComponentsNav.prototype.CssClasses_ = {\n  ACTIVE: 'is-active'\n};\n\n/**\n * Initializes the MaterialComponentsNav component.\n */\nMaterialComponentsNav.prototype.init = function() {\n  'use strict';\n\n  for (var i = 0; i < this.componentLinks.length; i++) {\n    this.componentLinks[i].addEventListener('click',\n        this.clickHandler(this.componentLinks[i]));\n    // Mapping the list of links using their hash fragment.\n    this.linksMap_['#' + this.componentLinks[i].href.split('#')[1]] =\n        this.componentLinks[i];\n  }\n\n  // If a Hash fragment is available on the page then display the section.\n  this.displaySectionForFragment(window.location.hash.split('/')[0]);\n\n  // If the hash fragment changes we display the corresponding section.\n  // We won't support older browser as it's not efficient.\n  if ('onhashchange' in window) {\n    var this_ = this;\n    window.onhashchange = function () {\n      this_.displaySectionForFragment(window.location.hash.split('/')[0]);\n    };\n  }\n};\n\n/**\n * Displays the section for the given hash fragment.\n * @param  {String} fragment The hash fragment used in the link to the section\n */\nMaterialComponentsNav.prototype.displaySectionForFragment = function(fragment) {\n  'use strict';\n\n  if (fragment && this.linksMap_[fragment] && this.linksMap_[fragment].click) {\n    this.linksMap_[fragment].click();\n  } else if (!fragment || fragment === '' || fragment === '#') {\n    this.displayIndexPage();\n  }\n};\n\n/**\n * Displays the index page for the components.\n */\nMaterialComponentsNav.prototype.displayIndexPage = function() {\n  'use strict';\n\n  if (this.activeLink) {\n    this.activeLink.classList.remove(this.CssClasses_.ACTIVE);\n  }\n  this.activeLink = null;\n  if (this.activePage) {\n    this.activePage.classList.remove(this.CssClasses_.ACTIVE);\n  }\n  this.activePage = this.element_.querySelector('#index-section');\n  this.activePage.classList.add(this.CssClasses_.ACTIVE);\n}\n\n/**\n * Returns a clickHandler for a navigation link.\n * @param  {HTMLElement} link the navigation link\n * @return {function} the click handler\n */\nMaterialComponentsNav.prototype.clickHandler = function(link) {\n  'use strict';\n\n  return function(e) {\n    e.preventDefault();\n    var page = this.findPage(link);\n    if (this.activePage) {\n      this.activePage.classList.remove(this.CssClasses_.ACTIVE);\n    }\n    if (this.activeLink) {\n      this.activeLink.classList.remove(this.CssClasses_.ACTIVE);\n    }\n\n    this.activePage = page;\n    this.activeLink = link;\n\n    link.classList.add(this.CssClasses_.ACTIVE);\n    page.classList.add(this.CssClasses_.ACTIVE);\n\n    // Add an history entry and display the hash fragment in the URL.\n    var section = window.location.hash.split('/')[0];\n    var linkWithoutHash = link.href.split('#')[1];\n    if (section !== '#' + linkWithoutHash) {\n      history.pushState(null, 'Material Design Lite', link);\n      // Scroll to top of page\n      document.getElementById('content').scrollTop = 0;\n      // Track the specific component page view in Google analytics\n      if (ga) {\n        ga('send', 'pageview', '/components/' + linkWithoutHash);\n      }\n    }\n    return true;\n  }.bind(this);\n};\n\n/**\n * Finds the corresponding page for a navigation link.\n * @param  {HTMLElement} link the navigation link\n * @return {HTMLElement} the corresponding page\n */\nMaterialComponentsNav.prototype.findPage = function(link) {\n  'use strict';\n\n  var href = link.href.split('#')[1];\n  return this.element_.querySelector('#' + href);\n};\n\nwindow.addEventListener('load', function() {\n  'use strict';\n\n  new MaterialComponentsNav();\n});\n"
  },
  {
    "path": "docs/_assets/customizer.css",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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#wheel {\n  position: relative;\n  height: 100%;\n  display: flex;\n  flex-direction: row;\n  justify-content: center;\n  align-items: center;\n}\n.is-small-screen .mdl-gen  #wheel {\n  min-height: 100vw;\n}\n#wheel svg {\n  width: 100%;\n  height: 100%;\n}\n\n@media (min-width: 840px) {\n  #wheel svg {\n    max-width: 100%;\n    width: 100%;\n  }\n}\n#wheel .mdl-gen-download {\n  position: absolute;\n  left: 50%;\n  top: 50%;\n}\n#wheel .mdl-gen-download .mdl-button {\n  transform: translate(-50%, -50%);\n}\n#wheel g[data-color] {\n  opacity: 1;\n  transition: opacity 0.2s cubic-bezier(0.4, 0.0, 1, 1);\n}\n#wheel .selector {\n  opacity: 0;\n  transition: opacity 0.4s cubic-bezier(0.4, 0.0, 1, 1);\n  fill: #BDBDBD;\n}\n#wheel .selected .selector {\n  opacity: 1;\n}\n#wheel .label {\n  text-anchor: middle;\n  opacity: 0;\n  transition: opacity 0.4s cubic-bezier(0.4, 0.0, 1, 1);\n  fill: white;\n  font-size: 24px;\n}\n#wheel .selected--1 .label--1,\n#wheel .selected--2 .label--2 {\n  opacity: 1;\n}\n#wheel svg.hide-nonaccents g[data-color=\"Blue Grey\"]:not(.selected),\n#wheel svg.hide-nonaccents g[data-color=\"Brown\"]:not(.selected),\n#wheel svg.hide-nonaccents g[data-color=\"Grey\"]:not(.selected) {\n  opacity: 0.12;\n}\n#wheel .selected {\n  opacity: 1 !important;\n}\n.mdl-gen > .mdl-grid {\n  max-width: 1280px;\n  padding: 0;\n}\n.mdl-gen__preview {\n  position: relative;\n  height: 350px;\n}\n.mdl-gen__preview .mdl-layout__container {\n  height: auto;\n}\n.mdl-gen__preview .mdl-layout__content {\n  padding: 32px;\n  background-color: #EFEFEF;\n  display: flex;\n  flex-direction: column;\n  justify-content: flex-start;\n  align-items: flex-start;\n}\n.mdl-gen__preview .mdl-layout__content .mdl-button {\n  margin: 0;\n}\n.mdl-gen__preview .mdl-layout__content .mdl-button--fab {\n  align-self: flex-end;\n}\n.mdl-gen__preview .mdl-layout__content h3 {\n  margin-top: 0;\n}\n.mdl-gen__panel--right {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  justify-content: center;\n  padding-bottom: 0;\n}\n.mdl-gen__desc strong,\n.mdl-gen__desc p {\n  display: block;\n  margin-bottom: 32px;\n  color: rgba(0, 0, 0, 0.54);\n}\n.mdl-gen__cdn .demo-code {\n  box-sizing: border-box;\n}\n.content {\n  margin-left: auto;\n  margin-right: auto;\n  max-width: 1280px;\n  margin-bottom: 80px;\n}\n"
  },
  {
    "path": "docs/_assets/customizer.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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/*global MaterialCustomizer:true,Prism:true,ga:true*/\n\n/* exported init */\nfunction init() {\n  'use strict';\n\n  var wheel = document.querySelector('#wheel > svg');\n  var cdn = document.querySelector('.mdl-gen__cdn .mdl-gen__cdn-link');\n  var mc = new MaterialCustomizer(wheel, cdn);\n\n  // Workaround for IE.\n  var dl = document.querySelector('#download');\n  dl.addEventListener('click', function() {\n    if (window.navigator.msSaveBlob) {\n      window.navigator.msSaveBlob(this.blob, 'material.min.css');\n    }\n  }.bind(mc));\n\n  // Hook up GA event\n  dl.addEventListener('click', function() {\n    ga('send', {\n      hitType: 'event',\n      eventCategory: 'customizer',\n      eventAction: 'download',\n      eventLabel: mc.getSelectedPrimary() + '-' + mc.getSelectedSecondary()\n    });\n  });\n\n  var clickCtr = 0;\n  cdn.addEventListener('click', function() {\n    var selection = window.getSelection();\n    selection.removeAllRanges();\n\n    var range = document.createRange();\n    if (clickCtr === 0) {\n      var link = cdn.querySelectorAll('.token.attr-value')[1];\n      range.setStart(link, 2);\n      range.setEnd(link, 3);\n    } else {\n      range.setStart(cdn, 1);\n      range.setEnd(cdn, 2);\n    }\n\n    selection.addRange(range);\n    clickCtr = (clickCtr + 1) % 2;\n  });\n\n  // Prevent browser's selection handling\n  cdn.addEventListener('mouseup', function(ev) {\n    ev.preventDefault();\n  });\n  cdn.addEventListener('mousedown', function(ev) {\n    ev.preventDefault();\n  });\n\n  document.addEventListener('mouseup', function() {\n    if (window.getSelection().toString().indexOf('.min.css') !== -1) {\n      ga('send', {\n        hitType: 'event',\n        eventCategory: 'customizer',\n        eventAction: 'copy',\n        eventLabel: mc.getSelectedPrimary() + '-' + mc.getSelectedSecondary()\n      });\n    }\n  });\n\n  // Download template\n  var req = new XMLHttpRequest();\n  req.onload = function() {\n    mc.template = this.responseText;\n    mc.highlightField('Indigo');\n    mc.highlightField('Pink');\n    window.requestAnimationFrame(function() {\n      mc.updateCDN();\n      mc.updateStylesheet();\n    });\n  };\n  req.open('get', '../material.min.css.template', true);\n  req.send();\n}\n\nMaterialCustomizer = (function() {\n  'use strict';\n\n  var COLORS = ['Cyan', 'Teal', 'Green', 'Light Green', 'Lime',\n                        'Yellow', 'Amber', 'Orange', 'Brown', 'Blue Grey',\n                        'Grey', 'Deep Orange', 'Red', 'Pink', 'Purple',\n                        'Deep Purple', 'Indigo', 'Blue', 'Light Blue'];\n  var FORBIDDEN_ACCENTS = ['Blue Grey', 'Brown', 'Grey'];\n  var MD_COLORS = ['Red', 'Pink', 'Purple', 'Deep Purple', 'Indigo',\n                'Blue', 'Light Blue', 'Cyan', 'Teal', 'Green',\n                'Light Green', 'Lime', 'Yellow', 'Amber', 'Orange',\n                'Deep Orange', 'Brown', 'Grey', 'Blue Grey'];\n  var MD_SHADES = ['50', '100', '200', '300', '400',\n                '500', '600', '700', '800', '900',\n                'A100', 'A200', 'A400', 'A700'];\n  var MD_PALETTE =  [\n  ['255,235,238', '255,205,210', '239,154,154', '229,115,115', '239,83,80',\n   '244,67,54', '229,57,53', '211,47,47', '198,40,40', '183,28,28',\n   '255,138,128', '255,82,82', '255,23,68', '213,0,0'],\n  ['252,228,236', '248,187,208', '244,143,177', '240,98,146', '236,64,122',\n   '233,30,99', '216,27,96', '194,24,91', '173,20,87', '136,14,79',\n   '255,128,171', '255,64,129', '245,0,87', '197,17,98'],\n  ['243,229,245', '225,190,231', '206,147,216', '186,104,200', '171,71,188',\n   '156,39,176', '142,36,170', '123,31,162', '106,27,154', '74,20,140',\n   '234,128,252', '224,64,251', '213,0,249', '170,0,255'],\n  ['237,231,246', '209,196,233', '179,157,219', '149,117,205', '126,87,194',\n   '103,58,183', '94,53,177', '81,45,168', '69,39,160', '49,27,146',\n   '179,136,255', '124,77,255', '101,31,255', '98,0,234'],\n  ['232,234,246', '197,202,233', '159,168,218', '121,134,203', '92,107,192',\n   '63,81,181', '57,73,171', '48,63,159', '40,53,147', '26,35,126',\n   '140,158,255', '83,109,254', '61,90,254', '48,79,254'],\n  ['227,242,253', '187,222,251', '144,202,249', '100,181,246', '66,165,245',\n   '33,150,243', '30,136,229', '25,118,210', '21,101,192', '13,71,161',\n   '130,177,255', '68,138,255', '41,121,255', '41,98,255'],\n  ['225,245,254', '179,229,252', '129,212,250', '79,195,247', '41,182,246',\n   '3,169,244', '3,155,229', '2,136,209', '2,119,189', '1,87,155',\n   '128,216,255', '64,196,255', '0,176,255', '0,145,234'],\n  ['224,247,250', '178,235,242', '128,222,234', '77,208,225', '38,198,218',\n   '0,188,212', '0,172,193', '0,151,167', '0,131,143', '0,96,100',\n   '132,255,255', '24,255,255', '0,229,255', '0,184,212'],\n  ['224,242,241', '178,223,219', '128,203,196', '77,182,172', '38,166,154',\n   '0,150,136', '0,137,123', '0,121,107', '0,105,92', '0,77,64',\n   '167,255,235', '100,255,218', '29,233,182', '0,191,165'],\n  ['232,245,233', '200,230,201', '165,214,167', '129,199,132', '102,187,106',\n   '76,175,80', '67,160,71', '56,142,60', '46,125,50', '27,94,32',\n   '185,246,202', '105,240,174', '0,230,118', '0,200,83'],\n  ['241,248,233', '220,237,200', '197,225,165', '174,213,129', '156,204,101',\n   '139,195,74', '124,179,66', '104,159,56', '85,139,47', '51,105,30',\n   '204,255,144', '178,255,89', '118,255,3', '100,221,23'],\n  ['249,251,231', '240,244,195', '230,238,156', '220,231,117', '212,225,87',\n   '205,220,57', '192,202,51', '175,180,43', '158,157,36', '130,119,23',\n   '244,255,129', '238,255,65', '198,255,0', '174,234,0'],\n  ['255,253,231', '255,249,196', '255,245,157', '255,241,118', '255,238,88',\n   '255,235,59', '253,216,53', '251,192,45', '249,168,37', '245,127,23',\n   '255,255,141', '255,255,0', '255,234,0', '255,214,0'],\n  ['255,248,225', '255,236,179', '255,224,130', '255,213,79', '255,202,40',\n   '255,193,7', '255,179,0', '255,160,0', '255,143,0', '255,111,0',\n   '255,229,127', '255,215,64', '255,196,0', '255,171,0'],\n  ['255,243,224', '255,224,178', '255,204,128', '255,183,77', '255,167,38',\n   '255,152,0', '251,140,0', '245,124,0', '239,108,0', '230,81,0',\n   '255,209,128', '255,171,64', '255,145,0', '255,109,0'],\n  ['251,233,231', '255,204,188', '255,171,145', '255,138,101', '255,112,67',\n   '255,87,34', '244,81,30', '230,74,25', '216,67,21', '191,54,12',\n   '255,158,128', '255,110,64', '255,61,0', '221,44,0'],\n  ['239,235,233', '215,204,200', '188,170,164', '161,136,127', '141,110,99',\n   '121,85,72', '109,76,65', '93,64,55', '78,52,46', '62,39,35'],\n  ['250,250,250', '245,245,245', '238,238,238', '224,224,224', '189,189,189',\n   '158,158,158', '117,117,117', '97,97,97', '66,66,66', '33,33,33'],\n  ['236,239,241', '207,216,220', '176,190,197', '144,164,174', '120,144,156',\n   '96,125,139', '84,110,122', '69,90,100', '55,71,79', '38,50,56']\n  ];\n\n  function parentWrapper(p) {\n    return p.parentElement || p.parentNode;\n  }\n\n  var MaterialCustomizer = function(wheel, cdn) {\n    this.wheel = wheel;\n    this.cdn = cdn;\n    if (this.cdn) {\n      this.cdnTpl = cdn.textContent;\n    }\n    this.paletteIndices = MD_COLORS;\n    this.lightnessIndices = MD_SHADES;\n    this.palettes = MD_PALETTE;\n\n    this.init_();\n  };\n\n  MaterialCustomizer.prototype.init_ = function() {\n    this.config = {\n      width: 650, // width of the SVG panel\n      height: 650, // height of the SVG panel\n      r: 250, // radius of the wheel\n      ri: 100, // radius of the inner hole\n      hd: 40, // height of the dark section\n      c: 40, // Distance(center of selector circle, border of wheel)\n      mrs: 0.5, // Percent of available width to use as radius for selector circle\n      alphaIncr: 0.005, // Value to add to alpha to make tiles overlap slightly\n      colors: COLORS\n    };\n    this.forbiddenAccents = FORBIDDEN_ACCENTS;\n    this.calculateValues_();\n\n    if (this.wheel) {\n      this.buildWheel_();\n    }\n\n    return;\n  };\n\n  MaterialCustomizer.prototype.calculateValues_ = function() {\n    var config = this.config;\n    // Calculated values\n    // Angle of each piece of the wheel\n    config.alphaDeg = 360.0 / config.colors.length;\n    config.alphaRad = config.alphaDeg * Math.PI / 180;\n    // Radius of selector circle\n    config.rs = (config.c + config.r) * Math.sin(config.alphaRad / 2);\n    config.rs *= config.mrs;\n    // Angle of selector cone\n    config.selectorAlphaRad = Math.atan(config.rs / config.c) * 2;\n    // Angles of cone tangetial point\n    config.gamma1 = config.alphaRad / 2 - config.selectorAlphaRad / 2;\n    config.gamma2 = config.alphaRad / 2 + config.selectorAlphaRad / 2;\n    // Center of selector circle\n    config.cx = (config.c + config.r) * Math.sin(config.alphaRad) / 2;\n    config.cy = -(config.c + config.r) * (1 + Math.cos(config.alphaRad)) / 2;\n\n    this.config = config;\n  };\n\n  MaterialCustomizer.prototype.buildWheel_ = function() {\n    var config = this.config;\n    var mainG = this.wheel.querySelector('g.wheel--maing');\n    var wheelContainer = this.wheel.parentNode;\n\n    this.wheel.setAttribute('viewBox', '0 0 ' +\n      this.config.width + ' ' +  this.config.height);\n    this.wheel.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n    this.wheel.setAttribute('width', this.config.width);\n    this.wheel.setAttribute('height', this.config.height);\n\n    var fieldTpl = this.generateFieldTemplate_();\n\n    var svgNS = 'http://www.w3.org/2000/svg';\n    config.colors.forEach(function(color, idx) {\n      var field = fieldTpl.cloneNode(true);\n      var tooltip = document.createElement('div');\n\n      for (var i = 1; i <= 2; i++) {\n        var g = document.createElementNS(svgNS, 'g');\n        var label = document.createElementNS(svgNS, 'text');\n        label.setAttribute('class', 'label label--' + i);\n        label.setAttribute('transform',\n          'rotate(' + (-config.alphaDeg * idx) + ')');\n        label.setAttribute('dy', '0.5ex');\n        label.textContent = '' + i;\n        g.appendChild(label);\n        g.setAttribute('transform',\n          'translate(' + config.cx + ',' + config.cy + ')');\n        field.appendChild(g);\n      }\n      field.setAttribute('data-color', color);\n      field.id = color;\n      field.querySelector('.polygons > *:nth-child(1)').style.fill =\n        'rgb(' + this.getColor(color, '500') + ')';\n      field.querySelector('.polygons > *:nth-child(2)').style.fill =\n        'rgb(' + this.getColor(color, '700') + ')';\n      field.querySelector('.polygons').\n        addEventListener('click', this.fieldClicked_.bind(this));\n      field.setAttribute('transform', 'rotate(' + config.alphaDeg * idx + ')');\n      mainG.appendChild(field);\n\n      tooltip.setAttribute('for', color);\n      tooltip.className = 'mdl-tooltip mdl-tooltip--large';\n      tooltip.innerHTML = color;\n      wheelContainer.appendChild(tooltip);\n    }.bind(this));\n\n    mainG.setAttribute('transform',\n      'translate(' + config.width / 2 + ',' + config.height / 2 + ')');\n\n  };\n\n  MaterialCustomizer.prototype.generateFieldTemplate_ = function() {\n    var svgNS = 'http://www.w3.org/2000/svg';\n    var config = this.config;\n    var fieldTpl = document.createElementNS(svgNS, 'g');\n    var polygons = document.createElementNS(svgNS, 'g');\n    var lightField = document.createElementNS(svgNS, 'polygon');\n    lightField.setAttribute('points', [\n      [\n        config.ri * Math.sin(config.alphaRad + config.alphaIncr),\n        -config.ri * Math.cos(config.alphaRad + config.alphaIncr)\n      ].join(','),\n      [\n        config.r * Math.sin(config.alphaRad + config.alphaIncr),\n        -config.r * Math.cos(config.alphaRad + config.alphaIncr)\n      ].join(','),\n      [0, -config.r].join(','),\n      [0, -(config.ri + config.hd)].join(','),\n    ].join(' '));\n    var darkField = document.createElementNS(svgNS, 'polygon');\n    darkField.setAttribute('points', [\n      [\n        config.ri * Math.sin(config.alphaRad + config.alphaIncr),\n        -config.ri * Math.cos(config.alphaRad + config.alphaIncr)\n      ].join(','),\n      [\n        (config.ri + config.hd) * Math.sin(config.alphaRad + config.alphaIncr),\n        -(config.ri + config.hd) * Math.cos(config.alphaRad + config.alphaIncr)\n      ].join(','),\n      [0, -(config.ri + config.hd)].join(','),\n      [0, -config.ri].join(','),\n    ].join(' '));\n    polygons.appendChild(lightField);\n    polygons.appendChild(darkField);\n    polygons.setAttribute('class', 'polygons');\n    fieldTpl.appendChild(polygons);\n\n    var selector = document.createElementNS(svgNS, 'path');\n    selector.setAttribute('class', 'selector');\n    selector.setAttribute('d',\n      ' M ' +\n      (config.r   * Math.sin(config.alphaRad) / 2) +\n      ' ' +\n      -(config.r * (1 + Math.cos(config.alphaRad)) / 2) +\n      ' L ' +\n      (config.cx - config.rs * Math.cos(config.gamma1)) +\n      ' ' +\n      (config.cy - config.rs * Math.sin(config.gamma1)) +\n      ' A ' +\n      config.rs +\n      ' ' +\n      config.rs +\n      ' ' +\n      config.alphaDeg +\n      ' 1 1 ' +\n      (config.cx + config.rs * Math.cos(config.gamma2)) +\n      ' ' +\n      (config.cy + config.rs * Math.sin(config.gamma2)) +\n      ' z '\n    );\n    fieldTpl.appendChild(selector);\n\n    return fieldTpl;\n  };\n\n  MaterialCustomizer.prototype.getNumSelected = function() {\n    if (this.wheel.querySelector('.selected--2')) {\n      return 2;\n    } else if (this.wheel.querySelector('.selected--1')) {\n      return 1;\n    }\n    return 0;\n  };\n\n  MaterialCustomizer.prototype.fieldClicked_ = function (ev) {\n    var g = parentWrapper(parentWrapper(ev.target));\n    var selectedColor = g.getAttribute('data-color');\n    var numSelected = this.getNumSelected();\n    // Ignore clicks on already selected fields\n    if ((g.getAttribute('class') || '').indexOf('selected--1') !== -1 && numSelected === 1) {\n      return;\n    }\n\n    switch (numSelected) {\n      case 1:\n        if (this.forbiddenAccents.indexOf(selectedColor) !== -1) {\n          return;\n        }\n        this.highlightField(g.getAttribute('data-color'));\n        this.wheel.setAttribute('class', '');\n        window.requestAnimationFrame(function() {\n          this.updateCDN();\n          this.updateStylesheet();\n        }.bind(this));\n        break;\n      case 2:\n        Array.prototype.forEach.call(\n          this.wheel.querySelector('g.wheel--maing').childNodes,\n          function(f) {\n            f.setAttribute('class', '');\n            f.querySelector('.polygons').setAttribute('filter', '');\n          }\n        );\n        /* falls through */\n      case 0:\n        this.highlightField(g.getAttribute('data-color'));\n        window.requestAnimationFrame(function() {\n          this.wheel.setAttribute('class', 'hide-nonaccents');\n        }.bind(this));\n        break;\n    }\n  };\n\n  MaterialCustomizer.prototype.replaceDict = function(s, dict) {\n    for (var key in dict) {\n      s = s.replace(new RegExp(key, 'g'), dict[key]);\n    }\n    return s;\n  };\n\n  MaterialCustomizer.prototype.urlsafeName = function(s) {\n    return s.toLowerCase().replace(' ', '_');\n  };\n\n  MaterialCustomizer.prototype.getSelectedPrimary = function() {\n    return this.wheel.querySelector('.selected--1')\n                     .getAttribute('data-color');\n  };\n\n  MaterialCustomizer.prototype.getSelectedSecondary = function() {\n    return this.wheel.querySelector('.selected--2')\n                     .getAttribute('data-color');\n  };\n\n  MaterialCustomizer.prototype.updateCDN = function() {\n    var primaryColor = this.getSelectedPrimary();\n    var secondaryColor = this.getSelectedSecondary();\n\n    this.cdn.textContent = this.replaceDict(this.cdnTpl, {\n      '\\\\$primary': this.urlsafeName(primaryColor),\n      '\\\\$accent': this.urlsafeName(secondaryColor)\n    });\n    Prism.highlightElement(this.cdn);\n  };\n\n  MaterialCustomizer.prototype.highlightField = function(color) {\n    var g = this.wheel.querySelector('[data-color=\"' + color + '\"]');\n    var parent = parentWrapper(g);\n\n    // Make the current polygon the last child of its parent\n    // so shadows are visible.\n    parent.removeChild(g);\n    parent.appendChild(g);\n\n    // We changed the DOM hierarchy, CSS animations might not show until\n    // DOM has updated internally.\n    g.setAttribute('class', 'selected selected--' + (this.getNumSelected() + 1));\n\n    var isIE = window.navigator.msPointerEnabled;\n    // FIXME: Shadows in IE10 don't disappear, for now they are disabled\n    if (!isIE) {\n      g.querySelector('.polygons')\n      .setAttribute('filter', 'url(#drop-shadow)');\n    }\n  };\n\n  MaterialCustomizer.prototype.getColor = function(name, lightness) {\n    var r = this.palettes[this.paletteIndices.indexOf(name)];\n    if (!r) {\n      return null;\n    }\n    return r[this.lightnessIndices.indexOf(lightness)];\n  };\n\n  MaterialCustomizer.prototype.processTemplate = function(primaryColor, secondaryColor) {\n    var primary = this.getColor(primaryColor, '500');\n    var primaryDark = this.getColor(primaryColor, '700');\n    var accent = this.getColor(secondaryColor, 'A200');\n\n    return this.replaceDict(this.template, {\n      '\\\\$color-primary-dark': primaryDark,\n      '\\\\$color-primary-contrast': this.calculateTextColor(primary),\n      '\\\\$color-accent-contrast': this.calculateTextColor(accent),\n      '\\\\$color-primary': primary,\n      '\\\\$color-accent': accent\n    });\n  };\n\n  MaterialCustomizer.prototype.calculateChannel = function(component) {\n    component = component / 255;\n\n    return component < 0.03928 ?\n        component / 12.92 : Math.pow((component + 0.055) / 1.055, 2.4);\n  };\n\n  MaterialCustomizer.prototype.calculateLuminance = function(color) {\n    var components = color.split(',');\n    var red = this.calculateChannel(parseInt(components[0]));\n    var green = this.calculateChannel(parseInt(components[1]));\n    var blue = this.calculateChannel(parseInt(components[2]));\n\n    return (0.2126 * red) + (0.7152 * green) + (0.0722 * blue);\n  };\n\n  MaterialCustomizer.prototype.calculateContrast =\n      function(background, foreground) {\n    var backLum = this.calculateLuminance(background) + 0.05;\n    var foreLum = this.calculateLuminance(foreground) + 0.05;\n\n    return Math.max(backLum, foreLum) / Math.min(backLum, foreLum);\n  };\n\n  MaterialCustomizer.prototype.calculateTextColor = function(background) {\n    var minimumContrast = 3.1;\n    var light = '255,255,255';\n    var dark = '66,66,66';\n\n    // Most colors will be dark, so check light text color first.\n    var whiteContrast = this.calculateContrast(background, light);\n\n    if (whiteContrast >= minimumContrast) {\n      return light;\n    } else {\n      var blackContrast = this.calculateContrast(background, dark);\n      return blackContrast > whiteContrast ? dark : light;\n    }\n  };\n\n  MaterialCustomizer.prototype.replaceKeyword = function(str, key, val) {\n    return str.replace(new RegExp(key, 'g'), val);\n  };\n\n  MaterialCustomizer.prototype.updateStylesheet = function() {\n    var oldStyle = document.getElementById('main-stylesheet');\n    var newStyle = document.createElement('style');\n    newStyle.id = 'main-stylesheet';\n\n    var style = this.processTemplate(\n      this.getSelectedPrimary(),\n      this.getSelectedSecondary());\n    if (oldStyle && oldStyle.parentNode) {\n      oldStyle.parentNode.removeChild(oldStyle);\n    }\n    newStyle.textContent = style;\n    document.head.appendChild(newStyle);\n    this.prepareDownload(style);\n  };\n\n  MaterialCustomizer.prototype.prepareDownload = function(content) {\n    var link = document.getElementById('download');\n    var blob = new Blob([content], {type: 'text/css'});\n    this.blob = blob;\n    var url = URL.createObjectURL(blob);\n    link.setAttribute('href', url);\n    link.setAttribute('download', 'material.min.css');\n  };\n\n  return MaterialCustomizer;\n})();\n\n// For NodeJS usage\nif (typeof module !== 'undefined') {\n  module.exports = MaterialCustomizer;\n}\n"
  },
  {
    "path": "docs/_assets/ie.css",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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  /* Header navigation fix to ensure display */\n  .docs-layout .docs-layout-header.mdl-layout__header {\n    display: block;\n  }\n\n  body > div.mdl-layout__container > div > main > div > section.about-panel.about-panel--components.mdl-color-text--white.mdl-cell.mdl-cell--6-col,\n  body > div.mdl-layout__container > div > main > div > section.about-panel.about-panel--styles.mdl-color-text--white.mdl-cell.mdl-cell--6-col {\n    width: 50%;\n    float: left;\n  }\n"
  },
  {
    "path": "docs/_assets/index.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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(function() {\n\tArray.prototype.forEach.call(document.querySelectorAll('[data-target]'), function(el) {\n\t\tvar target = el.getAttribute('data-target');\n\t\tel.addEventListener('click', function() {\n\t\t\tlocation.href = target;\n\t\t});\n\t});\n})();\n"
  },
  {
    "path": "docs/_assets/main.css",
    "content": "html > body {\n  font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif !important;\n  background-color: #FAFAFA;\n}\n.docs-layout .docs-layout-header.mdl-layout__header {\n  height: 560px;\n  max-height: 50%;\n  flex-shrink: 0;\n  background-size: auto;\n  background-repeat: no-repeat;\n  background-position: center center;\n  box-shadow: none !important;\n  align-items: flex-start;\n  padding: 40px;\n  flex-shrink: 0;\n  position: relative;\n  display: flex !important;\n}\nbody.about .docs-layout.is-small-screen .docs-layout-header.mdl-layout__header {\n  height: 280px;\n}\nbody.about .docs-layout.is-small-screen .docs-layout-header.mdl-layout__header {\n  background-size: auto 58px, cover;\n  background-repeat: no-repeat, no-repeat;\n  background-position: center center, center center;\n}\n.docs-layout-header .mdl-textfield {\n  padding-top: 0;\n}\n.docs-layout-header > .mdl-layout__header-row {\n  padding: 0px;\n  align-items: flex-start;\n  height: auto;\n}\n.docs-layout-header .docs-navigation .github,\n.docs-layout-header .docs-navigation .download {\n  text-transform: none;\n}\n.docs-layout-title {\n  font-weight: 500;\n  text-transform: uppercase;\n  line-height: 1.5em;\n  font-size: 1rem;\n}\n.docs-layout .docs-layout-title a {\n  font-weight: inherit;\n  color: white;\n}\n.docs-layout-header .mdl-textfield .mdl-button {\n  right: 0;\n}\n.docs-layout-header .mdl-textfield .mdl-textfield__expandable-holder {\n  margin-right: 32px;\n}\n.docs-layout-header .mdl-textfield label:after {\n  background-color: rgba(255, 255, 255, 0.12);\n}\n.about .docs-layout-header.mdl-layout__header {\n  background-color: #37474f;\n  background: url('logo.svg'), url('header.jpg');\n  background-size: auto 118px, cover;\n  background-repeat: no-repeat, no-repeat;\n  background-position: center center, center center;\n}\n@media (max-height: 600px){\n  .about .docs-layout-header.mdl-layout__header {\n    background-size: auto 80px, cover;\n  }\n}\nbody:not(.about) .docs-layout .docs-layout-header.mdl-layout__header {\n  background-repeat: no-repeat;\n  background-position: center center;\n}\n.templates .docs-layout-header.mdl-layout__header {\n  background-color: #263238;\n  background-image: url('templates.png');\n  background-size: auto 29px;\n}\n.showcase .docs-layout-header.mdl-layout__header {\n  background-color: #3E82F7;\n  background-image: url('templates.png');\n  background-size: auto 29px;\n}\n.started .docs-layout-header.mdl-layout__header,\n.faq .docs-layout-header.mdl-layout__header {\n  background-color: #2E2E2E;\n  background-image: url('logo.png');\n  background-size: auto 32px;\n}\n.components .docs-layout-header.mdl-layout__header {\n  background-color: #C2185B;\n  background-image: url('components.png');\n  background-size: auto 34px;\n}\n.styles .docs-layout-header.mdl-layout__header {\n  background-color: #8E24AA;\n  background-image: url('styles.png');\n  background-size: auto 41px;\n}\n.customize .docs-layout-header.mdl-layout__header {\n  background-color: #1A237E;\n  background-image: url('customize.png');\n  background-size: auto 36px;\n}\nbody:not(.about) .docs-layout .docs-layout-header.mdl-layout__header {\n  box-sizing: border-box;\n  height: 144px;\n  background-position: 40px 32px;\n}\nbody:not(.about) .docs-layout-title {\n  display: none;\n}\n.docs-navigation__container {\n  overflow: hidden;\n  position: absolute;\n  height: 64px;\n  width: 100%;\n  bottom: 0;\n  left: 0;\n}\n.docs-navigation {\n  box-shadow: none !important;\n  border: 0 !important;\n  padding: 0 16px;\n  width: 100%;\n  height: 85px;\n  flex-shrink: 0;\n  padding-left: 24px;\n  overflow-x: auto;\n  overflow-y: hidden;\n  user-select: none;\n  margin-bottom: -16px;\n}\n.docs-layout.is-small-screen .docs-navigation {\n  padding: 0;\n}\n.docs-layout.is-small-screen .docs-navigation .mdl-navigation__link .material-icons {\n  display: none;\n}\n.docs-navigation::-webkit-scrollbar {\n  display: none;\n}\nbody:not(.about) .docs-layout.is-small-screen .docs-layout-header {\n  background-image: none;\n}\n.docs-layout.mdl-layout.is-small-screen .docs-layout-header.mdl-layout__header {\n  padding: 0;\n  height: 64px;\n}\n.docs-layout.is-small-screen .docs-layout-header .docs-layout-title,\n.docs-layout.is-small-screen .docs-layout-header .mdl-textfield {\n  display: none;\n}\n.docs-layout.is-small-screen .docs-navigation__container {\n  top: 0;\n  bottom: auto;\n  left: 48px;\n  width: calc(100% - 2 * 48px);\n  padding: 0 !important;\n}\n.docs-layout .scrollindicator {\n  position: absolute;\n  top: 0;\n  line-height: 64px;\n  height: 64px;\n  width: 48px;\n  display: none;\n  margin-right: 0;\n  text-align: center;\n  cursor: pointer;\n  user-select: none;\n}\n.docs-layout .scrollindicator.disabled {\n  opacity: 0.12;\n  cursor: default;\n}\n.docs-layout .scrollindicator.scrollindicator--right {\n  right: 0;\n}\n.docs-layout .scrollindicator.scrollindicator--left {\n  left: 0;\n}\n.docs-layout.is-small-screen .scrollindicator.scrollindicator.scrollindicator {\n  display: block;\n}\n.mdl-navigation__link--icon > span, .mdl-navigation__link--icon > .material-icons {\n  line-height: 64px;\n  margin-right: 8px;\n  line-height: inherit;\n}\n.docs-navigation .mdl-navigation__link {\n  display: flex;\n  flex-shrink: 0;\n  user-select: inherit;\n  height: 64px;\n}\n.docs-navigation .mdl-navigation__link:hover,\n.docs-navigation .mdl-navigation__link.download:hover > span,\n.docs-navigation .mdl-navigation__link.download:hover > .material-icons {\n  background-color: inherit;\n  opacity: 1 !important;\n}\n.docs-navigation .mdl-navigation__link:not(.download),\n.docs-navigation .mdl-navigation__link.download > span,\n.docs-navigation .mdl-navigation__link.download > .material-icons {\n  opacity: 0.65;\n}\n.docs-navigation .mdl-navigation__link, section.download {\n  font-weight: 500;\n  font-size: 13px;\n  text-transform: uppercase;\n  line-height: 64px;\n  padding: 0 16px;\n  color: white;\n  box-sizing: border-box;\n  border-bottom: 3px solid transparent;\n}\n.docs-layout.is-small-screen .docs-navigation .mdl-navigation__link,\n.docs-layouy.is-small-screen section.download {\n  padding: 0 12px;\n}\n.about .docs-layout:not(.is-small-screen) .mdl-navigation__link.download > .material-icons {\n  display: none;\n}\n.about .docs-layout.is-small-screen .mdl-navigation__link.download > button,\nbody:not(.about) .mdl-navigation__link.download > button {\n  display: none;\n}\n.docs-navigation .download button .material-icons {\n  color: black;\n  opacity: 0.54;\n}\n.about .docs-navigation .about,\n.templates .docs-navigation .templates,\n.showcase .docs-navigation .showcase,\n.started .docs-navigation .started,\n.styles .docs-navigation .styles,\n.components .docs-navigation .components,\n.faq .docs-navigation .faq,\n.customize .docs-navigation .customize {\n  opacity: 1;\n  border-bottom-color: #18FFFF;\n}\n.mdl-layout__content.docs-layout-content {\n  overflow: visible;\n}\n.docs-layout-content > .download {\n  width: 100%;\n  height: 6rem;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n.docs-layout-content > .download > a {\n  font-weight: 500;\n  text-transform: uppercase;\n}\n.docs-footer.mdl-mini-footer {\n  flex-direction: column;\n  align-items: stretch;\n  justify-content: center;\n  height: 120px;\n}\n.docs-footer.mdl-mini-footer ul {\n  padding: 0;\n  display: flex;\n  flex-direction: row;\n  justify-content: center;\n  align-items: center;\n}\n.docs-footer.mdl-mini-footer ul > li > a {\n  margin: 0 8px;\n  font-weight: 400;\n  font-size: 12px;\n}\n\n.docs-footer .docs-link-list li {\n  margin-left: 0.5em;\n  margin-right: 0.5em;\n}\n\n.about-panel {\n  box-sizing: border-box;\n  width: 100%;\n  flex-grow: 1;\n}\n.about-panel--text {\n  padding: 100px;\n}\n.about-panel--text p {\n  width: 640px;\n  margin: 0 auto;\n  line-height: 2em;\n}\n.about-panel--text dl {\n  width: 100%;\n  display: flex;\n  flex-direction: row;\n  justify-content: center;\n  align-items: stretch;\n}\n.about-panel--text dl dt {\n  text-align: right;\n  vertical-align: top;\n  display: inline-table;\n  margin-right: 24px;\n  line-height: 2em;\n}\n.about-panel--text dl dd {\n  text-align: left;\n  line-height: 2em;\n  vertical-align: top;\n  width: 700px;\n  margin: 0;\n  margin-left: 24px;\n}\n.docs-layout.is-small-screen .about-panel {\n  padding: 40px;\n}\n.docs-layout.is-small-screen .about-panel--text:not(:first-of-type) {\n  display: none;\n}\n.docs-layout.is-small-screen .about-panel--text dl {\n  flex-direction: column;\n}\n.docs-layout.is-small-screen .about-panel--text dd,\n.docs-layout.is-small-screen .about-panel--text dt {\n  margin: 0;\n  padding: 0;\n  text-align: left;\n  width: 100%;\n}\n.about-panel--components,\n.about-panel--styles,\n.about-panel--customize,\n.about-panel--templates {\n  height: 500px;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: flex-end;\n  padding: 40px;\n  color: white;\n  text-transform: uppercase;\n  font-size: 1.4rem;\n  width: auto;\n  background-repeat: no-repeat;\n  background-position: center center;\n  cursor: pointer;\n}\n.docs-layout-content .about-panel--start > p {\n  color: rgb(66,66,66);\n  text-transform: uppercase;\n  font-size: 1.6rem;\n  margin-top: 20px;\n  margin-bottom: 0px;\n}\n.about-panel--templates {\n  background-color: #B3E0E1;\n  background-image: url(templates.svg);\n  background-size: 287px auto;\n}\n.about-panel--templates:hover {\n  background-image: url(templates_mo.svg);\n}\n.about-panel--components {\n  background-color: #E90974;\n  background-image: url(components.svg);\n  background-size: 174px auto;\n}\n.about-panel--components:hover {\n  background-image: url(components_mo.svg);\n}\n.about-panel--styles {\n  background-color: #8F4099;\n  background-image: url(styles.svg);\n  background-size: 252px auto;\n}\n.about-panel--styles:hover {\n  background-image: url(styles_mo.svg);\n  background-size: 331px auto;\n  background-position-x: calc(50% + 40px);\n}\n.about-panel--customize {\n  height: 400px;\n  background-color: #191E80;\n  background-image: url(customize.svg);\n  background-size: 156px auto;\n}\n.about-panel--customize:hover {\n  background-image: url(customize_mo.svg);\n}\n\n.image-preloader {\n  position: fixed;\n  visibility: hidden;\n  width: 0px;\n  height: 0px;\n  top: -100px;\n  left: -100px;\n  background-image: url(templates_mo.svg), url(components_mo.svg), url(styles_mo.svg), url(customize_mo.svg);\n}\n.templates .content {\n  padding-left: 24px !important;\n  max-width: 960px;\n}\n.templates .docs-layout-content .content {\n  padding: 40px 0;\n}\n.templates .docs-layout .template  {\n  margin-left: -16px;\n}\n\n.showcase .content {\n  padding-left: 24px !important;\n  max-width: 960px;\n}\n.showcase .docs-layout-content .content {\n  padding: 40px 0;\n}\n.showcase .docs-layout .template  {\n  margin-left: -16px;\n}\n.template {\n  width: 100%;\n  margin-bottom: 72px;\n  align-items: flex-start;\n}\n.template > .template__meta {\n  align-content: flex-start;\n  padding-left: 24px;\n}\n.templates .docs-layout.is-small-screen .template > .template__meta {\n  padding-left: 0;\n}\n.showcase .docs-layout.is-small-screen .template > .template__meta {\n  padding-left: 0;\n}\n.template > .template__meta.template__meta > * {\n  margin-bottom: 24px;\n}\n.template > .template__meta > *:last-child {\n  margin-bottom: 0px;\n}\n.template > .template__meta a {\n  color:inherit;\n  margin-left: -8px !important;\n}\n.template > .template__preview {\n  height: auto;\n}\n.docs-layout-content dd {\n  font-size: 13px;\n}\n.docs-layout-content p {\n  font-size: 13px;\n  margin-bottom: 32px;\n  max-width: 640px;\n\n  /* Override */\n  font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;\n}\n.docs-text-styling ol li {\n  font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;\n}\n\n.docs-text-styling h1 {\n  color: #c2185b;\n  font-size: 2.5em;\n  margin: .67em 0;\n}\n\n\n.docs-text-styling h2 {\n  padding-top: 48px;\n  font-size: 24px;\n  font-weight: 400;\n  line-height: 32px;\n  margin-bottom: 30px;\n  color: #c2185b;\n}\n\n.docs-text-styling h1,\n.docs-text-styling h2,\n.docs-text-styling h3,\n.docs-text-styling h4 {\n  font-size: 16px;\n  color: rgba(0, 0, 0, 0.54);\n  font-weight: 500;\n  text-transform: uppercase;\n}\n.docs-layout-content h2.mdl-card__title-text {\n  padding-top: 0;\n  margin-bottom: 0;\n}\n\n.docs-text-styling a {\n  text-decoration: none;\n}\n\n.docs-layout-content .mdl-download {\n  color: #000;\n  font-weight: normal;\n}\n\n.docs-layout-title a {\n  color: inherit;\n  text-decoration: none;\n}\n\n.component-description {\n  max-width: 720px;\n  padding: 40px;\n}\n.component-description .mdl-button:first-of-type {\n  margin-top: 8px;\n}\n.docs-footer.mdl-mini-footer .mdl-mini-footer--social-btn {\n  background-color: transparent;\n  margin: 0 16px;\n  width: 24px;\n  height: 24px;\n}\n.docs-footer.mdl-mini-footer .social-btn {\n  display: block;\n  background-position: center;\n  background-size: contain;\n  background-repeat: no-repeat;\n  width: 24px;\n  height: 24px;\n  cursor: pointer;\n}\n.social-btn__twitter {\n  background-image: url('https://www.gstatic.com/images/icons/material/system/2x/post_twitter_white_24dp.png');\n}\n.social-btn__github {\n  background-image: url('github_white_24.svg');\n  width: 22px;\n  height: 22px;\n}\n.social-btn__gplus {\n  background-image: url('https://www.gstatic.com/images/icons/material/system/2x/post_gplus_white_24dp.png');\n}\n.subpageheader {\n  margin-top: 60px;\n  margin-bottom: 40px;\n  display: flex;\n  color: rgba(0, 0, 0, .54);\n  align-items: center;\n  flex-shrink: 0;\n  text-transform: uppercase;\n  font-size: 16px;\n  font-weight: 500;\n}\n.about .subpageheader,\n.components .subpageheader {\n  display: none;\n}\n.started .subpageheader,\n.customize .subpageheader,\n.styles .subpageheader,\n.faq .subpageheader,\n.templates .subpageheader,\n.showcase .subpageheader {\n  width: 960px;\n  margin: 40px auto;\n}\n/* Components Snippets */\n.snippet-group {\n  margin-left: -16px;\n  margin-right: -16px;\n  margin-bottom: 84px;\n}\n.snippet-group .snippet-header {\n  display: table;\n  border-collapse:collapse;\n  border-spacing: 0;\n  width: 100%;\n}\n.snippet-group .snippet-demos,\n.snippet-group .snippet-captions {\n  display: table-row;\n}\n.snippet-group .snippet-demo .snippet-demo-container {\n  text-align: left;\n  display: inline-block;\n}\n.snippet-group .snippet-captions {\n  background-color: white;\n  height: 48px;\n}\n.snippet-group .snippet-demo,\n.snippet-group .snippet-demo-padding,\n.snippet-group .snippet-caption,\n.snippet-group .snippet-caption-padding {\n  display: table-cell;\n  text-align: center;\n  vertical-align: middle;\n  margin: 0;\n  padding: 0;\n}\n\n.snippet-group .snippet-caption {\n  font-size: 13px;\n  padding: 0px 40px;\n  white-space: nowrap;\n  text-align: center;\n  position: relative;\n}\n\n.snippet-group .snippet-demo {\n  padding: 0px 40px 40px 40px;\n}\n.snippet-group .snippet-demos .snippet-demo-padding {\n  width: 50%;\n}\n_:-ms-input-placeholder, :root .snippet-group .snippet-demo {\n  width: 1px;\n}\n_:-ms-input-placeholder, :root .snippet-group .snippet-demos .snippet-demo-padding {\n  width: auto;\n}\n.snippet-group .snippet-code {\n  position: relative;\n  overflow: hidden;\n}\n.snippet-group .snippet-code pre {\n  margin: 0;\n  border-radius: 0;\n  display: block;\n  padding: 0;\n  overflow: hidden;\n}\n.snippet-group .snippet-code code {\n  padding: 8px 16px;\n  position: relative;\n  max-height: none;\n  width: 100%;\n  box-sizing: border-box;\n}\n.snippet-group .snippet-code pre[class*=language-]>code[data-language] {\n  max-height: none;\n}\n.snippet-group .snippet-code code:first-of-type {\n  padding-top: 16px;\n}\n.snippet-group .snippet-code code:last-of-type {\n  padding-bottom: 16px;\n}\n.snippet-group .snippet-code code:hover {\n  background-color: rgba(0,0,0,0.05);\n}\n.snippet-group .snippet-code code:hover:only-of-type {\n  background-color: transparent;\n}\n.snippet-group .snippet-code code::before,\n.snippet-group .snippet-code code::after {\n  display: none;\n}\n.snippet-group .snippet-code code:hover::before {\n  display: inline-block;\n  content: 'click to copy';\n  color: rgba(0,0,0,0.5);\n  font-size: 13px;\n  background-color: rgba(0,0,0,0.1);\n  border-top-left-radius: 5px;\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  padding: 3px 10px;\n}\n.snippet-group .snippet-code code:active::before {\n  content: '';\n}\n.snippet-group .snippet-code code.copied::before {\n  content: 'copied';\n  color: rgba(255,255,255,0.5);\n  background-color: rgba(0,0,0,0.6);\n}\n.snippet-group .snippet-code code.nosupport::before {\n  content: \"browser not supported :'(\";\n  color: rgba(255,255,255,0.5);\n  background-color: rgba(0,0,0,0.6);\n}\n.snippet-group .snippet-code .codepen-extra-css {\n  display:none;\n}\n@media (max-width: 850px) {\n  .snippet-group .snippet-demo {\n    padding-left: 5px;\n    padding-right: 5px;\n  }\n}\n.snippet-group.is-full-width .snippet-demo-container {\n  width: 100%;\n}\n.snippet-group.is-full-width .snippet-demos > .snippet-demo {\n  width: 100%;\n  padding-left: 0;\n  padding-right: 0;\n}\n.snippet-group.is-full-width .snippet-demo-padding {\n  width: 0;\n  padding: 8px;\n  margin: 0;\n}\n/* Open with CodePen Button */\n.codepen-button {\n  z-index: 50;\n  cursor: pointer;\n  background-image: url('codepen-logo.png');\n  background-repeat: no-repeat;\n  background-position: 5px center;\n  background-size: 26px 26px;\n  position: absolute;\n  top: 0;\n  right: -125px;\n  width: 165px;\n  height: 46px;\n  display: none;\n  opacity: 0.6;\n  overflow: hidden;\n  box-sizing: border-box;\n  white-space: nowrap;\n  color: black;\n  padding: 13px 15px 5px 50px;\n  transition: right 0.5s, background-color 0.5s, opacity 0.5s, background-size 0.3s;\n}\n.codepen-button::after {\n  content: 'Open in CodePen';\n}\n.codepen-button:hover {\n  opacity: 1;\n  right: 0;\n  background-size: 36px 36px;\n  background-color: rgb(248,248,248);\n  border-bottom-left-radius: 10px;\n}\n.docs-layout .docs-text-styling pre[class*=language-markup] {\n  max-width: calc(100vw - 32px);\n}\n.docs-layout pre[class*=language-markup] {\n  max-width: 100vw;\n  box-sizing: border-box;\n  overflow: hidden;\n}\n.docs-layout pre[class*=language-markup].codepen-button-enabled {\n  padding-right: 0;\n}\n.docs-layout pre[class*=language-markup].codepen-button-enabled code {\n  padding-right: 50px;\n}\n.codepen-button-enabled .codepen-button {\n  display: inline-block;\n}\n/* Prism and code blocks styling and overrides */\n.token.attr-name, .token.builtin, .token.selector, .token.string {\n  color: #E91E63;\n}\n.token.boolean, .token.constant, .token.number, .token.property, .token.symbol, .token.tag {\n  color: #9D1DB3;\n}\n.token.atrule, .token.attr-value, .token.keyword {\n  color: #00BCD4;\n}\n.docs-layout code,\n.docs-layout pre {\n  display: inline-block;\n  background-color: rgba(0,0,0,0.06);\n  border-radius: 3px;\n  font-size: 85%;\n  white-space: pre-wrap;\n}\n.docs-layout pre {\n  padding: 16px;\n  font-size: 87%;\n  box-sizing: border-box;\n}\n.docs-layout code:before,\n.docs-layout code:after {\n  letter-spacing: -0.2em;\n  content: \"\\00a0\";\n}\n.docs-layout pre > code:before,\n.docs-layout pre > code:after {\n  letter-spacing: 0;\n  content: \"\";\n}\n.docs-layout pre > code {\n  background-color: rgba(0,0,0,0);\n  padding: 0px;\n  font-size: 100%;\n  width: 100%;\n  box-sizing: border-box;\n  word-break: break-word;\n}\n.docs-layout pre[class*=language-]>code[data-language] {\n  overflow: hidden;\n}\npre[class*=language-]>code[data-language]::before {\n  content: \"\";\n  background: none;\n}\n.token.cr:before,\n.token.lf:before {\n  display: none;\n}\n.language-css .token.string,\n.style .token.string,\n.token.entity,\n.token.operator,\n.token.url,\n.token.variable {\n  color: #9D1DB3;\n  background: none;\n}\ncode[class*=language-], pre[class*=language-] {\n  color: rgba(0,0,0,0.87);\n  text-shadow: none;\n}\n.token.function {\n  color: #009688;\n}\n.code-with-text {\n  position: relative;\n  width: auto;\n  display: block;\n  border-spacing: 0;\n  border-collapse: collapse;\n  background-color: white;\n  padding: 15px;\n  border-radius: 3px;\n  font-size: 13px;\n}\n.code-with-text pre {\n  margin: 15px -15px -15px -15px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  display: block;\n  width: auto;\n}\n/* Table of content widget */\n.docs-toc ul {\n  border-left: solid 3px #C0EbF1;\n  padding-left: 20px;\n  line-height: 28px;\n}\n.docs-toc a {\n  font-weight: 400;\n  color: #00BCD4;\n}\n.docs-toc li {\n  font-size: 16px;\n  list-style: none;\n}\n/* Getting started guide */\n.started .mdl-tabs__tab-bar {\n  justify-content: flex-start;\n  border-bottom: 0;\n}\n.started .download-button-container {\n  text-align: center;\n  margin-bottom: 20px;\n}\n.started .mdl-tabs.is-upgraded .mdl-tabs__tab.is-active {\n  color: #00ACC1;\n}\n.started .mdl-tabs.is-upgraded .mdl-tabs__tab.is-active:after {\n  background-color: #00ACC1;\n}\n.started .docs-layout-content {\n  text-align: center;\n}\n.started .chapter-toc {\n  display: table;\n}\n.started .code-with-text {\n  width: 640px;\n  box-sizing: border-box;\n}\n.started .docs-layout .content section {\n  max-width: 960px;\n  margin: 0 auto;\n}\n.started a,\n.about a,\n.faq a,\n.customize a {\n  color: #00BCD4;\n}\n.customize .docs-layout .content {\n  max-width: 960px;\n  margin: 0 auto;\n  display: block;\n  margin-bottom: 120px;\n  padding: 40px;\n}\n.started .content h3,\n.started .content h4 {\n  display: table-cell;\n  font-size: 15px;\n  padding-right: 60px;\n  line-height: 25px;\n  text-transform: none;\n}\n.started .content h3 {\n  width: 140px;\n}\n.started .content section {\n  margin-bottom: 30px;\n}\n.started .section-content {\n  display: table-cell;\n}\n.started .content,\n.styles .content,\n.faq .content {\n  padding: 40px;\n  display: inline-block;\n  text-align: left;\n  width: 100%;\n  box-sizing: border-box;\n}\n.docs-layout ul {\n  list-style-type: none;\n}\n.docs-layout li {\n  position: relative;\n}\n.styles .content li:before,\n.docs-readme .content li:before {\n  position: absolute;\n  top: 2px;\n  left: -28px;\n  content: '•';\n  font-size: 32px;\n}\n.started .content p {\n  margin-top: 10px;\n  margin-bottom: 15px;\n}\n.started .mdl-tabs {\n  margin-bottom: 22px;\n}\n.started .content .mdl-tabs__panel {\n  padding-top: 10px;\n}\n.started .caption {\n  font-size: 13px;\n  max-width: 640px;\n  box-sizing: border-box;\n  margin-top: 15px;\n  padding: 15px;\n  background-color: rgb(255, 255, 255);\n  border-radius: 3px;\n}\n.started .caption h4 {\n  font-size: 13px;\n  font-weight: normal;\n  font-style: italic;\n  margin-top: 0;\n}\n.started .use-components pre {\n  margin-top: 0;\n}\n.started .component-example {\n  margin: 30px 0;\n}\n.started ol {\n  padding-left: 18px;\n  font-size: 13px;\n  max-width: 640px;\n  box-sizing: border-box;\n}\n.started pre {\n  width: 640px;\n  box-sizing: border-box;\n  position: relative;\n}\n.started .snippet-group {\n  max-width: 640px;\n  margin: 60px 0 40px 0;\n}\n@media (max-width: 850px) {\n  .started .chapter-toc {\n    display: block;\n  }\n  .started .content h3,\n  .started .content h4 {\n    display: block;\n    width: auto;\n  }\n  .started .section-content {\n    display: block;\n  }\n  .started pre {\n    width: auto;\n    margin-left: -40px;\n    margin-right: -40px;\n    padding: 15px 40px;\n    box-sizing: content-box;\n    display: block;\n    max-width: none;\n  }\n  .started .caption {\n    margin-left: -40px;\n    margin-right: -40px;\n    max-width: none;\n    box-sizing: content-box;\n    padding: 15px 40px;\n  }\n  .started .mdl-tabs__tab-bar {\n    margin-left: -40px;\n    margin-right: -40px;\n    justify-content: center;\n  }\n  .started .mdl-tabs__tab {\n    padding: 0 3%;\n  }\n  .started .content {\n    display: block;\n  }\n  .started .snippet-group {\n    margin-left: -40px;\n    margin-right: -40px;\n    max-width: none;\n  }\n  .started .snippet-group code {\n    padding-left: 40px;\n    padding-right: 40px;\n  }\n}\n/*Styles page*/\n.styles a {\n  color: #00BCD4;\n}\n.styles .styles__content h2 {\n  text-transform: none;\n}\n.styles .typo-styles {\n  margin-bottom: 40px;\n}\n.styles .typo-styles dt {\n  display: block;\n  float: left;\n  color: white;\n  background-color: rgba(0, 0, 0, 0.24);\n  width: 32px;\n  height: 32px;\n  border-radius: 16px;\n  line-height: 32px;\n  text-align: center;\n  font-weight: 500;\n  margin-top: 5px;\n}\n.styles .typo-styles dd {\n  display: block;\n  margin-left: 60px;\n  margin-bottom: 20px;\n}\n.styles .typo-styles .typo-styles__demo {\n  margin-bottom: 8px;\n}\n.styles .typo-styles .typo-styles__desc {\n  font-weight: 300;\n}\n.styles .typo-styles .typo-styles__desc .typo-styles__name {\n  margin-right: 8px;\n  font-weight: 400;\n}\n.styles .download-btn {\n  color: rgba(0, 0, 0, 0.54);\n  line-height: 20px;\n  display: flex;\n  font-weight: 300;\n  margin-bottom: 20px;\n}\n.styles .download-btn.download-btn--customizer .material-icons {\n  margin-top: -2px;\n}\n.styles .download-btn > * {\n  margin-right: 8px;\n}\n.styles .styles__ribbon {\n  background-color: #4A148C;\n  width: 100vw;\n  margin: 80px 0;\n  margin-left: -40px;\n  height: 320px;\n  display: flex;\n  flex-direction: row;\n  justify-content: center;\n  align-items: stretch;\n}\n.styles .styles__ribbon > .ribbon__imagecontainer {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n}\n.styles .styles__ribbon > .ribbon__imagecontainer > .ribbon__image {\n  display: block;\n  margin-bottom: 48px;\n  border: 0;\n}\n.styles .styles__ribbon > .ribbon__imagecontainer > .ribbon__caption {\n  color: white;\n  text-transform: uppercase;\n  font-size: 16px;\n  font-weight: 500;\n  height: 24px;\n  line-height: 24px;\n  text-align: center;\n}\n.styles .styles__ribbon > .ribbon__imagecontainer > .ribbon__caption.ribbon__caption--split {\n  width: 100%;\n  text-align: left;\n}\n.styles .styles__ribbon > .ribbon__imagecontainer > .ribbon__caption > .material-icons {\n  height: 24px;\n  line-height: 24px;\n  vertical-align: middle;\n  margin-top: -1px;\n}\n.styles .styles__ribbon > .ribbon__imagecontainer > .ribbon__caption.ribbon__caption--split > .material-icons {\n  float: right;\n}\n.styles .content .docs-text-styling h3 {\n  text-transform: none;\n  margin: 0;\n  font-size: 14px;\n  font-weight: 700;\n}\n.styles .content .docs-text-styling p {\n  margin-top: 0;\n}\n.styles img.customizer {\n  max-width: 450px;\n}\n.styles .code-with-text {\n  margin-right: 40px;\n}\n.styles .docs-layout.is-small-screen .code-with-text pre[class*=language-markup]{\n  width: 100vw;\n  max-width: none;\n}\n.styles .content ul,\n.components .content ul {\n  font-size: 13px;\n}\n.styles .content li:before {\n  font-size: 16px;\n}\n.styles .content .mdl-cell.left-col {\n  padding-right: 40px;\n}\n.styles .content .mdl-cell.right-col {\n  margin-bottom: 40px;\n}\n.styles .code-with-text {\n  margin-bottom: 20px;\n}\n.styles .content .styles__content {\n  max-width: 960px;\n  margin: 0 auto;\n}\n.styles .styles__download {\n  display: flex;\n}\n.styles .styles__download a {\n  font-weight: 500;\n  margin-right: 16px;\n}\n.styles .styles__content a .customizer {\n  border: 0;\n}\n\n@media (max-width: 850px) {\n  .started .docs-layout .docs-text-styling pre[class*=language-markup] {\n    max-width: none;\n  }\n  .docs-layout .code-with-text {\n    width: 100%;\n    margin-left: -40px;\n    margin-right: -40px;\n    padding: 15px 40px;\n    display: block;\n    box-sizing: content-box;\n  }\n  .docs-layout .code-with-text pre {\n    width: auto;\n    padding-left: 40px;\n    padding-right: 40px;\n    margin-left: -40px;\n    margin-right: -40px;\n  }\n}\n@media (-webkit-min-device-pixel-ratio: 2), /* Webkit-based browsers */\n     (min--moz-device-pixel-ratio: 2),    /* Older Firefox browsers (prior to Firefox 16) */\n     (min-resolution: 2dppx),             /* The standard way */\n     (min-resolution: 192dpi)             /* dppx fallback */ {\n  .social-btn__twitter {\n    background-image: url('https://www.gstatic.com/images/icons/material/system/2x/post_twitter_white_24dp.png');\n  }\n  .social-btn__gplus {\n    background-image: url('https://www.gstatic.com/images/icons/material/system/2x/post_gplus_white_24dp.png');\n  }\n  .templates .docs-layout-header {\n    background-image: url('templates_2x.png');\n  }\n  .showcase .docs-layout-header {\n    background-image: url('templates_2x.png');\n  }\n  .components .docs-layout-header {\n    background-image: url('components_2x.png');\n  }\n  .styles .docs-layout-header {\n    background-image: url('styles_2x.png');\n  }\n  .customize .docs-layout-header {\n    background-image: url('customize_2x.png');\n  }\n  .about .docs-layout-header {\n    background: url('logo.svg'), url('header_2x.jpg');\n    background-size: auto 30%, cover;\n    background-repeat: no-repeat, no-repeat;\n    background-position: center center, center center;\n  }\n}\n.docs-navigation .spacer {\n  flex-grow: 1;\n}\n.components .docs-layout.is-small-screen .docs-text-styling pre {\n  margin: 0 -16px;\n  width: 100vw;\n  max-width: 640px;\n}\n.docs-text-styling p {\n  margin-top: 16px;\n  margin-bottom: 16px;\n}\n.components .content blockquote {\n  font-size: 13px;\n  max-width: 640px;\n  box-sizing: border-box;\n  margin-top: 15px;\n  padding: 15px;\n  background-color: rgb(255, 255, 255);\n  border-radius: 3px;\n  margin-left: 0;\n}\n.components .content blockquote:before,\n.components .content blockquote:after {\n  display: none;\n}\n/* .started .caption h4 {\n  font-size: 13px;\n  font-weight: normal;\n  font-style: italic;\n  margin-top: 0;\n}\n */\n\n/* faq */\n.faq  .docs-text-styling > section {\n  max-width: 960px;\n  margin: 0 auto;\n}\n.faq img {\n  max-width: 100%;\n}\n.faq .mdl-tabs__tab-bar {\n  justify-content: flex-start;\n  border-bottom: 0;\n}\n.faq .mdl-tabs.is-upgraded .mdl-tabs__tab.is-active {\n  color: #00ACC1;\n}\n.faq .mdl-tabs.is-upgraded .mdl-tabs__tab.is-active:after {\n  background-color: #00ACC1;\n}\n.faq .docs-layout-content {\n  text-align: center;\n}\n.faq .chapter-toc {\n  display: table;\n}\n.faq .content h3 {\n  display: table-cell;\n  width: 140px;\n  font-size: 15px;\n  font-weight: bold;\n  padding-right: 60px;\n  line-height: 25px;\n}\n.faq .content section {\n  margin-bottom: 30px;\n}\n.faq .section-content {\n  display: table-cell;\n}\n.faq .content p {\n  margin-top: 10px;\n  margin-bottom: 15px;\n}\n.faq .mdl-tabs {\n  margin-bottom: 22px;\n}\n.faq .content h4 {\n  font-size: 15px;\n  font-weight: bold;\n  margin-bottom: 5px;\n  margin-top: 20px;\n}\n.faq .content .mdl-tabs__panel {\n  padding-top: 10px;\n}\n.faq .docs-layout.is-small-screen .docs-toc > * {\n  display: block;\n}\n.faq .caption {\n  font-size: 13px;\n  max-width: 640px;\n  box-sizing: border-box;\n  margin-top: 15px;\n  padding: 15px;\n  background-color: rgb(255, 255, 255);\n  border-radius: 3px;\n}\n.faq .caption h4 {\n  font-size: 13px;\n  font-weight: normal;\n  font-style: italic;\n  margin-top: 0;\n}\n.faq ol {\n  padding-left: 18px;\n  font-size: 13px;\n  max-width: 640px;\n  box-sizing: border-box;\n}\n.faq pre {\n  width: 640px;\n  box-sizing: border-box;\n  word-wrap: break-word;\n}\n.faq .snippet-group {\n  max-width: 640px;\n  margin: 60px 0 40px 0;\n}\n"
  },
  {
    "path": "docs/_assets/main.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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/*global MaterialCustomizer:true,Prism:true,ga:true*/\n\n// Navbar scroll buttons\n(function() {\n  'use strict';\n\n  var rightScroll = document.querySelector('.scrollindicator.scrollindicator--right');\n  var leftScroll = document.querySelector('.scrollindicator.scrollindicator--left');\n  var menuBar = document.querySelector('.docs-navigation');\n  var delta = 40;\n\n  function updateScrollIndicator() {\n    leftScroll.classList.remove('disabled');\n    rightScroll.classList.remove('disabled');\n    if (menuBar.scrollLeft <= 0) {\n      leftScroll.classList.add('disabled');\n    }\n    // 5px tolerance because browsers!\n    if (menuBar.scrollLeft + menuBar.clientWidth + 5 >= menuBar.scrollWidth) {\n      rightScroll.classList.add('disabled');\n    }\n  }\n  menuBar.addEventListener('scroll', updateScrollIndicator);\n  updateScrollIndicator();\n\n  function scrollMenuBar(delta) {\n    menuBar.scrollLeft += delta;\n  }\n\n  rightScroll.addEventListener('click', scrollMenuBar.bind(null, delta));\n  rightScroll.addEventListener('tap', scrollMenuBar.bind(null, delta));\n  leftScroll.addEventListener('click', scrollMenuBar.bind(null, -delta));\n  leftScroll.addEventListener('tap', scrollMenuBar.bind(null, -delta));\n})();\n\n(function() {\n  'use strict';\n\n  var downloadButton = document.querySelector('.download-button-container');\n  if (downloadButton) {\n    downloadButton.addEventListener('click', function() {\n      ga('send', {\n        hitType: 'event',\n        eventCategory: 'click',\n        eventAction: 'mdl-download'\n      });\n    });\n  }\n\n})();\n\n// Disable empty links in demo's to prevent refresh page\n(function () {\n  'use strict';\n  var emptyLinks = document.querySelectorAll('[href=\"\"]');\n  Array.prototype.forEach.call(emptyLinks, function(link) {\n    link.addEventListener('click', function (event){\n      event.preventDefault();\n    });\n  });\n})();"
  },
  {
    "path": "docs/_assets/snippets.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\nfunction MaterialComponentsSnippets() {\n  'use strict';\n\n  // Find all code snippets.\n  this.snippets = document.querySelectorAll('code.language-markup');\n  this.init();\n}\n\n/**\n * Initializes the MaterialComponentsSnippets components.\n */\nMaterialComponentsSnippets.prototype.init = function() {\n  'use strict';\n\n  [].slice.call(this.snippets).forEach(function(snippet) {\n    snippet.addEventListener('click', this.onMouseClickHandler(snippet));\n    snippet.addEventListener('mouseout', this.onMouseOutHandler(snippet));\n  }, this);\n};\n\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n * @enum {string}\n * @private\n */\nMaterialComponentsSnippets.prototype.CssClasses_ = {\n  COPIED: 'copied',\n  NOT_SUPPORTED: 'nosupport'\n};\n\n/**\n * Copies content of a <code> element into the system clipboard.\n * Not all browsers may be supported. See the following for details:\n * http://caniuse.com/clipboard\n * https://developers.google.com/web/updates/2015/04/cut-and-copy-commands\n * @param  {HTMLElement} snippet The <code> element containing the snippet code\n * @return {bool} whether the copy operation is succeeded\n */\nMaterialComponentsSnippets.prototype.copyToClipboard = function(snippet) {\n  'use strict';\n\n  var sel = window.getSelection();\n  var snipRange = document.createRange();\n  snipRange.selectNodeContents(snippet);\n  sel.removeAllRanges();\n  sel.addRange(snipRange);\n  var res = false;\n  try {\n    res = document.execCommand('copy');\n  } catch (err) {\n    // copy command is not available\n    console.error(err);\n  }\n  sel.removeAllRanges();\n  return res;\n};\n\n/**\n * Returns a mouseClickHandler for a snippet <code> element.\n * @param  {HTMLElement} snippet The <code> element containing the snippet code\n * @return {function} the click handler\n */\nMaterialComponentsSnippets.prototype.onMouseClickHandler = function(snippet) {\n  'use strict';\n\n  return function() {\n    if (window.getSelection().toString().length > 0) {\n      // user has selected some text manually\n      // don't do anything\n      return;\n    }\n    var cls = this.CssClasses_.COPIED;\n    if (!this.copyToClipboard(snippet)) {\n      cls = this.CssClasses_.NOT_SUPPORTED;\n    }\n    snippet.classList.add(cls);\n  }.bind(this);\n};\n\n/**\n * Returns a mouseOutHandler for a snippet <code> element.\n * @param  {HTMLElement} snippet The <code> element containing the snippet code\n * @return {function} the click handler\n */\nMaterialComponentsSnippets.prototype.onMouseOutHandler = function(snippet) {\n  'use strict';\n\n  return function() {\n    snippet.classList.remove(this.CssClasses_.COPIED);\n  }.bind(this);\n};\n\nwindow.addEventListener('load', function() {\n  'use strict';\n\n  new MaterialComponentsSnippets();\n});\n"
  },
  {
    "path": "docs/_pages/components.md",
    "content": "---\nlayout: components\ntitle: Components\nbodyclass: components\ninclude_prefix: ../\ncategories:\n  - name: badges\n    title: Badges\n    description: Small status descriptors for UI elements.\n    components:\n      - name: badge\n        class: mdl-badge\n        snippets:\n          - snippet_group:\n            - caption: Number\n              file: badge-on-icon-text.html\n              demo_file: badge-on-icon-text-demo.html\n            - caption: Icon\n              file: badge-on-icon-icon.html\n              demo_file: badge-on-icon-icon-demo.html\n          - snippet_group:\n            - caption: Number\n              file: badge-on-text-text.html\n              demo_file: badge-on-text-text-demo.html\n            - caption: Icon\n              file: badge-on-text-icon.html\n              demo_file: badge-on-text-icon-demo.html\n  - name: buttons\n    title: Buttons\n    description: Variations on Material Design buttons.\n    components:\n      - name: button\n        class: mdl-button\n        snippets:\n          - snippet_group:\n            - caption: Colored FAB\n              file: fab-colored.html\n            - caption: With ripple\n              file: fab-colored-ripple.html\n          - snippet_group:\n            - caption: Plain FAB\n              file: fab.html\n            - caption: With ripple\n              file: fab-ripple.html\n            - caption: Disabled\n              file: fab-disabled.html\n          - snippet_group:\n            - caption: Raised Button\n              file: raised.html\n            - caption: With ripple\n              file: raised-ripple.html\n            - caption: Disabled\n              file: raised-disabled.html\n          - snippet_group:\n            - caption: Colored button\n              file: raised-colored.html\n            - caption: Accent colored\n              file: raised-accent.html\n            - caption: With Ripples\n              file: raised-ripple-accent.html\n          - snippet_group:\n            - caption: Flat button\n              file: flat.html\n            - caption: With ripple\n              file: flat-ripple.html\n            - caption: Disabled\n              file: flat-disabled.html\n          - snippet_group:\n            - caption: Primary colored flat\n              file: flat-primary.html\n            - caption: Accent colored flat\n              file: flat-accent.html\n          - snippet_group:\n            - caption: Icon button\n              file: icon.html\n            - caption: Colored\n              file: icon-colored.html\n          - snippet_group:\n            - caption: Mini FAB\n              file: fab-mini.html\n            - caption: Colored\n              file: fab-mini-colored.html\n  - name: cards\n    title: Cards\n    description: Self-contained pieces of paper with data.\n    components:\n      - name: card\n        class: mdl-card\n        snippets:\n          - snippet_group:\n            - caption: Wide\n              file: wide.html\n          - snippet_group:\n            - caption: Square\n              file: square.html\n          - snippet_group:\n            - caption: Image\n              file: image.html\n            - caption: Event\n              file: event.html\n  - name: chips\n    title: Chips\n    description: Represents complex entities in small blocks.\n    components:\n      - name: chip\n        class: mdl-chip\n        snippets:\n          - snippet_group:\n            - caption: Basic Chip\n              file: basic.html\n            - caption: Deletable Chip\n              file: deletable.html\n            - caption: Button Chip\n              file: button.html\n          - snippet_group:\n            - caption: Contact Chip\n              file: contact.html\n            - caption: Deletable Contact Chip\n              file: deletable-contact.html\n  - name: dialog\n    title: Dialogs\n    description: Modal windows for dedicated user input.\n    components:\n      - name: dialog\n        class: mdl-dialog\n        warning: Dialogs use the HTML <dialog> element, which currently has very\n          limited cross-browser support. To ensure support across all modern\n          browsers, please consider using a polyfill or creating your own.\n          There is no polyfill included with MDL.\n  - name: expansion\n    title: Expansion\n    description: Collapsible content sections.\n    components:\n      - name: expansion\n        class: mdl-expansion\n        snippets:\n          - snippet_group:\n            - caption: Example Expansion\n              file: expansion.html\n              full_width: true\n  - name: layout\n    title: Layout\n    description: Building blocks for constructing a page layout.\n    components:\n      - name: layout\n        caption: Navigation layouts\n        class: mdl-layout\n        snippets:\n          - snippet_group:\n            - caption: Transparent header\n              file: transparent.html\n              demo_file: transparent-demo.html\n              full_width: true\n          - snippet_group:\n            - caption: Fixed drawer, no header\n              file: fixed-drawer.html\n              demo_file: fixed-drawer-demo.html\n              full_width: true\n          - snippet_group:\n            - caption: Fixed header\n              file: fixed-header.html\n              demo_file: fixed-header-demo.html\n              full_width: true\n          - snippet_group:\n            - caption: Fixed header and drawer\n              file: fixed-header-drawer.html\n              demo_file: fixed-header-drawer-demo.html\n              full_width: true\n          - snippet_group:\n            - caption: Scrolling header\n              file: scrolling-header.html\n              demo_file: scrolling-header-demo.html\n              full_width: true\n          - snippet_group:\n            - caption: Waterfall header\n              file: waterfall-header.html\n              demo_file: waterfall-header-demo.html\n              full_width: true\n          - snippet_group:\n            - caption: Scrollable tabs\n              file: scrollable-tabs.html\n              demo_file: scrollable-tabs-demo.html\n              full_width: true\n          - snippet_group:\n            - caption: Fixed tabs\n              file: fixed-tabs.html\n              demo_file: fixed-tabs-demo.html\n              full_width: true\n      - name: grid\n        caption: Grid\n        class: mdl-grid\n        snippets:\n        - snippet_group:\n          - caption: Responsive grid\n            file: grid.html\n            demo_file: grid-demo.html\n            extra_codepen_css: codepen-grid.css\n            full_width: true\n      - name: tabs\n        caption: Tabs\n        class: mdl-tabs\n        snippets:\n          - snippet_group:\n            - caption: Content tabs\n              file: tabs.html\n      - name: footer\n        caption: Footer\n        class: mdl-mega-footer / mdl-mini-footer\n        snippets:\n          - snippet_group:\n            - caption: Mega footer\n              file: mega-footer.html\n              full_width: true\n          - snippet_group:\n            - caption: Mini footer\n              file: mini-footer.html\n              full_width: true\n  - name: lists\n    title: Lists\n    description: Customizable scrollable lists.\n    components:\n      - name: list\n        class: mdl-list\n        snippets:\n          - snippet_group:\n            - caption: Simple list\n              file: list-item.html\n          - snippet_group:\n            - caption: Icons\n              file: icon.html\n          - snippet_group:\n            - caption: Avatars and actions\n              file: action.html\n          - snippet_group:\n            - caption: Avatars and controls\n              file: list-control.html\n          - snippet_group:\n            - caption: Two line\n              file: two-line.html\n          - snippet_group:\n            - caption: Three line\n              file: three-line.html\n  - name: loading\n    title: Loading\n    description: Indicate loading and progress states.\n    components:\n      - name: progress\n        caption: Progress bar\n        class: mdl-progress\n        snippets:\n          - snippet_group:\n            - caption: Default\n              file: progress-default.html\n              demo_file: progress-default-demo.html\n          - snippet_group:\n            - caption: Indeterminate\n              file: progress-indeterminate.html\n              demo_file: progress-indeterminate-demo.html\n          - snippet_group:\n            - caption: Buffering\n              file: progress-buffering.html\n              demo_file: progress-buffering-demo.html\n      - name: spinner\n        caption: Spinner\n        class: mdl-spinner\n        snippets:\n          - snippet_group:\n            - caption: Default\n              file: spinner-default.html\n            - caption: Single color\n              file: spinner-single-color.html\n  - name: menus\n    title: Menus\n    description: Lists of clickable actions.\n    components:\n      - name: menu\n        class: mdl-menu\n        snippets:\n          - snippet_group:\n            - caption: Lower left\n              file: lower-left.html\n              demo_file: lower-left-demo.html\n              extra_codepen_css: codepen-lower-buttons.css\n            - caption: Lower right\n              file: lower-right.html\n              demo_file: lower-right-demo.html\n          - snippet_group:\n            - caption: Top left\n              file: top-left.html\n              demo_file: top-left-demo.html\n              extra_codepen_css: codepen-top-buttons.css\n            - caption: Top right\n              file: top-right.html\n              demo_file: top-right-demo.html\n  - name: sliders\n    title: Sliders\n    description: Selecting a value out of a range.\n    components:\n      - name: slider\n        class: mdl-slider\n        snippets:\n          - snippet_group:\n            - caption: Default slider\n              file: slider-default.html\n              demo_file: slider-default-demo.html\n            - caption: Starting value\n              file: slider-starting-value.html\n              demo_file: slider-starting-value-demo.html\n  - name: snackbar\n    title: Snackbar\n    description: Transient popup notifications.\n    components:\n      - name: snackbar\n        class: mdl-snackbar\n        snippets:\n          - snippet_group:\n            - caption: Snackbar\n              file: snackbar.html\n          - snippet_group:\n            - caption: Toast\n              file: toast.html\n  - name: toggles\n    title: Toggles\n    description: Choose between states.\n    components:\n      - name: checkbox\n        caption: Checkbox\n        class: mdl-checkbox\n        snippets:\n          - snippet_group:\n            - caption: Check on\n              file: check-on.html\n            - caption: Check off\n              file: check-off.html\n      - name: radio\n        caption: Radio button\n        class: mdl-radio\n        snippets:\n          - snippet_group:\n            - caption: Radio on\n              file: radio-on.html\n            - caption: Radio off\n              file: radio-off.html\n      - name: icon-toggle\n        caption: Icon toggle\n        class: mdl-icon-toggle\n        snippets:\n          - snippet_group:\n            - caption: Icon on\n              file: icon-on.html\n            - caption: Icon off\n              file: icon-off.html\n      - name: switch\n        caption: Switch\n        class: mdl-switch\n        snippets:\n          - snippet_group:\n            - caption: Switch on\n              file: switch-on.html\n            - caption: Switch off\n              file: switch-off.html\n  - name: tables\n    title: Tables\n    description: Organize data.\n    components:\n      - name: data-table\n        class: mdl-data-table\n        snippets:\n          - snippet_group:\n            - caption: Data table\n              file: data-table.html\n  - name: textfields\n    title: Text Fields\n    description: Textual input components.\n    components:\n      - name: textfield\n        class: mdl-textfield\n        snippets:\n          - snippet_group:\n            - caption: Text\n              file: textfield-text.html\n              demo_file: textfield-text-demo.html\n            - caption: Numeric\n              file: textfield-numeric.html\n              demo_file: textfield-numeric-demo.html\n          - snippet_group:\n            - caption: Text with floating label\n              file: textfield-floating-text.html\n              demo_file: textfield-floating-text-demo.html\n            - caption: Numeric with floating label\n              file: textfield-floating-numeric.html\n              demo_file: textfield-floating-numeric-demo.html\n          - snippet_group:\n            - caption: Multiple line\n              file: textfield-multi-line.html\n              demo_file: textfield-multi-line-demo.html\n            - caption: Expanding\n              file: textfield-expanding.html\n              demo_file: textfield-expanding-demo.html\n  - name: tooltips\n    title: Tooltips\n    description: Useful information on hover.\n    components:\n      - name: tooltip\n        class: mdl-tooltip\n        snippets:\n          - snippet_group:\n            - caption: Simple\n              file: tooltip-simple.html\n            - caption: Large\n              file: tooltip-large.html\n          - snippet_group:\n            - caption: Rich\n              file: tooltip-rich.html\n            - caption: Multiple lines\n              file: tooltip-multiline.html\n---\n"
  },
  {
    "path": "docs/_pages/customize.md",
    "content": "---\nlayout: customize\ntitle: Customize &amp; Download\nbodyclass: customize\ninclude_prefix: ../\n---\n"
  },
  {
    "path": "docs/_pages/faq.md",
    "content": "---\nlayout: styles\ntitle: FAQ\nbodyclass: faq\ninclude_prefix: ../\n---\n\n<div class=\"docs-text-styling\">\n  <section class=\"docs-toc\">\n    <h3>Contents</h3>\n    <nav class=\"section-content\">\n      <ul>\n        <li><a href=\"#where-should-i-use\">Where should I use Material Design Lite (MDL)?</a></li>\n        <li><a href=\"#css-naming-conventions\">What CSS naming conventions does MDL use?</a></li>\n        <li><a href=\"#progressive-enhancement\">Does MDL support progressive enhancement?</a></li>\n        <li><a href=\"#browser-support\">Which browsers does MDL support?</a></li>\n        <li><a href=\"#polymer\">Does MDL play nicely with Polymer?</a></li>\n        <li><a href=\"#bootstrap\">Is MDL comparable to Bootstrap?</a></li>\n        <li><a href=\"#existing-implementations\">How does it compare to existing Material CSS implementations?</a></li>\n        <li><a href=\"#options-available\">Should I use the minified, CDN or Sass versions of MDL?</a></li>\n        <li><a href=\"#official-cdn\">What service does the official CDN use?</a></li>\n        <li><a href=\"#web-starter-kit\">How does MDL relate to Web Starter Kit?</a></li>\n        <li><a href=\"#mdl-in-production\">Do any Google properties use MDL in production?</a></li>\n        <li><a href=\"#mdl-showcase\">Is there a showcase available of sites using MDL?</a></li>\n        <li><a href=\"#individual-components\">Can I build or use individual MDL components (e.g a button)?</a></li>\n        <li><a href=\"#report-an-issue\">How do I report a problem with MDL?</a></li>\n        <li><a href=\"#getting-help\">Where can I get help with questions about using MDL?</a>\n        <li><a href=\"#slide-decks\">Are there any presentations or slide-decks available on MDL?</a></li>\n        <li><a href=\"#new-components\">Can I request or contribute components to MDL?</a></li>\n        <li><a href=\"#alternate-preprocessor\">Will MDL support non-Sass preprocessors?</a></li>\n        <li><a href=\"#issue-updates\">How do I keep updated with issues I'm interested in?</a></li>\n      </ul>\n    </nav>\n  </section>\n\n<h2 id=\"where-should-i-use\">Where should I use Material Design Lite (MDL)?</h2>\n\nIf you’re interested in a [Material Design](https://www.google.com/design/spec/material-design/introduction.html) experience using vanilla Web technologies like CSS, JavaScript and HTML, MDL might be a useful option to consider. We optimise for websites heavy on content, such as marketing pages, articles, blogs and general web content that isn’t particularly app-y.  If you just want to pick some colors, customise a template and ship a Material experience, we try to help make that process simpler.\n\nWhilst there exist several community-driven options for Material Design, our experience has shown that there are several gaps in the Material specification when it comes to the web. Rather than guessing how these gaps should be filled (something we know the community has struggled with), we’ve opted for a close collaboration with the Material Design team to provide a Material library that is both spec compatible for today and provides guidance on aspects of the spec still being evolved.\n\n<h2 id=\"css-naming-conventions\">What CSS naming conventions does MDL use?</h2>\n\nMDL was written using [BEM](https://en.bem.info/method/). BEM stands for Block, Element, Modifier. It is a method used to construct CSS class-names so they are consistent, isolated, and expressive. A few good resources for learning more about BEM methods are:\n\n* [CSSWizardry](http://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem-syntax/)\n* [CSS-Tricks](https://css-tricks.com/bem-101/)\n* [Smashing Magazine](http://www.smashingmagazine.com/2012/04/16/a-new-front-end-methodology-bem/)\n\nThese are great resources that simplify the data needed to understand BEM. If you want to read the methodology from the inventors, [Yandex provides the resource](https://en.bem.info/). This reference goes way beyond just the CSS and into the full JavaScript setup they use as well.\n\nOur [wiki](https://github.com/google/material-design-lite/wiki/Understanding-BEM) includes a section on the namespacing used for MDL specifically.\n\n<h2 id=\"progressive-enhancement\">Does MDL support progressive enhancement?</h2>\n\nMDL’s components were designed from the ground up with progressive enhancement in mind. We attempt to build on native HTML elements as much as possible, relying on JavaScript where absolutely necessary for ‘enhancements’.\n\nOne example of this is our ‘Text only’ Material Design template. Switching JavaScript off in Chrome DevTools, the page still renders CSS fine:\n\n![A preview of a template rendering in an older version of IE](../assets/template-preview.png)\n\nThis allows us to render important content first and then ‘enhance’ the page with things like Material Design button ripples and pop-out menu components.\n\nMDL will degrade to a no-JavaScript experience on IE9, though you can pull in polyfills for an enhanced experience. If components require JavaScript to function, such as Layout, these will otherwise need to be planned for in development. IE10+ and evergreen browsers are fully supported. For more details on our browser support, see ‘Which browsers does MDL support?’.\n\nNote: the MDL site itself attempts to use progressive enhancement where possible. We do however have aspects of the site (e.g our component page) that rely more heavily on JS. The MDL Templates and Components otherwise try to render as well as they can with JS off.\n\n<h2 id=\"browser-support\">Which browsers does MDL support?</h2>\n\nThe complete MDL experience should work in the last two versions of all evergreen browsers, whilst we gracefully degrade to CSS-only in browsers like IE9 that don’t pass our [Cutting-the-mustard](https://github.com/google/material-design-lite/blob/9e6c6ec9237715bfa04b307f786e9073f943e6be/src/mdlComponentHandler.js#L333) test.\n\nOur [browser compatibility matrix](https://github.com/google/material-design-lite/#browser-support) has the most up to date information on the browsers we officially support. For components, at minimum we require support for [querySelector](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector), [classList](https://developer.mozilla.org/en-US/docs/Web/API/Element/classList) and [addEventListener](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener), which can be [polyfilled](https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills) as needed. Our Templates will work in IE10+, primarily due to our use of Flexbox.\n\nThe polyfills that we’re currently using for the MDL site to improve support in oldIE are the following:\n\n```html\n<!--[if IE]>\n<script src=\"//cdnjs.cloudflare.com/ajax/libs/es5-shim/4.2.0/es5-shim.min.js\"></script>\n<script src=\"//cdnjs.cloudflare.com/ajax/libs/classlist/2014.01.31/classList.min.js\"></script>\n<script src=\"//cdnjs.cloudflare.com/ajax/libs/selectivizr/1.0.2/selectivizr-min.js\"></script>\n<![endif]-->\n```\n\nIE10 standards mode [removes](http://bit.ly/1dypChT) support for conditional comments, so the above will only get interpreted by older versions of IE, such as IE9.\n\nWe do not officially support IE8. That said, some components will degrade using the CSS-only (or native HTML element) experience there better than others. For example:\n\n**Buttons**\n\n<img alt=\"Buttons rendering in IE8\" src=\"../assets/button_degradation.png\">\n\n**Tables**\n\n<img alt=\"Tables gracefully degrading in IE8\" src=\"../assets/table_degradation.png\">\n\n**Sliders (degrade to input fields)**\n\n<img alt=\"Sliders degrading in IE8 to input fields\" src=\"../assets/sliders_degradation.png\">\n\n<h2 id=\"polymer\">Does MDL play nicely with Polymer? Is it a replacement for the Paper elements?</h2>\n\nMDL focuses on delivering an experience that is optimised for static content sites, like blogs, marketing pages and more traditional text-based web pages.\n\nThe <a href=\"https://elements.polymer-project.org/browse?package=paper-elements\">Paper</a> elements built with <a href=\"http://polymer-project.org\">Polymer</a> are fully encapsulated components that can be used individually or composed together to create a material design-style site, and support more advanced user interaction.\n\nThat said, MDL can be used alongside the Polymer element counterparts. Polymer uses the power of Web Components to encapsulate the designs used for those components. MDL does not affect the styling within custom components.\n\n<h2 id=\"bootstrap\">Is MDL comparable to Bootstrap?</h2>\n\n*If we're using it instead of Bootstrap, can we expect the same level of component styling?*\n\nMaterial Design can replace many parts of Bootstrap. However, it does not intend to feature-match everything Bootstrap offers. Instead MDL intends to implement the components specified by the Material Design specification. This allows it to provide the most comprehensive and accurate solution available.\n\n<h2 id=\"existing-implementations\">How does it compare to existing Material CSS implementations?</h2>\n\n*Materialize, Material Bootstrap, etc*\n\nWe think the community does a great job offering their own take on how Material Design should be implemented for CSS libraries.\n\nThat said, the large, diverse number of implementations available are often quite liberal with their interpretation of the spec (not their fault!) and their opinions don’t always reflect what the Material Design team would consider ‘correct’. MDL was developed in close collaboration with the Material Design and Chrome UX teams and undergoes regular reviews for spec compliance. When we run into an area of the spec that isn’t yet fully fleshed out, MDL is able to offer reviewed opinions on how these should be solved in a way that tries to stay true to Material Design.\n\n<h2 id=\"options-available\">Should I use the minified, CDN or Sass versions of MDL?</h2>\n\n*Should I build my own version or download the minified version or simply refer to CDN objects?*\n\n**Minified: **If it’s your first time using MDL, we recommend downloading one of the default packages from the ‘Getting Started’ page that include a minified version of our CSS/JS and optionally our pre-made Templates.\n\n**CDN: **If you’re just prototyping or want to avoid hosting your own copy of the MDL CSS and JS files, you can use our CDN to pull down a heavily edge-cached version.\n\n**Customiser: **If you’re creating a new site with MDL and are using a custom color scheme, we recommend downloading the default package then generating a custom build using the Customiser tool. You can use this to override the material.min.css file for your own needs.\n\n**Sass: **If you would prefer to go all in, you can get the Sass version of MDL, which includes our original sources, docs and templates. This version allows maximum customisation using CSS variables and the rest of the Sass goodness you’re used to.\n\n<h2 id=\"official-cdn\">What service does the official CDN use?</h2>\n\nThe official CDN is hosted using [Google Cloud Storage](https://cloud.google.com/storage/).\n\n<h2 id=\"web-starter-kit\">How does MDL relate to Web Starter Kit?</h2>\n\nMDL is an evolutionary step from the styleguide provided in Web Starter Kit. The more [Web Starter Kit](https://developers.google.com/web/tools/starter-kit/) was used, the more it became clear that many developers simply wanted Material Design in their sites.\n\nThe WSK Styleguide also did not align to Material Design fully, it was simply based on the idea. From the WSK project, MDL was born to try and fill this need for developers. In the process making the implementation as faithful as possible to the specification.\n\n<h2 id=\"mdl-in-production\">Do any Google properties use MDL in production?</h2>\n\nMDL is used in production by a few different Google properties. These use an older, incomplete version but demonstrate what deployed experiences can look like. Examples include:\n\nThe [Google Services](https://developers.google.com/mobile/add) site:\n\n![Google Services site screenshot](../assets/google-services.png)\n\n[RichMediaGallery](http://www.richmediagallery.com/) by DoubleClick:\n\n![RichMediaGallery screenshot](../assets/rich-media-gallery.png)\n\nand is being used by many other teams on upcoming projects, including Google Shopping.\n\n<h2 id=\"mdl-showcase\">Is there a showcase available of sites using MDL?</h2>\n\nSee the <a href=\"/showcase/\">Showcase</a> for an early list of Google sites using MDL in production. \n\nTo request your site be added, please file a [new issue](https://github.com/Google/material-design-lite/issues/new?title=Site%20Showcase%20Request&body=Please%20include:%0A*%20Description%0A*%20Primary%20Link%0A*%20Screenshot) on our GitHub issue tracker. The issue should include a link, a description of the site and a suggested screenshot.\n\nWe hope to add a properly polished showcase to the site in the near future.\n\n<h2 id=\"individual-components\">Can I build or use individual MDL components (e.g a button)?</h2>\n\nFor V1 of MDL we are focused on the use-case of folks who are likely to need a few different components on their page and will want to include most of the MDL library. This means that support and docs around just plucking single components on their own is minimal.\n\nThat said, if you need to generate a build using just a single (or smaller number of) components, you will need to use Gulp with our Sass build. You can [comment out](https://github.com/google/material-design-lite/blob/master/src/material-design-lite.scss) those components you don’t need in material-design-lite.scss, [comment out](https://github.com/google/material-design-lite/blob/master/gulpfile.js#L191) the scripts you don’t need in the Gulpfile and then run `gulp` to create your build.\n\nWe have talked about offering up components in a more modular fashion but will be exploring this in the post V1 timeline.\n\n<h2 id=\"report-an-issue\">How do I report an issue with MDL?</h2>\n\nPlease let us know about any problems by opening an issue on our [GitHub repo](https://github.com/google/material-design-lite/issues).\n\n<h2 id=\"getting-help\">Where can I get help with questions about using MDL?</h2>\n\nWe encourage the MDL user and developer community to ask questions, and help answer questions, on [Stack Overflow](http://stackoverflow.com), using the `Material-Design-Lite` tag.\n\n<h2 id=\"slide-decks\">Are there any presentations or slide-decks available on MDL?</h2>\n\nWe did a preview talk at Google I/O 2015 on MDL and the slides for that talk can be found on [SpeakerDeck](https://speakerdeck.com/gauntface/material-design-lite-preview).\n\n<h2 id=\"new-components\">Can I request or contribute components to MDL?</h2>\n\nSure! There may be components or templates you would like to see implemented in MDL that we don't yet provide. Please feel free to propose them on the <a href=\"https://github.com/Google/material-design-lite/issues/new?title=%5BComponent%20Request%5D%20%7BComponent%7D&body=Please%20include:%0A*%20Description%0A*%20Material%20Design%20Spec%20link%0A*%20Use%20Case%28s%29\">Issue Tracker</a>. While we can't guarantee we'll be able to implement them all, we will consider requests and review them at regular intervals.\n\n<h2 id=\"alternate-preprocessor\">Will MDL support non-Sass preprocessors?</h2>\n\n*Stylus, Less, PostCSS, etc.*\n\nMDL is implemented using Sass and there are no current plans to change this. If you wish to maintain a port to another preprocessor, you are more than welcome to.\n\n<h2 id=\"issue-updates\">How do I keep updated with issues I'm interested in?</h2>\n\nWatching the whole repository can introduce a lot of extra noise in your stream. To keep updated with just issues you are interested in you only need to subscribe to that issue. This is done on the issue page by clicking the \"Subscribe\" button in the right hand sidebar.\n\n<img alt=\"Subscribing to a single issue\" src=\"../assets/faq/subscribe-single-issue.png\">\n"
  },
  {
    "path": "docs/_pages/index.md",
    "content": "---\nlayout: layout\nbodyclass: about\ninclude_prefix: ./\n---\n<!-- TODO: Try to separate markup and content -->\n<section class=\"docs-text-styling about-panel about-panel--text mdl-cell mdl-cell--12-col\">\n  <dl>\n    <dt>Material Design Lite</dt>\n    <dd>\n      Material Design Lite lets you add a [Material Design](http://google.com/design/spec) look and feel to your websites. It doesn’t rely on any JavaScript frameworks and aims to optimize for cross-device use, gracefully degrade in older browsers, and offer an experience that is immediately accessible. [Get started now](started/index.html).\n    </dd>\n  </dl>\n</section>\n\n<section class=\"about-panel about-panel--templates mdl-cell mdl-cell--12-col\" data-target=\"templates/index.html\">\n  Templates\n</section>\n\n<section class=\"docs-text-styling about-panel about-panel--text mdl-cell mdl-cell--12-col\">\n  <p>\n    The MDL components are created with CSS, JavaScript, and HTML. You can use the components to construct web pages and web apps that are attractive, consistent, and functional. Pages developed with MDL will adhere to modern web design principles like browser portability, device independence, and graceful degradation.\n  </p>\n</section>\n\n<section class=\"about-panel about-panel--components mdl-color-text--white mdl-cell mdl-cell--6-col\" data-target=\"components/index.html\">\n  Components\n</section>\n<section class=\"about-panel about-panel--styles mdl-color-text--white mdl-cell mdl-cell--6-col\" data-target=\"styles/index.html\">\n  Styles\n</section>\n<section class=\"about-panel about-panel--customize mdl-color-text--white mdl-cell mdl-cell--12-col\" data-target=\"customize/index.html\">\n  Customize\n</section>\n\n<section class=\"docs-text-styling about-panel about-panel--text mdl-cell mdl-cell--12-col\">\n  <p>\n    The MDL component library includes new versions of common user interface controls such as buttons, check boxes, and text fields, adapted to follow Material Design concepts. The library also includes enhanced and specialized features like cards, column layouts, sliders, spinners, tabs, typography, and more. MDL is free to download and use, and may be used with or without any library or development environment (such as [Web Starter Kit](https://developers.google.com/web/starter-kit/)). It is a cross-browser, cross-OS web developer's toolkit that can be used by anyone who wants to write more productive, portable, and &mdash; most importantly &mdash; usable web pages.\n  </p>\n</section>\n<script src=\"assets/index.js\" async></script>\n"
  },
  {
    "path": "docs/_pages/showcase.md",
    "content": "---\nlayout: showcase\ntitle: 'Showcase: sites using MDL'\nbodyclass: showcase\ninclude_prefix: ../\nsites:\n  - name: wallet\n    title: Google Wallet\n    description: Google Wallet allows you to send money to anyone in the US with an email address. It's fast, easy, and free to send directly from your debit card, bank account, or Wallet Balance.\n    url: https://www.google.com/wallet/\n  - name: contributor\n    title: Google Contributor\n    description: Contribute a few dollars each month. See fewer ads. It's that simple. The money you contribute helps fund the sites you visit.\n    url: https://www.google.com/contributor/welcome/\n  - name: work_partners\n    title: Google for Work\n    description: The Google for Work Partner Program enables you to sell, service, and innovate by leveraging our products and platforms across the Google for Work suite. \n    url: https://www.google.com/work/partners/\n  - name: rework\n    title: reWork with Google\n    description: Practices, research, and ideas from Google and other organizations to put people first.\n    url: https://rework.withgoogle.com/\n  - name: developers\n    title: Google Developers\n    description: Web Fundamentals is a comprehensive resource for multi-device web development hosted by Google Developers.\n    url: https://developers.google.com/web/fundamentals/\n  - name: sunroof\n    title: Google Project Sunroof\n    description: Project Sunroof puts Google's expansive data in mapping and computing resources to use, helping calculate the best solar plan for you.\n    url: https://www.google.com/get/sunroof/about/\n---\n<div class=\"sites__content\">\n<p>Material Design Lite is used on a wide range of sites. Below are just a small selection of the <strong>Google.com</strong> sites that have launched using us. We hope to expand the showcase to cover third-party and community sites built using MDL in the near future. To request your site be added, please file a <a href=\"https://github.com/Google/material-design-lite/issues/new?title=Site%20Showcase%20Request&body=Please%20include:%0A*%20Description%0A*%20Primary%20Link%0A*%20Screenshot\">new issue</a> on our GitHub issue tracker.</p>\n</div>\n\n"
  },
  {
    "path": "docs/_pages/started.md",
    "content": "---\nlayout: started\ntitle: Getting started\nbodyclass: started\ninclude_prefix: ../\nsnippets:\n  - component_name: button\n    snippet_group:\n    - caption: Raised button\n      file: raised-ripple-accent.html\n    - caption: Colored FAB\n      file: fab-colored.html\n---\n"
  },
  {
    "path": "docs/_pages/styles.md",
    "content": "---\nlayout: styles\ntitle: Styles\nbodyclass: styles\ninclude_prefix: ../\n---\n\n  <div class=\"styles__content\">\n    <p>\n      Material Design Lite is a light-weight implementation of Material Design,\n      specifically crafted for the web. For more detailed guidelines and\n      specifications for other platforms please refer to the\n      <a href=\"https://www.google.com/design/spec/material-design\">\n        Material Design site\n      </a>\n    </p>\n\n    <h2 class=\"mdl-typography--subhead\">Typography</h2>\n    <dl class=\"typo-styles\">\n      <dt>h1</dt>\n      <dd>\n        <div class=\"typo-styles__demo mdl-typography--display-4\">Light 112sp</div>\n        <div class=\"typo-styles__desc\">\n          <span class=\"typo-styles__name\">display-4</span>\n          <span class=\"typo-styles__weight\">font weight 300</span>\n        </div>\n      </dd>\n      <dt>h2</dt>\n      <dd>\n        <div class=\"typo-styles__demo mdl-typography--display-3\">Regular 56sp</div>\n        <div class=\"typo-styles__desc\">\n          <span class=\"typo-styles__name\">display-3</span>\n          <span class=\"typo-styles__weight\">font weight 400</span>\n        </div>\n      </dd>\n      <dt>h3</dt>\n      <dd>\n        <div class=\"typo-styles__demo mdl-typography--display-2\">Regular 45sp</div>\n        <div class=\"typo-styles__desc\">\n          <span class=\"typo-styles__name\">display-2</span>\n          <span class=\"typo-styles__weight\">font weight 400</span>\n        </div>\n      </dd>\n      <dt>h4</dt>\n      <dd>\n        <div class=\"typo-styles__demo mdl-typography--display-1\">Regular 34sp</div>\n        <div class=\"typo-styles__desc\">\n          <span class=\"typo-styles__name\">display-1</span>\n          <span class=\"typo-styles__weight\">font weight 400</span>\n        </div>\n      </dd>\n      <dt>h5</dt>\n      <dd>\n        <div class=\"typo-styles__demo mdl-typography--headline\">Regular 24sp</div>\n        <div class=\"typo-styles__desc\">\n          <span class=\"typo-styles__name\">headline</span>\n          <span class=\"typo-styles__weight\">font weight 400</span>\n        </div>\n      </dd>\n      <dt>h6</dt>\n      <dd>\n        <div class=\"typo-styles__demo mdl-typography--title\">Regular 20sp</div>\n        <div class=\"typo-styles__desc\">\n          <span class=\"typo-styles__name\">title</span>\n          <span class=\"typo-styles__weight\">font weight 500</span>\n        </div>\n      </dd>\n    </dl>\n    <div class=\"code-with-text\">\n      <strong>Note</strong>: This portion is only to demonstrate header and display styles for out CSS. For more typography guidelines, please refer to the <a href=\"https://www.google.com/design/spec/material-design\">Material Design spec</a>.\n    </div>\n    <div class=\"styles__download\">\n      <a class=\"download-btn download-btn--font\" href=\"http://material-design.storage.googleapis.com/publish/material_v_4/material_ext_publish/0B0J8hsRkk91LRjU4U1NSeXdjd1U/RobotoTTF.zip\">\n        <i class=\"material-icons\">file_download</i>\n        Download Roboto Font\n      </a>\n      <span class=\"download__size\">1.21 MB (.zip)</span>\n    </div>\n    <div class=\"code-with-text\">\n      To embed Roboto into your web page, copy the code as the first element in the <code>&lt;head&gt;</code> of your HTML document.\n      <pre class=\"language-markup\"><code>&lt;link rel=\"stylesheet\" href=\"http://fonts.googleapis.com/css?family=Roboto:300,400,500,700\" type=\"text/css\"&gt;</code></pre>\n    </div>\n  </div>\n\n  <div class=\"styles__ribbon styles__ribbon--icons\">\n    <a href=\"http://google.github.io/material-design-icons/\" class=\"ribbon__imagecontainer\">\n      <img src=\"../assets/icons.svg\" class=\"ribbon__image\">\n      <div class=\"ribbon__caption ribbon__caption--split\">\n        Preview icons <i class=\"material-icons\">arrow_forward</i>\n      </div>\n    </a>\n  </div>\n\n  <div class=\"styles__content mdl-grid mdl-grid--no-spacing\">\n    <div class=\"mdl-cell mdl-cell--8-col mdl-cell--5-col-desktop left-col\">\n      <h3>Icons</h3>\n      <p>Material Design Icons are the official open-source icons featured in the Google Material Design specification. What’s included:</p>\n    </div>\n    <div class=\"mdl-cell mdl-cell--8-col mdl-cell--7-col-desktop right-col\">\n      <ul>\n        <li>SVG versions of all icons in both 24px and 48px flavours</li>\n        <li>SVG and CSS sprites of all icons</li>\n        <li>1x, 2x icons targeted at the Web (PNG)</li>\n        <li>1x, 2x, 3x icons targeted at iOS (PNG)</li>\n        <li>Hi-dpi version of all icons (hdpi, mdpi, xhdpi, xxhdpi, xxxhdpi) (PNG)</li>\n      </ul>\n    </div>\n    <div class=\"mdl-cell mdl-cell--8-col mdl-cell--5-col-desktop left-col\">\n      <h3>Getting Started</h3>\n      <p>You have a few options for getting the icons.</p>\n      <h3>Download the Zip</h3>\n      <p>Grab the latest stable zip archive (~57MB) of all icons of the bleeding-edge version from master.</p>\n      <div class=\"styles__download\">\n        <a class=\"download-btn download-btn--icons\" href=\"https://github.com/google/material-design-icons/releases/download/2.0.0/material-design-icons-2.0.0.zip\">\n          <i class=\"material-icons\">file_download</i>\n          Download\n        </a>\n      </div>\n    </div>\n    <div class=\"mdl-cell mdl-cell--8-col mdl-cell--7-col-desktop right-col\">\n      <h3>Bower</h3>\n      <div class=\"code-with-text\">\n        Install the icons using the <strong>Bower</strong> package manager.\n        <pre class=\"language-markup\"><code>$ bower install material-design-icons --save</code></pre>\n      </div>\n      <h3>npm</h3>\n      <div class=\"code-with-text\">\n        You can also find all the icons on <strong>npm</strong>.\n        <pre class=\"language-markup\"><code>$ npm install material-design-icons --save</code></pre>\n      </div>\n      <h3>Usage</h3>\n      <p>Take a look at the included index.html file for a preview of all icons included in the set. You are free to use the icons in the way that makes most sense to your project.</p>\n      <h3>Structure</h3>\n      <p>In general, an icon category (e.g. action) will include the following directories, containing multiple resolutions of our icons.</p>\n      <ul>\n        <li>1x, 2x Web</li>\n        <li>1x, 2x, 3x iOS</li>\n        <li>drawable hdpi, mdpi, xhdpi, xxhdpi, xxxhdpi</li>\n        <li>svg</li>\n      </ul>\n      <p>Decide on the icon resolution required for your project and copy, then reference the icons you wish to use.</p>\n    </div>\n    <div class=\"mdl-cell mdl-cell--8-col mdl-cell--5-col-desktop left-col\">\n      <h3>Spritesheets</h3>\n      <p>Material Design icons come with SVG and CSS sprites for each category of icon we include. These can be found in the sprites directory, under svg-sprite and css-sprite.</p>\n      <h3>Using CSS Sprites</h3>\n      <p>To use a CSS spritesheet, reference the stylesheet for the icon category you wish to use, then include the icon definition in your markup. E.g. to use one of the play icons in css-sprite-av.</p>\n      <p>That’s it! Don’t forget to publish the corresponding CSS and SVG/PNG files when deploying your project.</p>\n    </div>\n    <div class=\"mdl-cell mdl-cell--8-col mdl-cell--7-col-desktop right-col\">\n      <div class=\"code-with-text\">\n        Reference the stylesheet:\n        <pre class=\"language-markup\"><code>&lt;link href=\"css-sprite/sprite-av-black.css\" rel=\"stylesheet\"&gt;</code></pre>\n      </div>\n      <div class=\"code-with-text\">\n        Create an element which will use the icon as a background:\n        <pre class=\"language-markup\"><code>&lt;div&gt;&lt;/div&gt;</code></pre>\n      </div>\n      <div class=\"code-with-text\">\n        Add a class referencing the <code>icon</code> spritesheet and specific <code>icon icon-ic_play-circle_outline_black_24dp</code>, which you can get from the above stylesheet.\n        <pre class=\"language-markup\"><code>&lt;div class=\"icon icon-ic_play-circle_outline_black_24dp\"&gt;&lt;/div&gt;</code></pre>\n      </div>\n    </div>\n    <div class=\"mdl-cell mdl-cell--8-col mdl-cell--5-col-desktop left-col\">\n      <h3>Using SVG Sprites</h3>\n      <p>Similarly, to use an SVG spritesheet, reference the stylesheet for the icon category, then include the icon definition in your markup.</p>\n    </div>\n    <div class=\"mdl-cell mdl-cell--8-col mdl-cell--7-col-desktop right-col\">\n      <div class=\"code-with-text\">\n        E.g: to use one of the play icons in <code>svg-sprite-av</code>, reference the stylesheet:\n        <pre class=\"language-markup\"><code>&lt;link href=\"svg-sprite/svg-sprite-av.css\" rel=\"stylesheet\"&gt;</code></pre>\n      </div>\n      <div class=\"code-with-text\">\n        Create an element which will use the icon as a background:\n        <pre class=\"language-markup\"><code>&lt;div&gt;&lt;/div&gt;</code></pre>\n      </div>\n      <div class=\"code-with-text\">\n        Next, make sure to set a dimension for the icon. This can either be done inline or via a class. We’ll use a class for this example.\n        <pre class=\"language-markup\"><code>&lt;style&gt;\n  .svg-ic_play_circle_outline_24px-dims { width: 24px; height: 24px; }\n&lt;/style&gt;</code></pre>\n      </div>\n      <div class=\"code-with-text\">\n        Finally, set the dimension and specific ifcon <code>svg-ic_play_circle_outline_24px</code>, which you can get from the above stylesheet.\n        <pre class=\"language-markup\"><code>&lt;div class=\"svg-ic_play_circle_outline_24px svg-ic_play_circle_outline_24px-dims\"&gt; &lt;/div&gt;</code></pre>\n       </div>\n      <h3>Polymer Icons</h3>\n      <p>If you wish to use the icon set with Polymer, we recommend consuming them via the <strong>&lt;iron-icons&gt;-element</strong>.\n      <h3>License</h3>\n      <p>All icons are released under <strong>Attribution 4.0 International license</strong>.</p>\n    </div>\n  </div>\n  <div class=\"styles__ribbon styles__ribbon--colors\">\n    <a class=\"ribbon__imagecontainer\">\n      <img src=\"../assets/colors.svg\" class=\"ribbon__image\">\n      <div class=\"ribbon__caption\">\n        Color palette\n      </div>\n    </a>\n  </div>\n  <div class=\"styles__content mdl-grid mdl-grid--no-spacing\">\n    <div class=\"mdl-cell mdl-cell--8-col mdl-cell--5-col-desktop left-col\">\n      <h3>Color palette</h3>\n      <p>If you’re using the extended color palette, use the first color as the primary color in your app and the other colors as accents.</p>\n      <p><strong>See all colors and their accessibility ratios</strong>. This resource includes info on the appropriate contrast ratios and alpha values when using white or black text on a colored background.</p>\n      <div class=\"styles__download\">\n        <a class=\"download-btn download-btn--swatches\" href=\"http://material-design.storage.googleapis.com/publish/material_v_4/material_ext_publish/0B0J8hsRkk91LSGx6b0w3WWpMQ1k/color_swatches.zip\">\n          <i class=\"material-icons\">file_download</i>\n          Download color swatches\n        </a>\n        <span class=\"download__size\">0.02 MB (.zip)</span>\n      </div>\n      <div class=\"styles__download\">\n        <a class=\"download-btn download-btn--customizer\" href=\"../customize/index.html\">\n          <i class=\"material-icons\">arrow_forward</i>\n          Try the custom CSS Theme Builder\n        </a>\n      </div>\n    </div>\n    <div class=\"mdl-cell mdl-cell--8-col mdl-cell--7-col-desktop right-col\">\n      <a href=\"../customize/index.html\"><img class=\"customizer\" src=\"../assets/customizer.png\"></a>\n    </div>\n  </div>\n"
  },
  {
    "path": "docs/_pages/templates.md",
    "content": "---\nlayout: templates\ntitle: Templates\nbodyclass: templates\ninclude_prefix: ../\ntemplates:\n  - name: blog\n    title: Blog\n    description: A mobile focused responsive template that showcases image or text based blog entries, a subscription CTA, search & share links, and an expanded article page with comments, counters and bookmarking capabilities built-in.\n  - name: android-dot-com\n    title: Android.com MDL skin\n    description: A Material Design Lite version of the current android.com site, using the same content with a horizontal navigation, feature carousel and long form scrolling sub pages.\n  - name: dashboard\n    title: Dashboard\n    description: A modular responsive template built to display data visualizations and information with a clear vertical nav, user profile, search and dedicated space for updates and filters.\n  - name: portfolio\n    title: Portfolio\n    description: A modern and clean looking template for a portfolio/blog build with Material Design Lite. Included are a top nav bar that comes with the waterfall header component, cards to display different types of content and a footer.\n  - name: text-only\n    title: Text-heavy webpage\n    description: Built for presenting content that is information dense, easily updatable, and optimized for legibility, this template has a sticky horizontal top nav on mobile, feature callouts, cards and a site map footer with a deep-linked table of contents.\n  - name: article\n    title: Stand-alone article\n    description: A clean layout optimized for presenting text-based content with a breadcrumb nav, search, clear headers and a footer that utilizes a card-like structure to showcase the content.\n---\n"
  },
  {
    "path": "docs/_templates/component.html",
    "content": "\n{% block content %}\n\n{{content|safe}}\n{% endblock %}\n"
  },
  {
    "path": "docs/_templates/components.html",
    "content": "{% extends 'layout.html' %}\n\n{% block content %}\n<link href=\"{{page.include_prefix}}assets/components.css\" rel=\"stylesheet\">\n<script src=\"{{page.include_prefix}}assets/snippets.js\"></script>\n<script src=\"{{page.include_prefix}}assets/components.js\"></script>\n<link rel=\"stylesheet\" href=\"{{page.include_prefix}}components/demos.css\">\n\n<div class=\"mdl-components mdl-js-components mdl-cell mdl-cell--12-col\">\n  <aside class=\"mdl-components__nav docs-text-styling mdl-shadow--4dp\">\n    {% for category in page.categories %}\n    <a href=\"#{{ category.name }}-section\" class=\"mdl-components__link mdl-component {{ category.name }}\">\n      <div class=\"mdl-components__link-image\"\n           style=\"background-image: url('{{page.include_prefix}}assets/comp_{{ category.name }}.png')\">\n      </div>\n      <span class=\"mdl-components__link-text\">{{ category.title }}</span>\n    </a>\n    {%- endfor %}\n  </aside>\n  <main class=\"mdl-components__pages\">\n    <section id=\"index-section\" class=\"mdl-components-index mdl-components__page\">\n      <div class=\"mdl-components-index-text mdl-grid\">\n        <div class=\"mdl-components-text docs-text-styling about-panel about-panel--text mdl-cell mdl-cell--12-col\">\n          <dl class=\"mdl-components-dl\">\n            <dt class=\"mdl-components-dt\">COMPONENTS</dt>\n            <dd class=\"mdl_components-dd\">\n        Material Design Lite (MDL) is a library of components for web developers\n        based on Google's Material Design Philosophy: \"A visual language for our\n        users that synthesizes the classic principles of good design with the\n        innovation and possibility of technology and science.\" Understanding the\n        goals and principles of Material Design is critical to the proper use of\n        the Material Design Lite components. If you have not yet read the\n        <a href=\"http://www.google.com/design/spec/material-design/introduction.html\">Material Design Introduction</a>\n        you should do so before attempting to use the components.\n            </dd>\n          </dl>\n        </div>\n      </div>\n      <div class=\"mdl-components-img\"></div>\n    </section>\n\n    {% for category in page.categories -%}\n    <section id=\"{{ category.name }}-section\" class=\"mdl-components__page mdl-grid\">\n      <div class=\"mdl-cell mdl-cell--12-col\">\n        <div class=\"docs-text-styling component-title\">\n          <h3>{{ category.title }}</h3>\n          <p>{{ category.description }}</p>\n        </div>\n\n        {% if category.components.length > 1 %}\n          <section class=\"docs-toc docs-text-styling\">\n            <nav class=\"section-content\">\n              <ul>\n                {% for component in category.components %}\n                  <li><a href=\"#{{ category.name }}-section/{{ component.name }}\">{{ component.caption }}</a></li>\n                {%- endfor %}\n              </ul>\n            </nav>\n          </section>\n        {%- endif %}\n\n        {% for component in category.components %}\n\n          {% if component.caption %}\n            <span class=\"docs-text-styling\">\n              <h1 class=\"mdl-components__classname\" id=\"{{ category.name }}-section/{{ component.name }}\">{{ component.caption }}</h1>\n            </span>\n          {%- endif %}\n          <!-- Add warning, if the component has one -->\n          {% if component.warning %}\n           <div class=\"mdl-components__warning\"><b>Note: </b>{{ component.warning }}</div>\n          {%- endif %}\n          <!-- Generating snippets -->\n          {% for snippet_group in component.snippets %}\n            {% set snippet_group[\"component_name\"] = component.name %}\n            {% include \"./snippets.html\" with snippet_group only %}\n          {%- endfor %}\n          <!-- Adding the demo page -->\n        {% set demo_css = \"../../dist/components/\" + component.name + \"/demo.css\" %}\n          <style>\n            {% include demo_css ignore missing %}\n          </style>\n          {% set demo_js = \"../../dist/components/\" + component.name + \"/demo.js\" %}\n          <script>\n            {% include demo_js ignore missing %}\n          </script>\n          {% set demo = \"../../src/\" + component.name + \"/demo.html\" %}\n          {% include demo ignore missing %}\n          <div class=\"docs-text-styling docs-readme\">\n            {% set doc = \"../../dist/components/\" + component.name + \"/index.html\" %}\n            {% include doc ignore missing %}\n          </div>\n        {%- endfor %}\n      </div>\n    </section>\n    {%- endfor %}\n</main>\n</div>\n\n{% endblock %}\n"
  },
  {
    "path": "docs/_templates/customize.html",
    "content": "{% extends 'layout.html' %}\n\n{% block content %}\n<link rel=\"stylesheet\" href=\"{{page.include_prefix}}assets/customizer.css\">\n<div class=\"mdl-gen mdl-cell mdl-cell--12-col\">\n  <div class=\"mdl-grid\">\n    <div class=\"mdl-gen__panel mdl-gen__panel--left mdl-cell mdl-cell--6-col-desktop mdl-cell--8-col\">\n      <div id=\"wheel\">\n        <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n          <defs>\n            <filter id=\"drop-shadow\">\n              <feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"3.2\" />\n              <feOffset dx=\"0\" dy=\"0\" result=\"offsetblur\" />\n              <feFlood flood-color=\"rgba(0,0,0,1)\" />\n              <feComposite in2=\"offsetblur\" operator=\"in\" />\n              <feMerge>\n                <feMergeNode />\n                <feMergeNode in=\"SourceGraphic\" />\n              </feMerge>\n            </filter>\n          </defs>\n          <g class=\"wheel--maing\"></g>\n        </svg>\n        <div class=\"mdl-gen-download\">\n          <a href=\"#\" id=\"download\" class=\"mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--fab\"><i class=\"material-icons\">file_download</i></a>\n        </div>\n      </div>\n    </div>\n    <div class=\"mdl-gen__panel--right mdl-gen__panel mdl-cell mdl-cell--6-col-desktop mdl-cell--8-col\">\n      <div class=\"mdl-gen__desc docs-text-styling\">\n        <strong>Custom CSS theme builder</strong>\n        <p>Click on the color wheel to choose a primary (1) and accent (2) color to preview the theme below. When you’ve selected a color combination you like, either reference our <a href=\"#cdn-code\">hosted CSS</a> or download the CSS by clicking the white button in the middle. You will need to include MDL’s JavaScript alongside your customised CSS to get the full experience. This is included in our default Download from the <a href=\"../started/index.html#download\">Getting Started guide</a>.</p>\n      </div>\n      <div class=\"mdl-gen__preview\">\n        <div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\">\n          <header class=\"mdl-layout__header\">\n            <svg class=\"mdl-layout-icon\" width=\"411px\" height=\"406px\" viewBox=\"0 0 411 406\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n              <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                <g transform=\"translate(-51.000000, -54.000000)\" fill=\"currentColor\">\n                  <path d=\"M253.532807,381.627 L205.905373,459.1512 L75.2987939,365.2047 L137.208794,290.0547 L51,265.8834 L100.217083,116.7498 L183.176447,150.0543 L176.402456,54 L337.901996,54 L331.203531,149.0202 L409.306732,116.4465 L461.243662,265.7448 L371.760263,290.7036 L429.826513,365.6628 L302.333596,459.2493 L253.532807,381.627 Z M222.176831,106.2 L291.098533,106.2 L282.729084,224.796484 L383.182429,182.939488 L404.947387,245.446521 L297.795289,275.304737 L368.114228,365.995226 L313.701833,405.9 L252.592681,308.789934 L192.876775,405.9 L137.348587,365.995226 L212.130699,275.304737 L105.539492,245.446521 L126.18666,182.939488 L230.548276,224.796484 L222.176831,106.2 Z\"></path>\n                </g>\n              </g>\n            </svg>\n            <div class=\"mdl-layout__header-row\">\n              <span class=\"mdl-layout-title\">Theme Preview</span>\n            </div>\n          </header>\n          <div class=\"mdl-layout__drawer\">\n            <span class=\"mdl-layout-title\">Theme Preview</span>\n            <nav class=\"mdl-navigation\">\n              <a class=\"mdl-navigation__link\" href=\"#\">Some</a>\n              <a class=\"mdl-navigation__link\" href=\"#\">Links</a>\n              <a class=\"mdl-navigation__link\" href=\"#\">Here</a>\n            </nav>\n          </div>\n          <main class=\"mdl-layout__content\">\n            <h3>Try it out</h3>\n            <p>\n              Lorem ipsum dolor sit amet.\n            </p>\n            <button class=\"mdl-button mdl-button--colored mdl-button--raised mdl-js-button mdl-js-ripple-effect\">BUTTON</button>\n            <button class=\"mdl-button mdl-js-button mdl-button--fab mdl-button--colored mdl-js-ripple-effect\">\n              <i class=\"material-icons\">email</i>\n            </button>\n          </main>\n        </div>\n      </div>\n    </div>\n    <div class=\"mdl-gen__cdn mdl-cell mdl-cell--12-col\">\n      <div class=\"code-with-text\" id=\"cdn-code\">\n        CSS hosted on our CDN (17.6kB gzipped):\n        <pre class=\"demo-code language-markup codepen-button-disabled\"><code class=\"language-markup mdl-gen__cdn-link\" data-language=\"markup\"> &lt;link rel=\"stylesheet\" href=\"$$hosted_libs_prefix$$/$$version$$/material.$primary-$accent.min.css\" /&gt; </code></pre>\n      </div>\n    </div>\n  </div>\n</div>\n<script src=\"{{page.include_prefix}}assets/customizer.js\"></script>\n<script>init();</script>\n{% endblock %}\n"
  },
  {
    "path": "docs/_templates/demo.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A front-end template that helps you build fast, modern mobile web apps.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <title>{{ page.component }} test</title>\n\n        <!-- Fonts -->\n    <link href='https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en' rel='stylesheet' type='text/css'>\n    <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"\n      rel=\"stylesheet\">\n\n    <!-- Page styles -->\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/prism/0.0.1/prism.min.css\">\n    <link rel=\"stylesheet\" href=\"{{page.include_prefix}}material.min.css\">\n    <link rel=\"stylesheet\" href=\"{{page.include_prefix}}components/demos.css\">\n    <script src=\"{{page.include_prefix}}material.min.js\"></script>\n\n    {% set demo_css = \"../../dist/components/\" + page.component + \"/demo.css\" %}\n    <style>\n      {% include demo_css ignore missing %}\n    </style>\n\n  </head>\n  <body>\n\n    <div style=\"padding-top: 24px;\">\n      {% block content %}\n        {{content|safe}}\n      {% endblock %}\n    </div>\n    <!-- Built with love using Material Design Lite -->\n\n    {% set demo_js = \"../../dist/components/\" + page.component + \"/demo.js\" %}\n    <script>\n      {% include demo_js ignore missing %}\n    </script>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/_templates/layout.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A front-end template that helps you build fast, modern mobile web apps.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>Material Design Lite</title>\n\n    <!-- Add to homescreen -->\n    <link rel=\"manifest\" href=\"manifest.json\">\n\n    <!-- Fallback to homescreen for Chrome <39 on Android -->\n    <meta name=\"mobile-web-app-capable\" content=\"yes\">\n    <meta name=\"application-name\" content=\"Material Design Lite\">\n    <link rel=\"icon\" sizes=\"192x192\" href=\"{{page.include_prefix}}assets/android-desktop.png\">\n\n    <!-- Add to homescreen for Safari on iOS -->\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n    <meta name=\"apple-mobile-web-app-title\" content=\"Material Design Lite\">\n    <link rel=\"apple-touch-icon\" href=\"{{page.include_prefix}}assets/ios-desktop.png\">\n\n    <!-- TODO: Tile icon for Win8 (144x144 + tile color) -->\n    <!-- <meta name=\"msapplication-TileImage\" content=\"images/touch/ms-touch-icon-144x144-precomposed.png\"> -->\n    <!-- <meta name=\"msapplication-TileColor\" content=\"#3372DF\"> -->\n\n    <meta name=\"theme-color\" content=\"#263238\">\n\n    <link rel=\"shortcut icon\" href=\"{{page.include_prefix}}assets/favicon.png\">\n    <!-- SEO: If your mobile URL is different from the desktop URL, add a canonical link to the desktop page https://developers.google.com/webmasters/smartphone-sites/feature-phones -->\n    <!--\n    <link rel=\"canonical\" href=\"http://www.example.com/\">\n    -->\n\n    <!-- Page styles -->\n    <link rel=\"stylesheet\" href=\"{{page.include_prefix}}assets/prism-default.css\">\n    <link rel=\"stylesheet\" href=\"{{page.include_prefix}}material.min.css\">\n    <link rel=\"stylesheet\" href=\"{{page.include_prefix}}assets/main.css\">\n\n    <!-- Fonts -->\n    <link href='https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en' rel='stylesheet' type='text/css'>\n    <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\n  </head>\n  <body class=\"{{page.bodyclass}}\">\n  <!-- Google Analytics: change UA-XXXXX-X to be your site's ID -->\n  <script>\n    // if (document.location.hostname !== 'localhost' &&\n    //     document.location.hostname !== '127.0.0.1' &&\n    //     document.location.hostname.search('.corp.') === -1) {\n      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n      ga('create', 'UA-25993200-9', 'auto');\n      // If a specific component page is loaded directly we'll attribute the\n      // page view to the specific component's page\n      if (window.location.pathname.indexOf('/components/') !== -1 &&\n          window.location.hash.indexOf('-section') !== -1) {\n        ga('send', 'pageview', '/components/' +\n            window.location.hash.split('#')[1].split('/')[0]);\n      } else {\n        ga('send', 'pageview');\n      }\n    // }\n\n    // Setup error tracking before anything else runs.\n  window.onerror = function(message, file, lineNumber, columnNumber, error) {\n    try {\n      if (error !== undefined) {\n        message = error.stack;\n      }\n       ga('send', 'event', 'error', file + ':' + lineNumber, String(message));\n    } catch (e) {\n      // no-op\n    }\n  };\n  </script>\n  <div class=\"image-preloader\"></div>\n  <div class=\"docs-layout mdl-layout mdl-js-layout\">\n    <header class=\"docs-layout-header mdl-layout__header\">\n      <div class=\"mdl-layout__header-row\">\n        <span class=\"docs-layout-title mdl-layout-title\"><a href=\"{{page.include_prefix}}\">Material<br>Design<br>Lite</a></span>\n      </div>\n      <div class=\"docs-navigation__container\">\n        <nav class=\"docs-navigation mdl-navigation\">\n          <a href=\"{{page.include_prefix}}index.html\" class=\"mdl-navigation__link about\">About</a>\n          <a href=\"{{page.include_prefix}}started/index.html\" class=\"mdl-navigation__link started\">Getting Started</a>\n          <a href=\"{{page.include_prefix}}templates/index.html\" class=\"mdl-navigation__link templates\">Templates</a>\n          <a href=\"{{page.include_prefix}}components/index.html\" class=\"mdl-navigation__link components\">Components</a>\n          <a href=\"{{page.include_prefix}}styles/index.html\" class=\"mdl-navigation__link styles\">Styles</a>\n          <a href=\"{{page.include_prefix}}customize/index.html\" class=\"mdl-navigation__link customize\">Customize</a>\n          <a href=\"{{page.include_prefix}}showcase/index.html\" class=\"mdl-navigation__link showcase\">Showcase</a>\n          <a href=\"{{page.include_prefix}}faq/index.html\" class=\"mdl-navigation__link faq\">FAQ</a>\n          <div class=\"spacer\"></div>\n          <a href=\"https://github.com/google/material-design-lite\" class=\"mdl-navigation__link mdl-navigation__link--icon github\"><i class=\"material-icons\">link</i><span>GitHub</span></a>\n          <a href=\"{{page.include_prefix}}started/index.html#download\" class=\"mdl-navigation__link mdl-navigation__link--icon download\">\n            <i class=\"material-icons\">&#xE2C4;</i><span>Download</span>\n            <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--fab mdl-button--mini-fab mdl-color--lime-A200\">\n              <i class=\"material-icons\">&#xE2C4;</i>\n            </button>\n          </a>\n        </nav>\n      </div>\n      <i class=\"material-icons scrollindicator scrollindicator--right\">&#xE315;</i>\n      <i class=\"material-icons scrollindicator scrollindicator--left\">&#xE314;</i>\n    </header>\n    <main class=\"docs-layout-content mdl-layout__content mdl-color-text--grey-600\">\n      <div class=\"content mdl-grid mdl-grid--no-spacing\" id=\"content\">\n        <div class=\"subpageheader mdl-cell--12-col\">{{page.title}}</div>\n        {% block content %}\n          {{content|safe}}\n        {% endblock %}\n      </div>\n      <section class=\"docs-text-styling download mdl-color--grey-800\">\n        <a href=\"{{page.include_prefix}}started/index.html#download\" class=\"mdl-color-text--grey-50\">Download Kit</a>\n      </section>\n      <footer class=\"docs-text-styling docs-footer mdl-mini-footer mdl-color--grey-900\">\n        <ul>\n          <li class=\"mdl-mini-footer--social-btn\">\n            <a href=\"https://twitter.com/googledesign\" class=\"social-btn social-btn__twitter\" role=\"button\" title=\"Twitter\"></a>\n          </li>\n          <li class=\"mdl-mini-footer--social-btn\">\n            <a href=\"https://github.com/google/material-design-lite\" class=\"social-btn social-btn__github\" role=\"button\" title=\"GitHub\"></a>\n          </li>\n          <li class=\"mdl-mini-footer--social-btn\">\n            <a href=\"https://plus.google.com/+googledesign\" class=\"social-btn social-btn__gplus\" role=\"button\" title=\"Google+\"></a>\n          </li>\n        </ul>\n        <ul class=\"docs-link-list\">\n          <li><a class=\"mdl-color-text--grey-600\" href=\"https://developers.google.com/web/starter-kit/\">Web Starter Kit</a></li>\n          <li><a class=\"mdl-color-text--grey-600\" href=\"https://github.com/google/material-design-lite/issues\">Help</a></li>\n        </ul>\n      </footer>\n    </main>\n  </div>\n\n    <!-- IE Compatibility shims -->\n      <!--[if lt IE 9]>\n        <script src=\"//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js\"\"></script>\n      <![endif]-->\n\n      <!--[if IE]>\n        <script src=\"//cdnjs.cloudflare.com/ajax/libs/es5-shim/4.1.7/es5-shim.min.js\"></script>\n        <script src=\"//cdnjs.cloudflare.com/ajax/libs/classlist/2014.01.31/classList.min.js\"></script>\n        <script src=\"//cdnjs.cloudflare.com/ajax/libs/selectivizr/1.0.2/selectivizr-min.js\"></script>\n        <script src=\"//cdnjs.cloudflare.com/ajax/libs/flexie/1.0.3/flexie.min.js\"></script>\n        <link href=\"{{page.include_prefix}}assets/ie.css\" rel=\"stylesheet\">\n      <![endif]-->\n    <!-- end shims -->\n\n\n    <!-- Material Design Lite -->\n    <script src=\"{{page.include_prefix}}material.min.js\"></script>\n    <!-- Add Copy-to-CodePen buttons to code blocks -->\n    <script src=\"{{page.include_prefix}}assets/codepen.js\"></script>\n    <!-- Enable Prism syntax highlighting -->\n    <script src=\"{{page.include_prefix}}assets/prism.js\"></script>\n    <script src=\"{{page.include_prefix}}assets/prism-markup.min.js\"></script>\n    <script src=\"{{page.include_prefix}}assets/prism-javascript.min.js\"></script>\n    <script src=\"{{page.include_prefix}}assets/prism-css.min.js\"></script>\n    <script src=\"{{page.include_prefix}}assets/prism-bash.min.js\"></script>\n    <script src=\"{{page.include_prefix}}assets/main.js\"></script>\n    <!-- Built with love using Material Design Lite -->\n  </body>\n</html>\n"
  },
  {
    "path": "docs/_templates/page.html",
    "content": "{% extends 'layout.html' %}\n\n{% block content %}\n\n{{content|safe}}\n\n{% endblock %}\n"
  },
  {
    "path": "docs/_templates/showcase.html",
    "content": "{% extends 'layout.html' %}\n{% block content %}\n{{content|safe}}\n{% for template in page.sites %}\n<section class=\"template template--{{ template.name }} docs-text-styling mdl-grid mdl-cell mdl-cell--12-col\">\n  <img src=\"{{page.include_prefix}}assets/showcase/{{ template.name }}.jpg\"\n    srcset=\"{{page.include_prefix}}assets/showcase/{{ template.name }}.jpg 1x, {{page.include_prefix}}assets/showcase/{{ template.name }}_2x.jpg 2x\"\n    class=\"template__preview mdl-cell mdl-cell--8-col\">\n  <div class=\"template__meta mdl-cell mdl-cell--4-col mdl-grid mdl-grid--no-spacing\">\n    <h3 class=\"template__header mdl-cell mdl-cell--12-col mdl-typography--body-2\">{{ template.title }}</h3>\n    <p class=\"mdl-cell mdl-cell--12-col\">\n      {{ template.description }}\n    </p>\n    <a href=\"{{page.include_prefix}}assets/showcase/{{ template.name }}_2x.jpg\" class=\"mdl-cell mdl-cell--6-col-desktop mdl-cell--4-col-tablet mdl-cell--2-col-phone\">\n      <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\">\n        <i class=\"material-icons\">image</i>\n      </button>\n      Screenshot\n    </a>\n    <a href=\"{{ template.url }}\" target=\"_blank\" class=\"mdl-cell mdl-cell--6-col-desktop mdl-cell--4-col-tablet mdl-cell--2-col-phone\">\n      <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\">\n        <i class=\"material-icons\">arrow_forward</i>\n      </button>\n      Visit\n    </a>\n  </div>\n</section>\n{% endfor %}\n{% endblock %}\n"
  },
  {
    "path": "docs/_templates/snippets.html",
    "content": "{% if snippet_group.length === 1 && snippet_group[0].full_width %}\n<div class=\"snippet-group is-full-width\">\n{% else %}\n<div class=\"snippet-group\">\n{% endif %}\n  <div class=\"snippet-header\">\n    <div class=\"snippet-demos\">\n      <div class=\"snippet-demo-padding\"></div>\n      {% for snippet in snippet_group %}\n        {% if snippet.demo_file %}\n        {% set snippet_file = \"../../src/\" + component_name + \"/snippets/\" + snippet.demo_file %}\n        {% else %}\n        {% set snippet_file = \"../../src/\" + component_name + \"/snippets/\" + snippet.file %}\n        {% endif %}\n        <div class=\"snippet-demo\">\n          <div class=\"snippet-demo-container demo-{{component_name}} demo-{{component_name}}__{{snippet.file | replace('.html', '')}}\">\n            {% include snippet_file ignore missing %}\n          </div>\n        </div>\n      {%- endfor %}\n      <div class=\"snippet-demo-padding\"></div>\n    </div>\n    <div class=\"snippet-captions\">\n      <div class=\"snippet-caption-padding\"></div>\n      {% for snippet in snippet_group %}\n        <div class=\"snippet-caption\">\n          {{ snippet.caption }}\n        </div>\n      {%- endfor %}\n      <div class=\"snippet-caption-padding\"></div>\n    </div>\n  </div>\n  <div class=\"snippet-code\">\n    <pre class=\"language-markup codepen-button-enabled\">{% for snippet in snippet_group %}{% set snippet_file = \"../../src/\" + component_name + \"/snippets/\" + snippet.file %}<code id=\"{{ component_name }}/{{ snippet.file }}\">{% filter e('html') %}{% include snippet_file ignore missing %}{% endfilter %}</code><div class=\"codepen-extra-css\">&lt;style&gt;{% set extra_css_file = \"../../src/\" + component_name + \"/snippets/\" + snippet.extra_codepen_css %}{% include extra_css_file ignore missing %}&lt;/style&gt;</div>{%- endfor %}{% if snippet_group.length !== 1 || !snippet_group[0].full_width %}<div class=\"codepen-extra-css\">&lt;style&gt;\nbody {\n  padding: 20px;\n  background: #fafafa;\n  position: relative;\n}\n&lt;/style&gt;</div>{% endif %}<form class=\"codepen-button\" action=\"https://codepen.io/pen/define\" method=\"POST\" target=\"_blank\"></form></pre>\n  </div>\n</div>\n"
  },
  {
    "path": "docs/_templates/started.html",
    "content": "{% extends 'layout.html' %}\n\n{% block content %}\n<script src=\"{{page.include_prefix}}assets/snippets.js\"></script>\n\n<div class=\"docs-text-styling\">\n  <section class=\"docs-toc\">\n    <h3>Contents</h3>\n    <nav class=\"section-content\">\n      <ul>\n        <li><a href=\"#download\">Include the master CSS &amp; JavaScript</a></li>\n        <li><a href=\"#use-components\">Use the components</a></li>\n        <li><a href=\"#general-rules\">General rules and principles</a></li>\n        <li><a href=\"#dynamic\">Use MDL on dynamic websites</a></li>\n        <li><a href=\"#responsibilities\">What are MDL's responsibilities?</a></li>\n        <li><a href=\"#whats-next\">What's next?</a></li>\n        <li><a href=\"#license\">License</a></li>\n      </ul>\n    </nav>\n  </section>\n\n  <section id=\"download\">\n    <h3>Include the master CSS &amp; JavaScript</h3>\n    <div class=\"section-content\">\n      <p>\n        Include the Material Lite CSS and JavaScript files in each HTML page in your project. We recommend that you use the <strong>files hosted on our CDN</strong>. You can also <strong>customize and download</strong> them to host them yourself, <strong>build</strong> them from our source code or install them in your <strong>npm</strong>/<strong>Bower</strong> project.\n      </p>\n\n      <div class=\"mdl-tabs mdl-js-tabs\">\n        <div class=\"mdl-tabs__tab-bar\">\n          <a href=\"#tab1\" class=\"mdl-tabs__tab is-active\">Hosted</a>\n          <a href=\"#tab2\" class=\"mdl-tabs__tab\">Download</a>\n          <a href=\"#tab3\" class=\"mdl-tabs__tab\">Build</a>\n          <a href=\"#tab4\" class=\"mdl-tabs__tab\">Bower</a>\n          <a href=\"#tab5\" class=\"mdl-tabs__tab\">npm</a>\n        </div>\n        <div class=\"mdl-tabs__panel is-active\" id=\"tab1\">\n          <div class=\"code-with-text\">\n            Just add the following <code>&lt;link&gt;</code> and <code>&lt;script&gt;</code> elements into your HTML pages (27kB gzipped):\n            <pre class=\"language-markup\"><code>&lt;link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"&gt;\n&lt;link rel=\"stylesheet\" href=\"$$hosted_libs_prefix$$/$$version$$/material.indigo-pink.min.css\"&gt;\n&lt;script defer src=\"$$hosted_libs_prefix$$/$$version$$/material.min.js\"&gt;&lt;/script&gt;</code></pre>\n          </div>\n          <h4>Choose color scheme</h4>\n          <p>\n            <a href=\"http://www.google.com/design/spec/style/color.html\">Color schemes used in Material Design</a> are based on a primary and an accent colors which you may want to personalize. These colors are specified in the CSS file name by following this pattern: <code>material.{primary}-{accent}.min.css</code> (e.g. <code>material.indigo-pink.min.css</code>). Our CDN hosts a number of color combinations based on common Material Design colors. To discover and preview available color combinations use our <a href=\"../customize/index.html\">Customize and Preview tool</a>.\n          </p>\n        </div>\n        <div class=\"mdl-tabs__panel\" id=\"tab2\">\n          <p>\n            Download the minified CSS and Javascript now (27kB gzipped):\n          </p>\n          <div class=\"download-button-container\">\n            <a href=\"$$hosted_libs_prefix$$/$$version$$/mdl.zip\">\n              <button class=\"mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect\">\n                Download MDL v$$version$$\n              </button>\n            </a>\n          </div>\n          <div class=\"code-with-text\">\n            Refer to these files by adding a <code>&lt;link&gt;</code> and a <code>&lt;script&gt;</code> elements into your HTML pages and also include the Material Icon font:\n            <pre class=\"language-markup\"><code>&lt;link rel=\"stylesheet\" href=\"./material.min.css\"&gt;\n&lt;script src=\"./material.min.js\"&gt;&lt;/script&gt;\n&lt;link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"&gt;</code></pre>\n          </div>\n          <h4>Choose color scheme</h4>\n          <p>\n            <a href=\"http://www.google.com/design/spec/style/color.html\">Color schemes used in Material Design</a> are based on a primary and an accent colors which you may want to personalize. Use the <a href=\"../customize/index.html\">Customize and Preview tool</a> to select and preview primary and accent colors combinations for your site. Then download your customized Material Design Lite CSS using the button and simply replace the `material.min.css` with the customized one.\n          </p>\n        </div>\n        <div class=\"mdl-tabs__panel\" id=\"tab3\">\n          <p>\n            Our source code is hosted <a href=\"https://github.com/google/material-design-lite\">on GitHub</a>. You'll need to download the code and build it.\n          </p>\n          <div class=\"code-with-text\">\n            Run the following commands in a shell:\n            <pre class=\"language-bash\"><code># Clone/copy the Material Design lite source code.\ngit clone https://github.com/google/material-design-lite.git\n# Go into the newly created folder containing the source code.\ncd material-design-lite\n# Install necessary dependencies.\nnpm install && npm install -g gulp\n# Build a production version of the components.\ngulp</code></pre>\n          </div>\n          <p>You'll find the Material Design Lite library's file in the <code>dist</code> folder. Copy them to your project.\n          </p>\n          <div class=\"code-with-text\">\n            Refer to these files by adding a <code>&lt;link&gt;</code> and a <code>&lt;script&gt;</code> element into your HTML pages and also include the Material Icon font:\n            <pre class=\"language-markup\"><code>&lt;link rel=\"stylesheet\" href=\"./material.min.css\"&gt;\n&lt;script src=\"./material.min.js\"&gt;&lt;/script&gt;\n&lt;link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"&gt;</code></pre>\n          </div>\n          <div class=\"caption\">\n            <h4>\n              Note:\n            </h4>\n            Using this method you will not be able to customize the color scheme of the MDL elements. If you'd like to customize the color scheme prefer the CDN hosted or downloadable libraries. In this case use our <a href=\"../customize/index.html\">Customize and Preview tool</a>.\n          </div>\n        </div>\n        <div class=\"mdl-tabs__panel\" id=\"tab4\">\n          <p>\n            Simply install Material Design Lite files in your <a href=\"http://bower.io/\">Bower</a> enabled project using:\n          </p>\n          <div class=\"code-with-text\">\n            Run the following command in a shell:\n            <pre class=\"language-bash\"><code>bower install material-design-lite --save</code></pre>\n          </div>\n          <p>\n            This will install the Material Design Lite library files in your project's <code>bower_components</code> folder.\n          </p>\n          <div class=\"code-with-text\">\n            Refer to these files by adding a <code>&lt;link&gt;</code> and a <code>&lt;script&gt;</code> element into your HTML pages and also include the Material Icon font:\n            <pre class=\"language-markup\"><code>&lt;link rel=\"stylesheet\" href=\"/bower_components/material-design-lite/material.min.css\"&gt;\n&lt;script src=\"/bower_components/material-design-lite/material.min.js\"&gt;&lt;/script&gt;\n&lt;link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"&gt;</code></pre>\n          </div>\n          <div class=\"caption\">\n            <h4>\n              Note:\n            </h4>\n            Using this method you will not be able to customize the color scheme of the MDL elements. If you'd like to customize the color scheme prefer the CDN hosted or downloadable libraries. In this case use our <a href=\"../customize/index.html\">Customize and Preview tool</a>.\n          </div>\n        </div>\n        <div class=\"mdl-tabs__panel\" id=\"tab5\">\n          <p>\n            Simply install Material Design Lite files in your <a href=\"https://www.npmjs.com/\">npm</a> enabled project using:\n          </p>\n          <div class=\"code-with-text\">\n            Run the following command in a shell:\n            <pre class=\"language-bash\"><code>npm install material-design-lite --save</code></pre>\n          </div>\n          <p>\n            This will install the Material Design Lite library files in your project's <code>node_modules</code> folder.\n          </p>\n          <div class=\"code-with-text\">\n            Refer to these files by adding a <code>&lt;link&gt;</code> and a <code>&lt;script&gt;</code> element into your HTML pages and also include the Material Icon font:\n            <pre class=\"language-markup\"><code>&lt;link rel=\"stylesheet\" href=\"/node_modules/material-design-lite/material.min.css\"&gt;\n&lt;script src=\"/node_modules/material-design-lite/material.min.js\"&gt;&lt;/script&gt;\n&lt;link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"&gt;</code></pre>\n          </div>\n          <div class=\"caption\">\n            <h4>\n              Note:\n            </h4>\n            Using this method you will not be able to customize the color scheme of the MDL elements. If you'd like to customize the color scheme prefer the CDN hosted or downloadable libraries. In this case use our <a href=\"../customize/index.html\">Customize and Preview tool</a>.\n          </div>\n        </div>\n      </div>\n      <p>\n        That's it! You are now ready to add MDL components on your site.\n      </p>\n    </div>\n  </section>\n\n  <section id=\"use-components\">\n    <h3>Use the components</h3>\n    <div class=\"section-content\">\n\n      <p>\n        You'll find below a couple of examples of MDL <a href=\"../components/index.html#buttons-section\">Button</a> elements: a Button with ripples and a FAB Button. Just copy &amp; paste the corresponding source code in the <code>&lt;body&gt;</code> of an HTML page of your project and the elements will render as shown below.\n      </p>\n\n      <!-- Generating snippets -->\n      {% for snippet_group in page.snippets %}\n        {% include \"./snippets.html\" with snippet_group only %}\n      {%- endfor %}\n\n      <p>\n        MDL elements can be tweaked and configured by adding CSS classes. For example adding <code>mdl-js-ripple-effect</code> to an MDL <a href=\"../components/index.html#buttons-section\">Button</a> will add a Ripple effect when the button is clicked and adding <code>mdl-button--fab</code> will change the style of the button to a FAB button.\n      </p>\n      <p>\n        There are many other elements available such as <a href=\"../components/index.html#cards-section\">Card containers</a>, <a href=\"../components/index.html#sliders-section\">Sliders</a>, <a href=\"../components/index.html#tables-section\">Tables</a>, <a href=\"../components/index.html#menus-section\">Menus</a>... For the complete set of MDL elements and options have a look at the <a href=\"../components/index.html\">components</a> page.\n      </p>\n      <p>\n        We also recommend that you check out our <a href=\"../templates/index.html\">templates</a>. These are ready to use website templates using MDL components. Feel free to have a look at them to get started quickly on your next project.\n      </p>\n    </div>\n  </section>\n\n  <section id=\"general-rules\">\n    <h3>General rules and principles</h3>\n    <div class=\"section-content\">\n      <p>\n        In general, follow these basic steps to use an MDL component in your HTML page:\n      </p>\n      <ol>\n        <li>Start with a standard HTML element, such as <code>&lt;button&gt;</code>, <code>&lt;div&gt;</code>, or <code>&lt;ul&gt;</code>, depending on the MDL component you want to use. This establishes the element in the page and readies it for MDL modification.</li>\n\n        <li>Add one or more MDL-specific CSS classes to the element, such as <code>mdl-button</code> or <code>mdl-tabs__panel</code>, again depending on the component. The classes apply the MDL enhancements to the element and turn it into an MDL component.</li>\n      </ol>\n\n      <p>\n        Remember to include the <a href=\"https://developers.google.com/speed/docs/insights/ConfigureViewport\">meta viewport</a> tag in your document so mobile devices will render correctly.\n      </p>\n      <pre class=\"language-markup\"><code>&lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"></code></pre>\n\n      <div class=\"caption\">\n        <h4>\n          A note about HTML elements and MDL CSS classes\n        </h4>\n        Material Design Lite uses namespaced <a href=\"https://en.bem.info/method/\">BEM</a> classes—which can apply to almost any HTML element—to construct components. For some components you can use almost any element. The examples in <a href=\"../components/index.html\">each component's documentation</a> use elements that perform well as that component. If you must use elements other than those shown in the examples, we encourage you to experiment to find the best combination of HTML elements and MDL CSS classes for your application.\n      </div>\n    </div>\n  </section>\n\n  <section id=\"dynamic\">\n    <h3>Use MDL on dynamic websites</h3>\n    <div class=\"section-content\">\n      <p>\n        Material Design Lite will automatically register and render all elements marked with MDL classes upon page load.\n        However in the case where you are creating DOM elements dynamically you need to register new elements using the <code>upgradeElement</code> function. Here is how you can dynamically create the same raised button with ripples shown in the section above:\n      </p>\n      <pre class=\"language-markup codepen-button-enabled\"><code>&lt;div id=\"container\"/&gt;\n&lt;script&gt;\n  var button = document.createElement('button');\n  var textNode = document.createTextNode('Click Me!');\n  button.appendChild(textNode);\n  button.className = 'mdl-button mdl-js-button mdl-js-ripple-effect';\n  componentHandler.upgradeElement(button);\n  document.getElementById('container').appendChild(button);\n&lt;/script&gt;</code><form class=\"codepen-button\" action=\"https://codepen.io/pen/define\" method=\"POST\" target=\"_blank\"></form></pre>\n    </div>\n  </section>\n\n  <section id=\"responsibilities\">\n    <h3>What are MDL's responsibilities?</h3>\n    <div class=\"section-content\">\n      <p>\n        Material Design Lite is built to provide a lightweight and basic set of Material Design components  and templates for web sites.\n        The project does not intend to provide structures to create all possible UX needs, but to provide a low-friction Material Design implementation you can build on.\n        Even within Material Design itself, cards specifically, it is unfeasible to provide every combination in a seamless manner.\n        When you find something not provided, such as dropdowns in the drawer, you may need to code your own component.\n      </p>\n      <p>\n        The team is committed to providing a great experience to developers while staying true to the promise of lite.\n      </p>\n    </div>\n  </section>\n\n  <section id=\"whats-next\">\n    <h3>What's next?</h3>\n    <div class=\"section-content\">\n      <p>\n        Detailed instructions for using the components, including MDL classes and their effects, coding considerations, and configuration options, can be found in the <a href=\"../components/index.html\">components</a> page. Example of sites using MDL elements together can be found in the <a href=\"../templates/index.html\">templates</a> page.\n      </p>\n    </div>\n  </section>\n\n  <section id=\"license\">\n    <h3>License</h3>\n    <div class=\"section-content\">\n      <p>\n        Copyright Google, 2015. Licensed under an Apache-2 license.\n      </p>\n    </div>\n  </section>\n</div>\n\n{% endblock %}\n"
  },
  {
    "path": "docs/_templates/styles.html",
    "content": "{% extends 'layout.html' %}\n\n{% block content %}\n\n<div class=\"docs-text-styling\">\n  <section id=\"include\">\n  {{content|safe}}\n  </section>\n</div>\n\n{% endblock %}\n"
  },
  {
    "path": "docs/_templates/templates.html",
    "content": "{% extends 'layout.html' %}\n{% block content %}\n{% for template in page.templates %}\n<section class=\"template template--{{ template.name }} docs-text-styling mdl-grid mdl-cell mdl-cell--12-col\">\n  <img src=\"{{page.include_prefix}}assets/templates/{{ template.name }}.jpg\"\n    srcset=\"{{page.include_prefix}}assets/templates/{{ template.name }}.jpg 1x, {{page.include_prefix}}assets/templates/{{ template.name }}_2x.jpg 2x\"\n    class=\"template__preview mdl-cell mdl-cell--8-col\">\n  <div class=\"template__meta mdl-cell mdl-cell--4-col mdl-grid mdl-grid--no-spacing\">\n    <h3 class=\"template__header mdl-cell mdl-cell--12-col mdl-typography--body-2\">{{ template.title }}</h3>\n    <p class=\"mdl-cell mdl-cell--12-col\">\n      {{ template.description }}\n    </p>\n    <a href=\"$$hosted_libs_prefix$$/$$version$$/$$template_archive_prefix$${{ template.name }}.zip\" class=\"mdl-cell mdl-cell--6-col-desktop mdl-cell--4-col-tablet mdl-cell--2-col-phone\">\n      <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\">\n        <i class=\"material-icons\">file_download</i>\n      </button>\n      Download\n    </a>\n    <a href=\"{{page.include_prefix}}templates/{{ template.name }}/index.html\" target=\"_blank\" class=\"mdl-cell mdl-cell--6-col-desktop mdl-cell--4-col-tablet mdl-cell--2-col-phone\">\n      <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\">\n        <i class=\"material-icons\">arrow_forward</i>\n      </button>\n      Preview\n    </a>\n  </div>\n</section>\n{% endfor %}\n{% endblock %}\n"
  },
  {
    "path": "gulpfile.babel.js",
    "content": "/**\n *\n *  Material Design Lite\n *  Copyright 2015 Google Inc. 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// jscs:disable jsDoc\n\n'use strict';\n\n// Include Gulp & Tools We'll Use\nimport fs from 'fs';\nimport path from 'path';\nimport mergeStream from 'merge-stream';\nimport del from 'del';\nimport vinylPaths from 'vinyl-paths';\nimport runSequence from 'run-sequence';\nimport browserSync from 'browser-sync';\nimport through from 'through2';\nimport swig from 'swig';\nimport gulp from 'gulp';\nimport closureCompiler from 'gulp-closure-compiler';\nimport gulpLoadPlugins from 'gulp-load-plugins';\nimport uniffe from './utils/uniffe.js';\nimport pkg from './package.json';\n\nconst $ = gulpLoadPlugins();\nconst reload = browserSync.reload;\nconst hostedLibsUrlPrefix = 'https://code.getmdl.io';\nconst templateArchivePrefix = 'mdl-template-';\nconst bucketProd = 'gs://www.getmdl.io';\nconst bucketStaging = 'gs://mdl-staging';\nconst bucketCode = 'gs://code.getmdl.io';\nconst banner = ['/**',\n  ' * <%= pkg.name %> - <%= pkg.description %>',\n  ' * @version v<%= pkg.version %>',\n  ' * @license <%= pkg.license %>',\n  ' * @copyright 2015 Google, Inc.',\n  ' * @link https://github.com/google/material-design-lite',\n  ' */',\n  ''].join('\\n');\n\nlet codeFiles = '';\n\nconst AUTOPREFIXER_BROWSERS = [\n  'ie >= 10',\n  'ie_mob >= 10',\n  'ff >= 30',\n  'chrome >= 34',\n  'safari >= 7',\n  'opera >= 23',\n  'ios >= 7',\n  'android >= 4.4',\n  'bb >= 10'\n];\n\nconst SOURCES = [\n  // Component handler\n  'src/mdlComponentHandler.js',\n  // Polyfills/dependencies\n  'src/third_party/**/*.js',\n  // Base components\n  'src/button/button.js',\n  'src/checkbox/checkbox.js',\n  'src/icon-toggle/icon-toggle.js',\n  'src/menu/menu.js',\n  'src/progress/progress.js',\n  'src/radio/radio.js',\n  'src/slider/slider.js',\n  'src/snackbar/snackbar.js',\n  'src/spinner/spinner.js',\n  'src/switch/switch.js',\n  'src/tabs/tabs.js',\n  'src/textfield/textfield.js',\n  'src/tooltip/tooltip.js',\n  // Complex components (which reuse base components)\n  'src/layout/layout.js',\n  'src/data-table/data-table.js',\n  // And finally, the ripples\n  'src/ripple/ripple.js'\n];\n\n// ***** Development tasks ****** //\n\n// Lint JavaScript\ngulp.task('lint', () => {\n  return gulp.src([\n      'src/**/*.js',\n      'gulpfile.babel.js'\n    ])\n    .pipe(reload({stream: true, once: true}))\n    .pipe($.jshint())\n    .pipe($.jscs())\n    .pipe($.jshint.reporter('jshint-stylish'))\n    .pipe($.jscs.reporter())\n    .pipe($.if(!browserSync.active, $.jshint.reporter('fail')))\n    .pipe($.if(!browserSync.active, $.jscs.reporter('fail')));\n});\n\n// ***** Production build tasks ****** //\n\n// Optimize Images\n// TODO: Update image paths in final CSS to match root/images\ngulp.task('images', () => {\n  return gulp.src('src/**/*.{svg,png,jpg}')\n    .pipe($.flatten())\n    .pipe($.cache($.imagemin({\n      progressive: true,\n      interlaced: true\n    })))\n    .pipe(gulp.dest('dist/images'))\n    .pipe($.size({title: 'images'}));\n});\n\n// Compile and Automatically Prefix Stylesheets (dev)\ngulp.task('styles:dev', () => {\n  return gulp.src('src/**/*.scss')\n    .pipe($.sass({\n      precision: 10,\n      onError: console.error.bind(console, 'Sass error:')\n    }))\n    .pipe($.cssInlineImages({\n      webRoot: 'src'\n    }))\n    .pipe($.autoprefixer(AUTOPREFIXER_BROWSERS))\n    .pipe(gulp.dest('.tmp/styles'))\n    .pipe($.size({title: 'styles'}));\n});\n\n// Compile and Automatically Prefix Stylesheet Templates (production)\ngulp.task('styletemplates', () => {\n  // For best performance, don't add Sass partials to `gulp.src`\n  return gulp.src('src/template.scss')\n    // Generate Source Maps\n    .pipe($.sourcemaps.init())\n    .pipe($.sass({\n      precision: 10,\n      onError: console.error.bind(console, 'Sass error:')\n    }))\n    .pipe($.cssInlineImages({webRoot: 'src'}))\n    .pipe($.autoprefixer(AUTOPREFIXER_BROWSERS))\n    .pipe(gulp.dest('.tmp'))\n    // Concatenate Styles\n    .pipe($.concat('material.css.template'))\n    .pipe(gulp.dest('dist'))\n    // Minify Styles\n    .pipe($.if('*.css.template', $.csso()))\n    .pipe($.concat('material.min.css.template'))\n    .pipe($.header(banner, {pkg}))\n    .pipe($.sourcemaps.write('.'))\n    .pipe(gulp.dest('dist'))\n    .pipe($.size({title: 'styles'}));\n});\n\n// Compile and Automatically Prefix Stylesheets (production)\ngulp.task('styles', () => {\n  // For best performance, don't add Sass partials to `gulp.src`\n  return gulp.src('src/material-design-lite.scss')\n    // Generate Source Maps\n    .pipe($.sourcemaps.init())\n    .pipe($.sass({\n      precision: 10,\n      onError: console.error.bind(console, 'Sass error:')\n    }))\n    .pipe($.cssInlineImages({webRoot: 'src'}))\n    .pipe($.autoprefixer(AUTOPREFIXER_BROWSERS))\n    .pipe(gulp.dest('.tmp'))\n    // Concatenate Styles\n    .pipe($.concat('material.css'))\n    .pipe($.header(banner, {pkg}))\n    .pipe(gulp.dest('dist'))\n    // Minify Styles\n    .pipe($.if('*.css', $.csso()))\n    .pipe($.concat('material.min.css'))\n    .pipe($.header(banner, {pkg}))\n    .pipe($.sourcemaps.write('.'))\n    .pipe(gulp.dest('dist'))\n    .pipe($.size({title: 'styles'}));\n});\n\n// Only generate CSS styles for the MDL grid\ngulp.task('styles-grid', () => {\n  return gulp.src('src/material-design-lite-grid.scss')\n    .pipe($.sass({\n      precision: 10,\n      onError: console.error.bind(console, 'Sass error:')\n    }))\n    .pipe($.autoprefixer(AUTOPREFIXER_BROWSERS))\n    .pipe(gulp.dest('.tmp'))\n    // Concatenate Styles\n    .pipe($.concat('material-grid.css'))\n    .pipe($.header(banner, {pkg}))\n    .pipe(gulp.dest('dist'))\n    // Minify Styles\n    .pipe($.if('*.css', $.csso()))\n    .pipe($.concat('material-grid.min.css'))\n    .pipe($.header(banner, {pkg}))\n    .pipe(gulp.dest('dist'))\n    .pipe($.size({title: 'styles-grid'}));\n});\n\n// Build with Google's Closure Compiler, requires Java 1.7+ installed.\ngulp.task('closure', () => {\n  return gulp.src(SOURCES)\n    .pipe(closureCompiler({\n      compilerPath: 'node_modules/google-closure-compiler/compiler.jar',\n      fileName: 'material.closure.min.js',\n      compilerFlags: {\n        // jscs:disable requireCamelCaseOrUpperCaseIdentifiers\n        compilation_level: 'ADVANCED_OPTIMIZATIONS',\n        language_in: 'ECMASCRIPT6_STRICT',\n        language_out: 'ECMASCRIPT5_STRICT',\n        warning_level: 'VERBOSE'\n        // jscs:enable requireCamelCaseOrUpperCaseIdentifiers\n      }\n    }))\n    .pipe(gulp.dest('./dist'));\n});\n\n// Concatenate And Minify JavaScript\ngulp.task('scripts', ['lint'], () => {\n  return gulp.src(SOURCES)\n    .pipe($.if(/mdlComponentHandler\\.js/, $.util.noop(), uniffe()))\n    .pipe($.sourcemaps.init())\n    // Concatenate Scripts\n    .pipe($.concat('material.js'))\n    .pipe($.iife({useStrict: true}))\n    .pipe(gulp.dest('dist'))\n    // Minify Scripts\n    .pipe($.uglify({\n      sourceRoot: '.',\n      sourceMapIncludeSources: true\n    }))\n    .pipe($.header(banner, {pkg}))\n    .pipe($.concat('material.min.js'))\n    // Write Source Maps\n    .pipe($.sourcemaps.write('.'))\n    .pipe(gulp.dest('dist'))\n    .pipe($.size({title: 'scripts'}));\n});\n\n// Clean Output Directory\ngulp.task('clean', () => del(['dist', '.publish']));\n\n// Copy package manger and LICENSE files to dist\ngulp.task('metadata', () => {\n  return gulp.src([\n      'package.json',\n      'bower.json',\n      'LICENSE'\n    ])\n    .pipe(gulp.dest('dist'));\n});\n\n// Build Production Files, the Default Task\ngulp.task('default', ['clean'], cb => {\n  runSequence(\n    ['styles', 'styles-grid'],\n    ['scripts'],\n    ['mocha'],\n    cb);\n});\n\n// Build production files and microsite\ngulp.task('all', ['clean'], cb => {\n  runSequence(\n    ['styletemplates'],\n    ['styles-grid', 'styles:gen'],\n    ['scripts'],\n    ['mocha'],\n    ['assets', 'pages',\n     'templates', 'images', 'metadata'],\n    ['zip'],\n    cb);\n});\n\n// ***** Testing tasks ***** //\n\ngulp.task('mocha', ['styles'], () => {\n  return gulp.src('test/index.html')\n    .pipe($.mochaPhantomjs({reporter: 'tap'}));\n});\n\ngulp.task('mocha:closure', ['closure'], () => {\n  return gulp.src('test/index.html')\n    .pipe($.replace('src=\"../dist/material.js\"',\n        'src=\"../dist/material.closure.min.js\"'))\n    .pipe($.rename('temp.html'))\n    .pipe(gulp.dest('test'))\n    .pipe($.mochaPhantomjs({reporter: 'tap'}))\n    .on('finish', () => del.sync('test/temp.html'))\n    .on('error', () => del.sync('test/temp.html'));\n});\n\ngulp.task('test', [\n  'lint',\n  'mocha',\n  'mocha:closure'\n]);\n\ngulp.task('test:visual', () => {\n  browserSync({\n    notify: false,\n    server: '.',\n    startPath: 'test/visual/index.html'\n  });\n\n  gulp.watch('test/visual/**', reload);\n});\n\n// ***** Landing page tasks ***** //\n\n/**\n * Site metadata for use with templates.\n * @type {Object}\n */\nconst site = {};\n\n/**\n * Generates an HTML file based on a template and file metadata.\n */\nfunction applyTemplate() {\n  return through.obj((file, enc, cb) => {\n    const data = {\n      site,\n      page: file.page,\n      content: file.contents.toString()\n    };\n\n    const templateFile = path.join(\n        __dirname, 'docs', '_templates', `${file.page.layout}.html`);\n    const tpl = swig.compileFile(templateFile, {cache: false});\n\n    file.contents = new Buffer(tpl(data));\n    cb(null, file);\n  });\n}\n\n/**\n * Generates an index.html file for each README in MDL/src directory.\n */\ngulp.task('components', ['demos'], () => {\n  return gulp.src('src/**/README.md', {base: 'src'})\n    // Add basic front matter.\n    .pipe($.header('---\\nlayout: component\\nbodyclass: component\\ninclude_prefix: ../../\\n---\\n\\n'))\n    .pipe($.frontMatter({\n      property: 'page',\n      remove: true\n    }))\n    .pipe($.marked())\n    .pipe((() => {\n      return through.obj((file, enc, cb) => {\n        file.page.component = file.relative.split('/')[0];\n        cb(null, file);\n      });\n    })())\n    .pipe(applyTemplate())\n    .pipe($.rename(path => path.basename = 'index'))\n    .pipe(gulp.dest('dist/components'));\n});\n\n/**\n * Copies demo files from MDL/src directory.\n */\ngulp.task('demoresources', () => {\n  return gulp.src([\n      'src/**/demos.css',\n      'src/**/demo.css',\n      'src/**/demo.js'\n    ], {base: 'src'})\n    .pipe($.if('*.scss', $.sass({\n      precision: 10,\n      onError: console.error.bind(console, 'Sass error:')\n    })))\n    .pipe($.cssInlineImages({webRoot: 'src'}))\n    .pipe($.if('*.css', $.autoprefixer(AUTOPREFIXER_BROWSERS)))\n    .pipe(gulp.dest('dist/components'));\n});\n\n/**\n * Generates demo files for testing made of all the snippets and the demo file\n * put together.\n */\ngulp.task('demos', ['demoresources'], () => {\n  /**\n   * Retrieves the list of component folders.\n   */\n  function getComponentFolders() {\n    return fs.readdirSync('src')\n      .filter(file => fs.statSync(path.join('src', file)).isDirectory());\n  }\n\n  const tasks = getComponentFolders().map(component => {\n    return gulp.src([\n        path.join('src', component, 'snippets', '*.html'),\n        path.join('src', component, 'demo.html')\n      ])\n      .pipe($.concat('/demo.html'))\n      // Add basic front matter.\n      .pipe($.header('---\\nlayout: demo\\nbodyclass: demo\\ninclude_prefix: ../../\\n---\\n\\n'))\n      .pipe($.frontMatter({\n        property: 'page',\n        remove: true\n      }))\n      .pipe($.marked())\n      .pipe((() => {\n        return through.obj((file, enc, cb) => {\n          file.page.component = component;\n          cb(null, file);\n        });\n      })())\n      .pipe(applyTemplate())\n      .pipe(gulp.dest(path.join('dist', 'components', component)));\n  });\n\n  return mergeStream(tasks);\n});\n\n/**\n * Generates an HTML file for each md file in _pages directory.\n */\ngulp.task('pages', ['components'], () => {\n  return gulp.src('docs/_pages/*.md')\n    .pipe($.frontMatter({\n      property: 'page',\n      remove: true\n    }))\n    .pipe($.marked())\n    .pipe(applyTemplate())\n    .pipe($.replace('$$version$$', pkg.version))\n    .pipe($.replace('$$hosted_libs_prefix$$', hostedLibsUrlPrefix))\n    .pipe($.replace('$$template_archive_prefix$$', templateArchivePrefix))\n    /* Replacing code blocks class name to match Prism's. */\n    .pipe($.replace('class=\"lang-', 'class=\"language-'))\n    /* Translate html code blocks to \"markup\" because that's what Prism uses. */\n    .pipe($.replace('class=\"language-html', 'class=\"language-markup'))\n    .pipe($.rename(path => {\n      if (path.basename !== 'index') {\n        path.dirname = path.basename;\n        path.basename = 'index';\n      }\n    }))\n    .pipe(gulp.dest('dist'));\n});\n\n/**\n * Copies assets from MDL and _assets directory.\n */\ngulp.task('assets', () => {\n  return gulp.src([\n      'docs/_assets/**/*',\n      'node_modules/clippy/build/clippy.swf',\n      'node_modules/swfobject-npm/swfobject/src/swfobject.js',\n      'node_modules/prismjs/prism.js',\n      'node_modules/prismjs/components/prism-markup.min.js',\n      'node_modules/prismjs/components/prism-javascript.min.js',\n      'node_modules/prismjs/components/prism-css.min.js',\n      'node_modules/prismjs/components/prism-bash.min.js',\n      'node_modules/prismjs/dist/prism-default/prism-default.css'\n    ])\n    .pipe($.if(/\\.js/i, $.replace('$$version$$', pkg.version)))\n    .pipe($.if(/\\.js/i, $.replace('$$hosted_libs_prefix$$', hostedLibsUrlPrefix)))\n    .pipe($.if(/\\.(svg|jpg|png)$/i, $.imagemin({\n      progressive: true,\n      interlaced: true\n    })))\n    .pipe($.if(/\\.css/i, $.autoprefixer(AUTOPREFIXER_BROWSERS)))\n    .pipe($.if(/\\.css/i, $.csso()))\n    .pipe($.if(/\\.js/i, $.uglify({\n      preserveComments: 'some',\n      sourceRoot: '.',\n      sourceMapIncludeSources: true\n    })))\n    .pipe(gulp.dest('dist/assets'));\n});\n\n/**\n * Defines the list of resources to watch for changes.\n */\nfunction watch() {\n  gulp.watch(['src/**/*.js', '!src/**/README.md'],\n    ['scripts', 'demos', 'components', reload]);\n  gulp.watch(['src/**/*.{scss,css}'],\n    ['styles', 'styles-grid', 'styletemplates', reload]);\n  gulp.watch(['src/**/*.html'], ['pages', reload]);\n  gulp.watch(['src/**/*.{svg,png,jpg}'], ['images', reload]);\n  gulp.watch(['src/**/README.md'], ['pages', reload]);\n  gulp.watch(['templates/**/*'], ['templates', reload]);\n  gulp.watch(['docs/**/*'], ['pages', 'assets', reload]);\n  gulp.watch(['package.json', 'bower.json', 'LICENSE'], ['metadata']);\n}\n\n/**\n * Serves the landing page from \"out\" directory.\n */\ngulp.task('serve:browsersync', () => {\n  browserSync({\n    notify: false,\n    server: {\n      baseDir: ['dist']\n    }\n  });\n\n  watch();\n});\n\ngulp.task('serve', () => {\n  $.connect.server({\n    root: 'dist',\n    port: 5000,\n    livereload: true\n  });\n\n  watch();\n\n  gulp.src('dist/index.html')\n    .pipe($.open({uri: 'http://localhost:5000'}));\n});\n\n// Generate release archive containing just JS, CSS, Source Map deps\ngulp.task('zip:mdl', () => {\n  return gulp.src([\n      'dist/material?(.min)@(.js|.css)?(.map)',\n      'LICENSE',\n      'bower.json',\n      'package.json'\n    ])\n    .pipe($.zip('mdl.zip'))\n    .pipe(gulp.dest('dist'));\n});\n\n/**\n * Returns the list of children directories inside the given directory.\n * @param {string} dir the parent directory\n * @return {Array<string>} list of child directories\n */\nfunction getSubDirectories(dir) {\n  return fs.readdirSync(dir)\n    .filter(file => fs.statSync(path.join(dir, file)).isDirectory());\n}\n\n// Generate release archives containing the templates and assets for templates.\ngulp.task('zip:templates', () => {\n  const templates = getSubDirectories('dist/templates');\n\n  // Generate a zip file for each template.\n  const generateZips = templates.map(template => {\n    return gulp.src([\n        `dist/templates/${template}/**/*.*`,\n        'LICENSE'\n      ])\n      .pipe($.rename(path => {\n        path.dirname = path.dirname.replace(`dist/templates/${template}`, '');\n      }))\n      .pipe($.zip(`${templateArchivePrefix}${template}.zip`))\n      .pipe(gulp.dest('dist'));\n  });\n\n  return mergeStream(generateZips);\n});\n\ngulp.task('zip', [\n  'zip:templates',\n  'zip:mdl'\n]);\n\ngulp.task('genCodeFiles', () => {\n  return gulp.src([\n      'dist/material.*@(js|css)?(.map)',\n      'dist/mdl.zip',\n      `dist/${templateArchivePrefix}*.zip`\n    ], {read: false})\n    .pipe($.tap(file => {\n      codeFiles += ` dist/${path.basename(file.path)}`;\n    }));\n});\n\n// Push the latest version of code resources (CSS+JS) to Google Cloud Storage.\n// Public-read objects in GCS are served by a Google provided and supported\n// global, high performance caching/content delivery network (CDN) service.\n// This task requires gsutil to be installed and configured.\n// For info on gsutil: https://cloud.google.com/storage/docs/gsutil.\ngulp.task('pushCodeFiles', () => {\n  const dest = bucketCode;\n  console.log(`Publishing ${pkg.version} to CDN (${dest})`);\n\n  // Build cache control and gsutil cmd to copy\n  // each object into a GCS bucket. The dest is a version specific path.\n  // The gsutil -m option requests parallel copies.\n  // The gsutil -h option is used to set metadata headers\n  // (cache control, in this case).\n  // Code files should NEVER be touched after uploading, therefore\n  // 30 days caching is a safe value.\n  const cacheControl = '-h \"Cache-Control:public,max-age=2592000\"';\n  const gsutilCpCmd = 'gsutil -m cp -z js,css,map ';\n  const gsutilCacheCmd = `gsutil -m setmeta -R ${cacheControl}`;\n\n  // Upload the goodies to a separate GCS bucket with versioning.\n  // Using a sep bucket avoids the risk of accidentally blowing away\n  // old versions in the microsite bucket.\n  return gulp.src('')\n    .pipe($.shell([\n      `${gsutilCpCmd}${codeFiles} ${dest}/${pkg.version}`,\n      `${gsutilCacheCmd} ${dest}/${pkg.version}`\n    ]));\n});\n\ngulp.task('publish:code', cb => {\n  runSequence(\n    ['zip:mdl', 'zip:templates'],\n    'genCodeFiles',\n    'pushCodeFiles',\n    cb);\n});\n\n/**\n * Function to publish staging or prod version from local tree,\n * or to promote staging to prod, per passed arg.\n * @param {string} pubScope the scope to publish to.\n */\nfunction mdlPublish(pubScope) {\n  let cacheTtl = null;\n  let src = null;\n  let dest = null;\n\n  if (pubScope === 'staging') {\n    // Set staging specific vars here.\n    cacheTtl = 0;\n    src = 'dist/*';\n    dest = bucketStaging;\n  } else if (pubScope === 'prod') {\n    // Set prod specific vars here.\n    cacheTtl = 60;\n    src = 'dist/*';\n    dest = bucketProd;\n  } else if (pubScope === 'promote') {\n    // Set promote (essentially prod) specific vars here.\n    cacheTtl = 60;\n    src = `${bucketStaging}/*`;\n    dest = bucketProd;\n  }\n\n  let infoMsg = `Publishing ${pubScope}/${pkg.version} to GCS (${dest})`;\n  if (src) {\n    infoMsg += ` from ${src}`;\n  }\n  console.log(infoMsg);\n\n  // Build gsutil commands:\n  // The gsutil -h option is used to set metadata headers.\n  // The gsutil -m option requests parallel copies.\n  // The gsutil -R option is used for recursive file copy.\n  const cacheControl = `-h \"Cache-Control:public,max-age=${cacheTtl}\"`;\n  const gsutilCacheCmd = `gsutil -m setmeta ${cacheControl} ${dest}/**`;\n  const gsutilCpCmd = `gsutil -m cp -r -z html,css,js,svg ${src} ${dest}`;\n\n  gulp.src('').pipe($.shell([gsutilCpCmd, gsutilCacheCmd]));\n}\n\n// Push the local build of the MDL microsite and release artifacts to the\n// production Google Cloud Storage bucket for general serving to the web.\n// Public-read objects in GCS are served by a Google provided and supported\n// global, high performance caching/content delivery network (CDN) service.\n// This task requires gsutil to be installed and configured.\n// For info on gsutil: https://cloud.google.com/storage/docs/gsutil.\n//\ngulp.task('publish:prod', () => {\n  mdlPublish('prod');\n});\n\n// Promote the staging version of the MDL microsite and release artifacts\n// to the production Google Cloud Storage bucket for general serving.\n// Public-read objects in GCS are served by a Google provided and supported\n// global, high performance caching/content delivery network (CDN) service.\n// This task requires gsutil to be installed and configured.\n// For info on gsutil: https://cloud.google.com/storage/docs/gsutil.\n//\ngulp.task('publish:promote', () => {\n  mdlPublish('promote');\n});\n\n// Push the staged version of the MDL microsite and release artifacts\n// to a production Google Cloud Storage bucket for staging and pre-production testing.\n//\n// This task requires gsutil to be installed and configured.\n// For info on gsutil: https://cloud.google.com/storage/docs/gsutil.\n//\ngulp.task('publish:staging', () => {\n  mdlPublish('staging');\n});\n\ngulp.task('_release', () => {\n  return gulp.src([\n      'dist/material?(.min)@(.js|.css)?(.map)',\n      'LICENSE',\n      'README.md',\n      'bower.json',\n      'package.json',\n      '.jscsrc',\n      '.jshintrc',\n      './sr?/**/*',\n      'gulpfile.babel.js',\n      './util?/**/*'\n    ])\n    .pipe(gulp.dest('_release'));\n});\n\ngulp.task('publish:release', ['_release'], () => {\n  return gulp.src('_release')\n    .pipe($.subtree({\n      remote: 'origin',\n      branch: 'release'\n    }))\n    .pipe(vinylPaths(del));\n});\n\ngulp.task('templates:styles', () => {\n  return gulp.src('templates/**/*.css')\n    .pipe($.autoprefixer(AUTOPREFIXER_BROWSERS))\n    // FIXME: This crashes. It's a bug in gulp-csso,\n    // not csso itself.\n    //.pipe($.csso())\n    .pipe(gulp.dest('dist/templates'));\n});\n\ngulp.task('templates:static', () => {\n  return gulp.src('templates/**/*.html')\n  .pipe($.replace('$$version$$', pkg.version))\n  .pipe($.replace('$$hosted_libs_prefix$$', hostedLibsUrlPrefix))\n  .pipe(gulp.dest('dist/templates'));\n});\n\n// This task can be used if you want to test the templates against locally\n// built version of the MDL libraries.\ngulp.task('templates:localtestingoverride', () => {\n  return gulp.src('templates/**/*.html')\n    .pipe($.replace('$$version$$', '.'))\n    .pipe($.replace('$$hosted_libs_prefix$$', ''))\n    .pipe(gulp.dest('dist/templates'));\n});\n\ngulp.task('templates:images', () => {\n  return gulp.src('templates/*/images/**/*')\n    .pipe($.imagemin({\n      progressive: true,\n      interlaced: true\n    }))\n    .pipe(gulp.dest('dist/templates'));\n});\n\ngulp.task('templates:fonts', () => {\n  return gulp.src('templates/*/fonts/**/*')\n    .pipe(gulp.dest('dist/templates/'));\n});\n\ngulp.task('templates', [\n  'templates:static',\n  'templates:images',\n  'templates:fonts',\n  'templates:styles'\n]);\n\ngulp.task('styles:gen', ['styles'], () => {\n  const MaterialCustomizer = require('./docs/_assets/customizer.js');\n  const templatePath = path.join(__dirname, 'dist', 'material.min.css.template');\n  // TODO: This task needs refactoring once we turn MaterialCustomizer\n  // into a proper Node module.\n  const mc = new MaterialCustomizer();\n  mc.template = fs.readFileSync(templatePath).toString();\n\n  let stream = gulp.src('');\n\n  mc.paletteIndices.forEach(primary => {\n    mc.paletteIndices.forEach(accent => {\n      if (primary === accent) {\n        return;\n      }\n\n      if (mc.forbiddenAccents.indexOf(accent) !== -1) {\n        return;\n      }\n\n      const primaryName = primary.toLowerCase().replace(' ', '_');\n      const accentName = accent.toLowerCase().replace(' ', '_');\n\n      stream = stream.pipe($.file(\n        `material.${primaryName}-${accentName}.min.css`,\n        mc.processTemplate(primary, accent)\n      ));\n    });\n  });\n\n  stream.pipe(gulp.dest('dist'));\n});\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"material-design-lite\",\n  \"version\": \"1.3.0\",\n  \"description\": \"Material Design Components in CSS, JS and HTML\",\n  \"private\": true,\n  \"license\": \"Apache-2.0\",\n  \"author\": \"Google\",\n  \"repository\": \"google/material-design-lite\",\n  \"main\": \"dist/material.min.js\",\n  \"devDependencies\": {\n    \"acorn\": \"^4.0.3\",\n    \"babel-core\": \"^6.20.0\",\n    \"babel-preset-es2015\": \"^6.18.0\",\n    \"browser-sync\": \"^2.2.3\",\n    \"chai\": \"^3.3.0\",\n    \"chai-jquery\": \"^2.0.0\",\n    \"del\": \"^2.0.2\",\n    \"drool\": \"^0.4.0\",\n    \"escodegen\": \"^1.6.1\",\n    \"google-closure-compiler\": \"\",\n    \"gulp\": \"^3.9.0\",\n    \"gulp-autoprefixer\": \"^3.0.2\",\n    \"gulp-cache\": \"^0.4.5\",\n    \"gulp-closure-compiler\": \"^0.4.0\",\n    \"gulp-concat\": \"^2.4.1\",\n    \"gulp-connect\": \"^5.0.0\",\n    \"gulp-css-inline-images\": \"^0.1.1\",\n    \"gulp-csso\": \"1.0.0\",\n    \"gulp-file\": \"^0.3.0\",\n    \"gulp-flatten\": \"^0.3.1\",\n    \"gulp-front-matter\": \"^1.2.2\",\n    \"gulp-header\": \"^1.2.2\",\n    \"gulp-if\": \"^2.0.0\",\n    \"gulp-iife\": \"^0.3.0\",\n    \"gulp-imagemin\": \"^3.1.0\",\n    \"gulp-jscs\": \"^4.0.0\",\n    \"gulp-jshint\": \"^2.0.4\",\n    \"gulp-load-plugins\": \"^1.3.0\",\n    \"gulp-marked\": \"^1.0.0\",\n    \"gulp-mocha-phantomjs\": \"^0.12.0\",\n    \"gulp-open\": \"^2.0.0\",\n    \"gulp-rename\": \"^1.2.0\",\n    \"gulp-replace\": \"^0.5.3\",\n    \"gulp-sass\": \"3.0.0\",\n    \"gulp-shell\": \"^0.5.2\",\n    \"gulp-size\": \"^2.0.0\",\n    \"gulp-sourcemaps\": \"^2.0.1\",\n    \"gulp-subtree\": \"^0.1.0\",\n    \"gulp-tap\": \"^0.1.3\",\n    \"gulp-uglify\": \"^2.0.0\",\n    \"gulp-util\": \"^3.0.4\",\n    \"gulp-zip\": \"^4.0.0\",\n    \"humanize\": \"0.0.9\",\n    \"jquery\": \"^3.1.1\",\n    \"jshint\": \"^2.9.4\",\n    \"jshint-stylish\": \"^2.2.1\",\n    \"merge-stream\": \"^1.0.0\",\n    \"mocha\": \"^3.0.2\",\n    \"prismjs\": \"0.0.1\",\n    \"run-sequence\": \"^1.0.2\",\n    \"swig\": \"^1.4.2\",\n    \"through2\": \"^2.0.0\",\n    \"vinyl-paths\": \"^2.0.0\"\n  },\n  \"engines\": {\n    \"node\": \">=0.12.0\"\n  },\n  \"scripts\": {\n    \"test\": \"gulp && git status | grep 'working directory clean' >/dev/null || (echo 'Please commit all changes generated by building'; exit 1)\"\n  },\n  \"babel\": {\n    \"only\": \"gulpfile.babel.js\",\n    \"presets\": [\n      \"es2015\"\n    ]\n  }\n}\n"
  },
  {
    "path": "src/INTRODUCTION.md",
    "content": "# Material Design Lite\n\n## Introduction\n**Material Design Light (MDL)** is a library of components for web developers based on Google's **Material Design** philosophy: \"A visual language for our users that synthesizes the classic principles of good design with the innovation and possibility of technology and science.\" Understanding the goals and principles of Material Design is critical to the proper use of the MDL components. If you have not yet read the [Material Design Introduction](http://www.google.com/design/spec/material-design/introduction.html), you should do so before attempting to use the components.\n\nThe MDL components are created with CSS, JavaScript, and HTML. You can use the components to construct web pages and web apps that are attractive, consistent, and functional. Pages developed with MDL will adhere to modern web design principles like browser portability, device independence, and graceful degradation.\n\nThe MDL component library includes new versions of common user interface controls such as buttons, check boxes, and text fields, adapted to follow Material Design concepts. The library also includes enhanced and specialized features like cards, column layouts, sliders, spinners, tabs, typography, and more.\n\nMDL is free to download and use, and may be used with or without any build library or development environment (such as [Material Design Lite](http://www.getmdl.io/)). It is a cross-browser, cross-OS web developer's toolkit that can be used by anyone who wants to write more productive, portable, and &mdash; most importantly &mdash; usable web pages.\n\n## Getting started\n\n### Get the components\nTo obtain the components, clone or download the [GitHub MDL repository](https://github.com/google/material-design-lite). Copy the entire package (the top-level folder and everything below it) to the project folder where you will write your HTML pages. This ensures that your project can access all of MDL's components and assets, and that you always have the original files for reference in case you break something. :-)\n\n### Include the master CSS and JavaScript\nIn each HTML page in your project, include the minified (compressed) CSS and JavaScript files using standard relative-path references and the Material Icon font. This example assumes that a copy of the MDL package folders resides in your project folder.\n\n\n```html\n<link rel=\"stylesheet\" href=\"css/material.min.css\">\n<script src=\"js/material.min.js\"></script>\n<link rel=\"stylesheet\" href=\"//fonts.googleapis.com/icon?family=Material+Icons\">\n```\n\nThat's it! You are now ready to use the MDL components.\n\n### Use the components\nIn general, follow these basic steps to use an MDL component in your HTML page.\n\n1. Start with a standard HTML element, such as `<button>`, `<div>`, or `<ul>`, depending on the MDL component you want to use. This establishes the element in the page and readies it for MDL modification.<br><br>\n2. Add one or more MDL-specific CSS classes to the element, such as `mdl-button` or   `mdl-tabs__panel` again depending on the component. The classes apply the MDL enhancements to the element and effectively turn it into an MDL component.<br><br>\n3. View the page, preferably in multiple browsers on multiple devices, to ensure that the component looks and behaves as expected.\n\n>**A note about HTML elements and MDL CSS classes**\n>Material Design Lite uses CSS *independent classes*, which can apply to any HTML element, to construct components. For some components, you can use almost any element. For other components, some elements give better visual or behavioral performance than others. The examples in each component's README file use elements that perform well as that component. If you must use elements other than those shown in the examples, we encourage you to experiment to find the best combination of HTML elements and MDL CSS classes for your application.\n\n## What's next?\nDetailed instructions for using the components, including MDL classes and their effects, coding considerations, and configuration options, can be found in each component's `README.md` file. Working examples using various options are in each component's `demo.html` page.\n\n## License\n\nCopyright Google, 2015. Licensed under an Apache-2 license.\n"
  },
  {
    "path": "src/_color-definitions.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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/* ==========  Color Palettes  ========== */\n\n// Color order: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, A100, A200,\n// A400, A700.\n\n$palette-red:\n\"255,235,238\"\n\"255,205,210\"\n\"239,154,154\"\n\"229,115,115\"\n\"239,83,80\"\n\"244,67,54\"\n\"229,57,53\"\n\"211,47,47\"\n\"198,40,40\"\n\"183,28,28\"\n\"255,138,128\"\n\"255,82,82\"\n\"255,23,68\"\n\"213,0,0\";\n\n$palette-red-50: nth($palette-red, 1);\n$palette-red-100: nth($palette-red, 2);\n$palette-red-200: nth($palette-red, 3);\n$palette-red-300: nth($palette-red, 4);\n$palette-red-400: nth($palette-red, 5);\n$palette-red-500: nth($palette-red, 6);\n$palette-red-600: nth($palette-red, 7);\n$palette-red-700: nth($palette-red, 8);\n$palette-red-800: nth($palette-red, 9);\n$palette-red-900: nth($palette-red, 10);\n$palette-red-A100: nth($palette-red, 11);\n$palette-red-A200: nth($palette-red, 12);\n$palette-red-A400: nth($palette-red, 13);\n$palette-red-A700: nth($palette-red, 14);\n\n$palette-pink:\n\"252,228,236\"\n\"248,187,208\"\n\"244,143,177\"\n\"240,98,146\"\n\"236,64,122\"\n\"233,30,99\"\n\"216,27,96\"\n\"194,24,91\"\n\"173,20,87\"\n\"136,14,79\"\n\"255,128,171\"\n\"255,64,129\"\n\"245,0,87\"\n\"197,17,98\";\n\n$palette-pink-50: nth($palette-pink, 1);\n$palette-pink-100: nth($palette-pink, 2);\n$palette-pink-200: nth($palette-pink, 3);\n$palette-pink-300: nth($palette-pink, 4);\n$palette-pink-400: nth($palette-pink, 5);\n$palette-pink-500: nth($palette-pink, 6);\n$palette-pink-600: nth($palette-pink, 7);\n$palette-pink-700: nth($palette-pink, 8);\n$palette-pink-800: nth($palette-pink, 9);\n$palette-pink-900: nth($palette-pink, 10);\n$palette-pink-A100: nth($palette-pink, 11);\n$palette-pink-A200: nth($palette-pink, 12);\n$palette-pink-A400: nth($palette-pink, 13);\n$palette-pink-A700: nth($palette-pink, 14);\n\n$palette-purple:\n\"243,229,245\"\n\"225,190,231\"\n\"206,147,216\"\n\"186,104,200\"\n\"171,71,188\"\n\"156,39,176\"\n\"142,36,170\"\n\"123,31,162\"\n\"106,27,154\"\n\"74,20,140\"\n\"234,128,252\"\n\"224,64,251\"\n\"213,0,249\"\n\"170,0,255\";\n\n$palette-purple-50: nth($palette-purple, 1);\n$palette-purple-100: nth($palette-purple, 2);\n$palette-purple-200: nth($palette-purple, 3);\n$palette-purple-300: nth($palette-purple, 4);\n$palette-purple-400: nth($palette-purple, 5);\n$palette-purple-500: nth($palette-purple, 6);\n$palette-purple-600: nth($palette-purple, 7);\n$palette-purple-700: nth($palette-purple, 8);\n$palette-purple-800: nth($palette-purple, 9);\n$palette-purple-900: nth($palette-purple, 10);\n$palette-purple-A100: nth($palette-purple, 11);\n$palette-purple-A200: nth($palette-purple, 12);\n$palette-purple-A400: nth($palette-purple, 13);\n$palette-purple-A700: nth($palette-purple, 14);\n\n$palette-deep-purple:\n\"237,231,246\"\n\"209,196,233\"\n\"179,157,219\"\n\"149,117,205\"\n\"126,87,194\"\n\"103,58,183\"\n\"94,53,177\"\n\"81,45,168\"\n\"69,39,160\"\n\"49,27,146\"\n\"179,136,255\"\n\"124,77,255\"\n\"101,31,255\"\n\"98,0,234\";\n\n$palette-deep-purple-50: nth($palette-deep-purple, 1);\n$palette-deep-purple-100: nth($palette-deep-purple, 2);\n$palette-deep-purple-200: nth($palette-deep-purple, 3);\n$palette-deep-purple-300: nth($palette-deep-purple, 4);\n$palette-deep-purple-400: nth($palette-deep-purple, 5);\n$palette-deep-purple-500: nth($palette-deep-purple, 6);\n$palette-deep-purple-600: nth($palette-deep-purple, 7);\n$palette-deep-purple-700: nth($palette-deep-purple, 8);\n$palette-deep-purple-800: nth($palette-deep-purple, 9);\n$palette-deep-purple-900: nth($palette-deep-purple, 10);\n$palette-deep-purple-A100: nth($palette-deep-purple, 11);\n$palette-deep-purple-A200: nth($palette-deep-purple, 12);\n$palette-deep-purple-A400: nth($palette-deep-purple, 13);\n$palette-deep-purple-A700: nth($palette-deep-purple, 14);\n\n$palette-indigo:\n\"232,234,246\"\n\"197,202,233\"\n\"159,168,218\"\n\"121,134,203\"\n\"92,107,192\"\n\"63,81,181\"\n\"57,73,171\"\n\"48,63,159\"\n\"40,53,147\"\n\"26,35,126\"\n\"140,158,255\"\n\"83,109,254\"\n\"61,90,254\"\n\"48,79,254\";\n\n$palette-indigo-50: nth($palette-indigo, 1);\n$palette-indigo-100: nth($palette-indigo, 2);\n$palette-indigo-200: nth($palette-indigo, 3);\n$palette-indigo-300: nth($palette-indigo, 4);\n$palette-indigo-400: nth($palette-indigo, 5);\n$palette-indigo-500: nth($palette-indigo, 6);\n$palette-indigo-600: nth($palette-indigo, 7);\n$palette-indigo-700: nth($palette-indigo, 8);\n$palette-indigo-800: nth($palette-indigo, 9);\n$palette-indigo-900: nth($palette-indigo, 10);\n$palette-indigo-A100: nth($palette-indigo, 11);\n$palette-indigo-A200: nth($palette-indigo, 12);\n$palette-indigo-A400: nth($palette-indigo, 13);\n$palette-indigo-A700: nth($palette-indigo, 14);\n\n$palette-blue:\n\"227,242,253\"\n\"187,222,251\"\n\"144,202,249\"\n\"100,181,246\"\n\"66,165,245\"\n\"33,150,243\"\n\"30,136,229\"\n\"25,118,210\"\n\"21,101,192\"\n\"13,71,161\"\n\"130,177,255\"\n\"68,138,255\"\n\"41,121,255\"\n\"41,98,255\";\n\n$palette-blue-50: nth($palette-blue, 1);\n$palette-blue-100: nth($palette-blue, 2);\n$palette-blue-200: nth($palette-blue, 3);\n$palette-blue-300: nth($palette-blue, 4);\n$palette-blue-400: nth($palette-blue, 5);\n$palette-blue-500: nth($palette-blue, 6);\n$palette-blue-600: nth($palette-blue, 7);\n$palette-blue-700: nth($palette-blue, 8);\n$palette-blue-800: nth($palette-blue, 9);\n$palette-blue-900: nth($palette-blue, 10);\n$palette-blue-A100: nth($palette-blue, 11);\n$palette-blue-A200: nth($palette-blue, 12);\n$palette-blue-A400: nth($palette-blue, 13);\n$palette-blue-A700: nth($palette-blue, 14);\n\n$palette-light-blue:\n\"225,245,254\"\n\"179,229,252\"\n\"129,212,250\"\n\"79,195,247\"\n\"41,182,246\"\n\"3,169,244\"\n\"3,155,229\"\n\"2,136,209\"\n\"2,119,189\"\n\"1,87,155\"\n\"128,216,255\"\n\"64,196,255\"\n\"0,176,255\"\n\"0,145,234\";\n\n$palette-light-blue-50: nth($palette-light-blue, 1);\n$palette-light-blue-100: nth($palette-light-blue, 2);\n$palette-light-blue-200: nth($palette-light-blue, 3);\n$palette-light-blue-300: nth($palette-light-blue, 4);\n$palette-light-blue-400: nth($palette-light-blue, 5);\n$palette-light-blue-500: nth($palette-light-blue, 6);\n$palette-light-blue-600: nth($palette-light-blue, 7);\n$palette-light-blue-700: nth($palette-light-blue, 8);\n$palette-light-blue-800: nth($palette-light-blue, 9);\n$palette-light-blue-900: nth($palette-light-blue, 10);\n$palette-light-blue-A100: nth($palette-light-blue, 11);\n$palette-light-blue-A200: nth($palette-light-blue, 12);\n$palette-light-blue-A400: nth($palette-light-blue, 13);\n$palette-light-blue-A700: nth($palette-light-blue, 14);\n\n$palette-cyan:\n\"224,247,250\"\n\"178,235,242\"\n\"128,222,234\"\n\"77,208,225\"\n\"38,198,218\"\n\"0,188,212\"\n\"0,172,193\"\n\"0,151,167\"\n\"0,131,143\"\n\"0,96,100\"\n\"132,255,255\"\n\"24,255,255\"\n\"0,229,255\"\n\"0,184,212\";\n\n$palette-cyan-50: nth($palette-cyan, 1);\n$palette-cyan-100: nth($palette-cyan, 2);\n$palette-cyan-200: nth($palette-cyan, 3);\n$palette-cyan-300: nth($palette-cyan, 4);\n$palette-cyan-400: nth($palette-cyan, 5);\n$palette-cyan-500: nth($palette-cyan, 6);\n$palette-cyan-600: nth($palette-cyan, 7);\n$palette-cyan-700: nth($palette-cyan, 8);\n$palette-cyan-800: nth($palette-cyan, 9);\n$palette-cyan-900: nth($palette-cyan, 10);\n$palette-cyan-A100: nth($palette-cyan, 11);\n$palette-cyan-A200: nth($palette-cyan, 12);\n$palette-cyan-A400: nth($palette-cyan, 13);\n$palette-cyan-A700: nth($palette-cyan, 14);\n\n$palette-teal:\n\"224,242,241\"\n\"178,223,219\"\n\"128,203,196\"\n\"77,182,172\"\n\"38,166,154\"\n\"0,150,136\"\n\"0,137,123\"\n\"0,121,107\"\n\"0,105,92\"\n\"0,77,64\"\n\"167,255,235\"\n\"100,255,218\"\n\"29,233,182\"\n\"0,191,165\";\n\n$palette-teal-50: nth($palette-teal, 1);\n$palette-teal-100: nth($palette-teal, 2);\n$palette-teal-200: nth($palette-teal, 3);\n$palette-teal-300: nth($palette-teal, 4);\n$palette-teal-400: nth($palette-teal, 5);\n$palette-teal-500: nth($palette-teal, 6);\n$palette-teal-600: nth($palette-teal, 7);\n$palette-teal-700: nth($palette-teal, 8);\n$palette-teal-800: nth($palette-teal, 9);\n$palette-teal-900: nth($palette-teal, 10);\n$palette-teal-A100: nth($palette-teal, 11);\n$palette-teal-A200: nth($palette-teal, 12);\n$palette-teal-A400: nth($palette-teal, 13);\n$palette-teal-A700: nth($palette-teal, 14);\n\n$palette-green:\n\"232,245,233\"\n\"200,230,201\"\n\"165,214,167\"\n\"129,199,132\"\n\"102,187,106\"\n\"76,175,80\"\n\"67,160,71\"\n\"56,142,60\"\n\"46,125,50\"\n\"27,94,32\"\n\"185,246,202\"\n\"105,240,174\"\n\"0,230,118\"\n\"0,200,83\";\n\n$palette-green-50: nth($palette-green, 1);\n$palette-green-100: nth($palette-green, 2);\n$palette-green-200: nth($palette-green, 3);\n$palette-green-300: nth($palette-green, 4);\n$palette-green-400: nth($palette-green, 5);\n$palette-green-500: nth($palette-green, 6);\n$palette-green-600: nth($palette-green, 7);\n$palette-green-700: nth($palette-green, 8);\n$palette-green-800: nth($palette-green, 9);\n$palette-green-900: nth($palette-green, 10);\n$palette-green-A100: nth($palette-green, 11);\n$palette-green-A200: nth($palette-green, 12);\n$palette-green-A400: nth($palette-green, 13);\n$palette-green-A700: nth($palette-green, 14);\n\n$palette-light-green:\n\"241,248,233\"\n\"220,237,200\"\n\"197,225,165\"\n\"174,213,129\"\n\"156,204,101\"\n\"139,195,74\"\n\"124,179,66\"\n\"104,159,56\"\n\"85,139,47\"\n\"51,105,30\"\n\"204,255,144\"\n\"178,255,89\"\n\"118,255,3\"\n\"100,221,23\";\n\n$palette-light-green-50: nth($palette-light-green, 1);\n$palette-light-green-100: nth($palette-light-green, 2);\n$palette-light-green-200: nth($palette-light-green, 3);\n$palette-light-green-300: nth($palette-light-green, 4);\n$palette-light-green-400: nth($palette-light-green, 5);\n$palette-light-green-500: nth($palette-light-green, 6);\n$palette-light-green-600: nth($palette-light-green, 7);\n$palette-light-green-700: nth($palette-light-green, 8);\n$palette-light-green-800: nth($palette-light-green, 9);\n$palette-light-green-900: nth($palette-light-green, 10);\n$palette-light-green-A100: nth($palette-light-green, 11);\n$palette-light-green-A200: nth($palette-light-green, 12);\n$palette-light-green-A400: nth($palette-light-green, 13);\n$palette-light-green-A700: nth($palette-light-green, 14);\n\n$palette-lime:\n\"249,251,231\"\n\"240,244,195\"\n\"230,238,156\"\n\"220,231,117\"\n\"212,225,87\"\n\"205,220,57\"\n\"192,202,51\"\n\"175,180,43\"\n\"158,157,36\"\n\"130,119,23\"\n\"244,255,129\"\n\"238,255,65\"\n\"198,255,0\"\n\"174,234,0\";\n\n$palette-lime-50: nth($palette-lime, 1);\n$palette-lime-100: nth($palette-lime, 2);\n$palette-lime-200: nth($palette-lime, 3);\n$palette-lime-300: nth($palette-lime, 4);\n$palette-lime-400: nth($palette-lime, 5);\n$palette-lime-500: nth($palette-lime, 6);\n$palette-lime-600: nth($palette-lime, 7);\n$palette-lime-700: nth($palette-lime, 8);\n$palette-lime-800: nth($palette-lime, 9);\n$palette-lime-900: nth($palette-lime, 10);\n$palette-lime-A100: nth($palette-lime, 11);\n$palette-lime-A200: nth($palette-lime, 12);\n$palette-lime-A400: nth($palette-lime, 13);\n$palette-lime-A700: nth($palette-lime, 14);\n\n$palette-yellow:\n\"255,253,231\"\n\"255,249,196\"\n\"255,245,157\"\n\"255,241,118\"\n\"255,238,88\"\n\"255,235,59\"\n\"253,216,53\"\n\"251,192,45\"\n\"249,168,37\"\n\"245,127,23\"\n\"255,255,141\"\n\"255,255,0\"\n\"255,234,0\"\n\"255,214,0\";\n\n$palette-yellow-50: nth($palette-yellow, 1);\n$palette-yellow-100: nth($palette-yellow, 2);\n$palette-yellow-200: nth($palette-yellow, 3);\n$palette-yellow-300: nth($palette-yellow, 4);\n$palette-yellow-400: nth($palette-yellow, 5);\n$palette-yellow-500: nth($palette-yellow, 6);\n$palette-yellow-600: nth($palette-yellow, 7);\n$palette-yellow-700: nth($palette-yellow, 8);\n$palette-yellow-800: nth($palette-yellow, 9);\n$palette-yellow-900: nth($palette-yellow, 10);\n$palette-yellow-A100: nth($palette-yellow, 11);\n$palette-yellow-A200: nth($palette-yellow, 12);\n$palette-yellow-A400: nth($palette-yellow, 13);\n$palette-yellow-A700: nth($palette-yellow, 14);\n\n$palette-amber:\n\"255,248,225\"\n\"255,236,179\"\n\"255,224,130\"\n\"255,213,79\"\n\"255,202,40\"\n\"255,193,7\"\n\"255,179,0\"\n\"255,160,0\"\n\"255,143,0\"\n\"255,111,0\"\n\"255,229,127\"\n\"255,215,64\"\n\"255,196,0\"\n\"255,171,0\";\n\n$palette-amber-50: nth($palette-amber, 1);\n$palette-amber-100: nth($palette-amber, 2);\n$palette-amber-200: nth($palette-amber, 3);\n$palette-amber-300: nth($palette-amber, 4);\n$palette-amber-400: nth($palette-amber, 5);\n$palette-amber-500: nth($palette-amber, 6);\n$palette-amber-600: nth($palette-amber, 7);\n$palette-amber-700: nth($palette-amber, 8);\n$palette-amber-800: nth($palette-amber, 9);\n$palette-amber-900: nth($palette-amber, 10);\n$palette-amber-A100: nth($palette-amber, 11);\n$palette-amber-A200: nth($palette-amber, 12);\n$palette-amber-A400: nth($palette-amber, 13);\n$palette-amber-A700: nth($palette-amber, 14);\n\n$palette-orange:\n\"255,243,224\"\n\"255,224,178\"\n\"255,204,128\"\n\"255,183,77\"\n\"255,167,38\"\n\"255,152,0\"\n\"251,140,0\"\n\"245,124,0\"\n\"239,108,0\"\n\"230,81,0\"\n\"255,209,128\"\n\"255,171,64\"\n\"255,145,0\"\n\"255,109,0\";\n\n$palette-orange-50: nth($palette-orange, 1);\n$palette-orange-100: nth($palette-orange, 2);\n$palette-orange-200: nth($palette-orange, 3);\n$palette-orange-300: nth($palette-orange, 4);\n$palette-orange-400: nth($palette-orange, 5);\n$palette-orange-500: nth($palette-orange, 6);\n$palette-orange-600: nth($palette-orange, 7);\n$palette-orange-700: nth($palette-orange, 8);\n$palette-orange-800: nth($palette-orange, 9);\n$palette-orange-900: nth($palette-orange, 10);\n$palette-orange-A100: nth($palette-orange, 11);\n$palette-orange-A200: nth($palette-orange, 12);\n$palette-orange-A400: nth($palette-orange, 13);\n$palette-orange-A700: nth($palette-orange, 14);\n\n$palette-deep-orange:\n\"251,233,231\"\n\"255,204,188\"\n\"255,171,145\"\n\"255,138,101\"\n\"255,112,67\"\n\"255,87,34\"\n\"244,81,30\"\n\"230,74,25\"\n\"216,67,21\"\n\"191,54,12\"\n\"255,158,128\"\n\"255,110,64\"\n\"255,61,0\"\n\"221,44,0\";\n\n$palette-deep-orange-50: nth($palette-deep-orange, 1);\n$palette-deep-orange-100: nth($palette-deep-orange, 2);\n$palette-deep-orange-200: nth($palette-deep-orange, 3);\n$palette-deep-orange-300: nth($palette-deep-orange, 4);\n$palette-deep-orange-400: nth($palette-deep-orange, 5);\n$palette-deep-orange-500: nth($palette-deep-orange, 6);\n$palette-deep-orange-600: nth($palette-deep-orange, 7);\n$palette-deep-orange-700: nth($palette-deep-orange, 8);\n$palette-deep-orange-800: nth($palette-deep-orange, 9);\n$palette-deep-orange-900: nth($palette-deep-orange, 10);\n$palette-deep-orange-A100: nth($palette-deep-orange, 11);\n$palette-deep-orange-A200: nth($palette-deep-orange, 12);\n$palette-deep-orange-A400: nth($palette-deep-orange, 13);\n$palette-deep-orange-A700: nth($palette-deep-orange, 14);\n\n\n// Color order: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900.\n\n$palette-brown:\n\"239,235,233\"\n\"215,204,200\"\n\"188,170,164\"\n\"161,136,127\"\n\"141,110,99\"\n\"121,85,72\"\n\"109,76,65\"\n\"93,64,55\"\n\"78,52,46\"\n\"62,39,35\";\n\n$palette-brown-50: nth($palette-brown, 1);\n$palette-brown-100: nth($palette-brown, 2);\n$palette-brown-200: nth($palette-brown, 3);\n$palette-brown-300: nth($palette-brown, 4);\n$palette-brown-400: nth($palette-brown, 5);\n$palette-brown-500: nth($palette-brown, 6);\n$palette-brown-600: nth($palette-brown, 7);\n$palette-brown-700: nth($palette-brown, 8);\n$palette-brown-800: nth($palette-brown, 9);\n$palette-brown-900: nth($palette-brown, 10);\n\n$palette-grey:\n\"250,250,250\"\n\"245,245,245\"\n\"238,238,238\"\n\"224,224,224\"\n\"189,189,189\"\n\"158,158,158\"\n\"117,117,117\"\n\"97,97,97\"\n\"66,66,66\"\n\"33,33,33\";\n\n$palette-grey-50: nth($palette-grey, 1);\n$palette-grey-100: nth($palette-grey, 2);\n$palette-grey-200: nth($palette-grey, 3);\n$palette-grey-300: nth($palette-grey, 4);\n$palette-grey-400: nth($palette-grey, 5);\n$palette-grey-500: nth($palette-grey, 6);\n$palette-grey-600: nth($palette-grey, 7);\n$palette-grey-700: nth($palette-grey, 8);\n$palette-grey-800: nth($palette-grey, 9);\n$palette-grey-900: nth($palette-grey, 10);\n\n$palette-blue-grey:\n\"236,239,241\"\n\"207,216,220\"\n\"176,190,197\"\n\"144,164,174\"\n\"120,144,156\"\n\"96,125,139\"\n\"84,110,122\"\n\"69,90,100\"\n\"55,71,79\"\n\"38,50,56\";\n\n$palette-blue-grey-50: nth($palette-blue-grey, 1);\n$palette-blue-grey-100: nth($palette-blue-grey, 2);\n$palette-blue-grey-200: nth($palette-blue-grey, 3);\n$palette-blue-grey-300: nth($palette-blue-grey, 4);\n$palette-blue-grey-400: nth($palette-blue-grey, 5);\n$palette-blue-grey-500: nth($palette-blue-grey, 6);\n$palette-blue-grey-600: nth($palette-blue-grey, 7);\n$palette-blue-grey-700: nth($palette-blue-grey, 8);\n$palette-blue-grey-800: nth($palette-blue-grey, 9);\n$palette-blue-grey-900: nth($palette-blue-grey, 10);\n\n$color-black: \"0,0,0\";\n$color-white: \"255,255,255\";\n\n\n/* colors.scss */\n$styleguide-generate-template: false !default;\n\n// The two possible colors for overlayed text.\n$color-dark-contrast: $color-white !default;\n$color-light-contrast: $color-black !default;\n"
  },
  {
    "path": "src/_functions.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@function strip-units($number) {\n  @return $number / ($number * 0 + 1);\n}\n"
  },
  {
    "path": "src/_mixins.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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/* Typography */\n\n@mixin typo-preferred-font($usePreferred: true) {\n  @if $usePreferred {\n    font-family: $preferred_font;\n  }\n}\n\n@mixin typo-display-4($colorContrast: false, $usePreferred: true) {\n  @include typo-preferred-font($usePreferred);\n  font-size: 112px;\n  font-weight: 300;\n  line-height: 1;\n  letter-spacing: -0.04em;\n\n  @if $colorContrast {\n    opacity: 0.54;\n  }\n}\n\n@mixin typo-display-3($colorContrast: false, $usePreferred: true) {\n  @include typo-preferred-font($usePreferred);\n  font-size: 56px;\n  font-weight: 400;\n  line-height: 1.35;\n  letter-spacing: -0.02em;\n\n  @if $colorContrast {\n    opacity: 0.54;\n  }\n}\n\n@mixin typo-display-2($colorContrast: false, $usePreferred: true) {\n  @include typo-preferred-font($usePreferred);\n  font-size: 45px;\n  font-weight: 400;\n  line-height: 48px;\n\n  @if $colorContrast {\n    opacity: 0.54;\n  }\n}\n\n@mixin typo-display-1($colorContrast: false, $usePreferred: true) {\n  @include typo-preferred-font($usePreferred);\n  font-size: 34px;\n  font-weight: 400;\n  line-height: 40px;\n\n  @if $colorContrast {\n    opacity: 0.54;\n  }\n}\n\n@mixin typo-headline($colorContrast: false, $usePreferred: true) {\n  @include typo-preferred-font($usePreferred);\n  font-size: 24px;\n  font-weight: 400;\n  line-height: 32px;\n  -moz-osx-font-smoothing: grayscale;\n\n  @if $colorContrast {\n    opacity: 0.87;\n  }\n}\n\n@mixin typo-title($colorContrast: false, $usePreferred: true) {\n  @include typo-preferred-font($usePreferred);\n  font-size: 20px;\n  font-weight: 500;\n  line-height: 1;\n  letter-spacing: 0.02em;\n\n  @if $colorContrast {\n    opacity: 0.87;\n  }\n}\n\n@mixin typo-subhead($colorContrast: false, $usePreferred: true) {\n  @include typo-preferred-font($usePreferred);\n  font-size: 16px;\n  font-weight: 400;\n  line-height: 24px;\n  letter-spacing: 0.04em;\n\n  @if $colorContrast {\n    opacity: 0.87;\n  }\n}\n\n@mixin typo-subhead-2($colorContrast: false, $usePreferred: true) {\n  @include typo-preferred-font($usePreferred);\n  font-size: 16px;\n  font-weight: 400;\n  line-height: 28px;\n  letter-spacing: 0.04em;\n\n  @if $colorContrast {\n    opacity: 0.87;\n  }\n}\n\n@mixin typo-body-2($colorContrast: false, $usePreferred: false) {\n  @include typo-preferred-font($usePreferred);\n  font-size: 14px;\n  @if $usePreferred {\n    font-weight: 500;\n  } @else {\n    font-weight: bold;\n  }\n  line-height: 24px;\n  letter-spacing: 0;\n\n  @if $colorContrast {\n    opacity: 0.87;\n  }\n}\n\n@mixin typo-body-1($colorContrast: false, $usePreferred: false) {\n  @include typo-preferred-font($usePreferred);\n  font-size: 14px;\n  font-weight: 400;\n  line-height: 24px;\n  letter-spacing: 0;\n\n  @if $colorContrast {\n    opacity: 0.87;\n  }\n}\n\n@mixin typo-caption($colorContrast: false, $usePreferred: false) {\n  @include typo-preferred-font($usePreferred);\n  font-size: 12px;\n  font-weight: 400;\n  line-height: 1;\n  letter-spacing: 0;\n\n  @if $colorContrast {\n    opacity: 0.54;\n  }\n}\n\n@mixin typo-blockquote($colorContrast: false, $usePreferred: true) {\n  @include typo-preferred-font($usePreferred);\n  position: relative;\n  font-size: 24px;\n  font-weight: 300;\n  font-style: italic;\n  line-height: 1.35;\n  letter-spacing: 0.08em;\n\n  &:before {\n    position: absolute;\n    left: -0.5em;\n    content: '“';\n  }\n\n  &:after {\n    content: '”';\n    margin-left: -0.05em;\n  }\n\n  @if $colorContrast {\n    opacity: 0.54;\n  }\n}\n\n@mixin typo-menu($colorContrast: false, $usePreferred: true) {\n  @include typo-preferred-font($usePreferred);\n  font-size: 14px;\n  font-weight: 500;\n  line-height: 1;\n  letter-spacing: 0;\n\n  @if $colorContrast {\n    opacity: 0.87;\n  }\n}\n\n@mixin typo-button($colorContrast: false, $usePreferred: true) {\n  @include typo-preferred-font($usePreferred);\n  font-size: 14px;\n  font-weight: 500;\n  text-transform: uppercase;\n  line-height: 1;\n  letter-spacing: 0;\n\n  @if $colorContrast {\n    opacity: 0.87;\n  }\n}\n\n@mixin typo-icon() {\n  font-family: 'Material Icons';\n  font-weight: normal;\n  font-style: normal;\n  font-size: 24px;\n  line-height: 1;\n  letter-spacing: normal;\n  text-transform: none;\n  display: inline-block;\n  word-wrap: normal;\n  font-feature-settings: 'liga';\n  -webkit-font-feature-settings: 'liga';\n  -webkit-font-smoothing: antialiased;\n}\n\n/* Shadows */\n\n// Focus shadow mixin.\n@mixin focus-shadow() {\n  box-shadow: 0 0 8px rgba(0,0,0,.18),0 8px 16px rgba(0,0,0,.36);\n}\n\n@mixin shadow-2dp() {\n  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, $shadow-key-penumbra-opacity),\n              0 3px 1px -2px rgba(0, 0, 0, $shadow-key-umbra-opacity),\n              0 1px 5px 0 rgba(0, 0, 0, $shadow-ambient-shadow-opacity);\n}\n@mixin shadow-3dp() {\n  box-shadow: 0 3px 4px 0 rgba(0, 0, 0, $shadow-key-penumbra-opacity),\n              0 3px 3px -2px rgba(0, 0, 0, $shadow-key-umbra-opacity),\n              0 1px 8px 0 rgba(0, 0, 0, $shadow-ambient-shadow-opacity);\n}\n@mixin shadow-4dp() {\n  box-shadow: 0 4px 5px 0 rgba(0, 0, 0, $shadow-key-penumbra-opacity),\n              0 1px 10px 0 rgba(0, 0, 0, $shadow-ambient-shadow-opacity),\n              0 2px 4px -1px rgba(0, 0, 0, $shadow-key-umbra-opacity);\n}\n@mixin shadow-6dp() {\n  box-shadow: 0 6px 10px 0 rgba(0, 0, 0, $shadow-key-penumbra-opacity),\n              0 1px 18px 0 rgba(0, 0, 0, $shadow-ambient-shadow-opacity),\n              0 3px 5px -1px rgba(0, 0, 0, $shadow-key-umbra-opacity);\n}\n@mixin shadow-8dp() {\n  box-shadow: 0 8px 10px 1px rgba(0, 0, 0, $shadow-key-penumbra-opacity),\n              0 3px 14px 2px rgba(0, 0, 0, $shadow-ambient-shadow-opacity),\n              0 5px 5px -3px rgba(0, 0, 0, $shadow-key-umbra-opacity);\n}\n\n@mixin shadow-16dp() {\n  box-shadow: 0 16px 24px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity),\n              0  6px 30px 5px rgba(0, 0, 0, $shadow-ambient-shadow-opacity),\n              0  8px 10px -5px rgba(0, 0, 0, $shadow-key-umbra-opacity);\n}\n\n@mixin shadow-24dp() {\n  box-shadow: 0  9px 46px  8px rgba(0, 0, 0, $shadow-key-penumbra-opacity),\n              0 11px 15px -7px rgba(0, 0, 0, $shadow-ambient-shadow-opacity),\n              0 24px 38px  3px rgba(0, 0, 0, $shadow-key-umbra-opacity);\n}\n\n/* Animations */\n\n@mixin material-animation-fast-out-slow-in($duration:0.2s) {\n  transition-duration: $duration;\n  transition-timing-function: $animation-curve-fast-out-slow-in;\n}\n\n@mixin material-animation-linear-out-slow-in($duration:0.2s) {\n  transition-duration: $duration;\n  transition-timing-function: $animation-curve-linear-out-slow-in;\n}\n\n@mixin material-animation-fast-out-linear-in($duration:0.2s) {\n  transition-duration: $duration;\n  transition-timing-function: $animation-curve-fast-out-linear-in;\n}\n\n@mixin material-animation-default($duration:0.2s) {\n  transition-duration: $duration;\n  transition-timing-function: $animation-curve-default;\n}\n\n/* Dialog */\n\n@mixin dialog-width($units:5) {\n  @if(type_of($units) != 'number') {\n    @error \"The unit given to dialog-width should be a number.\";\n  }\n  // 56dp is the base unit width for Dialogs.\n  // With 5 units being the number of units for a mobile device.\n  // https://goo.gl/sK2O5o\n  width: $units * 56px;\n}\n"
  },
  {
    "path": "src/_variables.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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    $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n * -----Dialog\n * -----Snackbar\n * -----Tooltip\n * -----Chip\n *\n * Even though all variables have the `!default` directive, most of them\n * should not be changed as they are dependent on one another. This can cause\n * visual distortions (like alignment issues) that are hard to track down\n * and fix.\n */\n\n\n/* ==========  TYPOGRAPHY  ========== */\n\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n   page loading. For important text, such as the body, we want it to load\n   immediately and not wait for the web font load, whereas for other sections,\n   such as headers and titles, we're OK with things taking a bit longer to load.\n   We do have some optional classes and parameters in the mixins, in case you\n   definitely want to make sure you're using the preferred font and don't mind\n   the performance hit.\n   We should be able to improve on this once CSS Font Loading L3 becomes more\n   widely available.\n*/\n$preferred_font: 'Roboto', 'Helvetica', 'Arial', sans-serif !default;\n$performance_font: 'Helvetica', 'Arial', sans-serif !default;\n\n/* ==========  COLORS  ========== */\n\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n\n@import \"color-definitions\";\n@import \"functions\";\n\n/* ==========  IMAGES  ========== */\n$image_path: '/images' !default;\n\n/* ==========  Color & Themes  ========== */\n\n// Define whether individual color palette items should have classes created.\n// Setting this to true will remove individual color classes for each color in the palettes.\n// To improve overall performance (assuming they aren't used) by:\n// * Saving server bandwidth sending the extra classes\n// * Save client computation against the classes\n// it is RECOMMENDED you set this to true.\n$trim-color-classes: false !default;\n\n// Use color primarily for emphasis. Choose colors that fit with\n// your brand and provide good contrast between visual components.\n$color-primary: $palette-indigo-500 !default;\n$color-primary-dark: $palette-indigo-700 !default;\n$color-accent: $palette-pink-A200 !default;\n\n// Our primary is dark, so use $color-dark-contrast for overlaid text.\n$color-primary-contrast: $color-dark-contrast !default;\n// Our accent is dark, so use $color-dark-contrast for overlaid text.\n$color-accent-contrast: $color-dark-contrast !default;\n\n// Replace all colors with placeholders if we're generating a template.\n@if $styleguide-generate-template == true {\n  $color-primary: '$color-primary';\n  $color-primary-dark: '$color-primary-dark';\n  $color-accent: '$color-accent';\n  $color-primary-contrast: '$color-primary-contrast';\n  $color-accent-contrast: '$color-accent-contrast';\n}\n\n/* ==========  Typography  ========== */\n\n// We use the following default color styles: text-color-primary and\n// text-color-secondary. For light themes, use text-color-primary-inverse\n// and text-color-secondary-inverse.\n\n$text-color-primary: unquote(\"rgba(#{$color-black}, 0.87)\") !default;\n$text-link-color: unquote(\"rgb(#{$color-accent})\") !default;\n\n// Define whether to target elements directly for typographic enhancements.\n// Turning this off means you need to use mdl-* classes more often.\n// Other components may also fail to adhere to MD without these rules.\n// It is strongly recommended you leave this as true.\n\n$target-elements-directly: true !default;\n\n/* ==========  Components  ========== */\n\n/* ==========  Standard Buttons  ========== */\n\n// Default button colors.\n$button-primary-color: unquote(\"rgba(#{$palette-grey-500}, 0.20)\") !default;\n$button-secondary-color: unquote(\"rgb(#{$color-black})\") !default;\n$button-hover-color: $button-primary-color !default;\n$button-active-color: unquote(\"rgba(#{$palette-grey-500}, 0.40)\") !default;\n$button-focus-color: unquote(\"rgba(#{$color-black}, 0.12)\") !default;\n\n// Colored button colors.\n$button-primary-color-alt: unquote(\"rgb(#{$color-primary})\") !default;\n$button-secondary-color-alt: unquote(\"rgb(#{$color-primary-contrast})\") !default;\n$button-hover-color-alt: unquote(\"rgb(#{$color-primary})\") !default;\n$button-active-color-alt: unquote(\"rgb(#{$color-primary})\") !default;\n$button-focus-color-alt: $button-focus-color !default;\n\n// Ripple color for colored raised buttons.\n$button-ripple-color-alt: unquote(\"rgb(#{$color-primary-contrast})\") !default;\n\n// Disabled button colors.\n$button-primary-color-disabled: unquote(\"rgba(#{$color-black}, 0.12)\") !default;\n$button-secondary-color-disabled: unquote(\"rgba(#{$color-black}, 0.26)\") !default;\n\n// FAB colors and sizes.\n$button-fab-color-alt: unquote(\"rgb(#{$color-accent})\") !default;\n$button-fab-hover-color-alt: unquote(\"rgb(#{$color-accent})\") !default;\n$button-fab-active-color-alt: unquote(\"rgb(#{$color-accent})\") !default;\n$button-fab-text-color-alt: unquote(\"rgb(#{$color-accent-contrast})\") !default;\n$button-fab-ripple-color-alt: unquote(\"rgb(#{$color-accent-contrast})\") !default;\n\n// Icon button colors and sizes.\n$button-icon-color: unquote(\"rgb(#{$palette-grey-700})\") !default;\n$button-icon-focus-color: $button-focus-color !default;\n\n/* ==========  Icon Toggles  ========== */\n\n$icon-toggle-color: unquote(\"rgb(#{$palette-grey-700})\") !default;\n$icon-toggle-focus-color: $button-focus-color !default;\n$icon-toggle-checked-color: unquote(\"rgb(#{$color-primary})\") !default;\n$icon-toggle-checked-focus-color: unquote(\"rgba(#{$color-primary}, 0.26)\") !default;\n$icon-toggle-disabled-color: unquote(\"rgba(#{$color-black}, 0.26)\") !default;\n\n/* ==========  Radio Buttons  ========== */\n\n$radio-color: unquote(\"rgb(#{$color-primary})\") !default;\n$radio-off-color: unquote(\"rgba(#{$color-black}, 0.54)\") !default;\n$radio-disabled-color: unquote(\"rgba(#{$color-black}, 0.26)\") !default;\n\n/* ==========  Ripple effect  ========== */\n\n$ripple-bg-color: unquote(\"rgb(#{$color-light-contrast})\") !default;\n\n/* ==========  Layout  ========== */\n\n$layout-nav-color: unquote(\"rgb(#{$palette-grey-300})\") !default;\n\n// Drawer\n$layout-drawer-bg-color: unquote(\"rgb(#{$palette-grey-50})\") !default;\n$layout-drawer-border-color: unquote(\"rgb(#{$palette-grey-300})\") !default;\n$layout-text-color: unquote(\"rgb(#{$palette-grey-800})\") !default;\n$layout-drawer-navigation-color: #757575 !default;\n$layout-drawer-navigation-link-active-background: unquote(\"rgb(#{$palette-grey-300})\") !default;\n$layout-drawer-navigation-link-active-color: unquote(\"rgb(#{$color-light-contrast})\") !default;\n\n// Header\n$layout-header-bg-color: unquote(\"rgb(#{$color-primary})\") !default;\n$layout-header-text-color: unquote(\"rgb(#{$color-primary-contrast})\") !default;\n$layout-header-nav-hover-color: unquote(\"rgba(#{$palette-grey-700}, 0.6)\") !default;\n$layout-header-tab-text-color: unquote(\"rgba(#{$color-primary-contrast}, 0.6)\") !default;\n\n// Tabs\n$layout-header-tab-highlight: unquote(\"rgb(#{$color-accent})\") !default;\n\n/* ==========  Content Tabs  ========== */\n\n$tab-highlight-color: unquote(\"rgb(#{$color-primary})\") !default;\n$tab-text-color: unquote(\"rgba(#{$color-black}, 0.54)\") !default;\n$tab-active-text-color: unquote(\"rgba(#{$color-black}, 0.87)\") !default;\n$tab-border-color: unquote(\"rgb(#{$palette-grey-300})\") !default;\n\n/* ==========  Checkboxes  ========== */\n\n$checkbox-color: unquote(\"rgb(#{$color-primary})\") !default;\n$checkbox-off-color: unquote(\"rgba(#{$color-black}, 0.54)\") !default;\n$checkbox-disabled-color: unquote(\"rgba(#{$color-black}, 0.26)\") !default;\n$checkbox-focus-color: unquote(\"rgba(#{$color-primary}, 0.26)\") !default;\n$checkbox-image-path: $image_path;\n\n/* ==========  Switches  ========== */\n\n$switch-color: unquote(\"rgb(#{$color-primary})\") !default;\n$switch-faded-color: unquote(\"rgba(#{$color-primary}, 0.26)\") !default;\n$switch-thumb-color: $switch-color !default;\n$switch-track-color: unquote(\"rgba(#{$color-primary}, 0.5)\") !default;\n\n$switch-off-thumb-color: unquote(\"rgb(#{$palette-grey-50})\") !default;\n$switch-off-track-color: unquote(\"rgba(#{$color-black}, 0.26)\") !default;\n$switch-disabled-thumb-color: unquote(\"rgb(#{$palette-grey-400})\") !default;\n$switch-disabled-track-color: unquote(\"rgba(#{$color-black}, 0.12)\") !default;\n\n/* ==========  Spinner  ========== */\n\n$spinner-color-1: unquote(\"rgb(#{$palette-blue-400})\") !default;\n$spinner-color-2: unquote(\"rgb(#{$palette-red-500})\") !default;\n$spinner-color-3: unquote(\"rgb(#{$palette-yellow-600})\") !default;\n$spinner-color-4: unquote(\"rgb(#{$palette-green-500})\") !default;\n\n$spinner-single-color: unquote(\"rgb(#{$color-primary})\") !default;\n\n/* ==========  Text fields  ========== */\n\n$input-text-background-color: transparent !default;\n$input-text-label-color: unquote(\"rgba(#{$color-black}, 0.26)\") !default;\n$input-text-bottom-border-color: unquote(\"rgba(#{$color-black}, 0.12)\") !default;\n$input-text-highlight-color: unquote(\"rgb(#{$color-primary})\") !default;\n$input-text-disabled-color: $input-text-bottom-border-color !default;\n$input-text-disabled-text-color: $input-text-label-color !default;\n$input-text-error-color: unquote(\"rgb(#{$palette-red-A700})\") !default;\n\n/* ==========  Card  ========== */\n\n$card-background-color: unquote(\"rgb(#{$color-white})\") !default;\n$card-text-color: unquote(\"rgb(#{$color-black})\") !default;\n$card-image-placeholder-color: unquote(\"rgb(#{$color-accent})\") !default;\n$card-supporting-text-text-color: unquote(\"rgba(#{$color-black}, 0.54)\") !default;\n$card-border-color: rgba(0,0,0,0.1) !default;\n$card-subtitle-color: unquote(\"rgba(#{$color-black}, 0.54)\") !default;\n\n/* ==========  Sliders ========== */\n\n$range-bg-color: unquote(\"rgba(#{$color-black}, 0.26)\") !default;\n$range-color: unquote(\"rgb(#{$color-primary})\") !default;\n$range-faded-color: unquote(\"rgba(#{$color-primary}, 0.26)\") !default;\n$range-bg-focus-color: unquote(\"rgba(#{$color-black}, 0.12)\") !default;\n\n/* ========== Progress ========== */\n$progress-main-color: unquote(\"rgb(#{$color-primary})\") !default;\n$progress-secondary-color: unquote(\"rgba(#{$color-primary-contrast}, 0.7)\") !default;\n$progress-fallback-buffer-color: unquote(\"rgba(#{$color-primary-contrast}, 0.9)\") !default;\n$progress-image-path: $image_path;\n\n/* ==========  List ========== */\n\n$list-main-text-text-color: unquote(\"rgba(#{$color-black}, 0.87)\") !default;\n$list-supporting-text-text-color: unquote(\"rgba(#{$color-black}, 0.54)\") !default;\n$list-icon-color: unquote(\"rgb(#{$palette-grey-600})\") !default;\n$list-avatar-color: white !default;\n\n/* ==========  Item ========== */\n\n// Default Item Colors\n$default-item-text-color: unquote(\"rgba(#{$color-black}, 0.87)\") !default;\n$default-item-outline-color: unquote(\"rgb(#{$palette-grey-400})\") !default;\n$default-item-hover-bg-color: unquote(\"rgb(#{$palette-grey-200})\") !default;\n$default-item-focus-bg-color: unquote(\"rgb(#{$palette-grey-200})\") !default;\n$default-item-active-bg-color: unquote(\"rgb(#{$palette-grey-300})\") !default;\n$default-item-divider-color: unquote(\"rgba(#{$color-black}, 0.12)\") !default;\n\n// Disabled Button Colors\n$disabled-item-text-color: unquote(\"rgb(#{$palette-grey-400})\") !default;\n\n/* ==========  Dropdown menu ========== */\n\n$default-dropdown-bg-color: unquote(\"rgb(#{$color-white})\") !default;\n\n/* ==========  Tooltips  ========== */\n\n$tooltip-text-color: unquote(\"rgb(#{$color-white})\") !default;\n$tooltip-background-color: unquote(\"rgba(#{$palette-grey-700}, 0.9)\") !default;\n\n/* ==========  Footer  ========== */\n\n$footer-bg-color: unquote(\"rgb(#{$palette-grey-800})\") !default;\n$footer-color: unquote(\"rgb(#{$palette-grey-500})\") !default;\n$footer-heading-color: unquote(\"rgb(#{$palette-grey-300})\") !default;\n$footer-button-fill-color: $footer-color !default;\n$footer-underline-color: $footer-color !default;\n\n\n/* TEXTFIELD */\n\n$input-text-font-size: 16px !default;\n$input-text-width: 100% !default;\n$input-text-padding: 4px !default;\n$input-text-vertical-spacing: 20px !default;\n\n$input-text-button-size: 32px !default;\n$input-text-floating-label-fontsize: 12px !default;\n$input-text-expandable-icon-top: 16px !default;\n\n\n/* SWITCH */\n\n$switch-label-font-size: 16px !default;\n$switch-label-height: 24px !default;\n$switch-track-height: 14px !default;\n$switch-track-length: 36px !default;\n$switch-thumb-size: 20px !default;\n$switch-track-top: ($switch-label-height - $switch-track-height) / 2 !default;\n$switch-thumb-top: ($switch-label-height - $switch-thumb-size) / 2 !default;\n$switch-ripple-size: $switch-label-height * 2 !default;\n$switch-helper-size: 8px !default;\n\n/* SPINNER */\n\n$spinner-size: 28px !default;\n$spinner-stroke-width: 3px !default;\n\n// Amount of circle the arc takes up.\n$spinner-arc-size: 270deg !default;\n// Time it takes to expand and contract arc.\n$spinner-arc-time: 1333ms !default;\n// How much the start location of the arc should rotate each time.\n$spinner-arc-start-rot: 216deg !default;\n\n$spinner-duration: 360 * $spinner-arc-time / (\n    strip-units($spinner-arc-start-rot + (360deg - $spinner-arc-size)));\n\n\n/* RADIO */\n\n$radio-label-font-size: 16px !default;\n$radio-label-height: 24px !default;\n$radio-button-size: 16px !default;\n$radio-inner-margin: $radio-button-size / 4;\n$radio-padding: 8px !default;\n$radio-top-offset: ($radio-label-height - $radio-button-size) / 2;\n$radio-ripple-size: 42px !default;\n\n\n/* MENU */\n\n$menu-expand-duration: 0.3s !default;\n$menu-fade-duration: 0.2s !default;\n\n/* LIST */\n\n$list-border: 8px !default;\n$list-min-height: 48px !default;\n$list-min-padding: 16px !default;\n$list-bottom-padding: 20px !default;\n$list-avatar-text-left-distance: 72px !default;\n$list-icon-text-left-distance: 72px !default;\n\n$list-avatar-size: 40px !default;\n$list-icon-size: 24px !default;\n\n$list-two-line-height: 72px !default;\n$list-three-line-height: 88px !default;\n\n/* LAYOUT */\n\n$layout-drawer-narrow: 240px !default;\n$layout-drawer-wide: 456px !default;\n$layout-drawer-width: $layout-drawer-narrow !default;\n\n$layout-header-icon-size: 32px !default;\n$layout-screen-size-threshold: 1024px !default;\n$layout-header-icon-margin: 24px !default;\n$layout-drawer-button-mobile-size: 32px !default;\n$layout-drawer-button-desktop-size: 48px !default;\n\n$layout-header-mobile-row-height: 56px !default;\n$layout-mobile-header-height: $layout-header-mobile-row-height;\n$layout-header-desktop-row-height: 64px !default;\n$layout-desktop-header-height: $layout-header-desktop-row-height;\n\n$layout-header-desktop-baseline: 80px !default;\n$layout-header-mobile-baseline: 72px !default;\n$layout-header-mobile-indent: 16px !default;\n$layout-header-desktop-indent: 40px !default;\n\n$layout-tab-font-size: 14px !default;\n$layout-tab-bar-height: 48px !default;\n$layout-tab-mobile-padding: 12px !default;\n$layout-tab-desktop-padding: 24px !default;\n$layout-tab-highlight-thickness: 2px !default;\n\n\n/* ICON TOGGLE */\n\n$icon-toggle-size: 32px !default;\n$icon-toggle-font-size: 24px !default;\n$icon-toggle-ripple-size: 36px !default;\n\n/* FOOTER */\n\n/*mega-footer*/\n$footer-min-padding: 16px !default;\n$footer-padding-sides: 40px !default;\n$footer-heading-font-size: 14px !default;\n$footer-heading-line-height: (1.7 * $footer-heading-font-size) !default;\n$footer-btn-size: 36px  !default;\n\n/*mini-footer*/\n$padding: 16px !default;\n$footer-heading-font-size: 24px !default;\n$footer-heading-line-height: (1.5 * $footer-heading-font-size) !default;\n$footer-btn-size: 36px !default;\n\n/* CHECKBOX */\n\n$checkbox-label-font-size: 16px !default;\n$checkbox-label-height: 24px !default;\n$checkbox-button-size: 16px !default;\n$checkbox-inner-margin: 2px !default;\n$checkbox-padding: 8px !default;\n$checkbox-top-offset:\n($checkbox-label-height - $checkbox-button-size - $checkbox-inner-margin) / 2;\n$checkbox-ripple-size: $checkbox-label-height * 1.5;\n\n/* CARD */\n\n/* Card dimensions */\n$card-width: 330px !default;\n$card-height: 200px !default;\n$card-font-size: 16px !default;\n$card-title-font-size: 24px !default;\n$card-subtitle-font-size: 14px !default;\n$card-horizontal-padding: 16px !default;\n$card-vertical-padding: 16px !default;\n\n$card-title-perspective-origin-x: 165px !default;\n$card-title-perspective-origin-y: 56px !default;\n\n$card-title-transform-origin-x: 165px !default;\n$card-title-transform-origin-y: 56px !default;\n\n$card-title-text-transform-origin-x: 149px !default;\n$card-title-text-transform-origin-y: 48px !default;\n\n$card-supporting-text-font-size: 1rem !default;\n$card-supporting-text-line-height: 18px !default;\n\n$card-actions-font-size: 16px !default;\n\n$card-title-text-font-weight: 300 !default;\n$card-z-index: 1 !default;\n\n/* Cover image */\n$card-cover-image-height: 186px !default;\n$card-background-image-url: '' !default;\n\n\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n$button-min-width: 64px !default;\n$button-height: 36px !default;\n$button-padding: 16px !default;\n$button-margin: 4px !default;\n$button-border-radius: 2px !default;\n\n$button-fab-size: 56px !default;\n$button-fab-size-mini: 40px !default;\n$button-fab-font-size: 24px !default;\n\n$button-icon-size: 32px !default;\n$button-icon-size-mini: 24px !default;\n\n\n/* ANIMATION */\n$animation-curve-fast-out-slow-in: cubic-bezier(0.4, 0, 0.2, 1) !default;\n$animation-curve-linear-out-slow-in: cubic-bezier(0, 0, 0.2, 1) !default;\n$animation-curve-fast-out-linear-in: cubic-bezier(0.4, 0, 1, 1) !default;\n\n$animation-curve-default: $animation-curve-fast-out-slow-in !default;\n\n\n/* PROGRESS */\n$bar-height: 4px !default;\n\n/* BADGE */\n$badge-font-size: 12px !default;\n$badge-color: unquote(\"rgb(#{$color-accent-contrast})\") !default;\n$badge-color-inverse: unquote(\"rgb(#{$color-accent})\") !default;\n$badge-background: unquote(\"rgb(#{$color-accent})\") !default;\n$badge-background-inverse: unquote(\"rgba(#{$color-accent-contrast},0.2)\") !default;\n$badge-size : 22px !default;\n$badge-padding: 2px !default;\n$badge-overlap: 12px !default;\n\n/* SHADOWS */\n\n$shadow-key-umbra-opacity: 0.2 !default;\n$shadow-key-penumbra-opacity: 0.14 !default;\n$shadow-ambient-shadow-opacity: 0.12 !default;\n\n/* GRID */\n\n$grid-desktop-columns: 12 !default;\n$grid-desktop-gutter: 16px !default;\n$grid-desktop-margin: 16px !default;\n\n$grid-desktop-breakpoint: 840px !default;\n\n$grid-tablet-columns: 8 !default;\n$grid-tablet-gutter: $grid-desktop-gutter !default;\n$grid-tablet-margin: $grid-desktop-margin !default;\n\n$grid-tablet-breakpoint: 480px !default;\n\n$grid-phone-columns: 4 !default;\n$grid-phone-gutter: $grid-desktop-gutter !default;\n$grid-phone-margin: $grid-desktop-margin !default;\n\n$grid-cell-default-columns: $grid-phone-columns !default;\n$grid-max-columns: $grid-desktop-columns !default;\n\n/* DATA TABLE */\n\n$data-table-font-size: 13px !default;\n$data-table-header-font-size: 12px !default;\n$data-table-header-sort-icon-size: 16px !default;\n\n$data-table-header-color: rgba(#000, 0.54) !default;\n$data-table-header-sorted-color: rgba(#000, 0.87) !default;\n$data-table-header-sorted-icon-hover-color: rgba(#000, 0.26) !default;\n$data-table-divider-color: rgba(#000, 0.12) !default;\n\n$data-table-hover-color: #eeeeee !default;\n$data-table-selection-color: #e0e0e0 !default;\n\n$data-table-dividers: 1px solid $data-table-divider-color !default;\n\n$data-table-row-height: 48px !default;\n$data-table-last-row-height: 56px !default;\n$data-table-header-height: 56px !default;\n\n$data-table-column-spacing: 36px !default;\n$data-table-column-padding: $data-table-column-spacing / 2;\n\n$data-table-card-header-height: 64px !default;\n$data-table-card-title-top: 20px !default;\n$data-table-card-padding: 24px !default;\n$data-table-button-padding-right: 16px !default;\n$data-table-cell-top: $data-table-card-padding / 2;\n\n/* DIALOG */\n$dialog-content-color: $card-supporting-text-text-color;\n\n/* SNACKBAR */\n\n// Hard coded since the color is not present in any palette.\n$snackbar-background-color: #323232 !default;\n$snackbar-tablet-breakpoint: $grid-tablet-breakpoint;\n$snackbar-action-color: unquote(\"rgb(#{$color-accent})\") !default;\n\n/* TOOLTIP */\n$tooltip-font-size: 10px !default;\n$tooltip-font-size-large: 14px !default;\n\n/* CHIP */\n$chip-bg-color: rgb(222, 222, 222) !default;\n$chip-bg-active-color: rgb(214, 214, 214) !default;\n$chip-height: 32px !default;\n$chip-font-size: 13px !default; \n"
  },
  {
    "path": "src/animation/_animation.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n\n\n.mdl-animation--default {\n  transition-timing-function: $animation-curve-default;\n}\n\n.mdl-animation--fast-out-slow-in {\n  transition-timing-function: $animation-curve-fast-out-slow-in;\n}\n\n.mdl-animation--linear-out-slow-in {\n  transition-timing-function: $animation-curve-linear-out-slow-in;\n}\n\n.mdl-animation--fast-out-linear-in {\n  transition-timing-function: $animation-curve-fast-out-linear-in;\n}\n"
  },
  {
    "path": "src/animation/demo.css",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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.demo-animation {\n  height: 200px;\n  width: 300px;\n  padding: 0;\n  background: none;\n}\n\n.demo-animation__container {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  width: 100%;\n  height: 100%;\n  text-align: center;\n  background-color: #ddd;\n}\n\n.demo-animation__container-foreground {\n  width: 100%;\n  height: 100%;\n  position: absolute;\n  left: 0;\n  top: 0;\n  z-index: 100;\n}\n\n.demo-animation__container-background {\n  line-height: 200px;\n  z-index: -100;\n}\n\n/* Outside the view, on the left.\n   We leave the view when moving to this state, so we use fast-out-linear-in. */\n.demo-animation--position-0 {\n  left: -102px;\n}\n\n/* Left side.\n   We enter the view when moving to this state, so we use linear-out-slow-in. */\n.demo-animation--position-1 {\n  left: 20px;\n}\n\n/* Right side.\n   We're always visible when moving to this state, so we use default. */\n.demo-animation--position-2 {\n  left: 180px;\n}\n\n/* Outside the view, on the right.\n   We leave the view when moving to this state, so we use fast-out-linear-in. */\n.demo-animation--position-3 {\n  left: 302px;\n}\n\n/* Right side.\n   We enter the view when moving to this state, so we use linear-out-slow-in. */\n.demo-animation--position-4 {\n  left: 180px;\n}\n\n/* Left side.\n   We're always visible when moving to this state, so we use default. */\n.demo-animation--position-5 {\n  left: 20px;\n}\n\n.demo-animation__movable {\n  background-color: red;\n  border-radius: 2px;\n  display: block;\n  height: 100px;\n  width: 100px;\n  position: absolute;\n  top: 50px;\n  transition-property: left;\n  transition-duration: 0.2s;\n}\n"
  },
  {
    "path": "src/animation/demo.html",
    "content": "    <div class=\"demo-preview-block demo-animation demo-js-animation\">\n      <div class=\"demo-animation__container\">\n        <div class=\"demo-animation__container-background\">Click me to animate</div>\n        <div class=\"demo-animation__container-foreground\"></div>\n        <div class=\"demo-animation__movable demo-animation--position-0 mdl-shadow--2dp\"></div>\n      </div>\n    </div>\n"
  },
  {
    "path": "src/animation/demo.js",
    "content": "/**\n * @license\n * Copyright 2015 Google Inc. 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 *      http://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 * Class constructor for Animation MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n * @param {HTMLElement} element The element that will be upgraded.\n */\nfunction DemoAnimation(element) {\n  'use strict';\n\n  this.element_ = element;\n  this.position_ = this.Constant_.STARTING_POSITION;\n  this.movable_ = this.element_.querySelector('.' + this.CssClasses_.MOVABLE);\n  // Initialize instance.\n  this.init();\n}\n\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n * @enum {string}\n * @private\n */\nDemoAnimation.prototype.CssClasses_ = {\n  MOVABLE: 'demo-animation__movable',\n  POSITION_PREFIX: 'demo-animation--position-',\n  FAST_OUT_SLOW_IN: 'mdl-animation--fast-out-slow-in',\n  LINEAR_OUT_SLOW_IN: 'mdl-animation--linear-out-slow-in',\n  FAST_OUT_LINEAR_IN: 'mdl-animation--fast-out-linear-in'\n};\n\n/**\n * Store constants in one place so they can be updated easily.\n * @enum {string | number}\n * @private\n */\nDemoAnimation.prototype.Constant_ = {\n  STARTING_POSITION: 0,\n  // Which animation to use for which state. Check demo.css for an explanation.\n  ANIMATIONS: [\n    DemoAnimation.prototype.CssClasses_.FAST_OUT_LINEAR_IN,\n    DemoAnimation.prototype.CssClasses_.LINEAR_OUT_SLOW_IN,\n    DemoAnimation.prototype.CssClasses_.FAST_OUT_SLOW_IN,\n    DemoAnimation.prototype.CssClasses_.FAST_OUT_LINEAR_IN,\n    DemoAnimation.prototype.CssClasses_.LINEAR_OUT_SLOW_IN,\n    DemoAnimation.prototype.CssClasses_.FAST_OUT_SLOW_IN\n  ]\n};\n\n/**\n * Handle click of element.\n * @param {Event} event The event that fired.\n * @private\n */\nDemoAnimation.prototype.handleClick_ = function(event) {\n  'use strict';\n\n  this.movable_.classList.remove(this.CssClasses_.POSITION_PREFIX +\n      this.position_);\n  this.movable_.classList.remove(this.Constant_.ANIMATIONS[this.position_]);\n\n  this.position_++;\n  if (this.position_ > 5) {\n    this.position_ = 0;\n  }\n\n  this.movable_.classList.add(this.Constant_.ANIMATIONS[this.position_]);\n  this.movable_.classList.add(this.CssClasses_.POSITION_PREFIX +\n      this.position_);\n};\n\n/**\n * Initialize element.\n */\nDemoAnimation.prototype.init = function() {\n  'use strict';\n\n  if (this.element_) {\n    if (!this.movable_) {\n      console.error('Was expecting to find an element with class name ' +\n          this.CssClasses_.MOVABLE + ' inside of: ', this.element_);\n      return;\n    }\n\n    this.element_.addEventListener('click', this.handleClick_.bind(this));\n  }\n};\n\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n  constructor: DemoAnimation,\n  classAsString: 'DemoAnimation',\n  cssClass: 'demo-js-animation'\n});\n"
  },
  {
    "path": "src/badge/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **badge** component is an onscreen notification element. A badge consists of a small circle, typically containing a number or other characters, that appears in proximity to another object. A badge can be both a notifier that there are additional items associated with an object and an indicator of how many items there are.\n\nYou can use a badge to unobtrusively draw the user's attention to items they might not otherwise notice, or to emphasize that items may need their attention. For example:\n\n* A \"New messages\" notification might be followed by a badge containing the number of unread messages.\n* A \"You have unpurchased items in your shopping cart\" reminder might include a badge showing the number of items in the cart.\n* A \"Join the discussion!\" button might have an accompanying badge indicating the number of users currently participating in the discussion.\n\nA badge is almost always positioned near a link so that the user has a convenient way to access the additional information indicated by the badge. However, depending on the intent, the badge itself may or may not be part of the link.\n\nBadges are a new feature in user interfaces, and provide users with a visual clue to help them discover additional relevant content. Their design and use is therefore an important factor in the overall user experience.\n\n### To include an MDL **badge** component:\n\n&nbsp;1. Code  an `<a>` (anchor/link) or a `<span>` element. Include any desired attributes and content.\n```html\n<a href=\"#\">This link has a badge.</a>\n```\n&nbsp;2. Add one or more MDL classes, separated by spaces, to the element using the `class` attribute.\n```html\n<a href=\"#\" class=\"mdl-badge\">This link has a badge.</a>\n```\n&nbsp;3. Add a `data-badge` attribute and quoted string value for the badge.\n```html\n<a href=\"#\" class=\"mdl-badge\" data-badge=\"5\">This link has a badge.</a>\n```\n\nThe badge component is ready for use.\n\n>**Note:** Because of the badge component's small size, the `data-badge` value should typically contain one to three characters. More than three characters will not cause an error, but some characters may fall outside the badge and thus be difficult or impossible to see. The value of the `data-badge` attribute is centered in the badge.\n\n#### Examples\n\nA badge inside a link.\n```html\n<a href=\"#\" class=\"mdl-badge\" data-badge=\"7\">This link contains a badge.</a>\n```\n\nA badge near, but not included in, a link.\n```html\n<a href=\"#\">This link is followed by a badge.</a>\n<span class=\"mdl-badge\" data-badge=\"12\"></span>\n```\n\nA badge inside a link with too many characters to fit inside the badge.\n```html\n<a href=\"#\" class=\"mdl-badge\" data-badge=\"123456789\">\nThis badge has too many characters.</a>\n```\n\nA badge inside a link with no badge background color.\n```html\n<a href=\"#\" class=\"mdl-badge mdl-badge--no-background\" data-badge=\"123\">\nThis badge has no background color.</a>\n```\n\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual enhancements to the badge. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-badge` | Defines badge as an MDL component | Required on span or link |\n| `mdl-badge--no-background` | Applies open-circle effect to badge | Optional |\n| `mdl-badge--overlap` | Make the badge overlap with its container | Optional |\n| `data-badge=\"value\"` | Assigns string value to badge | Not a class, but a separate attribute; required on span or link |\n"
  },
  {
    "path": "src/badge/_badge.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n\n.mdl-badge {\n  position : relative;\n  white-space: nowrap;\n  margin-right: ($badge-size + $badge-padding);\n\n  &:not([data-badge]) {\n    margin-right: auto;\n  }\n\n  &[data-badge]:after {\n    content: attr(data-badge);\n\n    display: flex;\n    flex-direction: row;\n    flex-wrap: wrap;\n    justify-content: center;\n    align-content: center;\n    align-items: center;\n\n    position: absolute;\n    top: -($badge-size / 2);\n    right: -($badge-size + $badge-padding);\n\n    .mdl-button & {\n      top: -10px;\n      right: -5px;\n    }\n\n    font-family: $preferred_font;\n    font-weight: 600;\n    font-size: $badge-font-size;\n    width: $badge-size;\n    height: $badge-size;\n    border-radius : 50%;\n\n    background: $badge-background;\n    color: $badge-color;\n  }\n\n  &.mdl-badge--no-background {\n    &[data-badge]:after {\n      color: $badge-color-inverse;\n      background: $badge-background-inverse;\n\n      box-shadow: 0 0 1px gray;\n    }\n  }\n  &.mdl-badge--overlap {\n    margin-right: ($badge-size - $badge-overlap);\n    &:after {\n      right: -($badge-size - $badge-overlap);\n    }\n  }\n}\n"
  },
  {
    "path": "src/badge/snippets/badge-on-icon-icon-demo.html",
    "content": "<style>\n.demo-badge__badge-on-icon-icon .mdl-badge {\n  color: rgba(0, 0, 0, 0.24);\n}\n.demo-badge__badge-on-icon-icon .mdl-badge.material-icons {\n  font-size: 32px;\n}\n</style>\n{% include \"badge-on-icon-icon.html\" %}\n"
  },
  {
    "path": "src/badge/snippets/badge-on-icon-icon.html",
    "content": "<!-- Icon badge on icon -->\n<div class=\"material-icons mdl-badge mdl-badge--overlap\" data-badge=\"♥\">account_box</div>\n"
  },
  {
    "path": "src/badge/snippets/badge-on-icon-text-demo.html",
    "content": "<style>\n.demo-badge__badge-on-icon-text .mdl-badge {\n  color: rgba(0, 0, 0, 0.24);\n}\n.demo-badge__badge-on-icon-text .mdl-badge.material-icons {\n  font-size: 32px;\n}\n</style>\n{% include \"badge-on-icon-text.html\" %}\n"
  },
  {
    "path": "src/badge/snippets/badge-on-icon-text.html",
    "content": "<!-- Number badge on icon -->\n<div class=\"material-icons mdl-badge mdl-badge--overlap\" data-badge=\"1\">account_box</div>\n"
  },
  {
    "path": "src/badge/snippets/badge-on-text-icon-demo.html",
    "content": "<style>\n.demo-badge__badge-on-text-icon .mdl-badge {\n  color: rgba(0, 0, 0, 0.24);\n}\n</style>\n{% include \"badge-on-text-icon.html\" %}\n"
  },
  {
    "path": "src/badge/snippets/badge-on-text-icon.html",
    "content": "<!-- Icon badge -->\n<span class=\"mdl-badge\" data-badge=\"♥\">Mood</span>\n"
  },
  {
    "path": "src/badge/snippets/badge-on-text-text-demo.html",
    "content": "<style>\n.demo-badge__badge-on-text-text .mdl-badge {\n  color: rgba(0, 0, 0, 0.24);\n}\n</style>\n\n{% include \"badge-on-text-text.html\" %}\n"
  },
  {
    "path": "src/badge/snippets/badge-on-text-text.html",
    "content": "<!-- Number badge -->\n<span class=\"mdl-badge\" data-badge=\"4\">Inbox</span>\n"
  },
  {
    "path": "src/button/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **button** component is an enhanced version of the standard HTML `<button>` element. A button consists of text and/or an image that clearly communicates what action will occur when the user clicks or touches it. The MDL button component provides various types of buttons, and allows you to add both display and click effects.\n\nButtons are a ubiquitous feature of most user interfaces, regardless of a site's content or function. Their design and use is therefore an important factor in the overall user experience. See the button component's [Material Design specifications page](http://www.google.com/design/spec/components/buttons.html) for details.\n\nThe available button display types are *flat* (default), *raised*, *fab*, *mini-fab*, and *icon*; any of these types may be plain (light gray) or *colored*, and may be initially or programmatically *disabled*. The *fab*, *mini-fab*, and *icon* button types typically use a small image as their caption rather than text.\n\n### To include an MDL **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 image as appropriate.\n```html\n<button>Save</button>\n```\n&nbsp;2. Add one or more MDL classes, separated by spaces, to the button using the `class` attribute.\n```html\n<button class=\"mdl-button mdl-js-button mdl-button--raised\">Save</button>\n```\n\nThe button component is ready for use.\n\n#### Examples\n\nA button with the \"raised\" effect.\n```html\n<button class=\"mdl-button mdl-js-button mdl-button--raised\">Save</button>\n```\n\nA button with the \"fab\" effect.\n```html\n<button class=\"mdl-button mdl-js-button mdl-button--fab\">OK</button>\n```\n\nA button with the \"icon\" and \"colored\" effects.\n```html\n<button class=\"mdl-button mdl-js-button mdl-button--icon mdl-button--colored\">?</button>\n```\n\n\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual and behavioral enhancements to the button. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-button` | Defines button as an MDL component | Required |\n| `mdl-js-button` | Assigns basic MDL behavior to button | Required |\n| (none) | Applies *flat* display effect to button (default) |  |\n| `mdl-button--raised` | Applies *raised* display effect | Mutually exclusive with *fab*, *mini-fab*, and *icon* |\n| `mdl-button--fab` | Applies *fab* (circular) display effect | Mutually exclusive with *raised*, *mini-fab*, and *icon* |\n| `mdl-button--mini-fab` | Applies *mini-fab* (small fab circular) display effect | Mutually exclusive with *raised*, *fab*, and *icon* |\n| `mdl-button--icon` | Applies *icon* (small plain circular) display effect | Mutually exclusive with *raised*, *fab*, and *mini-fab*  |\n| `mdl-button--colored` | Applies *colored* display effect (primary or accent color, depending on the type of button) | Colors are defined in `material.min.css` |\n| `mdl-button--primary` | Applies *primary* color display effect | Colors are defined in `material.min.css` |\n| `mdl-button--accent` | Applies *accent* color display effect | Colors are defined in `material.min.css` |\n| `mdl-js-ripple-effect` | Applies *ripple* click effect | 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=\"mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect\" disabled>Raised Ripples Disabled</button>`. Alternatively, the `mdl-button--disabled` class can be used to achieve the same style but it does not disable the functionality of the element.\n>This attribute may be added or removed programmatically via scripting.\n"
  },
  {
    "path": "src/button/_button.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n@import \"../mixins\";\n\n// The button component. Defaults to a flat button.\n.mdl-button {\n  background: transparent;\n  border: none;\n  border-radius: $button-border-radius;\n  color: $button-secondary-color;\n  position: relative;\n  height: $button-height;\n  margin: 0;\n  min-width: $button-min-width;\n  padding: 0 $button-padding;\n  display: inline-block;\n  @include typo-button();\n  overflow: hidden;\n  will-change: box-shadow;\n  transition: box-shadow 0.2s $animation-curve-fast-out-linear-in,\n              background-color 0.2s $animation-curve-default,\n              color 0.2s $animation-curve-default;\n  outline: none;\n  cursor: pointer;\n  text-decoration: none;\n  text-align: center;\n  line-height: $button-height;\n  vertical-align: middle;\n\n  &::-moz-focus-inner {\n    border: 0;\n  }\n\n  &:hover {\n    background-color: $button-hover-color;\n  }\n\n  &:focus:not(:active) {\n    background-color: $button-focus-color;\n  }\n\n  &:active {\n    background-color: $button-active-color;\n  }\n\n  &.mdl-button--colored {\n    color: $button-primary-color-alt;\n\n    &:focus:not(:active) {\n      background-color: $button-focus-color-alt;\n    }\n  }\n}\n\ninput.mdl-button[type=\"submit\"] {\n  -webkit-appearance:none;\n}\n\n  // Raised buttons\n  .mdl-button--raised {\n    background: $button-primary-color;\n    @include shadow-2dp();\n\n    &:active {\n      @include shadow-4dp();\n      background-color: $button-active-color;\n    }\n\n    &:focus:not(:active) {\n      @include focus-shadow();\n      background-color: $button-active-color;\n    }\n\n    &.mdl-button--colored {\n      background: $button-primary-color-alt;\n      color: $button-secondary-color-alt;\n\n      &:hover {\n        background-color: $button-hover-color-alt;\n      }\n\n      &:active {\n        background-color: $button-active-color-alt;\n      }\n\n      &:focus:not(:active) {\n        background-color: $button-active-color-alt;\n      }\n\n      & .mdl-ripple {\n        background: $button-ripple-color-alt;\n      }\n    }\n  }\n\n\n  // FABs\n  .mdl-button--fab {\n    border-radius: 50%;\n    font-size: $button-fab-font-size;\n    height: $button-fab-size;\n    margin: auto;\n    min-width: $button-fab-size;\n    width: $button-fab-size;\n    padding: 0;\n    overflow: hidden;\n    background: $button-primary-color;\n    box-shadow: 0 1px 1.5px 0 rgba(0,0,0,0.12), 0 1px 1px 0 rgba(0,0,0,0.24);\n    position: relative;\n    line-height: normal;\n\n    & .material-icons {\n      position: absolute;\n      top: 50%;\n      left: 50%;\n      transform: translate(- $button-fab-font-size / 2, - $button-fab-font-size / 2);\n      line-height: $button-fab-font-size;\n      width: $button-fab-font-size;\n    }\n\n    &.mdl-button--mini-fab {\n      height: $button-fab-size-mini;\n      min-width: $button-fab-size-mini;\n      width: $button-fab-size-mini;\n    }\n\n    & .mdl-button__ripple-container {\n      border-radius: 50%;\n      // Fixes clipping bug in Safari.\n      -webkit-mask-image: -webkit-radial-gradient(circle, white, black);\n    }\n\n    &:active {\n      @include shadow-4dp();\n      background-color: $button-active-color;\n    }\n\n    &:focus:not(:active) {\n      @include focus-shadow();\n      background-color: $button-active-color;\n    }\n\n    &.mdl-button--colored {\n      background: $button-fab-color-alt;\n      color: $button-fab-text-color-alt;\n\n      &:hover {\n        background-color: $button-fab-hover-color-alt;\n      }\n\n      &:focus:not(:active) {\n        background-color: $button-fab-active-color-alt;\n      }\n\n      &:active {\n        background-color: $button-fab-active-color-alt;\n      }\n\n      & .mdl-ripple {\n        background: $button-fab-ripple-color-alt;\n      }\n    }\n  }\n\n\n  // Icon buttons\n  .mdl-button--icon {\n    border-radius: 50%;\n    font-size: $button-fab-font-size;\n    height: $button-icon-size;\n    margin-left: 0;\n    margin-right: 0;\n    min-width: $button-icon-size;\n    width: $button-icon-size;\n    padding: 0;\n    overflow: hidden;\n    color: inherit;\n    line-height: normal;\n\n    & .material-icons {\n      position: absolute;\n      top: 50%;\n      left: 50%;\n      transform: translate(- $button-fab-font-size / 2, - $button-fab-font-size / 2);\n      line-height: $button-fab-font-size;\n      width: $button-fab-font-size;\n    }\n\n    &.mdl-button--mini-icon {\n      height: $button-icon-size-mini;\n      min-width: $button-icon-size-mini;\n      width: $button-icon-size-mini;\n\n      & .material-icons {\n        top: ($button-icon-size-mini - $button-fab-font-size) / 2;\n        left: ($button-icon-size-mini - $button-fab-font-size) / 2;\n      }\n    }\n\n    & .mdl-button__ripple-container {\n      border-radius: 50%;\n      // Fixes clipping bug in Safari.\n      -webkit-mask-image: -webkit-radial-gradient(circle, white, black);\n    }\n  }\n\n\n  // Ripples\n  .mdl-button__ripple-container {\n    display: block;\n    height: 100%;\n    left: 0px;\n    position: absolute;\n    top: 0px;\n    width: 100%;\n    z-index: 0;\n    overflow: hidden;\n\n    .mdl-button[disabled] & .mdl-ripple,\n    .mdl-button.mdl-button--disabled & .mdl-ripple {\n      background-color: transparent;\n    }\n  }\n\n// Colorized buttons\n\n.mdl-button--primary.mdl-button--primary {\n  color: $button-primary-color-alt;\n  & .mdl-ripple {\n    background: $button-secondary-color-alt;\n  }\n  &.mdl-button--raised, &.mdl-button--fab {\n    color: $button-secondary-color-alt;\n    background-color: $button-primary-color-alt;\n  }\n}\n\n.mdl-button--accent.mdl-button--accent {\n  color: $button-fab-color-alt;\n  & .mdl-ripple {\n    background: $button-fab-text-color-alt;\n  }\n  &.mdl-button--raised, &.mdl-button--fab {\n    color: $button-fab-text-color-alt;\n    background-color: $button-fab-color-alt;\n  }\n}\n\n// Disabled buttons\n\n.mdl-button {\n  // Bump up specificity by using [disabled] twice.\n  &[disabled][disabled],\n  &.mdl-button--disabled.mdl-button--disabled {\n    color: $button-secondary-color-disabled;\n    cursor: default;\n    background-color: transparent;\n  }\n\n  &--fab {\n    // Bump up specificity by using [disabled] twice.\n    &[disabled][disabled],\n    &.mdl-button--disabled.mdl-button--disabled {\n      background-color: $button-primary-color-disabled;\n      color: $button-secondary-color-disabled;\n    }\n  }\n\n  &--raised {\n    // Bump up specificity by using [disabled] twice.\n    &[disabled][disabled],\n    &.mdl-button--disabled.mdl-button--disabled {\n      background-color: $button-primary-color-disabled;\n      color: $button-secondary-color-disabled;\n      box-shadow: none;\n    }\n  }\n  &--colored {\n    // Bump up specificity by using [disabled] twice.\n    &[disabled][disabled],\n    &.mdl-button--disabled.mdl-button--disabled {\n      color: $button-secondary-color-disabled;\n    }\n  }\n}\n\n// Align icons inside buttons with text\n.mdl-button .material-icons {\n  vertical-align: middle;\n}\n"
  },
  {
    "path": "src/button/button.js",
    "content": "/**\n * @license\n * Copyright 2015 Google Inc. 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 *      http://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(function() {\n  'use strict';\n\n  /**\n   * Class constructor for Button MDL component.\n   * Implements MDL component design pattern defined at:\n   * https://github.com/jasonmayes/mdl-component-design-pattern\n   *\n   * @param {HTMLElement} element The element that will be upgraded.\n   */\n  var MaterialButton = function MaterialButton(element) {\n    this.element_ = element;\n\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialButton'] = MaterialButton;\n\n  /**\n   * Store constants in one place so they can be updated easily.\n   *\n   * @enum {string | number}\n   * @private\n   */\n  MaterialButton.prototype.Constant_ = {\n    // None for now.\n  };\n\n  /**\n   * Store strings for class names defined by this component that are used in\n   * JavaScript. This allows us to simply change it in one place should we\n   * decide to modify at a later date.\n   *\n   * @enum {string}\n   * @private\n   */\n  MaterialButton.prototype.CssClasses_ = {\n    RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n    RIPPLE_CONTAINER: 'mdl-button__ripple-container',\n    RIPPLE: 'mdl-ripple'\n  };\n\n  /**\n   * Handle blur of element.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialButton.prototype.blurHandler_ = function(event) {\n    if (event) {\n      this.element_.blur();\n    }\n  };\n\n  // Public methods.\n\n  /**\n   * Disable button.\n   *\n   * @public\n   */\n  MaterialButton.prototype.disable = function() {\n    this.element_.disabled = true;\n  };\n  MaterialButton.prototype['disable'] = MaterialButton.prototype.disable;\n\n  /**\n   * Enable button.\n   *\n   * @public\n   */\n  MaterialButton.prototype.enable = function() {\n    this.element_.disabled = false;\n  };\n  MaterialButton.prototype['enable'] = MaterialButton.prototype.enable;\n\n  /**\n   * Initialize element.\n   */\n  MaterialButton.prototype.init = function() {\n    if (this.element_) {\n      if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n        var rippleContainer = document.createElement('span');\n        rippleContainer.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n        this.rippleElement_ = document.createElement('span');\n        this.rippleElement_.classList.add(this.CssClasses_.RIPPLE);\n        rippleContainer.appendChild(this.rippleElement_);\n        this.boundRippleBlurHandler = this.blurHandler_.bind(this);\n        this.rippleElement_.addEventListener('mouseup', this.boundRippleBlurHandler);\n        this.element_.appendChild(rippleContainer);\n      }\n      this.boundButtonBlurHandler = this.blurHandler_.bind(this);\n      this.element_.addEventListener('mouseup', this.boundButtonBlurHandler);\n      this.element_.addEventListener('mouseleave', this.boundButtonBlurHandler);\n    }\n  };\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  componentHandler.register({\n    constructor: MaterialButton,\n    classAsString: 'MaterialButton',\n    cssClass: 'mdl-js-button',\n    widget: true\n  });\n})();\n"
  },
  {
    "path": "src/button/snippets/fab-colored-ripple.html",
    "content": "<!-- Colored FAB button with ripple -->\n<button class=\"mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored\">\n  <i class=\"material-icons\">add</i>\n</button>\n"
  },
  {
    "path": "src/button/snippets/fab-colored.html",
    "content": "<!-- Colored FAB button -->\n<button class=\"mdl-button mdl-js-button mdl-button--fab mdl-button--colored\">\n  <i class=\"material-icons\">add</i>\n</button>\n"
  },
  {
    "path": "src/button/snippets/fab-disabled.html",
    "content": "<!-- Disabled FAB button -->\n<button class=\"mdl-button mdl-js-button mdl-button--fab\" disabled>\n  <i class=\"material-icons\">add</i>\n</button>\n"
  },
  {
    "path": "src/button/snippets/fab-mini-colored.html",
    "content": "<!-- Colored mini FAB button -->\n<button class=\"mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab mdl-button--colored\">\n  <i class=\"material-icons\">add</i>\n</button>\n"
  },
  {
    "path": "src/button/snippets/fab-mini.html",
    "content": "<!-- Mini FAB button -->\n<button class=\"mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab\">\n  <i class=\"material-icons\">add</i>\n</button>\n"
  },
  {
    "path": "src/button/snippets/fab-ripple.html",
    "content": "<!-- FAB button with ripple -->\n<button class=\"mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect\">\n  <i class=\"material-icons\">add</i>\n</button>\n"
  },
  {
    "path": "src/button/snippets/fab.html",
    "content": "<!-- FAB button -->\n<button class=\"mdl-button mdl-js-button mdl-button--fab\">\n  <i class=\"material-icons\">add</i>\n</button>\n"
  },
  {
    "path": "src/button/snippets/flat-accent.html",
    "content": "<!-- Accent-colored flat button -->\n<button class=\"mdl-button mdl-js-button mdl-button--accent\">\n  Button\n</button>\n"
  },
  {
    "path": "src/button/snippets/flat-disabled.html",
    "content": "<!-- Disabled flat button -->\n<button class=\"mdl-button mdl-js-button\" disabled>\n  Button\n</button>\n"
  },
  {
    "path": "src/button/snippets/flat-primary.html",
    "content": "<!-- Primary-colored flat button -->\n<button class=\"mdl-button mdl-js-button mdl-button--primary\">\n  Button\n</button>\n"
  },
  {
    "path": "src/button/snippets/flat-ripple.html",
    "content": "<!-- Flat button with ripple -->\n<button class=\"mdl-button mdl-js-button mdl-js-ripple-effect\">\n  Button\n</button>\n"
  },
  {
    "path": "src/button/snippets/flat.html",
    "content": "<!-- Flat button -->\n<button class=\"mdl-button mdl-js-button\">\n  Button\n</button>\n"
  },
  {
    "path": "src/button/snippets/icon-colored.html",
    "content": "<!-- Colored icon button -->\n<button class=\"mdl-button mdl-js-button mdl-button--icon mdl-button--colored\">\n  <i class=\"material-icons\">mood</i>\n</button>\n"
  },
  {
    "path": "src/button/snippets/icon.html",
    "content": "<!-- Icon button -->\n<button class=\"mdl-button mdl-js-button mdl-button--icon\">\n  <i class=\"material-icons\">mood</i>\n</button>\n"
  },
  {
    "path": "src/button/snippets/raised-accent.html",
    "content": "<!-- Accent-colored raised button -->\n<button class=\"mdl-button mdl-js-button mdl-button--raised mdl-button--accent\">\n  Button\n</button>\n"
  },
  {
    "path": "src/button/snippets/raised-colored.html",
    "content": "<!-- Colored raised button -->\n<button class=\"mdl-button mdl-js-button mdl-button--raised mdl-button--colored\">\n  Button\n</button>\n"
  },
  {
    "path": "src/button/snippets/raised-disabled.html",
    "content": "<!-- Raised disabled button -->\n<button class=\"mdl-button mdl-js-button mdl-button--raised\" disabled>\n  Button\n</button>\n"
  },
  {
    "path": "src/button/snippets/raised-ripple-accent.html",
    "content": "<!-- Accent-colored raised button with ripple -->\n<button class=\"mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent\">\n  Button\n</button>\n"
  },
  {
    "path": "src/button/snippets/raised-ripple.html",
    "content": "<!-- Raised button with ripple -->\n<button class=\"mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect\">\n  Button\n</button>\n"
  },
  {
    "path": "src/button/snippets/raised.html",
    "content": "<!-- Raised button -->\n<button class=\"mdl-button mdl-js-button mdl-button--raised\">\n  Button\n</button>\n"
  },
  {
    "path": "src/card/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **card** component is a user interface element representing a virtual piece of paper that contains related data &mdash; such as a photo, some text, and a link &mdash; that are all about a single subject.\n\nCards are a convenient means of coherently displaying related content that is composed of different types of objects. They are also well-suited for presenting similar objects whose size or supported actions can vary considerably, like photos with captions of variable length. Cards have a constant width and a variable height, depending on their content.\n\nCards are a fairly new feature in user interfaces, and allow users an access point to more complex and detailed information. Their design and use is an important factor in the overall user experience. See the card component's [Material Design specifications page](http://www.google.com/design/spec/components/cards.html) for details.\n\n### To include an MDL **card** component:\n\n&nbsp;1. Code a `<div>` element; this is the \"outer\" container, intended to hold all of the card's content.\n```html\n<div>\n</div>\n```\n&nbsp;2. Inside the div, code one or more \"inner\" divs, one for each desired content block. A card containing a title, an image, some text, and an action bar would contain four \"inner\" divs, all siblings.\n```html\n<div>\n  <div>\n  ...\n  </div>\n  <div>\n  ...\n  </div>\n  <div>\n  ...\n  </div>\n  <div>\n  ...\n  </div>\n</div>\n```\n&nbsp;3. Add one or more MDL classes, separated by spaces, to the \"outer\" div and the \"inner\" divs (depending on their intended use) using the `class` attribute.\n```html\n<div class=\"mdl-card\">\n  <div class=\"mdl-card__title\">\n  ...\n  </div>\n  <div class=\"mdl-card__media\">\n  ...\n  </div>\n  <div class=\"mdl-card__supporting-text\">\n  ...\n  </div>\n  <div class=\"mdl-card__actions\">\n  ...\n  </div>\n</div>\n```\n&nbsp;4. Add content to each \"inner\" div, again depending on its intended use, using standard HTML elements and, optionally, additional MDL classes.\n```html\n<div class=\"mdl-card\">\n  <div class=\"mdl-card__title\">\n    <h2 class=\"mdl-card__title-text\">title Text Goes Here</h2>\n  </div>\n  <div class=\"mdl-card__media\">\n    <img src=\"photo.jpg\" width=\"220\" height=\"140\" border=\"0\" alt=\"\" style=\"padding:20px;\">\n  </div>\n  <div class=\"mdl-card__supporting-text\">\n    This text might describe the photo and provide further information, such as where and\n    when it was taken.\n  </div>\n  <div class=\"mdl-card__actions\">\n    <a href=\"(URL or function)\">Related Action</a>\n  </div>\n</div>\n```\n\nThe card component is ready for use.\n\n#### Examples\n\nA card (no shadow) with a title, image, text, and action.\n\n```html\n<div class=\"mdl-card\">\n  <div class=\"mdl-card__title\">\n     <h2 class=\"mdl-card__title-text\">Auckland Sky Tower<br>Auckland, New Zealand</h2>\n  </div>\n  <div class=\"mdl-card__media\">\n    <img src=\"skytower.jpg\" width=\"173\" height=\"157\" border=\"0\" alt=\"\"\n     style=\"padding:10px;\">\n  </div>\n  <div class=\"mdl-card__supporting-text\">\n  The Sky Tower is an observation and telecommunications tower located in Auckland,\n  New Zealand. It is 328 metres (1,076 ft) tall, making it the tallest man-made structure\n  in the Southern Hemisphere.\n  </div>\n  <div class=\"mdl-card__actions\">\n     <a href=\"http://en.wikipedia.org/wiki/Sky_Tower_%28Auckland%29\">Wikipedia entry</a>\n  </div>\n</div>\n```\n\nCard (level-3 shadow) with an image, caption, and text:\n\n```html\n<div class=\"mdl-card mdl-shadow--4dp\">\n  <div class=\"mdl-card__media\"><img src=\"skytower.jpg\" width=\"173\" height=\"157\" border=\"0\"\n   alt=\"\" style=\"padding:10px;\">\n  </div>\n  <div class=\"mdl-card__supporting-text\">\n    Auckland Sky Tower, taken March 24th, 2014\n  </div>\n  <div class=\"mdl-card__supporting-text\">\n  The Sky Tower is an observation and telecommunications tower located in Auckland,\n  New Zealand. It is 328 metres (1,076 ft) tall, making it the tallest man-made structure\n  in the Southern Hemisphere.\n  </div>\n</div>\n```\n\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual and behavioral enhancements to the card. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-card` | Defines div element as an MDL card container | Required on \"outer\" div |\n| `mdl-card--border` | Adds a border to the card section that it's applied to | Used on the \"inner\" divs |\n| `mdl-shadow--2dp through mdl-shadow--16dp` | Assigns variable shadow depths (2, 3, 4, 6, 8, or 16) to card | Optional, goes on \"outer\" div; if omitted, no shadow is present |\n| `mdl-card__title` | Defines div as a card title container | Required on \"inner\" title div |\n| `mdl-card__title-text` | Assigns appropriate text characteristics to card title | Required on head tag (H1 - H6) inside title div |\n| `mdl-card__subtitle-text` | Assigns text characteristics to a card subtitle | Optional. Should be a child of the title element. |\n| `mdl-card__media` | Defines div as a card media container | Required on \"inner\" media div |\n| `mdl-card__supporting-text` | Defines div as a card body text container and assigns appropriate text characteristics to body text | Required on \"inner\" body text div; text goes directly inside the div with no intervening containers |\n| `mdl-card__actions` | Defines div as a card actions container and assigns appropriate text characteristics to actions text | Required on \"inner\" actions div; content goes directly inside the div with no intervening containers |\n| `mdl-card__menu` | Defines element as top right menu button | Optional. Should be a child of the `mdl-card` element. |\n"
  },
  {
    "path": "src/card/_card.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n\n.mdl-card {\n  display: flex;\n  flex-direction: column;\n  font-size: $card-font-size;\n  font-weight: 400;\n  min-height: $card-height;\n  overflow: hidden;\n  width: $card-width;\n  z-index: $card-z-index;\n  position: relative;\n  background: $card-background-color;\n  border-radius: 2px;\n  box-sizing: border-box;\n}\n\n.mdl-card__media {\n  background-color: $card-image-placeholder-color;\n  background-repeat: repeat;\n  background-position: 50% 50%;\n  background-size: cover;\n  background-origin: padding-box;\n  background-attachment: scroll;\n  box-sizing: border-box;\n}\n\n.mdl-card__title {\n  align-items: center;\n  color: $card-text-color;\n  display: block;\n  display: flex;\n  line-height: normal;\n  padding: $card-vertical-padding $card-horizontal-padding;\n  perspective-origin: $card-title-perspective-origin-x $card-title-perspective-origin-y;\n  transform-origin: $card-title-transform-origin-x $card-title-transform-origin-y;\n  box-sizing: border-box;\n\n  &.mdl-card--border {\n    border-bottom: 1px solid $card-border-color;\n  }\n}\n\n.mdl-card__title-text {\n  align-self: flex-end;\n  color: inherit;\n  display: block;\n  display: flex;\n  font-size: $card-title-font-size;\n  font-weight: $card-title-text-font-weight;\n  line-height: normal;\n  overflow: hidden;\n  transform-origin: $card-title-text-transform-origin-x $card-title-text-transform-origin-y;\n  margin: 0;\n}\n\n.mdl-card__subtitle-text {\n  font-size: $card-subtitle-font-size;\n  color: $card-subtitle-color;\n  margin: 0;\n}\n\n.mdl-card__supporting-text {\n  color: $card-supporting-text-text-color;\n  font-size: $card-supporting-text-font-size;\n  line-height: $card-supporting-text-line-height;\n  overflow: hidden;\n  padding: $card-vertical-padding $card-horizontal-padding;\n  width: 90%;\n\n  &.mdl-card--border {\n    border-bottom: 1px solid $card-border-color;\n  }\n}\n\n.mdl-card__actions {\n  font-size: $card-actions-font-size;\n  line-height: normal;\n  width: 100%;\n  background-color: rgba(0,0,0,0);\n  padding: 8px;\n  box-sizing: border-box;\n\n  &.mdl-card--border {\n    border-top: 1px solid $card-border-color;\n  }\n}\n\n.mdl-card--expand {\n  flex-grow: 1;\n}\n\n\n.mdl-card__menu {\n  position: absolute;\n  right: 16px;\n  top: 16px;\n}\n"
  },
  {
    "path": "src/card/snippets/event.html",
    "content": "<!-- Event card -->\n<style>\n.demo-card-event.mdl-card {\n  width: 256px;\n  height: 256px;\n  background: #3E4EB8;\n}\n.demo-card-event > .mdl-card__actions {\n  border-color: rgba(255, 255, 255, 0.2);\n}\n.demo-card-event > .mdl-card__title {\n  align-items: flex-start;\n}\n.demo-card-event > .mdl-card__title > h4 {\n  margin-top: 0;\n}\n.demo-card-event > .mdl-card__actions {\n  display: flex;\n  box-sizing:border-box;\n  align-items: center;\n}\n.demo-card-event > .mdl-card__actions > .material-icons {\n  padding-right: 10px;\n}\n.demo-card-event > .mdl-card__title,\n.demo-card-event > .mdl-card__actions,\n.demo-card-event > .mdl-card__actions > .mdl-button {\n  color: #fff;\n}\n</style>\n\n<div class=\"demo-card-event mdl-card mdl-shadow--2dp\">\n  <div class=\"mdl-card__title mdl-card--expand\">\n    <h4>\n      Featured event:<br>\n      May 24, 2016<br>\n      7-11pm\n    </h4>\n  </div>\n  <div class=\"mdl-card__actions mdl-card--border\">\n    <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect\">\n      Add to Calendar\n    </a>\n    <div class=\"mdl-layout-spacer\"></div>\n    <i class=\"material-icons\">event</i>\n  </div>\n</div>\n"
  },
  {
    "path": "src/card/snippets/image.html",
    "content": "<!-- Image card -->\n<style>\n.demo-card-image.mdl-card {\n  width: 256px;\n  height: 256px;\n  background: url('../assets/demos/image_card.jpg') center / cover;\n}\n.demo-card-image > .mdl-card__actions {\n  height: 52px;\n  padding: 16px;\n  background: rgba(0, 0, 0, 0.2);\n}\n.demo-card-image__filename {\n  color: #fff;\n  font-size: 14px;\n  font-weight: 500;\n}\n</style>\n\n<div class=\"demo-card-image mdl-card mdl-shadow--2dp\">\n  <div class=\"mdl-card__title mdl-card--expand\"></div>\n  <div class=\"mdl-card__actions\">\n    <span class=\"demo-card-image__filename\">Image.jpg</span>\n  </div>\n</div>\n"
  },
  {
    "path": "src/card/snippets/square.html",
    "content": "<!-- Square card -->\n<style>\n.demo-card-square.mdl-card {\n  width: 320px;\n  height: 320px;\n}\n.demo-card-square > .mdl-card__title {\n  color: #fff;\n  background:\n    url('../assets/demos/dog.png') bottom right 15% no-repeat #46B6AC;\n}\n</style>\n\n<div class=\"demo-card-square mdl-card mdl-shadow--2dp\">\n  <div class=\"mdl-card__title mdl-card--expand\">\n    <h2 class=\"mdl-card__title-text\">Update</h2>\n  </div>\n  <div class=\"mdl-card__supporting-text\">\n    Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n    Aenan convallis.\n  </div>\n  <div class=\"mdl-card__actions mdl-card--border\">\n    <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect\">\n      View Updates\n    </a>\n  </div>\n</div>\n"
  },
  {
    "path": "src/card/snippets/wide.html",
    "content": "<!-- Wide card with share menu button -->\n<style>\n.demo-card-wide.mdl-card {\n  width: 512px;\n}\n.demo-card-wide > .mdl-card__title {\n  color: #fff;\n  height: 176px;\n  background: url('../assets/demos/welcome_card.jpg') center / cover;\n}\n.demo-card-wide > .mdl-card__menu {\n  color: #fff;\n}\n</style>\n\n<div class=\"demo-card-wide mdl-card mdl-shadow--2dp\">\n  <div class=\"mdl-card__title\">\n    <h2 class=\"mdl-card__title-text\">Welcome</h2>\n  </div>\n  <div class=\"mdl-card__supporting-text\">\n    Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n    Mauris sagittis pellentesque lacus eleifend lacinia...\n  </div>\n  <div class=\"mdl-card__actions mdl-card--border\">\n    <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect\">\n      Get Started\n    </a>\n  </div>\n  <div class=\"mdl-card__menu\">\n    <button class=\"mdl-button mdl-button--icon mdl-js-button mdl-js-ripple-effect\">\n      <i class=\"material-icons\">share</i>\n    </button>\n  </div>\n</div>\n"
  },
  {
    "path": "src/checkbox/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **checkbox** component is an enhanced version of the standard HTML `<input type=\"checkbox\">` element. A checkbox consists of a small square and, typically, text that clearly communicates a binary condition that will be set or unset when the user clicks or touches it. Checkboxes typically, but not necessarily, appear in groups, and can be selected and deselected individually. The MDL checkbox component allows you to add display and click effects.\n\nCheckboxes are a common feature of most user interfaces, regardless of a site's content or function. Their design and use is therefore an important factor in the overall user experience. See the checkbox component's [Material Design specifications page](https://www.google.com/design/spec/components/selection-controls.html#selection-controls-checkbox) for details.\n\nThe enhanced checkbox component has a more vivid visual look than a standard checkbox, and may be initially or programmatically *disabled*.\n\n### To include an MDL **checkbox** component:\n\n&nbsp;1. Code a `<label>` element and give it a `for` attribute whose value is the unique id of the checkbox it will contain. The `for` attribute is optional when the `<input>` element is contained inside the `<label>` element, but is recommended for clarity.\n```html\n<label for=\"chkbox1\">\n...\n</label>\n```\n&nbsp;2. Inside the label, code an `<input>` element and give it a `type` attribute whose value is `\"checkbox\"`. Also give it an `id` attribute whose value matches the label's `for` attribute value.\n```html\n<label for=\"chkbox1\">\n  <input type=\"checkbox\" id=\"chkbox1\">\n</label>\n```\n&nbsp;3. Also inside the label, after the checkbox, code a `<span>` element containing the checkbox's text caption.\n```html\n<label for=\"chkbox1\">\n  <input type=\"checkbox\" id=\"chkbox1\">\n  <span>Enable AutoSave</span>\n</label>\n```\n&nbsp;4. Add one or more MDL classes, separated by spaces, to the label, checkbox, and caption using the `class` attribute.\n```html\n<label for=\"chkbox1\" class=\"mdl-checkbox mdl-js-checkbox\">\n  <input type=\"checkbox\" id=\"chkbox1\" class=\"mdl-checkbox__input\">\n  <span class=\"mdl-checkbox__label\">Enable AutoSave</span>\n</label>\n```\n\nThe checkbox component is ready for use.\n\n#### Example\n\nA checkbox with a ripple click effect.\n\n```html\n<label for=\"chkbox1\" class=\"mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect\">\n  <input type=\"checkbox\" id=\"chkbox1\" class=\"mdl-checkbox__input\">\n  <span class=\"mdl-checkbox__label\">Enable AutoSave</span>\n</label>\n```\n\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual and behavioral enhancements to the checkbox. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-checkbox` | Defines label as an MDL component | Required on label element|\n| `mdl-js-checkbox` | Assigns basic MDL behavior to label | Required on label element |\n| `mdl-checkbox__input` | Applies basic MDL behavior to checkbox | Required on input element (checkbox) |\n| `mdl-checkbox__label` | Applies basic MDL behavior to caption | Required on span element (caption) |\n| `mdl-js-ripple-effect` | Applies *ripple* click effect | Optional; goes on label element, not input element (checkbox) |\n\n>**Note:** Disabled versions of all the available checkbox types are provided, and are invoked with the standard HTML boolean attribute `disabled`. `<input type=\"checkbox\" id=\"checkbox-5\" class=\"mdl-checkbox__input\" disabled>`\n>This attribute may be added or removed programmatically via scripting.\n"
  },
  {
    "path": "src/checkbox/_checkbox.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n@import \"../mixins\";\n\n.mdl-checkbox {\n  position: relative;\n\n  z-index: 1;\n\n  vertical-align: middle;\n\n  display: inline-block;\n\n  box-sizing: border-box;\n  width: 100%;\n  height: $checkbox-label-height;\n  margin: 0;\n  padding: 0;\n\n  &.is-upgraded {\n    padding-left: $checkbox-button-size + $checkbox-padding;\n  }\n}\n\n.mdl-checkbox__input {\n  line-height: $checkbox-label-height;\n\n  .mdl-checkbox.is-upgraded & {\n    // Hide input element, while still making it respond to focus.\n    position: absolute;\n    width: 0;\n    height: 0;\n    margin: 0;\n    padding: 0;\n    opacity: 0;\n    -ms-appearance: none;\n    -moz-appearance: none;\n    -webkit-appearance: none;\n    appearance: none;\n    border: none;\n  }\n}\n\n.mdl-checkbox__box-outline {\n  position: absolute;\n  top: $checkbox-top-offset;\n  left: 0;\n\n  display: inline-block;\n\n  box-sizing: border-box;\n  width: $checkbox-button-size;\n  height: $checkbox-button-size;\n  margin: 0;\n\n  cursor: pointer;\n  overflow: hidden;\n\n  border: 2px solid $checkbox-off-color;\n  border-radius: 2px;\n\n  z-index: 2;\n\n  .mdl-checkbox.is-checked & {\n    border: 2px solid $checkbox-color;\n  }\n\n  fieldset[disabled] .mdl-checkbox &,\n  .mdl-checkbox.is-disabled & {\n    border: 2px solid $checkbox-disabled-color;\n    cursor: auto;\n  }\n}\n\n.mdl-checkbox__focus-helper {\n  position: absolute;\n  top: $checkbox-top-offset;\n  left: 0;\n\n  display: inline-block;\n\n  box-sizing: border-box;\n  width: $checkbox-button-size;\n  height: $checkbox-button-size;\n  border-radius: 50%;\n\n  background-color: transparent;\n\n  .mdl-checkbox.is-focused & {\n    box-shadow: 0 0 0px ($checkbox-button-size / 2) rgba(0, 0, 0, 0.1);\n    background-color: rgba(0, 0, 0, 0.1);\n  }\n\n  .mdl-checkbox.is-focused.is-checked & {\n    box-shadow: 0 0 0px ($checkbox-button-size / 2) $checkbox-focus-color;\n    background-color: $checkbox-focus-color;\n  }\n}\n\n.mdl-checkbox__tick-outline {\n  position: absolute;\n  top: 0;\n  left: 0;\n  height: 100%;\n  width: 100%;\n  mask: url(\"#{$checkbox-image-path}/tick-mask.svg?embed\");\n\n  background: transparent;\n  @include material-animation-default(0.28s);\n  transition-property: background-image;\n\n  .mdl-checkbox.is-checked & {\n    background-color: $checkbox-color;\n    background-image: url(\"#{$checkbox-image-path}/tick.svg?embed\");\n  }\n\n  fieldset[disabled] .mdl-checkbox.is-checked &,\n  .mdl-checkbox.is-checked.is-disabled & {\n    background-color: $checkbox-disabled-color;\n  }\n}\n\n.mdl-checkbox__label {\n  position: relative;\n  cursor: pointer;\n  font-size: $checkbox-label-font-size;\n  line-height: $checkbox-label-height;\n  margin: 0;\n\n  fieldset[disabled] .mdl-checkbox &,\n  .mdl-checkbox.is-disabled & {\n    color: $checkbox-disabled-color;\n    cursor: auto;\n  }\n}\n\n.mdl-checkbox__ripple-container {\n  position: absolute;\n  z-index: 2;\n  top: -(($checkbox-ripple-size - $checkbox-label-height) / 2);\n  left: -(($checkbox-ripple-size - $checkbox-button-size) / 2);\n\n  box-sizing: border-box;\n  width: $checkbox-ripple-size;\n  height: $checkbox-ripple-size;\n  border-radius: 50%;\n\n  cursor: pointer;\n\n  overflow: hidden;\n  -webkit-mask-image: -webkit-radial-gradient(circle, white, black);\n\n  & .mdl-ripple {\n    background: $checkbox-color;\n  }\n\n  fieldset[disabled] .mdl-checkbox &,\n  .mdl-checkbox.is-disabled & {\n    cursor: auto;\n  }\n\n  fieldset[disabled] .mdl-checkbox & .mdl-ripple,\n  .mdl-checkbox.is-disabled & .mdl-ripple {\n    background: transparent;\n  }\n}\n"
  },
  {
    "path": "src/checkbox/checkbox.js",
    "content": "/**\n * @license\n * Copyright 2015 Google Inc. 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 *      http://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(function() {\n  'use strict';\n\n  /**\n   * Class constructor for Checkbox MDL component.\n   * Implements MDL component design pattern defined at:\n   * https://github.com/jasonmayes/mdl-component-design-pattern\n   *\n   * @constructor\n   * @param {HTMLElement} element The element that will be upgraded.\n   */\n  var MaterialCheckbox = function MaterialCheckbox(element) {\n    this.element_ = element;\n\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialCheckbox'] = MaterialCheckbox;\n\n  /**\n   * Store constants in one place so they can be updated easily.\n   *\n   * @enum {string | number}\n   * @private\n   */\n  MaterialCheckbox.prototype.Constant_ = {\n    TINY_TIMEOUT: 0.001\n  };\n\n  /**\n   * Store strings for class names defined by this component that are used in\n   * JavaScript. This allows us to simply change it in one place should we\n   * decide to modify at a later date.\n   *\n   * @enum {string}\n   * @private\n   */\n  MaterialCheckbox.prototype.CssClasses_ = {\n    INPUT: 'mdl-checkbox__input',\n    BOX_OUTLINE: 'mdl-checkbox__box-outline',\n    FOCUS_HELPER: 'mdl-checkbox__focus-helper',\n    TICK_OUTLINE: 'mdl-checkbox__tick-outline',\n    RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n    RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n    RIPPLE_CONTAINER: 'mdl-checkbox__ripple-container',\n    RIPPLE_CENTER: 'mdl-ripple--center',\n    RIPPLE: 'mdl-ripple',\n    IS_FOCUSED: 'is-focused',\n    IS_DISABLED: 'is-disabled',\n    IS_CHECKED: 'is-checked',\n    IS_UPGRADED: 'is-upgraded'\n  };\n\n  /**\n   * Handle change of state.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialCheckbox.prototype.onChange_ = function(event) {\n    this.updateClasses_();\n  };\n\n  /**\n   * Handle focus of element.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialCheckbox.prototype.onFocus_ = function(event) {\n    this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n  };\n\n  /**\n   * Handle lost focus of element.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialCheckbox.prototype.onBlur_ = function(event) {\n    this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n  };\n\n  /**\n   * Handle mouseup.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialCheckbox.prototype.onMouseUp_ = function(event) {\n    this.blur_();\n  };\n\n  /**\n   * Handle class updates.\n   *\n   * @private\n   */\n  MaterialCheckbox.prototype.updateClasses_ = function() {\n    this.checkDisabled();\n    this.checkToggleState();\n  };\n\n  /**\n   * Add blur.\n   *\n   * @private\n   */\n  MaterialCheckbox.prototype.blur_ = function() {\n    // TODO: figure out why there's a focus event being fired after our blur,\n    // so that we can avoid this hack.\n    window.setTimeout(function() {\n      this.inputElement_.blur();\n    }.bind(this), /** @type {number} */ (this.Constant_.TINY_TIMEOUT));\n  };\n\n  // Public methods.\n\n  /**\n   * Check the inputs toggle state and update display.\n   *\n   * @public\n   */\n  MaterialCheckbox.prototype.checkToggleState = function() {\n    if (this.inputElement_.checked) {\n      this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n    } else {\n      this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n    }\n  };\n  MaterialCheckbox.prototype['checkToggleState'] =\n      MaterialCheckbox.prototype.checkToggleState;\n\n  /**\n   * Check the inputs disabled state and update display.\n   *\n   * @public\n   */\n  MaterialCheckbox.prototype.checkDisabled = function() {\n    if (this.inputElement_.disabled) {\n      this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n    } else {\n      this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n    }\n  };\n  MaterialCheckbox.prototype['checkDisabled'] =\n      MaterialCheckbox.prototype.checkDisabled;\n\n  /**\n   * Disable checkbox.\n   *\n   * @public\n   */\n  MaterialCheckbox.prototype.disable = function() {\n    this.inputElement_.disabled = true;\n    this.updateClasses_();\n  };\n  MaterialCheckbox.prototype['disable'] = MaterialCheckbox.prototype.disable;\n\n  /**\n   * Enable checkbox.\n   *\n   * @public\n   */\n  MaterialCheckbox.prototype.enable = function() {\n    this.inputElement_.disabled = false;\n    this.updateClasses_();\n  };\n  MaterialCheckbox.prototype['enable'] = MaterialCheckbox.prototype.enable;\n\n  /**\n   * Check checkbox.\n   *\n   * @public\n   */\n  MaterialCheckbox.prototype.check = function() {\n    this.inputElement_.checked = true;\n    this.updateClasses_();\n  };\n  MaterialCheckbox.prototype['check'] = MaterialCheckbox.prototype.check;\n\n  /**\n   * Uncheck checkbox.\n   *\n   * @public\n   */\n  MaterialCheckbox.prototype.uncheck = function() {\n    this.inputElement_.checked = false;\n    this.updateClasses_();\n  };\n  MaterialCheckbox.prototype['uncheck'] = MaterialCheckbox.prototype.uncheck;\n\n  /**\n   * Initialize element.\n   */\n  MaterialCheckbox.prototype.init = function() {\n    if (this.element_) {\n      this.inputElement_ = this.element_.querySelector('.' +\n          this.CssClasses_.INPUT);\n\n      var boxOutline = document.createElement('span');\n      boxOutline.classList.add(this.CssClasses_.BOX_OUTLINE);\n\n      var tickContainer = document.createElement('span');\n      tickContainer.classList.add(this.CssClasses_.FOCUS_HELPER);\n\n      var tickOutline = document.createElement('span');\n      tickOutline.classList.add(this.CssClasses_.TICK_OUTLINE);\n\n      boxOutline.appendChild(tickOutline);\n\n      this.element_.appendChild(tickContainer);\n      this.element_.appendChild(boxOutline);\n\n      if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n        this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n        this.rippleContainerElement_ = document.createElement('span');\n        this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n        this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n        this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n        this.boundRippleMouseUp = this.onMouseUp_.bind(this);\n        this.rippleContainerElement_.addEventListener('mouseup', this.boundRippleMouseUp);\n\n        var ripple = document.createElement('span');\n        ripple.classList.add(this.CssClasses_.RIPPLE);\n\n        this.rippleContainerElement_.appendChild(ripple);\n        this.element_.appendChild(this.rippleContainerElement_);\n      }\n      this.boundInputOnChange = this.onChange_.bind(this);\n      this.boundInputOnFocus = this.onFocus_.bind(this);\n      this.boundInputOnBlur = this.onBlur_.bind(this);\n      this.boundElementMouseUp = this.onMouseUp_.bind(this);\n      this.inputElement_.addEventListener('change', this.boundInputOnChange);\n      this.inputElement_.addEventListener('focus', this.boundInputOnFocus);\n      this.inputElement_.addEventListener('blur', this.boundInputOnBlur);\n      this.element_.addEventListener('mouseup', this.boundElementMouseUp);\n\n      this.updateClasses_();\n      this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n    }\n  };\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  componentHandler.register({\n    constructor: MaterialCheckbox,\n    classAsString: 'MaterialCheckbox',\n    cssClass: 'mdl-js-checkbox',\n    widget: true\n  });\n})();\n"
  },
  {
    "path": "src/checkbox/snippets/check-off.html",
    "content": "<label class=\"mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect\" for=\"checkbox-2\">\n  <input type=\"checkbox\" id=\"checkbox-2\" class=\"mdl-checkbox__input\">\n  <span class=\"mdl-checkbox__label\">Checkbox</span>\n</label>\n"
  },
  {
    "path": "src/checkbox/snippets/check-on.html",
    "content": "<label class=\"mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect\" for=\"checkbox-1\">\n  <input type=\"checkbox\" id=\"checkbox-1\" class=\"mdl-checkbox__input\" checked>\n  <span class=\"mdl-checkbox__label\">Checkbox</span>\n</label>\n"
  },
  {
    "path": "src/chip/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **chip** component is a small, interactive element.\nChips are commonly used for contacts, text, rules, icons, and photos.\n\n## TO INCLUDE AN MDL CHIP COMPONENT:\n\n&nbsp;1. Create a container element for the chip; typically `<span>` and `<div>` are used, but any container element should work equally well. If you need interactivity, use a `<button>`, or add the `tabindex` attribute to your container.\n```html\n<span>\n</span>\n```\n\n&nbsp;2. Add in the text wrapper and the MDL classes.\n```html\n<span class=\"mdl-chip\">\n    <span class=\"mdl-chip__text\">Chip Text</span>\n</span>\n```\n\n&nbsp;3. For deletable chips, add in the delete icon. This can be an `<a>`, `<button>` or non-interactive tags like `<span>`.\n```html\n<span class=\"mdl-chip\">\n    <span class=\"mdl-chip__text\">Chip Text</span>\n    <a href=\"#\" class=\"mdl-chip__action\"><i class=\"material-icons\">cancel</i></a>\n</span>\n```\n\n&nbsp;4. Contact chips need to have the `mdl-chip--contact` class added to the container, along with another container for the contact icon. The icon container for photos is typically an `<img>` tag, but other types of content can be used with a little extra supporting css.\n```html\n<span class=\"mdl-chip\">\n    <span class=\"mdl-chip__contact mdl-color--teal mdl-color-text--white\">A</span>\n    <span class=\"mdl-chip__text\">Chip Text</span>\n    <a href=\"#\" class=\"mdl-chip__action\"><i class=\"material-icons\">cancel</i></a>\n</span>\n```\n\n## Examples\n\nA button based contact chip whose contact image is a `<span>` with a `background-image`.\n\n```html\n<style>\n    .demo-chip .mdl-chip__contact {\n        background-image: url(\"./path/to/image\");\n        background-size: cover;\n    }\n</style>\n\n<button class=\"mdl-chip demo-chip\">\n    <span class=\"mdl-chip__contact\">&nbsp;</span>\n    <span class=\"mdl-chip__text\">Chip Text</span>\n    <a href=\"#\" class=\"mdl-chip__action\"><i class=\"material-icons\">cancel</i></a>\n</button>\n```\n\n## CSS Classes\n\n| MDL Class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-chip` | Defines element as an MDL chip container | Required on \"outer\" container |\n| `mdl-chip--contact` | Defines an MDL chip as a contact style chip | Optional, goes on \"outer\" container |\n| `mdl-chip__text` | Defines element as the chip's text | Required on \"inner\" text container |\n| `mdl-chip__action` | Defines element as the chip's action | Required on \"inner\" action container, if present |\n| `mdl-chip__contact` | Defines element as the chip's contact container | Required on \"inner\" contact container, if the `mdl-chip--contact` class is present on \"outer\" container |"
  },
  {
    "path": "src/chip/_chip.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n@import \"../mixins\";\n\n.mdl-chip {\n    height: $chip-height;\n    font-family: $preferred_font;\n    line-height: $chip-height;\n    padding: 0 12px;\n    border: 0;\n    border-radius: $chip-height / 2;\n    background-color: $chip-bg-color;\n    display: inline-block;\n    color: $text-color-primary;\n    margin: 2px 0;\n    font-size: 0;\n    white-space: nowrap;\n\n    &__text {\n        font-size: $chip-font-size;\n        vertical-align: middle;\n        display: inline-block;\n    }\n\n    &__action {\n        height: 24px;\n        width: 24px;\n        background: transparent;\n        opacity: 0.54;\n        display: inline-block;\n        cursor: pointer;\n        text-align: center;\n        vertical-align: middle;\n        padding: 0;\n        margin: 0 0 0 4px;\n        font-size: $chip-font-size;\n        text-decoration: none;\n        color: $text-color-primary;\n        border: none;\n        outline: none;\n        overflow: hidden;\n    }\n    \n    &__contact {\n        height: $chip-height;\n        width: $chip-height;\n        border-radius: $chip-height / 2;\n        display: inline-block;\n        vertical-align: middle;\n        margin-right: 8px;\n        overflow: hidden;\n        text-align: center;\n        font-size: 18px;\n        line-height: 32px;\n    }\n    \n    &:focus {\n        outline: 0;\n        @include shadow-2dp();\n    }\n    \n    &:active {\n        background-color: $chip-bg-active-color;\n    }\n    \n    &--deletable {\n        padding-right: 4px;\n    }\n    \n    &--contact {\n        padding-left: 0;\n    }\n}"
  },
  {
    "path": "src/chip/snippets/basic.html",
    "content": "<!-- Basic Chip -->\n<span class=\"mdl-chip\">\n    <span class=\"mdl-chip__text\">Basic Chip</span>\n</span>"
  },
  {
    "path": "src/chip/snippets/button.html",
    "content": "<!-- Button Chip -->\n<button type=\"button\" class=\"mdl-chip\">\n    <span class=\"mdl-chip__text\">Button Chip</span>\n</button>"
  },
  {
    "path": "src/chip/snippets/contact.html",
    "content": "<!-- Contact Chip -->\n<span class=\"mdl-chip mdl-chip--contact\">\n    <span class=\"mdl-chip__contact mdl-color--teal mdl-color-text--white\">A</span>\n    <span class=\"mdl-chip__text\">Contact Chip</span>\n</span>\n"
  },
  {
    "path": "src/chip/snippets/deletable-contact.html",
    "content": "<!-- Deletable Contact Chip -->\n<span class=\"mdl-chip mdl-chip--contact mdl-chip--deletable\">\n    <img class=\"mdl-chip__contact\" src=\"/templates/dashboard/images/user.jpg\"></img>\n    <span class=\"mdl-chip__text\">Deletable Contact Chip</span>\n    <a href=\"#\" class=\"mdl-chip__action\"><i class=\"material-icons\">cancel</i></a>\n</span>"
  },
  {
    "path": "src/chip/snippets/deletable.html",
    "content": "<!-- Deletable Chip -->\n<span class=\"mdl-chip mdl-chip--deletable\">\n    <span class=\"mdl-chip__text\">Deletable Chip</span>\n    <button type=\"button\" class=\"mdl-chip__action\"><i class=\"material-icons\">cancel</i></button>\n</span>"
  },
  {
    "path": "src/data-table/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **data-table** component is an enhanced version of the standard HTML `<table>`. A data-table consists of rows and columns of well-formatted data, presented with appropriate user interaction capabilities.\n\nTables are a ubiquitous feature of most user interfaces, regardless of a site's content or function. Their design and use is therefore an important factor in the overall user experience. See the data-table component's [Material Design specifications page](http://www.google.com/design/spec/components/data-tables.html) for details.\n\nThe available row/column/cell types in a data-table are mostly self-formatting; that is, once the data-table is defined, the individual cells require very little specific attention. For example, the rows exhibit shading behavior on mouseover and selection, numeric values are automatically formatted by default, and the addition of a single class makes the table rows individually or collectively selectable. This makes the data-table component convenient and easy to code for the developer, as well as attractive and intuitive for the user.\n\n### To include an MDL **data-table** component:\n\n&nbsp;1. Code a `<table>` element. Include `<thead>` and `<tbody>` elements to hold the title and data rows, respectively.\n```html\n<table>\n  <thead>\n  </thead>\n  <tbody>\n  </tbody>\n</table>\n```\n\n&nbsp;2. Add one or more MDL classes, separated by spaces, to the table using the `class` attribute.\n```html\n<table class=\"mdl-data-table mdl-js-data-table\">\n  <thead>\n  </thead>\n  <tbody>\n  </tbody>\n</table>\n```\n\n&nbsp;2. Inside the `<thead>`, code exactly one table row `<tr>` containing one table header cell `<th>` for each column, and include the desired text in the header cells. To ensure proper header alignment, add the \"non-numeric\" MDL class to the header cell of text-only columns. (Data cells are formatted as numeric by default.)\n```html\n<table class=\"mdl-data-table mdl-js-data-table\">\n  <thead>\n    <tr>\n      <th class=\"mdl-data-table__cell--non-numeric\">Name</th>\n      <th>Age</th>\n      <th>ID Number</th>\n    </tr>\n  </thead>\n  <tbody>\n  </tbody>\n</table>\n```\n\n&nbsp;3. Inside the `<tbody>`, code one table row `<tr>` for each data row and one table data cell `<td>` for each column in the row. As with the header cells, add the \"non-numeric\" MDL class to text-only data cells to ensure proper alignment.\n```html\n<table class=\"mdl-data-table mdl-js-data-table\">\n  <thead>\n    <tr>\n      <th class=\"mdl-data-table__cell--non-numeric\">Name</th>\n      <th>Age</th>\n      <th>ID Number</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td class=\"mdl-data-table__cell--non-numeric\">Don Aubrey</td>\n      <td>25</td>\n      <td>49021</td>\n    </tr>\n    <tr>\n      <td class=\"mdl-data-table__cell--non-numeric\">Sophia Carson</td>\n      <td>32</td>\n      <td>10258</td>\n    </tr>\n    <tr>\n      <td class=\"mdl-data-table__cell--non-numeric\">Steve Moreno</td>\n      <td>29</td>\n      <td>12359</td>\n    </tr>\n  </tbody>\n</table>\n```\n\nThe data-table component is ready for use.\n\n#### Examples\n\nA data-table with a \"master\" select checkbox and individual row select checkboxes.\n```html\n<table class=\"mdl-data-table mdl-js-data-table mdl-data-table--selectable\">\n  <thead>\n    <tr>\n      <th class=\"mdl-data-table__cell--non-numeric\">Material</th>\n      <th>Quantity</th>\n      <th>Unit price</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td class=\"mdl-data-table__cell--non-numeric\">Acrylic (Transparent)</td>\n      <td>250</td>\n      <td>$2.90</td>\n    </tr>\n    <tr>\n      <td class=\"mdl-data-table__cell--non-numeric\">Plywood (Birch)</td>\n      <td>50</td>\n      <td>$1.25</td>\n    </tr>\n    <tr>\n      <td class=\"mdl-data-table__cell--non-numeric\">Laminate (Gold on Blue)</td>\n      <td>10</td>\n      <td>$12.35</td>\n    </tr>\n  </tbody>\n</table>\n```\n\nA data-table without select checkboxes containing mostly text data.\n```html\n<table class=\"mdl-data-table mdl-js-data-table\">\n  <thead>\n    <tr>\n      <th class=\"mdl-data-table__cell--non-numeric\">Name</th>\n      <th class=\"mdl-data-table__cell--non-numeric\">Nickname</th>\n      <th>Age</th>\n      <th class=\"mdl-data-table__cell--non-numeric\">Living?</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td class=\"mdl-data-table__cell--non-numeric\">John Lennon</td>\n      <td class=\"mdl-data-table__cell--non-numeric\">The smart one</td>\n      <td>40</td>\n      <td class=\"mdl-data-table__cell--non-numeric\">No</td>\n    </tr>\n    <tr>\n      <td class=\"mdl-data-table__cell--non-numeric\">Paul McCartney</td>\n      <td class=\"mdl-data-table__cell--non-numeric\">The cute one</td>\n      <td>73</td>\n      <td class=\"mdl-data-table__cell--non-numeric\">Yes</td>\n    </tr>\n    <tr>\n      <td class=\"mdl-data-table__cell--non-numeric\">George Harrison</td>\n      <td class=\"mdl-data-table__cell--non-numeric\">The shy one</td>\n      <td>58</td>\n      <td class=\"mdl-data-table__cell--non-numeric\">No</td>\n    </tr>\n    <tr>\n      <td class=\"mdl-data-table__cell--non-numeric\">Ringo Starr</td>\n      <td class=\"mdl-data-table__cell--non-numeric\">The funny one</td>\n      <td>74</td>\n      <td class=\"mdl-data-table__cell--non-numeric\">Yes</td>\n    </tr>\n  </tbody>\n</table>\n```\n\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual and behavioral enhancements to the data-table. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-data-table` | Defines table as an MDL component | Required on table element|\n| `mdl-js-data-table` | Assigns basic MDL behavior to table | Required on table element|\n| `mdl-data-table--selectable` | Applies all/individual selectable behavior (checkboxes) | Optional; goes on table element |\n| `mdl-data-table__header--sorted-ascending` | Applies visual styling to indicate the column is sorted in ascending order | Optional; goes on table header (`th`) |\n| `mdl-data-table__header--sorted-descending` | Applies visual styling to indicate the column is sorted in descending order | Optional; goes on table header (`th`) |\n| `mdl-data-table__cell--non-numeric` | Applies text formatting to data cell | Optional; goes on both table header and table data cells |\n| (none) | Applies numeric formatting to header or data cell (default) |  |\n"
  },
  {
    "path": "src/data-table/_data-table.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n@import \"../mixins\";\n\n.mdl-data-table {\n  position: relative;\n  border: $data-table-dividers;\n  border-collapse: collapse;\n  white-space: nowrap;\n  font-size: $data-table-font-size;\n  background-color: unquote(\"rgb(#{$color-white})\");\n\n  thead {\n    padding-bottom: 3px;\n\n    .mdl-data-table__select {\n      margin-top: 0;\n    }\n  }\n\n  tbody {\n    tr {\n      position: relative;\n      height: $data-table-row-height;\n      @include material-animation-default(0.28s);\n      transition-property: background-color;\n\n      &.is-selected {\n        background-color: $data-table-selection-color;\n      }\n\n      &:hover {\n        background-color: $data-table-hover-color;\n      }\n    }\n  }\n\n  td, th {\n    padding: 0 $data-table-column-padding 12px $data-table-column-padding;\n    text-align: right;\n\n    &:first-of-type {\n      padding-left: 24px;\n    }\n\n    &:last-of-type {\n      padding-right: 24px;\n    }\n  }\n\n  td {\n    position: relative;\n    vertical-align: middle;\n    height: $data-table-row-height;\n    border-top: $data-table-dividers;\n    border-bottom: $data-table-dividers;\n    padding-top: $data-table-cell-top;\n    box-sizing: border-box;\n\n    .mdl-data-table__select {\n      vertical-align: middle;\n    }\n  }\n\n  th {\n    position: relative;\n    vertical-align: bottom;\n    text-overflow: ellipsis;\n    @include typo-body-2();\n    height: $data-table-row-height;\n    font-size: $data-table-header-font-size;\n    color: $data-table-header-color;\n    padding-bottom: 8px;\n    box-sizing: border-box;\n\n    &.mdl-data-table__header--sorted-ascending,\n    &.mdl-data-table__header--sorted-descending {\n      color: $data-table-header-sorted-color;\n      &:before {\n        @include typo-icon;\n        font-size: $data-table-header-sort-icon-size;\n        content: \"\\e5d8\";\n        margin-right: 5px;\n        vertical-align: sub;\n      }\n      &:hover {\n        cursor: pointer;\n        &:before {\n          color: $data-table-header-sorted-icon-hover-color;\n        }\n      }\n    }\n    &.mdl-data-table__header--sorted-descending:before {\n      content: \"\\e5db\";\n    }\n  }\n}\n\n.mdl-data-table__select {\n  width: 16px;\n}\n\n.mdl-data-table__cell--non-numeric.mdl-data-table__cell--non-numeric {\n  text-align: left;\n}\n"
  },
  {
    "path": "src/data-table/data-table.js",
    "content": "/**\n * @license\n * Copyright 2015 Google Inc. 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 *      http://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(function() {\n  'use strict';\n\n  /**\n   * Class constructor for Data Table Card MDL component.\n   * Implements MDL component design pattern defined at:\n   * https://github.com/jasonmayes/mdl-component-design-pattern\n   *\n   * @constructor\n   * @param {Element} element The element that will be upgraded.\n   */\n  var MaterialDataTable = function MaterialDataTable(element) {\n    this.element_ = element;\n\n    // Initialize instance.\n    this.init();\n  };\n\n  window['MaterialDataTable'] = MaterialDataTable;\n\n  /**\n   * Store constants in one place so they can be updated easily.\n   *\n   * @enum {string | number}\n   * @private\n   */\n  MaterialDataTable.prototype.Constant_ = {\n    // None at the moment.\n  };\n\n  /**\n   * Store strings for class names defined by this component that are used in\n   * JavaScript. This allows us to simply change it in one place should we\n   * decide to modify at a later date.\n   *\n   * @enum {string}\n   * @private\n   */\n  MaterialDataTable.prototype.CssClasses_ = {\n    DATA_TABLE: 'mdl-data-table',\n    SELECTABLE: 'mdl-data-table--selectable',\n    SELECT_ELEMENT: 'mdl-data-table__select',\n    IS_SELECTED: 'is-selected',\n    IS_UPGRADED: 'is-upgraded'\n  };\n\n  /**\n   * Generates and returns a function that toggles the selection state of a\n   * single row (or multiple rows).\n   *\n   * @param {Element} checkbox Checkbox that toggles the selection state.\n   * @param {Element} row Row to toggle when checkbox changes.\n   * @param {(Array<Object>|NodeList)=} opt_rows Rows to toggle when checkbox changes.\n   * @private\n   */\n  MaterialDataTable.prototype.selectRow_ = function(checkbox, row, opt_rows) {\n    if (row) {\n      return function() {\n        if (checkbox.checked) {\n          row.classList.add(this.CssClasses_.IS_SELECTED);\n        } else {\n          row.classList.remove(this.CssClasses_.IS_SELECTED);\n          if (this.headerCheckbox['MaterialCheckbox'].inputElement_.checked) {\n            this.headerCheckbox['MaterialCheckbox'].uncheck();\n          }\n        }\n      }.bind(this);\n    }\n\n    if (opt_rows) {\n      return function() {\n        var i;\n        var el;\n        if (checkbox.checked) {\n          for (i = 0; i < opt_rows.length; i++) {\n            el = opt_rows[i].querySelector('td').querySelector('.mdl-checkbox');\n            el['MaterialCheckbox'].check();\n            opt_rows[i].classList.add(this.CssClasses_.IS_SELECTED);\n          }\n        } else {\n          for (i = 0; i < opt_rows.length; i++) {\n            el = opt_rows[i].querySelector('td').querySelector('.mdl-checkbox');\n            el['MaterialCheckbox'].uncheck();\n            opt_rows[i].classList.remove(this.CssClasses_.IS_SELECTED);\n          }\n        }\n      }.bind(this);\n    }\n  };\n\n  /**\n   * Creates a checkbox for a single or or multiple rows and hooks up the\n   * event handling.\n   *\n   * @param {Element} row Row to toggle when checkbox changes.\n   * @param {(Array<Object>|NodeList)=} opt_rows Rows to toggle when checkbox changes.\n   * @private\n   */\n  MaterialDataTable.prototype.createCheckbox_ = function(row, opt_rows) {\n    var label = document.createElement('label');\n    var labelClasses = [\n      'mdl-checkbox',\n      'mdl-js-checkbox',\n      'mdl-js-ripple-effect',\n      this.CssClasses_.SELECT_ELEMENT\n    ];\n    label.className = labelClasses.join(' ');\n    var checkbox = document.createElement('input');\n    checkbox.type = 'checkbox';\n    checkbox.classList.add('mdl-checkbox__input');\n\n    if (row) {\n      checkbox.checked = row.classList.contains(this.CssClasses_.IS_SELECTED);\n      checkbox.addEventListener('change', this.selectRow_(checkbox, row));\n    } else if (opt_rows) {\n      checkbox.addEventListener('change', this.selectRow_(checkbox, null, opt_rows));\n    }\n\n    label.appendChild(checkbox);\n    componentHandler.upgradeElement(label, 'MaterialCheckbox');\n    return label;\n  };\n\n  /**\n   * Initialize element.\n   */\n  MaterialDataTable.prototype.init = function() {\n    if (this.element_) {\n      var firstHeader = this.element_.querySelector('th');\n      var bodyRows = Array.prototype.slice.call(this.element_.querySelectorAll('tbody tr'));\n      var footRows = Array.prototype.slice.call(this.element_.querySelectorAll('tfoot tr'));\n      var rows = bodyRows.concat(footRows);\n\n      if (this.element_.classList.contains(this.CssClasses_.SELECTABLE)) {\n        var th = document.createElement('th');\n        this.headerCheckbox = this.createCheckbox_(null, rows);\n        th.appendChild(this.headerCheckbox);\n        firstHeader.parentElement.insertBefore(th, firstHeader);\n\n        for (var i = 0; i < rows.length; i++) {\n          var firstCell = rows[i].querySelector('td');\n          if (firstCell) {\n            var td = document.createElement('td');\n            if (rows[i].parentNode.nodeName.toUpperCase() === 'TBODY') {\n              var rowCheckbox = this.createCheckbox_(rows[i]);\n              td.appendChild(rowCheckbox);\n            }\n            rows[i].insertBefore(td, firstCell);\n          }\n        }\n        this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n      }\n    }\n  };\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  componentHandler.register({\n    constructor: MaterialDataTable,\n    classAsString: 'MaterialDataTable',\n    cssClass: 'mdl-js-data-table'\n  });\n})();\n"
  },
  {
    "path": "src/data-table/snippets/data-table.html",
    "content": "<table class=\"mdl-data-table mdl-js-data-table mdl-data-table--selectable mdl-shadow--2dp\">\n  <thead>\n    <tr>\n      <th class=\"mdl-data-table__cell--non-numeric\">Material</th>\n      <th>Quantity</th>\n      <th>Unit price</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td class=\"mdl-data-table__cell--non-numeric\">Acrylic (Transparent)</td>\n      <td>25</td>\n      <td>$2.90</td>\n    </tr>\n    <tr>\n      <td class=\"mdl-data-table__cell--non-numeric\">Plywood (Birch)</td>\n      <td>50</td>\n      <td>$1.25</td>\n    </tr>\n    <tr>\n      <td class=\"mdl-data-table__cell--non-numeric\">Laminate (Gold on Blue)</td>\n      <td>10</td>\n      <td>$2.35</td>\n    </tr>\n  </tbody>\n</table>\n"
  },
  {
    "path": "src/demos.css",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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.demo-page {\n  width: 100%;\n  height: auto;\n\n  margin: 0;\n  padding: 0;\n\n  padding: 24px;\n  box-sizing: border-box;\n}\n\n.demo-preview-block {\n  padding: 20px;\n  padding-bottom: 0;\n  margin-bottom: 0;\n  box-sizing: border-box;\n  width: 100%;\n}\n\n.demo-code {\n  width: 100%;\n  box-sizing: border-box;\n}\n"
  },
  {
    "path": "src/dialog/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **dialog** component allows for verification of\nuser actions, simple data input, and alerts to provide extra information to users.\n\n## Basic Usage\n\nTo use the dialog component, you must be using a browser that supports the [dialog element](http://www.w3.org/TR/2013/CR-html5-20130806/interactive-elements.html#the-dialog-element).\nOnly Chrome and Opera have native support at the time of writing.\nFor other browsers you will need to include the [dialog polyfill](https://github.com/GoogleChrome/dialog-polyfill) or create your own.\n\nOnce you have dialog support create a dialog element.\nThe element when using the polyfill **must** be a child of the `body` element.\nWithin that container, add a content element with the class `mdl-dialog__content`.\nAdd your content, then create an action container with the class `mdl-dialog__actions`.\nFinally for the markup, add your buttons within this container for triggering dialog functions.\n\nKeep in mind, the order is automatically reversed for actions.\nMaterial Design requires that the primary (confirmation) action be displayed last.\nSo, the first action you create will appear last on the action bar.\nThis allows for more natural coding and tab ordering while following the specification.\n\nRemember to add the event handlers for your action items.\nAfter your dialog markup is created, add the event listeners to the page to trigger the dialog to show.\n\nFor example:\n\n```javascript\n  var button = document.querySelector('button');\n  var dialog = document.querySelector('dialog');\n  button.addEventListener('click', function() {\n    dialog.showModal();\n    /* Or dialog.show(); to show the dialog without a backdrop. */\n  });\n```\n\n## Examples\n\n### Simple Dialog\n\nSee this example live in [codepen](http://codepen.io/Garbee/full/EPoaMj/).\n\n```html\n<body>\n  <button id=\"show-dialog\" type=\"button\" class=\"mdl-button\">Show Dialog</button>\n  <dialog class=\"mdl-dialog\">\n    <h4 class=\"mdl-dialog__title\">Allow data collection?</h4>\n    <div class=\"mdl-dialog__content\">\n      <p>\n        Allowing us to collect data will let us get you the information you want faster.\n      </p>\n    </div>\n    <div class=\"mdl-dialog__actions\">\n      <button type=\"button\" class=\"mdl-button\">Agree</button>\n      <button type=\"button\" class=\"mdl-button close\">Disagree</button>\n    </div>\n  </dialog>\n  <script>\n    var dialog = document.querySelector('dialog');\n    var showDialogButton = document.querySelector('#show-dialog');\n    if (! dialog.showModal) {\n      dialogPolyfill.registerDialog(dialog);\n    }\n    showDialogButton.addEventListener('click', function() {\n      dialog.showModal();\n    });\n    dialog.querySelector('.close').addEventListener('click', function() {\n      dialog.close();\n    });\n  </script>\n</body>\n```\n\n### Dialog with full width actions\n\nSee this example live in [codepen](http://codepen.io/Garbee/full/JGMowG/).\n\n```html\n<body>\n  <button type=\"button\" class=\"mdl-button show-modal\">Show Modal</button>\n  <dialog class=\"mdl-dialog\">\n    <div class=\"mdl-dialog__content\">\n      <p>\n        Allow this site to collect usage data to improve your experience?\n      </p>\n    </div>\n    <div class=\"mdl-dialog__actions mdl-dialog__actions--full-width\">\n      <button type=\"button\" class=\"mdl-button\">Agree</button>\n      <button type=\"button\" class=\"mdl-button close\">Disagree</button>\n    </div>\n  </dialog>\n  <script>\n    var dialog = document.querySelector('dialog');\n    var showModalButton = document.querySelector('.show-modal');\n    if (! dialog.showModal) {\n      dialogPolyfill.registerDialog(dialog);\n    }\n    showModalButton.addEventListener('click', function() {\n      dialog.showModal();\n    });\n    dialog.querySelector('.close').addEventListener('click', function() {\n      dialog.close();\n    });\n  </script>\n</body>\n```\n\n## CSS Classes\n\n### Blocks\n\n| MDL Class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-dialog` | Defines the container of the dialog component. | Required on dialog container. |\n\n### Elements\n\n| MDL Class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-dialog__title` | Defines the title container in the dialog. | Optional on title container. |\n| `mdl-dialog__content` | Defines the content container of the dialog. | Required on content container. |\n| `mdl-dialog__actions` | Defines the actions container in the dialog. | Required on action container. |\n\n### Modifiers\n\n| MDL Class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-dialog__actions--full-width` | Modifies the actions to each take the full width of the container. This makes each take their own line. | Optional on action container. |\n"
  },
  {
    "path": "src/dialog/_dialog.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n@import \"../mixins\";\n\n.mdl-dialog {\n    border: none;\n    @include shadow-24dp;\n    @include dialog-width;\n\n    &__title {\n        padding: 24px 24px 0;\n        margin: 0;\n        font-size: 2.5rem;\n    }\n    &__actions {\n        padding: 8px 8px 8px 24px;\n        display: flex;\n        flex-direction: row-reverse;\n        flex-wrap: wrap;\n        > * {\n            margin-right: 8px;\n            height: 36px;\n            &:first-child {\n                margin-right: 0;\n            }\n        }\n        &--full-width {\n          padding: 0 0 8px 0;\n          > * {\n            height: 48px;\n            flex: 0 0 auto;\n            width: 100%; //@see https://github.com/philipwalton/flexbugs#7-flex-basis-doesnt-account-for-box-sizingborder-box\n            padding-right: 16px;\n            margin-right: 0;\n            text-align: right;\n          }\n        }\n    }\n    &__content {\n        padding: 20px 24px 24px 24px;\n        color: $dialog-content-color;\n    }\n}\n"
  },
  {
    "path": "src/expansion/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **expansion** component provides a clean interface\nto show collapsable content areas to users.\n\n## Basic Usage\n\nTo use the expansion panel component browsers must support the [details element](https://www.w3.org/TR/2011/WD-html5-author-20110809/the-details-element.html). Currently only [IE and Edge](http://caniuse.com/#feat=details) do not provide support for this. For support there you'll need to include a polyfill for the `<details>` element. There are a few available which each have different pitfalls to test them to find the one that best suites your needs.\n\nOnce you have support for detail elements all you need to do is make them with a summary and content containers. Remember that the content element comes directly after the summary element and contains all the rest of the content for the block. If your content has a form or some kind of actions for the user to carry out, include an actions container with actions in the content container.\n\nKeep in mind, the order is automatically reversed for actions.\nMaterial Design requires that the primary (confirmation) action be displayed last.\nSo, the first action you create will appear last on the action bar.\nThis allows for more natural coding and tab ordering while following the specification.\n\nRemember to add the event handlers for your action items.\n\n## CSS Classes\n\n### Blocks\n\n| MDL Class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-expansion` | Defines the container of the expansion component. | Required on expansion container. |\n\n### Elements\n\n\n| MDL Class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-expansion__summary` | Defines the summary container for the expansion panel. | Required on summary container. |\n| `mdl-expansion__header` | Defines the primary header for the summary. | Required on the header container within the summary. |\n| `mdl-expansion__subheader` | Defines the subheading for the summary. | Optional on a node within the header container. |\n| `mdl-expansion__secondary-header` | Defines auxiliary content for the summary. | Optional on a node within the summary container. |\n| `mdl-expansion__content` | Defines the container node for the content that is toggled. | Required on container node after the summary. |\n| `mdl-expansion__actions` | Defines the container node for the actions for any forms within the content. | Optional on container within the content |\n| `mdl-expansion__action` | Defines an action trigger to provide the appropriate margin. | Optional on trigger within the actions. |\n\n### Modifiers\n\nThere are no modifiers for the expansion panel.\n"
  },
  {
    "path": "src/expansion/_expansion.scss",
    "content": "/**\n * Copyright 2016 Google Inc. 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 *      http://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@import \"../variables\";\n@import \"../mixins\";\n\n.mdl-expansion {\n  border-bottom: 1px solid rgba(0, 0, 0, .12);\n  box-sizing: border-box;\n\n  &__summary {\n    @include typo-preferred-font;\n    padding-left: 24px;\n    padding-right: 24px;\n    height: 48px;\n    display: flex;\n    outline: none;\n\n    &::-webkit-details-marker {\n      display: none;\n    }\n\n    &::after {\n      @include typo-icon;\n      content: '\\e313';\n      display: inline-flex;\n      flex-direction: column;\n      user-select: none;\n      justify-content: center;\n      transition: transform 200ms, color 200ms;\n      margin-left: auto;\n      color: rgba(0, 0, 0, .38);\n    }\n\n    &:focus {\n      background-color: unquote(\"rgba(#{$palette-grey-200}, 1)\");\n      &::after {\n        color: rgba(0, 0, 0, .54);\n      }\n    }\n  }\n\n  &__header {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    font-size: 0.9375rem;\n    font-weight: 500;\n    flex-basis: 30%;\n    margin-right: 16px;\n  }\n\n  &__subheader {\n    font-size: .75rem;\n    color: rgba(0, 0, 0, .54);\n  }\n\n  &__secondary-header {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    font-size: 0.9375rem;\n    font-weight: 500;\n    flex-basis: 30%;\n    color: rgba(0, 0, 0, .87);\n    margin-right: 16px;\n  }\n\n  &__content {\n    @include typo-preferred-font;\n    padding-left: 24px;\n    padding-right: 24px;\n    padding-top: 16px;\n    padding-bottom: 16px;\n    &+.mdl-expansion__actions {\n      border-top: 1px solid rgba(0, 0, 0, .12);\n    }\n  }\n\n  &__actions {\n    display: flex;\n    flex-direction: row-reverse;\n    padding-top: 16px;\n    padding-bottom: 16px;\n  }\n\n  &__action {\n    margin-right: 8px;\n  }\n\n  &[open] {\n    .mdl-expansion__summary::after {\n      transform: rotate(180deg);\n    }\n  }\n}\n"
  },
  {
    "path": "src/expansion/snippets/expansion.html",
    "content": "<details class=\"mdl-expansion\">\n  <summary class=\"mdl-expansion__summary\">\n    <span class=\"mdl-expansion__header\">Trip name</span>\n    <span class=\"mdl-expansion__secondary-header\">Caribbean Cruise</span>\n  </summary>\n</details>\n<details class=\"mdl-expansion\">\n  <summary class=\"mdl-expansion__summary\">\n    <span class=\"mdl-expansion__header\">Location</span>\n    <span class=\"mdl-expansion__secondary-header\">Barbados</span>\n  </summary>\n  \n  <div class=\"mdl-expansion__content\">\n    <select>\n      <option>One</option>\n      <option>two</option>\n    </select>\n  </div>\n  <div class=\"mdl-expansion__actions\">\n    <button class=\"mdl-expansion__action mdl-button mdl-js-button mdl-button--raised mdl-button--colored\">Save</button>\n    <button class=\"mdl-expansion__action mdl-button mdl-js-button mdl-button--raised\">Cancel</button>\n  </div>\n</details>\n<details class=\"mdl-expansion\">\n  <summary class=\"mdl-expansion__summary\">\n    <span class=\"mdl-expansion__header\">Start and end dates</span>\n    <span class=\"mdl-expansion__secondary-header\">Start date: Feb 29, 2016</span>\n    <span class=\"mdl-expansion__secondary-header\">End date: Not set</span>\n  </summary>\n</details>\n<details class=\"mdl-expansion\">\n  <summary class=\"mdl-expansion__summary\">\n    <span class=\"mdl-expansion__header\">Carrier</span>\n    <span class=\"mdl-expansion__secondary-header\">The best cruise line</span>\n  </summary>\n</details>\n<details class=\"mdl-expansion\">\n  <summary class=\"mdl-expansion__summary\">\n    <span class=\"mdl-expansion__header\">\n      Meal preferences\n      <span class=\"mdl-expansion__subheader\">\n        Optional\n      </span>\n    </span>\n    <span class=\"mdl-expansion__secondary-header\">\n      Vegetarian\n    </span>\n  </summary>\n</details>\n"
  },
  {
    "path": "src/footer/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **footer** component is a comprehensive container intended to present a substantial amount of related content in a visually attractive and logically intuitive area. Although it is called \"footer\", it may be placed at any appropriate location on a device screen, either before or after other content.\n\nAn MDL footer component takes two basic forms: *mega-footer* and *mini-footer*. As the names imply, mega-footers contain more (and more complex) content than mini-footers. A mega-footer presents multiple sections of content separated by horizontal rules, while a mini-footer presents a single section of content. Both footer forms have their own internal structures, including required and optional elements, and typically include both informational and clickable content, such as links.\n\nFooters, as represented by this component, are a fairly new feature in user interfaces, and allow users to view discrete blocks of content in a coherent and consistently organized way. Their design and use is an important factor in the overall user experience.\n\n### To include an MDL **mega-footer** component:\n\n&nbsp;1a. Code a `<footer>` element. Inside the footer, include one `<div>` element for each content section, typically three: *top*, *middle*, and *bottom*.\n```html\n<footer>\n  <div>\n  ...\n  </div>\n  <div>\n  ...\n  </div>\n  <div>\n  ...\n  </div>\n</footer>\n```\n&nbsp;1b. Add the appropriate MDL classes to the footer and divs using the `class` attribute.\n```html\n<footer class=\"mdl-mega-footer\">\n  <div class=\"mdl-mega-footer__top-section\">\n  ...\n  </div>\n  <div class=\"mdl-mega-footer__middle-section\">\n  ...\n  </div>\n  <div class=\"mdl-mega-footer__bottom-section\">\n  ...\n  </div>\n</footer>\n```\n&nbsp;2a. Inside the top section div, code two sibling \"inner\" divs for the *left* and *right* content sections.\n```html\n<footer class=\"mdl-mega-footer\">\n  <div class=\"mdl-mega-footer__top-section\">\n    <div>\n    ...\n    </div>\n    <div>\n    ...\n    </div>\n  </div>\n  <div class=\"mdl-mega-footer__middle-section\">\n  ...\n  </div>\n  <div class=\"mdl-mega-footer__bottom-section\">\n  ...\n  </div>\n</footer>\n```\n&nbsp;2b. Add the appropriate MDL classes to the two \"inner\" left and right divs using the `class` attribute.\n```html\n<footer class=\"mdl-mega-footer\">\n  <div class=\"mdl-mega-footer__top-section\">\n    <div class=\"mdl-mega-footer__left-section\">\n    ...\n    </div>\n    <div class=\"mdl-mega-footer__right-section\">\n    ...\n    </div>\n  </div>\n  <div class=\"mdl-mega-footer__middle-section\">\n  ...\n  </div>\n  <div class=\"mdl-mega-footer__bottom-section\">\n  ...\n  </div>\n</footer>\n```\n&nbsp;3a. Inside the middle section div, code one or more sibling \"inner\" divs for the *drop-down* content sections. That is, for two drop-down sections, you would code two divs.\n```html\n<footer class=\"mdl-mega-footer\">\n  <div class=\"mdl-mega-footer__top-section\">\n    <div class=\"mdl-mega-footer__left-section\">\n    ...\n    </div>\n    <div class=\"mdl-mega-footer__right-section\">\n    ...\n    </div>\n  </div>\n  <div class=\"mdl-mega-footer__middle-section\">\n    <div>\n    ...\n    </div>\n    <div>\n    ...\n    </div>\n  </div>\n  <div class=\"mdl-mega-footer__bottom-section\">\n  ...\n  </div>\n</footer>\n```\n&nbsp;3b. Add the appropriate MDL classes to the two \"inner\" drop-down divs using the `class` attribute.\n```html\n<footer class=\"mdl-mega-footer\">\n  <div class=\"mdl-mega-footer__top-section\">\n    <div class=\"mdl-mega-footer__left-section\">\n    ...\n    </div>\n    <div class=\"mdl-mega-footer__right-section\">\n    ...\n    </div>\n  </div>\n  <div class=\"mdl-mega-footer__middle-section\">\n    <div class=\"mdl-mega-footer__drop-down-section\">\n    ...\n    </div>\n    <div class=\"mdl-mega-footer__drop-down-section\">\n    ...\n    </div>\n  </div>\n  <div class=\"mdl-mega-footer__bottom-section\">\n  ...\n  </div>\n</footer>\n```\n&nbsp;4a. Inside the bottom section div, code an \"inner\" div for the section heading and a sibling unordered list for the bottom section links.\n```html\n<footer class=\"mdl-mega-footer\">\n  <div class=\"mdl-mega-footer__top-section\">\n    <div class=\"mdl-mega-footer__left-section\">\n    ...\n    </div>\n    <div class=\"mdl-mega-footer__right-section\">\n    ...\n    </div>\n  </div>\n  <div class=\"mdl-mega-footer__middle-section\">\n    <div class=\"mdl-mega-footer__drop-down-section\">\n    ...\n    </div>\n    <div class=\"mdl-mega-footer__drop-down-section\">\n    ...\n    </div>\n  </div>\n  <div class=\"mdl-mega-footer__bottom-section\">\n    <div>\n      ...\n    </div>\n    <ul>\n      ...\n    </ul>\n  </div>\n</footer>\n```\n&nbsp;4b. Add the appropriate MDL classes to the \"inner\" div heading and list using the `class` attribute.\n```html\n<footer class=\"mdl-mega-footer\">\n  <div class=\"mdl-mega-footer__top-section\">\n    <div class=\"mdl-mega-footer__left-section\">\n    ...\n    </div>\n    <div class=\"mdl-mega-footer__right-section\">\n    ...\n    </div>\n  </div>\n  <div class=\"mdl-mega-footer__middle-section\">\n    <div class=\"mdl-mega-footer__drop-down-section\">\n    ...\n    </div>\n    <div class=\"mdl-mega-footer__drop-down-section\">\n    ...\n    </div>\n  </div>\n  <div class=\"mdl-mega-footer__bottom-section\">\n    <div class=\"mdl-logo\">\n    </div>\n    <ul class=\"mdl-mega-footer__link-list\">\n      ...\n    </ul>\n  </div>\n</footer>\n```\n&nbsp;5. Add content to the top (left and right), middle (drop-downs), and bottom (text and links) sections of the footer; include any appropriate MDL classes using the `class` attribute.\n```html\n<footer class=\"mdl-mega-footer\">\n  <div class=\"mdl-mega-footer__top-section\">\n    <div class=\"mdl-mega-footer__left-section\">\n      <button class=\"mdl-mega-footer__social-btn\"></button>\n      <button class=\"mdl-mega-footer__social-btn\"></button>\n      <button class=\"mdl-mega-footer__social-btn\"></button>\n    </div>\n    <div class=\"mdl-mega-footer__right-section\">\n      <a href=\"\">Link 1</a>\n      <a href=\"\">Link 2</a>\n      <a href=\"\">Link 3</a>\n    </div>\n  </div>\n  <div class=\"mdl-mega-footer__middle-section\">\n    <div class=\"mdl-mega-footer__drop-down-section\">\n      <h1 class=\"mdl-mega-footer__heading\">Drop-down 1 Heading</h1>\n      <ul class=\"mdl-mega-footer__link-list\">\n        <li><a href=\"\">Link A</a></li>\n        <li><a href=\"\">Link B</a></li>\n        <li><a href=\"\">Link C</a></li>\n        <li><a href=\"\">Link D</a></li>\n      </ul>\n    </div>\n    <div class=\"mdl-mega-footer__drop-down-section\">\n      <h1 class=\"mdl-mega-footer__heading\">Drop-down 2 Heading</h1>\n      <ul class=\"mdl-mega-footer__link-list\">\n        <li><a href=\"\">Link A</a></li>\n        <li><a href=\"\">Link B</a></li>\n        <li><a href=\"\">Link C</a></li>\n      </ul>\n    </div>\n  </div>\n  <div class=\"mdl-mega-footer__bottom-section\">\n    <div class=\"mdl-logo\">\n    Mega-Footer Bottom Section Heading\n    </div>\n    <ul class=\"mdl-mega-footer__link-list\">\n      <li><a href=\"\">Link A</a></li>\n      <li><a href=\"\">Link B</a></li>\n    </ul>\n  </div>\n</footer>\n```\n\nThe mega-footer component is ready for use.\n\n#### Examples\n\nA mega-footer component with three sections and two drop-down sections in the middle section.\n```html\n<footer class=\"mdl-mega-footer\">\n  <div class=\"mdl-mega-footer__top-section\">\n    <div class=\"mdl-mega-footer__left-section\">\n      <button class=\"mdl-mega-footer__social-btn\"></button>\n      <button class=\"mdl-mega-footer__social-btn\"></button>\n      <button class=\"mdl-mega-footer__social-btn\"></button>\n    </div>\n    <div class=\"mdl-mega-footer__right-section\">\n      <a href=\"#\">Introduction</a>\n      <a href=\"#\">App Status Dashboard</a>\n      <a href=\"#\">Terms of Service</a>\n    </div>\n  </div>\n  <div class=\"mdl-mega-footer__middle-section\">\n    <div class=\"mdl-mega-footer__drop-down-section\">\n      <h1 class=\"mdl-mega-footer__heading\">Learning and Support</h1>\n      <ul class=\"mdl-mega-footer__link-list\">\n        <li><a href=\"#\">Resource Center</a></li>\n        <li><a href=\"#\">Help Center</a></li>\n        <li><a href=\"#\">Community</a></li>\n        <li><a href=\"#\">Learn with Google</a></li>\n        <li><a href=\"#\">Small Business Community</a></li>\n        <li><a href=\"#\">Think Insights</a></li>\n      </ul>\n    </div>\n    <div class=\"mdl-mega-footer__drop-down-section\">\n      <h1 class=\"mdl-mega-footer__heading\">Just for Developers</h1>\n      <ul class=\"mdl-mega-footer__link-list\">\n        <li><a href=\"#\">Google Developers</a></li>\n        <li><a href=\"#\">AdWords API</a></li>\n        <li><a href=\"#\">AdWords Scipts</a></li>\n        <li><a href=\"#\">AdWords Remarketing Tag</a></li>\n      </ul>\n    </div>\n  </div>\n  <div class=\"mdl-mega-footer__bottom-section\">\n    <div class=\"mdl-logo\">\n      More Information\n    </div>\n    <ul class=\"mdl-mega-footer__link-list\">\n      <li><a href=\"#\">Help</a></li>\n      <li><a href=\"#\">Privacy and Terms</a></li>\n    </ul>\n  </div>\n</footer>\n```\n\n### To include an MDL **mini-footer** component:\n\n&nbsp;1a. Code a `<footer>` element. Inside the footer, code two `<div>` elements, one for the *left* section and one for the *right* section.\n```html\n<footer>\n  <div>\n  ...\n  </div>\n  <div>\n  ...\n  </div>\n</footer>\n```\n&nbsp;1b. Add the appropriate MDL classes to the footer and divs using the `class` attribute.\n```html\n<footer class=\"mdl-mini-footer\">\n  <div class=\"mdl-mini-footer__left-section\">\n  ...\n  </div>\n  <div class=\"mdl-mini-footer__right-section\">\n  ...\n  </div>\n</footer>\n```\n&nbsp;2a. Inside the left section div, code an \"inner\" div for the section heading and a sibling unordered list for the left section links.\n```html\n<footer class=\"mdl-mini-footer\">\n  <div class=\"mdl-mini-footer__left-section\">\n    <div>\n      ...\n    </div>\n    <ul>\n      ...\n    </ul>\n  </div>\n  <div class=\"mdl-mini-footer__right-section\">\n  ...\n  </div>\n</footer>\n```\n&nbsp;2b. Add the appropriate MDL classes to the \"inner\" div and list using the `class` attribute.\n```html\n<footer class=\"mdl-mini-footer\">\n  <div class=\"mdl-mini-footer__left-section\">\n    <div class=\"mdl-logo\">\n      ...\n    </div>\n    <ul class=\"mdl-mini-footer__link-list\">\n      ...\n    </ul>\n  </div>\n  <div class=\"mdl-mini-footer__right-section\">\n  ...\n  </div>\n</footer>\n```\n&nbsp;3. Add content to the left (text and links) and right (text or decoration) sections of the footer; include any appropriate MDL classes using the `class` attribute.\n```html\n<footer class=\"mdl-mini-footer\">\n  <div class=\"mdl-mini-footer__left-section\">\n    <div class=\"mdl-logo\">\n      Mini-footer Heading\n    </div>\n    <ul class=\"mdl-mini-footer__link-list\">\n      <li><a href=\"\">Link 1</a></li>\n      <li><a href=\"\">Link 2</a></li>\n      <li><a href=\"\">Link 3</a></li>\n    </ul>\n  </div>\n  <div class=\"mdl-mini-footer__right-section\">\n    <button class=\"mdl-mini-footer__social-btn\"></button>\n    <button class=\"mdl-mini-footer__social-btn\"></button>\n    <button class=\"mdl-mini-footer__social-btn\"></button>\n  </div>\n</footer>\n```\n\nThe mini-footer component is ready for use.\n\n#### Examples\n\nA mini-footer with left and right sections.\n\n```html\n<footer class=\"mdl-mini-footer\">\n  <div class=\"mdl-mini-footer__left-section\">\n    <div class=\"mdl-logo\">\n      More Information\n    </div>\n    <ul class=\"mdl-mini-footer__link-list\">\n      <li><a href=\"#\">Help</a></li>\n      <li><a href=\"#\">Privacy and Terms</a></li>\n      <li><a href=\"#\">User Agreement</a></li>\n    </ul>\n  </div>\n  <div class=\"mdl-mini-footer__right-section\">\n    <button class=\"mdl-mini-footer__social-btn\"></button>\n    <button class=\"mdl-mini-footer__social-btn\"></button>\n    <button class=\"mdl-mini-footer__social-btn\"></button>\n  </div>\n</footer>\n```\n\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual enhancements to the footer. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-mega-footer` | Defines container as an MDL mega-footer component | Required on footer element |\n| `mdl-mega-footer__top-section` | Defines container as a footer top section | Required on top section \"outer\" div element |\n| `mdl-mega-footer__left-section` | Defines container as a left section | Required on left section \"inner\" div element |\n| `mdl-mega-footer__social-btn` | Defines a decorative square within mega-footer | Required on button element (if used) |\n| `mdl-mega-footer__right-section` | Defines container as a right section | Required on right section \"inner\" div element |\n| `mdl-mega-footer__middle-section` | Defines container as a footer middle section | Required on middle section \"outer\" div element |\n| `mdl-mega-footer__drop-down-section` | Defines container as a drop-down (vertical) content area | Required on drop-down \"inner\" div elements |\n| `mdl-mega-footer__heading` | Defines a heading as a mega-footer heading | Required on h1 element inside drop-down section |\n| `mdl-mega-footer__link-list` | Defines an unordered list as a drop-down (vertical) list | Required on ul element inside drop-down section |\n| `mdl-mega-footer__bottom-section` | Defines container as a footer bottom section | Required on bottom section \"outer\" div element |\n| `mdl-logo` | Defines a container as a styled section heading | Required on \"inner\" div element in mega-footer bottom-section or mini-footer left-section |\n| `mdl-mini-footer` | Defines container as an MDL mini-footer component | Required on footer element |\n| `mdl-mini-footer__left-section` | Defines container as a left section | Required on left section \"inner\" div element |\n| `mdl-mini-footer__link-list` | Defines an unordered list as an inline (horizontal) list | Required on ul element sibling to \"mdl-logo\" div element |\n| `mdl-mini-footer__right-section` | Defines container as a right section | Required on right section \"inner\" div element |\n| `mdl-mini-footer__social-btn` | Defines a decorative square within mini-footer | Required on button element (if used) |\n"
  },
  {
    "path": "src/footer/_mega_footer.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n@import \"../mixins\";\n\n.mdl-mega-footer {\n  padding: $footer-min-padding $footer-padding-sides;\n\n  color: $footer-color;\n  background-color: $footer-bg-color;\n}\n\n\n.mdl-mega-footer--top-section:after,\n.mdl-mega-footer--middle-section:after,\n.mdl-mega-footer--bottom-section:after,\n.mdl-mega-footer__top-section:after,\n.mdl-mega-footer__middle-section:after,\n.mdl-mega-footer__bottom-section:after {\n  content: '';\n  display: block;\n  clear: both;\n}\n\n.mdl-mega-footer--left-section,\n.mdl-mega-footer__left-section {\n  margin-bottom: $footer-min-padding;\n}\n\n.mdl-mega-footer--right-section,\n.mdl-mega-footer__right-section {\n  margin-bottom: $footer-min-padding;\n}\n\n.mdl-mega-footer--right-section a,\n.mdl-mega-footer__right-section a {\n  display: block;\n\n  margin-bottom: $footer-min-padding;\n\n  color: inherit;\n  text-decoration: none;\n}\n\n@media screen and (min-width: 760px) {\n  .mdl-mega-footer--left-section,\n  .mdl-mega-footer__left-section {\n    float: left;\n  }\n\n  .mdl-mega-footer--right-section,\n  .mdl-mega-footer__right-section {\n    float: right;\n  }\n\n  .mdl-mega-footer--right-section a,\n  .mdl-mega-footer__right-section a {\n    display: inline-block;\n\n    margin-left: $footer-min-padding;\n\n    line-height: $footer-btn-size;\n    vertical-align: middle;\n  }\n}\n\n.mdl-mega-footer--social-btn,\n.mdl-mega-footer__social-btn {\n  width: $footer-btn-size;\n  height: $footer-btn-size;\n\n  padding: 0;\n  margin: 0;\n\n  background-color: $footer-button-fill-color;\n\n  border: none;\n}\n\n.mdl-mega-footer--drop-down-section,\n.mdl-mega-footer__drop-down-section {\n  display: block;\n\n  position: relative;\n}\n\n@media screen and (min-width: 760px) {\n  .mdl-mega-footer--drop-down-section,\n  .mdl-mega-footer__drop-down-section {\n    width: 33%;\n  }\n\n  .mdl-mega-footer--drop-down-section:nth-child(1),\n  .mdl-mega-footer--drop-down-section:nth-child(2),\n  .mdl-mega-footer__drop-down-section:nth-child(1),\n  .mdl-mega-footer__drop-down-section:nth-child(2) {\n    float: left;\n  }\n\n  .mdl-mega-footer--drop-down-section:nth-child(3),\n  .mdl-mega-footer__drop-down-section:nth-child(3) {\n    float: right;\n\n    &:after {\n      clear: right;\n    }\n  }\n\n  .mdl-mega-footer--drop-down-section:nth-child(4),\n  .mdl-mega-footer__drop-down-section:nth-child(4) {\n    clear: right;\n    float: right;\n  }\n\n  .mdl-mega-footer--middle-section:after,\n  .mdl-mega-footer__middle-section:after {\n    content: '';\n\n    display: block;\n\n    clear: both;\n  }\n\n  .mdl-mega-footer--bottom-section,\n  .mdl-mega-footer__bottom-section {\n    padding-top: 0;\n  }\n}\n\n@media screen and (min-width: 1024px) {\n  .mdl-mega-footer--drop-down-section,\n  .mdl-mega-footer--drop-down-section:nth-child(3),\n  .mdl-mega-footer--drop-down-section:nth-child(4),\n  .mdl-mega-footer__drop-down-section,\n  .mdl-mega-footer__drop-down-section:nth-child(3),\n  .mdl-mega-footer__drop-down-section:nth-child(4) {\n    width: 24%;\n\n    float: left;\n  }\n}\n\n.mdl-mega-footer--heading-checkbox,\n.mdl-mega-footer__heading-checkbox {\n  position: absolute;\n  width: 100%;\n  height: $footer-heading-line-height + ($footer-min-padding * 2);\n\n  padding: ($footer-min-padding * 2);\n  margin: 0;\n  margin-top: -$footer-min-padding;\n\n  cursor: pointer;\n\n  z-index: 1;\n  opacity: 0;\n\n  & + .mdl-mega-footer--heading:after,\n  & + .mdl-mega-footer__heading:after {\n    font-family: 'Material Icons';\n    content: '\\E5CE'\n  }\n}\n\n.mdl-mega-footer--heading-checkbox:checked,\n.mdl-mega-footer__heading-checkbox:checked {\n  // WebViews in iOS 9 break the \"~\" operator, and WebViews in OS X 10.10\n  // break consecutive \"+\" operators in some cases. Therefore, we need to use\n  // both here to cover all the bases.\n  & ~ .mdl-mega-footer--link-list,\n  & ~ .mdl-mega-footer__link-list,\n  & + .mdl-mega-footer--heading + .mdl-mega-footer--link-list,\n  & + .mdl-mega-footer__heading + .mdl-mega-footer__link-list {\n    display: none;\n  }\n\n  & + .mdl-mega-footer--heading:after,\n  & + .mdl-mega-footer__heading:after {\n    font-family: 'Material Icons';\n    content: '\\E5CF'\n  }\n}\n\n.mdl-mega-footer--heading,\n.mdl-mega-footer__heading {\n  position: relative;\n  width: 100%;\n\n  padding-right: $footer-heading-line-height + $footer-min-padding;\n  margin-bottom: $footer-min-padding;\n\n  box-sizing:border-box;\n\n  font-size: $footer-heading-font-size;\n  line-height: $footer-heading-line-height;\n\n  font-weight: 500;\n\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  overflow: hidden;\n\n  color: $footer-heading-color;\n}\n\n.mdl-mega-footer--heading:after,\n.mdl-mega-footer__heading:after {\n  content: '';\n\n  position: absolute;\n  top: 0;\n  right: 0;\n\n  display: block;\n\n  width: $footer-heading-line-height;\n  height: $footer-heading-line-height;\n\n  background-size: cover;\n}\n\n.mdl-mega-footer--link-list,\n.mdl-mega-footer__link-list {\n  list-style: none;\n\n  margin: 0;\n  padding: 0;\n\n  margin-bottom: $footer-min-padding * 2;\n  &:after {\n    clear: both;\n    display: block;\n    content: '';\n  }\n}\n\n.mdl-mega-footer--link-list li,\n.mdl-mega-footer__link-list li {\n  @include typo-body-1();\n  line-height: 20px;\n}\n\n.mdl-mega-footer--link-list a,\n.mdl-mega-footer__link-list a {\n  color: inherit;\n  text-decoration: none;\n  white-space: nowrap;\n}\n\n@media screen and (min-width: 760px) {\n  .mdl-mega-footer--heading-checkbox,\n  .mdl-mega-footer__heading-checkbox {\n    display: none;\n\n    & + .mdl-mega-footer--heading:after,\n    & + .mdl-mega-footer__heading:after {\n      content: '';\n    }\n  }\n  .mdl-mega-footer--heading-checkbox:checked,\n  .mdl-mega-footer__heading-checkbox:checked {\n    // WebViews in iOS 9 break the \"~\" operator, and WebViews in OS X 10.10\n    // break consecutive \"+\" operators in some cases. Therefore, we need to use\n    // both here to cover all the bases.\n    & ~ .mdl-mega-footer--link-list,\n    & ~ .mdl-mega-footer__link-list,\n    & + .mdl-mega-footer__heading + .mdl-mega-footer__link-list,\n    & + .mdl-mega-footer--heading + .mdl-mega-footer--link-list {\n      display: block;\n    }\n\n    & + .mdl-mega-footer--heading:after,\n    & + .mdl-mega-footer__heading:after {\n      content: '';\n    }\n  }\n}\n\n.mdl-mega-footer--bottom-section,\n.mdl-mega-footer__bottom-section {\n  padding-top: $footer-min-padding;\n  margin-bottom: $footer-min-padding;\n}\n\n.mdl-logo {\n  margin-bottom: $footer-min-padding;\n  color: white;\n}\n\n.mdl-mega-footer--bottom-section .mdl-mega-footer--link-list li,\n.mdl-mega-footer__bottom-section .mdl-mega-footer__link-list li {\n  float: left;\n\n  margin-bottom: 0;\n  margin-right: $footer-min-padding;\n}\n\n\n\n@media screen and (min-width: 760px) {\n  .mdl-logo {\n    float: left;\n\n    margin-bottom: 0;\n    margin-right: $footer-min-padding;\n  }\n}\n"
  },
  {
    "path": "src/footer/_mini_footer.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n\n.mdl-mini-footer {\n  display: flex;\n  flex-flow: row wrap;\n  justify-content: space-between;\n\n  padding: ($padding * 2) $padding;\n\n  color: $footer-color;\n  background-color: $footer-bg-color;\n\n  &:after {\n    content: '';\n    display: block;\n  }\n\n  & .mdl-logo {\n    line-height: $footer-btn-size;\n  }\n}\n\n.mdl-mini-footer--link-list,\n.mdl-mini-footer__link-list {\n  display: flex;\n  flex-flow: row nowrap;\n\n  list-style: none;\n\n  margin: 0;\n  padding: 0;\n\n  & li {\n    margin-bottom: 0;\n    margin-right: $padding;\n\n    @media screen and (min-width: 760px) {\n      line-height: $footer-btn-size;\n    }\n  }\n\n  & a {\n    color: inherit;\n    text-decoration: none;\n    white-space: nowrap;\n  }\n}\n\n.mdl-mini-footer--left-section,\n.mdl-mini-footer__left-section {\n  display: inline-block;\n  order: 0;\n}\n\n.mdl-mini-footer--right-section,\n.mdl-mini-footer__right-section {\n  display: inline-block;\n  order: 1;\n}\n\n.mdl-mini-footer--social-btn,\n.mdl-mini-footer__social-btn {\n  width: $footer-btn-size;\n  height: $footer-btn-size;\n\n  padding: 0;\n  margin: 0;\n\n  background-color: $footer-button-fill-color;\n\n  border: none;\n}\n"
  },
  {
    "path": "src/footer/snippets/mega-footer.html",
    "content": "<footer class=\"mdl-mega-footer\">\n  <div class=\"mdl-mega-footer__middle-section\">\n\n    <div class=\"mdl-mega-footer__drop-down-section\">\n      <input class=\"mdl-mega-footer__heading-checkbox\" type=\"checkbox\" checked>\n      <h1 class=\"mdl-mega-footer__heading\">Features</h1>\n      <ul class=\"mdl-mega-footer__link-list\">\n        <li><a href=\"#\">About</a></li>\n        <li><a href=\"#\">Terms</a></li>\n        <li><a href=\"#\">Partners</a></li>\n        <li><a href=\"#\">Updates</a></li>\n      </ul>\n    </div>\n\n    <div class=\"mdl-mega-footer__drop-down-section\">\n      <input class=\"mdl-mega-footer__heading-checkbox\" type=\"checkbox\" checked>\n      <h1 class=\"mdl-mega-footer__heading\">Details</h1>\n      <ul class=\"mdl-mega-footer__link-list\">\n        <li><a href=\"#\">Specs</a></li>\n        <li><a href=\"#\">Tools</a></li>\n        <li><a href=\"#\">Resources</a></li>\n      </ul>\n    </div>\n\n    <div class=\"mdl-mega-footer__drop-down-section\">\n      <input class=\"mdl-mega-footer__heading-checkbox\" type=\"checkbox\" checked>\n      <h1 class=\"mdl-mega-footer__heading\">Technology</h1>\n      <ul class=\"mdl-mega-footer__link-list\">\n        <li><a href=\"#\">How it works</a></li>\n        <li><a href=\"#\">Patterns</a></li>\n        <li><a href=\"#\">Usage</a></li>\n        <li><a href=\"#\">Products</a></li>\n        <li><a href=\"#\">Contracts</a></li>\n      </ul>\n    </div>\n\n    <div class=\"mdl-mega-footer__drop-down-section\">\n      <input class=\"mdl-mega-footer__heading-checkbox\" type=\"checkbox\" checked>\n      <h1 class=\"mdl-mega-footer__heading\">FAQ</h1>\n      <ul class=\"mdl-mega-footer__link-list\">\n        <li><a href=\"#\">Questions</a></li>\n        <li><a href=\"#\">Answers</a></li>\n        <li><a href=\"#\">Contact us</a></li>\n      </ul>\n    </div>\n\n  </div>\n\n  <div class=\"mdl-mega-footer__bottom-section\">\n    <div class=\"mdl-logo\">Title</div>\n    <ul class=\"mdl-mega-footer__link-list\">\n      <li><a href=\"#\">Help</a></li>\n      <li><a href=\"#\">Privacy &amp; Terms</a></li>\n    </ul>\n  </div>\n\n</footer>\n"
  },
  {
    "path": "src/footer/snippets/mini-footer.html",
    "content": "<footer class=\"mdl-mini-footer\">\n  <div class=\"mdl-mini-footer__left-section\">\n    <div class=\"mdl-logo\">Title</div>\n    <ul class=\"mdl-mini-footer__link-list\">\n      <li><a href=\"#\">Help</a></li>\n      <li><a href=\"#\">Privacy &amp; Terms</a></li>\n    </ul>\n  </div>\n</footer>\n"
  },
  {
    "path": "src/grid/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **grid** component is a simplified method for laying out content for multiple screen sizes. It reduces the usual coding burden required to correctly display blocks of content in a variety of display conditions.\n\nThe MDL grid is defined and enclosed by a container element. A grid has 12 columns in the desktop screen size, 8 in the tablet size, and 4 in the phone size, each size having predefined margins and gutters. Cells are laid out sequentially in a row, in the order they are defined, with some exceptions:\n\n- If a cell doesn't fit in the row in one of the screen sizes, it flows into the following line.\n- If a cell has a specified column size equal to or larger than the number of columns for the current screen size, it takes up the entirety of its row.\n\nYou can set a maximum grid width, after which the grid stays centered with padding on either side, by setting its `max-width` CSS property.\n\nGrids are a fairly new and non-standardized feature in most user interfaces, and provide users with a way to view content in an organized manner that might otherwise be difficult to understand or retain. Their design and use is an important factor in the overall user experience.\n\n### To include an MDL **grid** component:\n\n&nbsp;1. Code a `<div>` element; this is the \"outer\" container, intended to hold all of the grid's cells. Style the div as desired (colors, font size, etc.).\n```html\n<div>\n</div>\n```\n&nbsp;2. Add the `mdl-grid` MDL class to the div using the `class` attribute.\n```\n<div class=\"mdl-grid\">\n</div>\n```\n&nbsp;3. For each cell, code one \"inner\" div, including the text to be displayed.\n```html\n<div class=\"mdl-grid\">\n  <div>Content</div>\n  <div>goes</div>\n  <div>here</div>\n</div>\n```\n&nbsp;4. Add the `mdl-cell` class and an `mdl-cell--COLUMN-col` class, where COLUMN specifies the column size for the cell, to the \"inner\" divs using the `class` attribute.\n```html\n<div class=\"mdl-grid\">\n  <div class=\"mdl-cell mdl-cell--4-col\">Content</div>\n  <div class=\"mdl-cell mdl-cell--4-col\">goes</div>\n  <div class=\"mdl-cell mdl-cell--4-col\">here</div>\n</div>\n```\n&nbsp;5. Optionally add an `mdl-cell--COLUMN-col-DEVICE` class, where COLUMN specifies the column size for the cell on a specific device, and DEVICE specifies the device type.\n```html\n<div class=\"mdl-grid\">\n  <div class=\"mdl-cell mdl-cell--4-col mdl-cell--8-col-tablet\">Content</div>\n  <div class=\"mdl-cell mdl-cell--4-col mdl-cell--8-col-tablet\">goes</div>\n  <div class=\"mdl-cell mdl-cell--4-col mdl-cell--8-col-tablet\">here</div>\n</div>\n```\n\nThe grid component is ready for use.\n\n#### Examples\n\nA grid with five cells of column size 1.\n```html\n<div class=\"mdl-grid\">\n  <div class=\"mdl-cell mdl-cell--1-col\">CS 1</div>\n  <div class=\"mdl-cell mdl-cell--1-col\">CS 1</div>\n  <div class=\"mdl-cell mdl-cell--1-col\">CS 1</div>\n  <div class=\"mdl-cell mdl-cell--1-col\">CS 1</div>\n  <div class=\"mdl-cell mdl-cell--1-col\">CS 1</div>\n</div>\n```\n\nA grid with three cells, one of column size 6, one of column size 4, and one of column size 2.\n```html\n<div class=\"mdl-grid\">\n  <div class=\"mdl-cell mdl-cell--6-col\">CS 6</div>\n  <div class=\"mdl-cell mdl-cell--4-col\">CS 4</div>\n  <div class=\"mdl-cell mdl-cell--2-col\">CS 2</div>\n</div>\n```\n\nA grid with three cells of column size 6 that will display as column size 8 on a tablet device.\n```html\n<div class=\"mdl-grid\">\n  <div class=\"mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet\">CS 6 (8 on tablet)</div>\n  <div class=\"mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet\">CS 6 (8 on tablet)</div>\n  <div class=\"mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet\">CS 6 (8 on tablet)</div>\n</div>\n```\n\nA grid with four cells of column size 2 that will display as column size 4 on a phone device.\n\n```html\n<div class=\"mdl-grid\">\n  <div class=\"mdl-cell mdl-cell--2-col mdl-cell--4-col-phone\">CS 2 (4 on phone)</div>\n  <div class=\"mdl-cell mdl-cell--2-col mdl-cell--4-col-phone\">CS 2 (4 on phone)</div>\n  <div class=\"mdl-cell mdl-cell--2-col mdl-cell--4-col-phone\">CS 2 (4 on phone)</div>\n  <div class=\"mdl-cell mdl-cell--2-col mdl-cell--4-col-phone\">CS 2 (4 on phone)</div>\n</div>\n```\n\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual enhancements and behavioral effects to the grid. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-grid` | Defines a container as an MDL grid component | Required on \"outer\" div element |\n| `mdl-cell` | Defines a container as an MDL cell | Required on \"inner\" div elements |\n| `mdl-grid--no-spacing` | Modifies the grid cells to have no margin between them. | Optional on grid container. |\n| `mdl-cell--N-col` | Sets the column size for the cell to N | N is 1-12 inclusive, defaults to 4; optional on \"inner\" div elements|\n| `mdl-cell--N-col-desktop` | Sets the column size for the cell to N in desktop mode only | N is 1-12 inclusive; optional on \"inner\" div elements|\n| `mdl-cell--N-col-tablet` | Sets the column size for the cell to N in tablet mode only | N is 1-8 inclusive; optional on \"inner\" div elements|\n| `mdl-cell--N-col-phone` | Sets the column size for the cell to N in phone mode only | N is 1-4 inclusive; optional on \"inner\" div elements|\n| `mdl-cell--N-offset` | Adds N columns of whitespace before the cell | N is 1-11 inclusive; optional on \"inner\" div elements|\n| `mdl-cell--N-offset-desktop` | Adds N columns of whitespace before the cell in desktop mode | N is 1-11 inclusive; optional on \"inner\" div elements|\n| `mdl-cell--N-offset-tablet` | Adds N columns of whitespace before the cell in tablet mode | N is 1-7 inclusive; optional on \"inner\" div elements|\n| `mdl-cell--N-offset-phone` | Adds N columns of whitespace before the cell in phone mode | N is 1-3 inclusive; optional on \"inner\" div elements|\n| `mdl-cell--order-N` | Reorders cell to position N | N is 1-12 inclusive; optional on \"inner\" div elements|\n| `mdl-cell--order-N-desktop` | Reorders cell to position N when in desktop mode | N is 1-12 inclusive; optional on \"inner\" div elements|\n| `mdl-cell--order-N-tablet` | Reorders cell to position N when in tablet mode | N is 1-12 inclusive; optional on \"inner\" div elements|\n| `mdl-cell--order-N-phone` | Reorders cell to position N when in phone mode | N is 1-12 inclusive; optional on \"inner\" div elements|\n| `mdl-cell--hide-desktop` | Hides the cell when in desktop mode | Optional on \"inner\" div elements |\n| `mdl-cell--hide-tablet` | Hides the cell when in tablet mode | Optional on \"inner\" div elements |\n| `mdl-cell--hide-phone` | Hides the cell when in phone mode | Optional on \"inner\" div elements |\n| `mdl-cell--stretch` | Stretches the cell vertically to fill the parent | Default; optional on \"inner\" div elements |\n| `mdl-cell--top` | Aligns the cell to the top of the parent | Optional on \"inner\" div elements |\n| `mdl-cell--middle` | Aligns the cell to the middle of the parent | Optional on \"inner\" div elements |\n|`mdl-cell--bottom` | Aligns the cell to the bottom of the parent | Optional on \"inner\" div elements |\n"
  },
  {
    "path": "src/grid/_grid.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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* NOTE: Some rules here are applied using duplicate selectors.\n* This is on purpose to increase their specificity when applied.\n* For example: `.mdl-cell--1-col-phone.mdl-cell--1-col-phone`\n*/\n\n@import \"../variables\";\n\n.mdl-grid {\n  display: flex;\n  flex-flow: row wrap;\n  margin: 0 auto 0 auto;\n  align-items: stretch;\n\n  &.mdl-grid--no-spacing {\n    padding: 0;\n  }\n}\n\n.mdl-cell {\n  box-sizing: border-box;\n}\n\n\n.mdl-cell--top {\n  align-self: flex-start;\n}\n\n.mdl-cell--middle {\n  align-self: center;\n}\n\n.mdl-cell--bottom {\n  align-self: flex-end;\n}\n\n.mdl-cell--stretch {\n  align-self: stretch;\n}\n\n.mdl-grid.mdl-grid--no-spacing > .mdl-cell {\n  margin: 0;\n}\n\n// Define order override classes.\n@for $i from 1 through $grid-max-columns {\n  .mdl-cell--order-#{$i} {\n    order: $i;\n  }\n}\n\n\n// Mixins for width calculation.\n@mixin partial-size($size, $columns, $gutter) {\n  width: calc(#{(($size / $columns) * 100)+\"%\"} - #{$gutter});\n\n  .mdl-grid--no-spacing > & {\n    width: #{(($size / $columns) * 100)+\"%\"};\n  }\n}\n\n@mixin full-size($gutter) {\n  @include partial-size(1, 1, $gutter);\n}\n\n@mixin offset-size($size, $columns, $gutter) {\n  margin-left: calc(#{(($size / $columns) * 100)+\"%\"} + #{$gutter / 2});\n\n  .mdl-grid.mdl-grid--no-spacing > & {\n    margin-left: #{(($size / $columns) * 100)+\"%\"};\n  }\n}\n\n\n\n////////// Phone //////////\n\n@media (max-width: $grid-tablet-breakpoint - 1) {\n  .mdl-grid {\n    padding: $grid-phone-margin - ($grid-phone-gutter / 2);\n  }\n\n  .mdl-cell {\n    margin: $grid-phone-gutter / 2;\n    @include partial-size($grid-cell-default-columns, $grid-phone-columns,\n        $grid-phone-gutter);\n  }\n\n  .mdl-cell--hide-phone {\n    display: none !important;\n  }\n\n  // Define order override classes.\n  @for $i from 1 through $grid-max-columns {\n    .mdl-cell--order-#{$i}-phone.mdl-cell--order-#{$i}-phone {\n      order: $i;\n    }\n  }\n\n  // Define partial sizes for columnNumber < totalColumns.\n  @for $i from 1 through ($grid-phone-columns - 1) {\n    .mdl-cell--#{$i}-col,\n    .mdl-cell--#{$i}-col-phone.mdl-cell--#{$i}-col-phone {\n      @include partial-size($i, $grid-phone-columns, $grid-phone-gutter);\n    }\n  }\n\n  // Define 100% for everything else.\n  @for $i from $grid-phone-columns through $grid-desktop-columns {\n    .mdl-cell--#{$i}-col,\n    .mdl-cell--#{$i}-col-phone.mdl-cell--#{$i}-col-phone {\n      @include full-size($grid-phone-gutter);\n    }\n  }\n\n  // Define valid phone offsets.\n  @for $i from 1 through ($grid-phone-columns - 1) {\n    .mdl-cell--#{$i}-offset,\n    .mdl-cell--#{$i}-offset-phone.mdl-cell--#{$i}-offset-phone {\n      @include offset-size($i, $grid-phone-columns, $grid-phone-gutter);\n    }\n  }\n}\n\n\n////////// Tablet //////////\n\n@media (min-width: $grid-tablet-breakpoint) and (max-width: $grid-desktop-breakpoint - 1) {\n  .mdl-grid {\n    padding: $grid-tablet-margin - ($grid-tablet-gutter / 2);\n  }\n\n  .mdl-cell {\n    margin: $grid-tablet-gutter / 2;\n    @include partial-size($grid-cell-default-columns, $grid-tablet-columns,\n        $grid-tablet-gutter);\n  }\n\n  .mdl-cell--hide-tablet {\n    display: none !important;\n  }\n\n  // Define order override classes.\n  @for $i from 1 through $grid-max-columns {\n    .mdl-cell--order-#{$i}-tablet.mdl-cell--order-#{$i}-tablet {\n      order: $i;\n    }\n  }\n\n  // Define partial sizes for columnNumber < totalColumns.\n  @for $i from 1 through ($grid-tablet-columns - 1) {\n    .mdl-cell--#{$i}-col,\n    .mdl-cell--#{$i}-col-tablet.mdl-cell--#{$i}-col-tablet {\n      @include partial-size($i, $grid-tablet-columns, $grid-tablet-gutter);\n    }\n  }\n\n  // Define 100% for everything else.\n  @for $i from $grid-tablet-columns through $grid-desktop-columns {\n    .mdl-cell--#{$i}-col,\n    .mdl-cell--#{$i}-col-tablet.mdl-cell--#{$i}-col-tablet {\n      @include full-size($grid-tablet-gutter);\n    }\n  }\n\n  // Define valid tablet offsets.\n  @for $i from 1 through ($grid-tablet-columns - 1) {\n    .mdl-cell--#{$i}-offset,\n    .mdl-cell--#{$i}-offset-tablet.mdl-cell--#{$i}-offset-tablet {\n      @include offset-size($i, $grid-tablet-columns, $grid-tablet-gutter);\n    }\n  }\n}\n\n\n////////// Desktop //////////\n\n@media (min-width: $grid-desktop-breakpoint) {\n  .mdl-grid {\n    padding: $grid-desktop-margin - ($grid-desktop-gutter / 2);\n  }\n\n  .mdl-cell {\n    margin: $grid-desktop-gutter / 2;\n    @include partial-size($grid-cell-default-columns, $grid-desktop-columns,\n        $grid-desktop-gutter);\n  }\n\n  .mdl-cell--hide-desktop {\n    display: none !important;\n  }\n\n  // Define order override classes.\n  @for $i from 1 through $grid-max-columns {\n    .mdl-cell--order-#{$i}-desktop.mdl-cell--order-#{$i}-desktop {\n      order: $i;\n    }\n  }\n\n  // Define partial sizes for all numbers of columns.\n  @for $i from 1 through $grid-desktop-columns {\n    .mdl-cell--#{$i}-col,\n    .mdl-cell--#{$i}-col-desktop.mdl-cell--#{$i}-col-desktop {\n      @include partial-size($i, $grid-desktop-columns, $grid-desktop-gutter);\n    }\n  }\n\n  // Define valid desktop offsets.\n  @for $i from 1 through ($grid-desktop-columns - 1) {\n    .mdl-cell--#{$i}-offset,\n    .mdl-cell--#{$i}-offset-desktop.mdl-cell--#{$i}-offset-desktop {\n      @include offset-size($i, $grid-desktop-columns, $grid-desktop-gutter);\n    }\n  }\n}\n"
  },
  {
    "path": "src/grid/snippets/codepen-grid.css",
    "content": ".mdl-cell {\n  box-sizing: border-box;\n  background-color: #BDBDBD;\n  height: 200px;\n  padding-left: 8px;\n  padding-top: 4px;\n  color: white;\n}\n.mdl-grid:first-of-type .mdl-cell {\n  height: 50px;\n}\n"
  },
  {
    "path": "src/grid/snippets/grid-demo.html",
    "content": "<style>\n.demo-grid .mdl-cell {\n  box-sizing: border-box;\n  background-color: #BDBDBD;\n  height: 200px;\n  padding-left: 8px;\n  padding-top: 4px;\n  color: white;\n}\n.demo-grid .mdl-grid:first-of-type .mdl-cell {\n  height: 50px;\n}\n</style>\n\n{% include \"grid.html\" %}\n"
  },
  {
    "path": "src/grid/snippets/grid.html",
    "content": "<div class=\"mdl-grid\">\n  <div class=\"mdl-cell mdl-cell--1-col\">1</div>\n  <div class=\"mdl-cell mdl-cell--1-col\">1</div>\n  <div class=\"mdl-cell mdl-cell--1-col\">1</div>\n  <div class=\"mdl-cell mdl-cell--1-col\">1</div>\n  <div class=\"mdl-cell mdl-cell--1-col\">1</div>\n  <div class=\"mdl-cell mdl-cell--1-col\">1</div>\n  <div class=\"mdl-cell mdl-cell--1-col\">1</div>\n  <div class=\"mdl-cell mdl-cell--1-col\">1</div>\n  <div class=\"mdl-cell mdl-cell--1-col\">1</div>\n  <div class=\"mdl-cell mdl-cell--1-col\">1</div>\n  <div class=\"mdl-cell mdl-cell--1-col\">1</div>\n  <div class=\"mdl-cell mdl-cell--1-col\">1</div>\n</div>\n<div class=\"mdl-grid\">\n  <div class=\"mdl-cell mdl-cell--4-col\">4</div>\n  <div class=\"mdl-cell mdl-cell--4-col\">4</div>\n  <div class=\"mdl-cell mdl-cell--4-col\">4</div>\n</div>\n<div class=\"mdl-grid\">\n  <div class=\"mdl-cell mdl-cell--6-col\">6</div>\n  <div class=\"mdl-cell mdl-cell--4-col\">4</div>\n  <div class=\"mdl-cell mdl-cell--2-col\">2</div>\n</div>\n<div class=\"mdl-grid\">\n  <div class=\"mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet\">6 (8 tablet)</div>\n  <div class=\"mdl-cell mdl-cell--4-col mdl-cell--6-col-tablet\">4 (6 tablet)</div>\n  <div class=\"mdl-cell mdl-cell--2-col mdl-cell--4-col-phone\">2 (4 phone)</div>\n</div>\n"
  },
  {
    "path": "src/icon-toggle/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **icon-toggle** component is an enhanced version of the standard HTML `<input type=\"checkbox\">` element. An icon-toggle consists of a user defined icon that indicates, by visual highlighting, a binary condition that will be set or unset when the user clicks or touches it. Like checkboxes, icon-toggles may appear individually or in groups, and can be selected and deselected individually.\n\nIcon toggles, particularly as a replacement for certain checkboxes, can be a valuable feature in user interfaces, regardless of a site's content or function. Their design and use is therefore an important factor in the overall user experience. See the icon-toggle component's [Material Design specifications page](http://www.google.com/design/spec/components/buttons.html#buttons-other-buttons) for details.\n\nThe icon-toggle component can have a more customized visual look than a standard checkbox, and may be initially or programmatically *disabled*.\n\n### To include an MDL **icon-toggle** component:\n\n&nbsp;1. Code a `<label>` element and give it a `for` attribute whose value is the unique id of the icon-toggle it will contain.\n```html\n<label for=\"icon-toggle-1\">\n...\n</label>\n```\n&nbsp;2. Inside the label, code an `<input>` element and give it a `type` attribute whose value is `\"checkbox\"`. Also give it an `id` attribute whose value matches the label's `for` attribute value.\n```html\n<label for=\"icon-toggle-1\">\n  <input type=\"checkbox\" id=\"icon-toggle-1\">\n</label>\n```\n&nbsp;3. Also inside the label, after the input element, code an `<i>` element containing the icon-toggle's desired icon.\n```html\n<label for=\"icon-toggle-1\">\n  <input type=\"checkbox\" id=\"icon-toggle-1\">\n  <i class=\"mdl-icon-toggle__label material-icons\">format_bold</i>\n</label>\n```\n&nbsp;4. Add one or more MDL classes, separated by spaces, to the label and input elements, using the `class` attribute.\n```html\n<label class=\"mdl-icon-toggle mdl-js-icon-toggle mdl-js-ripple-effect\" for=\"icon-toggle-1\">\n  <input type=\"checkbox\" id=\"icon-toggle-1\" class=\"mdl-icon-toggle__input\">\n  <i class=\"mdl-icon-toggle__label material-icons\">format_bold</i>\n</label>\n```\n\nThe icon-toggle component is ready for use.\n\n#### Example\n\nAn icon-toggle with a ripple click effect.\n\n```html\n<label class=\"mdl-icon-toggle mdl-js-icon-toggle mdl-js-ripple-effect\" for=\"icon-toggle-1\">\n  <input type=\"checkbox\" id=\"icon-toggle-1\" class=\"mdl-icon-toggle__input\">\n  <i class=\"mdl-icon-toggle__label material-icons\">format_bold</i>\n</label>\n```\n\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual and behavioral enhancements to the icon-toggle. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-icon-toggle` | Defines label as an MDL component | Required on label element|\n| `mdl-js-icon-toggle` | Assigns basic MDL behavior to label | Required on label element |\n| `mdl-icon-toggle__input` | Applies basic MDL behavior to icon-toggle | Required on input element (icon-toggle) |\n| `mdl-icon-toggle__label` | Applies basic MDL behavior to caption | Required on i element (icon) |\n| `mdl-js-ripple-effect` | Applies *ripple* click effect | Optional; goes on label element, not input element (icon-toggle) |\n\n>**Note:** Disabled versions of all available input types are provided, and are invoked with the standard HTML boolean attribute `disabled`. `<input type=\"checkbox\" id=\"icon-toggle-5\" class=\"mdl-icon-toggle__input\" disabled>`\n>This attribute may be added or removed programmatically via scripting.\n"
  },
  {
    "path": "src/icon-toggle/_icon-toggle.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n\n.mdl-icon-toggle {\n  position: relative;\n\n  z-index: 1;\n\n  vertical-align: middle;\n\n  display: inline-block;\n  height: $icon-toggle-size;\n  margin: 0;\n  padding: 0;\n}\n\n.mdl-icon-toggle__input {\n  line-height: $icon-toggle-size;\n\n  .mdl-icon-toggle.is-upgraded & {\n    // Hide input element, while still making it respond to focus.\n    position: absolute;\n    width: 0;\n    height: 0;\n    margin: 0;\n    padding: 0;\n    opacity: 0;\n    -ms-appearance: none;\n    -moz-appearance: none;\n    -webkit-appearance: none;\n    appearance: none;\n    border: none;\n  }\n}\n\n.mdl-icon-toggle__label {\n  display: inline-block;\n  position: relative;\n  cursor: pointer;\n  height: $icon-toggle-size;\n  width: $icon-toggle-size;\n  min-width: $icon-toggle-size;\n  color: $icon-toggle-color;\n  border-radius: 50%;\n  padding: 0;\n  margin-left: 0;\n  margin-right: 0;\n  text-align: center;\n  background-color: transparent;\n  will-change: background-color;\n  transition: background-color 0.2s $animation-curve-default,\n  color 0.2s $animation-curve-default;\n\n  &.material-icons {\n    line-height: $icon-toggle-size;\n    font-size: $icon-toggle-font-size;\n  }\n\n  .mdl-icon-toggle.is-checked & {\n    color: $icon-toggle-checked-color;\n  }\n\n  .mdl-icon-toggle.is-disabled & {\n    color: $icon-toggle-disabled-color;\n    cursor: auto;\n    transition: none;\n  }\n\n  .mdl-icon-toggle.is-focused & {\n    background-color: $icon-toggle-focus-color;\n  }\n\n  .mdl-icon-toggle.is-focused.is-checked & {\n    background-color: $icon-toggle-checked-focus-color;\n  }\n}\n\n\n.mdl-icon-toggle__ripple-container {\n  position: absolute;\n  z-index: 2;\n  top: -(($icon-toggle-ripple-size - $icon-toggle-size) / 2);\n  left: -(($icon-toggle-ripple-size - $icon-toggle-size) / 2);\n\n  box-sizing: border-box;\n  width: $icon-toggle-ripple-size;\n  height: $icon-toggle-ripple-size;\n  border-radius: 50%;\n\n  cursor: pointer;\n\n  overflow: hidden;\n  -webkit-mask-image: -webkit-radial-gradient(circle, white, black);\n\n  & .mdl-ripple {\n    background: $icon-toggle-color;\n  }\n\n  .mdl-icon-toggle.is-disabled & {\n    cursor: auto;\n  }\n\n  .mdl-icon-toggle.is-disabled & .mdl-ripple {\n    background: transparent;\n  }\n}\n"
  },
  {
    "path": "src/icon-toggle/icon-toggle.js",
    "content": "/**\n * @license\n * Copyright 2015 Google Inc. 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 *      http://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(function() {\n  'use strict';\n\n  /**\n   * Class constructor for icon toggle MDL component.\n   * Implements MDL component design pattern defined at:\n   * https://github.com/jasonmayes/mdl-component-design-pattern\n   *\n   * @constructor\n   * @param {HTMLElement} element The element that will be upgraded.\n   */\n  var MaterialIconToggle = function MaterialIconToggle(element) {\n    this.element_ = element;\n\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialIconToggle'] = MaterialIconToggle;\n\n  /**\n   * Store constants in one place so they can be updated easily.\n   *\n   * @enum {string | number}\n   * @private\n   */\n  MaterialIconToggle.prototype.Constant_ = {\n    TINY_TIMEOUT: 0.001\n  };\n\n  /**\n   * Store strings for class names defined by this component that are used in\n   * JavaScript. This allows us to simply change it in one place should we\n   * decide to modify at a later date.\n   *\n   * @enum {string}\n   * @private\n   */\n  MaterialIconToggle.prototype.CssClasses_ = {\n    INPUT: 'mdl-icon-toggle__input',\n    JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n    RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n    RIPPLE_CONTAINER: 'mdl-icon-toggle__ripple-container',\n    RIPPLE_CENTER: 'mdl-ripple--center',\n    RIPPLE: 'mdl-ripple',\n    IS_FOCUSED: 'is-focused',\n    IS_DISABLED: 'is-disabled',\n    IS_CHECKED: 'is-checked'\n  };\n\n  /**\n   * Handle change of state.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialIconToggle.prototype.onChange_ = function(event) {\n    this.updateClasses_();\n  };\n\n  /**\n   * Handle focus of element.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialIconToggle.prototype.onFocus_ = function(event) {\n    this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n  };\n\n  /**\n   * Handle lost focus of element.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialIconToggle.prototype.onBlur_ = function(event) {\n    this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n  };\n\n  /**\n   * Handle mouseup.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialIconToggle.prototype.onMouseUp_ = function(event) {\n    this.blur_();\n  };\n\n  /**\n   * Handle class updates.\n   *\n   * @private\n   */\n  MaterialIconToggle.prototype.updateClasses_ = function() {\n    this.checkDisabled();\n    this.checkToggleState();\n  };\n\n  /**\n   * Add blur.\n   *\n   * @private\n   */\n  MaterialIconToggle.prototype.blur_ = function() {\n    // TODO: figure out why there's a focus event being fired after our blur,\n    // so that we can avoid this hack.\n    window.setTimeout(function() {\n      this.inputElement_.blur();\n    }.bind(this), /** @type {number} */ (this.Constant_.TINY_TIMEOUT));\n  };\n\n  // Public methods.\n\n  /**\n   * Check the inputs toggle state and update display.\n   *\n   * @public\n   */\n  MaterialIconToggle.prototype.checkToggleState = function() {\n    if (this.inputElement_.checked) {\n      this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n    } else {\n      this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n    }\n  };\n  MaterialIconToggle.prototype['checkToggleState'] =\n      MaterialIconToggle.prototype.checkToggleState;\n\n  /**\n   * Check the inputs disabled state and update display.\n   *\n   * @public\n   */\n  MaterialIconToggle.prototype.checkDisabled = function() {\n    if (this.inputElement_.disabled) {\n      this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n    } else {\n      this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n    }\n  };\n  MaterialIconToggle.prototype['checkDisabled'] =\n      MaterialIconToggle.prototype.checkDisabled;\n\n  /**\n   * Disable icon toggle.\n   *\n   * @public\n   */\n  MaterialIconToggle.prototype.disable = function() {\n    this.inputElement_.disabled = true;\n    this.updateClasses_();\n  };\n  MaterialIconToggle.prototype['disable'] =\n      MaterialIconToggle.prototype.disable;\n\n  /**\n   * Enable icon toggle.\n   *\n   * @public\n   */\n  MaterialIconToggle.prototype.enable = function() {\n    this.inputElement_.disabled = false;\n    this.updateClasses_();\n  };\n  MaterialIconToggle.prototype['enable'] = MaterialIconToggle.prototype.enable;\n\n  /**\n   * Check icon toggle.\n   *\n   * @public\n   */\n  MaterialIconToggle.prototype.check = function() {\n    this.inputElement_.checked = true;\n    this.updateClasses_();\n  };\n  MaterialIconToggle.prototype['check'] = MaterialIconToggle.prototype.check;\n\n  /**\n   * Uncheck icon toggle.\n   *\n   * @public\n   */\n  MaterialIconToggle.prototype.uncheck = function() {\n    this.inputElement_.checked = false;\n    this.updateClasses_();\n  };\n  MaterialIconToggle.prototype['uncheck'] =\n      MaterialIconToggle.prototype.uncheck;\n\n  /**\n   * Initialize element.\n   */\n  MaterialIconToggle.prototype.init = function() {\n\n    if (this.element_) {\n      this.inputElement_ =\n          this.element_.querySelector('.' + this.CssClasses_.INPUT);\n\n      if (this.element_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {\n        this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n        this.rippleContainerElement_ = document.createElement('span');\n        this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n        this.rippleContainerElement_.classList.add(this.CssClasses_.JS_RIPPLE_EFFECT);\n        this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n        this.boundRippleMouseUp = this.onMouseUp_.bind(this);\n        this.rippleContainerElement_.addEventListener('mouseup', this.boundRippleMouseUp);\n\n        var ripple = document.createElement('span');\n        ripple.classList.add(this.CssClasses_.RIPPLE);\n\n        this.rippleContainerElement_.appendChild(ripple);\n        this.element_.appendChild(this.rippleContainerElement_);\n      }\n\n      this.boundInputOnChange = this.onChange_.bind(this);\n      this.boundInputOnFocus = this.onFocus_.bind(this);\n      this.boundInputOnBlur = this.onBlur_.bind(this);\n      this.boundElementOnMouseUp = this.onMouseUp_.bind(this);\n      this.inputElement_.addEventListener('change', this.boundInputOnChange);\n      this.inputElement_.addEventListener('focus', this.boundInputOnFocus);\n      this.inputElement_.addEventListener('blur', this.boundInputOnBlur);\n      this.element_.addEventListener('mouseup', this.boundElementOnMouseUp);\n\n      this.updateClasses_();\n      this.element_.classList.add('is-upgraded');\n    }\n  };\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  componentHandler.register({\n    constructor: MaterialIconToggle,\n    classAsString: 'MaterialIconToggle',\n    cssClass: 'mdl-js-icon-toggle',\n    widget: true\n  });\n})();\n"
  },
  {
    "path": "src/icon-toggle/snippets/icon-off.html",
    "content": "<label class=\"mdl-icon-toggle mdl-js-icon-toggle mdl-js-ripple-effect\" for=\"icon-toggle-2\">\n  <input type=\"checkbox\" id=\"icon-toggle-2\" class=\"mdl-icon-toggle__input\">\n  <i class=\"mdl-icon-toggle__label material-icons\">format_italic</i>\n</label>\n"
  },
  {
    "path": "src/icon-toggle/snippets/icon-on.html",
    "content": "<label class=\"mdl-icon-toggle mdl-js-icon-toggle mdl-js-ripple-effect\" for=\"icon-toggle-1\">\n  <input type=\"checkbox\" id=\"icon-toggle-1\" class=\"mdl-icon-toggle__input\" checked>\n  <i class=\"mdl-icon-toggle__label material-icons\">format_bold</i>\n</label>\n"
  },
  {
    "path": "src/index.html",
    "content": "<!doctype html>\n<html lang=\"\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A front-end template that helps you build fast, modern mobile web apps.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <title>Material Design Lite</title>\n\n    <!-- Add to homescreen for Chrome on Android -->\n    <meta name=\"mobile-web-app-capable\" content=\"yes\">\n    <link rel=\"icon\" sizes=\"192x192\" href=\"images/touch/chrome-touch-icon-192x192.png\">\n\n    <!-- Add to homescreen for Safari on iOS -->\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n    <meta name=\"apple-mobile-web-app-title\" content=\"Material Design Lite\">\n    <link rel=\"apple-touch-icon-precomposed\" href=\"apple-touch-icon-precomposed.png\">\n\n    <!-- Tile icon for Win8 (144x144 + tile color) -->\n    <meta name=\"msapplication-TileImage\" content=\"images/touch/ms-touch-icon-144x144-precomposed.png\">\n    <meta name=\"msapplication-TileColor\" content=\"#3372DF\">\n\n    <!-- SEO: If your mobile URL is different from the desktop URL, add a canonical link to the desktop page https://developers.google.com/webmasters/smartphone-sites/feature-phones -->\n    <!--\n    <link rel=\"canonical\" href=\"http://www.example.com/\">\n    -->\n\n    <!-- Page styles -->\n    <link href='//fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en' rel='stylesheet' type='text/css'>\n\n    <link rel=\"stylesheet\" href=\"styleguide.css\">\n  </head>\n  <body>\n    <div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-drawer mdl-styleguide\">\n\n      <div class=\"mdl-layout__drawer\">\n        <span class=\"mdl-layout-title\">Material Design Lite</span>\n        <nav id=\"main-navigation\" class=\"mdl-navigation\">\n        </nav>\n      </div>\n\n      <div class=\"mdl-layout__content\">\n        <div class=\"styleguide-demo\">\n          <h1>Typography</h1>\n          <iframe src=\"./typography/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>List</h1>\n          <iframe src=\"./list/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Palette</h1>\n          <iframe src=\"./palette/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Shadows</h1>\n          <iframe src=\"./shadow/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Cards</h1>\n          <iframe src=\"./card/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Animation</h1>\n          <iframe src=\"./animation/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Button</h1>\n          <iframe src=\"./button/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Menu</h1>\n          <iframe src=\"./menu/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Text Field</h1>\n          <iframe src=\"./textfield/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Radio Buttons</h1>\n          <iframe src=\"./radio/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Checkbox</h1>\n          <iframe src=\"./checkbox/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Switch</h1>\n          <iframe src=\"./switch/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Icon Toggle</h1>\n          <iframe src=\"./icon-toggle/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Slider</h1>\n          <iframe src=\"./slider/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Spinner</h1>\n          <iframe src=\"./spinner/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Progress Bar</h1>\n          <iframe src=\"./progress/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Layout</h1>\n            <iframe src=\"./layout/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Content Tabs</h1>\n          <iframe src=\"./tabs/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Icons</h1>\n          <iframe src=\"./icons/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n\n        <div class=\"styleguide-demo\">\n          <h1>Tooltip</h1>\n          <iframe src=\"./tooltip/demo.html\" scrolling=\"no\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Column Layout</h1>\n            <iframe src=\"./column-layout/demo.html\"></iframe>\n        </div>\n\n        <div class=\"styleguide-demo\">\n          <h1>Footer</h1>\n            <iframe src=\"./footer/demo.html\"></iframe>\n        </div>\n      </div>\n    </div>\n    <!-- build:js scripts/main.min.js -->\n    <script src=\"mdlComponentHandler.js\"></script>\n    <script src=\"layout/layout.js\" async defer></script>\n    <!-- endbuild -->\n\n    <!-- Script to handle sizing the iFrames -->\n    <script>\n      'use strict';\n      var navList = document.getElementById('main-navigation');\n      var totalDemosPendingLoading = 0;\n      sizeDemos();\n\n      function sizeDemos() {\n        var demos = document.querySelectorAll('.styleguide-demo');\n        totalDemosPendingLoading = demos.length;\n        for (var i = 0; i < demos.length; i++) {\n          var demoTitle = demos[i].querySelector('h1').textContent;\n          var anchorLink = 'demo-' + i;\n\n          // Add list item\n          var navAnchor = document.createElement('a');\n          navAnchor.classList.add('mdl-navigation__link');\n          navAnchor.href = '#' + anchorLink;\n          navAnchor.appendChild(document.createTextNode(demoTitle));\n          navList.appendChild(navAnchor);\n\n          var anchor = document.createElement('a');\n          anchor.id = anchorLink;\n          demos[i].insertBefore(anchor , demos[i].querySelector('h1'));\n\n          // Size iframe\n          sizeDemo(demos[i]);\n        }\n      }\n\n      function sizeDemo(rootDemoElement) {\n        var iframe = rootDemoElement.querySelector('iframe');\n        if (iframe === null) {\n          totalDemosPendingLoading--;\n          return;\n        }\n        iframe.onload = function() {\n          var contentHeight = iframe.contentDocument.documentElement.scrollHeight;\n          iframe.style.height = contentHeight + 'px';\n          iframe.classList.add('heightSet');\n          totalDemosPendingLoading--;\n          if (totalDemosPendingLoading <= 0) {\n            document.body.classList.add('demosLoaded');\n          }\n        };\n      }\n    </script>\n  </body>\n</html>\n"
  },
  {
    "path": "src/layout/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **layout** component is a comprehensive approach to page layout that uses MDL development tenets, allows for efficient use of MDL components, and automatically adapts to different browsers, screen sizes, and devices.\n\nAppropriate and accessible layout is a critical feature of all user interfaces, regardless of a site's content or function. Page design and presentation is therefore an important factor in the overall user experience. See the layout component's [Material Design specifications page](http://www.google.com/design/spec/layout/principles.html) for details.\n\nUse of MDL layout principles simplifies the creation of scalable pages by providing reusable components and encourages consistency across environments by establishing recognizable visual elements, adhering to logical structural grids, and maintaining appropriate spacing across multiple platforms and screen sizes. MDL layout is extremely powerful and dynamic, allowing for great consistency in outward appearance and behavior while maintaining development flexibility and ease of use.\n\n### To include a basic MDL **layout** component:\n\n&nbsp;1. Code a `<div>` element. This is the \"outer\" div that holds the entire layout.\n```html\n<div>\n</div>\n```\n\n>**Note:** The layout cannot be applied directly on the `<body>` element. Always create a nested `<div>` element.\n\n&nbsp;2. Add MDL classes as indicated, separated by spaces, to the div using the `class` attribute.\n```html\n<div class=\"mdl-layout mdl-js-layout\">\n</div>\n```\n\n&nbsp;3. Inside the div, code a `<header>` element. This holds the header row with navigation links that is displayed on large screens, and the menu icon that opens the navigation drawer for smaller screens. Add the MDL class to the header using the `class` attribute.\n```html\n<div class=\"mdl-layout mdl-js-layout\">\n  <header class=\"mdl-layout__header\">\n  </header>\n</div>\n```\n\n&nbsp;4. Inside the header, add a `<div>` to produce the menu icon, and include the MDL class as indicated. The div has no content of its own.\n```html\n<div class=\"mdl-layout mdl-js-layout\">\n  <header class=\"mdl-layout__header\">\n    <div class=\"mdl-layout-icon\"></div>\n  </header>\n</div>\n```\n\n&nbsp;5. Still inside the header, add another `<div>` to hold the header row's content, and include the MDL class as indicated.\n```html\n<div class=\"mdl-layout mdl-js-layout\">\n  <header class=\"mdl-layout__header\">\n    <div class=\"mdl-layout-icon\"></div>\n    <div class=\"mdl-layout__header-row\">\n    </div>\n  </header>\n</div>\n```\n\n&nbsp;6. Inside the header row div, add a span containing the layout title, and include the MDL class as indicated.\n```html\n<div class=\"mdl-layout mdl-js-layout\">\n  <header class=\"mdl-layout__header\">\n    <div class=\"mdl-layout-icon\"></div>\n    <div class=\"mdl-layout__header-row\">\n      <span class=\"mdl-layout__title\">Simple Layout</span>\n    </div>\n  </header>\n</div>\n```\n\n&nbsp;7. Following the span, add a `<div>` to align the header's navigation links to the right, and include the MDL class as indicated.\n```html\n<div class=\"mdl-layout mdl-js-layout\">\n  <header class=\"mdl-layout__header\">\n    <div class=\"mdl-layout-icon\"></div>\n    <div class=\"mdl-layout__header-row\">\n      <span class=\"mdl-layout__title\">Simple Layout</span>\n      <div class=\"mdl-layout-spacer\"></div>\n    </div>\n  </header>\n</div>\n```\n\n&nbsp;8. Following the spacer div, add a `<nav>` element to contain the header's navigation links, and include the MDL class as indicated. Inside the nav, add one anchor `<a>` element for each header link, and include the MDL class as indicated. This completes the layout's header.\n```html\n<div class=\"mdl-layout mdl-js-layout\">\n  <header class=\"mdl-layout__header\">\n    <div class=\"mdl-layout-icon\"></div>\n    <div class=\"mdl-layout__header-row\">\n      <span class=\"mdl-layout__title\">Simple Layout</span>\n      <div class=\"mdl-layout-spacer\"></div>\n      <nav class=\"mdl-navigation\">\n        <a class=\"mdl-navigation__link\" href=\"#\">Nav link 1</a>\n        <a class=\"mdl-navigation__link\" href=\"#\">Nav link 2</a>\n        <a class=\"mdl-navigation__link\" href=\"#\">Nav link 3</a>\n      </nav>\n    </div>\n  </header>\n</div>\n```\n\n&nbsp;9. Following the header, add a `<div>` element to hold the slide-out drawer's content, and add the MDL class as indicated. The drawer appears automatically on smaller screens, and may be opened with the menu icon on any screen size.\n```html\n<div class=\"mdl-layout mdl-js-layout\">\n  <header class=\"mdl-layout__header\">\n    <div class=\"mdl-layout-icon\"></div>\n    <div class=\"mdl-layout__header-row\">\n      <span class=\"mdl-layout__title\">Simple Layout</span>\n      <div class=\"mdl-layout-spacer\"></div>\n      <nav class=\"mdl-navigation\">\n        <a class=\"mdl-navigation__link\" href=\"#\">Nav link 1</a>\n        <a class=\"mdl-navigation__link\" href=\"#\">Nav link 2</a>\n        <a class=\"mdl-navigation__link\" href=\"#\">Nav link 3</a>\n      </nav>\n    </div>\n  </header>\n  <div class=\"mdl-layout__drawer\">\n  </div>\n</div>\n```\n\n&nbsp;10. Inside the drawer div, add a span containing the layout title (this should match the title in step 5), and include the MDL class as indicated.\n```html\n<div class=\"mdl-layout mdl-js-layout\">\n  <header class=\"mdl-layout__header\">\n    <div class=\"mdl-layout-icon\"></div>\n    <div class=\"mdl-layout__header-row\">\n      <span class=\"mdl-layout__title\">Simple Layout</span>\n      <div class=\"mdl-layout-spacer\"></div>\n      <nav class=\"mdl-navigation\">\n        <a class=\"mdl-navigation__link\" href=\"#\">Nav link 1</a>\n        <a class=\"mdl-navigation__link\" href=\"#\">Nav link 2</a>\n        <a class=\"mdl-navigation__link\" href=\"#\">Nav link 3</a>\n      </nav>\n    </div>\n  </header>\n  <div class=\"mdl-layout__drawer\">\n    <span class=\"mdl-layout__title\">Simple Layout</span>\n  </div>\n</div>\n```\n\n&nbsp;11. Following the span, add a `<nav>` element to contain the drawer's navigation links, and one anchor `<a>` element for each drawer link (these should match the links in step 7), and include the MDL classes as indicated. This completes the layout's drawer.\n```html\n<div class=\"mdl-layout mdl-js-layout\">\n  <header class=\"mdl-layout__header\">\n    <div class=\"mdl-layout-icon\"></div>\n    <div class=\"mdl-layout__header-row\">\n      <span class=\"mdl-layout__title\">Simple Layout</span>\n      <div class=\"mdl-layout-spacer\"></div>\n      <nav class=\"mdl-navigation\">\n        <a class=\"mdl-navigation__link\" href=\"#\">Nav link 1</a>\n        <a class=\"mdl-navigation__link\" href=\"#\">Nav link 2</a>\n        <a class=\"mdl-navigation__link\" href=\"#\">Nav link 3</a>\n      </nav>\n    </div>\n  </header>\n  <div class=\"mdl-layout__drawer\">\n    <span class=\"mdl-layout__title\">Simple Layout</span>\n    <nav class=\"mdl-navigation\">\n      <a class=\"mdl-navigation__link\" href=\"#\">Nav link 1</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">Nav link 2</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">Nav link 3</a>\n    </nav>\n  </div>\n</div>\n```\n\n&nbsp;12. Finally, following the drawer div, add a `<main>` element to hold the layout's primary content, and include the MDL class as indicated. Inside that element, add your desired content.\n```html\n<div class=\"mdl-layout mdl-js-layout\">\n  <header class=\"mdl-layout__header\">\n    <div class=\"mdl-layout-icon\"></div>\n    <div class=\"mdl-layout__header-row\">\n      <span class=\"mdl-layout__title\">Simple Layout</span>\n      <div class=\"mdl-layout-spacer\"></div>\n      <nav class=\"mdl-navigation\">\n        <a class=\"mdl-navigation__link\" href=\"#\">Nav link 1</a>\n        <a class=\"mdl-navigation__link\" href=\"#\">Nav link 2</a>\n        <a class=\"mdl-navigation__link\" href=\"#\">Nav link 3</a>\n      </nav>\n    </div>\n  </header>\n  <div class=\"mdl-layout__drawer\">\n    <span class=\"mdl-layout__title\">Simple Layout</span>\n    <nav class=\"mdl-navigation\">\n      <a class=\"mdl-navigation__link\" href=\"#\">Nav link 1</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">Nav link 2</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">Nav link 3</a>\n    </nav>\n  </div>\n  <main class=\"mdl-layout__content\">\n    <p>Content</p>\n    <p>Goes</p>\n    <p>Here</p>\n  </main>\n</div>\n```\n\nThe layout component is ready for use.\n\n#### Examples\n\nA layout with a fixed header for larger screens and a collapsible drawer for smaller screens.\n```html\n<div class=\"mdl-layout mdl-js-layout\">\n  <header class=\"mdl-layout__header\">\n    <div class=\"mdl-layout-icon\"></div>\n    <div class=\"mdl-layout__header-row\">\n      <span class=\"mdl-layout__title\">Material Design Lite</span>\n      <div class=\"mdl-layout-spacer\"></div>\n      <nav class=\"mdl-navigation\">\n        <a class=\"mdl-navigation__link\" href=\"#\">Hello</a>\n        <a class=\"mdl-navigation__link\" href=\"#\">World.</a>\n        <a class=\"mdl-navigation__link\" href=\"#\">How</a>\n        <a class=\"mdl-navigation__link\" href=\"#\">Are</a>\n        <a class=\"mdl-navigation__link\" href=\"#\">You?</a>\n      </nav>\n    </div>\n  </header>\n  <div class=\"mdl-layout__drawer\">\n    <span class=\"mdl-layout__title\">Material Design Lite</span>\n    <nav class=\"mdl-navigation\">\n      <a class=\"mdl-navigation__link\" href=\"#\">Hello</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">World.</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">How</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">Are</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">You?</a>\n    </nav>\n  </div>\n  <main class=\"mdl-layout__content\">\n    <div>Content</div>\n  </main>\n</div>\n```\n\nThe same layout with a non-fixed header that scrolls with the content.\n```html\n<div class=\"mdl-layout mdl-js-layout\">\n  <header class=\"mdl-layout__header mdl-layout__header--scroll\">\n    <img class=\"mdl-layout-icon\"></img>\n    <div class=\"mdl-layout__header-row\">\n      <span class=\"mdl-layout__title\">Material Design Lite</span>\n      <div class=\"mdl-layout-spacer\"></div>\n      <nav class=\"mdl-navigation\">\n        <a class=\"mdl-navigation__link\" href=\"#\">Hello</a>\n        <a class=\"mdl-navigation__link\" href=\"#\">World.</a>\n        <a class=\"mdl-navigation__link\" href=\"#\">How</a>\n        <a class=\"mdl-navigation__link\" href=\"#\">Are</a>\n        <a class=\"mdl-navigation__link\" href=\"#\">You?</a>\n      </nav>\n    </div>\n  </header>\n  <div class=\"mdl-layout__drawer\">\n    <span class=\"mdl-layout__title\">Material Design Lite</span>\n    <nav class=\"mdl-navigation\">\n      <a class=\"mdl-navigation__link\" href=\"#\">Hello</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">World.</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">How</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">Are</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">You?</a>\n    </nav>\n  </div>\n  <main class=\"mdl-layout__content\">\n    <div>Content</div>\n  </main>\n</div>\n```\n\nA layout with a fixed drawer that serves as sidebar navigation on larger screens. The drawer collapses and the menu icon is displayed on smaller screens.\n```html\n<div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-drawer\">\n  <header class=\"mdl-layout__header\">\n    <div class=\"mdl-layout__header-row\">\n      <span class=\"mdl-layout__title\">Fixed drawer layout demo</span>\n    </div>\n  </header>\n  <div class=\"mdl-layout__drawer\">\n    <span class=\"mdl-layout__title\">Material Design Lite</span>\n    <nav class=\"mdl-navigation\">\n      <a class=\"mdl-navigation__link\" href=\"#\">Hello</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">World.</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">How</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">Are</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">You?</a>\n    </nav>\n  </div>\n  <main class=\"mdl-layout__content\">\n    <div>Content</div>\n  </main>\n</div>\n```\n\nA layout with a fixed drawer but no header.\n```html\n<div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-drawer\">\n  <div class=\"mdl-layout__drawer\">\n    <span class=\"mdl-layout__title\">Material Design Lite</span>\n    <nav class=\"mdl-navigation\">\n      <a class=\"mdl-navigation__link\" href=\"#\">Hello</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">World.</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">How</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">Are</a>\n      <a class=\"mdl-navigation__link\" href=\"#\">You?</a>\n    </nav>\n  </div>\n  <main class=\"mdl-layout__content\">\n    <div>Content</div>\n  </main>\n</div>\n```\n\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual and behavioral enhancements to the layout. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-layout` | Defines container as an MDL component | Required on outer div element |\n| `mdl-js-layout` | Assigns basic MDL behavior to layout | Required on outer div element |\n| `mdl-layout__header` | Defines container as an MDL component | Required on header element |\n| `mdl-layout-icon` | Used for adding an application icon. Gets concealed by menu icon if both are visible.  | Goes on optional icon element |\n| `mdl-layout__header-row` | Defines container as MDL header row | Required on header content div |\n| `mdl-layout__title` | Defines layout title text | Required on layout title span |\n| `mdl-layout-spacer` | Used to align elements inside a header or drawer, by growing to fill remaining space. Commonly used for aligning elements to the right. | Goes on optional div following layout title |\n| `mdl-navigation` | Defines container as MDL navigation group | Required on nav element |\n| `mdl-navigation__link` | Defines anchor as MDL navigation link | Required on header and/or drawer anchor elements |\n| `mdl-layout__drawer` | Defines container as MDL layout drawer | Required on drawer div element |\n| `mdl-layout__content` | Defines container as MDL layout content | Required on main element |\n| `mdl-layout__header--scroll` | Makes the header scroll with the content | Optional; goes on header element |\n| `mdl-layout--fixed-drawer` | Makes the drawer always visible and open in larger screens | Optional; goes on outer div element (not drawer div element) |\n| `mdl-layout--fixed-header` | Makes the header always visible, even in small screens | Optional; goes on outer div element |\n| `mdl-layout--no-drawer-button` | Does not display a drawer button | Optional; goes on `mdl-layout` element |\n| `mdl-layout--no-desktop-drawer-button` | Does not display a drawer button in desktop mode | Optional; goes on `mdl-layout` element |\n| `mdl-layout--large-screen-only` | Hides an element on smaller screens | Optional; goes on any descendant of `mdl-layout` |\n| `mdl-layout--small-screen-only` | Hides an element on larger screens | Optional; goes on any descendant of `mdl-layout` |\n| `mdl-layout__header--waterfall` | Allows a \"waterfall\" effect with multiple header lines | Optional; goes on header element |\n| `mdl-layout__header--waterfall-hide-top` | Hides the top rather than the bottom rows on a waterfall header | Optional; goes on header element. Requires `mdl-layout__header--waterfall` |\n| `mdl-layout__header--transparent` | Makes header transparent (draws on top of layout background) | Optional; goes on header element |\n| `mdl-layout__header--seamed` | Uses a header without a shadow | Optional; goes on header element |\n| `mdl-layout__tab-bar` | Defines container as an MDL tab bar | Required on div element inside header (tabbed layout) |\n| `mdl-layout__tab` | Defines anchor as MDL tab link | Required on tab bar anchor elements |\n| `is-active` | Defines tab as default active tab | Optional; goes on tab bar anchor element and associated tab section element|\n| `mdl-layout__tab-panel` | Defines container as tab content panel | Required on tab section elements |\n| `mdl-layout__tab-manual-switch` | Disables tab switching when clicking on tab separators. Useful for disabling default behavior and setting up your own event listeners. | Optional; goes on tab bar element |\n| `mdl-layout--fixed-tabs` | Uses fixed tabs instead of the default scrollable tabs | Optional; goes on outer div element (not div inside header) |\n"
  },
  {
    "path": "src/layout/_layout.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n@import \"../mixins\";\n\n// Navigation classes. Only used here for now, but we may at some point move\n// this to its own component.\n.mdl-navigation {\n  display: flex;\n  flex-wrap: nowrap;\n  box-sizing: border-box;\n}\n\n.mdl-navigation__link {\n  color: $layout-text-color;\n  text-decoration: none;\n  margin: 0;\n  @include typo-body-1(true);\n\n  // Align icons inside link with text\n  & .material-icons {\n    vertical-align: middle;\n  }\n}\n\n// Main layout class.\n.mdl-layout {\n  width: 100%;\n  height: 100%;\n  display: flex;\n  flex-direction: column;\n  overflow-y: auto;\n  overflow-x: hidden;\n  position: relative;\n  -webkit-overflow-scrolling: touch;\n}\n\n// Utility classes for screen sizes.\n.mdl-layout.is-small-screen .mdl-layout--large-screen-only {\n  display: none;\n}\n\n.mdl-layout:not(.is-small-screen) .mdl-layout--small-screen-only {\n  display: none;\n}\n\n.mdl-layout__container {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n}\n\n\n  // Optional utility classes for formatting special blocks in this component.\n  .mdl-layout__title,\n  .mdl-layout-title {\n    display: block;\n    position: relative;\n\n    @include typo-title();\n    font-weight: 400;\n    box-sizing: border-box;\n  }\n\n  .mdl-layout-spacer {\n    flex-grow: 1;\n  }\n\n\n  // Drawer.\n  .mdl-layout__drawer {\n    display: flex;\n    flex-direction: column;\n    flex-wrap: nowrap;\n\n    width: $layout-drawer-width;\n    height: 100%;\n    max-height: 100%;\n\n    position: absolute;\n    top: 0;\n    left: 0;\n\n    @include shadow-2dp();\n\n    box-sizing: border-box;\n    border-right: 1px solid $layout-drawer-border-color;\n    background: $layout-drawer-bg-color;\n\n    // Transform offscreen.\n    transform: translateX(-$layout-drawer-width - 10px);\n    transform-style: preserve-3d;\n    will-change: transform;\n\n    @include material-animation-default();\n    transition-property: transform;\n\n    color: $layout-text-color;\n\n    overflow: visible;\n    overflow-y: auto;\n\n    z-index: 5;\n\n    &.is-visible {\n      transform: translateX(0);\n      & ~ .mdl-layout__content.mdl-layout__content {\n        overflow: hidden;\n      }\n    }\n\n    & > * {\n      flex-shrink: 0;\n    }\n\n    & > .mdl-layout__title,\n    & > .mdl-layout-title {\n      line-height: $layout-desktop-header-height;\n      padding-left: $layout-header-desktop-indent;\n\n      @media screen and (max-width: $layout-screen-size-threshold) {\n        line-height: $layout-mobile-header-height;\n        padding-left: $layout-header-mobile-indent;\n      }\n    }\n\n    & .mdl-navigation {\n      flex-direction: column;\n      align-items: stretch;\n      padding-top: 16px;\n\n      & .mdl-navigation__link {\n      display: block;\n      flex-shrink: 0;\n      padding: 16px $layout-header-desktop-indent;\n      margin: 0;\n      color: $layout-drawer-navigation-color;\n\n        @media screen and (max-width: $layout-screen-size-threshold) {\n          padding: 16px $layout-header-mobile-indent;\n        }\n\n        &:hover {\n          background-color: $layout-nav-color;\n        }\n\n        &--current {\n            background-color: $layout-drawer-navigation-link-active-background;\n            color: $layout-drawer-navigation-link-active-color;\n        }\n      }\n    }\n\n    @media screen and (min-width: $layout-screen-size-threshold + 1px) {\n      .mdl-layout--fixed-drawer > & {\n        transform: translateX(0);\n      }\n    }\n  }\n\n\n  // Drawer button.\n  // TODO(sgomes): Replace with an icon button when we have that component.\n  .mdl-layout__drawer-button {\n    display: block;\n\n    position: absolute;\n    height: $layout-drawer-button-desktop-size;\n    width: $layout-drawer-button-desktop-size;\n    border: 0;\n\n    flex-shrink: 0;\n\n    overflow: hidden;\n    text-align: center;\n    cursor: pointer;\n    font-size: 26px;\n    line-height: $layout-mobile-header-height;\n    font-family: Helvetica, Arial, sans-serif;\n    margin: ($layout-mobile-header-height - $layout-drawer-button-desktop-size) 12px;\n    top: 0;\n    left: 0;\n    color: $layout-header-text-color;\n\n    z-index: 4;\n\n    .mdl-layout__header & {\n      position: absolute;\n      color: $layout-header-text-color;\n      background-color: inherit;\n\n      @media screen and (max-width: $layout-screen-size-threshold) {\n        margin: 4px;\n      }\n    }\n\n    @media screen and (max-width: $layout-screen-size-threshold) {\n      margin: 4px;\n      color: rgba(0, 0, 0, 0.5);\n    }\n\n    @media screen and (min-width: $layout-screen-size-threshold + 1px) {\n      line-height: 54px;\n\n      .mdl-layout--no-desktop-drawer-button &,\n      .mdl-layout--fixed-drawer > &,\n      .mdl-layout--no-drawer-button & {\n        display: none;\n      }\n    }\n  }\n\n  .mdl-layout__header {\n    display: flex;\n    flex-direction: column;\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n    box-sizing: border-box;\n    flex-shrink: 0;\n\n    width: 100%;\n    margin: 0;\n    padding: 0;\n    border: none;\n    min-height: $layout-desktop-header-height;\n    max-height: 1000px;\n    z-index: 3;\n\n    background-color: $layout-header-bg-color;\n    color: $layout-header-text-color;\n\n    @include shadow-2dp();\n    @include material-animation-default();\n    transition-property: max-height, box-shadow;\n\n    @media screen and (max-width: $layout-screen-size-threshold) {\n      min-height: $layout-mobile-header-height;\n    }\n\n    .mdl-layout--fixed-drawer.is-upgraded:not(.is-small-screen) > & {\n      margin-left: $layout-drawer-width;\n      width: calc(100% - #{$layout-drawer-width});\n    }\n\n    @media screen and (min-width: $layout-screen-size-threshold + 1px) {\n      .mdl-layout--fixed-drawer > & {\n        .mdl-layout__header-row {\n          padding-left: 40px;\n        }\n      }\n    }\n\n    & > .mdl-layout-icon {\n      position: absolute;\n      left: $layout-header-desktop-indent;\n      top: ($layout-desktop-header-height - $layout-header-icon-size) / 2;\n      height: $layout-header-icon-size;\n      width: $layout-header-icon-size;\n      overflow: hidden;\n      z-index: 3;\n      display: block;\n\n      @media screen and (max-width: $layout-screen-size-threshold) {\n        left: $layout-header-mobile-indent;\n        top: ($layout-mobile-header-height - $layout-header-icon-size) / 2;\n      }\n    }\n\n    .mdl-layout.has-drawer & > .mdl-layout-icon {\n      display: none;\n    }\n\n    &.is-compact {\n      max-height: $layout-desktop-header-height;\n\n      @media screen and (max-width: $layout-screen-size-threshold) {\n        max-height: $layout-mobile-header-height;\n      }\n    }\n\n    &.is-compact.has-tabs {\n      height: $layout-desktop-header-height + $layout-tab-bar-height;\n\n      @media screen and (max-width: $layout-screen-size-threshold) {\n        min-height: $layout-mobile-header-height + $layout-tab-bar-height;\n      }\n    }\n\n    @media screen and (max-width: $layout-screen-size-threshold) {\n      & {\n        display: none;\n      }\n\n      .mdl-layout--fixed-header > & {\n        display: flex;\n      }\n    }\n  }\n\n    .mdl-layout__header--transparent.mdl-layout__header--transparent {\n      background-color: transparent;\n      box-shadow: none;\n    }\n\n    .mdl-layout__header--seamed {\n      box-shadow: none;\n    }\n\n    .mdl-layout__header--scroll {\n      box-shadow: none;\n    }\n\n    .mdl-layout__header--waterfall {\n      box-shadow: none;\n      overflow: hidden;\n\n      &.is-casting-shadow {\n        @include shadow-2dp();\n      }\n\n      &.mdl-layout__header--waterfall-hide-top {\n        justify-content: flex-end;\n      }\n    }\n\n    .mdl-layout__header-row {\n      display: flex;\n      flex-direction: row;\n      flex-wrap: nowrap;\n      flex-shrink: 0;\n      box-sizing: border-box;\n      align-self: stretch;\n      align-items: center;\n      height: $layout-header-desktop-row-height;\n      margin: 0;\n      padding: 0 $layout-header-desktop-indent 0 $layout-header-desktop-baseline;\n\n      .mdl-layout--no-drawer-button & {\n        padding-left: $layout-header-desktop-indent;\n      }\n\n      @media screen and (min-width: $layout-screen-size-threshold + 1px) {\n        .mdl-layout--no-desktop-drawer-button & {\n          padding-left: $layout-header-desktop-indent;\n        }\n      }\n\n      @media screen and (max-width: $layout-screen-size-threshold) {\n        height: $layout-header-mobile-row-height;\n        padding: 0 $layout-header-mobile-indent 0 $layout-header-mobile-baseline;\n\n        .mdl-layout--no-drawer-button & {\n          padding-left: $layout-header-mobile-indent;\n        }\n      }\n\n      & > * {\n        flex-shrink: 0;\n      }\n\n      .mdl-layout__header--scroll & {\n        width: 100%;\n      }\n\n      & .mdl-navigation {\n        margin: 0;\n        padding: 0;\n        height: $layout-header-desktop-row-height;\n        flex-direction: row;\n        align-items: center;\n\n        @media screen and (max-width: $layout-screen-size-threshold) {\n          height: $layout-header-mobile-row-height;\n        }\n      }\n\n      & .mdl-navigation__link {\n        display: block;\n        color: $layout-header-text-color;\n        line-height: $layout-header-desktop-row-height;\n        padding: 0 24px;\n\n        @media screen and (max-width: $layout-screen-size-threshold) {\n          line-height: $layout-header-mobile-row-height;\n          padding: 0 $layout-header-mobile-indent;\n        }\n      }\n    }\n\n  // Obfuscator.\n  .mdl-layout__obfuscator {\n    background-color: transparent;\n    position: absolute;\n    top: 0;\n    left: 0;\n    height: 100%;\n    width: 100%;\n    z-index: 4;\n    visibility: hidden;\n    transition-property: background-color;\n    @include material-animation-default();\n\n    &.is-visible {\n      background-color: rgba(0, 0, 0, 0.5);\n      visibility: visible;\n    }\n\n    @supports (pointer-events: auto) {\n      background-color: rgba(0, 0, 0, 0.5);\n      opacity: 0;\n      transition-property: opacity;\n      visibility: visible;\n      pointer-events: none;\n      &.is-visible {\n        pointer-events: auto;\n        opacity: 1;\n      }\n    }\n  }\n\n\n  // Content.\n  .mdl-layout__content {\n    // Fix IE10 bug.\n    -ms-flex: 0 1 auto;\n\n    position: relative;\n    display: inline-block;\n    overflow-y: auto;\n    overflow-x: hidden;\n    flex-grow: 1;\n    z-index: 1;\n    -webkit-overflow-scrolling: touch;\n\n    .mdl-layout--fixed-drawer > & {\n      margin-left: $layout-drawer-width;\n    }\n\n    .mdl-layout__container.has-scrolling-header & {\n      overflow: visible;\n    }\n\n    @media screen and (max-width: $layout-screen-size-threshold) {\n      .mdl-layout--fixed-drawer > & {\n        margin-left: 0;\n      }\n\n      .mdl-layout__container.has-scrolling-header & {\n        overflow-y: auto;\n        overflow-x: hidden;\n      }\n    }\n  }\n\n  // Tabs.\n  .mdl-layout__tab-bar {\n    height: $layout-tab-bar-height * 2;\n    margin: 0;\n    width: calc(100% -\n        #{(($layout-header-desktop-baseline - $layout-tab-desktop-padding) * 2)});\n    padding: 0 0 0\n        ($layout-header-desktop-baseline - $layout-tab-desktop-padding);\n    display: flex;\n    background-color: $layout-header-bg-color;\n    overflow-y: hidden;\n    overflow-x: scroll;\n\n    &::-webkit-scrollbar {\n      display: none;\n    }\n\n    .mdl-layout--no-drawer-button & {\n      padding-left: $layout-header-desktop-indent - $layout-tab-desktop-padding;\n      width: calc(100% -\n          #{(($layout-header-desktop-indent - $layout-tab-desktop-padding) * 2)});\n    }\n\n    @media screen and (min-width: $layout-screen-size-threshold + 1px) {\n      .mdl-layout--no-desktop-drawer-button & {\n        padding-left: $layout-header-desktop-indent - $layout-tab-desktop-padding;\n        width: calc(100% -\n            #{(($layout-header-desktop-indent - $layout-tab-desktop-padding) * 2)});\n      }\n    }\n\n    @media screen and (max-width: $layout-screen-size-threshold) {\n      width: calc(100% -\n          #{($layout-header-mobile-baseline - $layout-tab-mobile-padding)});\n      padding: 0 0 0\n          ($layout-header-mobile-baseline - $layout-tab-mobile-padding);\n\n      .mdl-layout--no-drawer-button & {\n        width: calc(100% -\n            #{(($layout-header-mobile-indent - $layout-tab-mobile-padding) * 2)});\n        padding-left: $layout-header-mobile-indent - $layout-tab-mobile-padding;\n      }\n    }\n\n    .mdl-layout--fixed-tabs & {\n      padding: 0;\n      overflow: hidden;\n      width: 100%;\n    }\n  }\n\n  .mdl-layout__tab-bar-container {\n    position: relative;\n    height: $layout-tab-bar-height;\n    width: 100%;\n    border: none;\n    margin: 0;\n    z-index: 2;\n    flex-grow: 0;\n    flex-shrink: 0;\n    overflow: hidden;\n\n    .mdl-layout__container > & {\n      position: absolute;\n      top: 0;\n      left: 0;\n    }\n  }\n\n  .mdl-layout__tab-bar-button {\n    display: inline-block;\n    position: absolute;\n    top: 0;\n    height: $layout-tab-bar-height;\n    width: $layout-header-desktop-baseline - $layout-tab-desktop-padding;\n    z-index: 4;\n    text-align: center;\n    background-color: $layout-header-bg-color;\n    color: transparent;\n    cursor: pointer;\n    user-select: none;\n\n    .mdl-layout--no-desktop-drawer-button &,\n    .mdl-layout--no-drawer-button & {\n      width: $layout-header-desktop-indent - $layout-tab-desktop-padding;\n\n      & .material-icons {\n        position: relative;\n        left: ($layout-header-desktop-indent - $layout-tab-desktop-padding - 24px) / 2;\n      }\n    }\n\n    @media screen and (max-width: $layout-screen-size-threshold) {\n      width: $layout-header-mobile-baseline - $layout-tab-mobile-padding;\n    }\n\n    .mdl-layout--fixed-tabs & {\n      display: none;\n    }\n\n    & .material-icons {\n      line-height: $layout-tab-bar-height;\n    }\n\n    &.is-active {\n      color: $layout-header-text-color;\n    }\n  }\n\n  .mdl-layout__tab-bar-left-button {\n    left: 0;\n  }\n\n  .mdl-layout__tab-bar-right-button {\n    right: 0;\n  }\n\n  .mdl-layout__tab {\n    margin: 0;\n    border: none;\n    padding: 0 $layout-tab-desktop-padding 0 $layout-tab-desktop-padding;\n\n    float: left;\n    position: relative;\n    display: block;\n    flex-grow: 0;\n    flex-shrink: 0;\n\n    text-decoration: none;\n    height: $layout-tab-bar-height;\n    line-height: $layout-tab-bar-height;\n\n    text-align: center;\n    font-weight: 500;\n    font-size: $layout-tab-font-size;\n    text-transform: uppercase;\n\n    color: $layout-header-tab-text-color;\n    overflow: hidden;\n\n    @media screen and (max-width: $layout-screen-size-threshold) {\n      padding: 0 $layout-tab-mobile-padding 0 $layout-tab-mobile-padding;\n    }\n\n    .mdl-layout--fixed-tabs & {\n      float: none;\n      flex-grow: 1;\n      padding: 0;\n    }\n\n    .mdl-layout.is-upgraded &.is-active {\n      color: $layout-header-text-color;\n    }\n\n    .mdl-layout.is-upgraded &.is-active::after {\n      height: $layout-tab-highlight-thickness;\n      width: 100%;\n      display: block;\n      content: \" \";\n      bottom: 0;\n      left: 0;\n      position: absolute;\n      background: $layout-header-tab-highlight;\n      animation: border-expand 0.2s cubic-bezier(0.4, 0.0, 0.4, 1) alternate forwards;\n      transition: all 1s cubic-bezier(0.4, 0.0, 1, 1);\n    }\n\n    & .mdl-layout__tab-ripple-container {\n      display: block;\n      position: absolute;\n      height: 100%;\n      width: 100%;\n      left: 0;\n      top: 0;\n      z-index: 1;\n      overflow: hidden;\n\n      & .mdl-ripple {\n        background-color: $layout-header-text-color;\n      }\n    }\n  }\n\n  .mdl-layout__tab-panel {\n    display: block;\n\n    .mdl-layout.is-upgraded & {\n      display: none;\n    }\n\n    .mdl-layout.is-upgraded &.is-active {\n      display: block;\n    }\n  }\n"
  },
  {
    "path": "src/layout/layout.js",
    "content": "/**\n * @license\n * Copyright 2015 Google Inc. 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 *      http://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(function() {\n  'use strict';\n\n  /**\n   * Class constructor for Layout MDL component.\n   * Implements MDL component design pattern defined at:\n   * https://github.com/jasonmayes/mdl-component-design-pattern\n   *\n   * @constructor\n   * @param {HTMLElement} element The element that will be upgraded.\n   */\n  var MaterialLayout = function MaterialLayout(element) {\n    this.element_ = element;\n\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialLayout'] = MaterialLayout;\n\n  /**\n   * Store constants in one place so they can be updated easily.\n   *\n   * @enum {string | number}\n   * @private\n   */\n  MaterialLayout.prototype.Constant_ = {\n    MAX_WIDTH: '(max-width: 1024px)',\n    TAB_SCROLL_PIXELS: 100,\n    RESIZE_TIMEOUT: 100,\n\n    MENU_ICON: '&#xE5D2;',\n    CHEVRON_LEFT: 'chevron_left',\n    CHEVRON_RIGHT: 'chevron_right'\n  };\n\n  /**\n   * Keycodes, for code readability.\n   *\n   * @enum {number}\n   * @private\n   */\n  MaterialLayout.prototype.Keycodes_ = {\n    ENTER: 13,\n    ESCAPE: 27,\n    SPACE: 32\n  };\n\n  /**\n   * Modes.\n   *\n   * @enum {number}\n   * @private\n   */\n  MaterialLayout.prototype.Mode_ = {\n    STANDARD: 0,\n    SEAMED: 1,\n    WATERFALL: 2,\n    SCROLL: 3\n  };\n\n  /**\n   * Store strings for class names defined by this component that are used in\n   * JavaScript. This allows us to simply change it in one place should we\n   * decide to modify at a later date.\n   *\n   * @enum {string}\n   * @private\n   */\n  MaterialLayout.prototype.CssClasses_ = {\n    CONTAINER: 'mdl-layout__container',\n    HEADER: 'mdl-layout__header',\n    DRAWER: 'mdl-layout__drawer',\n    CONTENT: 'mdl-layout__content',\n    DRAWER_BTN: 'mdl-layout__drawer-button',\n\n    ICON: 'material-icons',\n\n    JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n    RIPPLE_CONTAINER: 'mdl-layout__tab-ripple-container',\n    RIPPLE: 'mdl-ripple',\n    RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n\n    HEADER_SEAMED: 'mdl-layout__header--seamed',\n    HEADER_WATERFALL: 'mdl-layout__header--waterfall',\n    HEADER_SCROLL: 'mdl-layout__header--scroll',\n\n    FIXED_HEADER: 'mdl-layout--fixed-header',\n    FIXED_DRAWER: 'mdl-layout--fixed-drawer',\n    OBFUSCATOR: 'mdl-layout__obfuscator',\n\n    TAB_BAR: 'mdl-layout__tab-bar',\n    TAB_CONTAINER: 'mdl-layout__tab-bar-container',\n    TAB: 'mdl-layout__tab',\n    TAB_BAR_BUTTON: 'mdl-layout__tab-bar-button',\n    TAB_BAR_LEFT_BUTTON: 'mdl-layout__tab-bar-left-button',\n    TAB_BAR_RIGHT_BUTTON: 'mdl-layout__tab-bar-right-button',\n    TAB_MANUAL_SWITCH: 'mdl-layout__tab-manual-switch',\n    PANEL: 'mdl-layout__tab-panel',\n\n    HAS_DRAWER: 'has-drawer',\n    HAS_TABS: 'has-tabs',\n    HAS_SCROLLING_HEADER: 'has-scrolling-header',\n    CASTING_SHADOW: 'is-casting-shadow',\n    IS_COMPACT: 'is-compact',\n    IS_SMALL_SCREEN: 'is-small-screen',\n    IS_DRAWER_OPEN: 'is-visible',\n    IS_ACTIVE: 'is-active',\n    IS_UPGRADED: 'is-upgraded',\n    IS_ANIMATING: 'is-animating',\n\n    ON_LARGE_SCREEN: 'mdl-layout--large-screen-only',\n    ON_SMALL_SCREEN: 'mdl-layout--small-screen-only'\n\n  };\n\n  /**\n   * Provide local version of matchMedia. This is needed in order to support\n   * monkey-patching of matchMedia in the unit tests. Due to peculiarities in\n   * PhantomJS, it doesn't work to monkey patch window.matchMedia directly.\n   *\n   * @private\n   */\n  MaterialLayout.prototype.matchMedia_ = function(query) {\n    return window.matchMedia(query);\n  };\n\n  /**\n   * Handles scrolling on the content.\n   *\n   * @private\n   */\n  MaterialLayout.prototype.contentScrollHandler_ = function() {\n    if (this.header_.classList.contains(this.CssClasses_.IS_ANIMATING)) {\n      return;\n    }\n\n    var headerVisible =\n        !this.element_.classList.contains(this.CssClasses_.IS_SMALL_SCREEN) ||\n        this.element_.classList.contains(this.CssClasses_.FIXED_HEADER);\n\n    if (this.content_.scrollTop > 0 &&\n        !this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n      this.header_.classList.add(this.CssClasses_.CASTING_SHADOW);\n      this.header_.classList.add(this.CssClasses_.IS_COMPACT);\n      if (headerVisible) {\n        this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n      }\n    } else if (this.content_.scrollTop <= 0 &&\n        this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n      this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n      this.header_.classList.remove(this.CssClasses_.IS_COMPACT);\n      if (headerVisible) {\n        this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n      }\n    }\n  };\n\n  /**\n   * Handles a keyboard event on the drawer.\n   *\n   * @param {Event} evt The event that fired.\n   * @private\n   */\n  MaterialLayout.prototype.keyboardEventHandler_ = function(evt) {\n    // Only react when the drawer is open.\n    if (evt.keyCode === this.Keycodes_.ESCAPE &&\n        this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN)) {\n      this.toggleDrawer();\n    }\n  };\n\n  /**\n   * Handles changes in screen size.\n   *\n   * @private\n   */\n  MaterialLayout.prototype.screenSizeHandler_ = function() {\n    if (this.screenSizeMediaQuery_.matches) {\n      this.element_.classList.add(this.CssClasses_.IS_SMALL_SCREEN);\n\n      if (this.drawer_) {\n        this.drawer_.setAttribute('aria-hidden', 'true');\n      }\n    } else {\n      this.element_.classList.remove(this.CssClasses_.IS_SMALL_SCREEN);\n      // Collapse drawer (if any) when moving to a large screen size.\n      if (this.drawer_) {\n        this.drawer_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);\n        this.obfuscator_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);\n\n        if (this.element_.classList.contains(this.CssClasses_.FIXED_DRAWER)) {\n          this.drawer_.setAttribute('aria-hidden', 'false');\n        }\n      }\n    }\n  };\n\n  /**\n   * Handles events of drawer button.\n   *\n   * @param {Event} evt The event that fired.\n   * @private\n   */\n  MaterialLayout.prototype.drawerToggleHandler_ = function(evt) {\n    if (evt && (evt.type === 'keydown')) {\n      if (evt.keyCode === this.Keycodes_.SPACE || evt.keyCode === this.Keycodes_.ENTER) {\n        // prevent scrolling in drawer nav\n        evt.preventDefault();\n      } else {\n        // prevent other keys\n        return;\n      }\n    }\n\n    this.toggleDrawer();\n  };\n\n  /**\n   * Handles (un)setting the `is-animating` class\n   *\n   * @private\n   */\n  MaterialLayout.prototype.headerTransitionEndHandler_ = function() {\n    this.header_.classList.remove(this.CssClasses_.IS_ANIMATING);\n  };\n\n  /**\n   * Handles expanding the header on click\n   *\n   * @private\n   */\n  MaterialLayout.prototype.headerClickHandler_ = function() {\n    if (this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n      this.header_.classList.remove(this.CssClasses_.IS_COMPACT);\n      this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n    }\n  };\n\n  /**\n   * Reset tab state, dropping active classes\n   *\n   * @private\n   */\n  MaterialLayout.prototype.resetTabState_ = function(tabBar) {\n    for (var k = 0; k < tabBar.length; k++) {\n      tabBar[k].classList.remove(this.CssClasses_.IS_ACTIVE);\n    }\n  };\n\n  /**\n   * Reset panel state, droping active classes\n   *\n   * @private\n   */\n  MaterialLayout.prototype.resetPanelState_ = function(panels) {\n    for (var j = 0; j < panels.length; j++) {\n      panels[j].classList.remove(this.CssClasses_.IS_ACTIVE);\n    }\n  };\n\n  /**\n  * Toggle drawer state\n  *\n  * @public\n  */\n  MaterialLayout.prototype.toggleDrawer = function() {\n    var drawerButton = this.element_.querySelector('.' + this.CssClasses_.DRAWER_BTN);\n    this.drawer_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN);\n    this.obfuscator_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN);\n\n    // Set accessibility properties.\n    if (this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN)) {\n      this.drawer_.setAttribute('aria-hidden', 'false');\n      drawerButton.setAttribute('aria-expanded', 'true');\n    } else {\n      this.drawer_.setAttribute('aria-hidden', 'true');\n      drawerButton.setAttribute('aria-expanded', 'false');\n    }\n  };\n  MaterialLayout.prototype['toggleDrawer'] =\n      MaterialLayout.prototype.toggleDrawer;\n\n  /**\n   * Initialize element.\n   */\n  MaterialLayout.prototype.init = function() {\n    if (this.element_) {\n      var container = document.createElement('div');\n      container.classList.add(this.CssClasses_.CONTAINER);\n\n      var focusedElement = this.element_.querySelector(':focus');\n\n      this.element_.parentElement.insertBefore(container, this.element_);\n      this.element_.parentElement.removeChild(this.element_);\n      container.appendChild(this.element_);\n\n      if (focusedElement) {\n        focusedElement.focus();\n      }\n\n      var directChildren = this.element_.childNodes;\n      var numChildren = directChildren.length;\n      for (var c = 0; c < numChildren; c++) {\n        var child = directChildren[c];\n        if (child.classList &&\n            child.classList.contains(this.CssClasses_.HEADER)) {\n          this.header_ = child;\n        }\n\n        if (child.classList &&\n            child.classList.contains(this.CssClasses_.DRAWER)) {\n          this.drawer_ = child;\n        }\n\n        if (child.classList &&\n            child.classList.contains(this.CssClasses_.CONTENT)) {\n          this.content_ = child;\n        }\n      }\n\n      window.addEventListener('pageshow', function(e) {\n        if (e.persisted) { // when page is loaded from back/forward cache\n          // trigger repaint to let layout scroll in safari\n          this.element_.style.overflowY = 'hidden';\n          requestAnimationFrame(function() {\n            this.element_.style.overflowY = '';\n          }.bind(this));\n        }\n      }.bind(this), false);\n\n      if (this.header_) {\n        this.tabBar_ = this.header_.querySelector('.' + this.CssClasses_.TAB_BAR);\n      }\n\n      var mode = this.Mode_.STANDARD;\n\n      if (this.header_) {\n        if (this.header_.classList.contains(this.CssClasses_.HEADER_SEAMED)) {\n          mode = this.Mode_.SEAMED;\n        } else if (this.header_.classList.contains(\n            this.CssClasses_.HEADER_WATERFALL)) {\n          mode = this.Mode_.WATERFALL;\n          this.header_.addEventListener('transitionend',\n            this.headerTransitionEndHandler_.bind(this));\n          this.header_.addEventListener('click',\n            this.headerClickHandler_.bind(this));\n        } else if (this.header_.classList.contains(\n            this.CssClasses_.HEADER_SCROLL)) {\n          mode = this.Mode_.SCROLL;\n          container.classList.add(this.CssClasses_.HAS_SCROLLING_HEADER);\n        }\n\n        if (mode === this.Mode_.STANDARD) {\n          this.header_.classList.add(this.CssClasses_.CASTING_SHADOW);\n          if (this.tabBar_) {\n            this.tabBar_.classList.add(this.CssClasses_.CASTING_SHADOW);\n          }\n        } else if (mode === this.Mode_.SEAMED || mode === this.Mode_.SCROLL) {\n          this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n          if (this.tabBar_) {\n            this.tabBar_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n          }\n        } else if (mode === this.Mode_.WATERFALL) {\n          // Add and remove shadows depending on scroll position.\n          // Also add/remove auxiliary class for styling of the compact version of\n          // the header.\n          this.content_.addEventListener('scroll',\n              this.contentScrollHandler_.bind(this));\n          this.contentScrollHandler_();\n        }\n      }\n\n      // Add drawer toggling button to our layout, if we have an openable drawer.\n      if (this.drawer_) {\n        var drawerButton = this.element_.querySelector('.' +\n          this.CssClasses_.DRAWER_BTN);\n        if (!drawerButton) {\n          drawerButton = document.createElement('div');\n          drawerButton.setAttribute('aria-expanded', 'false');\n          drawerButton.setAttribute('role', 'button');\n          drawerButton.setAttribute('tabindex', '0');\n          drawerButton.classList.add(this.CssClasses_.DRAWER_BTN);\n\n          var drawerButtonIcon = document.createElement('i');\n          drawerButtonIcon.classList.add(this.CssClasses_.ICON);\n          drawerButtonIcon.innerHTML = this.Constant_.MENU_ICON;\n          drawerButton.appendChild(drawerButtonIcon);\n        }\n\n        if (this.drawer_.classList.contains(this.CssClasses_.ON_LARGE_SCREEN)) {\n          //If drawer has ON_LARGE_SCREEN class then add it to the drawer toggle button as well.\n          drawerButton.classList.add(this.CssClasses_.ON_LARGE_SCREEN);\n        } else if (this.drawer_.classList.contains(this.CssClasses_.ON_SMALL_SCREEN)) {\n          //If drawer has ON_SMALL_SCREEN class then add it to the drawer toggle button as well.\n          drawerButton.classList.add(this.CssClasses_.ON_SMALL_SCREEN);\n        }\n\n        drawerButton.addEventListener('click',\n            this.drawerToggleHandler_.bind(this));\n\n        drawerButton.addEventListener('keydown',\n            this.drawerToggleHandler_.bind(this));\n\n        // Add a class if the layout has a drawer, for altering the left padding.\n        // Adds the HAS_DRAWER to the elements since this.header_ may or may\n        // not be present.\n        this.element_.classList.add(this.CssClasses_.HAS_DRAWER);\n\n        // If we have a fixed header, add the button to the header rather than\n        // the layout.\n        if (this.element_.classList.contains(this.CssClasses_.FIXED_HEADER)) {\n          this.header_.insertBefore(drawerButton, this.header_.firstChild);\n        } else {\n          this.element_.insertBefore(drawerButton, this.content_);\n        }\n\n        var obfuscator = document.createElement('div');\n        obfuscator.classList.add(this.CssClasses_.OBFUSCATOR);\n        this.element_.appendChild(obfuscator);\n        obfuscator.addEventListener('click',\n            this.drawerToggleHandler_.bind(this));\n        this.obfuscator_ = obfuscator;\n\n        this.drawer_.addEventListener('keydown', this.keyboardEventHandler_.bind(this));\n        this.drawer_.setAttribute('aria-hidden', 'true');\n      }\n\n      // Keep an eye on screen size, and add/remove auxiliary class for styling\n      // of small screens.\n      this.screenSizeMediaQuery_ = this.matchMedia_(\n          /** @type {string} */ (this.Constant_.MAX_WIDTH));\n      this.screenSizeMediaQuery_.addListener(this.screenSizeHandler_.bind(this));\n      this.screenSizeHandler_();\n\n      // Initialize tabs, if any.\n      if (this.header_ && this.tabBar_) {\n        this.element_.classList.add(this.CssClasses_.HAS_TABS);\n\n        var tabContainer = document.createElement('div');\n        tabContainer.classList.add(this.CssClasses_.TAB_CONTAINER);\n        this.header_.insertBefore(tabContainer, this.tabBar_);\n        this.header_.removeChild(this.tabBar_);\n\n        var leftButton = document.createElement('div');\n        leftButton.classList.add(this.CssClasses_.TAB_BAR_BUTTON);\n        leftButton.classList.add(this.CssClasses_.TAB_BAR_LEFT_BUTTON);\n        var leftButtonIcon = document.createElement('i');\n        leftButtonIcon.classList.add(this.CssClasses_.ICON);\n        leftButtonIcon.textContent = this.Constant_.CHEVRON_LEFT;\n        leftButton.appendChild(leftButtonIcon);\n        leftButton.addEventListener('click', function() {\n          this.tabBar_.scrollLeft -= this.Constant_.TAB_SCROLL_PIXELS;\n        }.bind(this));\n\n        var rightButton = document.createElement('div');\n        rightButton.classList.add(this.CssClasses_.TAB_BAR_BUTTON);\n        rightButton.classList.add(this.CssClasses_.TAB_BAR_RIGHT_BUTTON);\n        var rightButtonIcon = document.createElement('i');\n        rightButtonIcon.classList.add(this.CssClasses_.ICON);\n        rightButtonIcon.textContent = this.Constant_.CHEVRON_RIGHT;\n        rightButton.appendChild(rightButtonIcon);\n        rightButton.addEventListener('click', function() {\n          this.tabBar_.scrollLeft += this.Constant_.TAB_SCROLL_PIXELS;\n        }.bind(this));\n\n        tabContainer.appendChild(leftButton);\n        tabContainer.appendChild(this.tabBar_);\n        tabContainer.appendChild(rightButton);\n\n        // Add and remove tab buttons depending on scroll position and total\n        // window size.\n        var tabUpdateHandler = function() {\n          if (this.tabBar_.scrollLeft > 0) {\n            leftButton.classList.add(this.CssClasses_.IS_ACTIVE);\n          } else {\n            leftButton.classList.remove(this.CssClasses_.IS_ACTIVE);\n          }\n\n          if (this.tabBar_.scrollLeft <\n              this.tabBar_.scrollWidth - this.tabBar_.offsetWidth) {\n            rightButton.classList.add(this.CssClasses_.IS_ACTIVE);\n          } else {\n            rightButton.classList.remove(this.CssClasses_.IS_ACTIVE);\n          }\n        }.bind(this);\n\n        this.tabBar_.addEventListener('scroll', tabUpdateHandler);\n        tabUpdateHandler();\n\n        // Update tabs when the window resizes.\n        var windowResizeHandler = function() {\n          // Use timeouts to make sure it doesn't happen too often.\n          if (this.resizeTimeoutId_) {\n            clearTimeout(this.resizeTimeoutId_);\n          }\n          this.resizeTimeoutId_ = setTimeout(function() {\n            tabUpdateHandler();\n            this.resizeTimeoutId_ = null;\n          }.bind(this), /** @type {number} */ (this.Constant_.RESIZE_TIMEOUT));\n        }.bind(this);\n\n        window.addEventListener('resize', windowResizeHandler);\n\n        if (this.tabBar_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {\n          this.tabBar_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n        }\n\n        // Select element tabs, document panels\n        var tabs = this.tabBar_.querySelectorAll('.' + this.CssClasses_.TAB);\n        var panels = this.content_.querySelectorAll('.' + this.CssClasses_.PANEL);\n\n        // Create new tabs for each tab element\n        for (var i = 0; i < tabs.length; i++) {\n          new MaterialLayoutTab(tabs[i], tabs, panels, this);\n        }\n      }\n\n      this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n    }\n  };\n\n  /**\n   * Constructor for an individual tab.\n   *\n   * @constructor\n   * @param {HTMLElement} tab The HTML element for the tab.\n   * @param {!Array<HTMLElement>} tabs Array with HTML elements for all tabs.\n   * @param {!Array<HTMLElement>} panels Array with HTML elements for all panels.\n   * @param {MaterialLayout} layout The MaterialLayout object that owns the tab.\n   */\n  function MaterialLayoutTab(tab, tabs, panels, layout) {\n\n    /**\n     * Auxiliary method to programmatically select a tab in the UI.\n     */\n    function selectTab() {\n      var href = tab.href.split('#')[1];\n      var panel = layout.content_.querySelector('#' + href);\n      layout.resetTabState_(tabs);\n      layout.resetPanelState_(panels);\n      tab.classList.add(layout.CssClasses_.IS_ACTIVE);\n      panel.classList.add(layout.CssClasses_.IS_ACTIVE);\n    }\n\n    if (layout.tabBar_.classList.contains(\n        layout.CssClasses_.JS_RIPPLE_EFFECT)) {\n      var rippleContainer = document.createElement('span');\n      rippleContainer.classList.add(layout.CssClasses_.RIPPLE_CONTAINER);\n      rippleContainer.classList.add(layout.CssClasses_.JS_RIPPLE_EFFECT);\n      var ripple = document.createElement('span');\n      ripple.classList.add(layout.CssClasses_.RIPPLE);\n      rippleContainer.appendChild(ripple);\n      tab.appendChild(rippleContainer);\n    }\n\n    if (!layout.tabBar_.classList.contains(\n      layout.CssClasses_.TAB_MANUAL_SWITCH)) {\n      tab.addEventListener('click', function(e) {\n        if (tab.getAttribute('href').charAt(0) === '#') {\n          e.preventDefault();\n          selectTab();\n        }\n      });\n    }\n\n    tab.show = selectTab;\n  }\n  window['MaterialLayoutTab'] = MaterialLayoutTab;\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  componentHandler.register({\n    constructor: MaterialLayout,\n    classAsString: 'MaterialLayout',\n    cssClass: 'mdl-js-layout'\n  });\n})();\n"
  },
  {
    "path": "src/layout/snippets/fixed-drawer-demo.html",
    "content": "<style>\n.demo-layout.demo-layout__fixed-drawer {\n  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),\n              0 3px 1px -2px rgba(0, 0, 0, 0.2),\n              0 1px 5px 0 rgba(0, 0, 0, 0.12);\n  width: 100%;\n  position: relative;\n  height: 300px;\n}\n.demo-layout.demo-layout__fixed-drawer .mdl-layout__content {\n  background: white;\n}\n</style>\n\n{% include \"fixed-drawer.html\" %}\n"
  },
  {
    "path": "src/layout/snippets/fixed-drawer.html",
    "content": "<!-- No header, and the drawer stays open on larger screens (fixed drawer). -->\n<div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-drawer\">\n  <div class=\"mdl-layout__drawer\">\n    <span class=\"mdl-layout-title\">Title</span>\n    <nav class=\"mdl-navigation\">\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n    </nav>\n  </div>\n  <main class=\"mdl-layout__content\">\n    <div class=\"page-content\"><!-- Your content goes here --></div>\n  </main>\n</div>\n"
  },
  {
    "path": "src/layout/snippets/fixed-header-demo.html",
    "content": "<style>\n.demo-layout.demo-layout__fixed-header {\n  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),\n              0 3px 1px -2px rgba(0, 0, 0, 0.2),\n              0 1px 5px 0 rgba(0, 0, 0, 0.12);\n  width: 100%;\n  position: relative;\n  height: 300px;\n}\n.demo-layout.demo-layout__fixed-header .mdl-layout__content {\n  background: white;\n}\n</style>\n\n{% include \"fixed-header.html\" %}\n"
  },
  {
    "path": "src/layout/snippets/fixed-header-drawer-demo.html",
    "content": "<style>\n.demo-layout.demo-layout__fixed-header-drawer {\n  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),\n              0 3px 1px -2px rgba(0, 0, 0, 0.2),\n              0 1px 5px 0 rgba(0, 0, 0, 0.12);\n  width: 100%;\n  position: relative;\n  height: 300px;\n}\n.demo-layout.demo-layout__fixed-header-drawer.mdl-layout__content {\n  background: white;\n}\n</style>\n\n{% include \"fixed-header-drawer.html\" %}\n"
  },
  {
    "path": "src/layout/snippets/fixed-header-drawer.html",
    "content": "<!-- The drawer is always open in large screens. The header is always shown,\n  even in small screens. -->\n<div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-drawer\n            mdl-layout--fixed-header\">\n  <header class=\"mdl-layout__header\">\n    <div class=\"mdl-layout__header-row\">\n      <div class=\"mdl-layout-spacer\"></div>\n      <div class=\"mdl-textfield mdl-js-textfield mdl-textfield--expandable\n                  mdl-textfield--floating-label mdl-textfield--align-right\">\n        <label class=\"mdl-button mdl-js-button mdl-button--icon\"\n               for=\"fixed-header-drawer-exp\">\n          <i class=\"material-icons\">search</i>\n        </label>\n        <div class=\"mdl-textfield__expandable-holder\">\n          <input class=\"mdl-textfield__input\" type=\"text\" name=\"sample\"\n                 id=\"fixed-header-drawer-exp\">\n        </div>\n      </div>\n    </div>\n  </header>\n  <div class=\"mdl-layout__drawer\">\n    <span class=\"mdl-layout-title\">Title</span>\n    <nav class=\"mdl-navigation\">\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n    </nav>\n  </div>\n  <main class=\"mdl-layout__content\">\n    <div class=\"page-content\"><!-- Your content goes here --></div>\n  </main>\n</div>\n"
  },
  {
    "path": "src/layout/snippets/fixed-header.html",
    "content": "<!-- Always shows a header, even in smaller screens. -->\n<div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\">\n  <header class=\"mdl-layout__header\">\n    <div class=\"mdl-layout__header-row\">\n      <!-- Title -->\n      <span class=\"mdl-layout-title\">Title</span>\n      <!-- Add spacer, to align navigation to the right -->\n      <div class=\"mdl-layout-spacer\"></div>\n      <!-- Navigation. We hide it in small screens. -->\n      <nav class=\"mdl-navigation mdl-layout--large-screen-only\">\n        <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n        <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n        <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n        <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      </nav>\n    </div>\n  </header>\n  <div class=\"mdl-layout__drawer\">\n    <span class=\"mdl-layout-title\">Title</span>\n    <nav class=\"mdl-navigation\">\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n    </nav>\n  </div>\n  <main class=\"mdl-layout__content\">\n    <div class=\"page-content\"><!-- Your content goes here --></div>\n  </main>\n</div>\n"
  },
  {
    "path": "src/layout/snippets/fixed-tabs-demo.html",
    "content": "<style>\n.demo-layout.demo-layout__fixed-tabs {\n  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),\n              0 3px 1px -2px rgba(0, 0, 0, 0.2),\n              0 1px 5px 0 rgba(0, 0, 0, 0.12);\n  width: 100%;\n  position: relative;\n  height: 300px;\n}\n.demo-layout.demo-layout__fixed-tabs .mdl-layout__content {\n  background: white;\n}\n</style>\n\n{% include \"fixed-tabs.html\" %}\n"
  },
  {
    "path": "src/layout/snippets/fixed-tabs.html",
    "content": "<!-- Simple header with fixed tabs. -->\n<div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\n            mdl-layout--fixed-tabs\">\n  <header class=\"mdl-layout__header\">\n    <div class=\"mdl-layout__header-row\">\n      <!-- Title -->\n      <span class=\"mdl-layout-title\">Title</span>\n    </div>\n    <!-- Tabs -->\n    <div class=\"mdl-layout__tab-bar mdl-js-ripple-effect\">\n      <a href=\"#fixed-tab-1\" class=\"mdl-layout__tab is-active\">Tab 1</a>\n      <a href=\"#fixed-tab-2\" class=\"mdl-layout__tab\">Tab 2</a>\n      <a href=\"#fixed-tab-3\" class=\"mdl-layout__tab\">Tab 3</a>\n    </div>\n  </header>\n  <div class=\"mdl-layout__drawer\">\n    <span class=\"mdl-layout-title\">Title</span>\n  </div>\n  <main class=\"mdl-layout__content\">\n    <section class=\"mdl-layout__tab-panel is-active\" id=\"fixed-tab-1\">\n      <div class=\"page-content\"><!-- Your content goes here --></div>\n    </section>\n    <section class=\"mdl-layout__tab-panel\" id=\"fixed-tab-2\">\n      <div class=\"page-content\"><!-- Your content goes here --></div>\n    </section>\n    <section class=\"mdl-layout__tab-panel\" id=\"fixed-tab-3\">\n      <div class=\"page-content\"><!-- Your content goes here --></div>\n    </section>\n  </main>\n</div>\n"
  },
  {
    "path": "src/layout/snippets/scrollable-tabs-demo.html",
    "content": "<style>\n.demo-layout.demo-layout__scrollable-tabs {\n  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),\n              0 3px 1px -2px rgba(0, 0, 0, 0.2),\n              0 1px 5px 0 rgba(0, 0, 0, 0.12);\n  width: 100%;\n  position: relative;\n  height: 300px;\n}\n.demo-layout.demo-layout__scrollable-tabs .mdl-layout__content {\n  background: white;\n}\n</style>\n\n{% include \"scrollable-tabs.html\" %}\n"
  },
  {
    "path": "src/layout/snippets/scrollable-tabs.html",
    "content": "<!-- Simple header with scrollable tabs. -->\n<div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\">\n  <header class=\"mdl-layout__header\">\n    <div class=\"mdl-layout__header-row\">\n      <!-- Title -->\n      <span class=\"mdl-layout-title\">Title</span>\n    </div>\n    <!-- Tabs -->\n    <div class=\"mdl-layout__tab-bar mdl-js-ripple-effect\">\n      <a href=\"#scroll-tab-1\" class=\"mdl-layout__tab is-active\">Tab 1</a>\n      <a href=\"#scroll-tab-2\" class=\"mdl-layout__tab\">Tab 2</a>\n      <a href=\"#scroll-tab-3\" class=\"mdl-layout__tab\">Tab 3</a>\n      <a href=\"#scroll-tab-4\" class=\"mdl-layout__tab\">Tab 4</a>\n      <a href=\"#scroll-tab-5\" class=\"mdl-layout__tab\">Tab 5</a>\n      <a href=\"#scroll-tab-6\" class=\"mdl-layout__tab\">Tab 6</a>\n    </div>\n  </header>\n  <div class=\"mdl-layout__drawer\">\n    <span class=\"mdl-layout-title\">Title</span>\n  </div>\n  <main class=\"mdl-layout__content\">\n    <section class=\"mdl-layout__tab-panel is-active\" id=\"scroll-tab-1\">\n      <div class=\"page-content\"><!-- Your content goes here --></div>\n    </section>\n    <section class=\"mdl-layout__tab-panel\" id=\"scroll-tab-2\">\n      <div class=\"page-content\"><!-- Your content goes here --></div>\n    </section>\n    <section class=\"mdl-layout__tab-panel\" id=\"scroll-tab-3\">\n      <div class=\"page-content\"><!-- Your content goes here --></div>\n    </section>\n    <section class=\"mdl-layout__tab-panel\" id=\"scroll-tab-4\">\n      <div class=\"page-content\"><!-- Your content goes here --></div>\n    </section>\n    <section class=\"mdl-layout__tab-panel\" id=\"scroll-tab-5\">\n      <div class=\"page-content\"><!-- Your content goes here --></div>\n    </section>\n    <section class=\"mdl-layout__tab-panel\" id=\"scroll-tab-6\">\n      <div class=\"page-content\"><!-- Your content goes here --></div>\n    </section>\n  </main>\n</div>\n"
  },
  {
    "path": "src/layout/snippets/scrolling-header-demo.html",
    "content": "<style>\n.demo-layout.demo-layout__scrolling-header {\n  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),\n              0 3px 1px -2px rgba(0, 0, 0, 0.2),\n              0 1px 5px 0 rgba(0, 0, 0, 0.12);\n  width: 100%;\n  position: relative;\n  height: 300px;\n}\n.demo-layout.demo-layout__scrolling-header .page-content {\n  height: 600px;\n  background: white;\n}\n</style>\n\n{% include \"scrolling-header.html\" %}\n"
  },
  {
    "path": "src/layout/snippets/scrolling-header.html",
    "content": "<!-- Uses a header that scrolls with the text, rather than staying\n  locked at the top -->\n<div class=\"mdl-layout mdl-js-layout\">\n  <header class=\"mdl-layout__header mdl-layout__header--scroll\">\n    <div class=\"mdl-layout__header-row\">\n      <!-- Title -->\n      <span class=\"mdl-layout-title\">Title</span>\n      <!-- Add spacer, to align navigation to the right -->\n      <div class=\"mdl-layout-spacer\"></div>\n      <!-- Navigation -->\n      <nav class=\"mdl-navigation\">\n        <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n        <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n        <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n        <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      </nav>\n    </div>\n  </header>\n  <div class=\"mdl-layout__drawer\">\n    <span class=\"mdl-layout-title\">Title</span>\n    <nav class=\"mdl-navigation\">\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n    </nav>\n  </div>\n  <main class=\"mdl-layout__content\">\n    <div class=\"page-content\"><!-- Your content goes here --></div>\n  </main>\n</div>\n"
  },
  {
    "path": "src/layout/snippets/transparent-demo.html",
    "content": "<style>\n.demo-layout.demo-layout__transparent {\n  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),\n              0 3px 1px -2px rgba(0, 0, 0, 0.2),\n              0 1px 5px 0 rgba(0, 0, 0, 0.12);\n  width: 100%;\n  position: relative;\n  height: 300px;\n}\n</style>\n\n{% include \"transparent.html\" %}\n"
  },
  {
    "path": "src/layout/snippets/transparent.html",
    "content": "<!-- Uses a transparent header that draws on top of the layout's background -->\n<style>\n.demo-layout-transparent {\n  background: url('../assets/demos/transparent.jpg') center / cover;\n}\n.demo-layout-transparent .mdl-layout__header,\n.demo-layout-transparent .mdl-layout__drawer-button {\n  /* This background is dark, so we set text to white. Use 87% black instead if\n     your background is light. */\n  color: white;\n}\n</style>\n\n<div class=\"demo-layout-transparent mdl-layout mdl-js-layout\">\n  <header class=\"mdl-layout__header mdl-layout__header--transparent\">\n    <div class=\"mdl-layout__header-row\">\n      <!-- Title -->\n      <span class=\"mdl-layout-title\">Title</span>\n      <!-- Add spacer, to align navigation to the right -->\n      <div class=\"mdl-layout-spacer\"></div>\n      <!-- Navigation -->\n      <nav class=\"mdl-navigation\">\n        <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n        <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n        <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n        <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      </nav>\n    </div>\n  </header>\n  <div class=\"mdl-layout__drawer\">\n    <span class=\"mdl-layout-title\">Title</span>\n    <nav class=\"mdl-navigation\">\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n    </nav>\n  </div>\n  <main class=\"mdl-layout__content\">\n  </main>\n</div>\n"
  },
  {
    "path": "src/layout/snippets/waterfall-header-demo.html",
    "content": "<style>\n.demo-layout.demo-layout__waterfall-header {\n  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),\n              0 3px 1px -2px rgba(0, 0, 0, 0.2),\n              0 1px 5px 0 rgba(0, 0, 0, 0.12);\n  width: 100%;\n  position: relative;\n  height: 300px;\n}\n.demo-layout.demo-layout__waterfall-header .page-content {\n  height: 600px;\n  background: white;\n}\n</style>\n\n{% include \"waterfall-header.html\" %}\n"
  },
  {
    "path": "src/layout/snippets/waterfall-header.html",
    "content": "<!-- Uses a header that contracts as the page scrolls down. -->\n<style>\n.demo-layout-waterfall .mdl-layout__header-row .mdl-navigation__link:last-of-type  {\n  padding-right: 0;\n}\n</style>\n\n<div class=\"demo-layout-waterfall mdl-layout mdl-js-layout\">\n  <header class=\"mdl-layout__header mdl-layout__header--waterfall\">\n    <!-- Top row, always visible -->\n    <div class=\"mdl-layout__header-row\">\n      <!-- Title -->\n      <span class=\"mdl-layout-title\">Title</span>\n      <div class=\"mdl-layout-spacer\"></div>\n      <div class=\"mdl-textfield mdl-js-textfield mdl-textfield--expandable\n                  mdl-textfield--floating-label mdl-textfield--align-right\">\n        <label class=\"mdl-button mdl-js-button mdl-button--icon\"\n               for=\"waterfall-exp\">\n          <i class=\"material-icons\">search</i>\n        </label>\n        <div class=\"mdl-textfield__expandable-holder\">\n          <input class=\"mdl-textfield__input\" type=\"text\" name=\"sample\"\n                 id=\"waterfall-exp\">\n        </div>\n      </div>\n    </div>\n    <!-- Bottom row, not visible on scroll -->\n    <div class=\"mdl-layout__header-row\">\n      <div class=\"mdl-layout-spacer\"></div>\n      <!-- Navigation -->\n      <nav class=\"mdl-navigation\">\n        <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n        <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n        <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n        <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      </nav>\n    </div>\n  </header>\n  <div class=\"mdl-layout__drawer\">\n    <span class=\"mdl-layout-title\">Title</span>\n    <nav class=\"mdl-navigation\">\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n      <a class=\"mdl-navigation__link\" href=\"\">Link</a>\n    </nav>\n  </div>\n  <main class=\"mdl-layout__content\">\n    <div class=\"page-content\"><!-- Your content goes here --></div>\n  </main>\n</div>\n"
  },
  {
    "path": "src/list/README.md",
    "content": "## Introduction\nLists present multiple line items vertically as a single continuous element. Refer the [Material Design\nSpec](https://www.google.com/design/spec/components/lists.html) to know more about the content options.\n\n### To include the MDL **list** component:\n\n## Create a List with basic items.\n\n&nbsp;1. Code a `<ul>` element with the class `mdl-list`; this is the \"outer\" container, intended to hold all of the list's content.\n```html\n<ul class='mdl-list'>\n</ul>\n```\n&nbsp;2. Code as many `<li>` elements as required with the class `mdl-list__item`; this is intended to hold all of the **item's** content.\n```html\n<ul class='mdl-list'>\n  <li class=\"mdl-list__item\"></li>\n  <li class=\"mdl-list__item\"></li>\n  <li class=\"mdl-list__item\"></li>\n</ul>\n```\n\n&nbsp;3. Add your content as the children of the `<li>`, with the appropriate content type modification class for example .\n```html\n<ul class='mdl-list'>\n  <li class=\"mdl-list__item\">\n    <span class=\"mdl-list__item-primary-content\"></span>\n  </li>\n  <li class=\"mdl-list__item\">\n    <span class=\"mdl-list__item-primary-content\"></span>\n  </li>\n  <li class=\"mdl-list__item\">\n    <span class=\"mdl-list__item-primary-content\"></span>\n  </li>\n</ul>\n```\n\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual enhancements to the list. The table below lists the available classes and their effects.\n\n| MDL Class        | Effect           | Remark  |\n| ------------- |:-------------:| -----:|\n| .mdl-list | Defines list as an MDL component| - |\n| .mdl-list__item | Defines the List's Items | required |\n| .mdl-list__item--two-line | Defines the List's Items as Two Line | Optional Two Line List Variant |\n| .mdl-list__item--three-line | Defines the List's Items  as a Three Line | Optional Three Line List Variant |\n| .mdl-list__item-primary-content | Defines the primary content sub-division |-|\n| .mdl-list__item-avatar | Defines the avatar sub-division |-|\n| .mdl-list__item-icon | Defines the icon sub-division |-|\n| .mdl-list__item-secondary-content | Defines the secondary content sub-division | requires `.mdl-list__item--two-line` or `.mdl-list__item--three-line` |\n| .mdl-list__item-secondary-info | Defines the information sub-division |requires `.mdl-list__item--two-line` or `.mdl-list__item--three-line` |\n| .mdl-list__item-secondary-action | Defines the Action sub-division | requires `.mdl-list__item--two-line` or `.mdl-list__item--three-line` |\n| .mdl-list__item-text-body | Defines the Text Body sub-division | requires `.mdl-list__item--three-line` |\n"
  },
  {
    "path": "src/list/_list.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n@import \"../mixins\";\n\n\n.mdl-list {\n  display: block;\n  padding: $list-border 0;\n  list-style: none;\n}\n\n.mdl-list__item {\n  @include typo-subhead();\n  line-height: 1;\n  display: flex;\n  min-height: $list-min-height;\n  box-sizing: border-box;\n  flex-direction: row;\n  flex-wrap: nowrap;\n  align-items: center;\n  padding: $list-min-padding;\n  cursor: default;\n  color: $list-main-text-text-color;\n  overflow: hidden;\n\n  & .mdl-list__item-primary-content {\n    order: 0;\n    flex-grow: 2;\n    text-decoration: none;\n    box-sizing: border-box;\n    display: flex;\n    align-items: center;\n\n    & .mdl-list__item-icon {\n      margin-right: $list-icon-text-left-distance - $list-icon-size - $list-min-padding;\n    }\n\n    & .mdl-list__item-avatar {\n      margin-right: $list-avatar-text-left-distance - $list-avatar-size - $list-min-padding;\n    }\n  }\n\n  & .mdl-list__item-secondary-content {\n    display: flex;\n    flex-flow: column;\n    align-items: flex-end;\n    margin-left: $list-min-padding;\n\n    & .mdl-list__item-secondary-action label { display: inline; }\n    & .mdl-list__item-secondary-info {\n      @include typo-caption();\n      color: $list-supporting-text-text-color;\n    }\n    & .mdl-list__item-sub-header {\n      padding: 0 0 0 $list-min-padding;\n    }\n  }\n}\n\n.mdl-list__item-icon,\n.mdl-list__item-icon.material-icons {\n  height: $list-icon-size;\n  width: $list-icon-size;\n  font-size: $list-icon-size;\n  box-sizing: border-box;\n  color: $list-icon-color;\n}\n\n.mdl-list__item-avatar,\n.mdl-list__item-avatar.material-icons {\n  height: $list-avatar-size;\n  width: $list-avatar-size;\n  box-sizing: border-box;\n  border-radius: 50%;\n  // Set a background colour in case the user doesn't provide an image.\n  background-color: $list-icon-color;\n  // Set a font size and color in case the user provides a Material Icon.\n  font-size: $list-avatar-size;\n  color: $list-avatar-color;\n}\n\n.mdl-list__item--two-line {\n  height: $list-two-line-height;\n\n  & .mdl-list__item-primary-content {\n    height: $list-two-line-height - $list-min-padding - $list-bottom-padding;\n    line-height: 20px;\n    display: block;\n\n    & .mdl-list__item-avatar{\n      float: left;\n    }\n\n    & .mdl-list__item-icon {\n      float: left;\n      // Icons are aligned to center of text in a two line list.\n      margin-top:\n        ($list-two-line-height - $list-min-padding - $list-bottom-padding -\n         $list-icon-size) / 2;\n    }\n\n    & .mdl-list__item-secondary-content {\n      height: $list-two-line-height - $list-min-padding - $list-bottom-padding;\n    }\n\n    & .mdl-list__item-sub-title {\n      @include typo-body-1();\n      line-height: 18px;\n      color: $list-supporting-text-text-color;\n      display: block;\n      padding: 0;\n    }\n  }\n}\n\n.mdl-list__item--three-line {\n  height: $list-three-line-height;\n\n  & .mdl-list__item-primary-content {\n    height: $list-three-line-height - $list-min-padding - $list-bottom-padding;\n    line-height: 20px;\n    display: block;\n\n    & .mdl-list__item-avatar,\n    & .mdl-list__item-icon {\n      float: left;\n    }\n  }\n\n  & .mdl-list__item-secondary-content {\n    height: $list-three-line-height - $list-min-padding - $list-bottom-padding;\n  }\n\n  & .mdl-list__item-text-body {\n    @include typo-body-1();\n    line-height: 18px;\n    height: $list-three-line-height - $list-min-padding - $list-bottom-padding;\n    color: $list-supporting-text-text-color;\n    display: block;\n    padding: 0;\n  }\n}\n"
  },
  {
    "path": "src/list/snippets/action.html",
    "content": "<!-- List items with avatar and action -->\n<style>\n.demo-list-action {\n  width: 300px;\n}\n</style>\n\n<div class=\"demo-list-action mdl-list\">\n  <div class=\"mdl-list__item\">\n    <span class=\"mdl-list__item-primary-content\">\n      <i class=\"material-icons mdl-list__item-avatar\">person</i>\n      <span>Bryan Cranston</span>\n    </span>\n    <a class=\"mdl-list__item-secondary-action\" href=\"#\"><i class=\"material-icons\">star</i></a>\n  </div>\n  <div class=\"mdl-list__item\">\n    <span class=\"mdl-list__item-primary-content\">\n      <i class=\"material-icons mdl-list__item-avatar\">person</i>\n      <span>Aaron Paul</span>\n    </span>\n    <a class=\"mdl-list__item-secondary-action\" href=\"#\"><i class=\"material-icons\">star</i></a>\n  </div>\n  <div class=\"mdl-list__item\">\n    <span class=\"mdl-list__item-primary-content\">\n      <i class=\"material-icons mdl-list__item-avatar\">person</i>\n      <span>Bob Odenkirk</span>\n    </span>\n    <span class=\"mdl-list__item-secondary-content\">\n      <a class=\"mdl-list__item-secondary-action\" href=\"#\"><i class=\"material-icons\">star</i></a>\n  </span>\n  </div>\n</div>\n"
  },
  {
    "path": "src/list/snippets/icon.html",
    "content": "<!-- Icon List -->\n<style>\n.demo-list-icon {\n  width: 300px;\n}\n</style>\n\n<ul class=\"demo-list-icon mdl-list\">\n  <li class=\"mdl-list__item\">\n    <span class=\"mdl-list__item-primary-content\">\n    <i class=\"material-icons mdl-list__item-icon\">person</i>\n    Bryan Cranston\n</span>\n  </li>\n  <li class=\"mdl-list__item\">\n    <span class=\"mdl-list__item-primary-content\">\n    <i class=\"material-icons mdl-list__item-icon\">person</i>\n    Aaron Paul\n  </span>\n  </li>\n  <li class=\"mdl-list__item\">\n    <span class=\"mdl-list__item-primary-content\">\n    <i class=\"material-icons mdl-list__item-icon\">person</i>\n    Bob Odenkirk\n  </span>\n  </li>\n</ul>\n"
  },
  {
    "path": "src/list/snippets/list-control.html",
    "content": "<!-- List with avatar and controls -->\n<style>\n.demo-list-control {\n  width: 300px;\n}\n\n.demo-list-radio {\n  display: inline;\n}\n</style>\n\n<ul class=\"demo-list-control mdl-list\">\n  <li class=\"mdl-list__item\">\n    <span class=\"mdl-list__item-primary-content\">\n      <i class=\"material-icons  mdl-list__item-avatar\">person</i>\n      Bryan Cranston\n    </span>\n    <span class=\"mdl-list__item-secondary-action\">\n      <label class=\"mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect\" for=\"list-checkbox-1\">\n        <input type=\"checkbox\" id=\"list-checkbox-1\" class=\"mdl-checkbox__input\" checked />\n      </label>\n    </span>\n  </li>\n  <li class=\"mdl-list__item\">\n    <span class=\"mdl-list__item-primary-content\">\n      <i class=\"material-icons  mdl-list__item-avatar\">person</i>\n      Aaron Paul\n    </span>\n    <span class=\"mdl-list__item-secondary-action\">\n      <label class=\"demo-list-radio mdl-radio mdl-js-radio mdl-js-ripple-effect\" for=\"list-option-1\">\n        <input type=\"radio\" id=\"list-option-1\" class=\"mdl-radio__button\" name=\"options\" value=\"1\" checked />\n      </label>\n    </span>\n  </li>\n  <li class=\"mdl-list__item\">\n    <span class=\"mdl-list__item-primary-content\">\n      <i class=\"material-icons  mdl-list__item-avatar\">person</i>\n      Bob Odenkirk\n    </span>\n    <span class=\"mdl-list__item-secondary-action\">\n      <label class=\"mdl-switch mdl-js-switch mdl-js-ripple-effect\" for=\"list-switch-1\">\n        <input type=\"checkbox\" id=\"list-switch-1\" class=\"mdl-switch__input\" checked />\n      </label>\n    </span>\n  </li>\n</ul>\n"
  },
  {
    "path": "src/list/snippets/list-item.html",
    "content": "<!-- Simple list -->\n<style>\n.demo-list-item {\n  width: 300px;\n}\n</style>\n\n<ul class=\"demo-list-item mdl-list\">\n  <li class=\"mdl-list__item\">\n    <span class=\"mdl-list__item-primary-content\">\n      Bryan Cranston\n    </span>\n  </li>\n  <li class=\"mdl-list__item\">\n    <span class=\"mdl-list__item-primary-content\">\n      Aaron Paul\n    </span>\n  </li>\n  <li class=\"mdl-list__item\">\n    <span class=\"mdl-list__item-primary-content\">\n      Bob Odenkirk\n    </span>\n  </li>\n</ul>\n"
  },
  {
    "path": "src/list/snippets/three-line.html",
    "content": "<!-- Three Line List with secondary info and action -->\n<style>\n.demo-list-three {\n  width: 650px;\n}\n</style>\n\n<ul class=\"demo-list-three mdl-list\">\n  <li class=\"mdl-list__item mdl-list__item--three-line\">\n    <span class=\"mdl-list__item-primary-content\">\n      <i class=\"material-icons mdl-list__item-avatar\">person</i>\n      <span>Bryan Cranston</span>\n      <span class=\"mdl-list__item-text-body\">\n        Bryan Cranston played the role of Walter in Breaking Bad. He is also known\n        for playing Hal in Malcom in the Middle.\n      </span>\n    </span>\n    <span class=\"mdl-list__item-secondary-content\">\n      <a class=\"mdl-list__item-secondary-action\" href=\"#\"><i class=\"material-icons\">star</i></a>\n    </span>\n  </li>\n  <li class=\"mdl-list__item mdl-list__item--three-line\">\n    <span class=\"mdl-list__item-primary-content\">\n      <i class=\"material-icons  mdl-list__item-avatar\">person</i>\n      <span>Aaron Paul</span>\n      <span class=\"mdl-list__item-text-body\">\n        Aaron Paul played the role of Jesse in Breaking Bad. He also featured in\n        the \"Need For Speed\" Movie.\n      </span>\n    </span>\n    <span class=\"mdl-list__item-secondary-content\">\n      <a class=\"mdl-list__item-secondary-action\" href=\"#\"><i class=\"material-icons\">star</i></a>\n    </span>\n  </li>\n  <li class=\"mdl-list__item mdl-list__item--three-line\">\n    <span class=\"mdl-list__item-primary-content\">\n      <i class=\"material-icons  mdl-list__item-avatar\">person</i>\n      <span>Bob Odenkirk</span>\n      <span class=\"mdl-list__item-text-body\">\n        Bob Odinkrik played the role of Saul in Breaking Bad. Due to public fondness for the\n        character, Bob stars in his own show now, called \"Better Call Saul\".\n      </span>\n    </span>\n    <span class=\"mdl-list__item-secondary-content\">\n      <a class=\"mdl-list__item-secondary-action\" href=\"#\"><i class=\"material-icons\">star</i></a>\n    </span>\n  </li>\n</ul>\n"
  },
  {
    "path": "src/list/snippets/two-line.html",
    "content": "<!-- Two Line List with secondary info and action -->\n<style>\n.demo-list-two {\n  width: 300px;\n}\n</style>\n\n<ul class=\"demo-list-two mdl-list\">\n  <li class=\"mdl-list__item mdl-list__item--two-line\">\n    <span class=\"mdl-list__item-primary-content\">\n      <i class=\"material-icons mdl-list__item-avatar\">person</i>\n      <span>Bryan Cranston</span>\n      <span class=\"mdl-list__item-sub-title\">62 Episodes</span>\n    </span>\n    <span class=\"mdl-list__item-secondary-content\">\n      <span class=\"mdl-list__item-secondary-info\">Actor</span>\n      <a class=\"mdl-list__item-secondary-action\" href=\"#\"><i class=\"material-icons\">star</i></a>\n    </span>\n  </li>\n  <li class=\"mdl-list__item mdl-list__item--two-line\">\n    <span class=\"mdl-list__item-primary-content\">\n      <i class=\"material-icons mdl-list__item-avatar\">person</i>\n      <span>Aaron Paul</span>\n      <span class=\"mdl-list__item-sub-title\">62 Episodes</span>\n    </span>\n    <span class=\"mdl-list__item-secondary-content\">\n      <a class=\"mdl-list__item-secondary-action\" href=\"#\"><i class=\"material-icons\">star</i></a>\n    </span>\n  </li>\n  <li class=\"mdl-list__item mdl-list__item--two-line\">\n    <span class=\"mdl-list__item-primary-content\">\n      <i class=\"material-icons mdl-list__item-avatar\">person</i>\n      <span>Bob Odenkirk</span>\n      <span class=\"mdl-list__item-sub-title\">62 Episodes</span>\n    </span>\n    <span class=\"mdl-list__item-secondary-content\">\n      <a class=\"mdl-list__item-secondary-action\" href=\"#\"><i class=\"material-icons\">star</i></a>\n    </span>\n  </li>\n</ul>\n"
  },
  {
    "path": "src/material-design-lite-grid.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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/* Material Design Lite Grid*/\n\n@import \"variables\";\n@import \"mixins\";\n@import \"grid/grid\";"
  },
  {
    "path": "src/material-design-lite.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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/* Material Design Lite */\n\n// Variables and mixins\n@import \"variables\";\n@import \"mixins\";\n\n// Resets and dependencies\n@import \"resets/resets\";\n@import \"typography/typography\";\n\n// Components\n@import \"palette/palette\";\n@import \"ripple/ripple\";\n@import \"animation/animation\";\n@import \"badge/badge\";\n@import \"button/button\";\n@import \"card/card\";\n@import \"checkbox/checkbox\";\n@import \"chip/chip\";\n@import \"data-table/data-table\";\n@import \"dialog/dialog\";\n@import \"expansion/expansion\";\n@import \"footer/mega_footer\";\n@import \"footer/mini_footer\";\n@import \"icon-toggle/icon-toggle\";\n@import \"list/list\";\n@import \"menu/menu\";\n@import \"progress/progress\";\n@import \"layout/layout\";\n@import \"radio/radio\";\n@import \"slider/slider\";\n@import \"snackbar/snackbar\";\n@import \"spinner/spinner\";\n@import \"switch/switch\";\n@import \"tabs/tabs\";\n@import \"textfield/textfield\";\n@import \"tooltip/tooltip\";\n@import \"shadow/shadow\";\n@import \"grid/grid\";\n"
  },
  {
    "path": "src/mdlComponentHandler.js",
    "content": "/**\n * @license\n * Copyright 2015 Google Inc. 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 *      http://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 * A component handler interface using the revealing module design pattern.\n * More details on this design pattern here:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @author Jason Mayes.\n */\n/* exported componentHandler */\n\n// Pre-defining the componentHandler interface, for closure documentation and\n// static verification.\nvar componentHandler = {\n  /**\n   * Searches existing DOM for elements of our component type and upgrades them\n   * if they have not already been upgraded.\n   *\n   * @param {string=} optJsClass the programatic name of the element class we\n   * need to create a new instance of.\n   * @param {string=} optCssClass the name of the CSS class elements of this\n   * type will have.\n   */\n  upgradeDom: function(optJsClass, optCssClass) {},\n  /**\n   * Upgrades a specific element rather than all in the DOM.\n   *\n   * @param {!Element} element The element we wish to upgrade.\n   * @param {string=} optJsClass Optional name of the class we want to upgrade\n   * the element to.\n   */\n  upgradeElement: function(element, optJsClass) {},\n  /**\n   * Upgrades a specific list of elements rather than all in the DOM.\n   *\n   * @param {!Element|!Array<!Element>|!NodeList|!HTMLCollection} elements\n   * The elements we wish to upgrade.\n   */\n  upgradeElements: function(elements) {},\n  /**\n   * Upgrades all registered components found in the current DOM. This is\n   * automatically called on window load.\n   */\n  upgradeAllRegistered: function() {},\n  /**\n   * Allows user to be alerted to any upgrades that are performed for a given\n   * component type\n   *\n   * @param {string} jsClass The class name of the MDL component we wish\n   * to hook into for any upgrades performed.\n   * @param {function(!HTMLElement)} callback The function to call upon an\n   * upgrade. This function should expect 1 parameter - the HTMLElement which\n   * got upgraded.\n   */\n  registerUpgradedCallback: function(jsClass, callback) {},\n  /**\n   * Registers a class for future use and attempts to upgrade existing DOM.\n   *\n   * @param {componentHandler.ComponentConfigPublic} config the registration configuration\n   */\n  register: function(config) {},\n  /**\n   * Downgrade either a given node, an array of nodes, or a NodeList.\n   *\n   * @param {!Node|!Array<!Node>|!NodeList} nodes\n   */\n  downgradeElements: function(nodes) {}\n};\n\ncomponentHandler = (function() {\n  'use strict';\n\n  /** @type {!Array<componentHandler.ComponentConfig>} */\n  var registeredComponents_ = [];\n\n  /** @type {!Array<componentHandler.Component>} */\n  var createdComponents_ = [];\n\n  var componentConfigProperty_ = 'mdlComponentConfigInternal_';\n\n  /**\n   * Searches registered components for a class we are interested in using.\n   * Optionally replaces a match with passed object if specified.\n   *\n   * @param {string} name The name of a class we want to use.\n   * @param {componentHandler.ComponentConfig=} optReplace Optional object to replace match with.\n   * @return {!Object|boolean}\n   * @private\n   */\n  function findRegisteredClass_(name, optReplace) {\n    for (var i = 0; i < registeredComponents_.length; i++) {\n      if (registeredComponents_[i].className === name) {\n        if (typeof optReplace !== 'undefined') {\n          registeredComponents_[i] = optReplace;\n        }\n        return registeredComponents_[i];\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Returns an array of the classNames of the upgraded classes on the element.\n   *\n   * @param {!Element} element The element to fetch data from.\n   * @return {!Array<string>}\n   * @private\n   */\n  function getUpgradedListOfElement_(element) {\n    var dataUpgraded = element.getAttribute('data-upgraded');\n    // Use `['']` as default value to conform the `,name,name...` style.\n    return dataUpgraded === null ? [''] : dataUpgraded.split(',');\n  }\n\n  /**\n   * Returns true if the given element has already been upgraded for the given\n   * class.\n   *\n   * @param {!Element} element The element we want to check.\n   * @param {string} jsClass The class to check for.\n   * @returns {boolean}\n   * @private\n   */\n  function isElementUpgraded_(element, jsClass) {\n    var upgradedList = getUpgradedListOfElement_(element);\n    return upgradedList.indexOf(jsClass) !== -1;\n  }\n\n  /**\n   * Create an event object.\n   *\n   * @param {string} eventType The type name of the event.\n   * @param {boolean} bubbles Whether the event should bubble up the DOM.\n   * @param {boolean} cancelable Whether the event can be canceled.\n   * @returns {!Event}\n   */\n  function createEvent_(eventType, bubbles, cancelable) {\n    if ('CustomEvent' in window && typeof window.CustomEvent === 'function') {\n      return new CustomEvent(eventType, {\n        bubbles: bubbles,\n        cancelable: cancelable\n      });\n    } else {\n      var ev = document.createEvent('Events');\n      ev.initEvent(eventType, bubbles, cancelable);\n      return ev;\n    }\n  }\n\n  /**\n   * Searches existing DOM for elements of our component type and upgrades them\n   * if they have not already been upgraded.\n   *\n   * @param {string=} optJsClass the programatic name of the element class we\n   * need to create a new instance of.\n   * @param {string=} optCssClass the name of the CSS class elements of this\n   * type will have.\n   */\n  function upgradeDomInternal(optJsClass, optCssClass) {\n    if (typeof optJsClass === 'undefined' &&\n        typeof optCssClass === 'undefined') {\n      for (var i = 0; i < registeredComponents_.length; i++) {\n        upgradeDomInternal(registeredComponents_[i].className,\n            registeredComponents_[i].cssClass);\n      }\n    } else {\n      var jsClass = /** @type {string} */ (optJsClass);\n      if (typeof optCssClass === 'undefined') {\n        var registeredClass = findRegisteredClass_(jsClass);\n        if (registeredClass) {\n          optCssClass = registeredClass.cssClass;\n        }\n      }\n\n      var elements = document.querySelectorAll('.' + optCssClass);\n      for (var n = 0; n < elements.length; n++) {\n        upgradeElementInternal(elements[n], jsClass);\n      }\n    }\n  }\n\n  /**\n   * Upgrades a specific element rather than all in the DOM.\n   *\n   * @param {!Element} element The element we wish to upgrade.\n   * @param {string=} optJsClass Optional name of the class we want to upgrade\n   * the element to.\n   */\n  function upgradeElementInternal(element, optJsClass) {\n    // Verify argument type.\n    if (!(typeof element === 'object' && element instanceof Element)) {\n      throw new Error('Invalid argument provided to upgrade MDL element.');\n    }\n    // Allow upgrade to be canceled by canceling emitted event.\n    var upgradingEv = createEvent_('mdl-componentupgrading', true, true);\n    element.dispatchEvent(upgradingEv);\n    if (upgradingEv.defaultPrevented) {\n      return;\n    }\n\n    var upgradedList = getUpgradedListOfElement_(element);\n    var classesToUpgrade = [];\n    // If jsClass is not provided scan the registered components to find the\n    // ones matching the element's CSS classList.\n    if (!optJsClass) {\n      var classList = element.classList;\n      registeredComponents_.forEach(function(component) {\n        // Match CSS & Not to be upgraded & Not upgraded.\n        if (classList.contains(component.cssClass) &&\n            classesToUpgrade.indexOf(component) === -1 &&\n            !isElementUpgraded_(element, component.className)) {\n          classesToUpgrade.push(component);\n        }\n      });\n    } else if (!isElementUpgraded_(element, optJsClass)) {\n      classesToUpgrade.push(findRegisteredClass_(optJsClass));\n    }\n\n    // Upgrade the element for each classes.\n    for (var i = 0, n = classesToUpgrade.length, registeredClass; i < n; i++) {\n      registeredClass = classesToUpgrade[i];\n      if (registeredClass) {\n        // Mark element as upgraded.\n        upgradedList.push(registeredClass.className);\n        element.setAttribute('data-upgraded', upgradedList.join(','));\n        var instance = new registeredClass.classConstructor(element);\n        instance[componentConfigProperty_] = registeredClass;\n        createdComponents_.push(instance);\n        // Call any callbacks the user has registered with this component type.\n        for (var j = 0, m = registeredClass.callbacks.length; j < m; j++) {\n          registeredClass.callbacks[j](element);\n        }\n\n        if (registeredClass.widget) {\n          // Assign per element instance for control over API\n          element[registeredClass.className] = instance;\n        }\n      } else {\n        throw new Error(\n          'Unable to find a registered component for the given class.');\n      }\n\n      var upgradedEv = createEvent_('mdl-componentupgraded', true, false);\n      element.dispatchEvent(upgradedEv);\n    }\n  }\n\n  /**\n   * Upgrades a specific list of elements rather than all in the DOM.\n   *\n   * @param {!Element|!Array<!Element>|!NodeList|!HTMLCollection} elements\n   * The elements we wish to upgrade.\n   */\n  function upgradeElementsInternal(elements) {\n    if (!Array.isArray(elements)) {\n      if (elements instanceof Element) {\n        elements = [elements];\n      } else {\n        elements = Array.prototype.slice.call(elements);\n      }\n    }\n    for (var i = 0, n = elements.length, element; i < n; i++) {\n      element = elements[i];\n      if (element instanceof HTMLElement) {\n        upgradeElementInternal(element);\n        if (element.children.length > 0) {\n          upgradeElementsInternal(element.children);\n        }\n      }\n    }\n  }\n\n  /**\n   * Registers a class for future use and attempts to upgrade existing DOM.\n   *\n   * @param {componentHandler.ComponentConfigPublic} config\n   */\n  function registerInternal(config) {\n    // In order to support both Closure-compiled and uncompiled code accessing\n    // this method, we need to allow for both the dot and array syntax for\n    // property access. You'll therefore see the `foo.bar || foo['bar']`\n    // pattern repeated across this method.\n    var widgetMissing = (typeof config.widget === 'undefined' &&\n        typeof config['widget'] === 'undefined');\n    var widget = true;\n\n    if (!widgetMissing) {\n      widget = config.widget || config['widget'];\n    }\n\n    var newConfig = /** @type {componentHandler.ComponentConfig} */ ({\n      classConstructor: config.constructor || config['constructor'],\n      className: config.classAsString || config['classAsString'],\n      cssClass: config.cssClass || config['cssClass'],\n      widget: widget,\n      callbacks: []\n    });\n\n    registeredComponents_.forEach(function(item) {\n      if (item.cssClass === newConfig.cssClass) {\n        throw new Error('The provided cssClass has already been registered: ' + item.cssClass);\n      }\n      if (item.className === newConfig.className) {\n        throw new Error('The provided className has already been registered');\n      }\n    });\n\n    if (config.constructor.prototype\n        .hasOwnProperty(componentConfigProperty_)) {\n      throw new Error(\n          'MDL component classes must not have ' + componentConfigProperty_ +\n          ' defined as a property.');\n    }\n\n    var found = findRegisteredClass_(config.classAsString, newConfig);\n\n    if (!found) {\n      registeredComponents_.push(newConfig);\n    }\n  }\n\n  /**\n   * Allows user to be alerted to any upgrades that are performed for a given\n   * component type\n   *\n   * @param {string} jsClass The class name of the MDL component we wish\n   * to hook into for any upgrades performed.\n   * @param {function(!HTMLElement)} callback The function to call upon an\n   * upgrade. This function should expect 1 parameter - the HTMLElement which\n   * got upgraded.\n   */\n  function registerUpgradedCallbackInternal(jsClass, callback) {\n    var regClass = findRegisteredClass_(jsClass);\n    if (regClass) {\n      regClass.callbacks.push(callback);\n    }\n  }\n\n  /**\n   * Upgrades all registered components found in the current DOM. This is\n   * automatically called on window load.\n   */\n  function upgradeAllRegisteredInternal() {\n    for (var n = 0; n < registeredComponents_.length; n++) {\n      upgradeDomInternal(registeredComponents_[n].className);\n    }\n  }\n\n  /**\n   * Check the component for the downgrade method.\n   * Execute if found.\n   * Remove component from createdComponents list.\n   *\n   * @param {?componentHandler.Component} component\n   */\n  function deconstructComponentInternal(component) {\n    if (component) {\n      var componentIndex = createdComponents_.indexOf(component);\n      createdComponents_.splice(componentIndex, 1);\n\n      var upgrades = component.element_.getAttribute('data-upgraded').split(',');\n      var componentPlace = upgrades.indexOf(component[componentConfigProperty_].classAsString);\n      upgrades.splice(componentPlace, 1);\n      component.element_.setAttribute('data-upgraded', upgrades.join(','));\n\n      var ev = createEvent_('mdl-componentdowngraded', true, false);\n      component.element_.dispatchEvent(ev);\n    }\n  }\n\n  /**\n   * Downgrade either a given node, an array of nodes, or a NodeList.\n   *\n   * @param {!Node|!Array<!Node>|!NodeList} nodes\n   */\n  function downgradeNodesInternal(nodes) {\n    /**\n     * Auxiliary function to downgrade a single node.\n     * @param  {!Node} node the node to be downgraded\n     */\n    var downgradeNode = function(node) {\n      createdComponents_.filter(function(item) {\n        return item.element_ === node;\n      }).forEach(deconstructComponentInternal);\n    };\n    if (nodes instanceof Array || nodes instanceof NodeList) {\n      for (var n = 0; n < nodes.length; n++) {\n        downgradeNode(nodes[n]);\n      }\n    } else if (nodes instanceof Node) {\n      downgradeNode(nodes);\n    } else {\n      throw new Error('Invalid argument provided to downgrade MDL nodes.');\n    }\n  }\n\n  // Now return the functions that should be made public with their publicly\n  // facing names...\n  return {\n    upgradeDom: upgradeDomInternal,\n    upgradeElement: upgradeElementInternal,\n    upgradeElements: upgradeElementsInternal,\n    upgradeAllRegistered: upgradeAllRegisteredInternal,\n    registerUpgradedCallback: registerUpgradedCallbackInternal,\n    register: registerInternal,\n    downgradeElements: downgradeNodesInternal\n  };\n})();\n\n/**\n * Describes the type of a registered component type managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n *   constructor: Function,\n *   classAsString: string,\n *   cssClass: string,\n *   widget: (string|boolean|undefined)\n * }}\n */\ncomponentHandler.ComponentConfigPublic;  // jshint ignore:line\n\n/**\n * Describes the type of a registered component type managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n *   constructor: !Function,\n *   className: string,\n *   cssClass: string,\n *   widget: (string|boolean),\n *   callbacks: !Array<function(!HTMLElement)>\n * }}\n */\ncomponentHandler.ComponentConfig;  // jshint ignore:line\n\n/**\n * Created component (i.e., upgraded element) type as managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n *   element_: !HTMLElement,\n *   className: string,\n *   classAsString: string,\n *   cssClass: string,\n *   widget: string\n * }}\n */\ncomponentHandler.Component;  // jshint ignore:line\n\n// Export all symbols, for the benefit of Closure compiler.\n// No effect on uncompiled code.\ncomponentHandler['upgradeDom'] = componentHandler.upgradeDom;\ncomponentHandler['upgradeElement'] = componentHandler.upgradeElement;\ncomponentHandler['upgradeElements'] = componentHandler.upgradeElements;\ncomponentHandler['upgradeAllRegistered'] =\n    componentHandler.upgradeAllRegistered;\ncomponentHandler['registerUpgradedCallback'] =\n    componentHandler.registerUpgradedCallback;\ncomponentHandler['register'] = componentHandler.register;\ncomponentHandler['downgradeElements'] = componentHandler.downgradeElements;\nwindow.componentHandler = componentHandler;\nwindow['componentHandler'] = componentHandler;\n\nwindow.addEventListener('load', function() {\n  'use strict';\n\n  /**\n   * Performs a \"Cutting the mustard\" test. If the browser supports the features\n   * tested, adds a mdl-js class to the <html> element. It then upgrades all MDL\n   * components requiring JavaScript.\n   */\n  if ('classList' in document.createElement('div') &&\n      'querySelector' in document &&\n      'addEventListener' in window && Array.prototype.forEach) {\n    document.documentElement.classList.add('mdl-js');\n    componentHandler.upgradeAllRegistered();\n  } else {\n    /**\n     * Dummy function to avoid JS errors.\n     */\n    componentHandler.upgradeElement = function() {};\n    /**\n     * Dummy function to avoid JS errors.\n     */\n    componentHandler.register = function() {};\n  }\n});\n"
  },
  {
    "path": "src/menu/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **menu** component is a user interface element that allows users to select one of a number of options. The selection typically results in an action initiation, a setting change, or other observable effect. Menu options are always presented in sets of two or more, and options may be programmatically enabled or disabled as required. The menu appears when the user is asked to choose among a series of options, and is usually dismissed after the choice is made.\n\nMenus are an established but non-standardized feature in user interfaces, and allow users to make choices that direct the activity, progress, or characteristics of software. Their design and use is an important factor in the overall user experience. See the menu component's [Material Design specifications page](http://www.google.com/design/spec/components/menus.html) for details.\n\n### To include an MDL **menu** component:\n\n> **Note:** The menu requires a non-static positioned parent element. Positioning options may not work properly if the menu is inside of a statically positioned node.\n\n&nbsp;1. Code a `<button>` element; this is the clickable toggle that will show and hide the menu options. Include an `id` attribute whose value will match the `for` (or `data-mdl-for`) attribute of the unordered list coded in the next step. Inside the button, code a `<i>` or `<span>` element to contain an icon of your choice.\n```html\n<button id=\"menu1\">\n  <i></i>\n</button>\n```\n&nbsp;2. Code a `<ul>` unordered list element; this is the container that holds the options. Include a `for` attribute whose value matches the `id` attribute of the button element.\n```html\n<ul for=\"menu1\">\n</ul>\n```\n&nbsp;3. Inside the unordered list, code one `<li>` element for each option. Include any desired attributes and values, such as an id or event handler, and add a text caption as appropriate.\n```html\n<ul for=\"menu1\">\n  <li>Continue</li>\n  <li>Stop</li>\n  <li>Pause</li>\n</ul>\n```\n&nbsp;4. Add one or more MDL classes, separated by spaces, to the button and span elements using the `class` attribute.\n```html\n<button id=\"menu1\" class=\"mdl-button mdl-js-button mdl-button--icon\">\n  <i class=\"material-icons\">more_vert</i>\n</button>\n```\n&nbsp;5. Add one or more MDL classes, separated by spaces, to the unordered list and the list items using the `class` attribute.\n```html\n<ul class=\"mdl-menu mdl-js-menu\" for=\"menu1\">\n  <li class=\"mdl-menu__item\">Continue</li>\n  <li class=\"mdl-menu__item\">Stop</li>\n  <li class=\"mdl-menu__item\">Pause</li>\n</ul>\n```\n\nThe menu component is ready for use.\n\n#### Examples\n\nA menu with three options.\n```html\n<button id=\"menu-speed\" class=\"mdl-button mdl-js-button mdl-button--icon\">\n  <i class=\"material-icons\">more_vert</i>\n</button>\n<ul class=\"mdl-menu mdl-js-menu\" for=\"menu-speed\">\n  <li class=\"mdl-menu__item\">Fast</li>\n  <li class=\"mdl-menu__item\">Medium</li>\n  <li class=\"mdl-menu__item\">Slow</li>\n</ul>\n```\nA menu with three options, with ripple effect on button and option links.\n```html\n<button id=\"menu-speed\" class=\"mdl-button mdl-js-button mdl-button--icon\">\n  <i class=\"material-icons\">more_vert</i>\n</button>\n<ul class=\"mdl-menu mdl-js-menu mdl-js-ripple-effect\" for=\"menu-speed\">\n  <li class=\"mdl-menu__item\">Fast</li>\n  <li class=\"mdl-menu__item\">Medium</li>\n  <li class=\"mdl-menu__item\">Slow</li>\n</ul>\n```\nA menu with three options, the second of which is disabled by default.\n```html\n<button id=\"menu-speed\" class=\"mdl-button mdl-js-button mdl-button--icon\">\n  <i class=\"material-icons\">more_vert</i>\n</button>\n<ul class=\"mdl-menu mdl-js-menu\" for=\"menu-speed\">\n  <li class=\"mdl-menu__item\">Fast</li>\n  <li class=\"mdl-menu__item\" disabled>Medium</li>\n  <li class=\"mdl-menu__item\">Slow</li>\n</ul>\n```\n\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual and behavioral enhancements to the menu. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-button` | Defines button as an MDL component | Required on button element |\n| `mdl-js-button` | Assigns basic MDL behavior to button | Required on button element |\n| `mdl-button--icon` | Applies *icon* (small plain circular) display effect to button | Required on button element |\n| `material-icons` | Defines span as a material icon | Required on an inline element |\n| `mdl-menu` | Defines an unordered list container as an MDL component | Required on ul element |\n| `mdl-js-menu` | Assigns basic MDL behavior to menu | Required on ul element |\n| `mdl-menu__item` | Defines buttons as MDL menu options and assigns basic MDL behavior | Required on list item elements |\n| `mdl-menu__item--full-bleed-divider` | Modifies an item to have a full bleed divider between it and the next list item. | Optional on list item elements |\n| `mdl-js-ripple-effect` | Applies *ripple* click effect to option links | Optional; goes on unordered list element |\n| `mdl-menu--top-left` | Positions menu above button, aligns left edge of menu with button  | Optional; goes on unordered list element |\n| (none) | Positions menu below button, aligns left edge of menu with button | Default |\n| `mdl-menu--top-right` | Positions menu above button, aligns right edge of menu with button | Optional; goes on unordered list element |\n| `mdl-menu--bottom-right` | Positions menu below button, aligns right edge of menu with button | Optional; goes on unordered list element |\n\n(1) The \"more-vert\" icon class is used here as an example. Other icons can be used by modifying the class name. For a list of available icons, see [this page](http://google.github.io/web-starter-kit/latest/styleguide/icons/demo.html); hover over an icon to see its class name.\n\n(2) The `i` or `span` element in \"button\"\" element can be used interchangeably.\n\n>**Note:** Disabled versions of the menu options are provided, and are invoked with the standard HTML boolean attribute `disabled` or `data-mdl-disabled`. `<li class=\"mdl-menu__item\" disabled>Medium</li>`\n>This attribute may be added or removed programmatically via scripting.\n"
  },
  {
    "path": "src/menu/_menu.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n@import \"../mixins\";\n\n.mdl-menu__container {\n  display: block;\n  margin: 0;\n  padding: 0;\n  border: none;\n  position: absolute;\n  overflow: visible;\n  height: 0;\n  width: 0;\n  visibility: hidden;\n  z-index: -1;\n\n  &.is-visible,\n  &.is-animating {\n    z-index: 999;\n    visibility: visible;\n  }\n}\n\n.mdl-menu__outline {\n  display: block;\n  background: $default-dropdown-bg-color;\n  margin: 0;\n  padding: 0;\n  border: none;\n  border-radius: 2px;\n  position: absolute;\n  top: 0;\n  left: 0;\n  overflow: hidden;\n  opacity: 0;\n  transform: scale(0);\n  transform-origin: 0 0;\n  @include shadow-2dp();\n  will-change: transform;\n  transition: transform $menu-expand-duration $animation-curve-default,\n      opacity $menu-fade-duration $animation-curve-default;\n  z-index: -1;\n\n  .mdl-menu__container.is-visible & {\n    opacity: 1;\n    transform: scale(1);\n    z-index: 999;\n  }\n\n  &.mdl-menu--bottom-right {\n    transform-origin: 100% 0;\n  }\n\n  &.mdl-menu--top-left {\n    transform-origin: 0 100%;\n  }\n\n  &.mdl-menu--top-right {\n    transform-origin: 100% 100%;\n  }\n}\n\n.mdl-menu {\n  position: absolute;\n  list-style: none;\n  top: 0;\n  left: 0;\n  height: auto;\n  width: auto;\n  min-width: 124px;\n  padding: 8px 0;\n  margin: 0;\n  opacity: 0;\n  clip: rect(0 0 0 0);\n  z-index: -1;\n\n  .mdl-menu__container.is-visible & {\n    opacity: 1;\n    z-index: 999;\n  }\n\n  &.is-animating {\n    transition: opacity $menu-fade-duration $animation-curve-default,\n        clip $menu-expand-duration $animation-curve-default;\n  }\n\n  &.mdl-menu--bottom-right {\n    left: auto;\n    right: 0;\n  }\n\n  &.mdl-menu--top-left {\n    top: auto;\n    bottom: 0;\n  }\n\n  &.mdl-menu--top-right {\n    top: auto;\n    left: auto;\n    bottom: 0;\n    right: 0;\n  }\n\n  &.mdl-menu--unaligned {\n    top: auto;\n    left: auto;\n  }\n}\n\n.mdl-menu__item {\n  display: block;\n  border: none;\n  color: $default-item-text-color;\n  background-color: transparent;\n  text-align: left;\n  margin: 0;\n  padding: 0 16px;\n  outline-color: $default-item-outline-color;\n  position: relative;\n  overflow: hidden;\n  @include typo-body-1();\n  text-decoration: none;\n  cursor: pointer;\n  height: 48px;\n  line-height: 48px;\n  white-space: nowrap;\n  opacity: 0;\n  transition: opacity $menu-fade-duration $animation-curve-default;\n  user-select: none;\n\n  .mdl-menu__container.is-visible & {\n    opacity: 1;\n  }\n\n  &::-moz-focus-inner {\n    border: 0;\n  }\n\n  &--full-bleed-divider {\n    border-bottom: 1px solid $default-item-divider-color;\n  }\n\n  &[disabled], &[data-mdl-disabled] {\n    color: $disabled-item-text-color;\n    background-color: transparent;\n    cursor: auto;\n\n    &:hover {\n      background-color: transparent;\n    }\n\n    &:focus {\n      background-color: transparent;\n    }\n\n    & .mdl-ripple {\n      background: transparent;\n    }\n  }\n\n  &:hover {\n    background-color: $default-item-hover-bg-color;\n  }\n\n  &:focus {\n    outline: none;\n    background-color: $default-item-focus-bg-color;\n  }\n\n  &:active {\n    background-color: $default-item-active-bg-color;\n  }\n}\n\n\n.mdl-menu__item--ripple-container {\n  display: block;\n  height: 100%;\n  left: 0px;\n  position: absolute;\n  top: 0px;\n  width: 100%;\n  z-index: 0;\n  overflow: hidden;\n}\n"
  },
  {
    "path": "src/menu/menu.js",
    "content": "/**\n * @license\n * Copyright 2015 Google Inc. 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 *      http://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(function() {\n  'use strict';\n\n  /**\n   * Class constructor for dropdown MDL component.\n   * Implements MDL component design pattern defined at:\n   * https://github.com/jasonmayes/mdl-component-design-pattern\n   *\n   * @constructor\n   * @param {HTMLElement} element The element that will be upgraded.\n   */\n  var MaterialMenu = function MaterialMenu(element) {\n    this.element_ = element;\n\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialMenu'] = MaterialMenu;\n\n  /**\n   * Store constants in one place so they can be updated easily.\n   *\n   * @enum {string | number}\n   * @private\n   */\n  MaterialMenu.prototype.Constant_ = {\n    // Total duration of the menu animation.\n    TRANSITION_DURATION_SECONDS: 0.3,\n    // The fraction of the total duration we want to use for menu item animations.\n    TRANSITION_DURATION_FRACTION: 0.8,\n    // How long the menu stays open after choosing an option (so the user can see\n    // the ripple).\n    CLOSE_TIMEOUT: 150\n  };\n\n  /**\n   * Keycodes, for code readability.\n   *\n   * @enum {number}\n   * @private\n   */\n  MaterialMenu.prototype.Keycodes_ = {\n    ENTER: 13,\n    ESCAPE: 27,\n    SPACE: 32,\n    UP_ARROW: 38,\n    DOWN_ARROW: 40\n  };\n\n  /**\n   * Store strings for class names defined by this component that are used in\n   * JavaScript. This allows us to simply change it in one place should we\n   * decide to modify at a later date.\n   *\n   * @enum {string}\n   * @private\n   */\n  MaterialMenu.prototype.CssClasses_ = {\n    CONTAINER: 'mdl-menu__container',\n    OUTLINE: 'mdl-menu__outline',\n    ITEM: 'mdl-menu__item',\n    ITEM_RIPPLE_CONTAINER: 'mdl-menu__item-ripple-container',\n    RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n    RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n    RIPPLE: 'mdl-ripple',\n    // Statuses\n    IS_UPGRADED: 'is-upgraded',\n    IS_VISIBLE: 'is-visible',\n    IS_ANIMATING: 'is-animating',\n    // Alignment options\n    BOTTOM_LEFT: 'mdl-menu--bottom-left',  // This is the default.\n    BOTTOM_RIGHT: 'mdl-menu--bottom-right',\n    TOP_LEFT: 'mdl-menu--top-left',\n    TOP_RIGHT: 'mdl-menu--top-right',\n    UNALIGNED: 'mdl-menu--unaligned'\n  };\n\n  /**\n   * Initialize element.\n   */\n  MaterialMenu.prototype.init = function() {\n    if (this.element_) {\n      // Create container for the menu.\n      var container = document.createElement('div');\n      container.classList.add(this.CssClasses_.CONTAINER);\n      this.element_.parentElement.insertBefore(container, this.element_);\n      this.element_.parentElement.removeChild(this.element_);\n      container.appendChild(this.element_);\n      this.container_ = container;\n\n      // Create outline for the menu (shadow and background).\n      var outline = document.createElement('div');\n      outline.classList.add(this.CssClasses_.OUTLINE);\n      this.outline_ = outline;\n      container.insertBefore(outline, this.element_);\n\n      // Find the \"for\" element and bind events to it.\n      var forElId = this.element_.getAttribute('for') ||\n                      this.element_.getAttribute('data-mdl-for');\n      var forEl = null;\n      if (forElId) {\n        forEl = document.getElementById(forElId);\n        if (forEl) {\n          this.forElement_ = forEl;\n          forEl.addEventListener('click', this.handleForClick_.bind(this));\n          forEl.addEventListener('keydown',\n              this.handleForKeyboardEvent_.bind(this));\n        }\n      }\n\n      var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n      this.boundItemKeydown_ = this.handleItemKeyboardEvent_.bind(this);\n      this.boundItemClick_ = this.handleItemClick_.bind(this);\n      for (var i = 0; i < items.length; i++) {\n        // Add a listener to each menu item.\n        items[i].addEventListener('click', this.boundItemClick_);\n        // Add a tab index to each menu item.\n        items[i].tabIndex = '-1';\n        // Add a keyboard listener to each menu item.\n        items[i].addEventListener('keydown', this.boundItemKeydown_);\n      }\n\n      // Add ripple classes to each item, if the user has enabled ripples.\n      if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n        this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n\n        for (i = 0; i < items.length; i++) {\n          var item = items[i];\n\n          var rippleContainer = document.createElement('span');\n          rippleContainer.classList.add(this.CssClasses_.ITEM_RIPPLE_CONTAINER);\n\n          var ripple = document.createElement('span');\n          ripple.classList.add(this.CssClasses_.RIPPLE);\n          rippleContainer.appendChild(ripple);\n\n          item.appendChild(rippleContainer);\n          item.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n        }\n      }\n\n      // Copy alignment classes to the container, so the outline can use them.\n      if (this.element_.classList.contains(this.CssClasses_.BOTTOM_LEFT)) {\n        this.outline_.classList.add(this.CssClasses_.BOTTOM_LEFT);\n      }\n      if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n        this.outline_.classList.add(this.CssClasses_.BOTTOM_RIGHT);\n      }\n      if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n        this.outline_.classList.add(this.CssClasses_.TOP_LEFT);\n      }\n      if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n        this.outline_.classList.add(this.CssClasses_.TOP_RIGHT);\n      }\n      if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n        this.outline_.classList.add(this.CssClasses_.UNALIGNED);\n      }\n\n      container.classList.add(this.CssClasses_.IS_UPGRADED);\n    }\n  };\n\n  /**\n   * Handles a click on the \"for\" element, by positioning the menu and then\n   * toggling it.\n   *\n   * @param {Event} evt The event that fired.\n   * @private\n   */\n  MaterialMenu.prototype.handleForClick_ = function(evt) {\n    if (this.element_ && this.forElement_) {\n      var rect = this.forElement_.getBoundingClientRect();\n      var forRect = this.forElement_.parentElement.getBoundingClientRect();\n\n      if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n        // Do not position the menu automatically. Requires the developer to\n        // manually specify position.\n      } else if (this.element_.classList.contains(\n          this.CssClasses_.BOTTOM_RIGHT)) {\n        // Position below the \"for\" element, aligned to its right.\n        this.container_.style.right = (forRect.right - rect.right) + 'px';\n        this.container_.style.top =\n            this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';\n      } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n        // Position above the \"for\" element, aligned to its left.\n        this.container_.style.left = this.forElement_.offsetLeft + 'px';\n        this.container_.style.bottom = (forRect.bottom - rect.top) + 'px';\n      } else if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n        // Position above the \"for\" element, aligned to its right.\n        this.container_.style.right = (forRect.right - rect.right) + 'px';\n        this.container_.style.bottom = (forRect.bottom - rect.top) + 'px';\n      } else {\n        // Default: position below the \"for\" element, aligned to its left.\n        this.container_.style.left = this.forElement_.offsetLeft + 'px';\n        this.container_.style.top =\n            this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';\n      }\n    }\n\n    this.toggle(evt);\n  };\n\n  /**\n   * Handles a keyboard event on the \"for\" element.\n   *\n   * @param {Event} evt The event that fired.\n   * @private\n   */\n  MaterialMenu.prototype.handleForKeyboardEvent_ = function(evt) {\n    if (this.element_ && this.container_ && this.forElement_) {\n      var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM +\n        ':not([disabled])');\n\n      if (items && items.length > 0 &&\n          this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n        if (evt.keyCode === this.Keycodes_.UP_ARROW) {\n          evt.preventDefault();\n          items[items.length - 1].focus();\n        } else if (evt.keyCode === this.Keycodes_.DOWN_ARROW) {\n          evt.preventDefault();\n          items[0].focus();\n        }\n      }\n    }\n  };\n\n  /**\n   * Handles a keyboard event on an item.\n   *\n   * @param {Event} evt The event that fired.\n   * @private\n   */\n  MaterialMenu.prototype.handleItemKeyboardEvent_ = function(evt) {\n    if (this.element_ && this.container_) {\n      var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM +\n        ':not([disabled])');\n\n      if (items && items.length > 0 &&\n          this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n        var currentIndex = Array.prototype.slice.call(items).indexOf(evt.target);\n\n        if (evt.keyCode === this.Keycodes_.UP_ARROW) {\n          evt.preventDefault();\n          if (currentIndex > 0) {\n            items[currentIndex - 1].focus();\n          } else {\n            items[items.length - 1].focus();\n          }\n        } else if (evt.keyCode === this.Keycodes_.DOWN_ARROW) {\n          evt.preventDefault();\n          if (items.length > currentIndex + 1) {\n            items[currentIndex + 1].focus();\n          } else {\n            items[0].focus();\n          }\n        } else if (evt.keyCode === this.Keycodes_.SPACE ||\n              evt.keyCode === this.Keycodes_.ENTER) {\n          evt.preventDefault();\n          // Send mousedown and mouseup to trigger ripple.\n          var e = new MouseEvent('mousedown');\n          evt.target.dispatchEvent(e);\n          e = new MouseEvent('mouseup');\n          evt.target.dispatchEvent(e);\n          // Send click.\n          evt.target.click();\n        } else if (evt.keyCode === this.Keycodes_.ESCAPE) {\n          evt.preventDefault();\n          this.hide();\n        }\n      }\n    }\n  };\n\n  /**\n   * Handles a click event on an item.\n   *\n   * @param {Event} evt The event that fired.\n   * @private\n   */\n  MaterialMenu.prototype.handleItemClick_ = function(evt) {\n    if (evt.target.hasAttribute('disabled')) {\n      evt.stopPropagation();\n    } else {\n      // Wait some time before closing menu, so the user can see the ripple.\n      this.closing_ = true;\n      window.setTimeout(function(evt) {\n        this.hide();\n        this.closing_ = false;\n      }.bind(this), /** @type {number} */ (this.Constant_.CLOSE_TIMEOUT));\n    }\n  };\n\n  /**\n   * Calculates the initial clip (for opening the menu) or final clip (for closing\n   * it), and applies it. This allows us to animate from or to the correct point,\n   * that is, the point it's aligned to in the \"for\" element.\n   *\n   * @param {number} height Height of the clip rectangle\n   * @param {number} width Width of the clip rectangle\n   * @private\n   */\n  MaterialMenu.prototype.applyClip_ = function(height, width) {\n    if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n      // Do not clip.\n      this.element_.style.clip = '';\n    } else if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n      // Clip to the top right corner of the menu.\n      this.element_.style.clip =\n          'rect(0 ' + width + 'px ' + '0 ' + width + 'px)';\n    } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n      // Clip to the bottom left corner of the menu.\n      this.element_.style.clip =\n          'rect(' + height + 'px 0 ' + height + 'px 0)';\n    } else if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n      // Clip to the bottom right corner of the menu.\n      this.element_.style.clip = 'rect(' + height + 'px ' + width + 'px ' +\n          height + 'px ' + width + 'px)';\n    } else {\n      // Default: do not clip (same as clipping to the top left corner).\n      this.element_.style.clip = '';\n    }\n  };\n\n  /**\n   * Cleanup function to remove animation listeners.\n   *\n   * @param {Event} evt\n   * @private\n   */\n\n  MaterialMenu.prototype.removeAnimationEndListener_ = function(evt) {\n    evt.target.classList.remove(MaterialMenu.prototype.CssClasses_.IS_ANIMATING);\n  };\n\n  /**\n   * Adds an event listener to clean up after the animation ends.\n   *\n   * @private\n   */\n  MaterialMenu.prototype.addAnimationEndListener_ = function() {\n    this.element_.addEventListener('transitionend', this.removeAnimationEndListener_);\n    this.element_.addEventListener('webkitTransitionEnd', this.removeAnimationEndListener_);\n  };\n\n  /**\n   * Displays the menu.\n   *\n   * @public\n   */\n  MaterialMenu.prototype.show = function(evt) {\n    if (this.element_ && this.container_ && this.outline_) {\n      // Measure the inner element.\n      var height = this.element_.getBoundingClientRect().height;\n      var width = this.element_.getBoundingClientRect().width;\n\n      // Apply the inner element's size to the container and outline.\n      this.container_.style.width = width + 'px';\n      this.container_.style.height = height + 'px';\n      this.outline_.style.width = width + 'px';\n      this.outline_.style.height = height + 'px';\n\n      var transitionDuration = this.Constant_.TRANSITION_DURATION_SECONDS *\n          this.Constant_.TRANSITION_DURATION_FRACTION;\n\n      // Calculate transition delays for individual menu items, so that they fade\n      // in one at a time.\n      var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n      for (var i = 0; i < items.length; i++) {\n        var itemDelay = null;\n        if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT) ||\n            this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n          itemDelay = ((height - items[i].offsetTop - items[i].offsetHeight) /\n              height * transitionDuration) + 's';\n        } else {\n          itemDelay = (items[i].offsetTop / height * transitionDuration) + 's';\n        }\n        items[i].style.transitionDelay = itemDelay;\n      }\n\n      // Apply the initial clip to the text before we start animating.\n      this.applyClip_(height, width);\n\n      // Wait for the next frame, turn on animation, and apply the final clip.\n      // Also make it visible. This triggers the transitions.\n      window.requestAnimationFrame(function() {\n        this.element_.classList.add(this.CssClasses_.IS_ANIMATING);\n        this.element_.style.clip = 'rect(0 ' + width + 'px ' + height + 'px 0)';\n        this.container_.classList.add(this.CssClasses_.IS_VISIBLE);\n      }.bind(this));\n\n      // Clean up after the animation is complete.\n      this.addAnimationEndListener_();\n\n      // Add a click listener to the document, to close the menu.\n      var callback = function(e) {\n        // Check to see if the document is processing the same event that\n        // displayed the menu in the first place. If so, do nothing.\n        // Also check to see if the menu is in the process of closing itself, and\n        // do nothing in that case.\n        // Also check if the clicked element is a menu item\n        // if so, do nothing.\n        if (e !== evt && !this.closing_ && e.target.parentNode !== this.element_) {\n          document.removeEventListener('click', callback);\n          this.hide();\n        }\n      }.bind(this);\n      document.addEventListener('click', callback);\n    }\n  };\n  MaterialMenu.prototype['show'] = MaterialMenu.prototype.show;\n\n  /**\n   * Hides the menu.\n   *\n   * @public\n   */\n  MaterialMenu.prototype.hide = function() {\n    if (this.element_ && this.container_ && this.outline_) {\n      var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n\n      // Remove all transition delays; menu items fade out concurrently.\n      for (var i = 0; i < items.length; i++) {\n        items[i].style.removeProperty('transition-delay');\n      }\n\n      // Measure the inner element.\n      var rect = this.element_.getBoundingClientRect();\n      var height = rect.height;\n      var width = rect.width;\n\n      // Turn on animation, and apply the final clip. Also make invisible.\n      // This triggers the transitions.\n      this.element_.classList.add(this.CssClasses_.IS_ANIMATING);\n      this.applyClip_(height, width);\n      this.container_.classList.remove(this.CssClasses_.IS_VISIBLE);\n\n      // Clean up after the animation is complete.\n      this.addAnimationEndListener_();\n    }\n  };\n  MaterialMenu.prototype['hide'] = MaterialMenu.prototype.hide;\n\n  /**\n   * Displays or hides the menu, depending on current state.\n   *\n   * @public\n   */\n  MaterialMenu.prototype.toggle = function(evt) {\n    if (this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n      this.hide();\n    } else {\n      this.show(evt);\n    }\n  };\n  MaterialMenu.prototype['toggle'] = MaterialMenu.prototype.toggle;\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  componentHandler.register({\n    constructor: MaterialMenu,\n    classAsString: 'MaterialMenu',\n    cssClass: 'mdl-js-menu',\n    widget: true\n  });\n})();\n"
  },
  {
    "path": "src/menu/snippets/codepen-lower-buttons.css",
    "content": "#demo-menu-lower-left {\n  margin-left: 40%;\n}\n"
  },
  {
    "path": "src/menu/snippets/codepen-top-buttons.css",
    "content": "#demo-menu-top-left {\n  margin-left: 40%;\n}\n\n#demo-menu-top-left,\n#demo-menu-top-right {\n  margin-top: 250px;\n}\n"
  },
  {
    "path": "src/menu/snippets/lower-left-demo.html",
    "content": "<style>\n  .demo-menu.demo-menu__lower-left .container {\n    position: relative;\n    width: 200px;\n  }\n  .demo-menu.demo-menu__lower-left .background {\n    background: white;\n    height: 148px;\n    width: 100%;\n  }\n  .demo-menu.demo-menu__lower-left .bar {\n    box-sizing: border-box;\n    background: #3F51B5;\n    color: white;\n    width: 100%;\n    padding: 16px;\n  }\n</style>\n\n<div class=\"container mdl-shadow--2dp\">\n  <div class=\"bar\">\n    {% include \"lower-left.html\" %}\n  </div>\n  <div class=\"background\"></div>\n</div>\n"
  },
  {
    "path": "src/menu/snippets/lower-left.html",
    "content": "<!-- Left aligned menu below button -->\n<button id=\"demo-menu-lower-left\"\n        class=\"mdl-button mdl-js-button mdl-button--icon\">\n  <i class=\"material-icons\">more_vert</i>\n</button>\n\n<ul class=\"mdl-menu mdl-menu--bottom-left mdl-js-menu mdl-js-ripple-effect\"\n    for=\"demo-menu-lower-left\">\n  <li class=\"mdl-menu__item\">Some Action</li>\n  <li class=\"mdl-menu__item mdl-menu__item--full-bleed-divider\">Another Action</li>\n  <li disabled class=\"mdl-menu__item\">Disabled Action</li>\n  <li class=\"mdl-menu__item\">Yet Another Action</li>\n</ul>\n"
  },
  {
    "path": "src/menu/snippets/lower-right-demo.html",
    "content": "<style>\n  .demo-menu.demo-menu__lower-right .container {\n    position: relative;\n    width: 200px;\n  }\n  .demo-menu.demo-menu__lower-right .background {\n    background: white;\n    height: 148px;\n    width: 100%;\n  }\n  .demo-menu.demo-menu__lower-right .bar {\n    box-sizing: border-box;\n    position: relative;\n    background: #3F51B5;\n    color: white;\n    height: 64px;\n    width: 100%;\n    padding: 16px;\n  }\n  .demo-menu.demo-menu__lower-right .wrapper {\n    box-sizing: border-box;\n    position: absolute;\n    right: 16px;\n  }\n</style>\n\n<div class=\"container mdl-shadow--2dp\">\n  <div class=\"bar\">\n    <div class=\"wrapper\">\n      {% include \"lower-right.html\" %}\n    </div>\n  </div>\n  <div class=\"background\"></div>\n</div>\n"
  },
  {
    "path": "src/menu/snippets/lower-right.html",
    "content": "<!-- Right aligned menu below button -->\n<button id=\"demo-menu-lower-right\"\n        class=\"mdl-button mdl-js-button mdl-button--icon\">\n  <i class=\"material-icons\">more_vert</i>\n</button>\n\n<ul class=\"mdl-menu mdl-menu--bottom-right mdl-js-menu mdl-js-ripple-effect\"\n    for=\"demo-menu-lower-right\">\n  <li class=\"mdl-menu__item\">Some Action</li>\n  <li class=\"mdl-menu__item\">Another Action</li>\n  <li disabled class=\"mdl-menu__item\">Disabled Action</li>\n  <li class=\"mdl-menu__item\">Yet Another Action</li>\n</ul>\n"
  },
  {
    "path": "src/menu/snippets/top-left-demo.html",
    "content": "<style>\n  .demo-menu.demo-menu__top-left .container {\n    position: relative;\n    width: 200px;\n  }\n  .demo-menu.demo-menu__top-left .background {\n    background: white;\n    height: 148px;\n    width: 100%;\n  }\n  .demo-menu.demo-menu__top-left .bar {\n    box-sizing: border-box;\n    background: #3F51B5;\n    color: white;\n    width: 100%;\n    padding: 16px;\n  }\n</style>\n\n<div class=\"container mdl-shadow--2dp\">\n  <div class=\"background\"></div>\n  <div class=\"bar\">\n    {% include \"top-left.html\" %}\n  </div>\n</div>\n"
  },
  {
    "path": "src/menu/snippets/top-left.html",
    "content": "<!-- Left aligned menu on top of button  -->\n<button id=\"demo-menu-top-left\"\n        class=\"mdl-button mdl-js-button mdl-button--icon\">\n  <i class=\"material-icons\">more_vert</i>\n</button>\n\n<ul class=\"mdl-menu mdl-menu--top-left mdl-js-menu mdl-js-ripple-effect\"\n    data-mdl-for=\"demo-menu-top-left\">\n  <li class=\"mdl-menu__item\">Some Action</li>\n  <li class=\"mdl-menu__item\">Another Action</li>\n  <li disabled class=\"mdl-menu__item\">Disabled Action</li>\n  <li class=\"mdl-menu__item\">Yet Another Action</li>\n</ul>\n"
  },
  {
    "path": "src/menu/snippets/top-right-demo.html",
    "content": "<style>\n  .demo-menu.demo-menu__top-right .container {\n    position: relative;\n    width: 200px;\n  }\n  .demo-menu.demo-menu__top-right .background {\n    background: white;\n    height: 148px;\n    width: 100%;\n  }\n  .demo-menu.demo-menu__top-right .bar {\n    box-sizing: border-box;\n    position: relative;\n    background: #3F51B5;\n    color: white;\n    height: 64px;\n    width: 100%;\n    padding: 16px;\n  }\n  .demo-menu.demo-menu__top-right .wrapper {\n    box-sizing: border-box;\n    position: absolute;\n    right: 16px;\n  }\n</style>\n\n<div class=\"container mdl-shadow--2dp\">\n  <div class=\"background\"></div>\n  <div class=\"bar\">\n    <div class=\"wrapper\">\n      {% include \"top-right.html\" %}\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "src/menu/snippets/top-right.html",
    "content": "<!-- Right aligned menu on top of button  -->\n<button id=\"demo-menu-top-right\"\n        class=\"mdl-button mdl-js-button mdl-button--icon\">\n  <i class=\"material-icons\">more_vert</i>\n</button>\n\n<ul class=\"mdl-menu mdl-menu--top-right mdl-js-menu mdl-js-ripple-effect\"\n    data-mdl-for=\"demo-menu-top-right\">\n  <li class=\"mdl-menu__item\">Some Action</li>\n  <li class=\"mdl-menu__item\">Another Action</li>\n  <li disabled class=\"mdl-menu__item\">Disabled Action</li>\n  <li class=\"mdl-menu__item\">Yet Another Action</li>\n</ul>\n"
  },
  {
    "path": "src/palette/_palette.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n\n@if $trim-color-classes == false {\n  // Red\n\n  .mdl-color-text--red {\n    color: unquote(\"rgb(#{$palette-red-500})\") !important;\n  }\n\n  .mdl-color--red {\n    background-color: unquote(\"rgb(#{$palette-red-500})\") !important;\n  }\n\n  .mdl-color-text--red-50 {\n    color: unquote(\"rgb(#{$palette-red-50})\") !important;\n  }\n\n  .mdl-color--red-50 {\n    background-color: unquote(\"rgb(#{$palette-red-50})\") !important;\n  }\n\n  .mdl-color-text--red-100 {\n    color: unquote(\"rgb(#{$palette-red-100})\") !important;\n  }\n\n  .mdl-color--red-100 {\n    background-color: unquote(\"rgb(#{$palette-red-100})\") !important;\n  }\n\n  .mdl-color-text--red-200 {\n    color: unquote(\"rgb(#{$palette-red-200})\") !important;\n  }\n\n  .mdl-color--red-200 {\n    background-color: unquote(\"rgb(#{$palette-red-200})\") !important;\n  }\n\n  .mdl-color-text--red-300 {\n    color: unquote(\"rgb(#{$palette-red-300})\") !important;\n  }\n\n  .mdl-color--red-300 {\n    background-color: unquote(\"rgb(#{$palette-red-300})\") !important;\n  }\n\n  .mdl-color-text--red-400 {\n    color: unquote(\"rgb(#{$palette-red-400})\") !important;\n  }\n\n  .mdl-color--red-400 {\n    background-color: unquote(\"rgb(#{$palette-red-400})\") !important;\n  }\n\n  .mdl-color-text--red-500 {\n    color: unquote(\"rgb(#{$palette-red-500})\") !important;\n  }\n\n  .mdl-color--red-500 {\n    background-color: unquote(\"rgb(#{$palette-red-500})\") !important;\n  }\n\n  .mdl-color-text--red-600 {\n    color: unquote(\"rgb(#{$palette-red-600})\") !important;\n  }\n\n  .mdl-color--red-600 {\n    background-color: unquote(\"rgb(#{$palette-red-600})\") !important;\n  }\n\n  .mdl-color-text--red-700 {\n    color: unquote(\"rgb(#{$palette-red-700})\") !important;\n  }\n\n  .mdl-color--red-700 {\n    background-color: unquote(\"rgb(#{$palette-red-700})\") !important;\n  }\n\n  .mdl-color-text--red-800 {\n    color: unquote(\"rgb(#{$palette-red-800})\") !important;\n  }\n\n  .mdl-color--red-800 {\n    background-color: unquote(\"rgb(#{$palette-red-800})\") !important;\n  }\n\n  .mdl-color-text--red-900 {\n    color: unquote(\"rgb(#{$palette-red-900})\") !important;\n  }\n\n  .mdl-color--red-900 {\n    background-color: unquote(\"rgb(#{$palette-red-900})\") !important;\n  }\n\n  .mdl-color-text--red-A100 {\n    color: unquote(\"rgb(#{$palette-red-A100})\") !important;\n  }\n\n  .mdl-color--red-A100 {\n    background-color: unquote(\"rgb(#{$palette-red-A100})\") !important;\n  }\n\n  .mdl-color-text--red-A200 {\n    color: unquote(\"rgb(#{$palette-red-A200})\") !important;\n  }\n\n  .mdl-color--red-A200 {\n    background-color: unquote(\"rgb(#{$palette-red-A200})\") !important;\n  }\n\n  .mdl-color-text--red-A400 {\n    color: unquote(\"rgb(#{$palette-red-A400})\") !important;\n  }\n\n  .mdl-color--red-A400 {\n    background-color: unquote(\"rgb(#{$palette-red-A400})\") !important;\n  }\n\n  .mdl-color-text--red-A700 {\n    color: unquote(\"rgb(#{$palette-red-A700})\") !important;\n  }\n\n  .mdl-color--red-A700 {\n    background-color: unquote(\"rgb(#{$palette-red-A700})\") !important;\n  }\n\n  // Pink\n\n  .mdl-color-text--pink {\n    color: unquote(\"rgb(#{$palette-pink-500})\") !important;\n  }\n\n  .mdl-color--pink {\n    background-color: unquote(\"rgb(#{$palette-pink-500})\") !important;\n  }\n\n  .mdl-color-text--pink-50 {\n    color: unquote(\"rgb(#{$palette-pink-50})\") !important;\n  }\n\n  .mdl-color--pink-50 {\n    background-color: unquote(\"rgb(#{$palette-pink-50})\") !important;\n  }\n\n  .mdl-color-text--pink-100 {\n    color: unquote(\"rgb(#{$palette-pink-100})\") !important;\n  }\n\n  .mdl-color--pink-100 {\n    background-color: unquote(\"rgb(#{$palette-pink-100})\") !important;\n  }\n\n  .mdl-color-text--pink-200 {\n    color: unquote(\"rgb(#{$palette-pink-200})\") !important;\n  }\n\n  .mdl-color--pink-200 {\n    background-color: unquote(\"rgb(#{$palette-pink-200})\") !important;\n  }\n\n  .mdl-color-text--pink-300 {\n    color: unquote(\"rgb(#{$palette-pink-300})\") !important;\n  }\n\n  .mdl-color--pink-300 {\n    background-color: unquote(\"rgb(#{$palette-pink-300})\") !important;\n  }\n\n  .mdl-color-text--pink-400 {\n    color: unquote(\"rgb(#{$palette-pink-400})\") !important;\n  }\n\n  .mdl-color--pink-400 {\n    background-color: unquote(\"rgb(#{$palette-pink-400})\") !important;\n  }\n\n  .mdl-color-text--pink-500 {\n    color: unquote(\"rgb(#{$palette-pink-500})\") !important;\n  }\n\n  .mdl-color--pink-500 {\n    background-color: unquote(\"rgb(#{$palette-pink-500})\") !important;\n  }\n\n  .mdl-color-text--pink-600 {\n    color: unquote(\"rgb(#{$palette-pink-600})\") !important;\n  }\n\n  .mdl-color--pink-600 {\n    background-color: unquote(\"rgb(#{$palette-pink-600})\") !important;\n  }\n\n  .mdl-color-text--pink-700 {\n    color: unquote(\"rgb(#{$palette-pink-700})\") !important;\n  }\n\n  .mdl-color--pink-700 {\n    background-color: unquote(\"rgb(#{$palette-pink-700})\") !important;\n  }\n\n  .mdl-color-text--pink-800 {\n    color: unquote(\"rgb(#{$palette-pink-800})\") !important;\n  }\n\n  .mdl-color--pink-800 {\n    background-color: unquote(\"rgb(#{$palette-pink-800})\") !important;\n  }\n\n  .mdl-color-text--pink-900 {\n    color: unquote(\"rgb(#{$palette-pink-900})\") !important;\n  }\n\n  .mdl-color--pink-900 {\n    background-color: unquote(\"rgb(#{$palette-pink-900})\") !important;\n  }\n\n  .mdl-color-text--pink-A100 {\n    color: unquote(\"rgb(#{$palette-pink-A100})\") !important;\n  }\n\n  .mdl-color--pink-A100 {\n    background-color: unquote(\"rgb(#{$palette-pink-A100})\") !important;\n  }\n\n  .mdl-color-text--pink-A200 {\n    color: unquote(\"rgb(#{$palette-pink-A200})\") !important;\n  }\n\n  .mdl-color--pink-A200 {\n    background-color: unquote(\"rgb(#{$palette-pink-A200})\") !important;\n  }\n\n  .mdl-color-text--pink-A400 {\n    color: unquote(\"rgb(#{$palette-pink-A400})\") !important;\n  }\n\n  .mdl-color--pink-A400 {\n    background-color: unquote(\"rgb(#{$palette-pink-A400})\") !important;\n  }\n\n  .mdl-color-text--pink-A700 {\n    color: unquote(\"rgb(#{$palette-pink-A700})\") !important;\n  }\n\n  .mdl-color--pink-A700 {\n    background-color: unquote(\"rgb(#{$palette-pink-A700})\") !important;\n  }\n\n  // Purple\n\n  .mdl-color-text--purple {\n    color: unquote(\"rgb(#{$palette-purple-500})\") !important;\n  }\n\n  .mdl-color--purple {\n    background-color: unquote(\"rgb(#{$palette-purple-500})\") !important;\n  }\n\n  .mdl-color-text--purple-50 {\n    color: unquote(\"rgb(#{$palette-purple-50})\") !important;\n  }\n\n  .mdl-color--purple-50 {\n    background-color: unquote(\"rgb(#{$palette-purple-50})\") !important;\n  }\n\n  .mdl-color-text--purple-100 {\n    color: unquote(\"rgb(#{$palette-purple-100})\") !important;\n  }\n\n  .mdl-color--purple-100 {\n    background-color: unquote(\"rgb(#{$palette-purple-100})\") !important;\n  }\n\n  .mdl-color-text--purple-200 {\n    color: unquote(\"rgb(#{$palette-purple-200})\") !important;\n  }\n\n  .mdl-color--purple-200 {\n    background-color: unquote(\"rgb(#{$palette-purple-200})\") !important;\n  }\n\n  .mdl-color-text--purple-300 {\n    color: unquote(\"rgb(#{$palette-purple-300})\") !important;\n  }\n\n  .mdl-color--purple-300 {\n    background-color: unquote(\"rgb(#{$palette-purple-300})\") !important;\n  }\n\n  .mdl-color-text--purple-400 {\n    color: unquote(\"rgb(#{$palette-purple-400})\") !important;\n  }\n\n  .mdl-color--purple-400 {\n    background-color: unquote(\"rgb(#{$palette-purple-400})\") !important;\n  }\n\n  .mdl-color-text--purple-500 {\n    color: unquote(\"rgb(#{$palette-purple-500})\") !important;\n  }\n\n  .mdl-color--purple-500 {\n    background-color: unquote(\"rgb(#{$palette-purple-500})\") !important;\n  }\n\n  .mdl-color-text--purple-600 {\n    color: unquote(\"rgb(#{$palette-purple-600})\") !important;\n  }\n\n  .mdl-color--purple-600 {\n    background-color: unquote(\"rgb(#{$palette-purple-600})\") !important;\n  }\n\n  .mdl-color-text--purple-700 {\n    color: unquote(\"rgb(#{$palette-purple-700})\") !important;\n  }\n\n  .mdl-color--purple-700 {\n    background-color: unquote(\"rgb(#{$palette-purple-700})\") !important;\n  }\n\n  .mdl-color-text--purple-800 {\n    color: unquote(\"rgb(#{$palette-purple-800})\") !important;\n  }\n\n  .mdl-color--purple-800 {\n    background-color: unquote(\"rgb(#{$palette-purple-800})\") !important;\n  }\n\n  .mdl-color-text--purple-900 {\n    color: unquote(\"rgb(#{$palette-purple-900})\") !important;\n  }\n\n  .mdl-color--purple-900 {\n    background-color: unquote(\"rgb(#{$palette-purple-900})\") !important;\n  }\n\n  .mdl-color-text--purple-A100 {\n    color: unquote(\"rgb(#{$palette-purple-A100})\") !important;\n  }\n\n  .mdl-color--purple-A100 {\n    background-color: unquote(\"rgb(#{$palette-purple-A100})\") !important;\n  }\n\n  .mdl-color-text--purple-A200 {\n    color: unquote(\"rgb(#{$palette-purple-A200})\") !important;\n  }\n\n  .mdl-color--purple-A200 {\n    background-color: unquote(\"rgb(#{$palette-purple-A200})\") !important;\n  }\n\n  .mdl-color-text--purple-A400 {\n    color: unquote(\"rgb(#{$palette-purple-A400})\") !important;\n  }\n\n  .mdl-color--purple-A400 {\n    background-color: unquote(\"rgb(#{$palette-purple-A400})\") !important;\n  }\n\n  .mdl-color-text--purple-A700 {\n    color: unquote(\"rgb(#{$palette-purple-A700})\") !important;\n  }\n\n  .mdl-color--purple-A700 {\n    background-color: unquote(\"rgb(#{$palette-purple-A700})\") !important;\n  }\n\n  // Deep Purple.\n\n  .mdl-color-text--deep-purple {\n    color: unquote(\"rgb(#{$palette-deep-purple-500})\") !important;\n  }\n\n  .mdl-color--deep-purple {\n    background-color: unquote(\"rgb(#{$palette-deep-purple-500})\") !important;\n  }\n\n  .mdl-color-text--deep-purple-50 {\n    color: unquote(\"rgb(#{$palette-deep-purple-50})\") !important;\n  }\n\n  .mdl-color--deep-purple-50 {\n    background-color: unquote(\"rgb(#{$palette-deep-purple-50})\") !important;\n  }\n\n  .mdl-color-text--deep-purple-100 {\n    color: unquote(\"rgb(#{$palette-deep-purple-100})\") !important;\n  }\n\n  .mdl-color--deep-purple-100 {\n    background-color: unquote(\"rgb(#{$palette-deep-purple-100})\") !important;\n  }\n\n  .mdl-color-text--deep-purple-200 {\n    color: unquote(\"rgb(#{$palette-deep-purple-200})\") !important;\n  }\n\n  .mdl-color--deep-purple-200 {\n    background-color: unquote(\"rgb(#{$palette-deep-purple-200})\") !important;\n  }\n\n  .mdl-color-text--deep-purple-300 {\n    color: unquote(\"rgb(#{$palette-deep-purple-300})\") !important;\n  }\n\n  .mdl-color--deep-purple-300 {\n    background-color: unquote(\"rgb(#{$palette-deep-purple-300})\") !important;\n  }\n\n  .mdl-color-text--deep-purple-400 {\n    color: unquote(\"rgb(#{$palette-deep-purple-400})\") !important;\n  }\n\n  .mdl-color--deep-purple-400 {\n    background-color: unquote(\"rgb(#{$palette-deep-purple-400})\") !important;\n  }\n\n  .mdl-color-text--deep-purple-500 {\n    color: unquote(\"rgb(#{$palette-deep-purple-500})\") !important;\n  }\n\n  .mdl-color--deep-purple-500 {\n    background-color: unquote(\"rgb(#{$palette-deep-purple-500})\") !important;\n  }\n\n  .mdl-color-text--deep-purple-600 {\n    color: unquote(\"rgb(#{$palette-deep-purple-600})\") !important;\n  }\n\n  .mdl-color--deep-purple-600 {\n    background-color: unquote(\"rgb(#{$palette-deep-purple-600})\") !important;\n  }\n\n  .mdl-color-text--deep-purple-700 {\n    color: unquote(\"rgb(#{$palette-deep-purple-700})\") !important;\n  }\n\n  .mdl-color--deep-purple-700 {\n    background-color: unquote(\"rgb(#{$palette-deep-purple-700})\") !important;\n  }\n\n  .mdl-color-text--deep-purple-800 {\n    color: unquote(\"rgb(#{$palette-deep-purple-800})\") !important;\n  }\n\n  .mdl-color--deep-purple-800 {\n    background-color: unquote(\"rgb(#{$palette-deep-purple-800})\") !important;\n  }\n\n  .mdl-color-text--deep-purple-900 {\n    color: unquote(\"rgb(#{$palette-deep-purple-900})\") !important;\n  }\n\n  .mdl-color--deep-purple-900 {\n    background-color: unquote(\"rgb(#{$palette-deep-purple-900})\") !important;\n  }\n\n  .mdl-color-text--deep-purple-A100 {\n    color: unquote(\"rgb(#{$palette-deep-purple-A100})\") !important;\n  }\n\n  .mdl-color--deep-purple-A100 {\n    background-color: unquote(\"rgb(#{$palette-deep-purple-A100})\") !important;\n  }\n\n  .mdl-color-text--deep-purple-A200 {\n    color: unquote(\"rgb(#{$palette-deep-purple-A200})\") !important;\n  }\n\n  .mdl-color--deep-purple-A200 {\n    background-color: unquote(\"rgb(#{$palette-deep-purple-A200})\") !important;\n  }\n\n  .mdl-color-text--deep-purple-A400 {\n    color: unquote(\"rgb(#{$palette-deep-purple-A400})\") !important;\n  }\n\n  .mdl-color--deep-purple-A400 {\n    background-color: unquote(\"rgb(#{$palette-deep-purple-A400})\") !important;\n  }\n\n  .mdl-color-text--deep-purple-A700 {\n    color: unquote(\"rgb(#{$palette-deep-purple-A700})\") !important;\n  }\n\n  .mdl-color--deep-purple-A700 {\n    background-color: unquote(\"rgb(#{$palette-deep-purple-A700})\") !important;\n  }\n\n  // Indigo\n\n  .mdl-color-text--indigo {\n    color: unquote(\"rgb(#{$palette-indigo-500})\") !important;\n  }\n\n  .mdl-color--indigo {\n    background-color: unquote(\"rgb(#{$palette-indigo-500})\") !important;\n  }\n\n  .mdl-color-text--indigo-50 {\n    color: unquote(\"rgb(#{$palette-indigo-50})\") !important;\n  }\n\n  .mdl-color--indigo-50 {\n    background-color: unquote(\"rgb(#{$palette-indigo-50})\") !important;\n  }\n\n  .mdl-color-text--indigo-100 {\n    color: unquote(\"rgb(#{$palette-indigo-100})\") !important;\n  }\n\n  .mdl-color--indigo-100 {\n    background-color: unquote(\"rgb(#{$palette-indigo-100})\") !important;\n  }\n\n  .mdl-color-text--indigo-200 {\n    color: unquote(\"rgb(#{$palette-indigo-200})\") !important;\n  }\n\n  .mdl-color--indigo-200 {\n    background-color: unquote(\"rgb(#{$palette-indigo-200})\") !important;\n  }\n\n  .mdl-color-text--indigo-300 {\n    color: unquote(\"rgb(#{$palette-indigo-300})\") !important;\n  }\n\n  .mdl-color--indigo-300 {\n    background-color: unquote(\"rgb(#{$palette-indigo-300})\") !important;\n  }\n\n  .mdl-color-text--indigo-400 {\n    color: unquote(\"rgb(#{$palette-indigo-400})\") !important;\n  }\n\n  .mdl-color--indigo-400 {\n    background-color: unquote(\"rgb(#{$palette-indigo-400})\") !important;\n  }\n\n  .mdl-color-text--indigo-500 {\n    color: unquote(\"rgb(#{$palette-indigo-500})\") !important;\n  }\n\n  .mdl-color--indigo-500 {\n    background-color: unquote(\"rgb(#{$palette-indigo-500})\") !important;\n  }\n\n  .mdl-color-text--indigo-600 {\n    color: unquote(\"rgb(#{$palette-indigo-600})\") !important;\n  }\n\n  .mdl-color--indigo-600 {\n    background-color: unquote(\"rgb(#{$palette-indigo-600})\") !important;\n  }\n\n  .mdl-color-text--indigo-700 {\n    color: unquote(\"rgb(#{$palette-indigo-700})\") !important;\n  }\n\n  .mdl-color--indigo-700 {\n    background-color: unquote(\"rgb(#{$palette-indigo-700})\") !important;\n  }\n\n  .mdl-color-text--indigo-800 {\n    color: unquote(\"rgb(#{$palette-indigo-800})\") !important;\n  }\n\n  .mdl-color--indigo-800 {\n    background-color: unquote(\"rgb(#{$palette-indigo-800})\") !important;\n  }\n\n  .mdl-color-text--indigo-900 {\n    color: unquote(\"rgb(#{$palette-indigo-900})\") !important;\n  }\n\n  .mdl-color--indigo-900 {\n    background-color: unquote(\"rgb(#{$palette-indigo-900})\") !important;\n  }\n\n  .mdl-color-text--indigo-A100 {\n    color: unquote(\"rgb(#{$palette-indigo-A100})\") !important;\n  }\n\n  .mdl-color--indigo-A100 {\n    background-color: unquote(\"rgb(#{$palette-indigo-A100})\") !important;\n  }\n\n  .mdl-color-text--indigo-A200 {\n    color: unquote(\"rgb(#{$palette-indigo-A200})\") !important;\n  }\n\n  .mdl-color--indigo-A200 {\n    background-color: unquote(\"rgb(#{$palette-indigo-A200})\") !important;\n  }\n\n  .mdl-color-text--indigo-A400 {\n    color: unquote(\"rgb(#{$palette-indigo-A400})\") !important;\n  }\n\n  .mdl-color--indigo-A400 {\n    background-color: unquote(\"rgb(#{$palette-indigo-A400})\") !important;\n  }\n\n  .mdl-color-text--indigo-A700 {\n    color: unquote(\"rgb(#{$palette-indigo-A700})\") !important;\n  }\n\n  .mdl-color--indigo-A700 {\n    background-color: unquote(\"rgb(#{$palette-indigo-A700})\") !important;\n  }\n\n  // Blue\n\n  .mdl-color-text--blue {\n    color: unquote(\"rgb(#{$palette-blue-500})\") !important;\n  }\n\n  .mdl-color--blue {\n    background-color: unquote(\"rgb(#{$palette-blue-500})\") !important;\n  }\n\n  .mdl-color-text--blue-50 {\n    color: unquote(\"rgb(#{$palette-blue-50})\") !important;\n  }\n\n  .mdl-color--blue-50 {\n    background-color: unquote(\"rgb(#{$palette-blue-50})\") !important;\n  }\n\n  .mdl-color-text--blue-100 {\n    color: unquote(\"rgb(#{$palette-blue-100})\") !important;\n  }\n\n  .mdl-color--blue-100 {\n    background-color: unquote(\"rgb(#{$palette-blue-100})\") !important;\n  }\n\n  .mdl-color-text--blue-200 {\n    color: unquote(\"rgb(#{$palette-blue-200})\") !important;\n  }\n\n  .mdl-color--blue-200 {\n    background-color: unquote(\"rgb(#{$palette-blue-200})\") !important;\n  }\n\n  .mdl-color-text--blue-300 {\n    color: unquote(\"rgb(#{$palette-blue-300})\") !important;\n  }\n\n  .mdl-color--blue-300 {\n    background-color: unquote(\"rgb(#{$palette-blue-300})\") !important;\n  }\n\n  .mdl-color-text--blue-400 {\n    color: unquote(\"rgb(#{$palette-blue-400})\") !important;\n  }\n\n  .mdl-color--blue-400 {\n    background-color: unquote(\"rgb(#{$palette-blue-400})\") !important;\n  }\n\n  .mdl-color-text--blue-500 {\n    color: unquote(\"rgb(#{$palette-blue-500})\") !important;\n  }\n\n  .mdl-color--blue-500 {\n    background-color: unquote(\"rgb(#{$palette-blue-500})\") !important;\n  }\n\n  .mdl-color-text--blue-600 {\n    color: unquote(\"rgb(#{$palette-blue-600})\") !important;\n  }\n\n  .mdl-color--blue-600 {\n    background-color: unquote(\"rgb(#{$palette-blue-600})\") !important;\n  }\n\n  .mdl-color-text--blue-700 {\n    color: unquote(\"rgb(#{$palette-blue-700})\") !important;\n  }\n\n  .mdl-color--blue-700 {\n    background-color: unquote(\"rgb(#{$palette-blue-700})\") !important;\n  }\n\n  .mdl-color-text--blue-800 {\n    color: unquote(\"rgb(#{$palette-blue-800})\") !important;\n  }\n\n  .mdl-color--blue-800 {\n    background-color: unquote(\"rgb(#{$palette-blue-800})\") !important;\n  }\n\n  .mdl-color-text--blue-900 {\n    color: unquote(\"rgb(#{$palette-blue-900})\") !important;\n  }\n\n  .mdl-color--blue-900 {\n    background-color: unquote(\"rgb(#{$palette-blue-900})\") !important;\n  }\n\n  .mdl-color-text--blue-A100 {\n    color: unquote(\"rgb(#{$palette-blue-A100})\") !important;\n  }\n\n  .mdl-color--blue-A100 {\n    background-color: unquote(\"rgb(#{$palette-blue-A100})\") !important;\n  }\n\n  .mdl-color-text--blue-A200 {\n    color: unquote(\"rgb(#{$palette-blue-A200})\") !important;\n  }\n\n  .mdl-color--blue-A200 {\n    background-color: unquote(\"rgb(#{$palette-blue-A200})\") !important;\n  }\n\n  .mdl-color-text--blue-A400 {\n    color: unquote(\"rgb(#{$palette-blue-A400})\") !important;\n  }\n\n  .mdl-color--blue-A400 {\n    background-color: unquote(\"rgb(#{$palette-blue-A400})\") !important;\n  }\n\n  .mdl-color-text--blue-A700 {\n    color: unquote(\"rgb(#{$palette-blue-A700})\") !important;\n  }\n\n  .mdl-color--blue-A700 {\n    background-color: unquote(\"rgb(#{$palette-blue-A700})\") !important;\n  }\n\n  // Light Blue\n\n  .mdl-color-text--light-blue {\n    color: unquote(\"rgb(#{$palette-light-blue-500})\") !important;\n  }\n\n  .mdl-color--light-blue {\n    background-color: unquote(\"rgb(#{$palette-light-blue-500})\") !important;\n  }\n\n  .mdl-color-text--light-blue-50 {\n    color: unquote(\"rgb(#{$palette-light-blue-50})\") !important;\n  }\n\n  .mdl-color--light-blue-50 {\n    background-color: unquote(\"rgb(#{$palette-light-blue-50})\") !important;\n  }\n\n  .mdl-color-text--light-blue-100 {\n    color: unquote(\"rgb(#{$palette-light-blue-100})\") !important;\n  }\n\n  .mdl-color--light-blue-100 {\n    background-color: unquote(\"rgb(#{$palette-light-blue-100})\") !important;\n  }\n\n  .mdl-color-text--light-blue-200 {\n    color: unquote(\"rgb(#{$palette-light-blue-200})\") !important;\n  }\n\n  .mdl-color--light-blue-200 {\n    background-color: unquote(\"rgb(#{$palette-light-blue-200})\") !important;\n  }\n\n  .mdl-color-text--light-blue-300 {\n    color: unquote(\"rgb(#{$palette-light-blue-300})\") !important;\n  }\n\n  .mdl-color--light-blue-300 {\n    background-color: unquote(\"rgb(#{$palette-light-blue-300})\") !important;\n  }\n\n  .mdl-color-text--light-blue-400 {\n    color: unquote(\"rgb(#{$palette-light-blue-400})\") !important;\n  }\n\n  .mdl-color--light-blue-400 {\n    background-color: unquote(\"rgb(#{$palette-light-blue-400})\") !important;\n  }\n\n  .mdl-color-text--light-blue-500 {\n    color: unquote(\"rgb(#{$palette-light-blue-500})\") !important;\n  }\n\n  .mdl-color--light-blue-500 {\n    background-color: unquote(\"rgb(#{$palette-light-blue-500})\") !important;\n  }\n\n  .mdl-color-text--light-blue-600 {\n    color: unquote(\"rgb(#{$palette-light-blue-600})\") !important;\n  }\n\n  .mdl-color--light-blue-600 {\n    background-color: unquote(\"rgb(#{$palette-light-blue-600})\") !important;\n  }\n\n  .mdl-color-text--light-blue-700 {\n    color: unquote(\"rgb(#{$palette-light-blue-700})\") !important;\n  }\n\n  .mdl-color--light-blue-700 {\n    background-color: unquote(\"rgb(#{$palette-light-blue-700})\") !important;\n  }\n\n  .mdl-color-text--light-blue-800 {\n    color: unquote(\"rgb(#{$palette-light-blue-800})\") !important;\n  }\n\n  .mdl-color--light-blue-800 {\n    background-color: unquote(\"rgb(#{$palette-light-blue-800})\") !important;\n  }\n\n  .mdl-color-text--light-blue-900 {\n    color: unquote(\"rgb(#{$palette-light-blue-900})\") !important;\n  }\n\n  .mdl-color--light-blue-900 {\n    background-color: unquote(\"rgb(#{$palette-light-blue-900})\") !important;\n  }\n\n  .mdl-color-text--light-blue-A100 {\n    color: unquote(\"rgb(#{$palette-light-blue-A100})\") !important;\n  }\n\n  .mdl-color--light-blue-A100 {\n    background-color: unquote(\"rgb(#{$palette-light-blue-A100})\") !important;\n  }\n\n  .mdl-color-text--light-blue-A200 {\n    color: unquote(\"rgb(#{$palette-light-blue-A200})\") !important;\n  }\n\n  .mdl-color--light-blue-A200 {\n    background-color: unquote(\"rgb(#{$palette-light-blue-A200})\") !important;\n  }\n\n  .mdl-color-text--light-blue-A400 {\n    color: unquote(\"rgb(#{$palette-light-blue-A400})\") !important;\n  }\n\n  .mdl-color--light-blue-A400 {\n    background-color: unquote(\"rgb(#{$palette-light-blue-A400})\") !important;\n  }\n\n  .mdl-color-text--light-blue-A700 {\n    color: unquote(\"rgb(#{$palette-light-blue-A700})\") !important;\n  }\n\n  .mdl-color--light-blue-A700 {\n    background-color: unquote(\"rgb(#{$palette-light-blue-A700})\") !important;\n  }\n\n  // Cyan\n\n  .mdl-color-text--cyan {\n    color: unquote(\"rgb(#{$palette-cyan-500})\") !important;\n  }\n\n  .mdl-color--cyan {\n    background-color: unquote(\"rgb(#{$palette-cyan-500})\") !important;\n  }\n\n  .mdl-color-text--cyan-50 {\n    color: unquote(\"rgb(#{$palette-cyan-50})\") !important;\n  }\n\n  .mdl-color--cyan-50 {\n    background-color: unquote(\"rgb(#{$palette-cyan-50})\") !important;\n  }\n\n  .mdl-color-text--cyan-100 {\n    color: unquote(\"rgb(#{$palette-cyan-100})\") !important;\n  }\n\n  .mdl-color--cyan-100 {\n    background-color: unquote(\"rgb(#{$palette-cyan-100})\") !important;\n  }\n\n  .mdl-color-text--cyan-200 {\n    color: unquote(\"rgb(#{$palette-cyan-200})\") !important;\n  }\n\n  .mdl-color--cyan-200 {\n    background-color: unquote(\"rgb(#{$palette-cyan-200})\") !important;\n  }\n\n  .mdl-color-text--cyan-300 {\n    color: unquote(\"rgb(#{$palette-cyan-300})\") !important;\n  }\n\n  .mdl-color--cyan-300 {\n    background-color: unquote(\"rgb(#{$palette-cyan-300})\") !important;\n  }\n\n  .mdl-color-text--cyan-400 {\n    color: unquote(\"rgb(#{$palette-cyan-400})\") !important;\n  }\n\n  .mdl-color--cyan-400 {\n    background-color: unquote(\"rgb(#{$palette-cyan-400})\") !important;\n  }\n\n  .mdl-color-text--cyan-500 {\n    color: unquote(\"rgb(#{$palette-cyan-500})\") !important;\n  }\n\n  .mdl-color--cyan-500 {\n    background-color: unquote(\"rgb(#{$palette-cyan-500})\") !important;\n  }\n\n  .mdl-color-text--cyan-600 {\n    color: unquote(\"rgb(#{$palette-cyan-600})\") !important;\n  }\n\n  .mdl-color--cyan-600 {\n    background-color: unquote(\"rgb(#{$palette-cyan-600})\") !important;\n  }\n\n  .mdl-color-text--cyan-700 {\n    color: unquote(\"rgb(#{$palette-cyan-700})\") !important;\n  }\n\n  .mdl-color--cyan-700 {\n    background-color: unquote(\"rgb(#{$palette-cyan-700})\") !important;\n  }\n\n  .mdl-color-text--cyan-800 {\n    color: unquote(\"rgb(#{$palette-cyan-800})\") !important;\n  }\n\n  .mdl-color--cyan-800 {\n    background-color: unquote(\"rgb(#{$palette-cyan-800})\") !important;\n  }\n\n  .mdl-color-text--cyan-900 {\n    color: unquote(\"rgb(#{$palette-cyan-900})\") !important;\n  }\n\n  .mdl-color--cyan-900 {\n    background-color: unquote(\"rgb(#{$palette-cyan-900})\") !important;\n  }\n\n  .mdl-color-text--cyan-A100 {\n    color: unquote(\"rgb(#{$palette-cyan-A100})\") !important;\n  }\n\n  .mdl-color--cyan-A100 {\n    background-color: unquote(\"rgb(#{$palette-cyan-A100})\") !important;\n  }\n\n  .mdl-color-text--cyan-A200 {\n    color: unquote(\"rgb(#{$palette-cyan-A200})\") !important;\n  }\n\n  .mdl-color--cyan-A200 {\n    background-color: unquote(\"rgb(#{$palette-cyan-A200})\") !important;\n  }\n\n  .mdl-color-text--cyan-A400 {\n    color: unquote(\"rgb(#{$palette-cyan-A400})\") !important;\n  }\n\n  .mdl-color--cyan-A400 {\n    background-color: unquote(\"rgb(#{$palette-cyan-A400})\") !important;\n  }\n\n  .mdl-color-text--cyan-A700 {\n    color: unquote(\"rgb(#{$palette-cyan-A700})\") !important;\n  }\n\n  .mdl-color--cyan-A700 {\n    background-color: unquote(\"rgb(#{$palette-cyan-A700})\") !important;\n  }\n\n  // Teal\n\n  .mdl-color-text--teal {\n    color: unquote(\"rgb(#{$palette-teal-500})\") !important;\n  }\n\n  .mdl-color--teal {\n    background-color: unquote(\"rgb(#{$palette-teal-500})\") !important;\n  }\n\n  .mdl-color-text--teal-50 {\n    color: unquote(\"rgb(#{$palette-teal-50})\") !important;\n  }\n\n  .mdl-color--teal-50 {\n    background-color: unquote(\"rgb(#{$palette-teal-50})\") !important;\n  }\n\n  .mdl-color-text--teal-100 {\n    color: unquote(\"rgb(#{$palette-teal-100})\") !important;\n  }\n\n  .mdl-color--teal-100 {\n    background-color: unquote(\"rgb(#{$palette-teal-100})\") !important;\n  }\n\n  .mdl-color-text--teal-200 {\n    color: unquote(\"rgb(#{$palette-teal-200})\") !important;\n  }\n\n  .mdl-color--teal-200 {\n    background-color: unquote(\"rgb(#{$palette-teal-200})\") !important;\n  }\n\n  .mdl-color-text--teal-300 {\n    color: unquote(\"rgb(#{$palette-teal-300})\") !important;\n  }\n\n  .mdl-color--teal-300 {\n    background-color: unquote(\"rgb(#{$palette-teal-300})\") !important;\n  }\n\n  .mdl-color-text--teal-400 {\n    color: unquote(\"rgb(#{$palette-teal-400})\") !important;\n  }\n\n  .mdl-color--teal-400 {\n    background-color: unquote(\"rgb(#{$palette-teal-400})\") !important;\n  }\n\n  .mdl-color-text--teal-500 {\n    color: unquote(\"rgb(#{$palette-teal-500})\") !important;\n  }\n\n  .mdl-color--teal-500 {\n    background-color: unquote(\"rgb(#{$palette-teal-500})\") !important;\n  }\n\n  .mdl-color-text--teal-600 {\n    color: unquote(\"rgb(#{$palette-teal-600})\") !important;\n  }\n\n  .mdl-color--teal-600 {\n    background-color: unquote(\"rgb(#{$palette-teal-600})\") !important;\n  }\n\n  .mdl-color-text--teal-700 {\n    color: unquote(\"rgb(#{$palette-teal-700})\") !important;\n  }\n\n  .mdl-color--teal-700 {\n    background-color: unquote(\"rgb(#{$palette-teal-700})\") !important;\n  }\n\n  .mdl-color-text--teal-800 {\n    color: unquote(\"rgb(#{$palette-teal-800})\") !important;\n  }\n\n  .mdl-color--teal-800 {\n    background-color: unquote(\"rgb(#{$palette-teal-800})\") !important;\n  }\n\n  .mdl-color-text--teal-900 {\n    color: unquote(\"rgb(#{$palette-teal-900})\") !important;\n  }\n\n  .mdl-color--teal-900 {\n    background-color: unquote(\"rgb(#{$palette-teal-900})\") !important;\n  }\n\n  .mdl-color-text--teal-A100 {\n    color: unquote(\"rgb(#{$palette-teal-A100})\") !important;\n  }\n\n  .mdl-color--teal-A100 {\n    background-color: unquote(\"rgb(#{$palette-teal-A100})\") !important;\n  }\n\n  .mdl-color-text--teal-A200 {\n    color: unquote(\"rgb(#{$palette-teal-A200})\") !important;\n  }\n\n  .mdl-color--teal-A200 {\n    background-color: unquote(\"rgb(#{$palette-teal-A200})\") !important;\n  }\n\n  .mdl-color-text--teal-A400 {\n    color: unquote(\"rgb(#{$palette-teal-A400})\") !important;\n  }\n\n  .mdl-color--teal-A400 {\n    background-color: unquote(\"rgb(#{$palette-teal-A400})\") !important;\n  }\n\n  .mdl-color-text--teal-A700 {\n    color: unquote(\"rgb(#{$palette-teal-A700})\") !important;\n  }\n\n  .mdl-color--teal-A700 {\n    background-color: unquote(\"rgb(#{$palette-teal-A700})\") !important;\n  }\n\n  // Green\n\n  .mdl-color-text--green {\n    color: unquote(\"rgb(#{$palette-green-500})\") !important;\n  }\n\n  .mdl-color--green {\n    background-color: unquote(\"rgb(#{$palette-green-500})\") !important;\n  }\n\n  .mdl-color-text--green-50 {\n    color: unquote(\"rgb(#{$palette-green-50})\") !important;\n  }\n\n  .mdl-color--green-50 {\n    background-color: unquote(\"rgb(#{$palette-green-50})\") !important;\n  }\n\n  .mdl-color-text--green-100 {\n    color: unquote(\"rgb(#{$palette-green-100})\") !important;\n  }\n\n  .mdl-color--green-100 {\n    background-color: unquote(\"rgb(#{$palette-green-100})\") !important;\n  }\n\n  .mdl-color-text--green-200 {\n    color: unquote(\"rgb(#{$palette-green-200})\") !important;\n  }\n\n  .mdl-color--green-200 {\n    background-color: unquote(\"rgb(#{$palette-green-200})\") !important;\n  }\n\n  .mdl-color-text--green-300 {\n    color: unquote(\"rgb(#{$palette-green-300})\") !important;\n  }\n\n  .mdl-color--green-300 {\n    background-color: unquote(\"rgb(#{$palette-green-300})\") !important;\n  }\n\n  .mdl-color-text--green-400 {\n    color: unquote(\"rgb(#{$palette-green-400})\") !important;\n  }\n\n  .mdl-color--green-400 {\n    background-color: unquote(\"rgb(#{$palette-green-400})\") !important;\n  }\n\n  .mdl-color-text--green-500 {\n    color: unquote(\"rgb(#{$palette-green-500})\") !important;\n  }\n\n  .mdl-color--green-500 {\n    background-color: unquote(\"rgb(#{$palette-green-500})\") !important;\n  }\n\n  .mdl-color-text--green-600 {\n    color: unquote(\"rgb(#{$palette-green-600})\") !important;\n  }\n\n  .mdl-color--green-600 {\n    background-color: unquote(\"rgb(#{$palette-green-600})\") !important;\n  }\n\n  .mdl-color-text--green-700 {\n    color: unquote(\"rgb(#{$palette-green-700})\") !important;\n  }\n\n  .mdl-color--green-700 {\n    background-color: unquote(\"rgb(#{$palette-green-700})\") !important;\n  }\n\n  .mdl-color-text--green-800 {\n    color: unquote(\"rgb(#{$palette-green-800})\") !important;\n  }\n\n  .mdl-color--green-800 {\n    background-color: unquote(\"rgb(#{$palette-green-800})\") !important;\n  }\n\n  .mdl-color-text--green-900 {\n    color: unquote(\"rgb(#{$palette-green-900})\") !important;\n  }\n\n  .mdl-color--green-900 {\n    background-color: unquote(\"rgb(#{$palette-green-900})\") !important;\n  }\n\n  .mdl-color-text--green-A100 {\n    color: unquote(\"rgb(#{$palette-green-A100})\") !important;\n  }\n\n  .mdl-color--green-A100 {\n    background-color: unquote(\"rgb(#{$palette-green-A100})\") !important;\n  }\n\n  .mdl-color-text--green-A200 {\n    color: unquote(\"rgb(#{$palette-green-A200})\") !important;\n  }\n\n  .mdl-color--green-A200 {\n    background-color: unquote(\"rgb(#{$palette-green-A200})\") !important;\n  }\n\n  .mdl-color-text--green-A400 {\n    color: unquote(\"rgb(#{$palette-green-A400})\") !important;\n  }\n\n  .mdl-color--green-A400 {\n    background-color: unquote(\"rgb(#{$palette-green-A400})\") !important;\n  }\n\n  .mdl-color-text--green-A700 {\n    color: unquote(\"rgb(#{$palette-green-A700})\") !important;\n  }\n\n  .mdl-color--green-A700 {\n    background-color: unquote(\"rgb(#{$palette-green-A700})\") !important;\n  }\n\n  // Light Green\n\n  .mdl-color-text--light-green {\n    color: unquote(\"rgb(#{$palette-light-green-500})\") !important;\n  }\n\n  .mdl-color--light-green {\n    background-color: unquote(\"rgb(#{$palette-light-green-500})\") !important;\n  }\n\n  .mdl-color-text--light-green-50 {\n    color: unquote(\"rgb(#{$palette-light-green-50})\") !important;\n  }\n\n  .mdl-color--light-green-50 {\n    background-color: unquote(\"rgb(#{$palette-light-green-50})\") !important;\n  }\n\n  .mdl-color-text--light-green-100 {\n    color: unquote(\"rgb(#{$palette-light-green-100})\") !important;\n  }\n\n  .mdl-color--light-green-100 {\n    background-color: unquote(\"rgb(#{$palette-light-green-100})\") !important;\n  }\n\n  .mdl-color-text--light-green-200 {\n    color: unquote(\"rgb(#{$palette-light-green-200})\") !important;\n  }\n\n  .mdl-color--light-green-200 {\n    background-color: unquote(\"rgb(#{$palette-light-green-200})\") !important;\n  }\n\n  .mdl-color-text--light-green-300 {\n    color: unquote(\"rgb(#{$palette-light-green-300})\") !important;\n  }\n\n  .mdl-color--light-green-300 {\n    background-color: unquote(\"rgb(#{$palette-light-green-300})\") !important;\n  }\n\n  .mdl-color-text--light-green-400 {\n    color: unquote(\"rgb(#{$palette-light-green-400})\") !important;\n  }\n\n  .mdl-color--light-green-400 {\n    background-color: unquote(\"rgb(#{$palette-light-green-400})\") !important;\n  }\n\n  .mdl-color-text--light-green-500 {\n    color: unquote(\"rgb(#{$palette-light-green-500})\") !important;\n  }\n\n  .mdl-color--light-green-500 {\n    background-color: unquote(\"rgb(#{$palette-light-green-500})\") !important;\n  }\n\n  .mdl-color-text--light-green-600 {\n    color: unquote(\"rgb(#{$palette-light-green-600})\") !important;\n  }\n\n  .mdl-color--light-green-600 {\n    background-color: unquote(\"rgb(#{$palette-light-green-600})\") !important;\n  }\n\n  .mdl-color-text--light-green-700 {\n    color: unquote(\"rgb(#{$palette-light-green-700})\") !important;\n  }\n\n  .mdl-color--light-green-700 {\n    background-color: unquote(\"rgb(#{$palette-light-green-700})\") !important;\n  }\n\n  .mdl-color-text--light-green-800 {\n    color: unquote(\"rgb(#{$palette-light-green-800})\") !important;\n  }\n\n  .mdl-color--light-green-800 {\n    background-color: unquote(\"rgb(#{$palette-light-green-800})\") !important;\n  }\n\n  .mdl-color-text--light-green-900 {\n    color: unquote(\"rgb(#{$palette-light-green-900})\") !important;\n  }\n\n  .mdl-color--light-green-900 {\n    background-color: unquote(\"rgb(#{$palette-light-green-900})\") !important;\n  }\n\n  .mdl-color-text--light-green-A100 {\n    color: unquote(\"rgb(#{$palette-light-green-A100})\") !important;\n  }\n\n  .mdl-color--light-green-A100 {\n    background-color: unquote(\"rgb(#{$palette-light-green-A100})\") !important;\n  }\n\n  .mdl-color-text--light-green-A200 {\n    color: unquote(\"rgb(#{$palette-light-green-A200})\") !important;\n  }\n\n  .mdl-color--light-green-A200 {\n    background-color: unquote(\"rgb(#{$palette-light-green-A200})\") !important;\n  }\n\n  .mdl-color-text--light-green-A400 {\n    color: unquote(\"rgb(#{$palette-light-green-A400})\") !important;\n  }\n\n  .mdl-color--light-green-A400 {\n    background-color: unquote(\"rgb(#{$palette-light-green-A400})\") !important;\n  }\n\n  .mdl-color-text--light-green-A700 {\n    color: unquote(\"rgb(#{$palette-light-green-A700})\") !important;\n  }\n\n  .mdl-color--light-green-A700 {\n    background-color: unquote(\"rgb(#{$palette-light-green-A700})\") !important;\n  }\n\n  // Lime\n\n  .mdl-color-text--lime {\n    color: unquote(\"rgb(#{$palette-lime-500})\") !important;\n  }\n\n  .mdl-color--lime {\n    background-color: unquote(\"rgb(#{$palette-lime-500})\") !important;\n  }\n\n  .mdl-color-text--lime-50 {\n    color: unquote(\"rgb(#{$palette-lime-50})\") !important;\n  }\n\n  .mdl-color--lime-50 {\n    background-color: unquote(\"rgb(#{$palette-lime-50})\") !important;\n  }\n\n  .mdl-color-text--lime-100 {\n    color: unquote(\"rgb(#{$palette-lime-100})\") !important;\n  }\n\n  .mdl-color--lime-100 {\n    background-color: unquote(\"rgb(#{$palette-lime-100})\") !important;\n  }\n\n  .mdl-color-text--lime-200 {\n    color: unquote(\"rgb(#{$palette-lime-200})\") !important;\n  }\n\n  .mdl-color--lime-200 {\n    background-color: unquote(\"rgb(#{$palette-lime-200})\") !important;\n  }\n\n  .mdl-color-text--lime-300 {\n    color: unquote(\"rgb(#{$palette-lime-300})\") !important;\n  }\n\n  .mdl-color--lime-300 {\n    background-color: unquote(\"rgb(#{$palette-lime-300})\") !important;\n  }\n\n  .mdl-color-text--lime-400 {\n    color: unquote(\"rgb(#{$palette-lime-400})\") !important;\n  }\n\n  .mdl-color--lime-400 {\n    background-color: unquote(\"rgb(#{$palette-lime-400})\") !important;\n  }\n\n  .mdl-color-text--lime-500 {\n    color: unquote(\"rgb(#{$palette-lime-500})\") !important;\n  }\n\n  .mdl-color--lime-500 {\n    background-color: unquote(\"rgb(#{$palette-lime-500})\") !important;\n  }\n\n  .mdl-color-text--lime-600 {\n    color: unquote(\"rgb(#{$palette-lime-600})\") !important;\n  }\n\n  .mdl-color--lime-600 {\n    background-color: unquote(\"rgb(#{$palette-lime-600})\") !important;\n  }\n\n  .mdl-color-text--lime-700 {\n    color: unquote(\"rgb(#{$palette-lime-700})\") !important;\n  }\n\n  .mdl-color--lime-700 {\n    background-color: unquote(\"rgb(#{$palette-lime-700})\") !important;\n  }\n\n  .mdl-color-text--lime-800 {\n    color: unquote(\"rgb(#{$palette-lime-800})\") !important;\n  }\n\n  .mdl-color--lime-800 {\n    background-color: unquote(\"rgb(#{$palette-lime-800})\") !important;\n  }\n\n  .mdl-color-text--lime-900 {\n    color: unquote(\"rgb(#{$palette-lime-900})\") !important;\n  }\n\n  .mdl-color--lime-900 {\n    background-color: unquote(\"rgb(#{$palette-lime-900})\") !important;\n  }\n\n  .mdl-color-text--lime-A100 {\n    color: unquote(\"rgb(#{$palette-lime-A100})\") !important;\n  }\n\n  .mdl-color--lime-A100 {\n    background-color: unquote(\"rgb(#{$palette-lime-A100})\") !important;\n  }\n\n  .mdl-color-text--lime-A200 {\n    color: unquote(\"rgb(#{$palette-lime-A200})\") !important;\n  }\n\n  .mdl-color--lime-A200 {\n    background-color: unquote(\"rgb(#{$palette-lime-A200})\") !important;\n  }\n\n  .mdl-color-text--lime-A400 {\n    color: unquote(\"rgb(#{$palette-lime-A400})\") !important;\n  }\n\n  .mdl-color--lime-A400 {\n    background-color: unquote(\"rgb(#{$palette-lime-A400})\") !important;\n  }\n\n  .mdl-color-text--lime-A700 {\n    color: unquote(\"rgb(#{$palette-lime-A700})\") !important;\n  }\n\n  .mdl-color--lime-A700 {\n    background-color: unquote(\"rgb(#{$palette-lime-A700})\") !important;\n  }\n\n  // Yellow\n\n  .mdl-color-text--yellow {\n    color: unquote(\"rgb(#{$palette-yellow-500})\") !important;\n  }\n\n  .mdl-color--yellow {\n    background-color: unquote(\"rgb(#{$palette-yellow-500})\") !important;\n  }\n\n  .mdl-color-text--yellow-50 {\n    color: unquote(\"rgb(#{$palette-yellow-50})\") !important;\n  }\n\n  .mdl-color--yellow-50 {\n    background-color: unquote(\"rgb(#{$palette-yellow-50})\") !important;\n  }\n\n  .mdl-color-text--yellow-100 {\n    color: unquote(\"rgb(#{$palette-yellow-100})\") !important;\n  }\n\n  .mdl-color--yellow-100 {\n    background-color: unquote(\"rgb(#{$palette-yellow-100})\") !important;\n  }\n\n  .mdl-color-text--yellow-200 {\n    color: unquote(\"rgb(#{$palette-yellow-200})\") !important;\n  }\n\n  .mdl-color--yellow-200 {\n    background-color: unquote(\"rgb(#{$palette-yellow-200})\") !important;\n  }\n\n  .mdl-color-text--yellow-300 {\n    color: unquote(\"rgb(#{$palette-yellow-300})\") !important;\n  }\n\n  .mdl-color--yellow-300 {\n    background-color: unquote(\"rgb(#{$palette-yellow-300})\") !important;\n  }\n\n  .mdl-color-text--yellow-400 {\n    color: unquote(\"rgb(#{$palette-yellow-400})\") !important;\n  }\n\n  .mdl-color--yellow-400 {\n    background-color: unquote(\"rgb(#{$palette-yellow-400})\") !important;\n  }\n\n  .mdl-color-text--yellow-500 {\n    color: unquote(\"rgb(#{$palette-yellow-500})\") !important;\n  }\n\n  .mdl-color--yellow-500 {\n    background-color: unquote(\"rgb(#{$palette-yellow-500})\") !important;\n  }\n\n  .mdl-color-text--yellow-600 {\n    color: unquote(\"rgb(#{$palette-yellow-600})\") !important;\n  }\n\n  .mdl-color--yellow-600 {\n    background-color: unquote(\"rgb(#{$palette-yellow-600})\") !important;\n  }\n\n  .mdl-color-text--yellow-700 {\n    color: unquote(\"rgb(#{$palette-yellow-700})\") !important;\n  }\n\n  .mdl-color--yellow-700 {\n    background-color: unquote(\"rgb(#{$palette-yellow-700})\") !important;\n  }\n\n  .mdl-color-text--yellow-800 {\n    color: unquote(\"rgb(#{$palette-yellow-800})\") !important;\n  }\n\n  .mdl-color--yellow-800 {\n    background-color: unquote(\"rgb(#{$palette-yellow-800})\") !important;\n  }\n\n  .mdl-color-text--yellow-900 {\n    color: unquote(\"rgb(#{$palette-yellow-900})\") !important;\n  }\n\n  .mdl-color--yellow-900 {\n    background-color: unquote(\"rgb(#{$palette-yellow-900})\") !important;\n  }\n\n  .mdl-color-text--yellow-A100 {\n    color: unquote(\"rgb(#{$palette-yellow-A100})\") !important;\n  }\n\n  .mdl-color--yellow-A100 {\n    background-color: unquote(\"rgb(#{$palette-yellow-A100})\") !important;\n  }\n\n  .mdl-color-text--yellow-A200 {\n    color: unquote(\"rgb(#{$palette-yellow-A200})\") !important;\n  }\n\n  .mdl-color--yellow-A200 {\n    background-color: unquote(\"rgb(#{$palette-yellow-A200})\") !important;\n  }\n\n  .mdl-color-text--yellow-A400 {\n    color: unquote(\"rgb(#{$palette-yellow-A400})\") !important;\n  }\n\n  .mdl-color--yellow-A400 {\n    background-color: unquote(\"rgb(#{$palette-yellow-A400})\") !important;\n  }\n\n  .mdl-color-text--yellow-A700 {\n    color: unquote(\"rgb(#{$palette-yellow-A700})\") !important;\n  }\n\n  .mdl-color--yellow-A700 {\n    background-color: unquote(\"rgb(#{$palette-yellow-A700})\") !important;\n  }\n\n  // Amber\n\n  .mdl-color-text--amber {\n    color: unquote(\"rgb(#{$palette-amber-500})\") !important;\n  }\n\n  .mdl-color--amber {\n    background-color: unquote(\"rgb(#{$palette-amber-500})\") !important;\n  }\n\n  .mdl-color-text--amber-50 {\n    color: unquote(\"rgb(#{$palette-amber-50})\") !important;\n  }\n\n  .mdl-color--amber-50 {\n    background-color: unquote(\"rgb(#{$palette-amber-50})\") !important;\n  }\n\n  .mdl-color-text--amber-100 {\n    color: unquote(\"rgb(#{$palette-amber-100})\") !important;\n  }\n\n  .mdl-color--amber-100 {\n    background-color: unquote(\"rgb(#{$palette-amber-100})\") !important;\n  }\n\n  .mdl-color-text--amber-200 {\n    color: unquote(\"rgb(#{$palette-amber-200})\") !important;\n  }\n\n  .mdl-color--amber-200 {\n    background-color: unquote(\"rgb(#{$palette-amber-200})\") !important;\n  }\n\n  .mdl-color-text--amber-300 {\n    color: unquote(\"rgb(#{$palette-amber-300})\") !important;\n  }\n\n  .mdl-color--amber-300 {\n    background-color: unquote(\"rgb(#{$palette-amber-300})\") !important;\n  }\n\n  .mdl-color-text--amber-400 {\n    color: unquote(\"rgb(#{$palette-amber-400})\") !important;\n  }\n\n  .mdl-color--amber-400 {\n    background-color: unquote(\"rgb(#{$palette-amber-400})\") !important;\n  }\n\n  .mdl-color-text--amber-500 {\n    color: unquote(\"rgb(#{$palette-amber-500})\") !important;\n  }\n\n  .mdl-color--amber-500 {\n    background-color: unquote(\"rgb(#{$palette-amber-500})\") !important;\n  }\n\n  .mdl-color-text--amber-600 {\n    color: unquote(\"rgb(#{$palette-amber-600})\") !important;\n  }\n\n  .mdl-color--amber-600 {\n    background-color: unquote(\"rgb(#{$palette-amber-600})\") !important;\n  }\n\n  .mdl-color-text--amber-700 {\n    color: unquote(\"rgb(#{$palette-amber-700})\") !important;\n  }\n\n  .mdl-color--amber-700 {\n    background-color: unquote(\"rgb(#{$palette-amber-700})\") !important;\n  }\n\n  .mdl-color-text--amber-800 {\n    color: unquote(\"rgb(#{$palette-amber-800})\") !important;\n  }\n\n  .mdl-color--amber-800 {\n    background-color: unquote(\"rgb(#{$palette-amber-800})\") !important;\n  }\n\n  .mdl-color-text--amber-900 {\n    color: unquote(\"rgb(#{$palette-amber-900})\") !important;\n  }\n\n  .mdl-color--amber-900 {\n    background-color: unquote(\"rgb(#{$palette-amber-900})\") !important;\n  }\n\n  .mdl-color-text--amber-A100 {\n    color: unquote(\"rgb(#{$palette-amber-A100})\") !important;\n  }\n\n  .mdl-color--amber-A100 {\n    background-color: unquote(\"rgb(#{$palette-amber-A100})\") !important;\n  }\n\n  .mdl-color-text--amber-A200 {\n    color: unquote(\"rgb(#{$palette-amber-A200})\") !important;\n  }\n\n  .mdl-color--amber-A200 {\n    background-color: unquote(\"rgb(#{$palette-amber-A200})\") !important;\n  }\n\n  .mdl-color-text--amber-A400 {\n    color: unquote(\"rgb(#{$palette-amber-A400})\") !important;\n  }\n\n  .mdl-color--amber-A400 {\n    background-color: unquote(\"rgb(#{$palette-amber-A400})\") !important;\n  }\n\n  .mdl-color-text--amber-A700 {\n    color: unquote(\"rgb(#{$palette-amber-A700})\") !important;\n  }\n\n  .mdl-color--amber-A700 {\n    background-color: unquote(\"rgb(#{$palette-amber-A700})\") !important;\n  }\n\n  // Orange\n\n  .mdl-color-text--orange {\n    color: unquote(\"rgb(#{$palette-orange-500})\") !important;\n  }\n\n  .mdl-color--orange {\n    background-color: unquote(\"rgb(#{$palette-orange-500})\") !important;\n  }\n\n  .mdl-color-text--orange-50 {\n    color: unquote(\"rgb(#{$palette-orange-50})\") !important;\n  }\n\n  .mdl-color--orange-50 {\n    background-color: unquote(\"rgb(#{$palette-orange-50})\") !important;\n  }\n\n  .mdl-color-text--orange-100 {\n    color: unquote(\"rgb(#{$palette-orange-100})\") !important;\n  }\n\n  .mdl-color--orange-100 {\n    background-color: unquote(\"rgb(#{$palette-orange-100})\") !important;\n  }\n\n  .mdl-color-text--orange-200 {\n    color: unquote(\"rgb(#{$palette-orange-200})\") !important;\n  }\n\n  .mdl-color--orange-200 {\n    background-color: unquote(\"rgb(#{$palette-orange-200})\") !important;\n  }\n\n  .mdl-color-text--orange-300 {\n    color: unquote(\"rgb(#{$palette-orange-300})\") !important;\n  }\n\n  .mdl-color--orange-300 {\n    background-color: unquote(\"rgb(#{$palette-orange-300})\") !important;\n  }\n\n  .mdl-color-text--orange-400 {\n    color: unquote(\"rgb(#{$palette-orange-400})\") !important;\n  }\n\n  .mdl-color--orange-400 {\n    background-color: unquote(\"rgb(#{$palette-orange-400})\") !important;\n  }\n\n  .mdl-color-text--orange-500 {\n    color: unquote(\"rgb(#{$palette-orange-500})\") !important;\n  }\n\n  .mdl-color--orange-500 {\n    background-color: unquote(\"rgb(#{$palette-orange-500})\") !important;\n  }\n\n  .mdl-color-text--orange-600 {\n    color: unquote(\"rgb(#{$palette-orange-600})\") !important;\n  }\n\n  .mdl-color--orange-600 {\n    background-color: unquote(\"rgb(#{$palette-orange-600})\") !important;\n  }\n\n  .mdl-color-text--orange-700 {\n    color: unquote(\"rgb(#{$palette-orange-700})\") !important;\n  }\n\n  .mdl-color--orange-700 {\n    background-color: unquote(\"rgb(#{$palette-orange-700})\") !important;\n  }\n\n  .mdl-color-text--orange-800 {\n    color: unquote(\"rgb(#{$palette-orange-800})\") !important;\n  }\n\n  .mdl-color--orange-800 {\n    background-color: unquote(\"rgb(#{$palette-orange-800})\") !important;\n  }\n\n  .mdl-color-text--orange-900 {\n    color: unquote(\"rgb(#{$palette-orange-900})\") !important;\n  }\n\n  .mdl-color--orange-900 {\n    background-color: unquote(\"rgb(#{$palette-orange-900})\") !important;\n  }\n\n  .mdl-color-text--orange-A100 {\n    color: unquote(\"rgb(#{$palette-orange-A100})\") !important;\n  }\n\n  .mdl-color--orange-A100 {\n    background-color: unquote(\"rgb(#{$palette-orange-A100})\") !important;\n  }\n\n  .mdl-color-text--orange-A200 {\n    color: unquote(\"rgb(#{$palette-orange-A200})\") !important;\n  }\n\n  .mdl-color--orange-A200 {\n    background-color: unquote(\"rgb(#{$palette-orange-A200})\") !important;\n  }\n\n  .mdl-color-text--orange-A400 {\n    color: unquote(\"rgb(#{$palette-orange-A400})\") !important;\n  }\n\n  .mdl-color--orange-A400 {\n    background-color: unquote(\"rgb(#{$palette-orange-A400})\") !important;\n  }\n\n  .mdl-color-text--orange-A700 {\n    color: unquote(\"rgb(#{$palette-orange-A700})\") !important;\n  }\n\n  .mdl-color--orange-A700 {\n    background-color: unquote(\"rgb(#{$palette-orange-A700})\") !important;\n  }\n\n  // Deep Orange\n\n  .mdl-color-text--deep-orange {\n    color: unquote(\"rgb(#{$palette-deep-orange-500})\") !important;\n  }\n\n  .mdl-color--deep-orange {\n    background-color: unquote(\"rgb(#{$palette-deep-orange-500})\") !important;\n  }\n\n  .mdl-color-text--deep-orange-50 {\n    color: unquote(\"rgb(#{$palette-deep-orange-50})\") !important;\n  }\n\n  .mdl-color--deep-orange-50 {\n    background-color: unquote(\"rgb(#{$palette-deep-orange-50})\") !important;\n  }\n\n  .mdl-color-text--deep-orange-100 {\n    color: unquote(\"rgb(#{$palette-deep-orange-100})\") !important;\n  }\n\n  .mdl-color--deep-orange-100 {\n    background-color: unquote(\"rgb(#{$palette-deep-orange-100})\") !important;\n  }\n\n  .mdl-color-text--deep-orange-200 {\n    color: unquote(\"rgb(#{$palette-deep-orange-200})\") !important;\n  }\n\n  .mdl-color--deep-orange-200 {\n    background-color: unquote(\"rgb(#{$palette-deep-orange-200})\") !important;\n  }\n\n  .mdl-color-text--deep-orange-300 {\n    color: unquote(\"rgb(#{$palette-deep-orange-300})\") !important;\n  }\n\n  .mdl-color--deep-orange-300 {\n    background-color: unquote(\"rgb(#{$palette-deep-orange-300})\") !important;\n  }\n\n  .mdl-color-text--deep-orange-400 {\n    color: unquote(\"rgb(#{$palette-deep-orange-400})\") !important;\n  }\n\n  .mdl-color--deep-orange-400 {\n    background-color: unquote(\"rgb(#{$palette-deep-orange-400})\") !important;\n  }\n\n  .mdl-color-text--deep-orange-500 {\n    color: unquote(\"rgb(#{$palette-deep-orange-500})\") !important;\n  }\n\n  .mdl-color--deep-orange-500 {\n    background-color: unquote(\"rgb(#{$palette-deep-orange-500})\") !important;\n  }\n\n  .mdl-color-text--deep-orange-600 {\n    color: unquote(\"rgb(#{$palette-deep-orange-600})\") !important;\n  }\n\n  .mdl-color--deep-orange-600 {\n    background-color: unquote(\"rgb(#{$palette-deep-orange-600})\") !important;\n  }\n\n  .mdl-color-text--deep-orange-700 {\n    color: unquote(\"rgb(#{$palette-deep-orange-700})\") !important;\n  }\n\n  .mdl-color--deep-orange-700 {\n    background-color: unquote(\"rgb(#{$palette-deep-orange-700})\") !important;\n  }\n\n  .mdl-color-text--deep-orange-800 {\n    color: unquote(\"rgb(#{$palette-deep-orange-800})\") !important;\n  }\n\n  .mdl-color--deep-orange-800 {\n    background-color: unquote(\"rgb(#{$palette-deep-orange-800})\") !important;\n  }\n\n  .mdl-color-text--deep-orange-900 {\n    color: unquote(\"rgb(#{$palette-deep-orange-900})\") !important;\n  }\n\n  .mdl-color--deep-orange-900 {\n    background-color: unquote(\"rgb(#{$palette-deep-orange-900})\") !important;\n  }\n\n  .mdl-color-text--deep-orange-A100 {\n    color: unquote(\"rgb(#{$palette-deep-orange-A100})\") !important;\n  }\n\n  .mdl-color--deep-orange-A100 {\n    background-color: unquote(\"rgb(#{$palette-deep-orange-A100})\") !important;\n  }\n\n  .mdl-color-text--deep-orange-A200 {\n    color: unquote(\"rgb(#{$palette-deep-orange-A200})\") !important;\n  }\n\n  .mdl-color--deep-orange-A200 {\n    background-color: unquote(\"rgb(#{$palette-deep-orange-A200})\") !important;\n  }\n\n  .mdl-color-text--deep-orange-A400 {\n    color: unquote(\"rgb(#{$palette-deep-orange-A400})\") !important;\n  }\n\n  .mdl-color--deep-orange-A400 {\n    background-color: unquote(\"rgb(#{$palette-deep-orange-A400})\") !important;\n  }\n\n  .mdl-color-text--deep-orange-A700 {\n    color: unquote(\"rgb(#{$palette-deep-orange-A700})\") !important;\n  }\n\n  .mdl-color--deep-orange-A700 {\n    background-color: unquote(\"rgb(#{$palette-deep-orange-A700})\") !important;\n  }\n\n  // Brown\n\n  .mdl-color-text--brown {\n    color: unquote(\"rgb(#{$palette-brown-500})\") !important;\n  }\n\n  .mdl-color--brown {\n    background-color: unquote(\"rgb(#{$palette-brown-500})\") !important;\n  }\n\n  .mdl-color-text--brown-50 {\n    color: unquote(\"rgb(#{$palette-brown-50})\") !important;\n  }\n\n  .mdl-color--brown-50 {\n    background-color: unquote(\"rgb(#{$palette-brown-50})\") !important;\n  }\n\n  .mdl-color-text--brown-100 {\n    color: unquote(\"rgb(#{$palette-brown-100})\") !important;\n  }\n\n  .mdl-color--brown-100 {\n    background-color: unquote(\"rgb(#{$palette-brown-100})\") !important;\n  }\n\n  .mdl-color-text--brown-200 {\n    color: unquote(\"rgb(#{$palette-brown-200})\") !important;\n  }\n\n  .mdl-color--brown-200 {\n    background-color: unquote(\"rgb(#{$palette-brown-200})\") !important;\n  }\n\n  .mdl-color-text--brown-300 {\n    color: unquote(\"rgb(#{$palette-brown-300})\") !important;\n  }\n\n  .mdl-color--brown-300 {\n    background-color: unquote(\"rgb(#{$palette-brown-300})\") !important;\n  }\n\n  .mdl-color-text--brown-400 {\n    color: unquote(\"rgb(#{$palette-brown-400})\") !important;\n  }\n\n  .mdl-color--brown-400 {\n    background-color: unquote(\"rgb(#{$palette-brown-400})\") !important;\n  }\n\n  .mdl-color-text--brown-500 {\n    color: unquote(\"rgb(#{$palette-brown-500})\") !important;\n  }\n\n  .mdl-color--brown-500 {\n    background-color: unquote(\"rgb(#{$palette-brown-500})\") !important;\n  }\n\n  .mdl-color-text--brown-600 {\n    color: unquote(\"rgb(#{$palette-brown-600})\") !important;\n  }\n\n  .mdl-color--brown-600 {\n    background-color: unquote(\"rgb(#{$palette-brown-600})\") !important;\n  }\n\n  .mdl-color-text--brown-700 {\n    color: unquote(\"rgb(#{$palette-brown-700})\") !important;\n  }\n\n  .mdl-color--brown-700 {\n    background-color: unquote(\"rgb(#{$palette-brown-700})\") !important;\n  }\n\n  .mdl-color-text--brown-800 {\n    color: unquote(\"rgb(#{$palette-brown-800})\") !important;\n  }\n\n  .mdl-color--brown-800 {\n    background-color: unquote(\"rgb(#{$palette-brown-800})\") !important;\n  }\n\n  .mdl-color-text--brown-900 {\n    color: unquote(\"rgb(#{$palette-brown-900})\") !important;\n  }\n\n  .mdl-color--brown-900 {\n    background-color: unquote(\"rgb(#{$palette-brown-900})\") !important;\n  }\n\n  // Grey\n\n  .mdl-color-text--grey {\n    color: unquote(\"rgb(#{$palette-grey-500})\") !important;\n  }\n\n  .mdl-color--grey {\n    background-color: unquote(\"rgb(#{$palette-grey-500})\") !important;\n  }\n\n  .mdl-color-text--grey-50 {\n    color: unquote(\"rgb(#{$palette-grey-50})\") !important;\n  }\n\n  .mdl-color--grey-50 {\n    background-color: unquote(\"rgb(#{$palette-grey-50})\") !important;\n  }\n\n  .mdl-color-text--grey-100 {\n    color: unquote(\"rgb(#{$palette-grey-100})\") !important;\n  }\n\n  .mdl-color--grey-100 {\n    background-color: unquote(\"rgb(#{$palette-grey-100})\") !important;\n  }\n\n  .mdl-color-text--grey-200 {\n    color: unquote(\"rgb(#{$palette-grey-200})\") !important;\n  }\n\n  .mdl-color--grey-200 {\n    background-color: unquote(\"rgb(#{$palette-grey-200})\") !important;\n  }\n\n  .mdl-color-text--grey-300 {\n    color: unquote(\"rgb(#{$palette-grey-300})\") !important;\n  }\n\n  .mdl-color--grey-300 {\n    background-color: unquote(\"rgb(#{$palette-grey-300})\") !important;\n  }\n\n  .mdl-color-text--grey-400 {\n    color: unquote(\"rgb(#{$palette-grey-400})\") !important;\n  }\n\n  .mdl-color--grey-400 {\n    background-color: unquote(\"rgb(#{$palette-grey-400})\") !important;\n  }\n\n  .mdl-color-text--grey-500 {\n    color: unquote(\"rgb(#{$palette-grey-500})\") !important;\n  }\n\n  .mdl-color--grey-500 {\n    background-color: unquote(\"rgb(#{$palette-grey-500})\") !important;\n  }\n\n  .mdl-color-text--grey-600 {\n    color: unquote(\"rgb(#{$palette-grey-600})\") !important;\n  }\n\n  .mdl-color--grey-600 {\n    background-color: unquote(\"rgb(#{$palette-grey-600})\") !important;\n  }\n\n  .mdl-color-text--grey-700 {\n    color: unquote(\"rgb(#{$palette-grey-700})\") !important;\n  }\n\n  .mdl-color--grey-700 {\n    background-color: unquote(\"rgb(#{$palette-grey-700})\") !important;\n  }\n\n  .mdl-color-text--grey-800 {\n    color: unquote(\"rgb(#{$palette-grey-800})\") !important;\n  }\n\n  .mdl-color--grey-800 {\n    background-color: unquote(\"rgb(#{$palette-grey-800})\") !important;\n  }\n\n  .mdl-color-text--grey-900 {\n    color: unquote(\"rgb(#{$palette-grey-900})\") !important;\n  }\n\n  .mdl-color--grey-900 {\n    background-color: unquote(\"rgb(#{$palette-grey-900})\") !important;\n  }\n\n  // Blue Grey\n\n  .mdl-color-text--blue-grey {\n    color: unquote(\"rgb(#{$palette-blue-grey-500})\") !important;\n  }\n\n  .mdl-color--blue-grey {\n    background-color: unquote(\"rgb(#{$palette-blue-grey-500})\") !important;\n  }\n\n  .mdl-color-text--blue-grey-50 {\n    color: unquote(\"rgb(#{$palette-blue-grey-50})\") !important;\n  }\n\n  .mdl-color--blue-grey-50 {\n    background-color: unquote(\"rgb(#{$palette-blue-grey-50})\") !important;\n  }\n\n  .mdl-color-text--blue-grey-100 {\n    color: unquote(\"rgb(#{$palette-blue-grey-100})\") !important;\n  }\n\n  .mdl-color--blue-grey-100 {\n    background-color: unquote(\"rgb(#{$palette-blue-grey-100})\") !important;\n  }\n\n  .mdl-color-text--blue-grey-200 {\n    color: unquote(\"rgb(#{$palette-blue-grey-200})\") !important;\n  }\n\n  .mdl-color--blue-grey-200 {\n    background-color: unquote(\"rgb(#{$palette-blue-grey-200})\") !important;\n  }\n\n  .mdl-color-text--blue-grey-300 {\n    color: unquote(\"rgb(#{$palette-blue-grey-300})\") !important;\n  }\n\n  .mdl-color--blue-grey-300 {\n    background-color: unquote(\"rgb(#{$palette-blue-grey-300})\") !important;\n  }\n\n  .mdl-color-text--blue-grey-400 {\n    color: unquote(\"rgb(#{$palette-blue-grey-400})\") !important;\n  }\n\n  .mdl-color--blue-grey-400 {\n    background-color: unquote(\"rgb(#{$palette-blue-grey-400})\") !important;\n  }\n\n  .mdl-color-text--blue-grey-500 {\n    color: unquote(\"rgb(#{$palette-blue-grey-500})\") !important;\n  }\n\n  .mdl-color--blue-grey-500 {\n    background-color: unquote(\"rgb(#{$palette-blue-grey-500})\") !important;\n  }\n\n  .mdl-color-text--blue-grey-600 {\n    color: unquote(\"rgb(#{$palette-blue-grey-600})\") !important;\n  }\n\n  .mdl-color--blue-grey-600 {\n    background-color: unquote(\"rgb(#{$palette-blue-grey-600})\") !important;\n  }\n\n  .mdl-color-text--blue-grey-700 {\n    color: unquote(\"rgb(#{$palette-blue-grey-700})\") !important;\n  }\n\n  .mdl-color--blue-grey-700 {\n    background-color: unquote(\"rgb(#{$palette-blue-grey-700})\") !important;\n  }\n\n  .mdl-color-text--blue-grey-800 {\n    color: unquote(\"rgb(#{$palette-blue-grey-800})\") !important;\n  }\n\n  .mdl-color--blue-grey-800 {\n    background-color: unquote(\"rgb(#{$palette-blue-grey-800})\") !important;\n  }\n\n  .mdl-color-text--blue-grey-900 {\n    color: unquote(\"rgb(#{$palette-blue-grey-900})\") !important;\n  }\n\n  .mdl-color--blue-grey-900 {\n    background-color: unquote(\"rgb(#{$palette-blue-grey-900})\") !important;\n  }\n\n  // Black\n\n  .mdl-color--black {\n    background-color: unquote(\"rgb(#{$color-black})\") !important;\n  }\n\n  .mdl-color-text--black {\n    color: unquote(\"rgb(#{$color-black})\") !important;\n  }\n\n  // White\n\n  .mdl-color--white {\n    background-color: unquote(\"rgb(#{$color-white})\") !important;\n  }\n\n  .mdl-color-text--white {\n    color: unquote(\"rgb(#{$color-white})\") !important;\n  }\n}\n\n// Primary and accent\n\n.mdl-color--primary {\n  background-color: unquote(\"rgb(#{$color-primary})\") !important;\n}\n\n.mdl-color--primary-contrast {\n  background-color: unquote(\"rgb(#{$color-primary-contrast})\") !important;\n}\n\n.mdl-color--primary-dark {\n  background-color: unquote(\"rgb(#{$color-primary-dark})\") !important;\n}\n\n.mdl-color--accent {\n  background-color: unquote(\"rgb(#{$color-accent})\") !important;\n}\n\n.mdl-color--accent-contrast {\n  background-color: unquote(\"rgb(#{$color-accent-contrast})\") !important;\n}\n\n.mdl-color-text--primary {\n  color: unquote(\"rgb(#{$color-primary})\") !important;\n}\n\n.mdl-color-text--primary-contrast {\n  color: unquote(\"rgb(#{$color-primary-contrast})\") !important;\n}\n\n.mdl-color-text--primary-dark {\n  color: unquote(\"rgb(#{$color-primary-dark})\") !important;\n}\n\n.mdl-color-text--accent {\n  color: unquote(\"rgb(#{$color-accent})\") !important;\n}\n\n.mdl-color-text--accent-contrast {\n  color: unquote(\"rgb(#{$color-accent-contrast})\") !important;\n}\n"
  },
  {
    "path": "src/palette/demo.css",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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.demo-page--palette.demo-preview-block {\n  display: inline-block;\n}\n\n.demo-palette {\n  margin-top: 15px;\n  width: 360px;\n  float: left;\n}\n\n@media screen and (max-width: 360px ) {\n  .demo-palette {\n    width: 272px;\n  }\n}\n\n.demo-palette-color, .demo-palette-heading {\n  max-width: 300px;\n  padding: 15px;\n  color: white;\n}\n\n.demo-palette .demo-palette--dark-text,\n.demo-palette-heading.demo-palette--dark-text .demo-palette-name {\n  color: #000;\n}\n\n.demo-palette-name {\n  padding: 0 0 60px 0;\n}\n\n.demo-palette-single {\n  padding: 15px 15px 25px;\n}\n\n.demo-palette-single .demo-palette-name {\n  padding: 0;\n  float: left;\n}\n"
  },
  {
    "path": "src/palette/demo.html",
    "content": "    <div class=\"demo-preview-block demo-page--palette\">\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--red-500\">\n          <div class=\"demo-palette-name\">Red</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--red-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--red-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--red-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--red-300 demo-palette--dark-text\">300</div>\n        <div class=\"demo-palette-color mdl-color--red-400 demo-palette--dark-text\">400</div>\n        <div class=\"demo-palette-color mdl-color--red-500\">500</div>\n        <div class=\"demo-palette-color mdl-color--red-600\">600</div>\n        <div class=\"demo-palette-color mdl-color--red-700\">700</div>\n        <div class=\"demo-palette-color mdl-color--red-800\">800</div>\n        <div class=\"demo-palette-color mdl-color--red-900\">900</div>\n        <div class=\"demo-palette-color mdl-color--red-A100 demo-palette--dark-text\">A100</div>\n        <div class=\"demo-palette-color mdl-color--red-A200\">A200</div>\n        <div class=\"demo-palette-color mdl-color--red-A400\">A400</div>\n        <div class=\"demo-palette-color mdl-color--red-A700\">A700</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--pink-500\">\n          <div class=\"demo-palette-name\">Pink</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--pink-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--pink-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--pink-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--pink-300 demo-palette--dark-text\">300</div>\n        <div class=\"demo-palette-color mdl-color--pink-400 demo-palette--dark-text\">400</div>\n        <div class=\"demo-palette-color mdl-color--pink-500\">500</div>\n        <div class=\"demo-palette-color mdl-color--pink-600\">600</div>\n        <div class=\"demo-palette-color mdl-color--pink-700\">700</div>\n        <div class=\"demo-palette-color mdl-color--pink-800\">800</div>\n        <div class=\"demo-palette-color mdl-color--pink-900\">900</div>\n        <div class=\"demo-palette-color mdl-color--pink-A100 demo-palette--dark-text\">A100</div>\n        <div class=\"demo-palette-color mdl-color--pink-A200\">A200</div>\n        <div class=\"demo-palette-color mdl-color--pink-A400\">A400</div>\n        <div class=\"demo-palette-color mdl-color--pink-A700\">A700</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--purple-500\">\n          <div class=\"demo-palette-name\">Purple</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--purple-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--purple-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--purple-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--purple-300\">300</div>\n        <div class=\"demo-palette-color mdl-color--purple-400\">400</div>\n        <div class=\"demo-palette-color mdl-color--purple-500\">500</div>\n        <div class=\"demo-palette-color mdl-color--purple-600\">600</div>\n        <div class=\"demo-palette-color mdl-color--purple-700\">700</div>\n        <div class=\"demo-palette-color mdl-color--purple-800\">800</div>\n        <div class=\"demo-palette-color mdl-color--purple-900\">900</div>\n        <div class=\"demo-palette-color mdl-color--purple-A100 demo-palette--dark-text\">A100</div>\n        <div class=\"demo-palette-color mdl-color--purple-A200\">A200</div>\n        <div class=\"demo-palette-color mdl-color--purple-A400\">A400</div>\n        <div class=\"demo-palette-color mdl-color--purple-A700\">A700</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--deep-purple-500\">\n          <div class=\"demo-palette-name\">Deep Purple</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--deep-purple-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--deep-purple-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--deep-purple-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--deep-purple-300\">300</div>\n        <div class=\"demo-palette-color mdl-color--deep-purple-400\">400</div>\n        <div class=\"demo-palette-color mdl-color--deep-purple-500\">500</div>\n        <div class=\"demo-palette-color mdl-color--deep-purple-600\">600</div>\n        <div class=\"demo-palette-color mdl-color--deep-purple-700\">700</div>\n        <div class=\"demo-palette-color mdl-color--deep-purple-800\">800</div>\n        <div class=\"demo-palette-color mdl-color--deep-purple-900\">900</div>\n        <div class=\"demo-palette-color mdl-color--deep-purple-A100 demo-palette--dark-text\">A100</div>\n        <div class=\"demo-palette-color mdl-color--deep-purple-A200\">A200</div>\n        <div class=\"demo-palette-color mdl-color--deep-purple-A400\">A400</div>\n        <div class=\"demo-palette-color mdl-color--deep-purple-A700\">A700</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--indigo-500\">\n          <div class=\"demo-palette-name\">Indigo</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--indigo-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--indigo-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--indigo-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--indigo-300\">300</div>\n        <div class=\"demo-palette-color mdl-color--indigo-400\">400</div>\n        <div class=\"demo-palette-color mdl-color--indigo-500\">500</div>\n        <div class=\"demo-palette-color mdl-color--indigo-600\">600</div>\n        <div class=\"demo-palette-color mdl-color--indigo-700\">700</div>\n        <div class=\"demo-palette-color mdl-color--indigo-800\">800</div>\n        <div class=\"demo-palette-color mdl-color--indigo-900\">900</div>\n        <div class=\"demo-palette-color mdl-color--indigo-A100 demo-palette--dark-text\">A100</div>\n        <div class=\"demo-palette-color mdl-color--indigo-A200\">A200</div>\n        <div class=\"demo-palette-color mdl-color--indigo-A400\">A400</div>\n        <div class=\"demo-palette-color mdl-color--indigo-A700\">A700</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--blue-500\">\n          <div class=\"demo-palette-name\">Blue</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--blue-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--blue-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--blue-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--blue-300 demo-palette--dark-text\">300</div>\n        <div class=\"demo-palette-color mdl-color--blue-400 demo-palette--dark-text\">400</div>\n        <div class=\"demo-palette-color mdl-color--blue-500\">500</div>\n        <div class=\"demo-palette-color mdl-color--blue-600\">600</div>\n        <div class=\"demo-palette-color mdl-color--blue-700\">700</div>\n        <div class=\"demo-palette-color mdl-color--blue-800\">800</div>\n        <div class=\"demo-palette-color mdl-color--blue-900\">900</div>\n        <div class=\"demo-palette-color mdl-color--blue-A100 demo-palette--dark-text\">A100</div>\n        <div class=\"demo-palette-color mdl-color--blue-A200\">A200</div>\n        <div class=\"demo-palette-color mdl-color--blue-A400\">A400</div>\n        <div class=\"demo-palette-color mdl-color--blue-A700\">A700</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--light-blue-500\">\n          <div class=\"demo-palette-name\">Light Blue</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--light-blue-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--light-blue-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--light-blue-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--light-blue-300 demo-palette--dark-text\">300</div>\n        <div class=\"demo-palette-color mdl-color--light-blue-400 demo-palette--dark-text\">400</div>\n        <div class=\"demo-palette-color mdl-color--light-blue-500\">500</div>\n        <div class=\"demo-palette-color mdl-color--light-blue-600\">600</div>\n        <div class=\"demo-palette-color mdl-color--light-blue-700\">700</div>\n        <div class=\"demo-palette-color mdl-color--light-blue-800\">800</div>\n        <div class=\"demo-palette-color mdl-color--light-blue-900\">900</div>\n        <div class=\"demo-palette-color mdl-color--light-blue-A100 demo-palette--dark-text\">A100</div>\n        <div class=\"demo-palette-color mdl-color--light-blue-A200 demo-palette--dark-text\">A200</div>\n        <div class=\"demo-palette-color mdl-color--light-blue-A400 demo-palette--dark-text\">A400</div>\n        <div class=\"demo-palette-color mdl-color--light-blue-A700\">A700</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--cyan-500\">\n          <div class=\"demo-palette-name\">Cyan</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--cyan-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--cyan-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--cyan-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--cyan-300 demo-palette--dark-text\">300</div>\n        <div class=\"demo-palette-color mdl-color--cyan-400 demo-palette--dark-text\">400</div>\n        <div class=\"demo-palette-color mdl-color--cyan-500\">500</div>\n        <div class=\"demo-palette-color mdl-color--cyan-600\">600</div>\n        <div class=\"demo-palette-color mdl-color--cyan-700\">700</div>\n        <div class=\"demo-palette-color mdl-color--cyan-800\">800</div>\n        <div class=\"demo-palette-color mdl-color--cyan-900\">900</div>\n        <div class=\"demo-palette-color mdl-color--cyan-A100 demo-palette--dark-text\">A100</div>\n        <div class=\"demo-palette-color mdl-color--cyan-A200 demo-palette--dark-text\">A200</div>\n        <div class=\"demo-palette-color mdl-color--cyan-A400 demo-palette--dark-text\">A400</div>\n        <div class=\"demo-palette-color mdl-color--cyan-A700 demo-palette--dark-text\">A700</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--teal-500\">\n          <div class=\"demo-palette-name\">Teal</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--teal-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--teal-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--teal-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--teal-300 demo-palette--dark-text\">300</div>\n        <div class=\"demo-palette-color mdl-color--teal-400 demo-palette--dark-text\">400</div>\n        <div class=\"demo-palette-color mdl-color--teal-500\">500</div>\n        <div class=\"demo-palette-color mdl-color--teal-600\">600</div>\n        <div class=\"demo-palette-color mdl-color--teal-700\">700</div>\n        <div class=\"demo-palette-color mdl-color--teal-800\">800</div>\n        <div class=\"demo-palette-color mdl-color--teal-900\">900</div>\n        <div class=\"demo-palette-color mdl-color--teal-A100 demo-palette--dark-text\">A100</div>\n        <div class=\"demo-palette-color mdl-color--teal-A200 demo-palette--dark-text\">A200</div>\n        <div class=\"demo-palette-color mdl-color--teal-A400 demo-palette--dark-text\">A400</div>\n        <div class=\"demo-palette-color mdl-color--teal-A700 demo-palette--dark-text\">A700</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--green-500\">\n          <div class=\"demo-palette-name\">Green</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--green-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--green-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--green-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--green-300 demo-palette--dark-text\">300</div>\n        <div class=\"demo-palette-color mdl-color--green-400 demo-palette--dark-text\">400</div>\n        <div class=\"demo-palette-color mdl-color--green-500\">500</div>\n        <div class=\"demo-palette-color mdl-color--green-600\">600</div>\n        <div class=\"demo-palette-color mdl-color--green-700\">700</div>\n        <div class=\"demo-palette-color mdl-color--green-800\">800</div>\n        <div class=\"demo-palette-color mdl-color--green-900\">900</div>\n        <div class=\"demo-palette-color mdl-color--green-A100 demo-palette--dark-text\">A100</div>\n        <div class=\"demo-palette-color mdl-color--green-A200 demo-palette--dark-text\">A200</div>\n        <div class=\"demo-palette-color mdl-color--green-A400 demo-palette--dark-text\">A400</div>\n        <div class=\"demo-palette-color mdl-color--green-A700 demo-palette--dark-text\">A700</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--light-green-500\">\n          <div class=\"demo-palette-name\">Light Green</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--light-green-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--light-green-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--light-green-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--light-green-300 demo-palette--dark-text\">300</div>\n        <div class=\"demo-palette-color mdl-color--light-green-400 demo-palette--dark-text\">400</div>\n        <div class=\"demo-palette-color mdl-color--light-green-500 demo-palette--dark-text\">500</div>\n        <div class=\"demo-palette-color mdl-color--light-green-600 demo-palette--dark-text\">600</div>\n        <div class=\"demo-palette-color mdl-color--light-green-700 demo-palette--dark-text\">700</div>\n        <div class=\"demo-palette-color mdl-color--light-green-800\">800</div>\n        <div class=\"demo-palette-color mdl-color--light-green-900\">900</div>\n        <div class=\"demo-palette-color mdl-color--light-green-A100 demo-palette--dark-text\">A100</div>\n        <div class=\"demo-palette-color mdl-color--light-green-A200 demo-palette--dark-text\">A200</div>\n        <div class=\"demo-palette-color mdl-color--light-green-A400 demo-palette--dark-text\">A400</div>\n        <div class=\"demo-palette-color mdl-color--light-green-A700 demo-palette--dark-text\">A700</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--lime-500 demo-palette--dark-text\">\n          <div class=\"demo-palette-name\">Lime</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--lime-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--lime-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--lime-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--lime-300 demo-palette--dark-text\">300</div>\n        <div class=\"demo-palette-color mdl-color--lime-400 demo-palette--dark-text\">400</div>\n        <div class=\"demo-palette-color mdl-color--lime-500 demo-palette--dark-text\">500</div>\n        <div class=\"demo-palette-color mdl-color--lime-600 demo-palette--dark-text\">600</div>\n        <div class=\"demo-palette-color mdl-color--lime-700 demo-palette--dark-text\">700</div>\n        <div class=\"demo-palette-color mdl-color--lime-800 demo-palette--dark-text\">800</div>\n        <div class=\"demo-palette-color mdl-color--lime-900\">900</div>\n        <div class=\"demo-palette-color mdl-color--lime-A100 demo-palette--dark-text\">A100</div>\n        <div class=\"demo-palette-color mdl-color--lime-A200 demo-palette--dark-text\">A200</div>\n        <div class=\"demo-palette-color mdl-color--lime-A400 demo-palette--dark-text\">A400</div>\n        <div class=\"demo-palette-color mdl-color--lime-A700 demo-palette--dark-text\">A700</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--yellow-500 demo-palette--dark-text\">\n          <div class=\"demo-palette-name\">Yellow</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--yellow-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--yellow-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--yellow-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--yellow-300 demo-palette--dark-text\">300</div>\n        <div class=\"demo-palette-color mdl-color--yellow-400 demo-palette--dark-text\">400</div>\n        <div class=\"demo-palette-color mdl-color--yellow-500 demo-palette--dark-text\">500</div>\n        <div class=\"demo-palette-color mdl-color--yellow-600 demo-palette--dark-text\">600</div>\n        <div class=\"demo-palette-color mdl-color--yellow-700 demo-palette--dark-text\">700</div>\n        <div class=\"demo-palette-color mdl-color--yellow-800 demo-palette--dark-text\">800</div>\n        <div class=\"demo-palette-color mdl-color--yellow-900 demo-palette--dark-text\">900</div>\n        <div class=\"demo-palette-color mdl-color--yellow-A100 demo-palette--dark-text\">A100</div>\n        <div class=\"demo-palette-color mdl-color--yellow-A200 demo-palette--dark-text\">A200</div>\n        <div class=\"demo-palette-color mdl-color--yellow-A400 demo-palette--dark-text\">A400</div>\n        <div class=\"demo-palette-color mdl-color--yellow-A700 demo-palette--dark-text\">A700</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--amber-500 demo-palette--dark-text\">\n          <div class=\"demo-palette-name\">Amber</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--amber-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--amber-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--amber-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--amber-300 demo-palette--dark-text\">300</div>\n        <div class=\"demo-palette-color mdl-color--amber-400 demo-palette--dark-text\">400</div>\n        <div class=\"demo-palette-color mdl-color--amber-500 demo-palette--dark-text\">500</div>\n        <div class=\"demo-palette-color mdl-color--amber-600 demo-palette--dark-text\">600</div>\n        <div class=\"demo-palette-color mdl-color--amber-700 demo-palette--dark-text\">700</div>\n        <div class=\"demo-palette-color mdl-color--amber-800 demo-palette--dark-text\">800</div>\n        <div class=\"demo-palette-color mdl-color--amber-900 demo-palette--dark-text\">900</div>\n        <div class=\"demo-palette-color mdl-color--amber-A100 demo-palette--dark-text\">A100</div>\n        <div class=\"demo-palette-color mdl-color--amber-A200 demo-palette--dark-text\">A200</div>\n        <div class=\"demo-palette-color mdl-color--amber-A400 demo-palette--dark-text\">A400</div>\n        <div class=\"demo-palette-color mdl-color--amber-A700 demo-palette--dark-text\">A700</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--orange-500 demo-palette--dark-text\">\n          <div class=\"demo-palette-name\">Orange</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--orange-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--orange-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--orange-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--orange-300 demo-palette--dark-text\">300</div>\n        <div class=\"demo-palette-color mdl-color--orange-400 demo-palette--dark-text\">400</div>\n        <div class=\"demo-palette-color mdl-color--orange-500 demo-palette--dark-text\">500</div>\n        <div class=\"demo-palette-color mdl-color--orange-600 demo-palette--dark-text\">600</div>\n        <div class=\"demo-palette-color mdl-color--orange-700 demo-palette--dark-text\">700</div>\n        <div class=\"demo-palette-color mdl-color--orange-800\">800</div>\n        <div class=\"demo-palette-color mdl-color--orange-900\">900</div>\n        <div class=\"demo-palette-color mdl-color--orange-A100 demo-palette--dark-text\">A100</div>\n        <div class=\"demo-palette-color mdl-color--orange-A200 demo-palette--dark-text\">A200</div>\n        <div class=\"demo-palette-color mdl-color--orange-A400 demo-palette--dark-text\">A400</div>\n        <div class=\"demo-palette-color mdl-color--orange-A700 demo-palette--dark-text\">A700</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--deep-orange-500\">\n          <div class=\"demo-palette-name\">Deep Orange</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--deep-orange-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--deep-orange-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--deep-orange-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--deep-orange-300 demo-palette--dark-text\">300</div>\n        <div class=\"demo-palette-color mdl-color--deep-orange-400 demo-palette--dark-text\">400</div>\n        <div class=\"demo-palette-color mdl-color--deep-orange-500\">500</div>\n        <div class=\"demo-palette-color mdl-color--deep-orange-600\">600</div>\n        <div class=\"demo-palette-color mdl-color--deep-orange-700\">700</div>\n        <div class=\"demo-palette-color mdl-color--deep-orange-800\">800</div>\n        <div class=\"demo-palette-color mdl-color--deep-orange-900\">900</div>\n        <div class=\"demo-palette-color mdl-color--deep-orange-A100 demo-palette--dark-text\">A100</div>\n        <div class=\"demo-palette-color mdl-color--deep-orange-A200 demo-palette--dark-text\">A200</div>\n        <div class=\"demo-palette-color mdl-color--deep-orange-A400\">A400</div>\n        <div class=\"demo-palette-color mdl-color--deep-orange-A700\">A700</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--brown-500\">\n          <div class=\"demo-palette-name\">Brown</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--brown-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--brown-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--brown-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--brown-300\">300</div>\n        <div class=\"demo-palette-color mdl-color--brown-400\">400</div>\n        <div class=\"demo-palette-color mdl-color--brown-500\">500</div>\n        <div class=\"demo-palette-color mdl-color--brown-600\">600</div>\n        <div class=\"demo-palette-color mdl-color--brown-700\">700</div>\n        <div class=\"demo-palette-color mdl-color--brown-800\">800</div>\n        <div class=\"demo-palette-color mdl-color--brown-900\">900</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--grey-500 demo-palette--dark-text\">\n          <div class=\"demo-palette-name\">Grey</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--grey-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--grey-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--grey-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--grey-300 demo-palette--dark-text\">300</div>\n        <div class=\"demo-palette-color mdl-color--grey-400 demo-palette--dark-text\">400</div>\n        <div class=\"demo-palette-color mdl-color--grey-500 demo-palette--dark-text\">500</div>\n        <div class=\"demo-palette-color mdl-color--grey-600\">600</div>\n        <div class=\"demo-palette-color mdl-color--grey-700\">700</div>\n        <div class=\"demo-palette-color mdl-color--grey-800\">800</div>\n        <div class=\"demo-palette-color mdl-color--grey-900\">900</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading mdl-color--blue-grey-500\">\n          <div class=\"demo-palette-name\">Blue Grey</div>\n\n          500\n        </div>\n        <div class=\"demo-palette-color mdl-color--blue-grey-50 demo-palette--dark-text\">50</div>\n        <div class=\"demo-palette-color mdl-color--blue-grey-100 demo-palette--dark-text\">100</div>\n        <div class=\"demo-palette-color mdl-color--blue-grey-200 demo-palette--dark-text\">200</div>\n        <div class=\"demo-palette-color mdl-color--blue-grey-300 demo-palette--dark-text\">300</div>\n        <div class=\"demo-palette-color mdl-color--blue-grey-400\">400</div>\n        <div class=\"demo-palette-color mdl-color--blue-grey-500\">500</div>\n        <div class=\"demo-palette-color mdl-color--blue-grey-600\">600</div>\n        <div class=\"demo-palette-color mdl-color--blue-grey-700\">700</div>\n        <div class=\"demo-palette-color mdl-color--blue-grey-800\">800</div>\n        <div class=\"demo-palette-color mdl-color--blue-grey-900\">900</div>\n      </div>\n\n      <div class=\"demo-palette\">\n        <div class=\"demo-palette-heading demo-palette-single mdl-color--black\">\n          <div class=\"demo-palette-name\">Black</div>\n        </div>\n        <div class=\"demo-palette-heading demo-palette-single mdl-color--white demo-palette--dark-text\">\n          <div class=\"demo-palette-name\">White</div>\n        </div>\n      </div>\n\n    </div>\n"
  },
  {
    "path": "src/progress/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **progress** component is a visual indicator of background activity in a web page or application. A progress indicator consists of a (typically) horizontal bar containing some animation that conveys a sense of motion. While some progress devices indicate an approximate or specific percentage of completion, the MDL progress component simply communicates the fact that an activity is ongoing and is not yet complete.\n\nProgress indicators are an established but non-standardized feature in user interfaces, and provide users with a visual clue to an application's status. Their design and use is therefore an important factor in the overall user experience. See the progress component's [Material Design specifications page](http://www.google.com/design/spec/components/progress-activity.html) for details.\n\n### To include an MDL **progress** component:\n\n&nbsp;1. Code a `<div>` element. Include any desired attributes and values, such as an id or width &mdash; typically done using external CSS rather than the inline `style` attribute as shown here.\n```html\n<div id=\"prog1\" style=\"width:250px\"></div>\n```\n&nbsp;2. Add one or more MDL classes, separated by spaces, to the div using the `class` attribute.\n```html\n<div id=\"prog1\" style=\"width:250px\" class=\"mdl-js-progress\"></div>\n```\n\nThe progress component is ready for use.\n\n#### Examples\n\nA static (non-animated) progress indicator.\n```html\n<div id=\"progstatic\" style=\"width:250px\" class=\"mdl-js-progress\"></div>\n```\n\nAn active (animated) progress indicator.\n```html\n<div id=\"progactive\" style=\"width:200px\" class=\"mdl-js-progress\n mdl-progress--indeterminate\"></div>\n```\n\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual and behavioral enhancements to the progress indicator. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-js-progress` | Assigns basic MDL behavior to progress indicator | Required |\n| `mdl-progress--indeterminate` | Applies animation effect | Optional |\n\n> Note: `mdl-progress__intermediate` does exist within the codebase. It is deprecated since the name is not in BEM alignment. It will be removed in 2.0.\n"
  },
  {
    "path": "src/progress/_progress.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n\n.mdl-progress {\n  display: block;\n  position: relative;\n  height: $bar-height;\n  width: 500px;\n  max-width: 100%;\n}\n\n.mdl-progress > .bar {\n  display: block;\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  width: 0%;\n  transition: width 0.2s $animation-curve-default;\n}\n\n.mdl-progress > .progressbar {\n  background-color: $progress-main-color;\n  z-index: 1;\n  left: 0;\n}\n\n.mdl-progress > .bufferbar {\n  background-image: linear-gradient(to right, $progress-secondary-color, $progress-secondary-color),\n    linear-gradient(to right, $progress-main-color, $progress-main-color);\n  z-index: 0;\n  left: 0;\n}\n\n.mdl-progress > .auxbar {\n  right: 0;\n}\n\n// Webkit only\n@supports (-webkit-appearance:none) {\n  .mdl-progress:not(.mdl-progress--indeterminate):not(.mdl-progress--indeterminate) > .auxbar,\n  .mdl-progress:not(.mdl-progress__indeterminate):not(.mdl-progress__indeterminate) > .auxbar {\n    background-image: linear-gradient(to right, $progress-secondary-color, $progress-secondary-color),\n      linear-gradient(to right, $progress-main-color, $progress-main-color);\n    mask: url('#{$progress-image-path}/buffer.svg?embed');\n  }\n}\n\n.mdl-progress:not(.mdl-progress--indeterminate) > .auxbar,\n.mdl-progress:not(.mdl-progress__indeterminate) > .auxbar {\n  background-image: linear-gradient(to right, $progress-fallback-buffer-color, $progress-fallback-buffer-color),\n    linear-gradient(to right, $progress-main-color, $progress-main-color);\n}\n\n.mdl-progress.mdl-progress--indeterminate > .bar1,\n.mdl-progress.mdl-progress__indeterminate > .bar1 {\n  background-color: $progress-main-color;\n  animation-name: indeterminate1;\n  animation-duration: 2s;\n  animation-iteration-count: infinite;\n  animation-timing-function: linear;\n}\n\n.mdl-progress.mdl-progress--indeterminate > .bar3,\n.mdl-progress.mdl-progress__indeterminate > .bar3 {\n  background-image: none;\n  background-color: $progress-main-color;\n  animation-name: indeterminate2;\n  animation-duration: 2s;\n  animation-iteration-count: infinite;\n  animation-timing-function: linear;\n}\n\n@keyframes indeterminate1 {\n  0% {\n    left: 0%;\n    width: 0%;\n  }\n  50% {\n    left: 25%;\n    width: 75%;\n  }\n  75% {\n    left: 100%;\n    width: 0%;\n  }\n}\n\n@keyframes indeterminate2 {\n  0% {\n    left: 0%;\n    width: 0%;\n  }\n  50% {\n    left: 0%;\n    width: 0%;\n  }\n  75% {\n    left: 0%;\n    width: 25%;\n  }\n  100% {\n    left: 100%;\n    width: 0%;\n  }\n}\n"
  },
  {
    "path": "src/progress/progress.js",
    "content": "/**\n * @license\n * Copyright 2015 Google Inc. 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 *      http://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(function() {\n  'use strict';\n\n  /**\n   * Class constructor for Progress MDL component.\n   * Implements MDL component design pattern defined at:\n   * https://github.com/jasonmayes/mdl-component-design-pattern\n   *\n   * @constructor\n   * @param {HTMLElement} element The element that will be upgraded.\n   */\n  var MaterialProgress = function MaterialProgress(element) {\n    this.element_ = element;\n\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialProgress'] = MaterialProgress;\n\n  /**\n   * Store constants in one place so they can be updated easily.\n   *\n   * @enum {string | number}\n   * @private\n   */\n  MaterialProgress.prototype.Constant_ = {\n  };\n\n  /**\n   * Store strings for class names defined by this component that are used in\n   * JavaScript. This allows us to simply change it in one place should we\n   * decide to modify at a later date.\n   *\n   * @enum {string}\n   * @private\n   */\n  MaterialProgress.prototype.CssClasses_ = {\n    INDETERMINATE_CLASS: 'mdl-progress__indeterminate'\n  };\n\n  /**\n   * Set the current progress of the progressbar.\n   *\n   * @param {number} p Percentage of the progress (0-100)\n   * @public\n   */\n  MaterialProgress.prototype.setProgress = function(p) {\n    if (this.element_.classList.contains(this.CssClasses_.INDETERMINATE_CLASS)) {\n      return;\n    }\n\n    this.progressbar_.style.width = p + '%';\n  };\n  MaterialProgress.prototype['setProgress'] =\n      MaterialProgress.prototype.setProgress;\n\n  /**\n   * Set the current progress of the buffer.\n   *\n   * @param {number} p Percentage of the buffer (0-100)\n   * @public\n   */\n  MaterialProgress.prototype.setBuffer = function(p) {\n    this.bufferbar_.style.width = p + '%';\n    this.auxbar_.style.width = (100 - p) + '%';\n  };\n  MaterialProgress.prototype['setBuffer'] =\n      MaterialProgress.prototype.setBuffer;\n\n  /**\n   * Initialize element.\n   */\n  MaterialProgress.prototype.init = function() {\n    if (this.element_) {\n      var el = document.createElement('div');\n      el.className = 'progressbar bar bar1';\n      this.element_.appendChild(el);\n      this.progressbar_ = el;\n\n      el = document.createElement('div');\n      el.className = 'bufferbar bar bar2';\n      this.element_.appendChild(el);\n      this.bufferbar_ = el;\n\n      el = document.createElement('div');\n      el.className = 'auxbar bar bar3';\n      this.element_.appendChild(el);\n      this.auxbar_ = el;\n\n      this.progressbar_.style.width = '0%';\n      this.bufferbar_.style.width = '100%';\n      this.auxbar_.style.width = '0%';\n\n      this.element_.classList.add('is-upgraded');\n    }\n  };\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  componentHandler.register({\n    constructor: MaterialProgress,\n    classAsString: 'MaterialProgress',\n    cssClass: 'mdl-js-progress',\n    widget: true\n  });\n})();\n"
  },
  {
    "path": "src/progress/snippets/progress-buffering-demo.html",
    "content": "<style>\n  .demo-progress__progress-buffering .mdl-progress {\n    width: 50vw;\n    max-width: 260px;\n  }\n</style>\n\n{% include \"progress-buffering.html\" %}\n"
  },
  {
    "path": "src/progress/snippets/progress-buffering.html",
    "content": "<!-- MDL Progress Bar with Buffering -->\n<div id=\"p3\" class=\"mdl-progress mdl-js-progress\"></div>\n<script>\n  document.querySelector('#p3').addEventListener('mdl-componentupgraded', function() {\n    this.MaterialProgress.setProgress(33);\n    this.MaterialProgress.setBuffer(87);\n  });\n</script>\n"
  },
  {
    "path": "src/progress/snippets/progress-default-demo.html",
    "content": "<style>\n  .demo-progress__progress-default .mdl-progress {\n    width: 50vw;\n    max-width: 260px;\n  }\n</style>\n{% include \"progress-default.html\" %}\n"
  },
  {
    "path": "src/progress/snippets/progress-default.html",
    "content": "<!-- Simple MDL Progress Bar -->\n<div id=\"p1\" class=\"mdl-progress mdl-js-progress\"></div>\n<script>\n  document.querySelector('#p1').addEventListener('mdl-componentupgraded', function() {\n    this.MaterialProgress.setProgress(44);\n  });\n</script>\n"
  },
  {
    "path": "src/progress/snippets/progress-indeterminate-demo.html",
    "content": "<style>\n  .demo-progress__progress-indeterminate .mdl-progress {\n    width: 50vw;\n    max-width: 260px;\n  }\n</style>\n{% include \"progress-indeterminate.html\" %}\n"
  },
  {
    "path": "src/progress/snippets/progress-indeterminate.html",
    "content": "<!-- MDL Progress Bar with Indeterminate Progress -->\n<div id=\"p2\" class=\"mdl-progress mdl-js-progress mdl-progress__indeterminate\"></div>\n"
  },
  {
    "path": "src/radio/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **radio** component is an enhanced version of the standard HTML `<input type=\"radio\">`, or \"radio button\" element. A radio button consists of a small circle and, typically, text that clearly communicates a condition that will be set when the user clicks or touches it. Radio buttons always appear in groups of two or more and, while they can be individually selected, can only be deselected by selecting a different radio button in the same group (which deselects all other radio buttons in the group). The MDL radio component allows you to add display and click effects.\n\nRadio buttons are a common feature of most user interfaces, regardless of a site's content or function. Their design and use is therefore an important factor in the overall user experience. See the radio component's [Material Design specifications page](https://www.google.com/design/spec/components/selection-controls.html#selection-controls-radio-button) for details.\n\nThe enhanced radio component has a more vivid visual look than a standard radio button, and may be initially or programmatically *disabled*.\n\n### To include an MDL **radio** component:\n\n&nbsp;1. Code a `<label>` element and give it a `for` attribute whose value is the unique id of the radio button it will contain. The `for` attribute is optional when the `<input>` element is contained inside the `<label>` element, but is recommended for clarity.\n```html\n<label for=\"radio1\">\n...\n</label>\n```\n&nbsp;2. Inside the label, code an `<input>` element and give it a `type` attribute whose value is `\"radio\"`. Also give it an `id` attribute whose value matches the label's `for` attribute value, and a `name` attribute whose value identifies the radio button group. Optionally, give it a `value` attribute whose value provides some information about the radio button for scripting purposes.\n```html\n<label for=\"radio1\">\n  <input type=\"radio\" id=\"radio1\" name=\"flash\" value=\"on\">\n</label>\n```\n&nbsp;3. Also inside the label, after the radio button, code a `<span>` element containing the radio button's text caption.\n```html\n<label for=\"radio1\">\n  <input type=\"radio\" id=\"radio1\" name=\"flash\" value=\"on\">\n  <span>Always on</span>\n</label>\n```\n&nbsp;4. Add one or more MDL classes, separated by spaces, to the label, checkbox, and caption using the `class` attribute.\n```html\n<label for=\"radio1\" class=\"mdl-radio mdl-js-radio\">\n  <input type=\"radio\" id=\"radio1\" name=\"flash\" value=\"on\" class=\"mdl-radio__button\">\n  <span class=\"mdl-radio__label\">Always on</span>\n</label>\n```\n&nbsp;5. Repeat steps 1 through 4 for the other radio components in the group. For each one:\n* on the `label` element, specify a unique `for` attribute value\n* on the `input` element, specify an `id` attribute value that matches its `label` element's `for` attribute value\n* on the `input` element, specify the same `name` attribute value for all radio components in the group\n* optionally, on the `input` element, specify a unique `value` attribute value\n\nThe radio components are ready for use.\n\n#### Example\n\nA group of radio buttons to control a camera's flash setting.\n```html\n<label class=\"mdl-radio mdl-js-radio mdl-js-ripple-effect\" for=\"flash1\">\n  <input checked class=\"mdl-radio__button\" id=\"flash1\" name=\"flash\" type=\"radio\"\n   value=\"on\">\n  <span class=\"mdl-radio__label\">Always on</span>\n</label>\n<label class=\"mdl-radio mdl-js-radio mdl-js-ripple-effect\" for=\"flash2\">\n  <input class=\"mdl-radio__button\" id=\"flash2\" name=\"flash\" type=\"radio\" value=\"off\">\n  <span class=\"mdl-radio__label\">Always off</span>\n</label>\n<label class=\"mdl-radio mdl-js-radio mdl-js-ripple-effect\" for=\"flash3\">\n  <input class=\"mdl-radio__button\" id=\"flash3\" name=\"flash\" type=\"radio\" value=\"auto\">\n  <span class=\"mdl-radio__label\">Automatic</span>\n</label>\n```\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual and behavioral enhancements to the radio button. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-radio` | Defines label as an MDL component | Required on label element|\n| `mdl-js-radio` | Assigns basic MDL behavior to label | Required on label element |\n| `mdl-radio__button` | Applies basic MDL behavior to radio | Required on input element (radio button) |\n| `mdl-radio__label` | Applies basic MDL behavior to caption | Required on span element (caption) |\n| `mdl-js-ripple-effect` | Applies *ripple* click effect | Optional; goes on label element, not input element (radio button) |\n\n>**Note:** Disabled versions of all the available radio button types are provided, and are invoked with the standard HTML boolean attribute `disabled`. `<input type=\"radio\" id=\"radio5\" name=\"flash\" class=\"mdl-radio__button\" disabled>`\n>This attribute may be added or removed programmatically via scripting.\n"
  },
  {
    "path": "src/radio/_radio.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n@import \"../mixins\";\n\n.mdl-radio {\n  position: relative;\n\n  font-size: $radio-label-font-size;\n  line-height: $radio-label-height;\n\n  display: inline-block;\n\n  vertical-align: middle;\n\n  box-sizing: border-box;\n  height: $radio-label-height;\n  margin: 0;\n  padding-left: 0;\n\n  &.is-upgraded {\n    padding-left: $radio-button-size + $radio-padding;\n  }\n}\n\n.mdl-radio__button {\n  line-height: $radio-label-height;\n\n  .mdl-radio.is-upgraded & {\n    // Hide input element, while still making it respond to focus.\n    position: absolute;\n    width: 0;\n    height: 0;\n    margin: 0;\n    padding: 0;\n    opacity: 0;\n    -ms-appearance: none;\n    -moz-appearance: none;\n    -webkit-appearance: none;\n    appearance: none;\n    border: none;\n  }\n}\n\n.mdl-radio__outer-circle {\n  position: absolute;\n  top: $radio-top-offset;\n  left: 0;\n\n  display: inline-block;\n\n  box-sizing: border-box;\n  width: $radio-button-size;\n  height: $radio-button-size;\n  margin: 0;\n\n  cursor: pointer;\n\n  border: 2px solid $radio-off-color;\n  border-radius: 50%;\n\n  z-index: 2;\n\n  .mdl-radio.is-checked & {\n    border: 2px solid $radio-color;\n  }\n\n  fieldset[disabled] .mdl-radio,\n  .mdl-radio.is-disabled & {\n    border: 2px solid $radio-disabled-color;\n    cursor: auto;\n  }\n}\n\n.mdl-radio__inner-circle {\n  position: absolute;\n  z-index: 1;\n  margin: 0;\n  top: $radio-top-offset + $radio-inner-margin;\n  left: $radio-inner-margin;\n\n  box-sizing: border-box;\n  width: $radio-button-size - ($radio-inner-margin * 2);\n  height: $radio-button-size - ($radio-inner-margin * 2);\n\n  cursor: pointer;\n\n  @include material-animation-default(0.28s);\n  transition-property: transform;\n  transform: scale(0, 0);\n\n  border-radius: 50%;\n  background: $radio-color;\n\n  .mdl-radio.is-checked & {\n    transform: scale(1, 1);\n  }\n\n  fieldset[disabled] .mdl-radio &,\n  .mdl-radio.is-disabled & {\n    background: $radio-disabled-color;\n    cursor: auto;\n  }\n\n  .mdl-radio.is-focused & {\n    box-shadow: 0 0 0px 10px rgba(0, 0, 0, 0.1);\n  }\n}\n\n.mdl-radio__label {\n  cursor: pointer;\n\n  fieldset[disabled] .mdl-radio &,\n  .mdl-radio.is-disabled & {\n    color: $radio-disabled-color;\n    cursor: auto;\n  }\n}\n\n.mdl-radio__ripple-container {\n  position: absolute;\n  z-index: 2;\n  top: -(($radio-ripple-size - $radio-label-height) / 2);\n  left: -(($radio-ripple-size - $radio-button-size) / 2);\n\n  box-sizing: border-box;\n  width: $radio-ripple-size;\n  height: $radio-ripple-size;\n  border-radius: 50%;\n\n  cursor: pointer;\n\n  overflow: hidden;\n  -webkit-mask-image: -webkit-radial-gradient(circle, white, black);\n\n  & .mdl-ripple {\n    background: $radio-color;\n  }\n\n  fieldset[disabled] .mdl-radio &,\n  .mdl-radio.is-disabled & {\n    cursor: auto;\n  }\n\n  fieldset[disabled] .mdl-radio & .mdl-ripple,\n  .mdl-radio.is-disabled & .mdl-ripple {\n    background: transparent;\n  }\n}\n"
  },
  {
    "path": "src/radio/radio.js",
    "content": "/**\n * @license\n * Copyright 2015 Google Inc. 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 *      http://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(function() {\n  'use strict';\n\n  /**\n   * Class constructor for Radio MDL component.\n   * Implements MDL component design pattern defined at:\n   * https://github.com/jasonmayes/mdl-component-design-pattern\n   *\n   * @constructor\n   * @param {HTMLElement} element The element that will be upgraded.\n   */\n  var MaterialRadio = function MaterialRadio(element) {\n    this.element_ = element;\n\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialRadio'] = MaterialRadio;\n\n  /**\n   * Store constants in one place so they can be updated easily.\n   *\n   * @enum {string | number}\n   * @private\n   */\n  MaterialRadio.prototype.Constant_ = {\n    TINY_TIMEOUT: 0.001\n  };\n\n  /**\n   * Store strings for class names defined by this component that are used in\n   * JavaScript. This allows us to simply change it in one place should we\n   * decide to modify at a later date.\n   *\n   * @enum {string}\n   * @private\n   */\n  MaterialRadio.prototype.CssClasses_ = {\n    IS_FOCUSED: 'is-focused',\n    IS_DISABLED: 'is-disabled',\n    IS_CHECKED: 'is-checked',\n    IS_UPGRADED: 'is-upgraded',\n    JS_RADIO: 'mdl-js-radio',\n    RADIO_BTN: 'mdl-radio__button',\n    RADIO_OUTER_CIRCLE: 'mdl-radio__outer-circle',\n    RADIO_INNER_CIRCLE: 'mdl-radio__inner-circle',\n    RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n    RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n    RIPPLE_CONTAINER: 'mdl-radio__ripple-container',\n    RIPPLE_CENTER: 'mdl-ripple--center',\n    RIPPLE: 'mdl-ripple'\n  };\n\n  /**\n   * Handle change of state.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialRadio.prototype.onChange_ = function(event) {\n    // Since other radio buttons don't get change events, we need to look for\n    // them to update their classes.\n    var radios = document.getElementsByClassName(this.CssClasses_.JS_RADIO);\n    for (var i = 0; i < radios.length; i++) {\n      var button = radios[i].querySelector('.' + this.CssClasses_.RADIO_BTN);\n      // Different name == different group, so no point updating those.\n      if (button.getAttribute('name') === this.btnElement_.getAttribute('name')) {\n        if (typeof radios[i]['MaterialRadio'] !== 'undefined') {\n          radios[i]['MaterialRadio'].updateClasses_();\n        }\n      }\n    }\n  };\n\n  /**\n   * Handle focus.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialRadio.prototype.onFocus_ = function(event) {\n    this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n  };\n\n  /**\n   * Handle lost focus.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialRadio.prototype.onBlur_ = function(event) {\n    this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n  };\n\n  /**\n   * Handle mouseup.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialRadio.prototype.onMouseup_ = function(event) {\n    this.blur_();\n  };\n\n  /**\n   * Update classes.\n   *\n   * @private\n   */\n  MaterialRadio.prototype.updateClasses_ = function() {\n    this.checkDisabled();\n    this.checkToggleState();\n  };\n\n  /**\n   * Add blur.\n   *\n   * @private\n   */\n  MaterialRadio.prototype.blur_ = function() {\n\n    // TODO: figure out why there's a focus event being fired after our blur,\n    // so that we can avoid this hack.\n    window.setTimeout(function() {\n      this.btnElement_.blur();\n    }.bind(this), /** @type {number} */ (this.Constant_.TINY_TIMEOUT));\n  };\n\n  // Public methods.\n\n  /**\n   * Check the components disabled state.\n   *\n   * @public\n   */\n  MaterialRadio.prototype.checkDisabled = function() {\n    if (this.btnElement_.disabled) {\n      this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n    } else {\n      this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n    }\n  };\n  MaterialRadio.prototype['checkDisabled'] =\n      MaterialRadio.prototype.checkDisabled;\n\n  /**\n   * Check the components toggled state.\n   *\n   * @public\n   */\n  MaterialRadio.prototype.checkToggleState = function() {\n    if (this.btnElement_.checked) {\n      this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n    } else {\n      this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n    }\n  };\n  MaterialRadio.prototype['checkToggleState'] =\n      MaterialRadio.prototype.checkToggleState;\n\n  /**\n   * Disable radio.\n   *\n   * @public\n   */\n  MaterialRadio.prototype.disable = function() {\n    this.btnElement_.disabled = true;\n    this.updateClasses_();\n  };\n  MaterialRadio.prototype['disable'] = MaterialRadio.prototype.disable;\n\n  /**\n   * Enable radio.\n   *\n   * @public\n   */\n  MaterialRadio.prototype.enable = function() {\n    this.btnElement_.disabled = false;\n    this.updateClasses_();\n  };\n  MaterialRadio.prototype['enable'] = MaterialRadio.prototype.enable;\n\n  /**\n   * Check radio.\n   *\n   * @public\n   */\n  MaterialRadio.prototype.check = function() {\n    this.btnElement_.checked = true;\n    this.onChange_(null);\n  };\n  MaterialRadio.prototype['check'] = MaterialRadio.prototype.check;\n\n  /**\n   * Uncheck radio.\n   *\n   * @public\n   */\n  MaterialRadio.prototype.uncheck = function() {\n    this.btnElement_.checked = false;\n    this.onChange_(null);\n  };\n  MaterialRadio.prototype['uncheck'] = MaterialRadio.prototype.uncheck;\n\n  /**\n   * Initialize element.\n   */\n  MaterialRadio.prototype.init = function() {\n    if (this.element_) {\n      this.btnElement_ = this.element_.querySelector('.' +\n          this.CssClasses_.RADIO_BTN);\n\n      this.boundChangeHandler_ = this.onChange_.bind(this);\n      this.boundFocusHandler_ = this.onChange_.bind(this);\n      this.boundBlurHandler_ = this.onBlur_.bind(this);\n      this.boundMouseUpHandler_ = this.onMouseup_.bind(this);\n\n      var outerCircle = document.createElement('span');\n      outerCircle.classList.add(this.CssClasses_.RADIO_OUTER_CIRCLE);\n\n      var innerCircle = document.createElement('span');\n      innerCircle.classList.add(this.CssClasses_.RADIO_INNER_CIRCLE);\n\n      this.element_.appendChild(outerCircle);\n      this.element_.appendChild(innerCircle);\n\n      var rippleContainer;\n      if (this.element_.classList.contains(\n          this.CssClasses_.RIPPLE_EFFECT)) {\n        this.element_.classList.add(\n            this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n        rippleContainer = document.createElement('span');\n        rippleContainer.classList.add(\n            this.CssClasses_.RIPPLE_CONTAINER);\n        rippleContainer.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n        rippleContainer.classList.add(this.CssClasses_.RIPPLE_CENTER);\n        rippleContainer.addEventListener('mouseup', this.boundMouseUpHandler_);\n\n        var ripple = document.createElement('span');\n        ripple.classList.add(this.CssClasses_.RIPPLE);\n\n        rippleContainer.appendChild(ripple);\n        this.element_.appendChild(rippleContainer);\n      }\n\n      this.btnElement_.addEventListener('change', this.boundChangeHandler_);\n      this.btnElement_.addEventListener('focus', this.boundFocusHandler_);\n      this.btnElement_.addEventListener('blur', this.boundBlurHandler_);\n      this.element_.addEventListener('mouseup', this.boundMouseUpHandler_);\n\n      this.updateClasses_();\n      this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n    }\n  };\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  componentHandler.register({\n    constructor: MaterialRadio,\n    classAsString: 'MaterialRadio',\n    cssClass: 'mdl-js-radio',\n    widget: true\n  });\n})();\n"
  },
  {
    "path": "src/radio/snippets/radio-off.html",
    "content": "<label class=\"mdl-radio mdl-js-radio mdl-js-ripple-effect\" for=\"option-2\">\n  <input type=\"radio\" id=\"option-2\" class=\"mdl-radio__button\" name=\"options\" value=\"2\">\n  <span class=\"mdl-radio__label\">Second</span>\n</label>\n"
  },
  {
    "path": "src/radio/snippets/radio-on.html",
    "content": "<label class=\"mdl-radio mdl-js-radio mdl-js-ripple-effect\" for=\"option-1\">\n  <input type=\"radio\" id=\"option-1\" class=\"mdl-radio__button\" name=\"options\" value=\"1\" checked>\n  <span class=\"mdl-radio__label\">First</span>\n</label>\n"
  },
  {
    "path": "src/resets/_h5bp.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n\n/*\n * What follows is the result of much research on cross-browser styling.\n * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,\n * Kroc Camen, and the H5BP dev community and team.\n */\n\n/* ==========================================================================\n   Base styles: opinionated defaults\n   ========================================================================== */\n\nhtml {\n    color: $text-color-primary;\n    font-size: 1em;\n    line-height: 1.4;\n}\n\n/*\n * Remove text-shadow in selection highlight:\n * https://twitter.com/miketaylr/status/12228805301\n *\n * These selection rule sets have to be separate.\n * Customize the background color to match your design.\n */\n\n::selection {\n    background: #b3d4fc;\n    text-shadow: none;\n}\n\n/*\n * A better looking default horizontal rule\n */\n\nhr {\n    display: block;\n    height: 1px;\n    border: 0;\n    border-top: 1px solid #ccc;\n    margin: 1em 0;\n    padding: 0;\n}\n\n/*\n * Remove the gap between audio, canvas, iframes,\n * images, videos and the bottom of their containers:\n * https://github.com/h5bp/html5-boilerplate/issues/440\n */\n\naudio,\ncanvas,\niframe,\nimg,\nsvg,\nvideo {\n    vertical-align: middle;\n}\n\n/*\n * Remove default fieldset styles.\n */\n\nfieldset {\n    border: 0;\n    margin: 0;\n    padding: 0;\n}\n\n/*\n * Allow only vertical resizing of textareas.\n */\n\ntextarea {\n    resize: vertical;\n}\n\n/* ==========================================================================\n   Browser Upgrade Prompt\n   ========================================================================== */\n\n.browserupgrade {\n    margin: 0.2em 0;\n    background: #ccc;\n    color: #000;\n    padding: 0.2em 0;\n}\n\n/* ==========================================================================\n   Author's custom styles\n   ========================================================================== */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* ==========================================================================\n   Helper classes\n   ========================================================================== */\n\n/*\n * Hide visually and from screen readers:\n */\n\n.hidden {\n    display: none !important;\n}\n\n/*\n * Hide only visually, but have it available for screen readers:\n * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility\n */\n\n.visuallyhidden {\n    border: 0;\n    clip: rect(0 0 0 0);\n    height: 1px;\n    margin: -1px;\n    overflow: hidden;\n    padding: 0;\n    position: absolute;\n    width: 1px;\n}\n\n/*\n * Extends the .visuallyhidden class to allow the element\n * to be focusable when navigated to via the keyboard:\n * https://www.drupal.org/node/897638\n */\n\n.visuallyhidden.focusable:active,\n.visuallyhidden.focusable:focus {\n    clip: auto;\n    height: auto;\n    margin: 0;\n    overflow: visible;\n    position: static;\n    width: auto;\n}\n\n/*\n * Hide visually and from screen readers, but maintain layout\n */\n\n.invisible {\n    visibility: hidden;\n}\n\n/*\n * Clearfix: contain floats\n *\n * For modern browsers\n * 1. The space content is one way to avoid an Opera bug when the\n *    `contenteditable` attribute is included anywhere else in the document.\n *    Otherwise it causes space to appear at the top and bottom of elements\n *    that receive the `clearfix` class.\n * 2. The use of `table` rather than `block` is only necessary if using\n *    `:before` to contain the top-margins of child elements.\n */\n\n.clearfix:before,\n.clearfix:after {\n    content: \" \"; /* 1 */\n    display: table; /* 2 */\n}\n\n.clearfix:after {\n    clear: both;\n}\n\n/* ==========================================================================\n   EXAMPLE Media Queries for Responsive Design.\n   These examples override the primary ('mobile first') styles.\n   Modify as content requires.\n   ========================================================================== */\n\n@media only screen and (min-width: 35em) {\n    /* Style adjustments for viewports that meet the condition */\n}\n\n@media print,\n       (min-resolution: 1.25dppx),\n       (min-resolution: 120dpi) {\n    /* Style adjustments for high resolution devices */\n}\n\n/* ==========================================================================\n   Print styles.\n   Inlined to avoid the additional HTTP request:\n   http://www.phpied.com/delay-loading-your-print-css/\n   ========================================================================== */\n\n@media print {\n    *,\n    *:before,\n    *:after,\n    *:first-letter {\n        background: transparent !important;\n        color: #000 !important; /* Black prints faster: http://www.sanbeiji.com/archives/953 */\n        box-shadow: none !important;\n    }\n\n    a,\n    a:visited {\n        text-decoration: underline;\n    }\n\n    a[href]:after {\n        content: \" (\" attr(href) \")\";\n    }\n\n    abbr[title]:after {\n        content: \" (\" attr(title) \")\";\n    }\n\n    /*\n     * Don't show links that are fragment identifiers,\n     * or use the `javascript:` pseudo protocol\n     */\n\n    a[href^=\"#\"]:after,\n    a[href^=\"javascript:\"]:after {\n        content: \"\";\n    }\n\n    pre,\n    blockquote {\n        border: 1px solid #999;\n        page-break-inside: avoid;\n    }\n\n    /*\n     * Printing Tables:\n     * http://css-discuss.incutio.com/wiki/Printing_Tables\n     */\n\n    thead {\n        display: table-header-group;\n    }\n\n    tr,\n    img {\n        page-break-inside: avoid;\n    }\n\n    img {\n        max-width: 100% !important;\n    }\n\n    p,\n    h2,\n    h3 {\n        orphans: 3;\n        widows: 3;\n    }\n\n    h2,\n    h3 {\n        page-break-after: avoid;\n    }\n}\n"
  },
  {
    "path": "src/resets/_mobile.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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/* Remove the unwanted box around FAB buttons */\n/* More info: http://goo.gl/IPwKi */\na, .mdl-accordion, .mdl-button, .mdl-card, .mdl-checkbox, .mdl-dropdown-menu,\n.mdl-icon-toggle, .mdl-item, .mdl-radio, .mdl-slider, .mdl-switch, .mdl-tabs__tab {\n\n    -webkit-tap-highlight-color: transparent;\n    -webkit-tap-highlight-color: rgba(255, 255, 255, 0);\n}\n"
  },
  {
    "path": "src/resets/_resets.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"h5bp\";\n@import \"mobile\";\n\n/*\n * Make html take up the entire screen\n * Then set touch-action to avoid touch delay on mobile IE\n */\nhtml {\n  width: 100%;\n  height: 100%;\n  -ms-touch-action: manipulation;\n  touch-action: manipulation;\n}\n\n/*\n* Make body take up the entire screen\n* Remove body margin so layout containers don't cause extra overflow.\n*/\nbody {\n  width: 100%;\n  min-height: 100%;\n  margin: 0;\n}\n\n/*\n * Main display reset for IE support.\n * Source: http://weblog.west-wind.com/posts/2015/Jan/12/main-HTML5-Tag-not-working-in-Internet-Explorer-91011\n */\nmain {\n  display: block;\n}\n\n/*\n* Apply no display to elements with the hidden attribute.\n* IE 9 and 10 support.\n*/\n*[hidden] {\n  display: none !important;\n}\n"
  },
  {
    "path": "src/ripple/_ripple.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n\n.mdl-ripple {\n  background       : $ripple-bg-color;\n  border-radius    : 50%;\n  height           : 50px;\n  left             : 0;\n  opacity          : 0;\n  pointer-events   : none;\n  position         : absolute;\n  top              : 0;\n  transform        : translate(-50%, -50%);\n  width            : 50px;\n  overflow         : hidden;\n\n  &.is-animating {\n    transition: transform 0.3s $animation-curve-linear-out-slow-in,\n    width 0.3s $animation-curve-linear-out-slow-in,\n    height 0.3s $animation-curve-linear-out-slow-in,\n    opacity 0.6s $animation-curve-linear-out-slow-in;\n  }\n\n  &.is-visible {\n    opacity: 0.3;\n  }\n}\n"
  },
  {
    "path": "src/ripple/ripple.js",
    "content": "/**\n * @license\n * Copyright 2015 Google Inc. 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 *      http://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(function() {\n  'use strict';\n\n  /**\n   * Class constructor for Ripple MDL component.\n   * Implements MDL component design pattern defined at:\n   * https://github.com/jasonmayes/mdl-component-design-pattern\n   *\n   * @constructor\n   * @param {HTMLElement} element The element that will be upgraded.\n   */\n  var MaterialRipple = function MaterialRipple(element) {\n    this.element_ = element;\n\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialRipple'] = MaterialRipple;\n\n  /**\n   * Store constants in one place so they can be updated easily.\n   *\n   * @enum {string | number}\n   * @private\n   */\n  MaterialRipple.prototype.Constant_ = {\n    INITIAL_SCALE: 'scale(0.0001, 0.0001)',\n    INITIAL_SIZE: '1px',\n    INITIAL_OPACITY: '0.4',\n    FINAL_OPACITY: '0',\n    FINAL_SCALE: ''\n  };\n\n  /**\n   * Store strings for class names defined by this component that are used in\n   * JavaScript. This allows us to simply change it in one place should we\n   * decide to modify at a later date.\n   *\n   * @enum {string}\n   * @private\n   */\n  MaterialRipple.prototype.CssClasses_ = {\n    RIPPLE_CENTER: 'mdl-ripple--center',\n    RIPPLE_EFFECT_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n    RIPPLE: 'mdl-ripple',\n    IS_ANIMATING: 'is-animating',\n    IS_VISIBLE: 'is-visible'\n  };\n\n  /**\n   * Handle mouse / finger down on element.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialRipple.prototype.downHandler_ = function(event) {\n    if (!this.rippleElement_.style.width && !this.rippleElement_.style.height) {\n      var rect = this.element_.getBoundingClientRect();\n      this.boundHeight = rect.height;\n      this.boundWidth = rect.width;\n      this.rippleSize_ = Math.sqrt(rect.width * rect.width +\n          rect.height * rect.height) * 2 + 2;\n      this.rippleElement_.style.width = this.rippleSize_ + 'px';\n      this.rippleElement_.style.height = this.rippleSize_ + 'px';\n    }\n\n    this.rippleElement_.classList.add(this.CssClasses_.IS_VISIBLE);\n\n    if (event.type === 'mousedown' && this.ignoringMouseDown_) {\n      this.ignoringMouseDown_ = false;\n    } else {\n      if (event.type === 'touchstart') {\n        this.ignoringMouseDown_ = true;\n      }\n      var frameCount = this.getFrameCount();\n      if (frameCount > 0) {\n        return;\n      }\n      this.setFrameCount(1);\n      var bound = event.currentTarget.getBoundingClientRect();\n      var x;\n      var y;\n      // Check if we are handling a keyboard click.\n      if (event.clientX === 0 && event.clientY === 0) {\n        x = Math.round(bound.width / 2);\n        y = Math.round(bound.height / 2);\n      } else {\n        var clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\n        var clientY = event.clientY !== undefined ? event.clientY : event.touches[0].clientY;\n        x = Math.round(clientX - bound.left);\n        y = Math.round(clientY - bound.top);\n      }\n      this.setRippleXY(x, y);\n      this.setRippleStyles(true);\n      window.requestAnimationFrame(this.animFrameHandler.bind(this));\n    }\n  };\n\n  /**\n   * Handle mouse / finger up on element.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialRipple.prototype.upHandler_ = function(event) {\n    // Don't fire for the artificial \"mouseup\" generated by a double-click.\n    if (event && event.detail !== 2) {\n      // Allow a repaint to occur before removing this class, so the animation\n      // shows for tap events, which seem to trigger a mouseup too soon after\n      // mousedown.\n      window.setTimeout(function() {\n        this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE);\n      }.bind(this), 0);\n    }\n  };\n\n  /**\n   * Initialize element.\n   */\n  MaterialRipple.prototype.init = function() {\n    if (this.element_) {\n      var recentering =\n          this.element_.classList.contains(this.CssClasses_.RIPPLE_CENTER);\n      if (!this.element_.classList.contains(\n          this.CssClasses_.RIPPLE_EFFECT_IGNORE_EVENTS)) {\n        this.rippleElement_ = this.element_.querySelector('.' +\n            this.CssClasses_.RIPPLE);\n        this.frameCount_ = 0;\n        this.rippleSize_ = 0;\n        this.x_ = 0;\n        this.y_ = 0;\n\n        // Touch start produces a compat mouse down event, which would cause a\n        // second ripples. To avoid that, we use this property to ignore the first\n        // mouse down after a touch start.\n        this.ignoringMouseDown_ = false;\n\n        this.boundDownHandler = this.downHandler_.bind(this);\n        this.element_.addEventListener('mousedown',\n          this.boundDownHandler);\n        this.element_.addEventListener('touchstart',\n            this.boundDownHandler);\n\n        this.boundUpHandler = this.upHandler_.bind(this);\n        this.element_.addEventListener('mouseup', this.boundUpHandler);\n        this.element_.addEventListener('mouseleave', this.boundUpHandler);\n        this.element_.addEventListener('touchend', this.boundUpHandler);\n        this.element_.addEventListener('blur', this.boundUpHandler);\n\n        /**\n         * Getter for frameCount_.\n         * @return {number} the frame count.\n         */\n        this.getFrameCount = function() {\n          return this.frameCount_;\n        };\n\n        /**\n         * Setter for frameCount_.\n         * @param {number} fC the frame count.\n         */\n        this.setFrameCount = function(fC) {\n          this.frameCount_ = fC;\n        };\n\n        /**\n         * Getter for rippleElement_.\n         * @return {Element} the ripple element.\n         */\n        this.getRippleElement = function() {\n          return this.rippleElement_;\n        };\n\n        /**\n         * Sets the ripple X and Y coordinates.\n         * @param  {number} newX the new X coordinate\n         * @param  {number} newY the new Y coordinate\n         */\n        this.setRippleXY = function(newX, newY) {\n          this.x_ = newX;\n          this.y_ = newY;\n        };\n\n        /**\n         * Sets the ripple styles.\n         * @param  {boolean} start whether or not this is the start frame.\n         */\n        this.setRippleStyles = function(start) {\n          if (this.rippleElement_ !== null) {\n            var transformString;\n            var scale;\n            var size;\n            var offset = 'translate(' + this.x_ + 'px, ' + this.y_ + 'px)';\n\n            if (start) {\n              scale = this.Constant_.INITIAL_SCALE;\n              size = this.Constant_.INITIAL_SIZE;\n            } else {\n              scale = this.Constant_.FINAL_SCALE;\n              size = this.rippleSize_ + 'px';\n              if (recentering) {\n                offset = 'translate(' + this.boundWidth / 2 + 'px, ' +\n                  this.boundHeight / 2 + 'px)';\n              }\n            }\n\n            transformString = 'translate(-50%, -50%) ' + offset + scale;\n\n            this.rippleElement_.style.webkitTransform = transformString;\n            this.rippleElement_.style.msTransform = transformString;\n            this.rippleElement_.style.transform = transformString;\n\n            if (start) {\n              this.rippleElement_.classList.remove(this.CssClasses_.IS_ANIMATING);\n            } else {\n              this.rippleElement_.classList.add(this.CssClasses_.IS_ANIMATING);\n            }\n          }\n        };\n\n        /**\n         * Handles an animation frame.\n         */\n        this.animFrameHandler = function() {\n          if (this.frameCount_-- > 0) {\n            window.requestAnimationFrame(this.animFrameHandler.bind(this));\n          } else {\n            this.setRippleStyles(false);\n          }\n        };\n      }\n    }\n  };\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  componentHandler.register({\n    constructor: MaterialRipple,\n    classAsString: 'MaterialRipple',\n    cssClass: 'mdl-js-ripple-effect',\n    widget: false\n  });\n})();\n"
  },
  {
    "path": "src/shadow/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **shadow** is not a component in the same sense as an MDL card, menu, or textbox; it is a visual effect that can be assigned to a user interface element. The effect simulates a three-dimensional positioning of the element, as though it is slightly raised above the surface it rests upon &mdash; a positive *z-axis* value, in user interface terms. The shadow starts at the edges of the element and gradually fades outward, providing a realistic 3-D effect.\n\nShadows are a convenient and intuitive means of distinguishing an element from its surroundings. A shadow can draw the user's eye to an object and emphasize the object's importance, uniqueness, or immediacy.\n\nShadows are a well-established feature in user interfaces, and provide users with a visual clue to an object's intended use or value. Their design and use is an important factor in the overall user experience.\n\n### To include an MDL **shadow** effect:\n\n&nbsp;1. Code an element, such as a `<div>`, that is to receive the shadow effect; size and style it as desired, and add any required content.\n```html\n<div>\nSome content\n</div>\n```\n&nbsp;2. Add an MDL shadow class to the element using the `class` attribute.\n```html\n<div class=\"mdl-shadow--4dp\">\nSome content\n</div>\n```\n\nThe shadowed component is ready for use.\n\n#### Examples\n\nA div with a user-specified class and a small shadow.\n\n```html\n<div class=\"my-shadow-card mdl-shadow--2dp\">Small shadow</div>\n```\n\nA div with a user-specified class and a medium-large shadow.\n\n```html\n<div class=\"my-shadow-card mdl-shadow--6dp\">Medium-large shadow</div>\n```\n\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual shadows to the element. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-shadow--2dp` | Assigns a small shadow to the object | Optional; if omitted, no shadow is present |\n| `mdl-shadow--3dp` | Assigns a medium-small shadow to the object | Optional; if omitted, no shadow is present |\n| `mdl-shadow--4dp` | Assigns a medium shadow to the object | Optional; if omitted, no shadow is present |\n| `mdl-shadow--6dp` | Assigns a medium-large shadow to the object | Optional; if omitted, no shadow is present |\n| `mdl-shadow--8dp` | Assigns a large shadow to the object | Optional; if omitted, no shadow is present |\n| `mdl-shadow--16dp` | Assigns an extra-large shadow to the object | Optional; if omitted, no shadow is present|\n"
  },
  {
    "path": "src/shadow/_shadow.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n@import \"../mixins\";\n\n.mdl-shadow--2dp {\n  @include shadow-2dp();\n}\n\n.mdl-shadow--3dp {\n  @include shadow-3dp();\n}\n\n.mdl-shadow--4dp {\n  @include shadow-4dp();\n}\n\n.mdl-shadow--6dp {\n  @include shadow-6dp();\n}\n\n.mdl-shadow--8dp {\n  @include shadow-8dp();\n}\n\n.mdl-shadow--16dp {\n  @include shadow-16dp();\n}\n\n.mdl-shadow--24dp {\n  @include shadow-24dp();\n}\n"
  },
  {
    "path": "src/shadow/demo.css",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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.demo-page--shadow .demo-preview-block {\n  height: 100px;\n}\n\n.demo-shadow-card {\n  background-color: #fff;\n  border-radius: 2px;\n  display: block;\n  height: 72px;\n  margin-bottom: 20px;\n  margin-right: 32px;\n  padding: 10px;\n  text-align: center;\n  float: left;\n  color: #9E9E9E;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  transition-property: opacity, transform;\n  width: 72px;\n}\n\n@media screen and (max-width: 360px ) {\n  .demo-shadow-card {\n    width: 27px;\n  }\n}\n"
  },
  {
    "path": "src/shadow/demo.html",
    "content": "  <div class=\"demo-preview-block demo-page--shadow\">\n    <div class=\"demo-shadow-card mdl-shadow--2dp\">2dp</div>\n    <div class=\"demo-shadow-card mdl-shadow--3dp\">3dp</div>\n    <div class=\"demo-shadow-card mdl-shadow--4dp\">4dp</div>\n    <div class=\"demo-shadow-card mdl-shadow--6dp\">6dp</div>\n    <div class=\"demo-shadow-card mdl-shadow--8dp\">8dp</div>\n    <div class=\"demo-shadow-card mdl-shadow--16dp\">16dp</div>\n  </div>\n"
  },
  {
    "path": "src/slider/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **slider** component is an enhanced version of the new HTML5 `<input type=\"range\">` element. A slider consists of a horizontal line upon which sits a small, movable disc (the *thumb*) and, typically, text that clearly communicates a value that will be set when the user moves it.\n\nSliders are a fairly new feature in user interfaces, and allow users to choose a value from a predetermined range by moving the thumb through the range (lower values to the left, higher values to the right). Their design and use is an important factor in the overall user experience. See the slider component's [Material Design specifications page](http://www.google.com/design/spec/components/sliders.html) for details.\n\nThe enhanced slider component may be initially or programmatically *disabled*.\n\n### To include an MDL **slider** component:\n\n&nbsp;1. Code a `<p>` paragraph element and style it as desired. Include a CSS `width` property (directly or via a CSS class), which determines the slider's size.\n```html\n<p style=\"width:300px\">\n...\n</p>\n```\n&nbsp;2. Inside the paragraph container, code an `<input>` element and give it a `type` attribute whose value is `\"range\"`. Also give it an `id` attribute to make it available for scripting, and `min` and `max` attributes whose values specify the slider's range. Give it a `value` attribute whose value sets the initial thumb position (optional; if omitted, defaults to 50% of the maximum), and a `step` attribute whose value specifies the increment by which the thumb moves (also optional; if omitted, defaults to 1). Finally, give it an event handler to be executed when the user changes the slider's value.\n```html\n<p style=\"width:300px\">\n  <input type=\"range\" id=\"s1\" min=\"0\" max=\"10\" value=\"4\" step=\"2\">\n</p>\n```\n&nbsp;3. Add one or more MDL classes, separated by spaces, to the slider using the `class` attribute.\n```html\n<p style=\"width:300px\">\n  <input class=\"mdl-slider mdl-js-slider\" type=\"range\" id=\"s1\" min=\"0\" max=\"10\" value=\"4\" step=\"2\">\n</p>\n```\n\nThe slider component is ready for use.\n\n#### Example\n\nA slider that controls volume.\n```html\n<p style=\"width:300px\">\n<input class=\"mdl-slider mdl-js-slider\" type=\"range\" id=\"s1\" min=\"0\" max=\"10\" value=\"4\" step=\"2\">\n</p>\n```\n\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual and behavioral enhancements to the slider. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-slider` | Defines input element as an MDL component | Required |\n| `mdl-js-slider` | Assigns basic MDL behavior to input element | Required |\n\n>**Note:** A disabled version of the slider is provided, and is invoked with the standard HTML boolean attribute `disabled`. `<input class=\"mdl-slider mdl-js-slider\" type=\"range\" id=\"s1\" min=\"0\" max=\"10\" value=\"4\" step=\"2\" disabled>`\n>This attribute may be added or removed programmatically via scripting.\n\n>**Note:** Although the *value* attribute is used to set a slider's initial value, it should not be used\nto modify the value programmatically; instead, use the MDL `change()` method. For example, assuming\nthat *slider1* is a slider object and *newvalue* is a variable containing the desired value, do not\nuse `slider1.value = newvalue`; instead, use `slider1.MaterialSlider.change(newvalue)`.\n\n## License\n\nCopyright Google, 2015. Licensed under an Apache-2 license.\n"
  },
  {
    "path": "src/slider/_slider.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n\n// Some CSS magic to target only IE.\n_:-ms-input-placeholder, :root .mdl-slider.mdl-slider.is-upgraded {\n  -ms-appearance: none;\n  // The thumb can't overflow the track or the rest of the control in IE, so we\n  // need to make it tall enough to contain the largest version of the thumb.\n  height: 32px;\n  margin: 0;\n}\n\n// Slider component (styled input[type=range]).\n.mdl-slider {\n  width: calc(100% - 40px);\n  margin: 0 20px;\n\n  &.is-upgraded {\n    -webkit-appearance: none;\n    -moz-appearance: none;\n    appearance: none;\n    height: 2px;\n    background: transparent;\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    user-select: none;\n    outline: 0;\n    padding: 0;\n    color: $range-color;\n    align-self: center;\n    z-index: 1;\n    cursor: pointer;\n\n\n    // Disable default focus on Firefox.\n    &::-moz-focus-outer {\n      border: 0;\n    }\n\n    // Disable tooltip on IE.\n    &::-ms-tooltip {\n      display: none;\n    }\n\n\n    /**************************** Tracks ****************************/\n    &::-webkit-slider-runnable-track {\n      background: transparent;\n    }\n\n    &::-moz-range-track {\n      background: transparent;\n      border: none;\n    }\n\n    &::-ms-track {\n      background: none;\n      color: transparent;\n      height: 2px;\n      width: 100%;\n      border: none;\n    }\n\n    &::-ms-fill-lower {\n      padding: 0;\n      // Margin on -ms-track doesn't work right, so we use gradients on the\n      // fills.\n      background: linear-gradient(to right,\n      transparent,\n      transparent 16px,\n      $range-color 16px,\n      $range-color 0);\n    }\n\n    &::-ms-fill-upper {\n      padding: 0;\n      // Margin on -ms-track doesn't work right, so we use gradients on the\n      // fills.\n      background: linear-gradient(to left,\n      transparent,\n      transparent 16px,\n      $range-bg-color 16px,\n      $range-bg-color 0);\n    }\n\n\n    /**************************** Thumbs ****************************/\n    &::-webkit-slider-thumb {\n      -webkit-appearance: none;\n      width: 12px;\n      height: 12px;\n      box-sizing: border-box;\n      border-radius: 50%;\n      background: $range-color;\n      border: none;\n      transition: transform 0.18s $animation-curve-default,\n      border 0.18s $animation-curve-default,\n      box-shadow 0.18s $animation-curve-default,\n      background 0.28s $animation-curve-default;\n    }\n\n    &::-moz-range-thumb {\n      -moz-appearance: none;\n      width: 12px;\n      height: 12px;\n      box-sizing: border-box;\n      border-radius: 50%;\n      background-image: none;\n      background: $range-color;\n      border: none;\n      // -moz-range-thumb doesn't currently support transitions.\n    }\n\n    &:focus:not(:active)::-webkit-slider-thumb {\n      box-shadow: 0 0 0 10px $range-faded-color;\n    }\n\n    &:focus:not(:active)::-moz-range-thumb {\n      box-shadow: 0 0 0 10px $range-faded-color;\n    }\n\n    &:active::-webkit-slider-thumb {\n      background-image: none;\n      background: $range-color;\n      transform: scale(1.5);\n    }\n\n    &:active::-moz-range-thumb {\n      background-image: none;\n      background: $range-color;\n      transform: scale(1.5);\n    }\n\n    &::-ms-thumb {\n      width: 32px;\n      height: 32px;\n      border: none;\n      border-radius: 50%;\n      background: $range-color;\n      transform: scale(0.375);\n      // -ms-thumb doesn't currently support transitions, but leaving this here\n      // in case support ever gets added.\n      transition: transform 0.18s $animation-curve-default,\n      background 0.28s $animation-curve-default;\n    }\n\n    &:focus:not(:active)::-ms-thumb {\n      background: radial-gradient(circle closest-side,\n      $range-color 0%,\n      $range-color 37.5%,\n      $range-faded-color 37.5%,\n      $range-faded-color 100%);\n      transform: scale(1);\n    }\n\n    &:active::-ms-thumb {\n      background: $range-color;\n      transform: scale(0.5625);\n    }\n\n\n    /**************************** 0-value ****************************/\n    &.is-lowest-value::-webkit-slider-thumb {\n      border: 2px solid $range-bg-color;\n      background: transparent;\n    }\n\n    &.is-lowest-value::-moz-range-thumb {\n      border: 2px solid $range-bg-color;\n      background: transparent;\n    }\n\n    &.is-lowest-value +\n        .mdl-slider__background-flex > .mdl-slider__background-upper {\n      left: 6px;\n    }\n\n    &.is-lowest-value:focus:not(:active)::-webkit-slider-thumb {\n      box-shadow: 0 0 0 10px $range-bg-focus-color;\n      background: $range-bg-focus-color;\n    }\n\n    &.is-lowest-value:focus:not(:active)::-moz-range-thumb {\n      box-shadow: 0 0 0 10px $range-bg-focus-color;\n      background: $range-bg-focus-color;\n    }\n\n    &.is-lowest-value:active::-webkit-slider-thumb {\n      border: 1.6px solid $range-bg-color;\n      transform: scale(1.5);\n    }\n\n    &.is-lowest-value:active +\n        .mdl-slider__background-flex > .mdl-slider__background-upper {\n      left: 9px;\n    }\n\n    &.is-lowest-value:active::-moz-range-thumb {\n      border: 1.5px solid $range-bg-color;\n      transform: scale(1.5);\n    }\n\n    &.is-lowest-value::-ms-thumb {\n      background: radial-gradient(circle closest-side,\n      transparent 0%,\n      transparent 66.67%,\n      $range-bg-color 66.67%,\n      $range-bg-color 100%);\n    }\n\n    &.is-lowest-value:focus:not(:active)::-ms-thumb {\n      background: radial-gradient(circle closest-side,\n      $range-bg-focus-color 0%,\n      $range-bg-focus-color 25%,\n      $range-bg-color 25%,\n      $range-bg-color 37.5%,\n      $range-bg-focus-color 37.5%,\n      $range-bg-focus-color 100%);\n      transform: scale(1);\n    }\n\n    &.is-lowest-value:active::-ms-thumb {\n      transform: scale(0.5625);\n      background: radial-gradient(circle closest-side,\n      transparent 0%,\n      transparent 77.78%,\n      $range-bg-color 77.78%,\n      $range-bg-color 100%);\n    }\n\n    &.is-lowest-value::-ms-fill-lower {\n      background: transparent;\n    }\n\n    &.is-lowest-value::-ms-fill-upper {\n      margin-left: 6px;\n    }\n\n    &.is-lowest-value:active::-ms-fill-upper {\n      margin-left: 9px;\n    }\n\n    /**************************** Disabled ****************************/\n\n    &:disabled:focus::-webkit-slider-thumb,\n    &:disabled:active::-webkit-slider-thumb,\n    &:disabled::-webkit-slider-thumb {\n      transform: scale(0.667);\n      background: $range-bg-color;\n    }\n\n    &:disabled:focus::-moz-range-thumb,\n    &:disabled:active::-moz-range-thumb,\n    &:disabled::-moz-range-thumb {\n      transform: scale(0.667);\n      background: $range-bg-color;\n    }\n\n    &:disabled +\n        .mdl-slider__background-flex > .mdl-slider__background-lower {\n      background-color: $range-bg-color;\n      left: -6px;\n    }\n\n    &:disabled +\n        .mdl-slider__background-flex > .mdl-slider__background-upper {\n      left: 6px;\n    }\n\n    &.is-lowest-value:disabled:focus::-webkit-slider-thumb,\n    &.is-lowest-value:disabled:active::-webkit-slider-thumb,\n    &.is-lowest-value:disabled::-webkit-slider-thumb {\n      border: 3px solid $range-bg-color;\n      background: transparent;\n      transform: scale(0.667);\n    }\n\n    &.is-lowest-value:disabled:focus::-moz-range-thumb,\n    &.is-lowest-value:disabled:active::-moz-range-thumb,\n    &.is-lowest-value:disabled::-moz-range-thumb {\n      border: 3px solid $range-bg-color;\n      background: transparent;\n      transform: scale(0.667);\n    }\n\n    &.is-lowest-value:disabled:active +\n        .mdl-slider__background-flex > .mdl-slider__background-upper {\n      left: 6px;\n    }\n\n    &:disabled:focus::-ms-thumb,\n    &:disabled:active::-ms-thumb,\n    &:disabled::-ms-thumb {\n      transform: scale(0.25);\n      background: $range-bg-color;\n    }\n\n    &.is-lowest-value:disabled:focus::-ms-thumb,\n    &.is-lowest-value:disabled:active::-ms-thumb,\n    &.is-lowest-value:disabled::-ms-thumb {\n      transform: scale(0.25);\n      background: radial-gradient(circle closest-side,\n      transparent 0%,\n      transparent 50%,\n      $range-bg-color 50%,\n      $range-bg-color 100%);\n    }\n\n    &:disabled::-ms-fill-lower {\n      margin-right: 6px;\n      background: linear-gradient(to right,\n      transparent,\n      transparent 25px,\n      $range-bg-color 25px,\n      $range-bg-color 0);\n    }\n\n    &:disabled::-ms-fill-upper {\n      margin-left: 6px;\n    }\n\n    &.is-lowest-value:disabled:active::-ms-fill-upper {\n      margin-left: 6px;\n    }\n  }\n}\n\n  // Since we need to specify a height of 32px in IE, we add a class here for a\n  // container that brings it back to a reasonable height.\n  .mdl-slider__ie-container {\n    height: 18px;\n    overflow: visible;\n    border: none;\n    margin: none;\n    padding: none;\n  }\n\n  // We use a set of divs behind the track to style it in all non-IE browsers.\n  // This one contains both the background and the slider.\n  .mdl-slider__container {\n    height: 18px;\n    position: relative;\n    background: none;\n    display: flex;\n    flex-direction: row;\n  }\n\n  // This one sets up a flex box for the styled upper and lower portions of the\n  // the slider track.\n  .mdl-slider__background-flex {\n    background: transparent;\n    position: absolute;\n    height: 2px;\n    width: calc(100% - 52px);\n    top: 50%;\n    left: 0;\n    margin: 0 26px;\n    display: flex;\n    overflow: hidden;\n    border: 0;\n    padding: 0;\n    transform: translate(0, -1px);\n  }\n\n  // This one styles the lower part of the slider track.\n  .mdl-slider__background-lower {\n    background: $range-color;\n    flex: 0;\n    position: relative;\n    border: 0;\n    padding: 0;\n  }\n\n  // This one styles the upper part of the slider track.\n  .mdl-slider__background-upper {\n    background: $range-bg-color;\n    flex: 0;\n    position: relative;\n    border: 0;\n    padding: 0;\n    transition: left 0.18s $animation-curve-default\n  }\n"
  },
  {
    "path": "src/slider/slider.js",
    "content": "/**\n * @license\n * Copyright 2015 Google Inc. 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 *      http://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(function() {\n  'use strict';\n\n  /**\n   * Class constructor for Slider MDL component.\n   * Implements MDL component design pattern defined at:\n   * https://github.com/jasonmayes/mdl-component-design-pattern\n   *\n   * @constructor\n   * @param {HTMLElement} element The element that will be upgraded.\n   */\n  var MaterialSlider = function MaterialSlider(element) {\n    this.element_ = element;\n    // Browser feature detection.\n    this.isIE_ = window.navigator.msPointerEnabled;\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialSlider'] = MaterialSlider;\n\n  /**\n   * Store constants in one place so they can be updated easily.\n   *\n   * @enum {string | number}\n   * @private\n   */\n  MaterialSlider.prototype.Constant_ = {\n    // None for now.\n  };\n\n  /**\n   * Store strings for class names defined by this component that are used in\n   * JavaScript. This allows us to simply change it in one place should we\n   * decide to modify at a later date.\n   *\n   * @enum {string}\n   * @private\n   */\n  MaterialSlider.prototype.CssClasses_ = {\n    IE_CONTAINER: 'mdl-slider__ie-container',\n    SLIDER_CONTAINER: 'mdl-slider__container',\n    BACKGROUND_FLEX: 'mdl-slider__background-flex',\n    BACKGROUND_LOWER: 'mdl-slider__background-lower',\n    BACKGROUND_UPPER: 'mdl-slider__background-upper',\n    IS_LOWEST_VALUE: 'is-lowest-value',\n    IS_UPGRADED: 'is-upgraded'\n  };\n\n  /**\n   * Handle input on element.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialSlider.prototype.onInput_ = function(event) {\n    this.updateValueStyles_();\n  };\n\n  /**\n   * Handle change on element.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialSlider.prototype.onChange_ = function(event) {\n    this.updateValueStyles_();\n  };\n\n  /**\n   * Handle mousedown on container element.\n   * This handler is purpose is to not require the use to click\n   * exactly on the 2px slider element, as FireFox seems to be very\n   * strict about this.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   * @suppress {missingProperties}\n   */\n  MaterialSlider.prototype.onContainerMouseDown_ = function(event) {\n    // If this click is not on the parent element (but rather some child)\n    // ignore. It may still bubble up.\n    if (event.target !== this.element_.parentElement) {\n      return;\n    }\n\n    // Discard the original event and create a new event that\n    // is on the slider element.\n    event.preventDefault();\n    var newEvent = new MouseEvent('mousedown', {\n      target: event.target,\n      buttons: event.buttons,\n      clientX: event.clientX,\n      clientY: this.element_.getBoundingClientRect().y\n    });\n    this.element_.dispatchEvent(newEvent);\n  };\n\n  /**\n   * Handle updating of values.\n   *\n   * @private\n   */\n  MaterialSlider.prototype.updateValueStyles_ = function() {\n    // Calculate and apply percentages to div structure behind slider.\n    var fraction = (this.element_.value - this.element_.min) /\n        (this.element_.max - this.element_.min);\n\n    if (fraction === 0) {\n      this.element_.classList.add(this.CssClasses_.IS_LOWEST_VALUE);\n    } else {\n      this.element_.classList.remove(this.CssClasses_.IS_LOWEST_VALUE);\n    }\n\n    if (!this.isIE_) {\n      this.backgroundLower_.style.flex = fraction;\n      this.backgroundLower_.style.webkitFlex = fraction;\n      this.backgroundUpper_.style.flex = 1 - fraction;\n      this.backgroundUpper_.style.webkitFlex = 1 - fraction;\n    }\n  };\n\n  // Public methods.\n\n  /**\n   * Disable slider.\n   *\n   * @public\n   */\n  MaterialSlider.prototype.disable = function() {\n    this.element_.disabled = true;\n  };\n  MaterialSlider.prototype['disable'] = MaterialSlider.prototype.disable;\n\n  /**\n   * Enable slider.\n   *\n   * @public\n   */\n  MaterialSlider.prototype.enable = function() {\n\n    this.element_.disabled = false;\n  };\n  MaterialSlider.prototype['enable'] = MaterialSlider.prototype.enable;\n\n  /**\n   * Update slider value.\n   *\n   * @param {number} value The value to which to set the control (optional).\n   * @public\n   */\n  MaterialSlider.prototype.change = function(value) {\n\n    if (typeof value !== 'undefined') {\n      this.element_.value = value;\n    }\n    this.updateValueStyles_();\n  };\n  MaterialSlider.prototype['change'] = MaterialSlider.prototype.change;\n\n  /**\n   * Initialize element.\n   */\n  MaterialSlider.prototype.init = function() {\n\n    if (this.element_) {\n      if (this.isIE_) {\n        // Since we need to specify a very large height in IE due to\n        // implementation limitations, we add a parent here that trims it down to\n        // a reasonable size.\n        var containerIE = document.createElement('div');\n        containerIE.classList.add(this.CssClasses_.IE_CONTAINER);\n        this.element_.parentElement.insertBefore(containerIE, this.element_);\n        this.element_.parentElement.removeChild(this.element_);\n        containerIE.appendChild(this.element_);\n      } else {\n        // For non-IE browsers, we need a div structure that sits behind the\n        // slider and allows us to style the left and right sides of it with\n        // different colors.\n        var container = document.createElement('div');\n        container.classList.add(this.CssClasses_.SLIDER_CONTAINER);\n        this.element_.parentElement.insertBefore(container, this.element_);\n        this.element_.parentElement.removeChild(this.element_);\n        container.appendChild(this.element_);\n        var backgroundFlex = document.createElement('div');\n        backgroundFlex.classList.add(this.CssClasses_.BACKGROUND_FLEX);\n        container.appendChild(backgroundFlex);\n        this.backgroundLower_ = document.createElement('div');\n        this.backgroundLower_.classList.add(this.CssClasses_.BACKGROUND_LOWER);\n        backgroundFlex.appendChild(this.backgroundLower_);\n        this.backgroundUpper_ = document.createElement('div');\n        this.backgroundUpper_.classList.add(this.CssClasses_.BACKGROUND_UPPER);\n        backgroundFlex.appendChild(this.backgroundUpper_);\n      }\n\n      this.boundInputHandler = this.onInput_.bind(this);\n      this.boundChangeHandler = this.onChange_.bind(this);\n      this.boundContainerMouseDownHandler = this.onContainerMouseDown_.bind(this);\n      this.element_.addEventListener('input', this.boundInputHandler);\n      this.element_.addEventListener('change', this.boundChangeHandler);\n      this.element_.parentElement.addEventListener('mousedown', this.boundContainerMouseDownHandler);\n\n      this.updateValueStyles_();\n      this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n    }\n  };\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  componentHandler.register({\n    constructor: MaterialSlider,\n    classAsString: 'MaterialSlider',\n    cssClass: 'mdl-js-slider',\n    widget: true\n  });\n})();\n"
  },
  {
    "path": "src/slider/snippets/demo.html",
    "content": "  <div class=\"demo-preview-block\">\n    <p>\n      <input class=\"mdl-slider mdl-js-slider\" type=\"range\"\n        min=\"0\" max=\"100\" value=\"0\" tabindex=\"0\">\n    </p>\n    <p>\n      <input class=\"mdl-slider mdl-js-slider\" type=\"range\"\n        min=\"0\" max=\"100\" value=\"10\" tabindex=\"0\">\n    </p>\n  </div>\n"
  },
  {
    "path": "src/slider/snippets/slider-default-demo.html",
    "content": "<style>\n  .demo-slider__slider-default .mdl-slider {\n    width: 30vw;\n    max-width: 260px;\n  }\n</style>\n{% include \"slider-default.html\" %}\n"
  },
  {
    "path": "src/slider/snippets/slider-default.html",
    "content": "<!-- Default Slider -->\n<input class=\"mdl-slider mdl-js-slider\" type=\"range\"\n  min=\"0\" max=\"100\" value=\"0\" tabindex=\"0\">\n"
  },
  {
    "path": "src/slider/snippets/slider-starting-value-demo.html",
    "content": "<style>\n  .demo-slider__slider-starting-value .mdl-slider {\n    width: 30vw;\n    max-width: 260px;\n  }\n</style>\n\n{% include \"slider-starting-value.html\" %}\n"
  },
  {
    "path": "src/slider/snippets/slider-starting-value.html",
    "content": "<!-- Slider with Starting Value -->\n<input class=\"mdl-slider mdl-js-slider\" type=\"range\"\n  min=\"0\" max=\"100\" value=\"25\" tabindex=\"0\">\n"
  },
  {
    "path": "src/snackbar/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **snackbar** component is a container used to notify a user of an operation's status.\nIt displays at the bottom of the screen.\nA snackbar may contain an action button to execute a command for the user.\nActions should undo the committed action or retry it if it failed for example.\nActions should not be to close the snackbar.\nBy not providing an action, the snackbar becomes a **toast** component.\n\n## Basic Usage:\n\nStart a snackbar with a container div element.\nOn that container define the `mdl-js-snackbar` and `mdl-snackbar` classes.\nIt is also beneficial to add the aria live and atomic values to this container.\n\nWithin the container create a container element for the message.\nThis element should have the class `mdl-snackbar__text`.\nLeave this element empty!\nText is added when the snackbar is called to be shown.\n\nSecond in the container, add a button element.\nThis element should have the class `mdl-snackbar__action`.\nIt is recommended to set the type to button to make sure no forms get submitted by accident.\nLeave the text content empty here as well!\nDo not directly apply any event handlers.\n\nYou now have complete markup for the snackbar to function.\nAll that is left is within your JavaScript to call the `showSnackbar` method on the snackbar container.\nThis takes a [plain object](#data-object) to configure the snackbar content appropriately.\nYou may call it multiple consecutive times and messages will stack.\n\n## Examples\n\nAll snackbars should be shown through the same element.\n\n#### Markup:\n\n```html\n<div aria-live=\"assertive\" aria-atomic=\"true\" aria-relevant=\"text\" class=\"mdl-snackbar mdl-js-snackbar\">\n    <div class=\"mdl-snackbar__text\"></div>\n    <button type=\"button\" class=\"mdl-snackbar__action\"></button>\n</div>\n```\n\n> Note: In this example there are a few aria attributes for accessibility. Please modify these as-needed for your site.\n\n### Snackbar\n\n```javascript\nvar notification = document.querySelector('.mdl-js-snackbar');\nvar data = {\n  message: 'Message Sent',\n  actionHandler: function(event) {},\n  actionText: 'Undo',\n  timeout: 10000\n};\nnotification.MaterialSnackbar.showSnackbar(data);\n```\n\n### Toast\n\n```javascript\nvar notification = document.querySelector('.mdl-js-snackbar');\nnotification.MaterialSnackbar.showSnackbar(\n  {\n    message: 'Image Uploaded'\n  }\n);\n```\n\n## CSS Classes\n\n### Blocks\n\n| MDL Class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-snackbar` | Defines the container of the snackbar component. | Required on snackbar container |\n\n### Elements\n\n| MDL Class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-snackbar__text` | Defines the element containing the text of the snackbar. | Required |\n| `mdl-snackbar__action` | Defines the element that triggers the action of a snackbar. | Required |\n\n### Modifiers\n\n| MDL Class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-snackbar--active` | Marks the snackbar as active which causes it to display. | Required when active. Controlled in JavaScript |\n\n## Data Object\n\nThe Snackbar components `showSnackbar` method takes an object for snackbar data.\nThe table below shows the properties and their usage.\n\n| Property | Effect | Remarks | Type |\n|-----------|--------|---------|---------|\n| message   | The text message to display. | Required | String |\n| timeout   | The amount of time in milliseconds to show the snackbar. | Optional (default 2750) | Integer |\n| actionHandler | The function to execute when the action is clicked. | Optional | Function |\n| actionText | The text to display for the action button. | Required if actionHandler is set |  String. |\n"
  },
  {
    "path": "src/snackbar/_snackbar.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n@import \"../mixins\";\n\n.mdl-snackbar {\n  position: fixed;\n  bottom: 0;\n  left: 50%;\n  cursor: default;\n  background-color: $snackbar-background-color;\n  z-index: 3;\n  display: block;\n  display: flex;\n  justify-content: space-between;\n  font-family: $preferred_font;\n  will-change: transform;\n  transform: translate(0, 80px);\n  transition: transform 0.25s $animation-curve-fast-out-linear-in;\n  pointer-events: none;\n  @media(max-width: $snackbar-tablet-breakpoint - 1) {\n    width: 100%;\n    left: 0;\n    min-height: 48px;\n    max-height: 80px;\n  }\n  @media(min-width: $snackbar-tablet-breakpoint) {\n    min-width: 288px;\n    max-width: 568px;\n    border-radius: 2px;\n    transform: translate(-50%, 80px);\n  }\n  &--active {\n    transform: translate(0, 0);\n    pointer-events: auto;\n    transition: transform 0.25s $animation-curve-linear-out-slow-in;\n\n    @media(min-width: $snackbar-tablet-breakpoint) {\n      transform: translate(-50%, 0);\n    }\n  }\n\n  &__text {\n    padding: 14px 12px 14px 24px;\n    vertical-align: middle;\n    color: white;\n    float: left;\n  }\n\n  &__action {\n    background: transparent;\n    border: none;\n    color: $snackbar-action-color;\n    float: right;\n    text-transform: uppercase;\n    padding: 14px 24px 14px 12px;\n    @include typo-button();\n    overflow: hidden;\n    outline: none;\n    opacity: 0;\n    pointer-events: none;\n    cursor: pointer;\n    text-decoration: none;\n    text-align: center;\n    align-self: center;\n\n    &::-moz-focus-inner {\n      border: 0;\n    }\n    &:not([aria-hidden]) {\n      opacity: 1;\n      pointer-events: auto;\n    }\n  }\n}\n"
  },
  {
    "path": "src/snackbar/snackbar.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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(function() {\n  'use strict';\n\n  /**\n   * Class constructor for Snackbar MDL component.\n   * Implements MDL component design pattern defined at:\n   * https://github.com/jasonmayes/mdl-component-design-pattern\n   *\n   * @constructor\n   * @param {HTMLElement} element The element that will be upgraded.\n   */\n  var MaterialSnackbar = function MaterialSnackbar(element) {\n    this.element_ = element;\n    this.textElement_ = this.element_.querySelector('.' + this.cssClasses_.MESSAGE);\n    this.actionElement_ = this.element_.querySelector('.' + this.cssClasses_.ACTION);\n    if (!this.textElement_) {\n      throw new Error('There must be a message element for a snackbar.');\n    }\n    if (!this.actionElement_) {\n      throw new Error('There must be an action element for a snackbar.');\n    }\n    this.active = false;\n    this.actionHandler_ = undefined;\n    this.message_ = undefined;\n    this.actionText_ = undefined;\n    this.timeoutID_ = undefined;\n    this.queuedNotifications_ = [];\n    this.setActionHidden_(true);\n  };\n  window['MaterialSnackbar'] = MaterialSnackbar;\n\n  /**\n   * Store constants in one place so they can be updated easily.\n   *\n   * @enum {string | number}\n   * @private\n   */\n  MaterialSnackbar.prototype.Constant_ = {\n    // The duration of the snackbar show/hide animation, in ms.\n    ANIMATION_LENGTH: 250\n  };\n\n  /**\n   * Store strings for class names defined by this component that are used in\n   * JavaScript. This allows us to simply change it in one place should we\n   * decide to modify at a later date.\n   *\n   * @enum {string}\n   * @private\n   */\n  MaterialSnackbar.prototype.cssClasses_ = {\n    SNACKBAR: 'mdl-snackbar',\n    MESSAGE: 'mdl-snackbar__text',\n    ACTION: 'mdl-snackbar__action',\n    ACTIVE: 'mdl-snackbar--active'\n  };\n\n  /**\n   * Display the snackbar.\n   *\n   * @private\n   */\n  MaterialSnackbar.prototype.displaySnackbar_ = function() {\n    this.element_.setAttribute('aria-hidden', 'true');\n\n    if (this.actionHandler_) {\n      this.actionElement_.textContent = this.actionText_;\n      this.actionElement_.addEventListener('click', this.actionHandler_);\n      this.setActionHidden_(false);\n    }\n\n    this.textElement_.textContent = this.message_;\n    this.element_.classList.add(this.cssClasses_.ACTIVE);\n    this.element_.setAttribute('aria-hidden', 'false');\n    this.timeoutID_ = setTimeout(this.cleanup_.bind(this), this.timeout_);\n\n  };\n\n  /**\n   * Show the snackbar.\n   *\n   * @param {Object} data The data for the notification.\n   * @public\n   */\n  MaterialSnackbar.prototype.showSnackbar = function(data) {\n    if (data === undefined) {\n      throw new Error(\n        'Please provide a data object with at least a message to display.');\n    }\n    if (data['message'] === undefined) {\n      throw new Error('Please provide a message to be displayed.');\n    }\n    if (data['actionHandler'] && !data['actionText']) {\n      throw new Error('Please provide action text with the handler.');\n    }\n    if (this.active) {\n      this.queuedNotifications_.push(data);\n    } else {\n      this.active = true;\n      this.message_ = data['message'];\n      if (data['timeout']) {\n        this.timeout_ = data['timeout'];\n      } else {\n        this.timeout_ = 2750;\n      }\n      if (data['actionHandler']) {\n        this.actionHandler_ = data['actionHandler'];\n      }\n      if (data['actionText']) {\n        this.actionText_ = data['actionText'];\n      }\n      this.displaySnackbar_();\n    }\n  };\n  MaterialSnackbar.prototype['showSnackbar'] = MaterialSnackbar.prototype.showSnackbar;\n  /**\n   * Hide the snackbar.\n   *\n   * @public\n   */\n  MaterialSnackbar.prototype.hideSnackbar = function() {\n    if (!this.active) {\n      return;\n    }\n    if (typeof this.timeoutID_ === 'number') {\n      clearTimeout(this.timeoutID_);\n      this.cleanup_();\n    }\n  };\n  MaterialSnackbar.prototype['hideSnackbar'] = MaterialSnackbar.prototype.hideSnackbar;\n  /**\n   * Check if the queue has items within it.\n   * If it does, display the next entry.\n   *\n   * @private\n   */\n  MaterialSnackbar.prototype.checkQueue_ = function() {\n    if (this.queuedNotifications_.length > 0) {\n      this.showSnackbar(this.queuedNotifications_.shift());\n    }\n  };\n\n  /**\n   * Cleanup the snackbar event listeners and accessiblity attributes.\n   *\n   * @private\n   */\n  MaterialSnackbar.prototype.cleanup_ = function() {\n    this.element_.classList.remove(this.cssClasses_.ACTIVE);\n    setTimeout(function() {\n      this.element_.setAttribute('aria-hidden', 'true');\n      this.textElement_.textContent = '';\n      if (!Boolean(this.actionElement_.getAttribute('aria-hidden'))) {\n        this.setActionHidden_(true);\n        this.actionElement_.textContent = '';\n        this.actionElement_.removeEventListener('click', this.actionHandler_);\n      }\n      this.actionHandler_ = undefined;\n      this.message_ = undefined;\n      this.actionText_ = undefined;\n      this.timeoutID_ = undefined;\n      this.active = false;\n      this.checkQueue_();\n    }.bind(this), /** @type {number} */ (this.Constant_.ANIMATION_LENGTH));\n  };\n\n  /**\n   * Set the action handler hidden state.\n   *\n   * @param {boolean} value\n   * @private\n   */\n  MaterialSnackbar.prototype.setActionHidden_ = function(value) {\n    if (value) {\n      this.actionElement_.setAttribute('aria-hidden', 'true');\n    } else {\n      this.actionElement_.removeAttribute('aria-hidden');\n    }\n  };\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  componentHandler.register({\n    constructor: MaterialSnackbar,\n    classAsString: 'MaterialSnackbar',\n    cssClass: 'mdl-js-snackbar',\n    widget: true\n  });\n\n})();\n"
  },
  {
    "path": "src/snackbar/snippets/snackbar.html",
    "content": "<button id=\"demo-show-snackbar\" class=\"mdl-button mdl-js-button mdl-button--raised\" type=\"button\">Show Snackbar</button>\n<div id=\"demo-snackbar-example\" class=\"mdl-js-snackbar mdl-snackbar\">\n  <div class=\"mdl-snackbar__text\"></div>\n  <button class=\"mdl-snackbar__action\" type=\"button\"></button>\n</div>\n<script>\n(function() {\n  'use strict';\n  var snackbarContainer = document.querySelector('#demo-snackbar-example');\n  var showSnackbarButton = document.querySelector('#demo-show-snackbar');\n  var handler = function(event) {\n    showSnackbarButton.style.backgroundColor = '';\n  };\n  showSnackbarButton.addEventListener('click', function() {\n    'use strict';\n    showSnackbarButton.style.backgroundColor = '#' +\n        Math.floor(Math.random() * 0xFFFFFF).toString(16);\n    var data = {\n      message: 'Button color changed.',\n      timeout: 2000,\n      actionHandler: handler,\n      actionText: 'Undo'\n    };\n    snackbarContainer.MaterialSnackbar.showSnackbar(data);\n  });\n}());\n</script>\n"
  },
  {
    "path": "src/snackbar/snippets/toast.html",
    "content": "<button id=\"demo-show-toast\" class=\"mdl-button mdl-js-button mdl-button--raised\" type=\"button\">Show Toast</button>\n<div id=\"demo-toast-example\" class=\"mdl-js-snackbar mdl-snackbar\">\n  <div class=\"mdl-snackbar__text\"></div>\n  <button class=\"mdl-snackbar__action\" type=\"button\"></button>\n</div>\n<script>\n(function() {\n  'use strict';\n  window['counter'] = 0;\n  var snackbarContainer = document.querySelector('#demo-toast-example');\n  var showToastButton = document.querySelector('#demo-show-toast');\n  showToastButton.addEventListener('click', function() {\n    'use strict';\n    var data = {message: 'Example Message # ' + ++counter};\n    snackbarContainer.MaterialSnackbar.showSnackbar(data);\n  });\n}());\n</script>\n"
  },
  {
    "path": "src/spinner/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **spinner** component is an enhanced replacement for the classic \"wait cursor\" (which varies significantly among hardware and software versions) and indicates that there is an ongoing process, the results of which are not yet available. A spinner consists of an open circle that changes colors as it animates in a clockwise direction, and clearly communicates that a process has been started but not completed.\n\nA spinner performs no action itself, either by its display nor when the user clicks or touches it, and does not indicate a process's specific progress or degree of completion. The MDL spinner component provides various types of spinners, and allows you to add display effects.\n\nSpinners are a fairly new feature of most user interfaces, and provide users with a consistent visual cue about ongoing activity, regardless of hardware device,  operating system, or browser environment. Their design and use is an important factor in the overall user experience.\n\n### To include an MDL **spinner** component:\n\n&nbsp;1. Code an element, such as a `<div>`, `<p>`, or `<span>`, to contain the spinner; the element should have no content of its own.\n```html\n<div></div>\n```\n&nbsp;2. Add one or more MDL classes, separated by spaces, to the container using the `class` attribute.\n```html\n<div class=\"mdl-spinner mdl-js-spinner is-active\"></div>\n```\n\nThe spinner component is ready for use.\n\n#### Examples\n\nA default spinner in a div.\n\n```html\n<div class=\"mdl-spinner mdl-js-spinner is-active\"></div>\n```\n\nA single-color spinner in a paragraph.\n\n```html\n<p class=\"mdl-spinner mdl-js-spinner mdl-spinner--single-color is-active\"></p>\n```\n\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual enhancements to the spinner. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-spinner` | Defines the container as an MDL spinner component | Required |\n| `mdl-js-spinner` | Assigns basic MDL behavior to spinner | Required |\n| `is-active` | Makes the spinner visible and animated | Optional |\n| `mdl-spinner--single-color` | Uses a single (primary palette) color instead of changing colors | Optional\n\n>**Note:** There is no specific *disabled* version of a spinner; the presence or absence of the `is-active` class determines whether the spinner is visible. For example, this spinner is inactive and invisible: `<div class=\"mdl-spinner mdl-js-spinner\"></div>`\n>This attribute may be added or removed programmatically via scripting.\n"
  },
  {
    "path": "src/spinner/_spinner.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n\n\n.mdl-spinner {\n  display: inline-block;\n  position: relative;\n  width: $spinner-size;\n  height: $spinner-size;\n\n  &:not(.is-upgraded).is-active:after {\n    content: \"Loading...\";\n  }\n\n  &.is-upgraded.is-active {\n    animation: mdl-spinner__container-rotate $spinner-duration linear infinite;\n  }\n}\n\n@keyframes mdl-spinner__container-rotate {\n  to { transform: rotate(360deg) }\n}\n\n.mdl-spinner__layer {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  opacity: 0;\n}\n\n.mdl-spinner__layer-1 {\n  border-color: $spinner-color-1;\n\n  .mdl-spinner--single-color & {\n    border-color: $spinner-single-color;\n  }\n\n  .mdl-spinner.is-active & {\n    animation:\n        mdl-spinner__fill-unfill-rotate (4 * $spinner-arc-time)\n            $animation-curve-fast-out-slow-in infinite both,\n        mdl-spinner__layer-1-fade-in-out (4 * $spinner-arc-time)\n            $animation-curve-fast-out-slow-in infinite both;\n  }\n}\n\n.mdl-spinner__layer-2 {\n  border-color: $spinner-color-2;\n\n  .mdl-spinner--single-color & {\n    border-color: $spinner-single-color;\n  }\n\n  .mdl-spinner.is-active & {\n    animation:\n        mdl-spinner__fill-unfill-rotate (4 * $spinner-arc-time)\n            $animation-curve-fast-out-slow-in infinite both,\n        mdl-spinner__layer-2-fade-in-out (4 * $spinner-arc-time)\n            $animation-curve-fast-out-slow-in infinite both;\n  }\n}\n\n.mdl-spinner__layer-3 {\n  border-color: $spinner-color-3;\n\n  .mdl-spinner--single-color & {\n    border-color: $spinner-single-color;\n  }\n\n  .mdl-spinner.is-active & {\n    animation:\n        mdl-spinner__fill-unfill-rotate (4 * $spinner-arc-time)\n            $animation-curve-fast-out-slow-in infinite both,\n        mdl-spinner__layer-3-fade-in-out (4 * $spinner-arc-time)\n            $animation-curve-fast-out-slow-in infinite both;\n  }\n}\n\n.mdl-spinner__layer-4 {\n  border-color: $spinner-color-4;\n\n  .mdl-spinner--single-color & {\n    border-color: $spinner-single-color;\n  }\n\n  .mdl-spinner.is-active & {\n    animation:\n        mdl-spinner__fill-unfill-rotate (4 * $spinner-arc-time)\n            $animation-curve-fast-out-slow-in infinite both,\n        mdl-spinner__layer-4-fade-in-out (4 * $spinner-arc-time)\n            $animation-curve-fast-out-slow-in infinite both;\n  }\n}\n\n@keyframes mdl-spinner__fill-unfill-rotate {\n  12.5% { transform: rotate(0.5 * $spinner-arc-size);  }\n  25%   { transform: rotate($spinner-arc-size);  }\n  37.5% { transform: rotate(1.5 * $spinner-arc-size);  }\n  50%   { transform: rotate(2 * $spinner-arc-size);  }\n  62.5% { transform: rotate(2.5 * $spinner-arc-size);  }\n  75%   { transform: rotate(3 * $spinner-arc-size);  }\n  87.5% { transform: rotate(3.5 * $spinner-arc-size); }\n  to    { transform: rotate(4 * $spinner-arc-size); }\n}\n\n/**\n* HACK: Even though the intention is to have the current .mdl-spinner__layer-N\n* at `opacity: 1`, we set it to `opacity: 0.99` instead since this forces Chrome\n* to do proper subpixel rendering for the elements being animated. This is\n* especially visible in Chrome 39 on Ubuntu 14.04. See:\n*\n* - https://github.com/Polymer/paper-spinner/issues/9\n* - https://code.google.com/p/chromium/issues/detail?id=436255\n*/\n@keyframes mdl-spinner__layer-1-fade-in-out {\n  from { opacity: 0.99; }\n  25% { opacity: 0.99; }\n  26% { opacity: 0; }\n  89% { opacity: 0; }\n  90% { opacity: 0.99; }\n  100% { opacity: 0.99; }\n}\n\n@keyframes mdl-spinner__layer-2-fade-in-out {\n  from { opacity: 0; }\n  15% { opacity: 0; }\n  25% { opacity: 0.99; }\n  50% { opacity: 0.99; }\n  51% { opacity: 0; }\n}\n\n@keyframes mdl-spinner__layer-3-fade-in-out {\n  from { opacity: 0; }\n  40% { opacity: 0; }\n  50% { opacity: 0.99; }\n  75% { opacity: 0.99; }\n  76% { opacity: 0; }\n}\n\n@keyframes mdl-spinner__layer-4-fade-in-out {\n  from { opacity: 0; }\n  65% { opacity: 0; }\n  75% { opacity: 0.99; }\n  90% { opacity: 0.99; }\n  100% { opacity: 0; }\n}\n\n/**\n* Patch the gap that appear between the two adjacent\n* div.mdl-spinner__circle-clipper while the spinner is rotating\n* (appears on Chrome 38, Safari 7.1, and IE 11).\n*\n* Update: the gap no longer appears on Chrome when .mdl-spinner__layer-N's\n* opacity is 0.99, but still does on Safari and IE.\n*/\n.mdl-spinner__gap-patch {\n  position: absolute;\n  box-sizing: border-box;\n  top: 0;\n  left: 45%;\n  width: 10%;\n  height: 100%;\n  overflow: hidden;\n  border-color: inherit;\n\n  & .mdl-spinner__circle {\n    width: 1000%;\n    left: -450%;\n  }\n}\n\n.mdl-spinner__circle-clipper {\n  display: inline-block;\n  position: relative;\n  width: 50%;\n  height: 100%;\n  overflow: hidden;\n  border-color: inherit;\n\n  &.mdl-spinner__left {\n    float: left;\n  }\n\n  &.mdl-spinner__right {\n    float: right;\n  }\n\n  & .mdl-spinner__circle {\n    width: 200%;\n  }\n}\n\n.mdl-spinner__circle {\n  box-sizing: border-box;\n  height: 100%;\n  border-width: $spinner-stroke-width;\n  border-style: solid;\n  border-color: inherit;\n  border-bottom-color: transparent !important;\n  border-radius: 50%;\n  animation: none;\n\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n\n  .mdl-spinner__left & {\n    border-right-color: transparent !important;\n    transform: rotate(129deg);\n\n    .mdl-spinner.is-active & {\n      animation: mdl-spinner__left-spin $spinner-arc-time\n          $animation-curve-fast-out-slow-in infinite both;\n    }\n  }\n\n  .mdl-spinner__right & {\n    left: -100%;\n    border-left-color: transparent !important;\n    transform: rotate(-129deg);\n\n    .mdl-spinner.is-active & {\n      animation: mdl-spinner__right-spin $spinner-arc-time\n          $animation-curve-fast-out-slow-in infinite both;\n    }\n  }\n}\n\n@keyframes mdl-spinner__left-spin {\n  from { transform: rotate(130deg); }\n  50% { transform: rotate(-5deg); }\n  to { transform: rotate(130deg); }\n}\n\n@keyframes mdl-spinner__right-spin {\n  from { transform: rotate(-130deg); }\n  50% { transform: rotate(5deg); }\n  to { transform: rotate(-130deg); }\n}\n"
  },
  {
    "path": "src/spinner/snippets/spinner-default.html",
    "content": "<!-- MDL Spinner Component -->\n<div class=\"mdl-spinner mdl-js-spinner is-active\"></div>\n"
  },
  {
    "path": "src/spinner/snippets/spinner-single-color.html",
    "content": "<!-- MDL Spinner Component with Single Color -->\n<div class=\"mdl-spinner mdl-spinner--single-color mdl-js-spinner is-active\"></div>\n"
  },
  {
    "path": "src/spinner/spinner.js",
    "content": "/**\n * @license\n * Copyright 2015 Google Inc. 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 *      http://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(function() {\n  'use strict';\n\n  /**\n   * Class constructor for Spinner MDL component.\n   * Implements MDL component design pattern defined at:\n   * https://github.com/jasonmayes/mdl-component-design-pattern\n   *\n   * @param {HTMLElement} element The element that will be upgraded.\n   * @constructor\n   */\n  var MaterialSpinner = function MaterialSpinner(element) {\n    this.element_ = element;\n\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialSpinner'] = MaterialSpinner;\n\n  /**\n   * Store constants in one place so they can be updated easily.\n   *\n   * @enum {string | number}\n   * @private\n   */\n  MaterialSpinner.prototype.Constant_ = {\n    MDL_SPINNER_LAYER_COUNT: 4\n  };\n\n  /**\n   * Store strings for class names defined by this component that are used in\n   * JavaScript. This allows us to simply change it in one place should we\n   * decide to modify at a later date.\n   *\n   * @enum {string}\n   * @private\n   */\n  MaterialSpinner.prototype.CssClasses_ = {\n    MDL_SPINNER_LAYER: 'mdl-spinner__layer',\n    MDL_SPINNER_CIRCLE_CLIPPER: 'mdl-spinner__circle-clipper',\n    MDL_SPINNER_CIRCLE: 'mdl-spinner__circle',\n    MDL_SPINNER_GAP_PATCH: 'mdl-spinner__gap-patch',\n    MDL_SPINNER_LEFT: 'mdl-spinner__left',\n    MDL_SPINNER_RIGHT: 'mdl-spinner__right'\n  };\n\n  /**\n   * Auxiliary method to create a spinner layer.\n   *\n   * @param {number} index Index of the layer to be created.\n   * @public\n   */\n  MaterialSpinner.prototype.createLayer = function(index) {\n    var layer = document.createElement('div');\n    layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER);\n    layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER + '-' + index);\n\n    var leftClipper = document.createElement('div');\n    leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);\n    leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_LEFT);\n\n    var gapPatch = document.createElement('div');\n    gapPatch.classList.add(this.CssClasses_.MDL_SPINNER_GAP_PATCH);\n\n    var rightClipper = document.createElement('div');\n    rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);\n    rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_RIGHT);\n\n    var circleOwners = [leftClipper, gapPatch, rightClipper];\n\n    for (var i = 0; i < circleOwners.length; i++) {\n      var circle = document.createElement('div');\n      circle.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE);\n      circleOwners[i].appendChild(circle);\n    }\n\n    layer.appendChild(leftClipper);\n    layer.appendChild(gapPatch);\n    layer.appendChild(rightClipper);\n\n    this.element_.appendChild(layer);\n  };\n  MaterialSpinner.prototype['createLayer'] =\n      MaterialSpinner.prototype.createLayer;\n\n  /**\n   * Stops the spinner animation.\n   * Public method for users who need to stop the spinner for any reason.\n   *\n   * @public\n   */\n  MaterialSpinner.prototype.stop = function() {\n    this.element_.classList.remove('is-active');\n  };\n  MaterialSpinner.prototype['stop'] = MaterialSpinner.prototype.stop;\n\n  /**\n   * Starts the spinner animation.\n   * Public method for users who need to manually start the spinner for any reason\n   * (instead of just adding the 'is-active' class to their markup).\n   *\n   * @public\n   */\n  MaterialSpinner.prototype.start = function() {\n    this.element_.classList.add('is-active');\n  };\n  MaterialSpinner.prototype['start'] = MaterialSpinner.prototype.start;\n\n  /**\n   * Initialize element.\n   */\n  MaterialSpinner.prototype.init = function() {\n    if (this.element_) {\n      for (var i = 1; i <= this.Constant_.MDL_SPINNER_LAYER_COUNT; i++) {\n        this.createLayer(i);\n      }\n\n      this.element_.classList.add('is-upgraded');\n    }\n  };\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  componentHandler.register({\n    constructor: MaterialSpinner,\n    classAsString: 'MaterialSpinner',\n    cssClass: 'mdl-js-spinner',\n    widget: true\n  });\n})();\n"
  },
  {
    "path": "src/styleguide.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"material-design-lite\";\n\n$padding: 24px;\n\nbody {\n  margin: 0px;\n}\n\n.styleguide-demo h1 {\n  margin: ($padding * 2) $padding 0 $padding;\n}\n\n.styleguide-demo h1:after {\n  content: '';\n\n  display: block;\n  width: 100%;\n\n  border-bottom: 1px solid rgba(0,0,0,0.5);\n  margin-top: $padding;\n}\n\n.styleguide-demo {\n  opacity: 0;\n\n  transition: opacity 0.6s ease;\n}\n\n.styleguide-masthead {\n  height: 256px;\n  background: unquote(\"rgb(#{nth($palette-grey, 10)})\");\n  padding: 115px 16px 0;\n}\n\n.styleguide-container {\n  position: relative;\n  max-width: 960px;\n  width: 100%;\n}\n\n.styleguide-title {\n  color: #fff;\n  bottom: auto;\n  position: relative;\n  font-size: 56px;\n  font-weight: 300;\n  line-height: 1;\n  letter-spacing: -0.02em;\n\n  &:after {\n    border-bottom: 0px;\n  }\n\n  span {\n    font-weight: 300;\n  }\n}\n\n.mdl-styleguide .mdl-layout__drawer .mdl-navigation__link {\n  padding: 10px 24px;\n}\n\n.demosLoaded .styleguide-demo {\n  opacity: 1;\n}\n\niframe {\n  display: block;\n\n  width: 100%;\n\n  border: none;\n}\n\niframe.heightSet {\n  overflow: hidden;\n}\n\n.demo-wrapper {\n  margin: $padding;\n\n  iframe {\n    border: 1px solid rgba(0,0,0,0.5);\n  }\n}\n"
  },
  {
    "path": "src/switch/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **switch** component is an enhanced version of the standard HTML `<input type=\"checkbox\">` element. A switch consists of a short horizontal \"track\" with a prominent circular state indicator and, typically, text that clearly communicates a binary condition that will be set or unset when the user clicks or touches it. Like checkboxes, switches may appear individually or in groups, and can be selected and deselected individually. However, switches provide a more intuitive visual representation of their state: left/gray for *off*, right/colored for *on*. The MDL switch component allows you to add both display and click effects.\n\nSwitches, particularly as a replacement for certain checkboxes, can be a valuable feature in user interfaces, regardless of a site's content or function. Their design and use is therefore an important factor in the overall user experience. See the switch component's [Material Design specifications page](http://www.google.com/design/spec/components/selection-controls.html#selection-controls-switch) for details.\n\nThe enhanced switch component has a more vivid visual look than a standard checkbox, and may be initially or programmatically *disabled*.\n\n### To include an MDL **switch** component:\n\n&nbsp;1. Code a `<label>` element and give it a `for` attribute whose value is the unique id of the switch it will contain.\n```html\n<label for=\"switch1\">\n...\n</label>\n```\n&nbsp;2. Inside the label, code an `<input>` element and give it a `type` attribute whose value is `\"checkbox\"`. Also give it an `id` attribute whose value matches the label's `for` attribute value.\n```html\n<label for=\"switch1\">\n  <input type=\"checkbox\" id=\"switch1\">\n</label>\n```\n&nbsp;3. Also inside the label, after the checkbox, code a `<span>` element containing the switch's text caption.\n```html\n<label for=\"switch1\">\n  <input type=\"checkbox\" id=\"switch1\">\n  <span>Sound off/on</span>\n</label>\n```\n&nbsp;4. Add one or more MDL classes, separated by spaces, to the label, switch, and caption using the `class` attribute.\n```html\n<label for=\"switch1\" class=\"mdl-switch mdl-js-switch\">\n  <input type=\"checkbox\" id=\"switch1\" class=\"mdl-switch__input\">\n  <span class=\"mdl-switch__label\">Sound off/on</span>\n</label>\n```\n\nThe switch component is ready for use.\n\n#### Example\n\nA switch with a ripple click effect.\n\n```html\n<label for=\"switch1\" class=\"mdl-switch mdl-js-switch mdl-js-ripple-effect\">\n  <input type=\"checkbox\" id=\"switch1\" class=\"mdl-switch__input\">\n  <span class=\"mdl-switch__label\">Sound off/on</span>\n</label>\n```\n\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual and behavioral enhancements to the switch. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-switch` | Defines label as an MDL component | Required on label element|\n| `mdl-js-switch` | Assigns basic MDL behavior to label | Required on label element |\n| `mdl-switch__input` | Applies basic MDL behavior to switch | Required on input element (switch) |\n| `mdl-switch__label` | Applies basic MDL behavior to caption | Required on span element (caption) |\n| `mdl-js-ripple-effect` | Applies *ripple* click effect | Optional; goes on label element, not input element (switch) |\n\n>**Note:** Disabled versions of all available switch types are provided, and are invoked with the standard HTML boolean attribute `disabled`. `<input type=\"checkbox\" id=\"switch5\" class=\"mdl-switch__input\" disabled>`\n>This attribute may be added or removed programmatically via scripting.\n"
  },
  {
    "path": "src/switch/_switch.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n@import \"../mixins\";\n\n.mdl-switch {\n  position: relative;\n\n  z-index: 1;\n\n  vertical-align: middle;\n\n  display: inline-block;\n\n  box-sizing: border-box;\n  width: 100%;\n  height: $switch-label-height;\n  margin: 0;\n  padding: 0;\n\n  overflow: visible;\n\n  &.is-upgraded {\n    padding-left: $switch-track-length - 8px;\n  }\n\n  // avoids blue box around switch\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n\n.mdl-switch__input {\n  line-height: $switch-label-height;\n\n  .mdl-switch.is-upgraded & {\n    // Hide input element, while still making it respond to focus.\n    position: absolute;\n    width: 0;\n    height: 0;\n    margin: 0;\n    padding: 0;\n    opacity: 0;\n    -ms-appearance: none;\n    -moz-appearance: none;\n    -webkit-appearance: none;\n    appearance: none;\n    border: none;\n  }\n}\n\n.mdl-switch__track {\n  background: $switch-off-track-color;\n  position: absolute;\n  left: 0;\n  top: $switch-track-top;\n  height: $switch-track-height;\n  width: $switch-track-length;\n  border-radius: $switch-track-height;\n\n  cursor: pointer;\n\n  .mdl-switch.is-checked & {\n    background: $switch-track-color;\n  }\n\n  fieldset[disabled] .mdl-switch,\n  .mdl-switch.is-disabled & {\n    background: $switch-disabled-track-color;\n    cursor: auto;\n  }\n}\n\n.mdl-switch__thumb {\n  background: $switch-off-thumb-color;\n  position: absolute;\n  left: 0;\n  top: $switch-thumb-top;\n  height: $switch-thumb-size;\n  width: $switch-thumb-size;\n  border-radius: 50%;\n\n  cursor: pointer;\n\n  @include shadow-2dp();\n\n  @include material-animation-default(0.28s);\n  transition-property: left;\n\n  .mdl-switch.is-checked & {\n    background: $switch-thumb-color;\n    left: $switch-track-length - $switch-thumb-size;\n\n    @include shadow-3dp();\n  }\n\n  fieldset[disabled] .mdl-switch,\n  .mdl-switch.is-disabled & {\n    background: $switch-disabled-thumb-color;\n    cursor: auto;\n  }\n}\n\n.mdl-switch__focus-helper {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n\n  transform: translate(-$switch-helper-size / 2, -$switch-helper-size / 2);\n\n  display: inline-block;\n\n  box-sizing: border-box;\n  width: $switch-helper-size;\n  height: $switch-helper-size;\n  border-radius: 50%;\n\n  background-color: transparent;\n\n  .mdl-switch.is-focused & {\n    box-shadow: 0 0 0px (($switch-ripple-size - $switch-helper-size) / 2)\n        rgba(0, 0, 0, 0.1);\n    background-color: rgba(0, 0, 0, 0.1);\n  }\n\n  .mdl-switch.is-focused.is-checked & {\n    box-shadow: 0 0 0px (($switch-ripple-size - $switch-helper-size) / 2)\n        $switch-faded-color;\n    background-color: $switch-faded-color;\n  }\n}\n\n.mdl-switch__label {\n  position: relative;\n  cursor: pointer;\n  font-size: $switch-label-font-size;\n  line-height: $switch-label-height;\n  margin: 0;\n  left: 24px;\n\n  fieldset[disabled] .mdl-switch,\n  .mdl-switch.is-disabled & {\n    color: $switch-disabled-thumb-color;\n    cursor: auto;\n  }\n}\n\n.mdl-switch__ripple-container {\n  position: absolute;\n  z-index: 2;\n  top: -($switch-ripple-size - $switch-label-height) / 2;\n  left: $switch-thumb-size / 2 - $switch-ripple-size / 2;\n\n  box-sizing: border-box;\n  width: $switch-ripple-size;\n  height: $switch-ripple-size;\n  border-radius: 50%;\n\n  cursor: pointer;\n\n  overflow: hidden;\n  -webkit-mask-image: -webkit-radial-gradient(circle, white, black);\n\n  transition-duration: 0.40s;\n  transition-timing-function: step-end;\n  transition-property: left;\n\n  & .mdl-ripple {\n    background: $switch-color;\n  }\n\n  fieldset[disabled] .mdl-switch,\n  .mdl-switch.is-disabled & {\n    cursor: auto;\n  }\n\n  fieldset[disabled] .mdl-switch & .mdl-ripple,\n  .mdl-switch.is-disabled & .mdl-ripple {\n    background: transparent;\n  }\n\n  .mdl-switch.is-checked & {\n    left: $switch-track-length - $switch-ripple-size / 2 -\n        $switch-thumb-size / 2;\n  }\n}\n"
  },
  {
    "path": "src/switch/snippets/switch-off.html",
    "content": "<label class=\"mdl-switch mdl-js-switch mdl-js-ripple-effect\" for=\"switch-2\">\n  <input type=\"checkbox\" id=\"switch-2\" class=\"mdl-switch__input\">\n  <span class=\"mdl-switch__label\"></span>\n</label>\n"
  },
  {
    "path": "src/switch/snippets/switch-on.html",
    "content": "<label class=\"mdl-switch mdl-js-switch mdl-js-ripple-effect\" for=\"switch-1\">\n  <input type=\"checkbox\" id=\"switch-1\" class=\"mdl-switch__input\" checked>\n  <span class=\"mdl-switch__label\"></span>\n</label>\n"
  },
  {
    "path": "src/switch/switch.js",
    "content": "/**\n * @license\n * Copyright 2015 Google Inc. 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 *      http://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(function() {\n  'use strict';\n\n  /**\n   * Class constructor for Checkbox MDL component.\n   * Implements MDL component design pattern defined at:\n   * https://github.com/jasonmayes/mdl-component-design-pattern\n   *\n   * @constructor\n   * @param {HTMLElement} element The element that will be upgraded.\n   */\n  var MaterialSwitch = function MaterialSwitch(element) {\n    this.element_ = element;\n\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialSwitch'] = MaterialSwitch;\n\n  /**\n   * Store constants in one place so they can be updated easily.\n   *\n   * @enum {string | number}\n   * @private\n   */\n  MaterialSwitch.prototype.Constant_ = {\n    TINY_TIMEOUT: 0.001\n  };\n\n  /**\n   * Store strings for class names defined by this component that are used in\n   * JavaScript. This allows us to simply change it in one place should we\n   * decide to modify at a later date.\n   *\n   * @enum {string}\n   * @private\n   */\n  MaterialSwitch.prototype.CssClasses_ = {\n    INPUT: 'mdl-switch__input',\n    TRACK: 'mdl-switch__track',\n    THUMB: 'mdl-switch__thumb',\n    FOCUS_HELPER: 'mdl-switch__focus-helper',\n    RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n    RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n    RIPPLE_CONTAINER: 'mdl-switch__ripple-container',\n    RIPPLE_CENTER: 'mdl-ripple--center',\n    RIPPLE: 'mdl-ripple',\n    IS_FOCUSED: 'is-focused',\n    IS_DISABLED: 'is-disabled',\n    IS_CHECKED: 'is-checked'\n  };\n\n  /**\n   * Handle change of state.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialSwitch.prototype.onChange_ = function(event) {\n    this.updateClasses_();\n  };\n\n  /**\n   * Handle focus of element.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialSwitch.prototype.onFocus_ = function(event) {\n    this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n  };\n\n  /**\n   * Handle lost focus of element.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialSwitch.prototype.onBlur_ = function(event) {\n    this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n  };\n\n  /**\n   * Handle mouseup.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialSwitch.prototype.onMouseUp_ = function(event) {\n    this.blur_();\n  };\n\n  /**\n   * Handle class updates.\n   *\n   * @private\n   */\n  MaterialSwitch.prototype.updateClasses_ = function() {\n    this.checkDisabled();\n    this.checkToggleState();\n  };\n\n  /**\n   * Add blur.\n   *\n   * @private\n   */\n  MaterialSwitch.prototype.blur_ = function() {\n    // TODO: figure out why there's a focus event being fired after our blur,\n    // so that we can avoid this hack.\n    window.setTimeout(function() {\n      this.inputElement_.blur();\n    }.bind(this), /** @type {number} */ (this.Constant_.TINY_TIMEOUT));\n  };\n\n  // Public methods.\n\n  /**\n   * Check the components disabled state.\n   *\n   * @public\n   */\n  MaterialSwitch.prototype.checkDisabled = function() {\n    if (this.inputElement_.disabled) {\n      this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n    } else {\n      this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n    }\n  };\n  MaterialSwitch.prototype['checkDisabled'] =\n      MaterialSwitch.prototype.checkDisabled;\n\n  /**\n   * Check the components toggled state.\n   *\n   * @public\n   */\n  MaterialSwitch.prototype.checkToggleState = function() {\n    if (this.inputElement_.checked) {\n      this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n    } else {\n      this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n    }\n  };\n  MaterialSwitch.prototype['checkToggleState'] =\n      MaterialSwitch.prototype.checkToggleState;\n\n  /**\n   * Disable switch.\n   *\n   * @public\n   */\n  MaterialSwitch.prototype.disable = function() {\n    this.inputElement_.disabled = true;\n    this.updateClasses_();\n  };\n  MaterialSwitch.prototype['disable'] = MaterialSwitch.prototype.disable;\n\n  /**\n   * Enable switch.\n   *\n   * @public\n   */\n  MaterialSwitch.prototype.enable = function() {\n    this.inputElement_.disabled = false;\n    this.updateClasses_();\n  };\n  MaterialSwitch.prototype['enable'] = MaterialSwitch.prototype.enable;\n\n  /**\n   * Activate switch.\n   *\n   * @public\n   */\n  MaterialSwitch.prototype.on = function() {\n    this.inputElement_.checked = true;\n    this.updateClasses_();\n  };\n  MaterialSwitch.prototype['on'] = MaterialSwitch.prototype.on;\n\n  /**\n   * Deactivate switch.\n   *\n   * @public\n   */\n  MaterialSwitch.prototype.off = function() {\n    this.inputElement_.checked = false;\n    this.updateClasses_();\n  };\n  MaterialSwitch.prototype['off'] = MaterialSwitch.prototype.off;\n\n  /**\n   * Initialize element.\n   */\n  MaterialSwitch.prototype.init = function() {\n    if (this.element_) {\n      this.inputElement_ = this.element_.querySelector('.' +\n          this.CssClasses_.INPUT);\n\n      var track = document.createElement('div');\n      track.classList.add(this.CssClasses_.TRACK);\n\n      var thumb = document.createElement('div');\n      thumb.classList.add(this.CssClasses_.THUMB);\n\n      var focusHelper = document.createElement('span');\n      focusHelper.classList.add(this.CssClasses_.FOCUS_HELPER);\n\n      thumb.appendChild(focusHelper);\n\n      this.element_.appendChild(track);\n      this.element_.appendChild(thumb);\n\n      this.boundMouseUpHandler = this.onMouseUp_.bind(this);\n\n      if (this.element_.classList.contains(\n          this.CssClasses_.RIPPLE_EFFECT)) {\n        this.element_.classList.add(\n            this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n        this.rippleContainerElement_ = document.createElement('span');\n        this.rippleContainerElement_.classList.add(\n            this.CssClasses_.RIPPLE_CONTAINER);\n        this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n        this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n        this.rippleContainerElement_.addEventListener('mouseup', this.boundMouseUpHandler);\n\n        var ripple = document.createElement('span');\n        ripple.classList.add(this.CssClasses_.RIPPLE);\n\n        this.rippleContainerElement_.appendChild(ripple);\n        this.element_.appendChild(this.rippleContainerElement_);\n      }\n\n      this.boundChangeHandler = this.onChange_.bind(this);\n      this.boundFocusHandler = this.onFocus_.bind(this);\n      this.boundBlurHandler = this.onBlur_.bind(this);\n\n      this.inputElement_.addEventListener('change', this.boundChangeHandler);\n      this.inputElement_.addEventListener('focus', this.boundFocusHandler);\n      this.inputElement_.addEventListener('blur', this.boundBlurHandler);\n      this.element_.addEventListener('mouseup', this.boundMouseUpHandler);\n\n      this.updateClasses_();\n      this.element_.classList.add('is-upgraded');\n    }\n  };\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  componentHandler.register({\n    constructor: MaterialSwitch,\n    classAsString: 'MaterialSwitch',\n    cssClass: 'mdl-js-switch',\n    widget: true\n  });\n})();\n"
  },
  {
    "path": "src/tabs/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **tab** component is a user interface element that allows different content blocks to share the same screen space in a mutually exclusive manner. Tabs are always presented in sets of two or more, and they make it easy to explore and switch among different views or functional aspects of an app, or to browse categorized data sets individually. Tabs serve as \"headings\" for their respective content; the *active* tab &mdash; the one whose content is currently displayed &mdash; is always visually distinguished from the others so the user knows which heading the current content belongs to.\n\nTabs are an established but non-standardized feature in user interfaces, and allow users to view different, but often related, blocks of content (often called *panels*). Tabs save screen real estate and provide intuitive and logical access to data while reducing navigation and associated user confusion. Their design and use is an important factor in the overall user experience. See the tab component's [Material Design specifications page](http://www.google.com/design/spec/components/tabs.html) for details.\n\n### To include a set of MDL **tab** components:\n\n&nbsp;1. Code a `<div>` element; this is the \"outer\" div, intended to contain all of the tabs and their content.\n```html\n<div>\n</div>\n```\n&nbsp;2. Inside the \"outer\" div, code one \"inner\" div for the tabs themselves, and one for each tab's content, all siblings. That is, for three content tabs, you would code four \"inner\" divs.\n```html\n<div>\n  <div>\n  ...\n  </div>\n  <div>\n  ...\n  </div>\n  <div>\n  ...\n  </div>\n  <div>\n  ...\n  </div>\n</div>\n```\n&nbsp;3. Inside the first \"inner\" div (the tabs), code one anchor `<a>` (link) tag for each tab. Include `href` attributes with values to match the tabs' `id` attribute values, and some brief link text. On the remaining \"inner\" divs (the content), code `id` attributes whose values match the links' `href`s.\n```html\n<div>\n  <div>\n    <a href=\"#tab1\">Tab One</a>\n    <a href=\"#tab2\">Tab Two</a>\n    <a href=\"#tab3\">Tab Three</a>\n  </div>\n  <div id=\"tab1\">\n  ...\n  </div>\n  <div id=\"tab2\">\n  ...\n  </div>\n  <div id=\"tab3\">\n  ...\n  </div>\n</div>\n```\n&nbsp;4. Inside the remaining \"inner\" divs, code the content you intend to display in each panel; use standard HTML tags to structure the content as desired.\n```html\n<div>\n  <div>\n    <a href=\"#tab1\">Tab One</a>\n    <a href=\"#tab2\">Tab Two</a>\n    <a href=\"#tab3\">Tab Three</a>\n  </div>\n  <div id=\"tab1\">\n    <p>First tab's content.</p>\n  </div>\n  <div id=\"tab2\">\n    <p>Second tab's content.</p>\n  </div>\n  <div id=\"tab3\">\n    <p>Third tab's content.</p>\n  </div>\n</div>\n```\n&nbsp;5. Add one or more MDL classes, separated by spaces, to the \"outer\" and \"inner\" divs using the `class` attribute; be sure to include the `is-active` class on the tab you want to be displayed by default.\n```html\n<div class=\"mdl-tabs mdl-js-tabs\">\n  <div class=\"mdl-tabs__tab-bar\">\n    <a href=\"#tab1\" class=\"mdl-tabs__tab\">Tab One</a>\n    <a href=\"#tab2\" class=\"mdl-tabs__tab\">Tab Two</a>\n    <a href=\"#tab3\" class=\"mdl-tabs__tab\">Tab Three</a>\n  </div>\n  <div class=\"mdl-tabs__panel is-active\" id=\"tab1\">\n    <p>First tab's content.</p>\n  </div>\n  <div class=\"mdl-tabs__panel\" id=\"tab2\">\n    <p>Second tab's content.</p>\n  </div>\n  <div class=\"mdl-tabs__panel\" id=\"tab3\">\n    <p>Third tab's content.</p>\n  </div>\n</div>\n```\n\nThe tab components are ready for use.\n\n#### Example\n\nThree tabs, with ripple effect on tab links.\n\n```html\n<div class=\"mdl-tabs mdl-js-tabs mdl-js-ripple-effect\">\n  <div class=\"mdl-tabs__tab-bar\">\n    <a href=\"#about-panel\" class=\"mdl-tabs__tab is-active\">About the Beatles</a>\n    <a href=\"#members-panel\" class=\"mdl-tabs__tab\">Members</a>\n    <a href=\"#albums-panel\" class=\"mdl-tabs__tab\">Discography</a>\n  </div>\n  <div class=\"mdl-tabs__panel is-active\" id=\"about-panel\">\n    <p><b>The Beatles</b> were a four-piece musical group from Liverpool, England.\n    Formed in 1960, their career spanned just over a decade, yet they are widely\n    regarded as the most influential band in history.</p>\n    <p>Their songs are among the best-loved music of all time. It is said that every\n    minute of every day, a radio station somewhere is playing a Beatles song.</p>\n  </div>\n  <div class=\"mdl-tabs__panel\" id=\"members-panel\">\n    <p>The Beatles' members were:</p>\n    <ul>\n      <li>John Lennon (1940-1980)</li>\n      <li>Paul McCartney (1942-)</li>\n      <li>George Harrison (1943-2001)</li>\n      <li>Ringo Starr (1940-)</li>\n    </ul>\n  </div>\n  <div class=\"mdl-tabs__panel\" id=\"albums-panel\">\n    <p>The Beatles' original UK LPs, in order of release:</p>\n    <ol>\n      <li>Please Please Me (1963)</li>\n      <li>With the Beatles (1963)</li>\n      <li>A Hard Day's Night (1964)</li>\n      <li>Beatles for Sale (1964)</li>\n      <li>Help! (1965)</li>\n      <li>Rubber Soul (1965)</li>\n      <li>Revolver (1966)</li>\n      <li>Sgt. Pepper's Lonely Hearts Club Band (1967)</li>\n      <li>The Beatles (\"The White Album\", 1968)</li>\n      <li>Yellow Submarine (1969)</li>\n      <li>Abbey Road (1969)</li>\n      <li>Let It Be (1970)</li>\n    </ol>\n  </div>\n</div>\n```\n\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual and behavioral enhancements to the tabs. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-tabs` | Defines a tabs container as an MDL component | Required on \"outer\" div element |\n| `mdl-js-tabs` | Assigns basic MDL behavior to tabs container | Required on \"outer\" div element|\n| `mdl-js-ripple-effect` | Applies *ripple* click effect to tab links | Optional; goes on \"outer\" div element|\n| `mdl-tabs__tab-bar` | Defines a container as an MDL tabs link bar | Required on first \"inner\" div element |\n| `mdl-tabs__tab` | Defines an anchor (link) as an MDL tab activator | Required on all links in first \"inner\" div element |\n| `is-active` | Defines a tab as the default display tab | Required on one (and only one) of the \"inner\" div (tab) elements |\n| `mdl-tabs__panel` | Defines a container as tab content | Required on each of the \"inner\" div (tab) elements |\n"
  },
  {
    "path": "src/tabs/_tabs.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n\n\n.mdl-tabs {\n  display: block;\n  width: 100%;\n}\n\n.mdl-tabs__tab-bar {\n    display         : flex;\n    flex-direction  : row;\n    justify-content : center; // ⇾\n    align-content   : space-between; // ||\n    align-items     : flex-start; // ↓\n\n    height          : 48px;\n    padding         : 0 0 0 0;\n    margin          : 0;\n    border-bottom   : 1px solid $tab-border-color;\n}\n\n.mdl-tabs__tab {\n  margin: 0;\n  border: none;\n  padding: 0 24px 0 24px;\n\n  float: left;\n  position: relative;\n  display: block;\n\n  text-decoration: none;\n  height: 48px;\n  line-height: 48px;\n\n  text-align: center;\n  font-weight: 500;\n  font-size: $layout-tab-font-size;\n  text-transform: uppercase;\n\n  color: $tab-text-color;\n  overflow: hidden;\n\n  .mdl-tabs.is-upgraded &.is-active {\n    color: $tab-active-text-color;\n  }\n\n  .mdl-tabs.is-upgraded &.is-active:after {\n    height: 2px;\n    width: 100%;\n    display: block;\n    content: \" \";\n    bottom: 0px;\n    left: 0px;\n    position: absolute;\n    background: $tab-highlight-color;\n    animation: border-expand 0.2s cubic-bezier(0.4, 0.0, 0.4, 1) alternate forwards;\n    transition: all 1s cubic-bezier(0.4, 0.0, 1, 1);\n  }\n\n  & .mdl-tabs__ripple-container {\n    display: block;\n    position: absolute;\n    height: 100%;\n    width: 100%;\n    left: 0px;\n    top: 0px;\n    z-index: 1;\n    overflow: hidden;\n\n    & .mdl-ripple {\n      background: $tab-highlight-color;\n    }\n  }\n}\n\n.mdl-tabs__panel {\n  display: block;\n\n  .mdl-tabs.is-upgraded & {\n    display: none;\n  }\n\n  .mdl-tabs.is-upgraded &.is-active {\n    display: block;\n  }\n}\n\n@keyframes border-expand {\n  0% {\n    opacity: 0;\n    width: 0;\n  }\n\n  100% {\n    opacity: 1;\n    width: 100%;\n  }\n}\n"
  },
  {
    "path": "src/tabs/snippets/tabs.html",
    "content": "<div class=\"mdl-tabs mdl-js-tabs mdl-js-ripple-effect\">\n  <div class=\"mdl-tabs__tab-bar\">\n      <a href=\"#starks-panel\" class=\"mdl-tabs__tab is-active\">Starks</a>\n      <a href=\"#lannisters-panel\" class=\"mdl-tabs__tab\">Lannisters</a>\n      <a href=\"#targaryens-panel\" class=\"mdl-tabs__tab\">Targaryens</a>\n  </div>\n\n  <div class=\"mdl-tabs__panel is-active\" id=\"starks-panel\">\n    <ul>\n      <li>Eddard</li>\n      <li>Catelyn</li>\n      <li>Robb</li>\n      <li>Sansa</li>\n      <li>Brandon</li>\n      <li>Arya</li>\n      <li>Rickon</li>\n    </ul>\n  </div>\n  <div class=\"mdl-tabs__panel\" id=\"lannisters-panel\">\n    <ul>\n      <li>Tywin</li>\n      <li>Cersei</li>\n      <li>Jamie</li>\n      <li>Tyrion</li>\n    </ul>\n  </div>\n  <div class=\"mdl-tabs__panel\" id=\"targaryens-panel\">\n    <ul>\n      <li>Viserys</li>\n      <li>Daenerys</li>\n    </ul>\n  </div>\n</div>\n"
  },
  {
    "path": "src/tabs/tabs.js",
    "content": "/**\n * @license\n * Copyright 2015 Google Inc. 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 *      http://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(function() {\n  'use strict';\n\n  /**\n   * Class constructor for Tabs MDL component.\n   * Implements MDL component design pattern defined at:\n   * https://github.com/jasonmayes/mdl-component-design-pattern\n   *\n   * @constructor\n   * @param {Element} element The element that will be upgraded.\n   */\n  var MaterialTabs = function MaterialTabs(element) {\n    // Stores the HTML element.\n    this.element_ = element;\n\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialTabs'] = MaterialTabs;\n\n  /**\n   * Store constants in one place so they can be updated easily.\n   *\n   * @enum {string}\n   * @private\n   */\n  MaterialTabs.prototype.Constant_ = {\n    // None at the moment.\n  };\n\n  /**\n   * Store strings for class names defined by this component that are used in\n   * JavaScript. This allows us to simply change it in one place should we\n   * decide to modify at a later date.\n   *\n   * @enum {string}\n   * @private\n   */\n  MaterialTabs.prototype.CssClasses_ = {\n    TAB_CLASS: 'mdl-tabs__tab',\n    PANEL_CLASS: 'mdl-tabs__panel',\n    ACTIVE_CLASS: 'is-active',\n    UPGRADED_CLASS: 'is-upgraded',\n\n    MDL_JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n    MDL_RIPPLE_CONTAINER: 'mdl-tabs__ripple-container',\n    MDL_RIPPLE: 'mdl-ripple',\n    MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events'\n  };\n\n  /**\n   * Handle clicks to a tabs component\n   *\n   * @private\n   */\n  MaterialTabs.prototype.initTabs_ = function() {\n    if (this.element_.classList.contains(this.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {\n      this.element_.classList.add(\n        this.CssClasses_.MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS);\n    }\n\n    // Select element tabs, document panels\n    this.tabs_ = this.element_.querySelectorAll('.' + this.CssClasses_.TAB_CLASS);\n    this.panels_ =\n        this.element_.querySelectorAll('.' + this.CssClasses_.PANEL_CLASS);\n\n    // Create new tabs for each tab element\n    for (var i = 0; i < this.tabs_.length; i++) {\n      new MaterialTab(this.tabs_[i], this);\n    }\n\n    this.element_.classList.add(this.CssClasses_.UPGRADED_CLASS);\n  };\n\n  /**\n   * Reset tab state, dropping active classes\n   *\n   * @private\n   */\n  MaterialTabs.prototype.resetTabState_ = function() {\n    for (var k = 0; k < this.tabs_.length; k++) {\n      this.tabs_[k].classList.remove(this.CssClasses_.ACTIVE_CLASS);\n    }\n  };\n\n  /**\n   * Reset panel state, droping active classes\n   *\n   * @private\n   */\n  MaterialTabs.prototype.resetPanelState_ = function() {\n    for (var j = 0; j < this.panels_.length; j++) {\n      this.panels_[j].classList.remove(this.CssClasses_.ACTIVE_CLASS);\n    }\n  };\n\n  /**\n   * Set the active tab.\n   *\n   * @public\n   * @param {Element|number} tab The tab element or index to set active.\n   */\n  MaterialTabs.prototype.setTab = function(tab) {\n    tab = (typeof tab === 'number') ? this.tabs_[tab] : tab;\n    if (tab && tab.getAttribute('href').charAt(0) === '#') {\n      var href = tab.href.split('#')[1];\n      var panel = this.element_.querySelector('#' + href);\n      this.resetTabState_();\n      this.resetPanelState_();\n      tab.classList.add(this.CssClasses_.ACTIVE_CLASS);\n      panel.classList.add(this.CssClasses_.ACTIVE_CLASS);\n    }\n  };\n\n  /**\n   * Initialize element.\n   */\n  MaterialTabs.prototype.init = function() {\n    if (this.element_) {\n      this.initTabs_();\n    }\n  };\n\n  /**\n   * Constructor for an individual tab.\n   *\n   * @constructor\n   * @param {Element} tab The HTML element for the tab.\n   * @param {MaterialTabs} ctx The MaterialTabs object that owns the tab.\n   */\n  function MaterialTab(tab, ctx) {\n    if (tab) {\n      if (ctx.element_.classList.contains(ctx.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {\n        var rippleContainer = document.createElement('span');\n        rippleContainer.classList.add(ctx.CssClasses_.MDL_RIPPLE_CONTAINER);\n        rippleContainer.classList.add(ctx.CssClasses_.MDL_JS_RIPPLE_EFFECT);\n        var ripple = document.createElement('span');\n        ripple.classList.add(ctx.CssClasses_.MDL_RIPPLE);\n        rippleContainer.appendChild(ripple);\n        tab.appendChild(rippleContainer);\n      }\n\n      tab.addEventListener('click', function(e) {\n        if (tab.getAttribute('href').charAt(0) === '#') {\n          e.preventDefault();\n          ctx.setTab(tab);\n        }\n      });\n\n    }\n  }\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  componentHandler.register({\n    constructor: MaterialTabs,\n    classAsString: 'MaterialTabs',\n    cssClass: 'mdl-js-tabs'\n  });\n})();\n"
  },
  {
    "path": "src/template.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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/* Material Design Lite */\n\n$styleguide-generate-template: true;\n\n@import \"styleguide\";\n"
  },
  {
    "path": "src/textfield/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **text field** component is an enhanced version of the standard HTML `<input type=\"text\">` and `<input type=\"textarea\">` elements. A text field consists of a horizontal line indicating where keyboard input can occur and, typically, text that clearly communicates the intended contents of the text field. The MDL text field component provides various types of text fields, and allows you to add both display and click effects.\n\nText fields are a common feature of most user interfaces, regardless of a site's content or function. Their design and use is therefore an important factor in the overall user experience. See the text field component's [Material Design specifications page](http://www.google.com/design/spec/components/text-fields.html) for details.\n\nThe enhanced text field component has a more vivid visual look than a standard text field, and may be initially or programmatically *disabled*.\nThere are three main types of text fields in the text field component, each with its own basic coding requirements. The types are *single-line*, *multi-line*, and *expandable*.\n\n### To include a *single-line* MDL **text field** component:\n\n&nbsp;1. Code a `<div>` element to hold the text field.\n```html\n<div>\n...\n</div>\n```\n&nbsp;2. Inside the div, code an `<input>` element with a `type` attribute of `\"text\"` (the text field), and an `id` attribute of your choice.\n```html\n<div>\n  <input type=\"text\" id=\"user\">\n</div>\n```\n&nbsp;3. Also inside the div, after the text field, code a `<label>` element with a `for` attribute whose value matches the `input` element's `id` value, and a short string to be used as the field's placeholder text.\n```html\n<div>\n  <input type=\"text\" id=\"user\">\n  <label for=\"user\">User name</label>\n</div>\n```\n&nbsp;4. Optionally, add a `pattern` attribute and value to the `<input>` element (see the [W3C HTML5 forms specification](http://www.w3.org/TR/html5/forms.html#the-pattern-attribute) for details) and an associated error message in a `<span>` element following the `<label>`.\n```html\n<div>\n  <input type=\"text\" id=\"user\" pattern=\"[A-Z,a-z, ]*\">\n  <label for=\"user\">User name</label>\n  <span>Letters and spaces only</span>\n</div>\n```\n&nbsp;5. Add one or more MDL classes, separated by spaces, to the div container, text field, field label, and error message using the `class` attribute.\n```html\n<div class=\"mdl-textfield mdl-js-textfield\">\n  <input class=\"mdl-textfield__input\" type=\"text\" id=\"user\" pattern=\"[A-Z,a-z, ]*\">\n  <label class=\"mdl-textfield__label\" for=\"user\">User name</label>\n  <span class=\"mdl-textfield__error\">Letters and spaces only</span>\n</div>\n```\nThe single-line text field component is ready for use.\n\n#### Examples\n\nSingle-line text field with a standard label.\n```html\n<div class=\"mdl-textfield mdl-js-textfield\">\n  <input class=\"mdl-textfield__input\" type=\"text\" id=\"fname\">\n  <label class=\"mdl-textfield__label\" for=\"fname\">First name</label>\n</div>\n```\n\nSingle-line text field with a floating label.\n```html\n<div class=\"mdl-textfield mdl-js-textfield mdl-textfield--floating-label\">\n  <input class=\"mdl-textfield__input\" type=\"text\" id=\"addr1\">\n  <label class=\"mdl-textfield__label\" for=\"addr1\">Address line 1</label>\n</div>\n```\n\nSingle-line text field with a standard label, pattern matching, and error message.\n```html\n<div class=\"mdl-textfield mdl-js-textfield\">\n  <input class=\"mdl-textfield__input\" type=\"text\" pattern=\"[0-9]*\" id=\"phone\">\n  <label class=\"mdl-textfield__label\" for=\"phone\">Phone</label>\n  <span class=\"mdl-textfield__error\">Digits only</span>\n</div>\n```\n\n### To include a *multi-line* MDL **text field** component:\n\n&nbsp;1. Code a `<div>` element to hold the text field.\n```html\n<div>\n...\n</div>\n```\n&nbsp;2. Inside the div, code a `<textarea>` element with a `type` attribute of `\"text\"` (the multi-line text field), and an `id` attribute of your choice. Include a `rows` attribute with a value of `\"1\"` (this attribute sets the number of *concurrently visible* input rows).\n```html\n<div>\n  <textarea type=\"text\" rows=\"1\" id=\"address\"></textarea>\n</div>\n```\n&nbsp;3. Also inside the div, after the text field, code a `<label>` element with a `for` attribute whose value matches the `<textarea>` element's `id` value, and a short string to be used as the field's placeholder text.\n```html\n<div>\n  <textarea type=\"text\" rows=\"1\" id=\"address\"></textarea>\n  <label for=\"address\">Full address</label>\n</div>\n```\n&nbsp;4. Add one or more MDL classes, separated by spaces, to the div container, text field, and field label using the `class` attribute.\n```html\n<div class=\"mdl-textfield mdl-js-textfield\">\n  <textarea class=\"mdl-textfield__input\" type=\"text\" rows=\"1\" id=\"address\"></textarea>\n  <label class=\"mdl-textfield__label\" for=\"address\">Full address</label>\n</div>\n```\n\nThe multi-line text field component is ready for use.\n\n#### Examples\n\nMulti-line text field with one visible input line.\n```html\n<div class=\"mdl-textfield mdl-js-textfield\">\n  <textarea class=\"mdl-textfield__input\" type=\"text\" rows=\"1\" id=\"schools\"></textarea>\n  <label class=\"mdl-textfield__label\" for=\"schools\">Schools attended</label>\n</div>\n```\n\nMulti-line text field with one visible input line and floating label.\n```html\n<div class=\"mdl-textfield mdl-js-textfield mdl-textfield--floating-label\">\n  <textarea class=\"mdl-textfield__input\" type=\"text\" rows= \"1\" id=\"schools\"></textarea>\n  <label class=\"mdl-textfield__label\" for=\"schools\">Schools attended</label>\n</div>\n```\n\nMulti-line text field with multiple visible input lines and a maximum number of lines.\n```html\n<div class=\"mdl-textfield mdl-js-textfield\">\n  <textarea class=\"mdl-textfield__input\" type=\"text\" rows=\"3\" maxrows=\"6\"\n   id=\"schools\"></textarea>\n  <label class=\"mdl-textfield__label\" for=\"schools\">Schools attended (max. 6)</label>\n</div>\n```\n\n### To include an *expandable* MDL **text field** component:\n\n&nbsp;1. Code an \"outer\" `<div>` element to hold the expandable text field.\n```html\n<div>\n...\n</div>\n```\n&nbsp;2. Inside the div, code a `<label>` element with a `for` attribute whose value will match the `<input>` element's `id` value (to be coded in step 5).\n```html\n<div>\n  <label for=\"expando1\">\n  ...\n  </label>\n</div>\n```\n&nbsp;3. Inside the label, code a `<span>` element; the span should be empty, and should be the label's only content. This element will contain the expandable text field's icon.\n```html\n<div>\n  <label for=\"expando1\">\n    <span></span>\n  </label>\n</div>\n```\n&nbsp;4. Still inside the \"outer\" div, after the label containing the span, code an \"inner\" (nested) `<div>` element.\n```html\n<div>\n  <label for=\"expando1\">\n    <span></span>\n  </label>\n  <div>\n  ...\n  </div>\n</div>\n```\n&nbsp;5. Inside the \"inner\" div, code an `<input>` element with a `type` attribute of `\"text\"` (the text field), and an `id` attribute whose value matches that of the `for` attribute in step 2.\n```html\n<div>\n  <label for=\"expando1\">\n    <span></span>\n  </label>\n  <div>\n    <input type=\"text\" id=\"expando1\">\n  </div>\n</div>\n```\n&nbsp;6. Still inside the \"inner\" div, after the text field, code a `<label>` element with a `for` attribute whose value also matches the `<input>` element's `id` value (coded in step 5), and a short string to be used as the field's placeholder text.\n```html\n<div>\n  <label for=\"expando1\">\n    <span></span>\n  </label>\n  <div>\n    <input type=\"text\" id=\"expando1\">\n    <label for=\"expando1\">Expandable text field</label>\n  </div>\n</div>\n```\n&nbsp;7. Add one or more MDL classes, separated by spaces, to the \"outer\" div container, label, and span, and to the \"inner\" div container, text field, and field label using the `class` attribute.\n```html\n<div class=\"mdl-textfield mdl-js-textfield mdl-textfield--expandable\">\n  <label class=\"mdl-button mdl-js-button mdl-button--icon\" for=\"expando1\">\n    <i class=\"material-icons\">search</i>\n  </label>\n  <div class=\"mdl-textfield__expandable-holder\">\n    <input class=\"mdl-textfield__input\" type=\"text\" id=\"expando1\">\n    <label class=\"mdl-textfield__label\" for=\"expando1\">Expandable text field</label>\n  </div>\n</div>\n```\n\nThe expandable text field component is ready for use. It will expand when the icon (the empty `<span>`) is clicked or gains focus.\n\n#### Examples\n\nExpandable text field with a standard label.\n```html\n<div class=\"mdl-textfield mdl-js-textfield mdl-textfield--expandable\">\n  <label class=\"mdl-button mdl-js-button mdl-button--icon\" for=\"search-expandable\">\n    <i class=\"material-icons\">search</i>\n  </label>\n  <div class=\"mdl-textfield__expandable-holder\">\n    <input class=\"mdl-textfield__input\" type=\"text\" id=\"search-expandable\">\n    <label class=\"mdl-textfield__label\" for=\"search-expandable\">Search text</label>\n  </div>\n</div>\n```\n\nExpandable text field with a floating label.\n```html\n<div class=\"mdl-textfield mdl-js-textfield mdl-textfield--expandable\n mdl-textfield--floating-label\">\n  <label class=\"mdl-button mdl-js-button mdl-button--icon\" for=\"search-expandable2\">\n    <i class=\"material-icons\">search</i>\n  </label>\n  <div class=\"mdl-textfield__expandable-holder\">\n    <input class=\"mdl-textfield__input\" type=\"text\" id=\"search-expandable2\">\n    <label class=\"mdl-textfield__label\" for=\"search-expandable2\">\n      Enter search text below\n    </label>\n  </div>\n</div>\n```\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual and behavioral enhancements to the text field. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-textfield` | Defines container as an MDL component | Required on \"outer\" div element|\n| `mdl-js-textfield` | Assigns basic MDL behavior to input | Required on \"outer\" div element |\n| `mdl-textfield__input` | Defines element as textfield input | Required on input or textarea element |\n| `mdl-textfield__label` | Defines element as textfield label | Required on label element for input or textarea elements |\n| `mdl-textfield--floating-label` | Applies *floating label* effect | Optional; goes on \"outer\" div element |\n| `mdl-textfield__error` | Defines span as an MDL error message | Optional; goes on span element for MDL input element with *pattern*|\n| `mdl-textfield--expandable` | Defines a div as an MDL expandable text field container | For expandable input fields, required on \"outer\" div element |\n| `mdl-button` | Defines label as an MDL icon button | For expandable input fields, required on \"outer\" div's label element |\n| `mdl-js-button` | Assigns basic behavior to icon container | For expandable input fields, required on \"outer\" div's label element |\n| `mdl-button--icon` | Defines label as an MDL icon container | For expandable input fields, required on \"outer\" div's label element |\n| `mdl-input__expandable-holder` | Defines a container as an MDL component | For expandable input fields, required on \"inner\" div element |\n| `is-invalid` | Defines the textfield as invalid on initial load. | Optional on `mdl-textfield` element |\n\n(1) The \"search\" icon is used here as an example. Other icons can be used by modifying the text. For a list of available icons, see [this page](https://www.google.com/design/icons).\n\n>**Note:** Disabled versions of each text field type are provided, and are invoked with the standard HTML boolean attribute `disabled`. `<input class=\"mdl-textfield mdl-js-textfield\" type=\"text\" disabled>`\n>This attribute may be added or removed programmatically via scripting.\n"
  },
  {
    "path": "src/textfield/_textfield.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n@import \"../mixins\";\n\n// The container for the whole component.\n.mdl-textfield {\n  position: relative;\n  font-size: $input-text-font-size;\n  display: inline-block;\n  box-sizing: border-box;\n  width: 300px;\n  max-width: 100%;\n  margin: 0;\n  padding: $input-text-vertical-spacing 0;\n\n  // Align buttons, if used.\n  & .mdl-button {\n    position: absolute;\n    bottom: $input-text-vertical-spacing;\n  }\n}\n\n// Optional class to align right.\n.mdl-textfield--align-right {\n  text-align: right;\n}\n\n// Optional class to display at full width.\n.mdl-textfield--full-width {\n  width: 100%;\n}\n\n// Optional class to make the text field expandable.\n.mdl-textfield--expandable {\n  min-width: $input-text-button-size;\n  width: auto;\n  min-height: $input-text-button-size;\n  \n  // Align icon button\n  .mdl-button--icon {\n    top: $input-text-expandable-icon-top;\n  }\n}\n\n// Styling for the input element.\n.mdl-textfield__input {\n  border: none;\n  border-bottom: 1px solid $input-text-bottom-border-color;\n  display: block;\n  font-size: $input-text-font-size;\n  font-family: $performance_font;\n  margin: 0;\n  padding: $input-text-padding 0;\n  width: $input-text-width;\n  background: none;\n  text-align: left;\n  color: inherit;\n\n  &[type=\"number\"] {\n    -moz-appearance: textfield;\n  }\n\n  &[type=\"number\"]::-webkit-inner-spin-button,\n  &[type=\"number\"]::-webkit-outer-spin-button {\n    -webkit-appearance: none;\n    margin: 0;\n  }\n\n  .mdl-textfield.is-focused & {\n    outline: none;\n  }\n\n  .mdl-textfield.is-invalid & {\n    border-color: $input-text-error-color;\n    box-shadow: none;\n  }\n\n  fieldset[disabled] .mdl-textfield &,\n  .mdl-textfield.is-disabled & {\n    background-color: transparent;\n    border-bottom: 1px dotted $input-text-disabled-color;\n    color: $input-text-disabled-text-color;\n  }\n}\n\n.mdl-textfield textarea.mdl-textfield__input {\n  display: block;\n}\n\n// Styling for the label / floating label.\n.mdl-textfield__label {\n  bottom: 0;\n  color: $input-text-label-color;\n  font-size: $input-text-font-size;\n  left: 0;\n  right: 0;\n  pointer-events: none;\n  position: absolute;\n  display: block;\n  top: ($input-text-padding + $input-text-vertical-spacing);\n  width: 100%;\n  overflow: hidden;\n  white-space: nowrap;\n  text-align: left;\n\n  .mdl-textfield.is-dirty &,\n  .mdl-textfield.has-placeholder & {\n    visibility: hidden;\n  }\n\n  // Floating Label\n  .mdl-textfield--floating-label & {\n    @include material-animation-default();\n  }\n\n  .mdl-textfield--floating-label.has-placeholder & {\n    transition: none;\n  }\n\n  fieldset[disabled] .mdl-textfield &,\n  .mdl-textfield.is-disabled.is-disabled & {\n    color: $input-text-disabled-text-color;\n  }\n\n  .mdl-textfield--floating-label.is-focused &,\n  .mdl-textfield--floating-label.is-dirty &,\n  .mdl-textfield--floating-label.has-placeholder & {\n    color: $input-text-highlight-color;\n    font-size : $input-text-floating-label-fontsize;\n    top: $input-text-vertical-spacing - ($input-text-floating-label-fontsize + $input-text-padding);\n    visibility: visible;\n  }\n\n  .mdl-textfield--floating-label.is-focused .mdl-textfield__expandable-holder &,\n  .mdl-textfield--floating-label.is-dirty .mdl-textfield__expandable-holder &,\n  .mdl-textfield--floating-label.has-placeholder .mdl-textfield__expandable-holder & {\n    top: -($input-text-floating-label-fontsize + $input-text-padding);\n  }\n\n  .mdl-textfield--floating-label.is-invalid & {\n    color: $input-text-error-color;\n    font-size: $input-text-floating-label-fontsize;\n  }\n\n  // The after label is the colored underline for the TextField.\n  &:after {\n    background-color: $input-text-highlight-color;\n    bottom: $input-text-vertical-spacing;\n    content: '';\n    height: 2px;\n    left: 45%;\n    position: absolute;\n    @include material-animation-default();\n    visibility: hidden;\n    width: 10px;\n  }\n\n  .mdl-textfield.is-focused &:after {\n    left: 0;\n    visibility: visible;\n    width: 100%;\n  }\n\n  .mdl-textfield.is-invalid &:after {\n    background-color: $input-text-error-color;\n  }\n}\n\n// TextField Error.\n.mdl-textfield__error {\n  color: $input-text-error-color;\n  position: absolute;\n  font-size: $input-text-floating-label-fontsize;\n  margin-top: 3px;\n  visibility: hidden;\n  display: block;\n\n  .mdl-textfield.is-invalid & {\n    visibility: visible;\n  }\n}\n\n// Expandable Holder.\n.mdl-textfield__expandable-holder {\n  display: inline-block;\n  position: relative;\n  margin-left: $input-text-button-size;\n\n  @include material-animation-default();\n  display: inline-block;\n\n  // Safari (possibly others) need to be convinced that this field is actually\n  // visible, otherwise it cannot be tabbed to nor focused via a <label>.\n  // TODO: In some cases (Retina displays), this is big enough to render the\n  // inner element :(\n  max-width: 0.1px;\n\n  .mdl-textfield.is-focused &, .mdl-textfield.is-dirty & {\n    // This is an unfortunate hack. Animating between widths in percent (%)\n    // in many browsers (Chrome, Firefox) only animates the inner visual style\n    // of the input - the outer bounding box still 'jumps'.\n    // Thus assume a sensible maximum, and animate to/from that value.\n    max-width: 600px;\n  }\n  .mdl-textfield__label:after {\n    bottom: 0;\n  }\n}\n"
  },
  {
    "path": "src/textfield/snippets/textfield-expanding-demo.html",
    "content": "<style>\n  .demo-textfield__textfield-expanding .mdl-textfield {\n    width: 100px;\n  }\n</style>\n\n{% include \"textfield-expanding.html\" %}\n"
  },
  {
    "path": "src/textfield/snippets/textfield-expanding.html",
    "content": "<!-- Expandable Textfield -->\n<form action=\"#\">\n  <div class=\"mdl-textfield mdl-js-textfield mdl-textfield--expandable\">\n    <label class=\"mdl-button mdl-js-button mdl-button--icon\" for=\"sample6\">\n      <i class=\"material-icons\">search</i>\n    </label>\n    <div class=\"mdl-textfield__expandable-holder\">\n      <input class=\"mdl-textfield__input\" type=\"text\" id=\"sample6\">\n      <label class=\"mdl-textfield__label\" for=\"sample-expandable\">Expandable Input</label>\n    </div>\n  </div>\n</form>\n"
  },
  {
    "path": "src/textfield/snippets/textfield-floating-numeric-demo.html",
    "content": "<style>\n  .demo-textfield__textfield-floating-numeric .mdl-textfield {\n    width: 100px;\n  }\n</style>\n\n{% include \"textfield-floating-numeric.html\" %}\n"
  },
  {
    "path": "src/textfield/snippets/textfield-floating-numeric.html",
    "content": "<!-- Numeric Textfield with Floating Label -->\n<form action=\"#\">\n  <div class=\"mdl-textfield mdl-js-textfield mdl-textfield--floating-label\">\n    <input class=\"mdl-textfield__input\" type=\"text\" pattern=\"-?[0-9]*(\\.[0-9]+)?\" id=\"sample4\">\n    <label class=\"mdl-textfield__label\" for=\"sample4\">Number...</label>\n    <span class=\"mdl-textfield__error\">Input is not a number!</span>\n  </div>\n</form>\n"
  },
  {
    "path": "src/textfield/snippets/textfield-floating-text-demo.html",
    "content": "<style>\n  .demo-textfield__textfield-floating-text .mdl-textfield {\n    width: 100px;\n  }\n</style>\n\n{% include \"textfield-floating-text.html\" %}\n"
  },
  {
    "path": "src/textfield/snippets/textfield-floating-text.html",
    "content": "<!-- Textfield with Floating Label -->\n\n<form action=\"#\">\n  <div class=\"mdl-textfield mdl-js-textfield mdl-textfield--floating-label\">\n    <input class=\"mdl-textfield__input\" type=\"text\" id=\"sample3\">\n    <label class=\"mdl-textfield__label\" for=\"sample3\">Text...</label>\n  </div>\n</form>\n"
  },
  {
    "path": "src/textfield/snippets/textfield-multi-line-demo.html",
    "content": "<style>\n  .demo-textfield__textfield-multi-line .mdl-textfield {\n    width: 100px;\n  }\n</style>\n\n{% include \"textfield-multi-line.html\" %}\n"
  },
  {
    "path": "src/textfield/snippets/textfield-multi-line.html",
    "content": "<!-- Floating Multiline Textfield -->\n<form action=\"#\">\n  <div class=\"mdl-textfield mdl-js-textfield\">\n    <textarea class=\"mdl-textfield__input\" type=\"text\" rows= \"3\" id=\"sample5\" ></textarea>\n    <label class=\"mdl-textfield__label\" for=\"sample5\">Text lines...</label>\n  </div>\n</form>\n"
  },
  {
    "path": "src/textfield/snippets/textfield-numeric-demo.html",
    "content": "<style>\n  .demo-textfield__textfield-numeric .mdl-textfield {\n    width: 100px;\n  }\n</style>\n\n{% include \"textfield-numeric.html\" %}\n"
  },
  {
    "path": "src/textfield/snippets/textfield-numeric.html",
    "content": "<!-- Numeric Textfield -->\n<form action=\"#\">\n  <div class=\"mdl-textfield mdl-js-textfield\">\n    <input class=\"mdl-textfield__input\" type=\"text\" pattern=\"-?[0-9]*(\\.[0-9]+)?\" id=\"sample2\">\n    <label class=\"mdl-textfield__label\" for=\"sample2\">Number...</label>\n    <span class=\"mdl-textfield__error\">Input is not a number!</span>\n  </div>\n</form>\n"
  },
  {
    "path": "src/textfield/snippets/textfield-text-demo.html",
    "content": "<style>\n  .demo-textfield__textfield-text .mdl-textfield {\n    width: 100px;\n  }\n</style>\n\n{% include \"textfield-text.html\" %}\n"
  },
  {
    "path": "src/textfield/snippets/textfield-text.html",
    "content": "<!-- Simple Textfield -->\n<form action=\"#\">\n  <div class=\"mdl-textfield mdl-js-textfield\">\n    <input class=\"mdl-textfield__input\" type=\"text\" id=\"sample1\">\n    <label class=\"mdl-textfield__label\" for=\"sample1\">Text...</label>\n  </div>\n</form>\n"
  },
  {
    "path": "src/textfield/textfield.js",
    "content": "/**\n * @license\n * Copyright 2015 Google Inc. 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 *      http://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(function() {\n  'use strict';\n\n  /**\n   * Class constructor for Textfield MDL component.\n   * Implements MDL component design pattern defined at:\n   * https://github.com/jasonmayes/mdl-component-design-pattern\n   *\n   * @constructor\n   * @param {HTMLElement} element The element that will be upgraded.\n   */\n  var MaterialTextfield = function MaterialTextfield(element) {\n    this.element_ = element;\n    this.maxRows = this.Constant_.NO_MAX_ROWS;\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialTextfield'] = MaterialTextfield;\n\n  /**\n   * Store constants in one place so they can be updated easily.\n   *\n   * @enum {string | number}\n   * @private\n   */\n  MaterialTextfield.prototype.Constant_ = {\n    NO_MAX_ROWS: -1,\n    MAX_ROWS_ATTRIBUTE: 'maxrows'\n  };\n\n  /**\n   * Store strings for class names defined by this component that are used in\n   * JavaScript. This allows us to simply change it in one place should we\n   * decide to modify at a later date.\n   *\n   * @enum {string}\n   * @private\n   */\n  MaterialTextfield.prototype.CssClasses_ = {\n    LABEL: 'mdl-textfield__label',\n    INPUT: 'mdl-textfield__input',\n    IS_DIRTY: 'is-dirty',\n    IS_FOCUSED: 'is-focused',\n    IS_DISABLED: 'is-disabled',\n    IS_INVALID: 'is-invalid',\n    IS_UPGRADED: 'is-upgraded',\n    HAS_PLACEHOLDER: 'has-placeholder'\n  };\n\n  /**\n   * Handle input being entered.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialTextfield.prototype.onKeyDown_ = function(event) {\n    var currentRowCount = event.target.value.split('\\n').length;\n    if (event.keyCode === 13) {\n      if (currentRowCount >= this.maxRows) {\n        event.preventDefault();\n      }\n    }\n  };\n\n  /**\n   * Handle focus.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialTextfield.prototype.onFocus_ = function(event) {\n    this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n  };\n\n  /**\n   * Handle lost focus.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialTextfield.prototype.onBlur_ = function(event) {\n    this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n  };\n\n  /**\n   * Handle reset event from out side.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialTextfield.prototype.onReset_ = function(event) {\n    this.updateClasses_();\n  };\n\n  /**\n   * Handle class updates.\n   *\n   * @private\n   */\n  MaterialTextfield.prototype.updateClasses_ = function() {\n    this.checkDisabled();\n    this.checkValidity();\n    this.checkDirty();\n    this.checkFocus();\n  };\n\n  // Public methods.\n\n  /**\n   * Check the disabled state and update field accordingly.\n   *\n   * @public\n   */\n  MaterialTextfield.prototype.checkDisabled = function() {\n    if (this.input_.disabled) {\n      this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n    } else {\n      this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n    }\n  };\n  MaterialTextfield.prototype['checkDisabled'] =\n      MaterialTextfield.prototype.checkDisabled;\n\n  /**\n  * Check the focus state and update field accordingly.\n  *\n  * @public\n  */\n  MaterialTextfield.prototype.checkFocus = function() {\n    if (Boolean(this.element_.querySelector(':focus'))) {\n      this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n    } else {\n      this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n    }\n  };\n  MaterialTextfield.prototype['checkFocus'] =\n    MaterialTextfield.prototype.checkFocus;\n\n  /**\n   * Check the validity state and update field accordingly.\n   *\n   * @public\n   */\n  MaterialTextfield.prototype.checkValidity = function() {\n    if (this.input_.validity) {\n      if (this.input_.validity.valid) {\n        this.element_.classList.remove(this.CssClasses_.IS_INVALID);\n      } else {\n        this.element_.classList.add(this.CssClasses_.IS_INVALID);\n      }\n    }\n  };\n  MaterialTextfield.prototype['checkValidity'] =\n      MaterialTextfield.prototype.checkValidity;\n\n  /**\n   * Check the dirty state and update field accordingly.\n   *\n   * @public\n   */\n  MaterialTextfield.prototype.checkDirty = function() {\n    if (\n      (this.input_.value && this.input_.value.length > 0) ||\n      (this.input_.placeholder.trim() !== '')\n    ) {\n      this.element_.classList.add(this.CssClasses_.IS_DIRTY);\n    } else {\n      this.element_.classList.remove(this.CssClasses_.IS_DIRTY);\n    }\n  };\n  MaterialTextfield.prototype['checkDirty'] =\n      MaterialTextfield.prototype.checkDirty;\n\n  /**\n   * Disable text field.\n   *\n   * @public\n   */\n  MaterialTextfield.prototype.disable = function() {\n    this.input_.disabled = true;\n    this.updateClasses_();\n  };\n  MaterialTextfield.prototype['disable'] = MaterialTextfield.prototype.disable;\n\n  /**\n   * Enable text field.\n   *\n   * @public\n   */\n  MaterialTextfield.prototype.enable = function() {\n    this.input_.disabled = false;\n    this.updateClasses_();\n  };\n  MaterialTextfield.prototype['enable'] = MaterialTextfield.prototype.enable;\n\n  /**\n   * Update text field value.\n   *\n   * @param {string} value The value to which to set the control (optional).\n   * @public\n   */\n  MaterialTextfield.prototype.change = function(value) {\n\n    this.input_.value = value || '';\n    this.updateClasses_();\n  };\n  MaterialTextfield.prototype['change'] = MaterialTextfield.prototype.change;\n\n  /**\n   * Initialize element.\n   */\n  MaterialTextfield.prototype.init = function() {\n\n    if (this.element_) {\n      this.label_ = this.element_.querySelector('.' + this.CssClasses_.LABEL);\n      this.input_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n\n      if (this.input_) {\n        if (this.input_.hasAttribute(\n              /** @type {string} */ (this.Constant_.MAX_ROWS_ATTRIBUTE))) {\n          this.maxRows = parseInt(this.input_.getAttribute(\n              /** @type {string} */ (this.Constant_.MAX_ROWS_ATTRIBUTE)), 10);\n          if (isNaN(this.maxRows)) {\n            this.maxRows = this.Constant_.NO_MAX_ROWS;\n          }\n        }\n\n        if (this.input_.hasAttribute('placeholder')) {\n          this.element_.classList.add(this.CssClasses_.HAS_PLACEHOLDER);\n        }\n\n        this.boundUpdateClassesHandler = this.updateClasses_.bind(this);\n        this.boundFocusHandler = this.onFocus_.bind(this);\n        this.boundBlurHandler = this.onBlur_.bind(this);\n        this.boundResetHandler = this.onReset_.bind(this);\n        this.input_.addEventListener('input', this.boundUpdateClassesHandler);\n        this.input_.addEventListener('focus', this.boundFocusHandler);\n        this.input_.addEventListener('blur', this.boundBlurHandler);\n        this.input_.addEventListener('reset', this.boundResetHandler);\n\n        if (this.maxRows !== this.Constant_.NO_MAX_ROWS) {\n          // TODO: This should handle pasting multi line text.\n          // Currently doesn't.\n          this.boundKeyDownHandler = this.onKeyDown_.bind(this);\n          this.input_.addEventListener('keydown', this.boundKeyDownHandler);\n        }\n        var invalid = this.element_.classList\n          .contains(this.CssClasses_.IS_INVALID);\n        this.updateClasses_();\n        this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n        if (invalid) {\n          this.element_.classList.add(this.CssClasses_.IS_INVALID);\n        }\n        if (this.input_.hasAttribute('autofocus')) {\n          this.element_.focus();\n          this.checkFocus();\n        }\n      }\n    }\n  };\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  componentHandler.register({\n    constructor: MaterialTextfield,\n    classAsString: 'MaterialTextfield',\n    cssClass: 'mdl-js-textfield',\n    widget: true\n  });\n})();\n"
  },
  {
    "path": "src/third_party/rAF.js",
    "content": "// Source: https://github.com/darius/requestAnimationFrame/blob/master/requestAnimationFrame.js\n// Adapted from https://gist.github.com/paulirish/1579671 which derived from\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n\n// requestAnimationFrame polyfill by Erik Möller.\n// Fixes from Paul Irish, Tino Zijdel, Andrew Mao, Klemen Slavič, Darius Bacon\n\n// MIT license\n\n(function() {\n  'use strict';\n\n  if (!Date.now) {\n    /**\n     * Date.now polyfill.\n     * @return {number} the current Date\n     */\n    Date.now = function() { return new Date().getTime(); };\n    Date['now'] = Date.now;\n  }\n\n  var vendors = ['webkit', 'moz'];\n  for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n    var vp = vendors[i];\n    window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];\n    window.cancelAnimationFrame = (window[vp + 'CancelAnimationFrame'] ||\n        window[vp + 'CancelRequestAnimationFrame']);\n    window['requestAnimationFrame'] = window.requestAnimationFrame;\n    window['cancelAnimationFrame'] = window.cancelAnimationFrame;\n  }\n\n  if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n    var lastTime = 0;\n    /**\n     * requestAnimationFrame polyfill.\n     * @param  {!Function} callback the callback function.\n     */\n    window.requestAnimationFrame = function(callback) {\n      var now = Date.now();\n      var nextTime = Math.max(lastTime + 16, now);\n      return setTimeout(function() { callback(lastTime = nextTime); },\n                        nextTime - now);\n    };\n    window.cancelAnimationFrame = clearTimeout;\n    window['requestAnimationFrame'] = window.requestAnimationFrame;\n    window['cancelAnimationFrame'] = window.cancelAnimationFrame;\n  }\n\n})();\n"
  },
  {
    "path": "src/tooltip/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **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 MDL tooltip component is pre-styled (colors, fonts, and other settings are contained in *material.min.css*) 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 [Material Design specifications page](http://www.google.com/design/spec/components/tooltips.html) for details.\n\n### To include an MDL **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=\"tt1\">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` (or `data-mdl-for`) attribute whose value matches that of the target's `id`.\n```html\n<p id=\"tt1\">HTML</p>\n<span for=\"tt1\">HyperText Markup Language</span>\n```\n&nbsp;3. Add one or more MDL classes, separated by spaces, to the tooltip element using the `class` attribute.\n```html\n<p id=\"tt1\">HTML</p>\n<span for=\"tt1\" class=\"mdl-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>HTML is related to but different from <span id=\"xml\"><i>XML</i></span>.</p>\n<span class=\"mdl-tooltip\" for=\"xml\">eXtensible Markup Language</span>\n```\n\nA target with \"rich\" (containing HTML markup) tooltip text.\n```html\n<p>HTML is related to but different from <span id=\"xml\"><i>XML</i></span>.</p>\n<span class=\"mdl-tooltip\" for=\"xml\">e<b>X</b>tensible <b>M</b>arkup <b>L</b>anguage</span>\n```\n\nA target with a long text tooltip that automatically wraps.\n```html\n<p>HTML is related to but different from <span id=\"xml\"><i>XML</i></span>.</p>\n<span class=\"mdl-tooltip\" for=\"xml\">XML is an acronym for eXtensible Markup Language</span>\n```\n\nA target with tooltip text in a larger font size.\n```html\n<p>HTML is related to but different from <span id=\"xml\"><i>XML</i></span>.</p>\n<span class=\"mdl-tooltip mdl-tooltip--large\" for=\"xml\">eXtensible Markup Language</span>\n```\n\nA target with a tooltip containing both an image and text.\n```html\n<p>HTML is related to but different from <span id=\"xml\"><i>XML</i></span>.</p>\n<span class=\"mdl-tooltip\" for=\"xml\">\n<img src=\"xml-logo-small.png\" width=\"20\" height=\"10\"> eXtensible Markup Language</span>\n```\n\n## Configuration options\n\nThe MDL CSS classes apply various predefined visual enhancements to the tooltip. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-tooltip` | Defines a container as an MDL tooltip | Required on tooltip container element |\n| `mdl-tooltip--large` | Applies large-font effect | Optional; goes on tooltip container element |\n| `mdl-tooltip--left` | Positions the tooltip to the left of the target | Optional; goes on tooltip container element |\n| `mdl-tooltip--right` | Positions the tooltip to the right of the target | Optional; goes on tooltip container element |\n| `mdl-tooltip--top` | Positions the tooltip to the top of the target | Optional; goes on tooltip container element |\n| `mdl-tooltip--bottom` | Positions the tooltip to the bottom of the target | Optional; goes on tooltip container element |\n"
  },
  {
    "path": "src/tooltip/_tooltip.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n\n.mdl-tooltip {\n  transform: scale(0);\n  transform-origin: top center;\n  z-index: 999;\n  background: $tooltip-background-color;\n  border-radius: 2px;\n  color: $tooltip-text-color;\n  display: inline-block;\n  font-size: $tooltip-font-size;\n  font-weight: 500;\n  line-height: 14px;\n  max-width: 170px;\n  position: fixed;\n  top: -500px;\n  left: -500px;\n  padding: 8px;\n  text-align: center;\n}\n.mdl-tooltip.is-active {\n  animation: pulse 200ms $animation-curve-linear-out-slow-in forwards;\n}\n\n.mdl-tooltip--large {\n  line-height: 14px;\n  font-size: $tooltip-font-size-large;\n  padding: 16px;\n}\n\n@keyframes pulse {\n  0% {\n    transform: scale(0);\n    opacity: 0;\n  }\n  50% {\n    // Fixes a weird bug with the interaction between Safari and the result of\n    // the SASS compilation for the animation.\n    // Essentially, we need to make sure that \"50%\" and \"100%\" don't get merged\n    // into a single \"50%, 100%\" entry, so we need to avoid them having any\n    // matching properties.\n    transform: scale(0.99);\n  }\n  100% {\n    transform: scale(1);\n    opacity: 1;\n    visibility: visible;\n  }\n}\n"
  },
  {
    "path": "src/tooltip/snippets/tooltip-large.html",
    "content": "<!-- Large Tooltip -->\n<div id=\"tt2\" class=\"icon material-icons\">print</div>\n<div class=\"mdl-tooltip mdl-tooltip--large\" for=\"tt2\">\nPrint\n</div>\n"
  },
  {
    "path": "src/tooltip/snippets/tooltip-multiline.html",
    "content": "<!-- Multiline Tooltip -->\n<div id=\"tt4\" class=\"icon material-icons\">share</div>\n<div class=\"mdl-tooltip\" for=\"tt4\">\nShare your content<br>via social media\n</div>\n"
  },
  {
    "path": "src/tooltip/snippets/tooltip-rich.html",
    "content": "<!-- Rich Tooltip -->\n<div id=\"tt3\" class=\"icon material-icons\">cloud_upload</div>\n<div class=\"mdl-tooltip\" data-mdl-for=\"tt3\">\nUpload <strong>file.zip</strong>\n</div>\n"
  },
  {
    "path": "src/tooltip/snippets/tooltip-simple.html",
    "content": "<!-- Simple Tooltip -->\n<div id=\"tt1\" class=\"icon material-icons\">add</div>\n<div class=\"mdl-tooltip\" data-mdl-for=\"tt1\">\nFollow\n</div>\n"
  },
  {
    "path": "src/tooltip/tooltip.js",
    "content": "/**\n * @license\n * Copyright 2015 Google Inc. 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 *      http://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(function() {\n  'use strict';\n\n  /**\n   * Class constructor for Tooltip MDL component.\n   * Implements MDL component design pattern defined at:\n   * https://github.com/jasonmayes/mdl-component-design-pattern\n   *\n   * @constructor\n   * @param {HTMLElement} element The element that will be upgraded.\n   */\n  var MaterialTooltip = function MaterialTooltip(element) {\n    this.element_ = element;\n\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialTooltip'] = MaterialTooltip;\n\n  /**\n   * Store constants in one place so they can be updated easily.\n   *\n   * @enum {string | number}\n   * @private\n   */\n  MaterialTooltip.prototype.Constant_ = {\n    // None for now.\n  };\n\n  /**\n   * Store strings for class names defined by this component that are used in\n   * JavaScript. This allows us to simply change it in one place should we\n   * decide to modify at a later date.\n   *\n   * @enum {string}\n   * @private\n   */\n  MaterialTooltip.prototype.CssClasses_ = {\n    IS_ACTIVE: 'is-active',\n    BOTTOM: 'mdl-tooltip--bottom',\n    LEFT: 'mdl-tooltip--left',\n    RIGHT: 'mdl-tooltip--right',\n    TOP: 'mdl-tooltip--top'\n  };\n\n  /**\n   * Handle mouseenter for tooltip.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialTooltip.prototype.handleMouseEnter_ = function(event) {\n    var props = event.target.getBoundingClientRect();\n    var left = props.left + (props.width / 2);\n    var top = props.top + (props.height / 2);\n    var marginLeft = -1 * (this.element_.offsetWidth / 2);\n    var marginTop = -1 * (this.element_.offsetHeight / 2);\n\n    if (this.element_.classList.contains(this.CssClasses_.LEFT) || this.element_.classList.contains(this.CssClasses_.RIGHT)) {\n      left = (props.width / 2);\n      if (top + marginTop < 0) {\n        this.element_.style.top = '0';\n        this.element_.style.marginTop = '0';\n      } else {\n        this.element_.style.top = top + 'px';\n        this.element_.style.marginTop = marginTop + 'px';\n      }\n    } else {\n      if (left + marginLeft < 0) {\n        this.element_.style.left = '0';\n        this.element_.style.marginLeft = '0';\n      } else {\n        this.element_.style.left = left + 'px';\n        this.element_.style.marginLeft = marginLeft + 'px';\n      }\n    }\n\n    if (this.element_.classList.contains(this.CssClasses_.TOP)) {\n      this.element_.style.top = props.top - this.element_.offsetHeight - 10 + 'px';\n    } else if (this.element_.classList.contains(this.CssClasses_.RIGHT)) {\n      this.element_.style.left = props.left + props.width + 10 + 'px';\n    } else if (this.element_.classList.contains(this.CssClasses_.LEFT)) {\n      this.element_.style.left = props.left - this.element_.offsetWidth - 10 + 'px';\n    } else {\n      this.element_.style.top = props.top + props.height + 10 + 'px';\n    }\n\n    this.element_.classList.add(this.CssClasses_.IS_ACTIVE);\n  };\n\n  /**\n   * Hide tooltip on mouseleave or scroll\n   *\n   * @private\n   */\n  MaterialTooltip.prototype.hideTooltip_ = function() {\n    this.element_.classList.remove(this.CssClasses_.IS_ACTIVE);\n  };\n\n  /**\n   * Initialize element.\n   */\n  MaterialTooltip.prototype.init = function() {\n\n    if (this.element_) {\n      var forElId = this.element_.getAttribute('for') ||\n          this.element_.getAttribute('data-mdl-for');\n\n      if (forElId) {\n        this.forElement_ = document.getElementById(forElId);\n      }\n\n      if (this.forElement_) {\n        // It's left here because it prevents accidental text selection on Android\n        if (!this.forElement_.hasAttribute('tabindex')) {\n          this.forElement_.setAttribute('tabindex', '0');\n        }\n\n        this.boundMouseEnterHandler = this.handleMouseEnter_.bind(this);\n        this.boundMouseLeaveAndScrollHandler = this.hideTooltip_.bind(this);\n        this.forElement_.addEventListener('mouseenter', this.boundMouseEnterHandler, false);\n        this.forElement_.addEventListener('touchend', this.boundMouseEnterHandler, false);\n        this.forElement_.addEventListener('mouseleave', this.boundMouseLeaveAndScrollHandler, false);\n        window.addEventListener('scroll', this.boundMouseLeaveAndScrollHandler, true);\n        window.addEventListener('touchstart', this.boundMouseLeaveAndScrollHandler);\n      }\n    }\n  };\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  componentHandler.register({\n    constructor: MaterialTooltip,\n    classAsString: 'MaterialTooltip',\n    cssClass: 'mdl-tooltip'\n  });\n})();\n"
  },
  {
    "path": "src/typography/README.md",
    "content": "## Introduction\n\nThe Material Design Lite (MDL) **typography** component is a comprehensive approach to standardizing the use of typefaces in applications and page displays. MDL typography elements are intended to replace the myriad fonts used by developers (which vary significantly in appearance) and provide a robust, uniform library of text styles from which developers can choose.\n\nThe \"Roboto\" typeface is the standard for MDL display; it can easily be integrated into a web page using the CSS3 `@font-face` rule. However, Roboto is most simply accessed and included using a single standard HTML `<link>` element, which can be obtained at [this Google fonts page](http://www.google.com/fonts#UsePlace:use/Collection:Roboto).\n\nBecause of the many possible variations in font display characteristics in HTML and CSS, MDL typography aims to provide simple and intuitive styles that use the Roboto font and produce visually attractive and internally consistent text results. See the typography component's [Material Design specifications page](http://www.google.com/design/spec/style/typography.html) for details.\n\n## Basic use\n\nInclude a link to the Google stylesheet that accesses the font and its desired variations.\n\n```html\n<head>\n<link\n href='http://fonts.googleapis.com/css?family=Roboto:400,400italic,500,500italic,700,700italic'\n rel='stylesheet' type='text/css'>\n...\n</head>\n```\n\n### To include an MDL **typography** component:\n\n&nbsp;1. Code any element (`<div>`,`<p>`,`<span>`, etc.) that can contain text, including whatever content is appropriate.\n```html\n<p>This is a standard paragraph.</p>\n```\n&nbsp;2. Add one or more MDL classes, separated by spaces, to the element using the `class` attribute.\n```html\n<p class=\"mdl-typography--body-1\">This is a standard paragraph.</p>\n```\n\nThe typography component is ready for use.\n\n#### Examples\n\nA \"headline\" paragraph.\n\n```html\n<p class=\"mdl-typography--headline\">Regular 24px</p>\n```\n\nA \"title\" paragraph.\n```html\n<p class=\"mdl-typography--title\">Medium 20px</p>\n```\n\nA \"caption\" span.\n```html\n<span class=\"mdl-typography--caption\">Regular 12px</span>\n```\n\nA \"button\" span.\n```html\n<span class=\"mdl-typography--button\">Medium (All Caps) 14px</span>\n```\nA \"display 1\" table cell.\n```html\n<td class=\"mdl-typography--display-1\">Regular 34px</td>\n```\nA \"body-1\" paragraph, also uppercased.\n```html\n<p class=\"mdl-typography--body-1 mdl-typography--text-uppercase\">\n This is a standard paragraph, but uppercased.\n</p>\n```\n\n>**Note:** Because the Roboto font is intended to apply to the entire page, standard \"unclassed\" HTML elements (e.g., heading levels, divs, paragraphs, spans, tables, etc. with no `class` attribute) and text modifiers (e.g., strong, em, small, etc.) will use Roboto, while also retaining their inherent and/or inherited characteristics.\n>\n>Also note that MDL typography provides some automatic adjustments based on its display environment. For example, the `body-1` style renders at 14px on a mobile device, but 13px on a desktop. You need not do anything to activate these self-modifiers; they are built into the MDL styles.\n\n## Configuration options\n\nThe MDL CSS classes specify the style to use. The table below lists the available classes and their effects.\n\n| MDL class | Effect | Remarks |\n|-----------|--------|---------|\n| `mdl-typography--body-1` | Regular 14px (Device), Regular 13px (Desktop) | Optional |\n| `mdl-typography--body-1-force-preferred-font` | Regular 14px (Device), Regular 13px (Desktop) | Optional |\n| `mdl-typography--body-2` | Medium 14px (Device), Medium 13px (Desktop) | Optional |\n| `mdl-typography--body-2` | mdl-typography-body-2 | Optional |\n| `mdl-typography--body-2-color-contrast` | Body with color contrast | Optional |\n| `mdl-typography--body-2-force-preferred-font` | Medium 14px (Device), Medium 13px (Desktop) | Optional |\n| `mdl-typography--button` | Medium (All Caps) 14px | Optional |\n| `mdl-typography--caption` | Regular 12px | Optional |\n| `mdl-typography--caption-color-contrast` | Caption with color contrast | Optional |\n| `mdl-typography--display-1` | Regular 34px | Optional |\n| `mdl-typography--display-1-color-contrast` | Display with color contrast | Optional |\n| `mdl-typography--display-2` | Regular 45px | Optional |\n| `mdl-typography--display-3` | Regular 56px | Optional |\n| `mdl-typography--display-4` | Light 112px | Optional |\n| `mdl-typography--headline` | Regular 24px | Optional |\n| `mdl-typography--menu` | Medium 14px (Device), Medium 13px (Desktop) | Optional |\n| `mdl-typography--subhead` | Regular 16px (Device), Regular 15px (Desktop) | Optional |\n| `mdl-typography--subhead-color-contrast` | Subhead with color contrast | Optional |\n| `mdl-typography--table-striped` | Striped table| Optional |\n| `mdl-typography--text-capitalize` | Capitalized text | Optional |\n| `mdl-typography--text-center` | Center aligned text | Optional |\n| `mdl-typography--text-justify` | Justified text | Optional |\n| `mdl-typography--text-left` | Left aligned text | Optional |\n| `mdl-typography--text-lowercase` | Lowercased text | Optional |\n| `mdl-typography--text-nowrap` | No wrap text | Optional |\n| `mdl-typography--text-right` | Right aligned text | Optional |\n| `mdl-typography--text-uppercase` | Uppercased text | Optional |\n| `mdl-typography--title` | Medium 20px | Optional |\n| `mdl-typography--title-color-contrast` | Title with color contrast | Optional |\n"
  },
  {
    "path": "src/typography/_typography.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import \"../variables\";\n@import \"../mixins\";\n\n@if $target-elements-directly == true {\n  html, body {\n    font-family: $performance_font;\n    font-size: 14px;\n    font-weight: 400;\n    line-height: 20px;\n  }\n\n  h1, h2, h3, h4, h5, h6, p {\n    margin: 0;\n    padding: 0;\n  }\n\n  /**\n  * Styles for HTML elements\n  */\n\n  h1 small, h2 small, h3 small, h4 small, h5 small, h6 small {\n    @include typo-display-3($colorContrast: true);\n\n    font-size: 0.6em;\n  }\n\n  h1 {\n    @include typo-display-3;\n\n    margin-top: 24px;\n    margin-bottom: 24px;\n  }\n\n  h2 {\n    @include typo-display-2;\n\n    margin-top: 24px;\n    margin-bottom: 24px;\n  }\n\n  h3 {\n    @include typo-display-1;\n\n    margin-top: 24px;\n    margin-bottom: 24px;\n  }\n\n  h4 {\n    @include typo-headline;\n\n    margin-top: 24px;\n    margin-bottom: 16px;\n  }\n\n  h5 {\n    @include typo-title;\n\n    margin-top: 24px;\n    margin-bottom: 16px;\n  }\n\n  h6 {\n    @include typo-subhead;\n\n    margin-top: 24px;\n    margin-bottom: 16px;\n  }\n\n  p {\n    @include typo-body-1;\n\n    margin-bottom: 16px;\n  }\n\n  a {\n    color: $text-link-color;\n    font-weight: 500;\n  }\n\n  blockquote {\n    @include typo-blockquote;\n  }\n\n  mark {\n    background-color: #f4ff81;\n  }\n\n  dt {\n    font-weight: 700;\n  }\n\n  address {\n    @include typo-caption;\n\n    font-style: normal;\n  }\n\n  ul, ol {\n    @include typo-body-1;\n  }\n}\n\n/**\n * Class Name Styles\n */\n\n.mdl-typography--display-4 {\n  @include typo-display-4;\n}\n\n.mdl-typography--display-4-color-contrast {\n  @include typo-display-4($colorContrast: true);\n}\n\n.mdl-typography--display-3 {\n  @include typo-display-3;\n}\n\n.mdl-typography--display-3-color-contrast {\n  @include typo-display-3($colorContrast: true);\n}\n\n.mdl-typography--display-2 {\n  @include typo-display-2;\n}\n\n.mdl-typography--display-2-color-contrast {\n  @include typo-display-2($colorContrast: true);\n}\n\n.mdl-typography--display-1 {\n  @include typo-display-1;\n}\n\n.mdl-typography--display-1-color-contrast {\n  @include typo-display-1($colorContrast: true);\n}\n\n.mdl-typography--headline {\n  @include typo-headline;\n}\n\n.mdl-typography--headline-color-contrast {\n  @include typo-headline($colorContrast: true);\n}\n\n.mdl-typography--title {\n  @include typo-title;\n}\n\n.mdl-typography--title-color-contrast {\n  @include typo-title($colorContrast: true);\n}\n\n.mdl-typography--subhead {\n  @include typo-subhead;\n}\n\n.mdl-typography--subhead-color-contrast {\n  @include typo-subhead($colorContrast: true);\n}\n\n.mdl-typography--body-2 {\n  @include typo-body-2;\n}\n\n.mdl-typography--body-2-color-contrast {\n  @include typo-body-2($colorContrast: true);\n}\n\n.mdl-typography--body-1 {\n  @include typo-body-1;\n}\n\n.mdl-typography--body-1-color-contrast {\n  @include typo-body-1($colorContrast: true);\n}\n\n.mdl-typography--body-2-force-preferred-font {\n  @include typo-body-2($usePreferred: true);\n}\n\n.mdl-typography--body-2-force-preferred-font-color-contrast {\n  @include typo-body-2($colorContrast: true, $usePreferred: true);\n}\n\n.mdl-typography--body-1-force-preferred-font {\n  @include typo-body-1($usePreferred: true);\n}\n\n.mdl-typography--body-1-force-preferred-font-color-contrast {\n  @include typo-body-1($colorContrast: true, $usePreferred: true);\n}\n\n.mdl-typography--caption {\n  @include typo-caption;\n}\n\n.mdl-typography--caption-force-preferred-font {\n  @include typo-caption($usePreferred: true);\n}\n\n.mdl-typography--caption-color-contrast {\n  @include typo-caption($colorContrast: true);\n}\n\n.mdl-typography--caption-force-preferred-font-color-contrast {\n  @include typo-caption($colorContrast: true, $usePreferred: true);\n}\n\n.mdl-typography--menu {\n  @include typo-menu;\n}\n\n.mdl-typography--menu-color-contrast {\n  @include typo-menu($colorContrast: true);\n}\n\n.mdl-typography--button {\n  @include typo-button;\n}\n\n.mdl-typography--button-color-contrast {\n  @include typo-button($colorContrast: true);\n}\n\n.mdl-typography--text-left {\n  text-align: left;\n}\n\n.mdl-typography--text-right {\n  text-align: right;\n}\n\n.mdl-typography--text-center {\n  text-align: center;\n}\n\n.mdl-typography--text-justify {\n  text-align: justify;\n}\n\n.mdl-typography--text-nowrap {\n  white-space: nowrap;\n}\n\n.mdl-typography--text-lowercase {\n  text-transform: lowercase;\n}\n\n.mdl-typography--text-uppercase {\n  text-transform: uppercase;\n}\n\n.mdl-typography--text-capitalize {\n  text-transform: capitalize;\n}\n\n.mdl-typography--font-thin {\n  font-weight: 200 !important;\n}\n\n.mdl-typography--font-light {\n  font-weight: 300 !important;\n}\n\n.mdl-typography--font-regular {\n  font-weight: 400 !important;\n}\n\n.mdl-typography--font-medium {\n  font-weight: 500 !important;\n}\n\n.mdl-typography--font-bold {\n  font-weight: 700 !important;\n}\n\n.mdl-typography--font-black {\n  font-weight: 900 !important;\n}\n\n.material-icons {\n  @include typo-icon;\n}\n"
  },
  {
    "path": "src/typography/demo.css",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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.demo-page--typography {\n  color: rgba(0, 0, 0, 0.87);\n}\n\n.demo-page--typography table th {\n  padding-right: 80px;\n\n  vertical-align: top;\n  text-align: left;\n}\n\n.demo-typography--white {\n  background-color: white;\n  color: black;\n}\n\n.demo-typography--black {\n  background-color: black;\n  color: white;\n}\n\n.demo-typography--white,\n.demo-typography--black,\n.demo-typography--img-1,\n.demo-typography--img-2 {\n  width: 360px;\n  height: 272px;\n\n  padding: 16px;\n  box-sizing: border-box;\n}\n\n.demo-typography--img-1 {\n  background-image: url(../demo-images/img-1.png);\n  color: white;\n}\n\n.demo-typography--img-2 {\n  background-image: url(../demo-images/img-2.png);\n  color: white;\n}\n"
  },
  {
    "path": "src/typography/demo.html",
    "content": "  <h2>Scale &amp; Basic Styles</h2>\n\n  <div class=\"demo-preview-block demo-page--typography\">\n    <table>\n      <tr>\n        <th class=\"mdl-typography--caption-color-contrast\">Display 4</th>\n        <td class=\"mdl-typography--display-4\">Light 112px</td>\n      </tr>\n      <tr>\n        <th class=\"mdl-typography--caption-color-contrast\">Display 3</th>\n        <td class=\"mdl-typography--display-3\">Regular 56px</td>\n      </tr>\n      <tr>\n        <th class=\"mdl-typography--caption-color-contrast\">Display 2</th>\n        <td class=\"mdl-typography--display-2\">Regular 45px</td>\n      </tr>\n      <tr>\n        <th class=\"mdl-typography--caption-color-contrast\">Display 1</th>\n        <td class=\"mdl-typography--display-1\">Regular 34px</td>\n      </tr>\n      <tr>\n        <th class=\"mdl-typography--caption-color-contrast\">Headline</th>\n        <td class=\"mdl-typography--headline\">Regular 24px</td>\n      </tr>\n      <tr>\n        <th class=\"mdl-typography--caption-color-contrast\">Title</th>\n        <td class=\"mdl-typography--title\">Medium 20px</td>\n      </tr>\n      <tr>\n        <th class=\"mdl-typography--caption-color-contrast\">Subhead</th>\n        <td class=\"mdl-typography--subhead\">Regular 16px (Device), Regular 15px (Desktop)</td>\n      </tr>\n      <tr>\n        <th class=\"mdl-typography--caption-color-contrast\">Body 2</th>\n        <td class=\"mdl-typography--body-2\">Medium 14px (Device), Medium 13px (Desktop)</td>\n      </tr>\n      <tr>\n        <th class=\"mdl-typography--caption-color-contrast\">Body 1</th>\n        <td class=\"mdl-typography--body-1\">Regular 14px (Device), Regular 13px (Desktop)</td>\n      </tr>\n      <tr>\n        <th class=\"mdl-typography--caption-color-contrast\">Body 2 (force preferred font)</th>\n        <td class=\"mdl-typography--body-2-force-preferred-font\">Medium 14px (Device), Medium 13px (Desktop)</td>\n      </tr>\n      <tr>\n        <th class=\"mdl-typography--caption-color-contrast\">Body 1 (force preferred font)</th>\n        <td class=\"mdl-typography--body-1-force-preferred-font\">Regular 14px (Device), Regular 13px (Desktop)</td>\n      </tr>\n      <tr>\n        <th class=\"mdl-typography--caption-color-contrast\">Caption</th>\n        <td class=\"mdl-typography--caption\">Regular 12px</td>\n      </tr>\n      <tr>\n        <th class=\"mdl-typography--caption-color-contrast\">Menu</th>\n        <td class=\"mdl-typography--menu\">Medium 14px (Device), Medium 13px (Desktop)</td>\n      </tr>\n      <tr>\n        <th class=\"mdl-typography--caption-color-contrast\">Button</th>\n        <td class=\"mdl-typography--button\">Medium (All Caps) 14px</td>\n      </tr>\n    </table>\n  </div>\n\n  <h2>HTML Elements</h2>\n\n  <div class=\"demo-preview-block\">\n\n    <h3>Headings</h3>\n\n    <h1>&lt;h1&gt;</h1>\n    <h2>&lt;h2&gt;</h2>\n    <h3>&lt;h3&gt;</h3>\n    <h4>&lt;h4&gt;</h4>\n    <h5>&lt;h5&gt;</h5>\n    <h6>&lt;h6&gt;</h6>\n\n    <h3>Formatting</h3>\n\n    <p><u>&lt;u&gt;Underlined&lt;u&gt;</u></p>\n\n    <p><b>&lt;b&gt;Bold&lt;b&gt;</b></p>\n\n    <p><strong>&lt;strong&gt;Strong&lt;strong&gt;</strong></p>\n\n    <p><i>&lt;italic&gt;Italic&lt;italic&gt;</i></p>\n\n    <p><em>&lt;em&gt;Em&lt;em&gt;</em></p>\n\n    <p><s>&lt;s&gt;Strikethrough&lt;s&gt;</s></p>\n\n    <p><small>&lt;small&gt;Small&lt;small&gt;</small></p>\n\n    <p><mark>&lt;mark&gt;Mark&lt;mark&gt;</mark></p>\n\n    <h3>Body Text</h3>\n\n    <p>&lt;p&gt;</p>\n\n    <p class=\"mdl-typography--body-2\">&lt;p class=\"mdl-typography-body-2\"&gt;</p>\n\n    <p class=\"mdl-typography--caption\">&lt;p class=\"mdl-typography-caption\"&gt;</p>\n\n    <p class=\"mdl-typography--menu\">&lt;p class=\"mdl-typography-menu\"&gt;</p>\n\n    <p class=\"mdl-typography--button\">&lt;p class=\"mdl-typography-button\"&gt;</p>\n\n    <h3>Subtitles</h3>\n\n    <h1>&lt;h1&gt; <small>Subtitle</small></h1>\n    <h2>&lt;h2&gt; <small>Subtitle</small></h2>\n    <h3>&lt;h3&gt; <small>Subtitle</small></h3>\n    <h4>&lt;h4&gt; <small>Subtitle</small></h4>\n    <h5>&lt;h5&gt; <small>Subtitle</small></h5>\n    <h6>&lt;h6&gt; <small>Subtitle</small></h6>\n\n    <h3>Description</h3>\n\n    <dl>\n      <dt>Description lists</dt>\n      <dd>A description list is perfect for defining terms.</dd>\n      <dt>Euismod</dt>\n      <dd>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>\n      <dd>Donec id elit non mi porta gravida at eget metus.</dd>\n      <dt>Malesuada porta</dt>\n      <dd>Etiam porta sem malesuada magna mollis euismod.</dd>\n    </dl>\n  </div>\n\n  <h2>Quotes</h2>\n\n  <div class=\"demo-preview-block\">\n    <blockquote>&lt;blockquote&gt;</blockquote>\n  </div>\n\n  <h2>Alignment</h2>\n\n  <p class=\"mdl-typography--text-left\">Left aligned text.</p>\n  <p class=\"mdl-typography--text-center\">Center aligned text.</p>\n  <p class=\"mdl-typography--text-right\">Right aligned text.</p>\n  <p class=\"mdl-typography--text-justify\">Justified text.</p>\n  <p class=\"mdl-typography--text-nowrap\">No wrap text.</p>\n\n  <h2>Transformations</h2>\n  <p class=\"mdl-typography--text-lowercase\">Lowercased text.</p>\n  <p class=\"mdl-typography--text-uppercase\">Uppercased text.</p>\n  <p class=\"mdl-typography--text-capitalize\">Capitalized text.</p>\n\n  <h2>Addresses</h2>\n\n  <address>\n    <strong>Googleplex</strong><br>\n    1600 Amphitheatre Pkwy<br>\n    Mountain View, CA 94043<br>\n    <abbr title=\"Phone\">P:</abbr> (650) 253-0000\n  </address>\n\n  <h2>Code</h2>\n\n  <h3>Multi-line code blocks</h3>\n  <p>\n    Use &lt;pre&gt; for multi-line code blocks.\n    <pre>\n&lt;p&gt;This is the first line of code&lt;/p&gt;\n&lt;p&gt;This is the second line of code&lt;/p&gt;\n  </pre>\n  </p>\n\n  <h3>Inline code blocks</h3>\n  <p>Code blocks like <code>&lt;main&gt;</code> could be displayed inline.</p>\n\n\n  <h2>Color Contrasts</h2>\n\n  <div class=\"demo-preview-block\">\n    <div class=\"demo-typography--white\">\n      <p class=\"mdl-typography--caption-color-contrast\">Caption</p>\n\n      <p class=\"mdl-typography--body-2-color-contrast\">Body</p>\n\n      <p class=\"mdl-typography--subhead-color-contrast\">Subhead</p>\n\n      <p class=\"mdl-typography--title-color-contrast\">Title</p>\n\n      <p class=\"mdl-typography--display-1-color-contrast\">Display</p>\n    </div>\n  </div>\n\n  <div class=\"demo-preview-block\">\n    <div class=\"demo-typography--black\">\n        <p class=\"mdl-typography--caption-color-contrast\">Caption</p>\n\n        <p class=\"mdl-typography--body-2-color-contrast\">Body</p>\n\n        <p class=\"mdl-typography--subhead-color-contrast\">Subhead</p>\n\n        <p class=\"mdl-typography--title-color-contrast\">Title</p>\n\n        <p class=\"mdl-typography--display-1-color-contrast\">Display</p>\n    </div>\n  </div>\n\n  <div class=\"demo-preview-block\">\n    <div class=\"demo-typography--img-1\">\n        <p class=\"mdl-typography--caption-color-contrast\">Caption</p>\n\n        <p class=\"mdl-typography--body-2-color-contrast\">Body</p>\n\n        <p class=\"mdl-typography--subhead-color-contrast\">Subhead</p>\n\n        <p class=\"mdl-typography--title-color-contrast\">Title</p>\n\n        <p class=\"mdl-typography--display-1-color-contrast\">Display</p>\n    </div>\n  </div>\n\n  <div class=\"demo-preview-block\">\n    <div class=\"demo-typography--img-2\">\n      <p class=\"mdl-typography--caption-color-contrast\">Caption</p>\n\n      <p class=\"mdl-typography--body-2-color-contrast\">Body</p>\n\n      <p class=\"mdl-typography--subhead-color-contrast\">Subhead</p>\n\n      <p class=\"mdl-typography--title-color-contrast\">Title</p>\n\n      <p class=\"mdl-typography--display-1-color-contrast\">Display</p>\n    </div>\n  </div>\n"
  },
  {
    "path": "templates/android-dot-com/README.md",
    "content": "# android.com sample\n\n## Why this sample\nThe goal of this sample is to illustrate implementing a real-world-looking site with **Material Design Lite**.\n\nWe therefore decided to do a cover of the front page of the android.com website, which while not a 1:1 match illustrates MDL usage well.\n"
  },
  {
    "path": "templates/android-dot-com/index.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"Introducing Lollipop, a sweet new take on Android.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>Android</title>\n\n    <!-- Page styles -->\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n    <link rel=\"stylesheet\" href=\"$$hosted_libs_prefix$$/$$version$$/material.min.css\">\n    <link rel=\"stylesheet\" href=\"styles.css\">\n    <style>\n    #view-source {\n      position: fixed;\n      display: block;\n      right: 0;\n      bottom: 0;\n      margin-right: 40px;\n      margin-bottom: 40px;\n      z-index: 900;\n    }\n    </style>\n  </head>\n  <body>\n    <div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\">\n\n      <div class=\"android-header mdl-layout__header mdl-layout__header--waterfall\">\n        <div class=\"mdl-layout__header-row\">\n          <span class=\"android-title mdl-layout-title\">\n            <img class=\"android-logo-image\" src=\"images/android-logo.png\">\n          </span>\n          <!-- Add spacer, to align navigation to the right in desktop -->\n          <div class=\"android-header-spacer mdl-layout-spacer\"></div>\n          <div class=\"android-search-box mdl-textfield mdl-js-textfield mdl-textfield--expandable mdl-textfield--floating-label mdl-textfield--align-right mdl-textfield--full-width\">\n            <label class=\"mdl-button mdl-js-button mdl-button--icon\" for=\"search-field\">\n              <i class=\"material-icons\">search</i>\n            </label>\n            <div class=\"mdl-textfield__expandable-holder\">\n              <input class=\"mdl-textfield__input\" type=\"text\" id=\"search-field\">\n            </div>\n          </div>\n          <!-- Navigation -->\n          <div class=\"android-navigation-container\">\n            <nav class=\"android-navigation mdl-navigation\">\n              <a class=\"mdl-navigation__link mdl-typography--text-uppercase\" href=\"\">Phones</a>\n              <a class=\"mdl-navigation__link mdl-typography--text-uppercase\" href=\"\">Tablets</a>\n              <a class=\"mdl-navigation__link mdl-typography--text-uppercase\" href=\"\">Wear</a>\n              <a class=\"mdl-navigation__link mdl-typography--text-uppercase\" href=\"\">TV</a>\n              <a class=\"mdl-navigation__link mdl-typography--text-uppercase\" href=\"\">Auto</a>\n              <a class=\"mdl-navigation__link mdl-typography--text-uppercase\" href=\"\">One</a>\n              <a class=\"mdl-navigation__link mdl-typography--text-uppercase\" href=\"\">Play</a>\n            </nav>\n          </div>\n          <span class=\"android-mobile-title mdl-layout-title\">\n            <img class=\"android-logo-image\" src=\"images/android-logo.png\">\n          </span>\n          <button class=\"android-more-button mdl-button mdl-js-button mdl-button--icon mdl-js-ripple-effect\" id=\"more-button\">\n            <i class=\"material-icons\">more_vert</i>\n          </button>\n          <ul class=\"mdl-menu mdl-js-menu mdl-menu--bottom-right mdl-js-ripple-effect\" for=\"more-button\">\n            <li class=\"mdl-menu__item\">5.0 Lollipop</li>\n            <li class=\"mdl-menu__item\">4.4 KitKat</li>\n            <li disabled class=\"mdl-menu__item\">4.3 Jelly Bean</li>\n            <li class=\"mdl-menu__item\">Android History</li>\n          </ul>\n        </div>\n      </div>\n\n      <div class=\"android-drawer mdl-layout__drawer\">\n        <span class=\"mdl-layout-title\">\n          <img class=\"android-logo-image\" src=\"images/android-logo-white.png\">\n        </span>\n        <nav class=\"mdl-navigation\">\n          <a class=\"mdl-navigation__link\" href=\"\">Phones</a>\n          <a class=\"mdl-navigation__link\" href=\"\">Tablets</a>\n          <a class=\"mdl-navigation__link\" href=\"\">Wear</a>\n          <a class=\"mdl-navigation__link\" href=\"\">TV</a>\n          <a class=\"mdl-navigation__link\" href=\"\">Auto</a>\n          <a class=\"mdl-navigation__link\" href=\"\">One</a>\n          <a class=\"mdl-navigation__link\" href=\"\">Play</a>\n          <div class=\"android-drawer-separator\"></div>\n          <span class=\"mdl-navigation__link\" href=\"\">Versions</span>\n          <a class=\"mdl-navigation__link\" href=\"\">Lollipop 5.0</a>\n          <a class=\"mdl-navigation__link\" href=\"\">KitKat 4.4</a>\n          <a class=\"mdl-navigation__link\" href=\"\">Jelly Bean 4.3</a>\n          <a class=\"mdl-navigation__link\" href=\"\">Android history</a>\n          <div class=\"android-drawer-separator\"></div>\n          <span class=\"mdl-navigation__link\" href=\"\">Resources</span>\n          <a class=\"mdl-navigation__link\" href=\"\">Official blog</a>\n          <a class=\"mdl-navigation__link\" href=\"\">Android on Google+</a>\n          <a class=\"mdl-navigation__link\" href=\"\">Android on Twitter</a>\n          <div class=\"android-drawer-separator\"></div>\n          <span class=\"mdl-navigation__link\" href=\"\">For developers</span>\n          <a class=\"mdl-navigation__link\" href=\"\">App developer resources</a>\n          <a class=\"mdl-navigation__link\" href=\"\">Android Open Source Project</a>\n          <a class=\"mdl-navigation__link\" href=\"\">Android SDK</a>\n        </nav>\n      </div>\n\n      <div class=\"android-content mdl-layout__content\">\n        <a name=\"top\"></a>\n        <div class=\"android-be-together-section mdl-typography--text-center\">\n          <div class=\"logo-font android-slogan\">be together. not the same.</div>\n          <div class=\"logo-font android-sub-slogan\">welcome to android... be yourself. do your thing. see what's going on.</div>\n          <div class=\"logo-font android-create-character\">\n            <a href=\"\"><img src=\"images/andy.png\"> create your android character</a>\n          </div>\n\n          <a href=\"#screens\">\n            <button class=\"android-fab mdl-button mdl-button--colored mdl-js-button mdl-button--fab mdl-js-ripple-effect\">\n              <i class=\"material-icons\">expand_more</i>\n            </button>\n          </a>\n        </div>\n        <div class=\"android-screen-section mdl-typography--text-center\">\n          <a name=\"screens\"></a>\n          <div class=\"mdl-typography--display-1-color-contrast\">Powering screens of all sizes</div>\n          <div class=\"android-screens\">\n            <div class=\"android-wear android-screen\">\n              <a class=\"android-image-link\" href=\"\">\n                <img class=\"android-screen-image\" src=\"images/wear-silver-on.png\">\n                <img class=\"android-screen-image\" src=\"images/wear-black-on.png\">\n              </a>\n              <a class=\"android-link mdl-typography--font-regular mdl-typography--text-uppercase\" href=\"\">Android Wear</a>\n            </div>\n            <div class=\"android-phone android-screen\">\n              <a class=\"android-image-link\" href=\"\">\n                <img class=\"android-screen-image\" src=\"images/nexus6-on.jpg\">\n              </a>\n              <a class=\"android-link mdl-typography--font-regular mdl-typography--text-uppercase\" href=\"\">Phones</a>\n            </div>\n            <div class=\"android-tablet android-screen\">\n              <a class=\"android-image-link\" href=\"\">\n                <img class=\"android-screen-image\" src=\"images/nexus9-on.jpg\">\n              </a>\n              <a class=\"android-link mdl-typography--font-regular mdl-typography--text-uppercase\" href=\"\">Tablets</a>\n            </div>\n            <div class=\"android-tv android-screen\">\n              <a class=\"android-image-link\" href=\"\">\n                <img class=\"android-screen-image\" src=\"images/tv-on.jpg\">\n              </a>\n              <a class=\"android-link mdl-typography--font-regular mdl-typography--text-uppercase\" href=\"\">Android TV</a>\n            </div>\n            <div class=\"android-auto android-screen\">\n              <a class=\"android-image-link\" href=\"\">\n                <img class=\"android-screen-image\" src=\"images/auto-on.jpg\">\n              </a>\n              <a class=\"android-link mdl-typography--font-regular mdl-typography--text-uppercase mdl-typography--text-left\" href=\"\">Coming Soon: Android Auto</a>\n            </div>\n          </div>\n        </div>\n        <div class=\"android-wear-section\">\n          <div class=\"android-wear-band\">\n            <div class=\"android-wear-band-text\">\n              <div class=\"mdl-typography--display-2 mdl-typography--font-thin\">The best of Google built in</div>\n              <p class=\"mdl-typography--headline mdl-typography--font-thin\">\n                Android works perfectly with your favourite apps like Google Maps,\n                Calendar and YouTube.\n              </p>\n              <p>\n                <a class=\"mdl-typography--font-regular mdl-typography--text-uppercase android-alt-link\" href=\"\">\n                  See what's new in the Play Store&nbsp;<i class=\"material-icons\">chevron_right</i>\n                </a>\n              </p>\n            </div>\n          </div>\n        </div>\n        <div class=\"android-customized-section\">\n          <div class=\"android-customized-section-text\">\n            <div class=\"mdl-typography--font-light mdl-typography--display-1-color-contrast\">Customised by you, for you</div>\n            <p class=\"mdl-typography--font-light\">\n              Put the stuff that you care about right on your home screen: the latest news, the weather or a stream of your recent photos.\n              <br>\n              <a href=\"\" class=\"android-link mdl-typography--font-light\">Customise your phone</a>\n            </p>\n          </div>\n          <div class=\"android-customized-section-image\"></div>\n        </div>\n        <div class=\"android-more-section\">\n          <div class=\"android-section-title mdl-typography--display-1-color-contrast\">More from Android</div>\n          <div class=\"android-card-container mdl-grid\">\n            <div class=\"mdl-cell mdl-cell--3-col mdl-cell--4-col-tablet mdl-cell--4-col-phone mdl-card mdl-shadow--3dp\">\n              <div class=\"mdl-card__media\">\n                <img src=\"images/more-from-1.png\">\n              </div>\n              <div class=\"mdl-card__title\">\n                 <h4 class=\"mdl-card__title-text\">Get going on Android</h4>\n              </div>\n              <div class=\"mdl-card__supporting-text\">\n                <span class=\"mdl-typography--font-light mdl-typography--subhead\">Four tips to make your switch to Android quick and easy</span>\n              </div>\n              <div class=\"mdl-card__actions\">\n                 <a class=\"android-link mdl-button mdl-js-button mdl-typography--text-uppercase\" href=\"\">\n                   Make the switch\n                   <i class=\"material-icons\">chevron_right</i>\n                 </a>\n              </div>\n            </div>\n\n            <div class=\"mdl-cell mdl-cell--3-col mdl-cell--4-col-tablet mdl-cell--4-col-phone mdl-card mdl-shadow--3dp\">\n              <div class=\"mdl-card__media\">\n                <img src=\"images/more-from-4.png\">\n              </div>\n              <div class=\"mdl-card__title\">\n                 <h4 class=\"mdl-card__title-text\">Create your own Android character</h4>\n              </div>\n              <div class=\"mdl-card__supporting-text\">\n                <span class=\"mdl-typography--font-light mdl-typography--subhead\">Turn the little green Android mascot into you, your friends, anyone!</span>\n              </div>\n              <div class=\"mdl-card__actions\">\n                 <a class=\"android-link mdl-button mdl-js-button mdl-typography--text-uppercase\" href=\"\">\n                   androidify.com\n                   <i class=\"material-icons\">chevron_right</i>\n                 </a>\n              </div>\n            </div>\n\n            <div class=\"mdl-cell mdl-cell--3-col mdl-cell--4-col-tablet mdl-cell--4-col-phone mdl-card mdl-shadow--3dp\">\n              <div class=\"mdl-card__media\">\n                <img src=\"images/more-from-2.png\">\n              </div>\n              <div class=\"mdl-card__title\">\n                 <h4 class=\"mdl-card__title-text\">Get a clean customisable home screen</h4>\n              </div>\n              <div class=\"mdl-card__supporting-text\">\n                <span class=\"mdl-typography--font-light mdl-typography--subhead\">A clean, simple, customisable home screen that comes with the power of Google Now: Traffic alerts, weather and much more, just a swipe away.</span>\n              </div>\n              <div class=\"mdl-card__actions\">\n                 <a class=\"android-link mdl-button mdl-js-button mdl-typography--text-uppercase\" href=\"\">\n                   Download now\n                   <i class=\"material-icons\">chevron_right</i>\n                 </a>\n              </div>\n            </div>\n\n            <div class=\"mdl-cell mdl-cell--3-col mdl-cell--4-col-tablet mdl-cell--4-col-phone mdl-card mdl-shadow--3dp\">\n              <div class=\"mdl-card__media\">\n                <img src=\"images/more-from-3.png\">\n              </div>\n              <div class=\"mdl-card__title\">\n                 <h4 class=\"mdl-card__title-text\">Millions to choose from</h4>\n              </div>\n              <div class=\"mdl-card__supporting-text\">\n                <span class=\"mdl-typography--font-light mdl-typography--subhead\">Hail a taxi, find a recipe, run through a temple – Google Play has all the apps and games that let you make your Android device uniquely yours.</span>\n              </div>\n              <div class=\"mdl-card__actions\">\n                 <a class=\"android-link mdl-button mdl-js-button mdl-typography--text-uppercase\" href=\"\">\n                   Find apps\n                   <i class=\"material-icons\">chevron_right</i>\n                 </a>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        <footer class=\"android-footer mdl-mega-footer\">\n          <div class=\"mdl-mega-footer--top-section\">\n            <div class=\"mdl-mega-footer--left-section\">\n              <button class=\"mdl-mega-footer--social-btn\"></button>\n              &nbsp;\n              <button class=\"mdl-mega-footer--social-btn\"></button>\n              &nbsp;\n              <button class=\"mdl-mega-footer--social-btn\"></button>\n            </div>\n            <div class=\"mdl-mega-footer--right-section\">\n              <a class=\"mdl-typography--font-light\" href=\"#top\">\n                Back to Top\n                <i class=\"material-icons\">expand_less</i>\n              </a>\n            </div>\n          </div>\n\n          <div class=\"mdl-mega-footer--middle-section\">\n            <p class=\"mdl-typography--font-light\">Satellite imagery: © 2014 Astrium, DigitalGlobe</p>\n            <p class=\"mdl-typography--font-light\">Some features and devices may not be available in all areas</p>\n          </div>\n\n          <div class=\"mdl-mega-footer--bottom-section\">\n            <a class=\"android-link android-link-menu mdl-typography--font-light\" id=\"version-dropdown\">\n              Versions\n              <i class=\"material-icons\">arrow_drop_up</i>\n            </a>\n            <ul class=\"mdl-menu mdl-js-menu mdl-menu--top-left mdl-js-ripple-effect\" for=\"version-dropdown\">\n              <li class=\"mdl-menu__item\">5.0 Lollipop</li>\n              <li class=\"mdl-menu__item\">4.4 KitKat</li>\n              <li class=\"mdl-menu__item\">4.3 Jelly Bean</li>\n              <li class=\"mdl-menu__item\">Android History</li>\n            </ul>\n            <a class=\"android-link android-link-menu mdl-typography--font-light\" id=\"developers-dropdown\">\n              For Developers\n              <i class=\"material-icons\">arrow_drop_up</i>\n            </a>\n            <ul class=\"mdl-menu mdl-js-menu mdl-menu--top-left mdl-js-ripple-effect\" for=\"developers-dropdown\">\n              <li class=\"mdl-menu__item\">App developer resources</li>\n              <li class=\"mdl-menu__item\">Android Open Source Project</li>\n              <li class=\"mdl-menu__item\">Android SDK</li>\n              <li class=\"mdl-menu__item\">Android for Work</li>\n            </ul>\n            <a class=\"android-link mdl-typography--font-light\" href=\"\">Blog</a>\n            <a class=\"android-link mdl-typography--font-light\" href=\"\">Privacy Policy</a>\n          </div>\n\n        </footer>\n      </div>\n    </div>\n    <a href=\"https://github.com/google/material-design-lite/blob/mdl-1.x/templates/android-dot-com/\" target=\"_blank\" id=\"view-source\" class=\"mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-color--accent mdl-color-text--accent-contrast\">View Source</a>\n    <script src=\"$$hosted_libs_prefix$$/$$version$$/material.min.js\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "templates/android-dot-com/material.scss",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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@import '../../src/material-design-lite';\n"
  },
  {
    "path": "templates/android-dot-com/styles.css",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\nbody {\n  margin: 0;\n}\n\n/* Disable ugly boxes around images in IE10 */\na img{\n  border: 0px;\n}\n\n::-moz-selection {\n  background-color: #6ab344;\n  color: #fff;\n}\n\n::selection {\n  background-color: #6ab344;\n  color: #fff;\n}\n\n.android-search-box .mdl-textfield__input {\n  color: rgba(0, 0, 0, 0.87);\n}\n\n.android-header .mdl-menu__container {\n  z-index: 50;\n  margin: 0 !important;\n}\n\n\n.mdl-textfield--expandable {\n  width: auto;\n}\n\n.android-fab {\n  position: absolute;\n  right: 20%;\n  bottom: -26px;\n  z-index: 3;\n  background: #64ffda !important;\n  color: black !important;\n}\n\n.android-mobile-title {\n  display: none !important;\n}\n\n\n.android-logo-image {\n  height: 28px;\n  width: 140px;\n}\n\n\n.android-header {\n  overflow: visible;\n  background-color: white;\n}\n\n  .android-header .material-icons {\n    color: #767777 !important;\n  }\n\n  .android-header .mdl-layout__drawer-button {\n    background: transparent;\n    color: #767777;\n  }\n\n  .android-header .mdl-navigation__link {\n    color: #757575;\n    font-weight: 700;\n    font-size: 14px;\n  }\n\n  .android-navigation-container {\n    /* Simple hack to make the overflow happen to the left instead... */\n    direction: rtl;\n    order: 1;\n    width: 500px;\n    transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1),\n        width 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n  }\n\n  .android-navigation {\n    /* ... and now make sure the content is actually LTR */\n    direction: ltr;\n    justify-content: flex-end;\n    width: 800px;\n  }\n\n  .android-search-box.is-focused + .android-navigation-container {\n    opacity: 0;\n    width: 100px;\n  }\n\n\n  .android-navigation .mdl-navigation__link {\n    display: inline-block;\n    height: 60px;\n    line-height: 68px;\n    background-color: transparent !important;\n    border-bottom: 4px solid transparent;\n  }\n\n    .android-navigation .mdl-navigation__link:hover {\n      border-bottom: 4px solid #8bc34a;\n    }\n\n  .android-search-box {\n    order: 2;\n    margin-left: 16px;\n    margin-right: 16px;\n  }\n\n  .android-more-button {\n    order: 3;\n  }\n\n\n.android-drawer {\n  border-right: none;\n}\n\n  .android-drawer-separator {\n    height: 1px;\n    background-color: #dcdcdc;\n    margin: 8px 0;\n  }\n\n  .android-drawer .mdl-navigation__link.mdl-navigation__link {\n    font-size: 14px;\n    color: #757575;\n  }\n\n  .android-drawer span.mdl-navigation__link.mdl-navigation__link {\n    color: #8bc34a;\n  }\n\n  .android-drawer .mdl-layout-title {\n    position: relative;\n    background: #6ab344;\n    height: 160px;\n  }\n\n    .android-drawer .android-logo-image {\n      position: absolute;\n      bottom: 16px;\n    }\n\n.android-be-together-section {\n  position: relative;\n  height: 800px;\n  width: auto;\n  background-color: #f3f3f3;\n  background: url('images/slide01.jpg') center 30% no-repeat;\n  background-size: cover;\n}\n\n.logo-font {\n  font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;\n  line-height: 1;\n  color: #767777;\n  font-weight: 500;\n}\n\n.android-slogan {\n  font-size: 60px;\n  padding-top: 160px;\n}\n\n.android-sub-slogan {\n  font-size: 21px;\n  padding-top: 24px;\n}\n\n.android-create-character {\n  font-size: 21px;\n  padding-top: 400px;\n}\n\n  .android-create-character a {\n    text-decoration: none;\n    color: #767777;\n    font-weight: 300;\n  }\n\n.android-screen-section {\n  position: relative;\n  padding-top: 60px;\n  padding-bottom: 80px;\n}\n\n.android-screens {\n  text-align: right;\n  width: 100%;\n  white-space: nowrap;\n  overflow-x: auto;\n}\n\n.android-screen {\n  text-align: center;\n}\n\n.android-screen .android-link {\n  margin-top: 16px;\n  display: block;\n  z-index: 2;\n}\n\n.android-image-link {\n  text-decoration: none;\n}\n\n.android-wear {\n  display: inline-block;\n  width: 160px;\n  margin-right: 32px;\n}\n\n  .android-wear .android-screen-image {\n    width: 40%;\n    z-index: 1;\n  }\n\n\n.android-phone {\n  display: inline-block;\n  width: 64px;\n  margin-right: 48px;\n}\n\n  .android-phone .android-screen-image {\n    width: 100%;\n    z-index: 1;\n  }\n\n\n.android-tablet {\n  display: inline-block;\n  width: 110px;\n  margin-right: 64px;\n}\n\n  .android-tablet .android-screen-image {\n    width: 100%;\n    z-index: 1;\n  }\n\n  .android-tablet .android-link {\n    display: block;\n    z-index: 2;\n  }\n\n\n.android-tv {\n  display: inline-block;\n  width: 300px;\n  margin-right: 80px;\n}\n\n  .android-tv .android-screen-image {\n    width: 100%;\n    z-index: 1;\n  }\n\n\n.android-auto {\n  display: inline-block;\n  width: 300px;\n  overflow: hidden;\n}\n\n  .android-auto .android-screen-image {\n    display: block;\n    height: 300px;\n    z-index: 1;\n  }\n\n\n.android-wear-section {\n  position: relative;\n  background: url('images/wear.png') center top no-repeat;\n  background-size: cover;\n  height: 800px;\n}\n\n.android-wear-band {\n  position: absolute;\n  bottom: 0;\n  width: 100%;\n  text-align: center;\n  background-color: #37474f;\n}\n\n.android-wear-band-text {\n  max-width: 800px;\n  margin-left: 25%;\n  padding: 24px;\n  text-align: left;\n  color: white;\n}\n\n  .android-wear-band-text p {\n    padding-top: 8px;\n  }\n\n.android-link {\n  text-decoration: none;\n  color: #8bc34a !important;\n}\n\n  .android-link:hover {\n    color: #7cb342 !important;\n  }\n\n  .android-link .material-icons {\n    position: relative;\n    top: -1px;\n    vertical-align: middle;\n  }\n\n.android-alt-link {\n  text-decoration: none;\n  color: #64ffda !important;\n  font-size: 16px;\n}\n\n  .android-alt-link:hover {\n    color: #00bfa5 !important;\n  }\n\n  .android-alt-link .material-icons {\n    position: relative;\n    top: 6px;\n  }\n\n.android-customized-section {\n  text-align: center;\n}\n\n.android-customized-section-text {\n  max-width: 500px;\n  margin-left: auto;\n  margin-right: auto;\n  padding: 80px 16px 0 16px;\n}\n\n  .android-customized-section-text p {\n    padding-top: 16px;\n  }\n\n.android-customized-section-image {\n  background: url('images/devices.jpg') center top no-repeat;\n  background-size: cover;\n  height: 400px;\n}\n\n.android-more-section {\n  padding: 80px 0;\n  max-width: 1044px;\n  margin-left: auto;\n  margin-right: auto;\n}\n\n  .android-more-section .android-section-title {\n    margin-left: 12px;\n    padding-bottom: 24px;\n  }\n\n.android-card-container {\n}\n\n  .android-card-container .mdl-card__media {\n    overflow: hidden;\n    background: transparent;\n  }\n\n    .android-card-container .mdl-card__media img {\n      width: 100%;\n    }\n\n  .android-card-container .mdl-card__title {\n    background: transparent;\n    height: auto;\n  }\n\n  .android-card-container .mdl-card__title-text {\n    color: black;\n    height: auto;\n  }\n\n  .android-card-container .mdl-card__supporting-text {\n    height: auto;\n    color: black;\n    padding-bottom: 56px;\n  }\n\n  .android-card-container .mdl-card__actions {\n    position: absolute;\n    bottom: 0;\n  }\n\n  .android-card-container .mdl-card__actions a {\n    border-top: none;\n    font-size: 16px;\n  }\n\n.android-footer {\n  background-color: #fafafa;\n  position: relative;\n}\n\n  .android-footer a:hover {\n    color: #8bc34a;\n  }\n\n  .android-footer .mdl-mega-footer--top-section::after {\n    border-bottom: none;\n  }\n\n  .android-footer .mdl-mega-footer--middle-section::after {\n    border-bottom: none;\n  }\n\n  .android-footer .mdl-mega-footer--bottom-section {\n    position: relative;\n  }\n\n  .android-footer .mdl-mega-footer--bottom-section a {\n    margin-right: 2em;\n  }\n\n  .android-footer .mdl-mega-footer--right-section a .material-icons {\n    position: relative;\n    top: 6px;\n  }\n\n\n.android-link-menu:hover {\n  cursor: pointer;\n}\n\n\n/**** Mobile layout ****/\n@media (max-width: 900px) {\n  .android-navigation-container {\n    display: none;\n  }\n\n  .android-title {\n    display: none !important;\n  }\n\n  .android-mobile-title {\n    display: block !important;\n    position: absolute;\n    left: calc(50% - 70px);\n    top: 12px;\n    transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n  }\n\n  /* WebViews in iOS 9 break the \"~\" operator, and WebViews in OS X 10.10 break\n     consecutive \"+\" operators in some cases. Therefore, we need to use both\n     here to cover all the bases. */\n  .android.android-search-box.is-focused ~ .android-mobile-title,\n  .android-search-box.is-focused + .android-navigation-container + .android-mobile-title {\n    opacity: 0;\n  }\n\n  .android-more-button {\n    display: none;\n  }\n\n  .android-search-box.is-focused {\n    width: calc(100% - 48px);\n  }\n\n  .android-search-box .mdl-textfield__expandable-holder {\n    width: 100%;\n  }\n\n  .android-be-together-section {\n    height: 350px;\n  }\n\n  .android-slogan {\n    font-size: 26px;\n    margin: 0 16px;\n    padding-top: 24px;\n  }\n\n  .android-sub-slogan {\n    font-size: 16px;\n    margin: 0 16px;\n    padding-top: 8px;\n  }\n\n  .android-create-character {\n    padding-top: 200px;\n    font-size: 16px;\n  }\n\n  .android-create-character img {\n    height: 12px;\n  }\n\n  .android-fab {\n    display: none;\n  }\n\n  .android-wear-band-text {\n    margin-left: 0;\n    padding: 16px;\n  }\n\n  .android-footer .mdl-mega-footer--bottom-section {\n    display: none;\n  }\n}\n"
  },
  {
    "path": "templates/article/index.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A front-end template that helps you build fast, modern mobile web apps.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>Material Design Lite</title>\n\n    <!-- Add to homescreen for Chrome on Android -->\n    <meta name=\"mobile-web-app-capable\" content=\"yes\">\n    <link rel=\"icon\" sizes=\"192x192\" href=\"images/android-desktop.png\">\n\n    <!-- Add to homescreen for Safari on iOS -->\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n    <meta name=\"apple-mobile-web-app-title\" content=\"Material Design Lite\">\n    <link rel=\"apple-touch-icon-precomposed\" href=\"images/ios-desktop.png\">\n\n    <!-- Tile icon for Win8 (144x144 + tile color) -->\n    <meta name=\"msapplication-TileImage\" content=\"images/touch/ms-touch-icon-144x144-precomposed.png\">\n    <meta name=\"msapplication-TileColor\" content=\"#3372DF\">\n\n    <link rel=\"shortcut icon\" href=\"images/favicon.png\">\n\n    <!-- SEO: If your mobile URL is different from the desktop URL, add a canonical link to the desktop page https://developers.google.com/webmasters/smartphone-sites/feature-phones -->\n    <!--\n    <link rel=\"canonical\" href=\"http://www.example.com/\">\n    -->\n\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n    <link rel=\"stylesheet\" href=\"$$hosted_libs_prefix$$/$$version$$/material.teal-red.min.css\">\n    <link rel=\"stylesheet\" href=\"styles.css\">\n    <style>\n    #view-source {\n      position: fixed;\n      display: block;\n      right: 0;\n      bottom: 0;\n      margin-right: 40px;\n      margin-bottom: 40px;\n      z-index: 900;\n    }\n    </style>\n  </head>\n  <body>\n    <div class=\"demo-layout mdl-layout mdl-layout--fixed-header mdl-js-layout mdl-color--grey-100\">\n      <header class=\"demo-header mdl-layout__header mdl-layout__header--scroll mdl-color--grey-100 mdl-color-text--grey-800\">\n        <div class=\"mdl-layout__header-row\">\n          <span class=\"mdl-layout-title\">Material Design Lite</span>\n          <div class=\"mdl-layout-spacer\"></div>\n          <div class=\"mdl-textfield mdl-js-textfield mdl-textfield--expandable\">\n            <label class=\"mdl-button mdl-js-button mdl-button--icon\" for=\"search\">\n              <i class=\"material-icons\">search</i>\n            </label>\n            <div class=\"mdl-textfield__expandable-holder\">\n              <input class=\"mdl-textfield__input\" type=\"text\" id=\"search\">\n              <label class=\"mdl-textfield__label\" for=\"search\">Enter your query...</label>\n            </div>\n          </div>\n        </div>\n      </header>\n      <div class=\"demo-ribbon\"></div>\n      <main class=\"demo-main mdl-layout__content\">\n        <div class=\"demo-container mdl-grid\">\n          <div class=\"mdl-cell mdl-cell--2-col mdl-cell--hide-tablet mdl-cell--hide-phone\"></div>\n          <div class=\"demo-content mdl-color--white mdl-shadow--4dp content mdl-color-text--grey-800 mdl-cell mdl-cell--8-col\">\n            <div class=\"demo-crumbs mdl-color-text--grey-500\">\n              Google &gt; Material Design Lite &gt; How to install MDL\n            </div>\n            <h3>How to install MDL</h3>\n              <p>\n                Cillum dolor esse sit incididunt velit eiusmod magna ad nostrud officia aute dolor dolor. Magna esse ullamco pariatur adipisicing consectetur eu commodo officia. Ex cillum consequat mollit minim elit est deserunt occaecat nisi amet. Quis aliqua nostrud Lorem occaecat sunt. Eiusmod quis amet ullamco aliquip dolore ut incididunt duis adipisicing. Elit consequat nisi eiusmod aute ipsum sunt veniam do est. Occaecat mollit aliquip ut proident consectetur amet ex dolore consectetur aliqua elit.\n              </p>\n              <p>\n                Commodo nisi non consectetur voluptate incididunt mollit duis dolore amet amet tempor exercitation. Qui amet aute ea aute id ad aliquip proident. Irure duis qui labore deserunt enim in quis nisi sint consequat aliqua. Ex proident labore et laborum tempor fugiat sint magna veniam minim. Nulla dolor labore adipisicing in enim mollit laboris fugiat eu. Aliquip minim cillum ullamco voluptate non dolore non ex duis fugiat duis ad. Deserunt cillum ad et nisi amet non voluptate culpa qui do. Labore ullamco et minim proident est laborum mollit ad labore deserunt ut irure dolore. Reprehenderit ad ad irure ut irure qui est eu velit eu excepteur adipisicing culpa. Laborum cupidatat ullamco eu duis anim reprehenderit proident aute ad consectetur eiusmod.\n              </p>\n              <p>\n                Tempor tempor aliqua in commodo cillum Lorem magna dolore proident Lorem. Esse ad consequat est excepteur irure eu irure quis aliqua qui. Do mollit esse veniam excepteur ut veniam anim minim dolore sit commodo consequat duis commodo. Sunt dolor reprehenderit ipsum minim eiusmod eu consectetur anim excepteur eiusmod. Duis excepteur anim dolor sit enim veniam deserunt anim adipisicing Lorem elit. Cillum sunt do consequat elit laboris nisi consectetur.\n              </p>\n            <h3>Basic MDL Usage</h3>\n              <p>\n                Cillum dolor esse sit incididunt velit eiusmod magna ad nostrud officia aute dolor dolor. Magna esse ullamco pariatur adipisicing consectetur eu commodo officia. Ex cillum consequat mollit minim elit est deserunt occaecat nisi amet. Quis aliqua nostrud Lorem occaecat sunt. Eiusmod quis amet ullamco aliquip dolore ut incididunt duis adipisicing. Elit consequat nisi eiusmod aute ipsum sunt veniam do est. Occaecat mollit aliquip ut proident consectetur amet ex dolore consectetur aliqua elit.\n              </p>\n              <p>\n                Commodo nisi non consectetur voluptate incididunt mollit duis dolore amet amet tempor exercitation. Qui amet aute ea aute id ad aliquip proident. Irure duis qui labore deserunt enim in quis nisi sint consequat aliqua. Ex proident labore et laborum tempor fugiat sint magna veniam minim. Nulla dolor labore adipisicing in enim mollit laboris fugiat eu. Aliquip minim cillum ullamco voluptate non dolore non ex duis fugiat duis ad. Deserunt cillum ad et nisi amet non voluptate culpa qui do. Labore ullamco et minim proident est laborum mollit ad labore deserunt ut irure dolore. Reprehenderit ad ad irure ut irure qui est eu velit eu excepteur adipisicing culpa. Laborum cupidatat ullamco eu duis anim reprehenderit proident aute ad consectetur eiusmod.\n              </p>\n              <p>\n                Cillum dolor esse sit incididunt velit eiusmod magna ad nostrud officia aute dolor dolor. Magna esse ullamco pariatur adipisicing consectetur eu commodo officia. Ex cillum consequat mollit minim elit est deserunt occaecat nisi amet. Quis aliqua nostrud Lorem occaecat sunt. Eiusmod quis amet ullamco aliquip dolore ut incididunt duis adipisicing. Elit consequat nisi eiusmod aute ipsum sunt veniam do est. Occaecat mollit aliquip ut proident consectetur amet ex dolore consectetur aliqua elit.\n              </p>\n              <p>\n                Commodo nisi non consectetur voluptate incididunt mollit duis dolore amet amet tempor exercitation. Qui amet aute ea aute id ad aliquip proident. Irure duis qui labore deserunt enim in quis nisi sint consequat aliqua. Ex proident labore et laborum tempor fugiat sint magna veniam minim. Nulla dolor labore adipisicing in enim mollit laboris fugiat eu. Aliquip minim cillum ullamco voluptate non dolore non ex duis fugiat duis ad. Deserunt cillum ad et nisi amet non voluptate culpa qui do. Labore ullamco et minim proident est laborum mollit ad labore deserunt ut irure dolore. Reprehenderit ad ad irure ut irure qui est eu velit eu excepteur adipisicing culpa. Laborum cupidatat ullamco eu duis anim reprehenderit proident aute ad consectetur eiusmod.\n              </p>\n              <p>\n                Cillum dolor esse sit incididunt velit eiusmod magna ad nostrud officia aute dolor dolor. Magna esse ullamco pariatur adipisicing consectetur eu commodo officia. Ex cillum consequat mollit minim elit est deserunt occaecat nisi amet. Quis aliqua nostrud Lorem occaecat sunt. Eiusmod quis amet ullamco aliquip dolore ut incididunt duis adipisicing. Elit consequat nisi eiusmod aute ipsum sunt veniam do est. Occaecat mollit aliquip ut proident consectetur amet ex dolore consectetur aliqua elit.\n              </p>\n              <p>\n                Commodo nisi non consectetur voluptate incididunt mollit duis dolore amet amet tempor exercitation. Qui amet aute ea aute id ad aliquip proident. Irure duis qui labore deserunt enim in quis nisi sint consequat aliqua. Ex proident labore et laborum tempor fugiat sint magna veniam minim. Nulla dolor labore adipisicing in enim mollit laboris fugiat eu. Aliquip minim cillum ullamco voluptate non dolore non ex duis fugiat duis ad. Deserunt cillum ad et nisi amet non voluptate culpa qui do. Labore ullamco et minim proident est laborum mollit ad labore deserunt ut irure dolore. Reprehenderit ad ad irure ut irure qui est eu velit eu excepteur adipisicing culpa. Laborum cupidatat ullamco eu duis anim reprehenderit proident aute ad consectetur eiusmod.\n              </p>\n              <p>\n                Cillum dolor esse sit incididunt velit eiusmod magna ad nostrud officia aute dolor dolor. Magna esse ullamco pariatur adipisicing consectetur eu commodo officia. Ex cillum consequat mollit minim elit est deserunt occaecat nisi amet. Quis aliqua nostrud Lorem occaecat sunt. Eiusmod quis amet ullamco aliquip dolore ut incididunt duis adipisicing. Elit consequat nisi eiusmod aute ipsum sunt veniam do est. Occaecat mollit aliquip ut proident consectetur amet ex dolore consectetur aliqua elit.\n              </p>\n              <p>\n                Commodo nisi non consectetur voluptate incididunt mollit duis dolore amet amet tempor exercitation. Qui amet aute ea aute id ad aliquip proident. Irure duis qui labore deserunt enim in quis nisi sint consequat aliqua. Ex proident labore et laborum tempor fugiat sint magna veniam minim. Nulla dolor labore adipisicing in enim mollit laboris fugiat eu. Aliquip minim cillum ullamco voluptate non dolore non ex duis fugiat duis ad. Deserunt cillum ad et nisi amet non voluptate culpa qui do. Labore ullamco et minim proident est laborum mollit ad labore deserunt ut irure dolore. Reprehenderit ad ad irure ut irure qui est eu velit eu excepteur adipisicing culpa. Laborum cupidatat ullamco eu duis anim reprehenderit proident aute ad consectetur eiusmod.\n              </p>\n          </div>\n        </div>\n        <footer class=\"demo-footer mdl-mini-footer\">\n          <div class=\"mdl-mini-footer--left-section\">\n            <ul class=\"mdl-mini-footer--link-list\">\n              <li><a href=\"#\">Help</a></li>\n              <li><a href=\"#\">Privacy and Terms</a></li>\n              <li><a href=\"#\">User Agreement</a></li>\n            </ul>\n          </div>\n        </footer>\n      </main>\n    </div>\n    <a href=\"https://github.com/google/material-design-lite/blob/mdl-1.x/templates/article/\" target=\"_blank\" id=\"view-source\" class=\"mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-color--accent mdl-color-text--accent-contrast\">View Source</a>\n    <script src=\"$$hosted_libs_prefix$$/$$version$$/material.min.js\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "templates/article/styles.css",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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.demo-ribbon {\n  width: 100%;\n  height: 40vh;\n  background-color: #3F51B5;\n  flex-shrink: 0;\n}\n\n.demo-main {\n  margin-top: -35vh;\n  flex-shrink: 0;\n}\n\n.demo-header .mdl-layout__header-row {\n  padding-left: 40px;\n}\n\n.demo-container {\n  max-width: 1600px;\n  width: calc(100% - 16px);\n  margin: 0 auto;\n}\n\n.demo-content {\n  border-radius: 2px;\n  padding: 80px 56px;\n  margin-bottom: 80px;\n}\n\n.demo-layout.is-small-screen .demo-content {\n  padding: 40px 28px;\n}\n\n.demo-content h3 {\n  margin-top: 48px;\n}\n\n.demo-footer {\n  padding-left: 40px;\n}\n\n.demo-footer .mdl-mini-footer--link-list a {\n  font-size: 13px;\n}\n"
  },
  {
    "path": "templates/blog/entry.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A front-end template that helps you build fast, modern mobile web apps.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>Material Design Lite</title>\n\n    <!-- Add to homescreen for Chrome on Android -->\n    <meta name=\"mobile-web-app-capable\" content=\"yes\">\n    <link rel=\"icon\" sizes=\"192x192\" href=\"images/touch/chrome-touch-icon-192x192.png\">\n\n    <!-- Add to homescreen for Safari on iOS -->\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n    <meta name=\"apple-mobile-web-app-title\" content=\"Material Design Lite\">\n    <link rel=\"apple-touch-icon-precomposed\" href=\"apple-touch-icon-precomposed.png\">\n\n    <!-- Tile icon for Win8 (144x144 + tile color) -->\n    <meta name=\"msapplication-TileImage\" content=\"images/touch/ms-touch-icon-144x144-precomposed.png\">\n    <meta name=\"msapplication-TileColor\" content=\"#3372DF\">\n\n    <!-- SEO: If your mobile URL is different from the desktop URL, add a canonical link to the desktop page https://developers.google.com/webmasters/smartphone-sites/feature-phones -->\n    <!--\n    <link rel=\"canonical\" href=\"http://www.example.com/\">\n    -->\n\n    <link href='//fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en' rel='stylesheet' type='text/css'>\n    <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"\n      rel=\"stylesheet\">\n    <link rel=\"stylesheet\" href=\"$$hosted_libs_prefix$$/$$version$$/material.grey-orange.min.css\">\n    <link rel=\"stylesheet\" href=\"styles.css\">\n    <style>\n    #view-source {\n      position: fixed;\n      display: block;\n      right: 0;\n      bottom: 0;\n      margin-right: 40px;\n      margin-bottom: 40px;\n      z-index: 900;\n    }\n    </style>\n  </head>\n  <body>\n    <div class=\"demo-blog demo-blog--blogpost mdl-layout mdl-js-layout has-drawer is-upgraded\">\n      <main class=\"mdl-layout__content\">\n        <div class=\"demo-back\">\n          <a class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\" href=\"index.html\" title=\"go back\" role=\"button\">\n            <i class=\"material-icons\" role=\"presentation\">arrow_back</i>\n          </a>\n        </div>\n        <div class=\"demo-blog__posts mdl-grid\">\n          <div class=\"mdl-card mdl-shadow--4dp mdl-cell mdl-cell--12-col\">\n            <div class=\"mdl-card__media mdl-color-text--grey-50\">\n              <h3>On the road again</h3>\n            </div>\n            <div class=\"mdl-color-text--grey-700 mdl-card__supporting-text meta\">\n              <div class=\"minilogo\"></div>\n              <div>\n                <strong>The Newist</strong>\n                <span>2 days ago</span>\n              </div>\n              <div class=\"section-spacer\"></div>\n              <div class=\"meta__favorites\">\n                425 <i class=\"material-icons\" role=\"presentation\">favorite</i>\n                <span class=\"visuallyhidden\">favorites</span>\n              </div>\n              <div>\n                <i class=\"material-icons\" role=\"presentation\">bookmark</i>\n                <span class=\"visuallyhidden\">bookmark</span>\n              </div>\n              <div>\n                <i class=\"material-icons\" role=\"presentation\">share</i>\n                <span class=\"visuallyhidden\">share</span>\n              </div>\n            </div>\n            <div class=\"mdl-color-text--grey-700 mdl-card__supporting-text\">\n              <p>\n                Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit. Velit anim eiusmod labore sit amet. Voluptate voluptate irure occaecat deserunt incididunt esse in. Sunt velit aliquip sunt elit ex nulla reprehenderit qui ut eiusmod ipsum do. Duis veniam reprehenderit laborum occaecat id proident nulla veniam. Duis enim deserunt voluptate aute veniam sint pariatur exercitation. Irure mollit est sit labore est deserunt pariatur duis aute laboris cupidatat. Consectetur consequat esse est sit veniam adipisicing ipsum enim irure.\n              </p>\n              <p>\n                Qui ullamco consectetur aute fugiat officia ullamco proident Lorem ad irure. Sint eu ut consectetur ut esse veniam laboris adipisicing aliquip minim anim labore commodo. Incididunt eu enim enim ipsum Lorem commodo tempor duis eu ullamco tempor elit occaecat sit. Culpa eu sit voluptate ullamco ad irure. Anim commodo aliquip cillum ea nostrud commodo id culpa eu irure ut proident. Incididunt cillum excepteur incididunt mollit exercitation fugiat in. Magna irure laborum amet non ullamco aliqua eu. Aliquip adipisicing dolore irure culpa aute enim. Ullamco quis eiusmod ipsum laboris quis qui.\n              </p>\n              <p>\n                Cillum ullamco eu cupidatat excepteur Lorem minim sint quis officia irure irure sint fugiat nostrud. Pariatur Lorem irure excepteur Lorem non irure ea fugiat adipisicing esse nisi ullamco proident sint. Consectetur qui quis cillum occaecat ullamco veniam et Lorem cupidatat pariatur. Labore officia ex aliqua et occaecat velit dolor deserunt minim velit mollit irure. Cillum cupidatat enim officia non velit officia labore. Ut esse nisi voluptate et deserunt enim laborum qui magna sint sunt cillum. Id exercitation labore sint ea labore adipisicing deserunt enim commodo consectetur reprehenderit enim. Est anim nostrud quis non fugiat duis cillum. Aliquip enim officia ad commodo id.\n              </p>\n            </div>\n            <div class=\"mdl-color-text--primary-contrast mdl-card__supporting-text comments\">\n              <form>\n                <div class=\"mdl-textfield mdl-js-textfield mdl-textfield--floating-label\">\n                  <textarea rows=1 class=\"mdl-textfield__input\" id=\"comment\"></textarea>\n                  <label for=\"comment\" class=\"mdl-textfield__label\">Join the discussion</label>\n                </div>\n                <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\">\n                  <i class=\"material-icons\" role=\"presentation\">check</i><span class=\"visuallyhidden\">add comment</span>\n                </button>\n              </form>\n              <div class=\"comment mdl-color-text--grey-700\">\n                <header class=\"comment__header\">\n                  <img src=\"images/co1.jpg\" class=\"comment__avatar\">\n                  <div class=\"comment__author\">\n                    <strong>James Splayd</strong>\n                    <span>2 days ago</span>\n                  </div>\n                </header>\n                <div class=\"comment__text\">\n                  In in culpa nulla elit esse. Ex cillum enim aliquip sit sit ullamco ex eiusmod fugiat. Cupidatat ad minim officia mollit laborum magna dolor tempor cupidatat mollit. Est velit sit ad aliqua ullamco laborum excepteur dolore proident incididunt in labore elit.\n                </div>\n                <nav class=\"comment__actions\">\n                  <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\">\n                    <i class=\"material-icons\" role=\"presentation\">thumb_up</i><span class=\"visuallyhidden\">like comment</span>\n                  </button>\n                  <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\">\n                    <i class=\"material-icons\" role=\"presentation\">thumb_down</i><span class=\"visuallyhidden\">dislike comment</span>\n                  </button>\n                  <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\">\n                    <i class=\"material-icons\" role=\"presentation\">share</i><span class=\"visuallyhidden\">share comment</span>\n                  </button>\n                </nav>\n                <div class=\"comment__answers\">\n                  <div class=\"comment\">\n                    <header class=\"comment__header\">\n                      <img src=\"images/co2.jpg\" class=\"comment__avatar\">\n                      <div class=\"comment__author\">\n                        <strong>John Dufry</strong>\n                        <span>2 days ago</span>\n                      </div>\n                    </header>\n                    <div class=\"comment__text\">\n                      Yep, agree!\n                    </div>\n                    <nav class=\"comment__actions\">\n                      <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\">\n                        <i class=\"material-icons\" role=\"presentation\">thumb_up</i><span class=\"visuallyhidden\">like comment</span>\n                      </button>\n                      <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\">\n                        <i class=\"material-icons\" role=\"presentation\">thumb_down</i><span class=\"visuallyhidden\">dislike comment</span>\n                      </button>\n                      <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\">\n                        <i class=\"material-icons\" role=\"presentation\">share</i><span class=\"visuallyhidden\">share comment</span>\n                      </button>\n                    </nav>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n\n          <nav class=\"demo-nav mdl-color-text--grey-50 mdl-cell mdl-cell--12-col\">\n            <a href=\"index.html\" class=\"demo-nav__button\">\n              <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon mdl-color--white mdl-color-text--grey-900\" role=\"presentation\">\n                <i class=\"material-icons\">arrow_back</i>\n              </button>\n              Newer\n            </a>\n            <div class=\"section-spacer\"></div>\n            <a href=\"index.html\" class=\"demo-nav__button\">\n              Older\n              <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon mdl-color--white mdl-color-text--grey-900\" role=\"presentation\">\n                <i class=\"material-icons\">arrow_forward</i>\n              </button>\n            </a>\n          </nav>\n        </div>\n        <footer class=\"mdl-mini-footer\">\n          <div class=\"mdl-mini-footer--left-section\">\n            <button class=\"mdl-mini-footer--social-btn social-btn social-btn__twitter\">\n              <span class=\"visuallyhidden\">Twitter</span>\n            </button>\n            <button class=\"mdl-mini-footer--social-btn social-btn social-btn__blogger\">\n              <span class=\"visuallyhidden\">Facebook</span>\n            </button>\n            <button class=\"mdl-mini-footer--social-btn social-btn social-btn__gplus\">\n              <span class=\"visuallyhidden\">Google Plus</span>\n            </button>\n          </div>\n          <div class=\"mdl-mini-footer--right-section\">\n            <button class=\"mdl-mini-footer--social-btn social-btn__share\">\n              <i class=\"material-icons\" role=\"presentation\">share</i>\n              <span class=\"visuallyhidden\">share</span>\n            </button>\n          </div>\n        </footer>\n      </main>\n      <div class=\"mdl-layout__obfuscator\"></div>\n    </div>\n    <a href=\"https://github.com/google/material-design-lite/blob/mdl-1.x/templates/blog/\" target=\"_blank\" id=\"view-source\" class=\"mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-color--accent mdl-color-text--white\">View Source</a>\n    <script src=\"$$hosted_libs_prefix$$/$$version$$/material.min.js\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "templates/blog/index.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A front-end template that helps you build fast, modern mobile web apps.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>Material Design Lite</title>\n\n    <!-- Add to homescreen for Chrome on Android -->\n    <meta name=\"mobile-web-app-capable\" content=\"yes\">\n    <link rel=\"icon\" sizes=\"192x192\" href=\"images/android-desktop.png\">\n\n    <!-- Add to homescreen for Safari on iOS -->\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n    <meta name=\"apple-mobile-web-app-title\" content=\"Material Design Lite\">\n    <link rel=\"apple-touch-icon-precomposed\" href=\"images/ios-desktop.png\">\n\n    <!-- Tile icon for Win8 (144x144 + tile color) -->\n    <meta name=\"msapplication-TileImage\" content=\"images/touch/ms-touch-icon-144x144-precomposed.png\">\n    <meta name=\"msapplication-TileColor\" content=\"#3372DF\">\n\n    <link rel=\"shortcut icon\" href=\"images/favicon.png\">\n\n    <!-- SEO: If your mobile URL is different from the desktop URL, add a canonical link to the desktop page https://developers.google.com/webmasters/smartphone-sites/feature-phones -->\n    <!--\n    <link rel=\"canonical\" href=\"http://www.example.com/\">\n    -->\n\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n    <link rel=\"stylesheet\" href=\"$$hosted_libs_prefix$$/$$version$$/material.grey-orange.min.css\">\n    <link rel=\"stylesheet\" href=\"styles.css\">\n    <style>\n    #view-source {\n      position: fixed;\n      display: block;\n      right: 0;\n      bottom: 0;\n      margin-right: 40px;\n      margin-bottom: 40px;\n      z-index: 900;\n    }\n    </style>\n  </head>\n  <body>\n    <div class=\"demo-blog mdl-layout mdl-js-layout has-drawer is-upgraded\">\n      <main class=\"mdl-layout__content\">\n        <div class=\"demo-blog__posts mdl-grid\">\n          <div class=\"mdl-card coffee-pic mdl-cell mdl-cell--8-col\">\n            <div class=\"mdl-card__media mdl-color-text--grey-50\">\n              <h3><a href=\"entry.html\">Coffee Pic</a></h3>\n            </div>\n            <div class=\"mdl-card__supporting-text meta mdl-color-text--grey-600\">\n              <div class=\"minilogo\"></div>\n              <div>\n                <strong>The Newist</strong>\n                <span>2 days ago</span>\n              </div>\n            </div>\n          </div>\n          <div class=\"mdl-card something-else mdl-cell mdl-cell--8-col mdl-cell--4-col-desktop\">\n            <button class=\"mdl-button mdl-js-ripple-effect mdl-js-button mdl-button--fab mdl-color--accent\">\n              <i class=\"material-icons mdl-color-text--white\" role=\"presentation\">add</i>\n              <span class=\"visuallyhidden\">add</span>\n            </button>\n            <div class=\"mdl-card__media mdl-color--white mdl-color-text--grey-600\">\n              <img src=\"images/logo.png\">\n              +1,337\n            </div>\n            <div class=\"mdl-card__supporting-text meta meta--fill mdl-color-text--grey-600\">\n              <div>\n                <strong>The Newist</strong>\n              </div>\n              <ul class=\"mdl-menu mdl-js-menu mdl-menu--bottom-right mdl-js-ripple-effect\" for=\"menubtn\">\n                <li class=\"mdl-menu__item\">About</li>\n                <li class=\"mdl-menu__item\">Message</li>\n                <li class=\"mdl-menu__item\">Favorite</li>\n                <li class=\"mdl-menu__item\">Search</li>\n              </ul>\n              <button id=\"menubtn\" class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\">\n                <i class=\"material-icons\" role=\"presentation\">more_vert</i>\n                <span class=\"visuallyhidden\">show menu</span>\n              </button>\n            </div>\n          </div>\n          <div class=\"mdl-card on-the-road-again mdl-cell mdl-cell--12-col\">\n            <div class=\"mdl-card__media mdl-color-text--grey-50\">\n              <h3><a href=\"entry.html\">On the road again</a></h3>\n            </div>\n            <div class=\"mdl-color-text--grey-600 mdl-card__supporting-text\">\n              Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n            </div>\n            <div class=\"mdl-card__supporting-text meta mdl-color-text--grey-600\">\n              <div class=\"minilogo\"></div>\n              <div>\n                <strong>The Newist</strong>\n                <span>2 days ago</span>\n              </div>\n            </div>\n          </div>\n          <div class=\"mdl-card amazing mdl-cell mdl-cell--12-col\">\n            <div class=\"mdl-card__title mdl-color-text--grey-50\">\n              <h3 class=\"quote\"><a href=\"entry.html\">I couldn’t take any pictures but this was an amazing thing…</a></h3>\n            </div>\n            <div class=\"mdl-card__supporting-text mdl-color-text--grey-600\">\n              Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n            </div>\n            <div class=\"mdl-card__supporting-text meta mdl-color-text--grey-600\">\n              <div class=\"minilogo\"></div>\n              <div>\n                <strong>The Newist</strong>\n                <span>2 days ago</span>\n              </div>\n            </div>\n          </div>\n          <div class=\"mdl-card shopping mdl-cell mdl-cell--12-col\">\n            <div class=\"mdl-card__media mdl-color-text--grey-50\">\n              <h3><a href=\"entry.html\">Shopping</a></h3>\n            </div>\n            <div class=\"mdl-card__supporting-text mdl-color-text--grey-600\">\n              Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n            </div>\n            <div class=\"mdl-card__supporting-text meta mdl-color-text--grey-600\">\n              <div class=\"minilogo\"></div>\n              <div>\n                <strong>The Newist</strong>\n                <span>2 days ago</span>\n              </div>\n            </div>\n          </div>\n          <nav class=\"demo-nav mdl-cell mdl-cell--12-col\">\n            <div class=\"section-spacer\"></div>\n            <a href=\"entry.html\" class=\"demo-nav__button\" title=\"show more\">\n              More\n              <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\">\n                <i class=\"material-icons\" role=\"presentation\">arrow_forward</i>\n              </button>\n            </a>\n          </nav>\n        </div>\n        <footer class=\"mdl-mini-footer\">\n          <div class=\"mdl-mini-footer--left-section\">\n            <button class=\"mdl-mini-footer--social-btn social-btn social-btn__twitter\">\n              <span class=\"visuallyhidden\">Twitter</span>\n            </button>\n            <button class=\"mdl-mini-footer--social-btn social-btn social-btn__blogger\">\n              <span class=\"visuallyhidden\">Facebook</span>\n            </button>\n            <button class=\"mdl-mini-footer--social-btn social-btn social-btn__gplus\">\n              <span class=\"visuallyhidden\">Google Plus</span>\n            </button>\n          </div>\n          <div class=\"mdl-mini-footer--right-section\">\n            <button class=\"mdl-mini-footer--social-btn social-btn__share\">\n              <i class=\"material-icons\" role=\"presentation\">share</i>\n              <span class=\"visuallyhidden\">share</span>\n            </button>\n          </div>\n        </footer>\n      </main>\n      <div class=\"mdl-layout__obfuscator\"></div>\n    </div>\n    <a href=\"https://github.com/google/material-design-lite/blob/mdl-1.x/templates/blog/\" target=\"_blank\" id=\"view-source\" class=\"mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-color--accent mdl-color-text--white\">View Source</a>\n    <script src=\"$$hosted_libs_prefix$$/$$version$$/material.min.js\"></script>\n  </body>\n  <script>\n    Array.prototype.forEach.call(document.querySelectorAll('.mdl-card__media'), function(el) {\n      var link = el.querySelector('a');\n      if(!link) {\n        return;\n      }\n      var target = link.getAttribute('href');\n      if(!target) {\n        return;\n      }\n      el.addEventListener('click', function() {\n        location.href = target;\n      });\n    });\n  </script>\n</html>\n"
  },
  {
    "path": "templates/blog/styles.css",
    "content": "body::before {\n    background-size: cover;\n    background-attachment: fixed;\n    content: '';\n    will-change: transform;\n    z-index: -1;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    top: 0;\n    position: fixed;\n}\n@media (max-width: 512px)  and (min-resolution: 1.5dppx),\n       (max-width: 1024px) and (max-resolution: 1.5dppx) {\n  body::before {\n    background-image: url('images/bg_1024.jpg');\n  }\n}\n@media (min-width: 513px)  and (max-width: 1024px) and (min-resolution: 1.5dppx),\n       (min-width: 1025px) and (max-width: 2048px) and (max-resolution: 1.5dppx)  {\n  body::before {\n    background-image: url('images/bg_2048.jpg');\n  }\n}\n@media (min-width: 1025px) and (min-resolution: 1.5dppx),\n       (min-width: 2049px) and (max-resolution: 1.5dppx) {\n  body::before {\n    background-image: url('images/bg_2880.jpg');\n  }\n}\nbody .demo-blog {\n  font-family: 'Roboto', 'Helvetica', sans-serif;\n}\n\n.demo-blog .demo-blog__posts {\n  max-width: 900px;\n  padding: 0;\n  display: flex;\n  width: 100%;\n  margin: 0 auto;\n  flex-shrink: 0;\n}\n\n.demo-blog.mdl-layout .mdl-layout__content {\n  padding-top: 230px;\n  position: relative;\n  -webkit-overflow-scrolling: touch;\n}\n.demo-blog .mdl-card {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  min-height: 360px;\n}\n.demo-blog .mdl-card__title {\n  padding: 16px;\n  flex-grow: 1;\n}\n.demo-blog .mdl-card__media {\n  box-sizing: border-box;\n  background-size: cover;\n  padding: 24px;\n  display: flex;\n  flex-grow: 1;\n  flex-direction: row;\n  align-items: flex-end;\n  cursor: pointer;\n}\n.demo-blog .mdl-card__media a,\n.demo-blog .mdl-card__title a {\n  color: inherit;\n}\n.demo-blog .mdl-card__supporting-text {\n  width: 100%;\n  padding: 16px;\n  min-height: 64px;\n  display: flex;\n  align-items: center;\n}\n.demo-blog .mdl-card__supporting-text strong {\n  font-weight: 400;\n}\n.demo-blog .mdl-card__media ~ .mdl-card__supporting-text {\n  min-height: 64px;\n}\n.demo-blog .mdl-card__supporting-text:not(:last-child) {\n  box-sizing: border-box;\n  min-height: 76px;\n}\n.demo-blog:not(.demo-blog--blogpost) .mdl-card__supporting-text ~ .mdl-card__supporting-text {\n  border-top: 1px solid rgba(0,0,0,0.1);\n}\n\n.demo-blog .mdl-card__actions:first-child {\n  margin-left: 0;\n}\n.demo-blog .meta {\n  box-sizing: border-box;\n  padding: 16px;\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  justify-content: flex-start;\n  height: auto;\n}\n.demo-blog .meta > .meta__favorites{\n  flex-direction: row;\n  margin: 0 8px;\n  font-size: 13px;\n  font-weight: 500;\n}\n.demo-blog .meta > .meta__favorites .material-icons {\n  font-size: 2em;\n  cursor: pointer;\n  margin-left: 12px;\n}\n.demo-blog .mdl-card .meta.meta--fill {\n  justify-content: space-between;\n}\n.demo-blog .meta > *:first-child {\n  margin-right: 16px;\n}\n.demo-blog .meta > * {\n  display: flex;\n  flex-direction: column;\n}\n.demo-blog.is-small-screen .demo-blog__posts > .mdl-card.coffee-pic {\n  order: 0;\n}\n.demo-blog.is-small-screen .demo-blog__posts > .mdl-card.something-else {\n  order: -1;\n}\n.demo-blog .coffee-pic .mdl-card__media {\n  background-image: url('images/coffee.jpg');\n}\n.demo-blog .something-else .mdl-card__media {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n}\n.demo-blog .something-else > button {\n  position: absolute;\n  top: 0;\n  right: 28px;\n  transform: translate(0px, -28px);\n}\n.demo-blog .something-else .mdl-card__media {\n  font-size: 13px;\n  font-weight: 500;\n  border-top-left-radius: 2px;\n  border-top-right-radius: 2px;\n}\n.demo-blog .something-else .mdl-card__media img {\n  width: 64px;\n  height: 64px;\n  margin-bottom: 10px;\n}\n.demo-blog .something-else .mdl-card__supporting-text {\n  background-color: #F5F5F5;\n  border-bottom-left-radius: 2px;\n  border-bottom-right-radius: 2px;\n}\n.demo-blog .on-the-road-again .mdl-card__media {\n  background-image: url('images/road.jpg');\n}\n.demo-blog .shopping .mdl-card__media {\n  background-image: url('images/shopping.jpg');\n}\n.demo-blog .demo-blog__posts > .demo-nav {\n  margin: 12px 15px;\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n  align-items: center;\n  color: white;\n  font-weight: 500;\n}\n.demo-blog .demo-blog__posts > .demo-nav > .demo-nav__button {\n  color: white;\n  text-decoration: none;\n}\n.demo-blog .demo-blog__posts > .demo-nav .mdl-button {\n  color: rgba(0,0,0,0.54);\n  background-color: white;\n}\n.demo-blog .demo-blog__posts > .demo-nav > .demo-nav__button:first-child .mdl-button {\n  margin-right: 16px;\n}\n.demo-blog .demo-blog__posts > .demo-nav > .demo-nav__button:last-child .mdl-button {\n  margin-left: 16px;\n}\n.demo-blog .mdl-card > a {\n  color: inherit;\n  text-decoration: none;\n  font-weight: inherit;\n}\n.demo-blog .mdl-card h3 {\n  margin: 0;\n}\n.demo-blog .mdl-card h3 a {\n  text-decoration: none;\n}\n.demo-blog .mdl-card h3.quote:before, .demo-blog .mdl-card h3.quote:after {\n  display: block;\n  font-size: 3em;\n  margin-top: 0.5em;\n}\n.demo-blog .mdl-card h3.quote:before {\n  content: '“';\n}\n.demo-blog .mdl-card h3.quote:after {\n  content: '”';\n}\n.demo-blog--blogpost .custom-header {\n  background-color: transparent;\n}\n.demo-blog--blogpost .demo-blog__posts > .mdl-card .mdl-card__media {\n  background-image: url('images/road_big.jpg');\n  height: 280px;\n}\n.demo-blog--blogpost .comments {\n  background-color: #EEE;\n}\n.demo-blog--blogpost .meta > * {\n  align-items: center;\n}\n.demo-blog--blogpost .meta + .mdl-card__supporting-text {\n  border: 0;\n  display: flex;\n  flex-direction: column;\n}\n.demo-blog--blogpost .meta + .mdl-card__supporting-text p {\n  max-width: 512px;\n  margin: 16px auto;\n  font-size: 16px;\n  line-height: 28px;\n}\n\n.demo-blog--blogpost .comments {\n  display: flex;\n  flex-direction: column;\n  justify-content: flex-start;\n  align-items: stretch;\n  padding: 32px;\n  box-sizing: border-box;\n}\n.demo-blog--blogpost .comments > form {\n  display: flex;\n  flex-direction: row;\n  margin-bottom: 16px;\n}\n.demo-blog--blogpost .comments > form .mdl-textfield {\n  flex-grow: 1;\n  margin-right: 16px;\n  color: rgb(97, 97, 97);\n}\n/* Workaround for Firefox.\n * User agent stylesheet kept overwriting the font in FF only.\n */\n.demo-blog--blogpost .comments > form .mdl-textfield .mdl-textfield__input {\n  font-family: 'Roboto', 'Helvetica', sans-serif;\n}\n.demo-blog--blogpost .comments > form .mdl-textfield input,\n.demo-blog--blogpost .comments > form .mdl-textfield textarea {\n  resize: none;\n}\n.demo-blog--blogpost .comments > form button {\n  margin-top: 20px;\n  background-color: rgba(0, 0, 0, 0.24);\n  color: white;\n}\n.demo-blog--blogpost .comments .comment {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n.demo-blog--blogpost .comments .comment > .comment__header {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  margin-bottom: 16px;\n}\n.demo-blog--blogpost .comments .comment > .comment__header > .comment__avatar {\n  width: 48px;\n  height: 48px;\n  border-radius: 24px;\n  margin-right: 16px;\n}\n.demo-blog--blogpost .comments .comment > .comment__header > .comment__author {\n  flex-grow: 1;\n  display: flex;\n  flex-direction: column;\n}\n.demo-blog--blogpost .comments .comment > .comment__text {\n  line-height: 1.5em;\n}\n.demo-blog--blogpost .comments .comment > .comment__actions {\n  display: flex;\n  flex-direction: row;\n  justify-content: flex-start;\n  align-items: center;\n  font-size: 0.8em;\n  margin-top: 16px;\n}\n.demo-blog--blogpost .comments .comment > .comment__actions button {\n  margin-right: 16px;\n  color: rgba(0, 0, 0, 0.24);\n}\n.demo-blog--blogpost .comments .comment > .comment__answers {\n  padding-top: 32px;\n  padding-left: 48px;\n}\n\n.demo-blog--blogpost .demo-back {\n  position: absolute;\n  top: 16px;\n  left: 16px;\n  color: white;\n  z-index: 9999;\n}\n.demo-blog .section-spacer {\n  flex-grow: 1;\n}\n.demo-blog .something-else {\n  overflow: visible;\n  z-index: 10;\n}\n.demo-blog .amazing .mdl-card__title {\n  background-color: #263238;\n}\n.demo-blog .minilogo {\n  width: 44px;\n  height: 44px;\n  background-image: url('images/avatar.png');\n  background-position: center;\n  background-repeat: no-repeat;\n  background-size: 50%;\n  border-radius: 22px;\n  background-color: #F5F5F5;\n}\n\n/* Fixes for IE 10 */\n.mdl-grid {\n  display: flex !important;\n}\n\n.social-btn {\n  background-position: center;\n  background-size: contain;\n  background-repeat: no-repeat;\n  background-color: transparent;\n  margin: 0 16px;\n  width: 24px;\n  height: 24px;\n  cursor: pointer;\n  opacity: 0.46;\n  border-radius: 2px;\n}\n.social-btn__twitter {\n  background-image: url('https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png');\n}\n.social-btn__blogger {\n  background-image: url('https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png');\n}\n.social-btn__gplus {\n  background-image: url('https://www.gstatic.com/images/icons/material/system/2x/post_gplus_black_24dp.png');\n}\n.social-btn__share {\n  color: rgba(0, 0, 0, 0.54);\n  background: transparent;\n}\n\n.demo-blog .mdl-mini-footer {\n  margin-top: 80px;\n  height: 120px;\n  padding: 40px;\n  align-items: center;\n  background-color: white;\n  box-sizing: border-box;\n}\n"
  },
  {
    "path": "templates/dashboard/index.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A front-end template that helps you build fast, modern mobile web apps.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>Material Design Lite</title>\n\n    <!-- Add to homescreen for Chrome on Android -->\n    <meta name=\"mobile-web-app-capable\" content=\"yes\">\n    <link rel=\"icon\" sizes=\"192x192\" href=\"images/android-desktop.png\">\n\n    <!-- Add to homescreen for Safari on iOS -->\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n    <meta name=\"apple-mobile-web-app-title\" content=\"Material Design Lite\">\n    <link rel=\"apple-touch-icon-precomposed\" href=\"images/ios-desktop.png\">\n\n    <!-- Tile icon for Win8 (144x144 + tile color) -->\n    <meta name=\"msapplication-TileImage\" content=\"images/touch/ms-touch-icon-144x144-precomposed.png\">\n    <meta name=\"msapplication-TileColor\" content=\"#3372DF\">\n\n    <link rel=\"shortcut icon\" href=\"images/favicon.png\">\n\n    <!-- SEO: If your mobile URL is different from the desktop URL, add a canonical link to the desktop page https://developers.google.com/webmasters/smartphone-sites/feature-phones -->\n    <!--\n    <link rel=\"canonical\" href=\"http://www.example.com/\">\n    -->\n\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n    <link rel=\"stylesheet\" href=\"$$hosted_libs_prefix$$/$$version$$/material.cyan-light_blue.min.css\">\n    <link rel=\"stylesheet\" href=\"styles.css\">\n    <style>\n    #view-source {\n      position: fixed;\n      display: block;\n      right: 0;\n      bottom: 0;\n      margin-right: 40px;\n      margin-bottom: 40px;\n      z-index: 900;\n    }\n    </style>\n  </head>\n  <body>\n    <div class=\"demo-layout mdl-layout mdl-js-layout mdl-layout--fixed-drawer mdl-layout--fixed-header\">\n      <header class=\"demo-header mdl-layout__header mdl-color--grey-100 mdl-color-text--grey-600\">\n        <div class=\"mdl-layout__header-row\">\n          <span class=\"mdl-layout-title\">Home</span>\n          <div class=\"mdl-layout-spacer\"></div>\n          <div class=\"mdl-textfield mdl-js-textfield mdl-textfield--expandable\">\n            <label class=\"mdl-button mdl-js-button mdl-button--icon\" for=\"search\">\n              <i class=\"material-icons\">search</i>\n            </label>\n            <div class=\"mdl-textfield__expandable-holder\">\n              <input class=\"mdl-textfield__input\" type=\"text\" id=\"search\">\n              <label class=\"mdl-textfield__label\" for=\"search\">Enter your query...</label>\n            </div>\n          </div>\n          <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\" id=\"hdrbtn\">\n            <i class=\"material-icons\">more_vert</i>\n          </button>\n          <ul class=\"mdl-menu mdl-js-menu mdl-js-ripple-effect mdl-menu--bottom-right\" for=\"hdrbtn\">\n            <li class=\"mdl-menu__item\">About</li>\n            <li class=\"mdl-menu__item\">Contact</li>\n            <li class=\"mdl-menu__item\">Legal information</li>\n          </ul>\n        </div>\n      </header>\n      <div class=\"demo-drawer mdl-layout__drawer mdl-color--blue-grey-900 mdl-color-text--blue-grey-50\">\n        <header class=\"demo-drawer-header\">\n          <img src=\"images/user.jpg\" class=\"demo-avatar\">\n          <div class=\"demo-avatar-dropdown\">\n            <span>hello@example.com</span>\n            <div class=\"mdl-layout-spacer\"></div>\n            <button id=\"accbtn\" class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\">\n              <i class=\"material-icons\" role=\"presentation\">arrow_drop_down</i>\n              <span class=\"visuallyhidden\">Accounts</span>\n            </button>\n            <ul class=\"mdl-menu mdl-menu--bottom-right mdl-js-menu mdl-js-ripple-effect\" for=\"accbtn\">\n              <li class=\"mdl-menu__item\">hello@example.com</li>\n              <li class=\"mdl-menu__item\">info@example.com</li>\n              <li class=\"mdl-menu__item\"><i class=\"material-icons\">add</i>Add another account...</li>\n            </ul>\n          </div>\n        </header>\n        <nav class=\"demo-navigation mdl-navigation mdl-color--blue-grey-800\">\n          <a class=\"mdl-navigation__link\" href=\"\"><i class=\"mdl-color-text--blue-grey-400 material-icons\" role=\"presentation\">home</i>Home</a>\n          <a class=\"mdl-navigation__link\" href=\"\"><i class=\"mdl-color-text--blue-grey-400 material-icons\" role=\"presentation\">inbox</i>Inbox</a>\n          <a class=\"mdl-navigation__link\" href=\"\"><i class=\"mdl-color-text--blue-grey-400 material-icons\" role=\"presentation\">delete</i>Trash</a>\n          <a class=\"mdl-navigation__link\" href=\"\"><i class=\"mdl-color-text--blue-grey-400 material-icons\" role=\"presentation\">report</i>Spam</a>\n          <a class=\"mdl-navigation__link\" href=\"\"><i class=\"mdl-color-text--blue-grey-400 material-icons\" role=\"presentation\">forum</i>Forums</a>\n          <a class=\"mdl-navigation__link\" href=\"\"><i class=\"mdl-color-text--blue-grey-400 material-icons\" role=\"presentation\">flag</i>Updates</a>\n          <a class=\"mdl-navigation__link\" href=\"\"><i class=\"mdl-color-text--blue-grey-400 material-icons\" role=\"presentation\">local_offer</i>Promos</a>\n          <a class=\"mdl-navigation__link\" href=\"\"><i class=\"mdl-color-text--blue-grey-400 material-icons\" role=\"presentation\">shopping_cart</i>Purchases</a>\n          <a class=\"mdl-navigation__link\" href=\"\"><i class=\"mdl-color-text--blue-grey-400 material-icons\" role=\"presentation\">people</i>Social</a>\n          <div class=\"mdl-layout-spacer\"></div>\n          <a class=\"mdl-navigation__link\" href=\"\"><i class=\"mdl-color-text--blue-grey-400 material-icons\" role=\"presentation\">help_outline</i><span class=\"visuallyhidden\">Help</span></a>\n        </nav>\n      </div>\n      <main class=\"mdl-layout__content mdl-color--grey-100\">\n        <div class=\"mdl-grid demo-content\">\n          <div class=\"demo-charts mdl-color--white mdl-shadow--2dp mdl-cell mdl-cell--12-col mdl-grid\">\n            <svg fill=\"currentColor\" width=\"200px\" height=\"200px\" viewBox=\"0 0 1 1\" class=\"demo-chart mdl-cell mdl-cell--4-col mdl-cell--3-col-desktop\">\n              <use xlink:href=\"#piechart\" mask=\"url(#piemask)\" />\n              <text x=\"0.5\" y=\"0.5\" font-family=\"Roboto\" font-size=\"0.3\" fill=\"#888\" text-anchor=\"middle\" dy=\"0.1\">82<tspan font-size=\"0.2\" dy=\"-0.07\">%</tspan></text>\n            </svg>\n            <svg fill=\"currentColor\" width=\"200px\" height=\"200px\" viewBox=\"0 0 1 1\" class=\"demo-chart mdl-cell mdl-cell--4-col mdl-cell--3-col-desktop\">\n              <use xlink:href=\"#piechart\" mask=\"url(#piemask)\" />\n              <text x=\"0.5\" y=\"0.5\" font-family=\"Roboto\" font-size=\"0.3\" fill=\"#888\" text-anchor=\"middle\" dy=\"0.1\">82<tspan dy=\"-0.07\" font-size=\"0.2\">%</tspan></text>\n            </svg>\n            <svg fill=\"currentColor\" width=\"200px\" height=\"200px\" viewBox=\"0 0 1 1\" class=\"demo-chart mdl-cell mdl-cell--4-col mdl-cell--3-col-desktop\">\n              <use xlink:href=\"#piechart\" mask=\"url(#piemask)\" />\n              <text x=\"0.5\" y=\"0.5\" font-family=\"Roboto\" font-size=\"0.3\" fill=\"#888\" text-anchor=\"middle\" dy=\"0.1\">82<tspan dy=\"-0.07\" font-size=\"0.2\">%</tspan></text>\n            </svg>\n            <svg fill=\"currentColor\" width=\"200px\" height=\"200px\" viewBox=\"0 0 1 1\" class=\"demo-chart mdl-cell mdl-cell--4-col mdl-cell--3-col-desktop\">\n              <use xlink:href=\"#piechart\" mask=\"url(#piemask)\" />\n              <text x=\"0.5\" y=\"0.5\" font-family=\"Roboto\" font-size=\"0.3\" fill=\"#888\" text-anchor=\"middle\" dy=\"0.1\">82<tspan dy=\"-0.07\" font-size=\"0.2\">%</tspan></text>\n            </svg>\n          </div>\n          <div class=\"demo-graphs mdl-shadow--2dp mdl-color--white mdl-cell mdl-cell--8-col\">\n            <svg fill=\"currentColor\" viewBox=\"0 0 500 250\" class=\"demo-graph\">\n              <use xlink:href=\"#chart\" />\n            </svg>\n            <svg fill=\"currentColor\" viewBox=\"0 0 500 250\" class=\"demo-graph\">\n              <use xlink:href=\"#chart\" />\n            </svg>\n          </div>\n          <div class=\"demo-cards mdl-cell mdl-cell--4-col mdl-cell--8-col-tablet mdl-grid mdl-grid--no-spacing\">\n            <div class=\"demo-updates mdl-card mdl-shadow--2dp mdl-cell mdl-cell--4-col mdl-cell--4-col-tablet mdl-cell--12-col-desktop\">\n              <div class=\"mdl-card__title mdl-card--expand mdl-color--teal-300\">\n                <h2 class=\"mdl-card__title-text\">Updates</h2>\n              </div>\n              <div class=\"mdl-card__supporting-text mdl-color-text--grey-600\">\n                Non dolore elit adipisicing ea reprehenderit consectetur culpa.\n              </div>\n              <div class=\"mdl-card__actions mdl-card--border\">\n                <a href=\"#\" class=\"mdl-button mdl-js-button mdl-js-ripple-effect\">Read More</a>\n              </div>\n            </div>\n            <div class=\"demo-separator mdl-cell--1-col\"></div>\n            <div class=\"demo-options mdl-card mdl-color--deep-purple-500 mdl-shadow--2dp mdl-cell mdl-cell--4-col mdl-cell--3-col-tablet mdl-cell--12-col-desktop\">\n              <div class=\"mdl-card__supporting-text mdl-color-text--blue-grey-50\">\n                <h3>View options</h3>\n                <ul>\n                  <li>\n                    <label for=\"chkbox1\" class=\"mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect\">\n                      <input type=\"checkbox\" id=\"chkbox1\" class=\"mdl-checkbox__input\">\n                      <span class=\"mdl-checkbox__label\">Click per object</span>\n                    </label>\n                  </li>\n                  <li>\n                    <label for=\"chkbox2\" class=\"mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect\">\n                      <input type=\"checkbox\" id=\"chkbox2\" class=\"mdl-checkbox__input\">\n                      <span class=\"mdl-checkbox__label\">Views per object</span>\n                    </label>\n                  </li>\n                  <li>\n                    <label for=\"chkbox3\" class=\"mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect\">\n                      <input type=\"checkbox\" id=\"chkbox3\" class=\"mdl-checkbox__input\">\n                      <span class=\"mdl-checkbox__label\">Objects selected</span>\n                    </label>\n                  </li>\n                  <li>\n                    <label for=\"chkbox4\" class=\"mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect\">\n                      <input type=\"checkbox\" id=\"chkbox4\" class=\"mdl-checkbox__input\">\n                      <span class=\"mdl-checkbox__label\">Objects viewed</span>\n                    </label>\n                  </li>\n                </ul>\n              </div>\n              <div class=\"mdl-card__actions mdl-card--border\">\n                <a href=\"#\" class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-color-text--blue-grey-50\">Change location</a>\n                <div class=\"mdl-layout-spacer\"></div>\n                <i class=\"material-icons\">location_on</i>\n              </div>\n            </div>\n          </div>\n        </div>\n      </main>\n    </div>\n      <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" style=\"position: fixed; left: -1000px; height: -1000px;\">\n        <defs>\n          <mask id=\"piemask\" maskContentUnits=\"objectBoundingBox\">\n            <circle cx=0.5 cy=0.5 r=0.49 fill=\"white\" />\n            <circle cx=0.5 cy=0.5 r=0.40 fill=\"black\" />\n          </mask>\n          <g id=\"piechart\">\n            <circle cx=0.5 cy=0.5 r=0.5 />\n            <path d=\"M 0.5 0.5 0.5 0 A 0.5 0.5 0 0 1 0.95 0.28 z\" stroke=\"none\" fill=\"rgba(255, 255, 255, 0.75)\" />\n          </g>\n        </defs>\n      </svg>\n      <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 500 250\" style=\"position: fixed; left: -1000px; height: -1000px;\">\n        <defs>\n          <g id=\"chart\">\n            <g id=\"Gridlines\">\n              <line fill=\"#888888\" stroke=\"#888888\" stroke-miterlimit=\"10\" x1=\"0\" y1=\"27.3\" x2=\"468.3\" y2=\"27.3\" />\n              <line fill=\"#888888\" stroke=\"#888888\" stroke-miterlimit=\"10\" x1=\"0\" y1=\"66.7\" x2=\"468.3\" y2=\"66.7\" />\n              <line fill=\"#888888\" stroke=\"#888888\" stroke-miterlimit=\"10\" x1=\"0\" y1=\"105.3\" x2=\"468.3\" y2=\"105.3\" />\n              <line fill=\"#888888\" stroke=\"#888888\" stroke-miterlimit=\"10\" x1=\"0\" y1=\"144.7\" x2=\"468.3\" y2=\"144.7\" />\n              <line fill=\"#888888\" stroke=\"#888888\" stroke-miterlimit=\"10\" x1=\"0\" y1=\"184.3\" x2=\"468.3\" y2=\"184.3\" />\n            </g>\n            <g id=\"Numbers\">\n              <text transform=\"matrix(1 0 0 1 485 29.3333)\" fill=\"#888888\" font-family=\"'Roboto'\" font-size=\"9\">500</text>\n              <text transform=\"matrix(1 0 0 1 485 69)\" fill=\"#888888\" font-family=\"'Roboto'\" font-size=\"9\">400</text>\n              <text transform=\"matrix(1 0 0 1 485 109.3333)\" fill=\"#888888\" font-family=\"'Roboto'\" font-size=\"9\">300</text>\n              <text transform=\"matrix(1 0 0 1 485 149)\" fill=\"#888888\" font-family=\"'Roboto'\" font-size=\"9\">200</text>\n              <text transform=\"matrix(1 0 0 1 485 188.3333)\" fill=\"#888888\" font-family=\"'Roboto'\" font-size=\"9\">100</text>\n              <text transform=\"matrix(1 0 0 1 0 249.0003)\" fill=\"#888888\" font-family=\"'Roboto'\" font-size=\"9\">1</text>\n              <text transform=\"matrix(1 0 0 1 78 249.0003)\" fill=\"#888888\" font-family=\"'Roboto'\" font-size=\"9\">2</text>\n              <text transform=\"matrix(1 0 0 1 154.6667 249.0003)\" fill=\"#888888\" font-family=\"'Roboto'\" font-size=\"9\">3</text>\n              <text transform=\"matrix(1 0 0 1 232.1667 249.0003)\" fill=\"#888888\" font-family=\"'Roboto'\" font-size=\"9\">4</text>\n              <text transform=\"matrix(1 0 0 1 309 249.0003)\" fill=\"#888888\" font-family=\"'Roboto'\" font-size=\"9\">5</text>\n              <text transform=\"matrix(1 0 0 1 386.6667 249.0003)\" fill=\"#888888\" font-family=\"'Roboto'\" font-size=\"9\">6</text>\n              <text transform=\"matrix(1 0 0 1 464.3333 249.0003)\" fill=\"#888888\" font-family=\"'Roboto'\" font-size=\"9\">7</text>\n            </g>\n            <g id=\"Layer_5\">\n              <polygon opacity=\"0.36\" stroke-miterlimit=\"10\" points=\"0,223.3 48,138.5 154.7,169 211,88.5\n              294.5,80.5 380,165.2 437,75.5 469.5,223.3 \t\"/>\n            </g>\n            <g id=\"Layer_4\">\n              <polygon stroke-miterlimit=\"10\" points=\"469.3,222.7 1,222.7 48.7,166.7 155.7,188.3 212,132.7\n              296.7,128 380.7,184.3 436.7,125 \t\"/>\n            </g>\n          </g>\n        </defs>\n      </svg>\n      <a href=\"https://github.com/google/material-design-lite/blob/mdl-1.x/templates/dashboard/\" target=\"_blank\" id=\"view-source\" class=\"mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored mdl-color-text--white\">View Source</a>\n    <script src=\"$$hosted_libs_prefix$$/$$version$$/material.min.js\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "templates/dashboard/styles.css",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\nhtml, body {\n  font-family: 'Roboto', 'Helvetica', sans-serif;\n}\n.demo-avatar {\n  width: 48px;\n  height: 48px;\n  border-radius: 24px;\n}\n.demo-layout .mdl-layout__header .mdl-layout__drawer-button {\n  color: rgba(0, 0, 0, 0.54);\n}\n.mdl-layout__drawer .avatar {\n  margin-bottom: 16px;\n}\n.demo-drawer {\n  border: none;\n}\n/* iOS Safari specific workaround */\n.demo-drawer .mdl-menu__container {\n  z-index: -1;\n}\n.demo-drawer .demo-navigation {\n  z-index: -2;\n}\n/* END iOS Safari specific workaround */\n.demo-drawer .mdl-menu .mdl-menu__item {\n  display: flex;\n  align-items: center;\n}\n.demo-drawer-header {\n  box-sizing: border-box;\n  display: flex;\n  flex-direction: column;\n  justify-content: flex-end;\n  padding: 16px;\n  height: 151px;\n}\n.demo-avatar-dropdown {\n  display: flex;\n  position: relative;\n  flex-direction: row;\n  align-items: center;\n  width: 100%;\n}\n\n.demo-navigation {\n  flex-grow: 1;\n}\n.demo-layout .demo-navigation .mdl-navigation__link {\n  display: flex !important;\n  flex-direction: row;\n  align-items: center;\n  color: rgba(255, 255, 255, 0.56);\n  font-weight: 500;\n}\n.demo-layout .demo-navigation .mdl-navigation__link:hover {\n  background-color: #00BCD4;\n  color: #37474F;\n}\n.demo-navigation .mdl-navigation__link .material-icons {\n  font-size: 24px;\n  color: rgba(255, 255, 255, 0.56);\n  margin-right: 32px;\n}\n\n.demo-content {\n  max-width: 1080px;\n}\n\n.demo-charts {\n  align-items: center;\n}\n.demo-chart:nth-child(1) {\n  color: #ACEC00;\n}\n.demo-chart:nth-child(2) {\n  color: #00BBD6;\n}\n.demo-chart:nth-child(3) {\n  color: #BA65C9;\n}\n.demo-chart:nth-child(4) {\n  color: #EF3C79;\n}\n.demo-graphs {\n  padding: 16px 32px;\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n/* TODO: Find a proper solution to have the graphs\n * not float around outside their container in IE10/11.\n * Using a browserhacks.com solution for now.\n */\n_:-ms-input-placeholder, :root .demo-graphs {\n  min-height: 664px;\n}\n_:-ms-input-placeholder, :root .demo-graph {\n  max-height: 300px;\n}\n/* TODO end */\n.demo-graph:nth-child(1) {\n  color: #00b9d8;\n}\n.demo-graph:nth-child(2) {\n  color: #d9006e;\n}\n\n.demo-cards {\n  align-items: flex-start;\n  align-content: flex-start;\n}\n.demo-cards .demo-separator {\n  height: 32px;\n}\n.demo-cards .mdl-card__title.mdl-card__title {\n  color: white;\n  font-size: 24px;\n  font-weight: 400;\n}\n.demo-cards ul {\n  padding: 0;\n}\n.demo-cards h3 {\n  font-size: 1em;\n}\n.demo-updates .mdl-card__title {\n  min-height: 200px;\n  background-image: url('images/dog.png');\n  background-position: 90% 100%;\n  background-repeat: no-repeat;\n}\n.demo-cards .mdl-card__actions a {\n  color: #00BCD4;\n  text-decoration: none;\n}\n\n.demo-options h3 {\n  margin: 0;\n}\n.demo-options .mdl-checkbox__box-outline {\n  border-color: rgba(255, 255, 255, 0.89);\n}\n.demo-options ul {\n  margin: 0;\n  list-style-type: none;\n}\n.demo-options li {\n  margin: 4px 0;\n}\n.demo-options .material-icons {\n  color: rgba(255, 255, 255, 0.89);\n}\n.demo-options .mdl-card__actions {\n  height: 64px;\n  display: flex;\n  box-sizing: border-box;\n  align-items: center;\n}\n"
  },
  {
    "path": "templates/portfolio/Tutorial/step01-initial-HTML-setup.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A portfolio template that uses Material Design Lite.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>MDL-Static Website</title>\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"https://code.getmdl.io/1.0.6/material.grey-pink.min.css\" />\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n</head>\n\n<body>\n\n    <script src=\"https://code.getmdl.io/1.0.6/material.min.js\"></script>\n</body>\n\n</html>\n"
  },
  {
    "path": "templates/portfolio/Tutorial/step02-MDL-layout-component.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A portfolio template that uses Material Design Lite.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>MDL-Static Website</title>\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"https://code.getmdl.io/1.0.6/material.grey-pink.min.css\" />\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n</head>\n\n<body>\n    <div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\">\n        <header class=\"mdl-layout__header\">\n            <div class=\"mdl-layout__header-row\">\n                <span class=\"mdl-layout__title\">Simple portfolio website</span>\n                <div class=\"mdl-layout-spacer\"></div>\n                <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                    <a class=\"mdl-navigation__link\" href=\"#\">Portfolio</a>\n                    <a class=\"mdl-navigation__link\" href=\"#\">Blog</a>\n                    <a class=\"mdl-navigation__link\" href=\"#\">About</a>\n                    <a class=\"mdl-navigation__link\" href=\"#\">Contact</a>\n                </nav>\n            </div>\n        </header>\n        <div class=\"mdl-layout__drawer\">\n            <span class=\"mdl-layout__title\">Simple portfolio website</span>\n            <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                <a class=\"mdl-navigation__link\" href=\"#\">Portfolio</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">Blog</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">About</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">Contact</a>\n            </nav>\n        </div>\n        <main class=\"mdl-layout__content\">\n            <p>Hello world!</p>\n        </main>\n    </div>\n    <script src=\"https://code.getmdl.io/1.0.6/material.min.js\"></script>\n</body>\n\n</html>\n"
  },
  {
    "path": "templates/portfolio/Tutorial/step03-the-grid-component.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A portfolio template that uses Material Design Lite.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>MDL-Static Website</title>\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"https://code.getmdl.io/1.0.6/material.grey-pink.min.css\" />\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n</head>\n\n<body>\n    <div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\">\n        <header class=\"mdl-layout__header\">\n            <div class=\"mdl-layout__header-row\">\n                <span class=\"mdl-layout__title\">Simple portfolio website</span>\n                <div class=\"mdl-layout-spacer\"></div>\n                <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                    <a class=\"mdl-navigation__link\" href=\"#\">Portfolio</a>\n                    <a class=\"mdl-navigation__link\" href=\"#\">Blog</a>\n                    <a class=\"mdl-navigation__link\" href=\"#\">About</a>\n                    <a class=\"mdl-navigation__link\" href=\"#\">Contact</a>\n                </nav>\n            </div>\n        </header>\n        <div class=\"mdl-layout__drawer\">\n            <span class=\"mdl-layout__title\">Simple portfolio website</span>\n            <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                <a class=\"mdl-navigation__link\" href=\"#\">Portfolio</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">Blog</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">About</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">Contact</a>\n            </nav>\n        </div>\n        <main class=\"mdl-layout__content\">\n            <div class=\"mdl-grid\">\n                <div class=\"mdl-cell mdl-cell--12-col\">\n                    <p>Hello world!</p>\n                </div>\n                <div class=\"mdl-cell mdl-cell--12-col-tablet\">Cell 1</div>\n                <div class=\"mdl-cell mdl-cell--4-col-tablet\">Cell 2</div>\n                <div class=\"mdl-cell mdl-cell--4-col-tablet\">Cell 3</div>\n            </div>\n            <footer class=\"mdl-mini-footer\">\n                <div class=\"mdl-mini-footer__left-section\">\n                    <div class=\"mdl-logo\">Portfolio website</div>\n                </div>\n                <div class=\"mdl-mini-footer__right-section\">\n                    <ul class=\"mdl-mini-footer__link-list\">\n                        <li><a href=\"#\">Help</a></li>\n                        <li><a href=\"#\">Privacy & Terms</a></li>\n                    </ul>\n                </div>\n            </footer>\n        </main>\n    </div>\n    <script src=\"https://code.getmdl.io/1.0.6/material.min.js\"></script>\n</body>\n\n</html>\n"
  },
  {
    "path": "templates/portfolio/Tutorial/step04-customising-the-layout.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A portfolio template that uses Material Design Lite.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>MDL-Static Website</title>\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"https://code.getmdl.io/1.0.6/material.grey-pink.min.css\" />\n    <link rel=\"stylesheet\" href=\"styles.css\" />\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n</head>\n\n<body>\n    <div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\">\n        <header class=\"mdl-layout__header mdl-layout__header--waterfall portfolio-header\">\n            <div class=\"mdl-layout__header-row\">\n                <span class=\"mdl-layout__title\">Simple portfolio website</span>\n            </div>\n            <div class=\"mdl-layout__header-row portfolio-navigation-row\">\n                <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                    <a class=\"mdl-navigation__link\" href=\"#\">Portfolio</a>\n                    <a class=\"mdl-navigation__link\" href=\"#\">Blog</a>\n                    <a class=\"mdl-navigation__link\" href=\"#\">About</a>\n                    <a class=\"mdl-navigation__link\" href=\"#\">Contact</a>\n                </nav>\n            </div>\n        </header>\n        <div class=\"mdl-layout__drawer mdl-layout--small-screen-only\">\n            <span class=\"mdl-layout__title\">Simple portfolio website</span>\n            <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                <a class=\"mdl-navigation__link\" href=\"#\">Portfolio</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">Blog</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">About</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">Contact</a>\n            </nav>\n        </div>\n        <main class=\"mdl-layout__content\">\n            <div class=\"mdl-grid portfolio-max-width\">\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-work01.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Blog template</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" >Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-work07.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Sunt nulla</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" >Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-work02.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Android.com website</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" >Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-work03.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Dashboard template</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" >Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-work04.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Text-heavy website</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" >Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-work08.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Ex officia laborum</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" >Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-work05.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Stand-alone article</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" >Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-work06.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">MDL website</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" >Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-work09.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Consequat ut quis</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" >Read more</a>\n                    </div>\n                </div>\n            </div>\n            <footer class=\"mdl-mini-footer\">\n                <div class=\"mdl-mini-footer__left-section\">\n                    <div class=\"mdl-logo\">Portfolio website</div>\n                </div>\n                <div class=\"mdl-mini-footer__right-section\">\n                    <ul class=\"mdl-mini-footer__link-list\">\n                        <li><a href=\"#\">Help</a></li>\n                        <li><a href=\"#\">Privacy & Terms</a></li>\n                    </ul>\n                </div>\n            </footer>\n        </main>\n    </div>\n    <script src=\"https://code.getmdl.io/1.0.6/material.min.js\"></script>\n</body>\n\n</html>\n"
  },
  {
    "path": "templates/portfolio/Tutorial/step05-individual-pages/about.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A portfolio template that uses Material Design Lite.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>MDL-Static Website</title>\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"https://code.getmdl.io/1.0.6/material.grey-pink.min.css\" />\n    <link rel=\"stylesheet\" href=\"../styles.css\" />\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n</head>\n\n<body>\n    <div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\">\n        <header class=\"mdl-layout__header mdl-layout__header--waterfall portfolio-header\">\n            <div class=\"mdl-layout__header-row\">\n                <span class=\"mdl-layout__title\">Simple Portfolio Layout</span>\n            </div>\n            <div class=\"mdl-layout__header-row portfolio-navigation-row\">\n                <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                    <a class=\"mdl-navigation__link\" href=\"index.html\">Portfolio</a>\n                    <a class=\"mdl-navigation__link\" href=\"blog.html\">Blog</a>\n                    <a class=\"mdl-navigation__link is-active\" href=\"about.html\">About</a>\n                    <a class=\"mdl-navigation__link\" href=\"contact.html\">Contact</a>\n                </nav>\n            </div>\n        </header>\n        <div class=\"mdl-layout__drawer mdl-layout--small-screen-only\">\n            <span class=\"mdl-layout__title\">Simple Portfolio Layout</span>\n            <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                <a class=\"mdl-navigation__link\" href=\"#\">Portfolio</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">Blog</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">About</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">Contact</a>\n            </nav>\n        </div>\n        <main class=\"mdl-layout__content\">\n            <div class=\"mdl-grid portfolio-max-width\">\n\n                <div class=\"mdl-cell mdl-cell--12-col mdl-card mdl-shadow--4dp\">\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">About</h2>\n                    </div>\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" ../../images/about-header.jpg\" border=\"0\" alt=\"\">\n                    </div>\n\n                    <div class=\"mdl-grid portfolio-copy\">\n                        <h3 class=\"mdl-cell mdl-cell--12-col mdl-typography--headline\">Introduction</h3>\n                        <div class=\"mdl-cell mdl-cell--8-col mdl-card__supporting-text no-padding \">\n                            <p>\n                                Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit. Velit anim eiusmod labore sit amet. Voluptate voluptate irure occaecat deserunt incididunt esse in. Sunt velit aliquip sunt elit ex nulla reprehenderit qui ut eiusmod ipsum do. Duis veniam reprehenderit laborum occaecat id proident nulla veniam. Duis enim deserunt voluptate aute veniam sint pariatur exercitation. Irure mollit est sit labore est deserunt pariatur duis aute laboris cupidatat. Consectetur consequat esse est sit veniam adipisicing ipsum enim irure.\n                            </p>\n                        </div>\n\n\n\n\n                        <h3 class=\"mdl-cell mdl-cell--12-col mdl-typography--headline\">Irure mollit est sit labore</h3>\n\n                        <div class=\"mdl-cell mdl-cell--8-col mdl-card__supporting-text no-padding \">\n                            <p>\n                                Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit. Velit anim eiusmod labore sit amet. Voluptate voluptate irure occaecat deserunt incididunt esse in. Sunt velit aliquip sunt elit ex nulla reprehenderit qui ut eiusmod ipsum do. Duis veniam reprehenderit laborum occaecat id proident nulla veniam. Duis enim deserunt voluptate aute veniam sint pariatur exercitation. Irure mollit est sit labore est deserunt pariatur duis aute laboris cupidatat. Consectetur consequat esse est sit veniam adipisicing ipsum enim irure.\n                            </p>\n                        </div>\n                    </div>\n                </div>\n\n\n            </div>\n            <footer class=\"mdl-mini-footer\">\n                <div class=\"mdl-mini-footer__left-section\">\n                    <div class=\"mdl-logo\">Simple portfolio website</div>\n                </div>\n                <div class=\"mdl-mini-footer__right-section\">\n                    <ul class=\"mdl-mini-footer__link-list\">\n                        <li><a href=\"#\">Help</a></li>\n                        <li><a href=\"#\">Privacy & Terms</a></li>\n                    </ul>\n                </div>\n            </footer>\n        </main>\n    </div>\n    <script src=\"https://code.getmdl.io/1.0.6/material.min.js\"></script>\n</body>\n\n</html>\n"
  },
  {
    "path": "templates/portfolio/Tutorial/step05-individual-pages/blog.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A portfolio template that uses Material Design Lite.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>MDL-Static Website</title>\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"https://code.getmdl.io/1.0.6/material.grey-pink.min.css\" />\n    <link rel=\"stylesheet\" href=\"../styles.css\" />\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n</head>\n\n<body>\n    <div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\">\n        <header class=\"mdl-layout__header mdl-layout__header--waterfall portfolio-header\">\n            <div class=\"mdl-layout__header-row\">\n                <span class=\"mdl-layout__title\">Simple Portfolio Layout</span>\n            </div>\n            <div class=\"mdl-layout__header-row portfolio-navigation-row\">\n                <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                    <a class=\"mdl-navigation__link\" href=\"index.html\">Portfolio</a>\n                    <a class=\"mdl-navigation__link is-active\" href=\"blog.html\">Blog</a>\n                    <a class=\"mdl-navigation__link\" href=\"about.html\">About</a>\n                    <a class=\"mdl-navigation__link\" href=\"contact.html\">Contact</a>\n                </nav>\n            </div>\n        </header>\n        <div class=\"mdl-layout__drawer mdl-layout--small-screen-only\">\n            <span class=\"mdl-layout__title\">Simple Portfolio Layout</span>\n            <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                <a class=\"mdl-navigation__link\" href=\"#\">Portfolio</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">Blog</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">About</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">Contact</a>\n            </nav>\n        </div>\n        <main class=\"mdl-layout__content\">\n            <div class=\"mdl-grid portfolio-max-width\">\n                <div class=\"mdl-grid mdl-cell mdl-cell--12-col mdl-cell--4-col-tablet mdl-card mdl-shadow--4dp\">\n                    <div class=\"mdl-card__media mdl-cell mdl-cell--12-col-tablet\">\n                        <img class=\"article-image\" src=\" ../../images/example-blog01.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-cell mdl-cell--8-col\">\n                        <h2 class=\"mdl-card__title-text\">Velit anim eiusmod labore sit amet</h2>\n                        <div class=\"mdl-card__supporting-text padding-top\">\n                            <span>Posted 2 days ago</span>\n                            <div id=\"tt1\" class=\" icon material-icons portfolio-share-btn\">share</div>\n                            <div class=\"mdl-tooltip\" for=\"tt1\">\n                                Share via social media\n                            </div>\n                        </div>\n                        <div class=\"mdl-card__supporting-text no-left-padding\">\n                            <p>Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit. Velit anim eiusmod labore sit amet. Voluptate voluptate irure occaecat deserunt incididunt esse in. Qui ullamco consectetur aute fugiat officia ullamco proident Lorem ad irure. Sint eu ut consectetur ut esse veniam laboris adipisicing aliquip minim anim labore commodo.</p>\n                            <span>Category: <a href=\"#\">Latest</a></span>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-cell--6-col mdl-cell--4-col-tablet mdl-card mdl-shadow--4dp\">\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Voluptate voluptate</h2>\n                    </div>\n                    <div class=\"mdl-card__media\">\n                        <a href=\"#\"> <img class=\"article-image\" src=\" ../../images/example-blog02.jpg\" border=\"0\" alt=\"\"></a>\n                    </div>\n                    <div class=\"mdl-card__supporting-text no-bottom-padding\">\n                        <span>Posted 2 days ago</span>\n                        <div id=\"tt2\" class=\" icon material-icons portfolio-share-btn\">share</div>\n                        <div class=\"mdl-tooltip\" for=\"tt2\">\n                            Share via social media\n                        </div>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        <p>Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit. Velit anim eiusmod labore sit amet. Voluptate voluptate irure occaecat deserunt incididunt esse in.</p>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-cell--3-col mdl-cell--4-col-tablet mdl-card mdl-card mdl-shadow--4dp portfolio-blog-card-full-bg  \">\n                    <div class=\"mdl-card__title mdl-card--expand \"></div>\n                    <div class=\"mdl-card__actions\">\n                        <span class=\"demo-card-image__filename\">Pamukkale.jpg</span>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-cell--3-col mdl-cell--4-col-tablet mdl-card mdl-shadow--4dp \">\n                    <div class=\"mdl-card__media\">\n                        <a href=\"#\"> <img class=\"article-image\" src=\" ../../images/example-blog04.jpg\" border=\"0\" alt=\"\"></a>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        <small>Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit.</small>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        <p>Velit anim eiusmod labore sit amet. Voluptate voluptate irure occaecat deserunt incididunt esse in. Qui ullamco consectetur aute fugiat officia ullamco proident Lorem ad irure. Sint eu ut consectetur ut esse veniam.</p>\n                    </div>\n                </div>\n                <div class=\"demo-card-event mdl-cell mdl-cell--3-col mdl-cell--4-col-tablet mdl-card mdl-card mdl-shadow--4dp portfolio-blog-card-event-bg mdl-color-text--white\">\n                    <div class=\"mdl-card__title mdl-card--expand\">\n                        <h4 class=\"mdl-color-text--white\">\n                          Conference event:<br>\n                          May 24, 2016<br>\n                          7-11pm\n                        </h4>\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-color-text--white\">\n                          Add to Calendar\n                        </a>\n                        <div class=\"mdl-layout-spacer\"></div>\n                        <i class=\"material-icons \">event</i>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-cell--5-col mdl-cell--4-col-tablet mdl-card  mdl-card mdl-shadow--4dp\">\n                    <div class=\"mdl-card__title mdl-card--expand portfolio-blog-card-strip-bg mdl-color-text--white\">\n                        <h2 class=\"mdl-card__title-text\">adipiscing</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenan convallis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\">\n                          View Updates\n                        </a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-cell--4-col mdl-cell--4-col-tablet mdl-card  mdl-card mdl-shadow--4dp portfolio-blog-card-compact\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" ../../images/example-blog07.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title \">\n                        <h2 class=\"mdl-card__title-text\">Loren</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenan convallis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\">\n                          View Updates\n                        </a>\n                    </div>\n                </div>\n            </div>\n            <footer class=\"mdl-mini-footer\">\n                <div class=\"mdl-mini-footer__left-section\">\n                    <div class=\"mdl-logo\">Simple portfolio website</div>\n                </div>\n                <div class=\"mdl-mini-footer__right-section\">\n                    <ul class=\"mdl-mini-footer__link-list\">\n                        <li><a href=\"#\">Help</a></li>\n                        <li><a href=\"#\">Privacy & Terms</a></li>\n                    </ul>\n                </div>\n            </footer>\n        </main>\n    </div>\n    <script src=\"https://code.getmdl.io/1.0.6/material.min.js\"></script>\n</body>\n\n</html>\n"
  },
  {
    "path": "templates/portfolio/Tutorial/step05-individual-pages/contact.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A portfolio template that uses Material Design Lite.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>MDL-Static Website</title>\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"https://code.getmdl.io/1.0.6/material.grey-pink.min.css\" />\n    <link rel=\"stylesheet\" href=\"../styles.css\" />\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n</head>\n\n<body>\n    <div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\">\n        <header class=\"mdl-layout__header mdl-layout__header--waterfall portfolio-header\">\n            <div class=\"mdl-layout__header-row\">\n                <span class=\"mdl-layout__title\">Simple Portfolio Layout</span>\n            </div>\n            <div class=\"mdl-layout__header-row portfolio-navigation-row\">\n                <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                    <a class=\"mdl-navigation__link\" href=\"index.html\">Portfolio</a>\n                    <a class=\"mdl-navigation__link\" href=\"blog.html\">Blog</a>\n                    <a class=\"mdl-navigation__link\" href=\"about.html\">About</a>\n                    <a class=\"mdl-navigation__link is-active\" href=\"contact.html\">Contact</a>\n                </nav>\n            </div>\n        </header>\n        <div class=\"mdl-layout__drawer mdl-layout--small-screen-only\">\n            <span class=\"mdl-layout__title\">Simple Portfolio Layout</span>\n            <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                <a class=\"mdl-navigation__link\" href=\"#\">Portfolio</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">Blog</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">About</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">Contact</a>\n            </nav>\n        </div>\n        <main class=\"mdl-layout__content\">\n            <div class=\"mdl-grid portfolio-max-width portfolio-contact\">\n                <div class=\"mdl-cell mdl-cell--12-col mdl-card mdl-shadow--4dp\">\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Contact</h2>\n                    </div>\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" ../../images/contact-image.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        <p>\n                            Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                        </p>\n                        <p>\n                            Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit. Velit anim eiusmod labore sit amet.\n                        </p>\n                        <form action=\"#\" class=\"\">\n                            <div class=\"mdl-textfield mdl-js-textfield mdl-textfield--floating-label\">\n                                <input class=\"mdl-textfield__input\" pattern=\"[A-Z,a-z, ]*\" type=\"text\" id=\"Name\">\n                                <label class=\"mdl-textfield__label\" for=\"Name\">Name...</label>\n                                <span class=\"mdl-textfield__error\">Letters and spaces only</span>\n                            </div>\n                            <div class=\"mdl-textfield mdl-js-textfield mdl-textfield--floating-label\">\n                                <input class=\"mdl-textfield__input\" type=\"text\" id=\"Email\">\n                                <label class=\"mdl-textfield__label\" for=\"Email\">Email...</label>\n                            </div>\n                            <div class=\"mdl-textfield mdl-js-textfield mdl-textfield--floating-label\">\n                                <textarea class=\"mdl-textfield__input\" type=\"text\" rows=\"5\" id=\"note\"></textarea>\n                                <label class=\"mdl-textfield__label\" for=\"note\">Enter note</label>\n                            </div>\n                            <p>\n                                <button class=\"mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent\" type=\"submit\">\n                                    Submit\n                                </button>\n                            </p>\n                        </form>\n                    </div>\n                </div>\n            </div>\n            <footer class=\"mdl-mini-footer\">\n                <div class=\"mdl-mini-footer__left-section\">\n                    <div class=\"mdl-logo\">Simple portfolio website</div>\n                </div>\n                <div class=\"mdl-mini-footer__right-section\">\n                    <ul class=\"mdl-mini-footer__link-list\">\n                        <li><a href=\"#\">Help</a></li>\n                        <li><a href=\"#\">Privacy & Terms</a></li>\n                    </ul>\n                </div>\n            </footer>\n        </main>\n    </div>\n    <script src=\"https://code.getmdl.io/1.0.6/material.min.js\"></script>\n</body>\n\n</html>\n"
  },
  {
    "path": "templates/portfolio/Tutorial/step05-individual-pages/index.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A portfolio template that uses Material Design Lite.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>MDL-Static Website</title>\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"https://code.getmdl.io/1.0.6/material.grey-pink.min.css\" />\n    <link rel=\"stylesheet\" href=\"../styles.css\" />\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n</head>\n\n<body>\n    <div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\">\n        <header class=\"mdl-layout__header mdl-layout__header--waterfall portfolio-header\">\n            <div class=\"mdl-layout__header-row\">\n                <span class=\"mdl-layout__title\">Simple Portfolio Layout</span>\n            </div>\n            <div class=\"mdl-layout__header-row portfolio-navigation-row\">\n                <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                    <a class=\"mdl-navigation__link is-active\" href=\"index.html\">Portfolio</a>\n                    <a class=\"mdl-navigation__link\" href=\"blog.html\">Blog</a>\n                    <a class=\"mdl-navigation__link\" href=\"about.html\">About</a>\n                    <a class=\"mdl-navigation__link\" href=\"contact.html\">Contact</a>\n                </nav>\n            </div>\n        </header>\n                <div class=\"mdl-layout__drawer mdl-layout--small-screen-only\">\n            <span class=\"mdl-layout__title\">Simple Portfolio Layout</span>\n            <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                <a class=\"mdl-navigation__link\" href=\"#\">Portfolio</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">Blog</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">About</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">Contact</a>\n            </nav>\n        </div>\n        <main class=\"mdl-layout__content\">\n            <div class=\"mdl-grid portfolio-max-width\">\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" ../images/example-work01.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Blog template</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" href=\"portfolio-example01.html\">Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" ../images/example-work07.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Sunt nulla</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" href=\"portfolio-example01.html\">Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" ../images/example-work02.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Android.com website</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" href=\"portfolio-example01.html\">Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" ../images/example-work03.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Dashboard template</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" href=\"portfolio-example01.html\">Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" ../images/example-work04.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Text-heavy website</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" href=\"portfolio-example01.html\">Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" ../images/example-work08.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Ex officia laborum</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" href=\"portfolio-example01.html\">Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" ../images/example-work05.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Stand-alone article</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" href=\"portfolio-example01.html\">Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" ../images/example-work06.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">MDL website</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" href=\"portfolio-example01.html\">Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" ../images/example-work09.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Consequat ut quis</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" href=\"portfolio-example01.html\">Read more</a>\n                    </div>\n                </div>\n            </div>\n            <footer class=\"mdl-mini-footer\">\n                <div class=\"mdl-mini-footer__left-section\">\n                    <div class=\"mdl-logo\">Simple portfolio website</div>\n                </div>\n                <div class=\"mdl-mini-footer__right-section\">\n                    <ul class=\"mdl-mini-footer__link-list\">\n                        <li><a href=\"#\">Help</a></li>\n                        <li><a href=\"#\">Privacy & Terms</a></li>\n                    </ul>\n                </div>\n            </footer>\n        </main>\n    </div>\n    <script src=\"https://code.getmdl.io/1.0.6/material.min.js\"></script>\n</body>\n\n</html>\n"
  },
  {
    "path": "templates/portfolio/Tutorial/step05-individual-pages/portfolio-example01.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A portfolio template that uses Material Design Lite.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>MDL-Static Website</title>\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"https://code.getmdl.io/1.0.6/material.grey-pink.min.css\" />\n    <link rel=\"stylesheet\" href=\"../styles.css\" />\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n</head>\n\n<body>\n    <div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\">\n        <header class=\"mdl-layout__header mdl-layout__header--waterfall portfolio-header\">\n            <div class=\"mdl-layout__header-row\">\n                <span class=\"mdl-layout__title\">Simple Portfolio Layout</span>\n            </div>\n            <div class=\"mdl-layout__header-row portfolio-navigation-row\">\n                <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                    <a class=\"mdl-navigation__link\" href=\"index.html\">Portfolio</a>\n                    <a class=\"mdl-navigation__link\" href=\"blog.html\">Blog</a>\n                    <a class=\"mdl-navigation__link\" href=\"about.html\">About</a>\n                    <a class=\"mdl-navigation__link\" href=\"contact.html\">Contact</a>\n                </nav>\n            </div>\n        </header>\n        <div class=\"mdl-layout__drawer mdl-layout--small-screen-only\">\n            <span class=\"mdl-layout__title\">Simple Portfolio Layout</span>\n            <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                <a class=\"mdl-navigation__link\" href=\"#\">Portfolio</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">Blog</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">About</a>\n                <a class=\"mdl-navigation__link\" href=\"#\">Contact</a>\n            </nav>\n        </div>\n        <main class=\"mdl-layout__content\">\n            <div class=\"mdl-grid portfolio-max-width\">\n                <div class=\"mdl-cell mdl-cell--12-col mdl-card mdl-shadow--4dp\">\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Blog template</h2>\n                    </div>\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" ../../images/portfolio-example-01.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        <strong>Includes</strong>\n                        <span>Design, UX and Frontend Development</span>\n                    </div>\n                    <div class=\"mdl-grid portfolio-copy\">\n                        <h3 class=\"mdl-cell mdl-cell--12-col mdl-typography--headline\">Introduction</h3>\n                        <div class=\"mdl-cell mdl-cell--6-col mdl-card__supporting-text no-padding\">\n                            <p>\n                                Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit. Velit anim eiusmod labore sit amet. Voluptate voluptate irure occaecat deserunt incididunt esse in. Sunt velit aliquip sunt elit ex nulla reprehenderit qui ut eiusmod ipsum do. Duis veniam reprehenderit laborum occaecat id proident nulla veniam. Duis enim deserunt voluptate aute veniam sint pariatur exercitation. Irure mollit est sit labore est deserunt pariatur duis aute laboris cupidatat. Consectetur consequat esse est sit veniam adipisicing ipsum enim irure.\n                            </p>\n                        </div>\n                        <div class=\"mdl-cell mdl-cell--6-col\">\n                            <img class=\"article-image\" src=\" ../../images/portfolio-example-02.jpg\" border=\"0\" alt=\"\">\n                        </div>\n                        <h3 class=\"mdl-cell mdl-cell--12-col mdl-typography--headline\">Initial Idea's</h3>\n                        <div class=\"mdl-cell mdl-cell--6-col\">\n                            <img class=\"article-image\" src=\" ../../images/portfolio-example-03.jpg\" border=\"0\" alt=\"\">\n                        </div>\n                        <div class=\"mdl-cell mdl-cell--6-col mdl-card__supporting-text no-padding \">\n                            <p>\n                                Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit. Velit anim eiusmod labore sit amet. Voluptate voluptate irure occaecat deserunt incididunt esse in. Sunt velit aliquip sunt elit ex nulla reprehenderit qui ut eiusmod ipsum do. Duis veniam reprehenderit laborum occaecat id proident nulla veniam. Duis enim deserunt voluptate aute veniam sint pariatur exercitation. Irure mollit est sit labore est deserunt pariatur duis aute laboris cupidatat. Consectetur consequat esse est sit veniam adipisicing ipsum enim irure.\n                            </p>\n                        </div>\n                        <h3 class=\"mdl-cell mdl-cell--12-col mdl-typography--headline\">Final Concept</h3>\n                        <div class=\"mdl-cell mdl-cell--6-col\">\n                            <img class=\"article-image\" src=\" ../../images/portfolio-example-05.jpg\" border=\"0\" alt=\"\">\n                        </div>\n                        <div class=\"mdl-cell mdl-cell--6-col\">\n                            <img class=\"article-image\" src=\" ../../images/portfolio-example-06.jpg\" border=\"0\" alt=\"\">\n                        </div>\n                        <div class=\"mdl-cell mdl-cell--8-col mdl-card__supporting-text no-padding \">\n                            <p>\n                                Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit. Velit anim eiusmod labore sit amet. Voluptate voluptate irure occaecat deserunt incididunt esse in. Sunt velit aliquip sunt elit ex nulla reprehenderit qui ut eiusmod ipsum do. Duis veniam reprehenderit laborum occaecat id proident nulla veniam. Duis enim deserunt voluptate aute veniam sint pariatur exercitation. Irure mollit est sit labore est deserunt pariatur duis aute laboris cupidatat. Consectetur consequat esse est sit veniam adipisicing ipsum enim irure.\n                            </p>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <footer class=\"mdl-mini-footer\">\n                <div class=\"mdl-mini-footer__left-section\">\n                    <div class=\"mdl-logo\">Simple portfolio website</div>\n                </div>\n                <div class=\"mdl-mini-footer__right-section\">\n                    <ul class=\"mdl-mini-footer__link-list\">\n                        <li><a href=\"#\">Help</a></li>\n                        <li><a href=\"#\">Privacy & Terms</a></li>\n                    </ul>\n                </div>\n            </footer>\n        </main>\n    </div>\n    <script src=\"https://code.getmdl.io/1.0.6/material.min.js\"></script>\n</body>\n\n</html>\n"
  },
  {
    "path": "templates/portfolio/Tutorial/styles.css",
    "content": "\n.portfolio-header {\n  position: relative;\n  background-color: #D8D8D8;\n  background-image: url(images/header-bg.jpg);\n}\n\n.portfolio-header .mdl-layout__header-row {\n  padding: 0;\n  justify-content: center;\n}\n\n.portfolio-navigation-row {\n  background-color: rgba(0, 0, 0, 0.08);\n  text-transform: uppercase;\n  height: 45px;\n}\n\n.portfolio-navigation-row  .mdl-navigation {\n  text-align: center;\n  max-width: 900px;\n  width: 100%;\n}\n\n.portfolio-navigation-row .mdl-navigation__link {\n  flex: 1;\n  line-height: 42px;\n}\n\n.portfolio-header .mdl-layout__drawer-button {\n    background-color: rgba(197, 197, 197, 0.44);\n}\n\n.portfolio-navigation-row .is-active {\n  position: relative;\n  font-weight: bold;\n}\n\n.portfolio-navigation-row .is-active:after {\n  content: \"\";\n  width: 70%;\n  height: 2px;\n  display: block;\n  position: absolute;\n  bottom: 0;\n  left: 0;\n  background-color: rgb(255,64,129);\n  left: 15%;\n}\n\n\nimg.article-image {\n  width: 100%;\n  height: auto;\n}\n\n.portfolio-max-width {\n  max-width: 900px;\n  margin: auto;\n}\n\n.portfolio-copy {\n  max-width: 700px;\n}\n\n.portfolio-card .mdl-card__title {\n  padding-bottom: 0;\n}\n\n.no-padding {\n  padding: 0;\n}\n\n.no-left-padding{\n  padding-left: 0;\n}\n\n.no-bottom-padding {\n  padding-bottom: 0;\n}\n\n.padding-top {\n  padding: 10px 0 0;\n}\n\n.portfolio-share-btn {\n  position: relative;\n  float: right;\n  top: -4px;\n}\n\n.demo-card-event > .mdl-card__actions {\n    align-items: center;\n    box-sizing: border-box;\n    display: flex;\n}\n\n.portfolio-contact .mdl-textfield {\n  width: 100%;\n}\n\n.portfolio-contact form {\n  max-width: 700px;\n  margin: auto;\n}"
  },
  {
    "path": "templates/portfolio/about.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A portfolio template that uses Material Design Lite.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>MDL-Static Website</title>\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"$$hosted_libs_prefix$$/$$version$$/material.grey-pink.min.css\" />\n    <link rel=\"stylesheet\" href=\"styles.css\" />\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n</head>\n\n<body>\n    <div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\">\n        <header class=\"mdl-layout__header mdl-layout__header--waterfall portfolio-header\">\n            <div class=\"mdl-layout__header-row portfolio-logo-row\">\n                <span class=\"mdl-layout__title\">\n                    <div class=\"portfolio-logo\"></div>\n                    <span class=\"mdl-layout__title\">Simple portfolio website</span>\n                </span>\n            </div>\n            <div class=\"mdl-layout__header-row portfolio-navigation-row mdl-layout--large-screen-only\">\n                <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                    <a class=\"mdl-navigation__link\" href=\"index.html\">Portfolio</a>\n                    <a class=\"mdl-navigation__link\" href=\"blog.html\">Blog</a>\n                    <a class=\"mdl-navigation__link is-active\" href=\"about.html\">About</a>\n                    <a class=\"mdl-navigation__link\" href=\"contact.html\">Contact</a>\n                </nav>\n            </div>\n        </header>\n        <div class=\"mdl-layout__drawer mdl-layout--small-screen-only\">\n            <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                <a class=\"mdl-navigation__link is-active\" href=\"index.html\">Portfolio</a>\n                <a class=\"mdl-navigation__link\" href=\"blog.html\">Blog</a>\n                <a class=\"mdl-navigation__link\" href=\"about.html\">About</a>\n                <a class=\"mdl-navigation__link\" href=\"contact.html\">Contact</a>\n            </nav>\n        </div>\n        <main class=\"mdl-layout__content\">\n            <div class=\"mdl-grid portfolio-max-width\">\n\n                <div class=\"mdl-cell mdl-cell--12-col mdl-card mdl-shadow--4dp\">\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">About</h2>\n                    </div>\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/about-header.jpg\" border=\"0\" alt=\"\">\n                    </div>\n\n                    <div class=\"mdl-grid portfolio-copy\">\n                        <h3 class=\"mdl-cell mdl-cell--12-col mdl-typography--headline\">Introduction</h3>\n                        <div class=\"mdl-cell mdl-cell--8-col mdl-card__supporting-text no-padding \">\n                            <p>\n                                Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit. Velit anim eiusmod labore sit amet. Voluptate voluptate irure occaecat deserunt incididunt esse in. Sunt velit aliquip sunt elit ex nulla reprehenderit qui ut eiusmod ipsum do. Duis veniam reprehenderit laborum occaecat id proident nulla veniam. Duis enim deserunt voluptate aute veniam sint pariatur exercitation. Irure mollit est sit labore est deserunt pariatur duis aute laboris cupidatat. Consectetur consequat esse est sit veniam adipisicing ipsum enim irure.\n                            </p>\n                        </div>\n\n\n\n\n                        <h3 class=\"mdl-cell mdl-cell--12-col mdl-typography--headline\">Irure mollit est sit labore</h3>\n\n                        <div class=\"mdl-cell mdl-cell--8-col mdl-card__supporting-text no-padding \">\n                            <p>\n                                Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit. Velit anim eiusmod labore sit amet. Voluptate voluptate irure occaecat deserunt incididunt esse in. Sunt velit aliquip sunt elit ex nulla reprehenderit qui ut eiusmod ipsum do. Duis veniam reprehenderit laborum occaecat id proident nulla veniam. Duis enim deserunt voluptate aute veniam sint pariatur exercitation. Irure mollit est sit labore est deserunt pariatur duis aute laboris cupidatat. Consectetur consequat esse est sit veniam adipisicing ipsum enim irure.\n                            </p>\n                        </div>\n                    </div>\n                </div>\n\n\n            </div>\n            <footer class=\"mdl-mini-footer\">\n                <div class=\"mdl-mini-footer__left-section\">\n                    <div class=\"mdl-logo\">Simple portfolio website</div>\n                </div>\n                <div class=\"mdl-mini-footer__right-section\">\n                    <ul class=\"mdl-mini-footer__link-list\">\n                        <li><a href=\"#\">Help</a></li>\n                        <li><a href=\"#\">Privacy & Terms</a></li>\n                    </ul>\n                </div>\n            </footer>\n        </main>\n    </div>\n    <script src=\"$$hosted_libs_prefix$$/$$version$$/material.min.js\"></script>\n</body>\n\n</html>\n"
  },
  {
    "path": "templates/portfolio/blog.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A portfolio template that uses Material Design Lite.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>MDL-Static Website</title>\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"$$hosted_libs_prefix$$/$$version$$/material.grey-pink.min.css\" />\n    <link rel=\"stylesheet\" href=\"styles.css\" />\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n</head>\n\n<body>\n    <div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\">\n        <header class=\"mdl-layout__header mdl-layout__header--waterfall portfolio-header\">\n            <div class=\"mdl-layout__header-row portfolio-logo-row\">\n                <span class=\"mdl-layout__title\">\n                    <div class=\"portfolio-logo\"></div>\n                    <span class=\"mdl-layout__title\">Simple portfolio website</span>\n                </span>\n            </div>\n            <div class=\"mdl-layout__header-row portfolio-navigation-row mdl-layout--large-screen-only\">\n                <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                    <a class=\"mdl-navigation__link\" href=\"index.html\">Portfolio</a>\n                    <a class=\"mdl-navigation__link  is-active\" href=\"blog.html\">Blog</a>\n                    <a class=\"mdl-navigation__link\" href=\"about.html\">About</a>\n                    <a class=\"mdl-navigation__link\" href=\"contact.html\">Contact</a>\n                </nav>\n            </div>\n        </header>\n        <div class=\"mdl-layout__drawer mdl-layout--small-screen-only\">\n            <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                <a class=\"mdl-navigation__link is-active\" href=\"index.html\">Portfolio</a>\n                <a class=\"mdl-navigation__link\" href=\"blog.html\">Blog</a>\n                <a class=\"mdl-navigation__link\" href=\"about.html\">About</a>\n                <a class=\"mdl-navigation__link\" href=\"contact.html\">Contact</a>\n            </nav>\n        </div>\n        <main class=\"mdl-layout__content\">\n            <div class=\"mdl-grid portfolio-max-width\">\n                <div class=\"mdl-grid mdl-cell mdl-cell--12-col mdl-cell--4-col-tablet mdl-card mdl-shadow--4dp\">\n                    <div class=\"mdl-card__media mdl-cell mdl-cell--12-col-tablet\">\n                        <img class=\"article-image\" src=\" images/example-blog01.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-cell mdl-cell--8-col\">\n                        <h2 class=\"mdl-card__title-text\">Velit anim eiusmod labore sit amet</h2>\n                        <div class=\"mdl-card__supporting-text padding-top\">\n                            <span>Posted 2 days ago</span>\n                            <div id=\"tt1\" class=\" icon material-icons portfolio-share-btn\">share</div>\n                            <div class=\"mdl-tooltip\" for=\"tt1\">\n                                Share via social media\n                            </div>\n                        </div>\n                        <div class=\"mdl-card__supporting-text no-left-padding\">\n                            <p>Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit. Velit anim eiusmod labore sit amet. Voluptate voluptate irure occaecat deserunt incididunt esse in. Qui ullamco consectetur aute fugiat officia ullamco proident Lorem ad irure. Sint eu ut consectetur ut esse veniam laboris adipisicing aliquip minim anim labore commodo.</p>\n                            <span>Category: <a href=\"#\">Latest</a></span>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-cell--6-col mdl-cell--4-col-tablet mdl-card mdl-shadow--4dp\">\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Voluptate voluptate</h2>\n                    </div>\n                    <div class=\"mdl-card__media\">\n                        <a href=\"#\"> <img class=\"article-image\" src=\" images/example-blog02.jpg\" border=\"0\" alt=\"\"></a>\n                    </div>\n                    <div class=\"mdl-card__supporting-text no-bottom-padding\">\n                        <span>Posted 2 days ago</span>\n                        <div id=\"tt2\" class=\" icon material-icons portfolio-share-btn\">share</div>\n                        <div class=\"mdl-tooltip\" for=\"tt2\">\n                            Share via social media\n                        </div>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        <p>Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit. Velit anim eiusmod labore sit amet. Voluptate voluptate irure occaecat deserunt incididunt esse in.</p>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-cell--3-col mdl-cell--4-col-tablet mdl-card mdl-card mdl-shadow--4dp portfolio-blog-card-full-bg  \">\n                    <div class=\"mdl-card__title mdl-card--expand \"></div>\n                    <div class=\"mdl-card__actions\">\n                        <span class=\"demo-card-image__filename\">Pamukkale.jpg</span>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-cell--3-col mdl-cell--4-col-tablet mdl-card mdl-shadow--4dp \">\n                    <div class=\"mdl-card__media\">\n                        <a href=\"#\"> <img class=\"article-image\" src=\" images/example-blog04.jpg\" border=\"0\" alt=\"\"></a>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        <small>Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit.</small>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        <p>Velit anim eiusmod labore sit amet. Voluptate voluptate irure occaecat deserunt incididunt esse in. Qui ullamco consectetur aute fugiat officia ullamco proident Lorem ad irure. Sint eu ut consectetur ut esse veniam.</p>\n                    </div>\n                </div>\n                <div class=\"demo-card-event mdl-cell mdl-cell--3-col mdl-cell--4-col-tablet mdl-card mdl-card mdl-shadow--4dp portfolio-blog-card-event-bg mdl-color-text--white\">\n                    <div class=\"mdl-card__title mdl-card--expand\">\n                        <h4 class=\"mdl-color-text--white\">\n                          Conference event:<br>\n                          May 24, 2016<br>\n                          7-11pm\n                        </h4>\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-color-text--white\">\n                          Add to Calendar\n                        </a>\n                        <div class=\"mdl-layout-spacer\"></div>\n                        <i class=\"material-icons \">event</i>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-cell--5-col mdl-cell--4-col-tablet mdl-card  mdl-card mdl-shadow--4dp\">\n                    <div class=\"mdl-card__title mdl-card--expand portfolio-blog-card-strip-bg mdl-color-text--white\">\n                        <h2 class=\"mdl-card__title-text\">adipiscing</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenan convallis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\">\n                          View Updates\n                        </a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-cell--4-col mdl-cell--4-col-tablet mdl-card  mdl-card mdl-shadow--4dp portfolio-blog-card-compact\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-blog07.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title \">\n                        <h2 class=\"mdl-card__title-text\">Loren</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenan convallis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\">\n                          View Updates\n                        </a>\n                    </div>\n                </div>\n            </div>\n            <footer class=\"mdl-mini-footer\">\n                <div class=\"mdl-mini-footer__left-section\">\n                    <div class=\"mdl-logo\">Simple portfolio website</div>\n                </div>\n                <div class=\"mdl-mini-footer__right-section\">\n                    <ul class=\"mdl-mini-footer__link-list\">\n                        <li><a href=\"#\">Help</a></li>\n                        <li><a href=\"#\">Privacy & Terms</a></li>\n                    </ul>\n                </div>\n            </footer>\n        </main>\n    </div>\n    <script src=\"$$hosted_libs_prefix$$/$$version$$/material.min.js\"></script>\n</body>\n\n</html>\n"
  },
  {
    "path": "templates/portfolio/contact.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A portfolio template that uses Material Design Lite.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>MDL-Static Website</title>\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"$$hosted_libs_prefix$$/$$version$$/material.grey-pink.min.css\" />\n    <link rel=\"stylesheet\" href=\"styles.css\" />\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n</head>\n\n<body>\n    <div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\">\n        <header class=\"mdl-layout__header mdl-layout__header--waterfall portfolio-header\">\n            <div class=\"mdl-layout__header-row portfolio-logo-row\">\n                <span class=\"mdl-layout__title\">\n                    <div class=\"portfolio-logo\"></div>\n                <span class=\"mdl-layout__title\">Simple portfolio website</span>\n                </span>\n            </div>\n            <div class=\"mdl-layout__header-row portfolio-navigation-row mdl-layout--large-screen-only\">\n                <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                    <a class=\"mdl-navigation__link \" href=\"index.html\">Portfolio</a>\n                    <a class=\"mdl-navigation__link\" href=\"blog.html\">Blog</a>\n                    <a class=\"mdl-navigation__link\" href=\"about.html\">About</a>\n                    <a class=\"mdl-navigation__link is-active\" href=\"contact.html\">Contact</a>\n                </nav>\n            </div>\n        </header>\n        <div class=\"mdl-layout__drawer mdl-layout--small-screen-only\">\n            <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                <a class=\"mdl-navigation__link is-active\" href=\"index.html\">Portfolio</a>\n                <a class=\"mdl-navigation__link\" href=\"blog.html\">Blog</a>\n                <a class=\"mdl-navigation__link\" href=\"about.html\">About</a>\n                <a class=\"mdl-navigation__link\" href=\"contact.html\">Contact</a>\n            </nav>\n        </div>\n        <main class=\"mdl-layout__content\">\n            <div class=\"mdl-grid portfolio-max-width portfolio-contact\">\n                <div class=\"mdl-cell mdl-cell--12-col mdl-card mdl-shadow--4dp\">\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Contact</h2>\n                    </div>\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/contact-image.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        <p>\n                            Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                        </p>\n                        <p>\n                            Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit. Velit anim eiusmod labore sit amet.\n                        </p>\n                        <form action=\"#\" class=\"\">\n                            <div class=\"mdl-textfield mdl-js-textfield mdl-textfield--floating-label\">\n                                <input class=\"mdl-textfield__input\" pattern=\"[A-Z,a-z, ]*\" type=\"text\" id=\"Name\">\n                                <label class=\"mdl-textfield__label\" for=\"Name\">Name...</label>\n                                <span class=\"mdl-textfield__error\">Letters and spaces only</span>\n                            </div>\n                            <div class=\"mdl-textfield mdl-js-textfield mdl-textfield--floating-label\">\n                                <input class=\"mdl-textfield__input\" type=\"text\" id=\"Email\">\n                                <label class=\"mdl-textfield__label\" for=\"Email\">Email...</label>\n                            </div>\n                            <div class=\"mdl-textfield mdl-js-textfield mdl-textfield--floating-label\">\n                                <textarea class=\"mdl-textfield__input\" type=\"text\" rows=\"5\" id=\"note\"></textarea>\n                                <label class=\"mdl-textfield__label\" for=\"note\">Enter note</label>\n                            </div>\n                            <p>\n                                <button class=\"mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent\" type=\"submit\">\n                                    Submit\n                                </button>\n                            </p>\n                        </form>\n                    </div>\n                </div>\n            </div>\n            <footer class=\"mdl-mini-footer\">\n                <div class=\"mdl-mini-footer__left-section\">\n                    <div class=\"mdl-logo\">Simple portfolio website</div>\n                </div>\n                <div class=\"mdl-mini-footer__right-section\">\n                    <ul class=\"mdl-mini-footer__link-list\">\n                        <li><a href=\"#\">Help</a></li>\n                        <li><a href=\"#\">Privacy & Terms</a></li>\n                    </ul>\n                </div>\n            </footer>\n        </main>\n    </div>\n    <script src=\"$$hosted_libs_prefix$$/$$version$$/material.min.js\"></script>\n</body>\n\n</html>\n"
  },
  {
    "path": "templates/portfolio/index.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A portfolio template that uses Material Design Lite.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>MDL-Static Website</title>\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"$$hosted_libs_prefix$$/$$version$$/material.grey-pink.min.css\" />\n    <link rel=\"stylesheet\" href=\"styles.css\" />\n\n\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n</head>\n\n<body>\n    <div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\">\n        <header class=\"mdl-layout__header mdl-layout__header--waterfall portfolio-header\">\n            <div class=\"mdl-layout__header-row portfolio-logo-row\">\n                <span class=\"mdl-layout__title\">\n                    <div class=\"portfolio-logo\"></div>\n                    <span class=\"mdl-layout__title\">Simple portfolio website</span>\n                </span>\n            </div>\n            <div class=\"mdl-layout__header-row portfolio-navigation-row mdl-layout--large-screen-only\">\n                <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                    <a class=\"mdl-navigation__link is-active\" href=\"index.html\">Portfolio</a>\n                    <a class=\"mdl-navigation__link\" href=\"blog.html\">Blog</a>\n                    <a class=\"mdl-navigation__link\" href=\"about.html\">About</a>\n                    <a class=\"mdl-navigation__link\" href=\"contact.html\">Contact</a>\n                </nav>\n            </div>\n        </header>\n        <div class=\"mdl-layout__drawer mdl-layout--small-screen-only\">\n            <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                <a class=\"mdl-navigation__link is-active\" href=\"index.html\">Portfolio</a>\n                <a class=\"mdl-navigation__link\" href=\"blog.html\">Blog</a>\n                <a class=\"mdl-navigation__link\" href=\"about.html\">About</a>\n                <a class=\"mdl-navigation__link\" href=\"contact.html\">Contact</a>\n            </nav>\n        </div>\n        <main class=\"mdl-layout__content\">\n            <div class=\"mdl-grid portfolio-max-width\">\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-work01.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Blog template</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" href=\"portfolio-example01.html\">Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-work07.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Sunt nulla</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" href=\"portfolio-example01.html\">Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-work02.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Android.com website</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" href=\"portfolio-example01.html\">Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-work03.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Dashboard template</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" href=\"portfolio-example01.html\">Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-work04.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Text-heavy website</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" href=\"portfolio-example01.html\">Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-work08.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Ex officia laborum</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" href=\"portfolio-example01.html\">Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-work05.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Stand-alone article</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" href=\"portfolio-example01.html\">Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-work06.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">MDL website</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" href=\"portfolio-example01.html\">Read more</a>\n                    </div>\n                </div>\n                <div class=\"mdl-cell mdl-card mdl-shadow--4dp portfolio-card\">\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/example-work09.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Consequat ut quis</h2>\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        Enim labore aliqua consequat ut quis ad occaecat aliquip incididunt. Sunt nulla eu enim irure enim nostrud aliqua consectetur ad consectetur sunt ullamco officia. Ex officia laborum et consequat duis.\n                    </div>\n                    <div class=\"mdl-card__actions mdl-card--border\">\n                        <a class=\"mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent\" href=\"portfolio-example01.html\">Read more</a>\n                    </div>\n                </div>\n            </div>\n            <footer class=\"mdl-mini-footer\">\n                <div class=\"mdl-mini-footer__left-section\">\n                    <div class=\"mdl-logo\">Simple portfolio website</div>\n                </div>\n                <div class=\"mdl-mini-footer__right-section\">\n                    <ul class=\"mdl-mini-footer__link-list\">\n                        <li><a href=\"#\">Help</a></li>\n                        <li><a href=\"#\">Privacy & Terms</a></li>\n                    </ul>\n                </div>\n            </footer>\n        </main>\n    </div>\n    <script src=\"$$hosted_libs_prefix$$/$$version$$/material.min.js\"></script>\n</body>\n\n</html>\n"
  },
  {
    "path": "templates/portfolio/portfolio-example01.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A portfolio template that uses Material Design Lite.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>MDL-Static Website</title>\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"$$hosted_libs_prefix$$/$$version$$/material.grey-pink.min.css\" />\n    <link rel=\"stylesheet\" href=\"styles.css\" />\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n</head>\n\n<body>\n    <div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\">\n        <header class=\"mdl-layout__header mdl-layout__header--waterfall portfolio-header\">\n            <div class=\"mdl-layout__header-row portfolio-logo-row\">\n                <span class=\"mdl-layout__title\">\n                    <div class=\"portfolio-logo\"></div>\n                    <span class=\"mdl-layout__title\">Simple portfolio website</span>\n                </span>\n            </div>\n            <div class=\"mdl-layout__header-row portfolio-navigation-row mdl-layout--large-screen-only\">\n                <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                    <a class=\"mdl-navigation__link is-active\" href=\"index.html\">Portfolio</a>\n                    <a class=\"mdl-navigation__link\" href=\"blog.html\">Blog</a>\n                    <a class=\"mdl-navigation__link\" href=\"about.html\">About</a>\n                    <a class=\"mdl-navigation__link\" href=\"contact.html\">Contact</a>\n                </nav>\n            </div>\n        </header>\n        <div class=\"mdl-layout__drawer mdl-layout--small-screen-only\">\n            <nav class=\"mdl-navigation mdl-typography--body-1-force-preferred-font\">\n                <a class=\"mdl-navigation__link is-active\" href=\"index.html\">Portfolio</a>\n                <a class=\"mdl-navigation__link\" href=\"blog.html\">Blog</a>\n                <a class=\"mdl-navigation__link\" href=\"about.html\">About</a>\n                <a class=\"mdl-navigation__link\" href=\"contact.html\">Contact</a>\n            </nav>\n        </div>\n        <main class=\"mdl-layout__content\">\n            <div class=\"mdl-grid portfolio-max-width\">\n                <div class=\"mdl-cell mdl-cell--12-col mdl-card mdl-shadow--4dp\">\n                    <div class=\"mdl-card__title\">\n                        <h2 class=\"mdl-card__title-text\">Blog template</h2>\n                    </div>\n                    <div class=\"mdl-card__media\">\n                        <img class=\"article-image\" src=\" images/portfolio-example-01.jpg\" border=\"0\" alt=\"\">\n                    </div>\n                    <div class=\"mdl-card__supporting-text\">\n                        <strong>Includes</strong>\n                        <span>Design, UX and Frontend Development</span>\n                    </div>\n                    <div class=\"mdl-grid portfolio-copy\">\n                        <h3 class=\"mdl-cell mdl-cell--12-col mdl-typography--headline\">Introduction</h3>\n                        <div class=\"mdl-cell mdl-cell--6-col mdl-card__supporting-text no-padding\">\n                            <p>\n                                Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit. Velit anim eiusmod labore sit amet. Voluptate voluptate irure occaecat deserunt incididunt esse in. Sunt velit aliquip sunt elit ex nulla reprehenderit qui ut eiusmod ipsum do. Duis veniam reprehenderit laborum occaecat id proident nulla veniam. Duis enim deserunt voluptate aute veniam sint pariatur exercitation. Irure mollit est sit labore est deserunt pariatur duis aute laboris cupidatat. Consectetur consequat esse est sit veniam adipisicing ipsum enim irure.\n                            </p>\n                        </div>\n                        <div class=\"mdl-cell mdl-cell--6-col\">\n                            <img class=\"article-image\" src=\" images/portfolio-example-02.jpg\" border=\"0\" alt=\"\">\n                        </div>\n                        <h3 class=\"mdl-cell mdl-cell--12-col mdl-typography--headline\">Initial Ideas</h3>\n                        <div class=\"mdl-cell mdl-cell--6-col\">\n                            <img class=\"article-image\" src=\" images/portfolio-example-03.jpg\" border=\"0\" alt=\"\">\n                        </div>\n                        <div class=\"mdl-cell mdl-cell--6-col mdl-card__supporting-text no-padding \">\n                            <p>\n                                Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit. Velit anim eiusmod labore sit amet. Voluptate voluptate irure occaecat deserunt incididunt esse in. Sunt velit aliquip sunt elit ex nulla reprehenderit qui ut eiusmod ipsum do. Duis veniam reprehenderit laborum occaecat id proident nulla veniam. Duis enim deserunt voluptate aute veniam sint pariatur exercitation. Irure mollit est sit labore est deserunt pariatur duis aute laboris cupidatat. Consectetur consequat esse est sit veniam adipisicing ipsum enim irure.\n                            </p>\n                        </div>\n                        <h3 class=\"mdl-cell mdl-cell--12-col mdl-typography--headline\">Final Concept</h3>\n                        <div class=\"mdl-cell mdl-cell--6-col\">\n                            <img class=\"article-image\" src=\" images/portfolio-example-05.jpg\" border=\"0\" alt=\"\">\n                        </div>\n                        <div class=\"mdl-cell mdl-cell--6-col\">\n                            <img class=\"article-image\" src=\" images/portfolio-example-06.jpg\" border=\"0\" alt=\"\">\n                        </div>\n                        <div class=\"mdl-cell mdl-cell--8-col mdl-card__supporting-text no-padding \">\n                            <p>\n                                Excepteur reprehenderit sint exercitation ipsum consequat qui sit id velit elit. Velit anim eiusmod labore sit amet. Voluptate voluptate irure occaecat deserunt incididunt esse in. Sunt velit aliquip sunt elit ex nulla reprehenderit qui ut eiusmod ipsum do. Duis veniam reprehenderit laborum occaecat id proident nulla veniam. Duis enim deserunt voluptate aute veniam sint pariatur exercitation. Irure mollit est sit labore est deserunt pariatur duis aute laboris cupidatat. Consectetur consequat esse est sit veniam adipisicing ipsum enim irure.\n                            </p>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <footer class=\"mdl-mini-footer\">\n                <div class=\"mdl-mini-footer__left-section\">\n                    <div class=\"mdl-logo\">Simple portfolio website</div>\n                </div>\n                <div class=\"mdl-mini-footer__right-section\">\n                    <ul class=\"mdl-mini-footer__link-list\">\n                        <li><a href=\"#\">Help</a></li>\n                        <li><a href=\"#\">Privacy & Terms</a></li>\n                    </ul>\n                </div>\n            </footer>\n        </main>\n    </div>\n    <script src=\"$$hosted_libs_prefix$$/$$version$$/material.min.js\"></script>\n</body>\n\n</html>\n"
  },
  {
    "path": "templates/portfolio/styles.css",
    "content": ".portfolio-header {\n  position: relative;\n  background-image: url(images/header-bg.jpg);\n}\n\n.portfolio-header .mdl-layout__header-row {\n  padding: 0;\n  justify-content: center;\n}\n\n.mdl-layout__title {\n  font-size: 14px;\n  text-align: center;\n  font-weight: 300;\n}\n\n.is-compact .mdl-layout__title span {\n  display: none;\n}\n\n.portfolio-logo-row {\n  min-height: 200px;\n}\n\n.is-compact .portfolio-logo-row {\n  min-height: auto;\n}\n\n.portfolio-logo {\n  background: url(images/logo.png) 50% no-repeat;\n  background-size: cover;\n  height: 150px;\n  width: 150px;\n  margin: auto auto 10px;\n}\n\n.is-compact .portfolio-logo {\n  height: 50px;\n  width: 50px;\n  margin-top: 7px;\n}\n\n.portfolio-navigation-row {\n  background-color: rgba(0, 0, 0, 0.08);\n  text-transform: uppercase;\n  height: 45px;\n}\n\n.portfolio-navigation-row  .mdl-navigation {\n  text-align: center;\n  max-width: 900px;\n  width: 100%;\n}\n\n.portfolio-navigation-row .mdl-navigation__link {\n  flex: 1;\n  line-height: 42px;\n}\n\n.portfolio-header .mdl-layout__drawer-button {\n    background-color: rgba(197, 197, 197, 0.44);\n}\n\n.portfolio-navigation-row .is-active {\n  position: relative;\n  font-weight: bold;\n}\n\n.portfolio-navigation-row .is-active:after {\n  content: \"\";\n  width: 70%;\n  height: 2px;\n  display: block;\n  position: absolute;\n  bottom: 0;\n  left: 0;\n  background-color: rgb(255,64,129);\n  left: 15%;\n}\n\n.portfolio-card .mdl-card__title {\n  padding-bottom: 0;\n}\n\n.portfolio-blog-card-full-bg {\n  background: url(images/example-blog03.jpg) center / cover;\n}\n\n.portfolio-blog-card-event-bg {\n  background: url(images/example-blog05.jpg) center / cover;\n}\n\n.portfolio-blog-card-strip-bg {\n  background: url(images/example-blog06.jpg) center / cover;\n}\n\n.portfolio-blog-card-compact .mdl-card__title {\n  padding-bottom: 0;\n}\n\n.portfolio-blog-card-bg > .mdl-card__actions {\n  height: 52px;\n  padding: 16px;\n  background: rgba(0, 0, 0, 0.2);\n}\n\nimg.article-image {\n  width: 100%;\n  height: auto;\n}\n\n.portfolio-max-width {\n  max-width: 900px;\n  margin: auto;\n}\n\n.portfolio-copy {\n  max-width: 700px;\n}\n\n.no-padding {\n  padding: 0;\n}\n\n.no-left-padding{\n  padding-left: 0;\n}\n\n.no-bottom-padding {\n  padding-bottom: 0;\n}\n\n.padding-top {\n  padding: 10px 0 0;\n}\n\n.portfolio-share-btn {\n  position: relative;\n  float: right;\n  top: -4px;\n}\n\n.demo-card-event > .mdl-card__actions {\n    align-items: center;\n    box-sizing: border-box;\n    display: flex;\n}\n\n.portfolio-contact .mdl-textfield {\n  width: 100%;\n}\n\n.portfolio-contact form {\n  max-width: 550px;\n  margin: auto;\n}\n\nfooter {\n  background-image: url(images/footer-background.png);\n  background-size: cover;\n}\n\n"
  },
  {
    "path": "templates/text-only/index.html",
    "content": "<!doctype html>\n<!--\n  Material Design Lite\n  Copyright 2015 Google Inc. 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<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"A front-end template that helps you build fast, modern mobile web apps.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0\">\n    <title>Material Design Lite</title>\n\n    <!-- Add to homescreen for Chrome on Android -->\n    <meta name=\"mobile-web-app-capable\" content=\"yes\">\n    <link rel=\"icon\" sizes=\"192x192\" href=\"images/android-desktop.png\">\n\n    <!-- Add to homescreen for Safari on iOS -->\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n    <meta name=\"apple-mobile-web-app-title\" content=\"Material Design Lite\">\n    <link rel=\"apple-touch-icon-precomposed\" href=\"images/ios-desktop.png\">\n\n    <!-- Tile icon for Win8 (144x144 + tile color) -->\n    <meta name=\"msapplication-TileImage\" content=\"images/touch/ms-touch-icon-144x144-precomposed.png\">\n    <meta name=\"msapplication-TileColor\" content=\"#3372DF\">\n\n    <link rel=\"shortcut icon\" href=\"images/favicon.png\">\n\n    <!-- SEO: If your mobile URL is different from the desktop URL, add a canonical link to the desktop page https://developers.google.com/webmasters/smartphone-sites/feature-phones -->\n    <!--\n    <link rel=\"canonical\" href=\"http://www.example.com/\">\n    -->\n\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\">\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n    <link rel=\"stylesheet\" href=\"$$hosted_libs_prefix$$/$$version$$/material.deep_purple-pink.min.css\">\n    <link rel=\"stylesheet\" href=\"styles.css\">\n    <style>\n    #view-source {\n      position: fixed;\n      display: block;\n      right: 0;\n      bottom: 0;\n      margin-right: 40px;\n      margin-bottom: 40px;\n      z-index: 900;\n    }\n    </style>\n  </head>\n  <body class=\"mdl-demo mdl-color--grey-100 mdl-color-text--grey-700 mdl-base\">\n    <div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-header\">\n      <header class=\"mdl-layout__header mdl-layout__header--scroll mdl-color--primary\">\n        <div class=\"mdl-layout--large-screen-only mdl-layout__header-row\">\n        </div>\n        <div class=\"mdl-layout--large-screen-only mdl-layout__header-row\">\n          <h3>Name &amp; Title</h3>\n        </div>\n        <div class=\"mdl-layout--large-screen-only mdl-layout__header-row\">\n        </div>\n        <div class=\"mdl-layout__tab-bar mdl-js-ripple-effect mdl-color--primary-dark\">\n          <a href=\"#overview\" class=\"mdl-layout__tab is-active\">Overview</a>\n          <a href=\"#features\" class=\"mdl-layout__tab\">Features</a>\n          <a href=\"#features\" class=\"mdl-layout__tab\">Details</a>\n          <a href=\"#features\" class=\"mdl-layout__tab\">Technology</a>\n          <a href=\"#features\" class=\"mdl-layout__tab\">FAQ</a>\n          <button class=\"mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored mdl-shadow--4dp mdl-color--accent\" id=\"add\">\n            <i class=\"material-icons\" role=\"presentation\">add</i>\n            <span class=\"visuallyhidden\">Add</span>\n          </button>\n        </div>\n      </header>\n      <main class=\"mdl-layout__content\">\n        <div class=\"mdl-layout__tab-panel is-active\" id=\"overview\">\n          <section class=\"section--center mdl-grid mdl-grid--no-spacing mdl-shadow--2dp\">\n            <header class=\"section__play-btn mdl-cell mdl-cell--3-col-desktop mdl-cell--2-col-tablet mdl-cell--4-col-phone mdl-color--teal-100 mdl-color-text--white\">\n              <i class=\"material-icons\">play_circle_filled</i>\n            </header>\n            <div class=\"mdl-card mdl-cell mdl-cell--9-col-desktop mdl-cell--6-col-tablet mdl-cell--4-col-phone\">\n              <div class=\"mdl-card__supporting-text\">\n                <h4>Features</h4>\n                Dolore ex deserunt aute fugiat aute nulla ea sunt aliqua nisi cupidatat eu. Nostrud in laboris labore nisi amet do dolor eu fugiat consectetur elit cillum esse.\n              </div>\n              <div class=\"mdl-card__actions\">\n                <a href=\"#\" class=\"mdl-button\">Read our features</a>\n              </div>\n            </div>\n            <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\" id=\"btn1\">\n              <i class=\"material-icons\">more_vert</i>\n            </button>\n            <ul class=\"mdl-menu mdl-js-menu mdl-menu--bottom-right\" for=\"btn1\">\n              <li class=\"mdl-menu__item\">Lorem</li>\n              <li class=\"mdl-menu__item\" disabled>Ipsum</li>\n              <li class=\"mdl-menu__item\">Dolor</li>\n            </ul>\n          </section>\n          <section class=\"section--center mdl-grid mdl-grid--no-spacing mdl-shadow--2dp\">\n            <div class=\"mdl-card mdl-cell mdl-cell--12-col\">\n              <div class=\"mdl-card__supporting-text mdl-grid mdl-grid--no-spacing\">\n                <h4 class=\"mdl-cell mdl-cell--12-col\">Details</h4>\n                <div class=\"section__circle-container mdl-cell mdl-cell--2-col mdl-cell--1-col-phone\">\n                  <div class=\"section__circle-container__circle mdl-color--primary\"></div>\n                </div>\n                <div class=\"section__text mdl-cell mdl-cell--10-col-desktop mdl-cell--6-col-tablet mdl-cell--3-col-phone\">\n                  <h5>Lorem ipsum dolor sit amet</h5>\n                  Dolore ex deserunt aute fugiat aute nulla ea sunt aliqua nisi cupidatat eu. Duis nulla tempor do aute et eiusmod velit exercitation nostrud quis <a href=\"#\">proident minim</a>.\n                </div>\n                <div class=\"section__circle-container mdl-cell mdl-cell--2-col mdl-cell--1-col-phone\">\n                  <div class=\"section__circle-container__circle mdl-color--primary\"></div>\n                </div>\n                <div class=\"section__text mdl-cell mdl-cell--10-col-desktop mdl-cell--6-col-tablet mdl-cell--3-col-phone\">\n                  <h5>Lorem ipsum dolor sit amet</h5>\n                  Dolore ex deserunt aute fugiat aute nulla ea sunt aliqua nisi cupidatat eu. Duis nulla tempor do aute et eiusmod velit exercitation nostrud quis <a href=\"#\">proident minim</a>.\n                </div>\n                <div class=\"section__circle-container mdl-cell mdl-cell--2-col mdl-cell--1-col-phone\">\n                  <div class=\"section__circle-container__circle mdl-color--primary\"></div>\n                </div>\n                <div class=\"section__text mdl-cell mdl-cell--10-col-desktop mdl-cell--6-col-tablet mdl-cell--3-col-phone\">\n                  <h5>Lorem ipsum dolor sit amet</h5>\n                  Dolore ex deserunt aute fugiat aute nulla ea sunt aliqua nisi cupidatat eu. Duis nulla tempor do aute et eiusmod velit exercitation nostrud quis <a href=\"#\">proident minim</a>.\n                </div>\n              </div>\n              <div class=\"mdl-card__actions\">\n                <a href=\"#\" class=\"mdl-button\">Read our features</a>\n              </div>\n            </div>\n            <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\" id=\"btn2\">\n              <i class=\"material-icons\">more_vert</i>\n            </button>\n            <ul class=\"mdl-menu mdl-js-menu mdl-menu--bottom-right\" for=\"btn2\">\n              <li class=\"mdl-menu__item\">Lorem</li>\n              <li class=\"mdl-menu__item\" disabled>Ipsum</li>\n              <li class=\"mdl-menu__item\">Dolor</li>\n            </ul>\n          </section>\n          <section class=\"section--center mdl-grid mdl-grid--no-spacing mdl-shadow--2dp\">\n            <div class=\"mdl-card mdl-cell mdl-cell--12-col\">\n              <div class=\"mdl-card__supporting-text\">\n                <h4>Technology</h4>\n                Dolore ex deserunt aute fugiat aute nulla ea sunt aliqua nisi cupidatat eu. Nostrud in laboris labore nisi amet do dolor eu fugiat consectetur elit cillum esse. Pariatur occaecat nisi laboris tempor laboris eiusmod qui id Lorem esse commodo in. Exercitation aute dolore deserunt culpa consequat elit labore incididunt elit anim.\n              </div>\n              <div class=\"mdl-card__actions\">\n                <a href=\"#\" class=\"mdl-button\">Read our features</a>\n              </div>\n            </div>\n            <button class=\"mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon\" id=\"btn3\">\n              <i class=\"material-icons\">more_vert</i>\n            </button>\n            <ul class=\"mdl-menu mdl-js-menu mdl-menu--bottom-right\" for=\"btn3\">\n              <li class=\"mdl-menu__item\">Lorem</li>\n              <li class=\"mdl-menu__item\" disabled>Ipsum</li>\n              <li class=\"mdl-menu__item\">Dolor</li>\n            </ul>\n          </section>\n          <section class=\"section--footer mdl-color--white mdl-grid\">\n            <div class=\"section__circle-container mdl-cell mdl-cell--2-col mdl-cell--1-col-phone\">\n              <div class=\"section__circle-container__circle mdl-color--accent section__circle--big\"></div>\n            </div>\n            <div class=\"section__text mdl-cell mdl-cell--4-col-desktop mdl-cell--6-col-tablet mdl-cell--3-col-phone\">\n              <h5>Lorem ipsum dolor sit amet</h5>\n              Qui sint ut et qui nisi cupidatat. Reprehenderit nostrud proident officia exercitation anim et pariatur ex.\n            </div>\n            <div class=\"section__circle-container mdl-cell mdl-cell--2-col mdl-cell--1-col-phone\">\n              <div class=\"section__circle-container__circle mdl-color--accent section__circle--big\"></div>\n            </div>\n            <div class=\"section__text mdl-cell mdl-cell--4-col-desktop mdl-cell--6-col-tablet mdl-cell--3-col-phone\">\n              <h5>Lorem ipsum dolor sit amet</h5>\n              Qui sint ut et qui nisi cupidatat. Reprehenderit nostrud proident officia exercitation anim et pariatur ex.\n            </div>\n          </section>\n        </div>\n        <div class=\"mdl-layout__tab-panel\" id=\"features\">\n          <section class=\"section--center mdl-grid mdl-grid--no-spacing\">\n            <div class=\"mdl-cell mdl-cell--12-col\">\n              <h4>Features</h4>\n              Minim duis incididunt est cillum est ex occaecat consectetur. Qui sint ut et qui nisi cupidatat. Reprehenderit nostrud proident officia exercitation anim et pariatur ex.\n              <ul class=\"toc\">\n                <h4>Contents</h4>\n                <a href=\"#lorem1\">Lorem ipsum</a>\n                <a href=\"#lorem2\">Lorem ipsum</a>\n                <a href=\"#lorem3\">Lorem ipsum</a>\n                <a href=\"#lorem4\">Lorem ipsum</a>\n                <a href=\"#lorem5\">Lorem ipsum</a>\n              </ul>\n\n              <h5 id=\"lorem1\">Lorem ipsum dolor sit amet</h5>\n              Excepteur et pariatur officia veniam anim culpa cupidatat consequat ad velit culpa est non.\n              <ul>\n                <li>Nisi qui nisi duis commodo duis reprehenderit consequat velit aliquip.</li>\n                <li>Dolor consectetur incididunt in ipsum laborum non et irure pariatur excepteur anim occaecat officia sint.</li>\n                <li>Lorem labore proident officia excepteur do.</li>\n              </ul>\n\n              <p>\n                Sit qui est voluptate proident minim cillum in aliquip cupidatat labore pariatur id tempor id. Proident occaecat occaecat sint mollit tempor duis dolor cillum anim. Dolore sunt ea mollit fugiat in aliqua consequat nostrud aliqua ut irure in dolore. Proident aliqua culpa sint sint exercitation. Non proident occaecat reprehenderit veniam et proident dolor id culpa ea tempor do dolor. Nulla adipisicing qui fugiat id dolor. Nostrud magna voluptate irure veniam veniam labore ipsum deserunt adipisicing laboris amet eu irure. Sunt dolore nisi velit sit id. Nostrud voluptate labore proident cupidatat enim amet Lorem officia magna excepteur occaecat eu qui. Exercitation culpa deserunt non et tempor et non.\n              </p>\n              <p>\n                Do dolor eiusmod eu mollit dolore nostrud deserunt cillum irure esse sint irure fugiat exercitation. Magna sit voluptate id in tempor elit veniam enim cupidatat ea labore elit. Aliqua pariatur eu nulla labore magna dolore mollit occaecat sint commodo culpa. Eu non minim duis pariatur Lorem quis exercitation. Sunt qui ex incididunt sit anim incididunt sit elit ad officia id.\n              </p>\n              <p id=\"lorem2\">\n                Tempor voluptate ex consequat fugiat aliqua. Do sit et reprehenderit culpa deserunt culpa. Excepteur quis minim mollit irure nulla excepteur enim quis in laborum. Aliqua elit voluptate ad deserunt nulla reprehenderit adipisicing sint. Est in eiusmod exercitation esse commodo. Ea reprehenderit exercitation veniam adipisicing minim nostrud. Veniam dolore ex ea occaecat non enim minim id ut aliqua adipisicing ad. Occaecat excepteur aliqua tempor cupidatat aute dolore deserunt ipsum qui incididunt aliqua occaecat sit quis. Culpa sint aliqua aliqua reprehenderit veniam irure fugiat ea ad.\n              </p>\n              <p>\n                Eu minim fugiat laborum irure veniam Lorem aliqua enim. Aliqua veniam incididunt consequat irure consequat tempor do nisi deserunt. Elit dolore ad quis consectetur sint laborum anim magna do nostrud amet. Ea nulla sit consequat quis qui irure dolor. Sint deserunt excepteur consectetur magna irure. Dolor tempor exercitation dolore pariatur incididunt ut laboris fugiat ipsum sunt veniam aute sunt labore. Non dolore sit nostrud eu ad excepteur cillum eu ex Lorem duis.\n              </p>\n              <p>\n                Id occaecat velit non ipsum occaecat aliqua quis ut. Eiusmod est magna non esse est ex incididunt aute ullamco. Cillum excepteur sint ipsum qui quis velit incididunt amet. Qui deserunt anim enim laborum cillum reprehenderit duis mollit amet ad officia enim. Minim sint et quis aliqua aliqua do minim officia dolor deserunt ipsum laboris. Nulla nisi voluptate consectetur est voluptate et amet. Occaecat ut quis adipisicing ad enim. Magna est magna sit duis proident veniam reprehenderit fugiat reprehenderit enim velit ex. Ullamco laboris culpa irure aliquip ad Lorem consequat veniam ad ipsum eu. Ipsum culpa dolore sunt officia laborum quis.\n              </p>\n\n              <h5 id=\"lorem3\">Lorem ipsum dolor sit amet</h5>\n\n              <p id=\"lorem4\">\n                Eiusmod nulla aliquip ipsum reprehenderit nostrud non excepteur mollit amet esse est est dolor. Dolore quis pariatur sit consectetur veniam esse ullamco duis Lorem qui enim ut veniam. Officia deserunt minim duis laborum dolor in velit pariatur commodo ullamco eu. Aute adipisicing ad duis labore laboris do mollit dolor cillum sunt aliqua ullamco. Esse tempor quis cillum consequat reprehenderit. Adipisicing proident anim eu sint elit aliqua anim dolore cupidatat fugiat aliquip qui.\n              </p>\n              <p id=\"lorem5\">\n                Nisi eiusmod esse cupidatat excepteur exercitation ipsum reprehenderit nostrud deserunt aliqua ullamco. Anim est irure commodo eiusmod pariatur officia. Est dolor ipsum excepteur magna aliqua ad veniam irure qui occaecat eiusmod aute fugiat commodo. Quis mollit incididunt amet sit minim velit eu fugiat voluptate excepteur. Sit minim id pariatur ex cupidatat cupidatat nostrud nostrud ipsum.\n              </p>\n              <p>\n                Enim ea officia excepteur ad veniam id reprehenderit eiusmod esse mollit consequat. Esse non aute ullamco Lorem aliqua qui dolore irure eiusmod aute aliqua proident labore aliqua. Ipsum voluptate voluptate exercitation laborum deserunt nulla elit aliquip et minim ex veniam. Duis cupidatat aute sunt officia mollit dolor ad elit ad aute labore nostrud duis pariatur. In est sint voluptate consectetur velit ea non labore. Ut duis ea aliqua consequat nulla laboris fugiat aute id culpa proident. Minim eiusmod laboris enim Lorem nisi excepteur mollit voluptate enim labore reprehenderit officia mollit.\n              </p>\n              <p>\n                Cupidatat labore nisi ut sunt voluptate quis sunt qui ad Lorem esse nisi. Ex esse velit ullamco incididunt occaecat dolore veniam tempor minim adipisicing amet. Consequat in exercitation est elit anim consequat cillum sint labore cillum. Aliquip mollit laboris ad labore anim.\n              </p>\n            </div>\n          </section>\n        </div>\n        <footer class=\"mdl-mega-footer\">\n          <div class=\"mdl-mega-footer--middle-section\">\n            <div class=\"mdl-mega-footer--drop-down-section\">\n              <input class=\"mdl-mega-footer--heading-checkbox\" type=\"checkbox\" checked>\n              <h1 class=\"mdl-mega-footer--heading\">Features</h1>\n              <ul class=\"mdl-mega-footer--link-list\">\n                <li><a href=\"#\">About</a></li>\n                <li><a href=\"#\">Terms</a></li>\n                <li><a href=\"#\">Partners</a></li>\n                <li><a href=\"#\">Updates</a></li>\n              </ul>\n            </div>\n            <div class=\"mdl-mega-footer--drop-down-section\">\n              <input class=\"mdl-mega-footer--heading-checkbox\" type=\"checkbox\" checked>\n              <h1 class=\"mdl-mega-footer--heading\">Details</h1>\n              <ul class=\"mdl-mega-footer--link-list\">\n                <li><a href=\"#\">Spec</a></li>\n                <li><a href=\"#\">Tools</a></li>\n                <li><a href=\"#\">Resources</a></li>\n              </ul>\n            </div>\n            <div class=\"mdl-mega-footer--drop-down-section\">\n              <input class=\"mdl-mega-footer--heading-checkbox\" type=\"checkbox\" checked>\n              <h1 class=\"mdl-mega-footer--heading\">Technology</h1>\n              <ul class=\"mdl-mega-footer--link-list\">\n                <li><a href=\"#\">How it works</a></li>\n                <li><a href=\"#\">Patterns</a></li>\n                <li><a href=\"#\">Usage</a></li>\n                <li><a href=\"#\">Products</a></li>\n                <li><a href=\"#\">Contracts</a></li>\n              </ul>\n            </div>\n            <div class=\"mdl-mega-footer--drop-down-section\">\n              <input class=\"mdl-mega-footer--heading-checkbox\" type=\"checkbox\" checked>\n              <h1 class=\"mdl-mega-footer--heading\">FAQ</h1>\n              <ul class=\"mdl-mega-footer--link-list\">\n                <li><a href=\"#\">Questions</a></li>\n                <li><a href=\"#\">Answers</a></li>\n                <li><a href=\"#\">Contact us</a></li>\n              </ul>\n            </div>\n          </div>\n          <div class=\"mdl-mega-footer--bottom-section\">\n            <div class=\"mdl-logo\">\n              More Information\n            </div>\n            <ul class=\"mdl-mega-footer--link-list\">\n              <li><a href=\"https://developers.google.com/web/starter-kit/\">Web Starter Kit</a></li>\n              <li><a href=\"#\">Help</a></li>\n              <li><a href=\"#\">Privacy and Terms</a></li>\n            </ul>\n          </div>\n        </footer>\n      </main>\n    </div>\n    <a href=\"https://github.com/google/material-design-lite/blob/mdl-1.x/templates/text-only/\" target=\"_blank\" id=\"view-source\" class=\"mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-color--accent mdl-color-text--accent-contrast\">View Source</a>\n    <script src=\"$$hosted_libs_prefix$$/$$version$$/material.min.js\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "templates/text-only/styles.css",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\nhtml, body {\n  font-family: 'Roboto', 'Helvetica', sans-serif;\n  margin: 0;\n  padding: 0;\n}\n.mdl-demo .mdl-layout__header-row {\n  padding-left: 40px;\n}\n.mdl-demo .mdl-layout.is-small-screen .mdl-layout__header-row h3 {\n  font-size: inherit;\n}\n.mdl-demo .mdl-layout__tab-bar-button {\n  display: none;\n}\n.mdl-demo .mdl-layout.is-small-screen .mdl-layout__tab-bar .mdl-button {\n  display: none;\n}\n.mdl-demo .mdl-layout:not(.is-small-screen) .mdl-layout__tab-bar,\n.mdl-demo .mdl-layout:not(.is-small-screen) .mdl-layout__tab-bar-container {\n  overflow: visible;\n}\n.mdl-demo .mdl-layout__tab-bar-container {\n  height: 64px;\n}\n.mdl-demo .mdl-layout__tab-bar {\n  padding: 0;\n  padding-left: 16px;\n  box-sizing: border-box;\n  height: 100%;\n  width: 100%;\n}\n.mdl-demo .mdl-layout__tab-bar .mdl-layout__tab {\n  height: 64px;\n  line-height: 64px;\n}\n.mdl-demo .mdl-layout__tab-bar .mdl-layout__tab.is-active::after {\n  background-color: white;\n  height: 4px;\n}\n.mdl-demo main > .mdl-layout__tab-panel {\n  padding: 8px;\n  padding-top: 48px;\n}\n.mdl-demo .mdl-card {\n  height: auto;\n  display: flex;\n  flex-direction: column;\n}\n.mdl-demo .mdl-card > * {\n  height: auto;\n}\n.mdl-demo .mdl-card .mdl-card__supporting-text {\n  margin: 40px;\n  flex-grow: 1;\n  padding: 0;\n  color: inherit;\n  width: calc(100% - 80px);\n}\n.mdl-demo.mdl-demo .mdl-card__supporting-text h4 {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\n.mdl-demo .mdl-card__actions {\n  margin: 0;\n  padding: 4px 40px;\n  color: inherit;\n}\n.mdl-demo .mdl-card__actions a {\n  color: #00BCD4;\n  margin: 0;\n}\n.mdl-demo .mdl-card__actions a:hover,\n.mdl-demo .mdl-card__actions a:active {\n  color: inherit;\n  background-color: transparent;\n}\n.mdl-demo .mdl-card__supporting-text + .mdl-card__actions {\n  border-top: 1px solid rgba(0, 0, 0, 0.12);\n}\n.mdl-demo #add {\n  position: absolute;\n  right: 40px;\n  top: 36px;\n  z-index: 999;\n}\n\n.mdl-demo .mdl-layout__content section:not(:last-of-type) {\n  position: relative;\n  margin-bottom: 48px;\n}\n.mdl-demo section.section--center {\n  max-width: 860px;\n}\n.mdl-demo #features section.section--center {\n  max-width: 620px;\n}\n.mdl-demo section > header{\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n.mdl-demo section > .section__play-btn {\n  min-height: 200px;\n}\n.mdl-demo section > header > .material-icons {\n  font-size: 3rem;\n}\n.mdl-demo section > button {\n  position: absolute;\n  z-index: 99;\n  top: 8px;\n  right: 8px;\n}\n.mdl-demo section .section__circle {\n  display: flex;\n  align-items: center;\n  justify-content: flex-start;\n  flex-grow: 0;\n  flex-shrink: 1;\n}\n.mdl-demo section .section__text {\n  flex-grow: 1;\n  flex-shrink: 0;\n  padding-top: 8px;\n}\n.mdl-demo section .section__text h5 {\n  font-size: inherit;\n  margin: 0;\n  margin-bottom: 0.5em;\n}\n.mdl-demo section .section__text a {\n  text-decoration: none;\n}\n.mdl-demo section .section__circle-container > .section__circle-container__circle {\n  width: 64px;\n  height: 64px;\n  border-radius: 32px;\n  margin: 8px 0;\n}\n.mdl-demo section.section--footer .section__circle--big {\n  width: 100px;\n  height: 100px;\n  border-radius: 50px;\n  margin: 8px 32px;\n}\n.mdl-demo .is-small-screen section.section--footer .section__circle--big {\n  width: 50px;\n  height: 50px;\n  border-radius: 25px;\n  margin: 8px 16px;\n}\n.mdl-demo section.section--footer {\n  padding: 64px 0;\n  margin: 0 -8px -8px -8px;\n}\n.mdl-demo section.section--center .section__text:not(:last-child) {\n  border-bottom: 1px solid rgba(0,0,0,.13);\n}\n.mdl-demo .mdl-card .mdl-card__supporting-text > h3:first-child {\n  margin-bottom: 24px;\n}\n.mdl-demo .mdl-layout__tab-panel:not(#overview) {\n  background-color: white;\n}\n.mdl-demo #features section {\n  margin-bottom: 72px;\n}\n.mdl-demo #features h4, #features h5 {\n  margin-bottom: 16px;\n}\n.mdl-demo .toc {\n  border-left: 4px solid #C1EEF4;\n  margin: 24px;\n  padding: 0;\n  padding-left: 8px;\n  display: flex;\n  flex-direction: column;\n}\n.mdl-demo .toc h4 {\n  font-size: 0.9rem;\n  margin-top: 0;\n}\n.mdl-demo .toc a {\n  color: #4DD0E1;\n  text-decoration: none;\n  font-size: 16px;\n  line-height: 28px;\n  display: block;\n}\n.mdl-demo .mdl-menu__container {\n  z-index: 99;\n}\n"
  },
  {
    "path": "test/index.html",
    "content": "<!doctype html>\n<html>\n<head>\n  <meta charset=\"utf-8\">\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Mocha Test Runner</title>\n  <link rel=\"stylesheet\" href=\"../node_modules/mocha/mocha.css\">\n  <link rel=\"stylesheet\" href=\"../dist/material.css\">\n</head>\n<body>\n<div id=\"mocha\"></div>\n<script src=\"../node_modules/jquery/dist/jquery.js\"></script>\n<script src=\"../node_modules/mocha/mocha.js\"></script>\n<script src=\"../node_modules/chai/chai.js\"></script>\n<script src=\"../node_modules/chai-jquery/chai-jquery.js\"></script>\n<!-- <script src=\"../js/material.js\"></script> -->\n<!-- The following components rely on the requestAnimFrame shim (incomplete list): -->\n<!-- menu -->\n<script src=\"../src/third_party/rAF.js\"></script>\n<script>\n  // Only necessary for PhantomJS 1.x\n  Function.prototype.bind = Function.prototype.bind || function(to){\n    // Make an array of our arguments, starting from second argument\n    var partial = Array.prototype.splice.call(arguments, 1),\n    // We'll need the original function.\n    fn = this;\n    var bound = function (){\n      // Join the already applied arguments to the now called ones (after converting to an array again).\n      var args = partial.concat(Array.prototype.splice.call(arguments, 0));\n      // If not being called as a constructor\n      if (!(this instanceof bound)){\n        // return the result of the function called bound to target and partially applied.\n        return fn.apply(to, args);\n      }\n      // If being called as a constructor, apply the function bound to self.\n      fn.apply(this, args);\n    }\n    // Attach the prototype of the function to our newly created function.\n    bound.prototype = fn.prototype;\n    return bound;\n  };\n</script>\n<script src=\"../dist/material.js\"></script>\n<script>\n  // mocha.ui('bdd');\n  mocha.setup('bdd');\n  mocha.reporter('html');\n  // use chais-implementation of \"expect\"\n  expect = chai.expect;\n</script>\n<!-- Specifications -->\n<!--<script src=\"test.spec.js\"></script>-->\n<script src=\"unit/componentHandler.js\"></script>\n<script src=\"unit/button.js\"></script>\n<script src=\"unit/checkbox.js\"></script>\n<script src=\"unit/data-table.js\"></script>\n<script src=\"unit/icon-toggle.js\"></script>\n<script src=\"unit/layout.js\"></script>\n<script src=\"unit/progress.js\"></script>\n<script src=\"unit/radio.js\"></script>\n<script src=\"unit/ripple.js\"></script>\n<script src=\"unit/slider.js\"></script>\n<script src=\"unit/snackbar.js\"></script>\n<script src=\"unit/spinner.js\"></script>\n<script src=\"unit/switch.js\"></script>\n<script src=\"unit/tabs.js\"></script>\n<script src=\"unit/textfield.js\"></script>\n<script src=\"unit/tooltip.js\"></script>\n<script src=\"unit/menu.js\"></script>\n\n<script>\n  window.addEventListener('load', function () {\n    if (window.mochaPhantomJS) {\n      mochaPhantomJS.run();\n    } else {\n      mocha.run();\n    }\n  });\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "test/memory/blank.html",
    "content": "<DOCTYPE html>\n\n<html>\n  <head>\n    <script src=\"../../dist/material.js\"></script>\n  </head>\n  <body></body>\n</html>\n"
  },
  {
    "path": "test/memory/menu.js",
    "content": "var path = require('path');\nvar drool = require('drool');\nvar heapDiffPrinter = require('./utils.js').heapDiffPrinter;\nvar webdriver = drool.webdriver;\n\nmodule.exports = function(stamps, i, driver) {\n  drool.flow({\n    setup: function() {\n      driver.get('file://' + path.join(__dirname, '../../dist/components/menu/demo.html'));\n    },\n    action: function() {\n      driver.findElement(webdriver.By.css('#demo-menu-lower-left')).click();\n      driver.sleep(1000);\n      driver.findElement(webdriver.By.css('#demo-menu-lower-left')).click();\n    },\n    beforeAssert: function() {\n      driver.sleep(1000);\n    },\n    assert: function(after, initial) {\n      heapDiffPrinter(after, initial, i, 'menu');\n      stamps.push([after.counts.jsEventListeners, initial.counts.jsEventListeners]);\n    }\n  }, driver);\n};\n"
  },
  {
    "path": "test/memory/snackbar.js",
    "content": "var path = require('path');\nvar drool = require('drool');\nvar heapDiffPrinter = require('./utils.js').heapDiffPrinter;\n\nmodule.exports = function(stamps, i, driver) {\n  drool.flow({\n    setup: function() {\n      driver.get('file://' + path.join(__dirname, '../../dist/components/snackbar/demo.html'));\n    },\n    action: function() {\n      driver.executeScript('document.querySelector(\"#demo-snackbar-example\").MaterialSnackbar.showSnackbar({message: \"🐐\", timeout: 300})');\n      driver.sleep(400);\n    },\n    beforeAssert: function() {\n      driver.sleep(400);\n    },\n    assert: function(after, initial) {\n      heapDiffPrinter(after, initial, i, 'snackbar');\n      stamps.push([after.counts.jsEventListeners, initial.counts.jsEventListeners]);\n    }\n  }, driver);\n}\n"
  },
  {
    "path": "test/memory/test.js",
    "content": "'use strict';\n\nvar drool = require('drool');\nvar assert = require('assert');\nvar webdriver = drool.webdriver;\nvar controlFlow = webdriver.promise.controlFlow();\nvar measureSnackbar = require('./snackbar');\nvar measureMenu = require('./menu');\nvar measureUpgradeDowngrade = require('./upgrade-downgrade');\nvar driver = drool.start({chromeOptions: 'no-sandbox'});\nvar snackbarStamps = [];\nvar menuStamps = [];\n\n// commented out tests require special DOM to bootstrap\n['MaterialButton',\n 'MaterialSpinner',\n 'MaterialTooltip',\n// 'MaterialCheckbox',\n// 'MaterialIconToggle',\n 'MaterialDataTable',\n// 'MaterialIconToggle',\n// 'MaterialLayout',\n// 'MaterialMenu',\n 'MaterialProgress',\n// 'MaterialRadio',\n 'MaterialRipple',\n// 'MaterialSlider',\n// 'MaterialSnackbar',\n// 'MaterialSwitch',\n 'MaterialTabs',\n// 'MaterialTextfield',\n].forEach(function(v) {\n  measureUpgradeDowngrade([], 0, driver, v);\n});\n\nfor (var i = 0; i < 3; ++i) {\n  measureSnackbar(snackbarStamps, i, driver);\n}\n\nfor (var i = 0; i < 3; ++i) {\n  measureMenu(menuStamps, i, driver);\n}\n\ncontrolFlow.execute(function() {\n  snackbarStamps.some(function(stamp) {\n    assert.equal(true, stamp[0] <= stamp[1]);\n    return true;\n  });\n\n  menuStamps.some(function(stamp) {\n    assert.equal(true, stamp[0] <= stamp[1]);\n    return true;\n  });\n});\n\ndriver.quit();\n"
  },
  {
    "path": "test/memory/upgrade-downgrade.js",
    "content": "var path = require('path');\nvar drool = require('drool');\nvar heapDiffPrinter = require('./utils.js').heapDiffPrinter;\nvar webdriver = drool.webdriver;\n\nmodule.exports = function(stamps, i, driver, component) {\n  drool.flow({\n    setup: function() {\n      driver.get('file://' + path.join(__dirname, 'blank.html'));\n    },\n    action: function() {\n      driver.executeScript(\"(function() { var e = document.createElement('div');\" +\n         \"componentHandler.upgradeElement(e, '\"+ component + \"');\" +\n         \"componentHandler.downgradeElements(e);})()\");\n    },\n    assert: function(after, initial) {\n      heapDiffPrinter(after, initial, i, component);\n    }\n  }, driver);\n};\n"
  },
  {
    "path": "test/memory/utils.js",
    "content": "var humanize = require('humanize');\n\nmodule.exports = {\n  heapDiffPrinter: function(after, initial, i, title) {\n    console.log('**' + title + '** .. run: ' + (i + 1) + '\\n');\n    console.log('node delta | heap delta | event listener');\n    console.log('--- | --- | --- |');\n    console.log((after.counts.nodes - initial.counts.nodes) + '|' +\n     humanize.filesize(after.counts.jsHeapSizeUsed - initial.counts.jsHeapSizeUsed) + '|' +\n     (after.counts.jsEventListeners - initial.counts.jsEventListeners) + '\\n');\n  }\n};\n"
  },
  {
    "path": "test/unit/button.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\ndescribe('MaterialButton', function () {\n\n  it('should be globally available', function () {\n    expect(MaterialButton).to.be.a('function');\n  });\n\n  it('should ugprade successfully', function () {\n    var el = document.createElement('button');\n    componentHandler.upgradeElement(el, 'MaterialButton');\n    expect($(el)).to.have.data('upgraded', ',MaterialButton');\n  });\n\n  it('should be upgrade to a raised button with ripples successfully', function () {\n    var el = document.createElement('div');\n    el.innerHTML = '<button class=\"mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect\">Raised</button>';\n    var btn = el.firstChild;\n    componentHandler.upgradeElement(btn, 'MaterialButton');\n    expect($(btn.childNodes[1])).to.have.class('mdl-button__ripple-container');\n    expect($(btn.childNodes[1].firstChild)).to.have.class('mdl-ripple');\n  });\n\n  it('should be upgrade to a FAB with ripples successfully', function () {\n    var el = document.createElement('div');\n    el.innerHTML = '<button class=\"mdl-button mdl-js-button mdl-button--fab mdl-button--colored mdl-js-ripple-effect\">♥</button>';\n    var btn = el.firstChild;\n    componentHandler.upgradeElement(btn, 'MaterialButton');\n    expect($(btn.childNodes[1])).to.have.class('mdl-button__ripple-container');\n    expect($(btn.childNodes[1].firstChild)).to.have.class('mdl-ripple');\n  });\n\n});\n"
  },
  {
    "path": "test/unit/checkbox.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\ndescribe('MaterialCheckbox', function () {\n\n  function createCheckbox() {\n    var label = document.createElement('label'),\n    input = document.createElement('input'),\n    labelText = document.createElement('span');\n    label.for = 'testCheckbox';\n    label.className = 'mdl-checkbox mdl-js-checkbox';\n    input.type = 'checkbox';\n    input.id = 'testCheckbox';\n    input.className = 'mdl-checkbox__input';\n    label.appendChild(input);\n    labelText.className = 'mdl-checkbox__label';\n    labelText.text = 'Test Checkbox';\n    label.appendChild(labelText);\n    return label;\n  };\n\n  it('should be globally available', function () {\n    expect(MaterialCheckbox).to.be.a('function');\n  });\n\n  it('should upgrade successfully', function () {\n    var el = createCheckbox();\n    componentHandler.upgradeElement(el, 'MaterialCheckbox');\n    expect($(el)).to.have.data('upgraded', ',MaterialCheckbox');\n  });\n\n  it('should get disabled class after being checked', function() {\n    var checkbox = createCheckbox();\n    componentHandler.upgradeElement(checkbox);\n    checkbox.querySelector('input').disabled = true;\n    checkbox.MaterialCheckbox.checkDisabled();\n    expect((function() {\n      return checkbox.className;\n    }())).to.equal('mdl-checkbox mdl-js-checkbox is-upgraded is-disabled');\n  });\n\n  it('should get checked class after checking toggle state', function() {\n    var checkbox = createCheckbox();\n    componentHandler.upgradeElement(checkbox);\n    checkbox.querySelector('input').checked = true;\n    checkbox.MaterialCheckbox.checkToggleState();\n    expect((function() {\n      return checkbox.className;\n    }())).to.equal('mdl-checkbox mdl-js-checkbox is-upgraded is-checked');\n  });\n\n});\n"
  },
  {
    "path": "test/unit/componentHandler.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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* Create a basic container to test nested ugprading.\n* container\n*   - button\n*     - buttonTwo\n*   - buttonThree\n*/\nfunction createNestedElementsForComponentHandlerTest() {\n  var button = document.createElement('button');\n  button.className = 'mdl-js-button';\n  var buttonTwo = document.createElement('button');\n  buttonTwo.className = 'mdl-js-button';\n  var buttonThree = document.createElement('button');\n  buttonThree.className = 'mdl-js-button';\n  var container = document.createElement('div');\n  container.appendChild(button);\n  button.appendChild(buttonTwo);\n  container.appendChild(buttonThree);\n  return container;\n}\n\nfunction createCheckbox(){\n  var label = document.createElement('label');\n  label.className = 'mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect';\n  label.htmlFor = 'checkbox1';\n\n  var input = document.createElement('input');\n  input.setAttribute('type','checkbox');\n  input.className = 'mdl-checkbox__input';\n  input.id = 'checkbox1';\n  label.appendChild(input);\n\n  var span = document.createElement('span');\n  span.className = 'mdl-checkbox__label';\n  span.innerHTML = 'checkbox';\n  label.appendChild(span);\n\n  return label;\n}\n\ndescribe('componentHandler', function() {\n\n  it('should be globally available', function() {\n    expect(componentHandler).to.be.a('object');\n  });\n\n  it('should reveal public methods', function() {\n    expect(componentHandler.upgradeDom).to.be.a('function');\n    expect(componentHandler.upgradeElement).to.be.a('function');\n    expect(componentHandler.upgradeAllRegistered).to.be.a('function');\n    expect(componentHandler.registerUpgradedCallback).to.be.a('function');\n    expect(componentHandler.register).to.be.a('function');\n    expect(componentHandler.downgradeElements).to.be.a('function');\n  });\n\n  it('should throw an error if a duplicate classAsString is provided for registration', function() {\n    expect(function() {\n      componentHandler.register({\n        constructor: MaterialButton,\n        classAsString: 'MaterialButton',\n        cssClass: 'test-js-button'\n      });\n    }).to.throw('The provided className has already been registered');\n  });\n\n  it('should throw an error if a duplicate cssClass is provided for registration', function() {\n    expect(function() {\n      componentHandler.register({\n        constructor: MaterialButton,\n        classAsString: 'TestButton',\n        cssClass: 'mdl-js-button'\n      });\n    }).to.throw('The provided cssClass has already been registered');\n  });\n\n  it('should throw an error if the object provided has the component config property', function() {\n    var testComponent = function() {};\n    testComponent.prototype.mdlComponentConfigInternal_ = {};\n    expect(function() {\n      componentHandler.register({\n        constructor: testComponent,\n        classAsString: 'testComponent',\n        cssClass: 'test-js-component'\n      });\n    }).to.throw('MDL component classes must not have mdlComponentConfigInternal_ defined as a property.');\n  });\n\n  it('should upgrade a single component to an element by provided jsClass', function() {\n    var el = document.createElement('button');\n    componentHandler.upgradeElement(el, 'MaterialButton');\n    expect($(el)).to.have.data('upgraded', ',MaterialButton');\n  });\n\n  it('should upgrade a multi-component element by calling upgradeElement multiple times', function() {\n    var el = document.createElement('button');\n    componentHandler.upgradeElement(el, 'MaterialButton');\n    componentHandler.upgradeElement(el, 'MaterialRipple');\n    expect($(el)).to.have.data('upgraded', ',MaterialButton,MaterialRipple');\n  });\n\n  it('should upgrade a single component to an element by using its CSS classes', function() {\n    var el = document.createElement('button');\n    el.className = 'mdl-js-button mdl-js-ripple-effect';\n    componentHandler.upgradeElement(el);\n    expect($(el)).to.have.data('upgraded', ',MaterialButton,MaterialRipple');\n  });\n\n  it('should upgrade the entire DOM available', function() {\n    var button = document.createElement('button');\n    button.classList.add('mdl-js-button');\n    var buttonTwo = document.createElement('div');\n    buttonTwo.className = 'mdl-js-button mdl-js-ripple-effect';\n    document.body.appendChild(button);\n    document.body.appendChild(buttonTwo);\n    componentHandler.upgradeDom();\n    expect($(button)).to.have.data('upgraded', ',MaterialButton');\n    expect($(buttonTwo)).to.have.data('upgraded', ',MaterialButton,MaterialRipple');\n    document.body.removeChild(button);\n    document.body.removeChild(buttonTwo);\n  });\n\n  it('should upgrade a single component to an element', function() {\n    var el = document.createElement('button');\n    el.setAttribute('data-upgraded', ',MaterialButtonPostfix');\n    el.className = 'mdl-js-button';\n    componentHandler.upgradeElement(el);\n    expect($(el)).to.have.data('upgraded', ',MaterialButtonPostfix,MaterialButton');\n  });\n\n  it('should upgrade child elements created by parent upgrade', function () {\n    var checkbox = createCheckbox();\n\n    componentHandler.upgradeElements(checkbox);\n\n    var child = checkbox.lastChild;\n    expect($(child)).to.have.data('upgraded', ',MaterialRipple');\n  });\n\n  it('should upgrade all elements and their children within an HTMLCollection', function() {\n    var container = createNestedElementsForComponentHandlerTest();\n    var buttons = document.querySelectorAll('.mdl-js-button');\n    componentHandler.upgradeElements(container.children);\n    for (var i; i < buttons.length; i++) {\n      expect($(buttons[i])).to.have.data('upgraded', ',MaterialButton');\n    }\n  });\n\n  it('should upgrade all elements and their children within a NodeList', function() {\n    var container = createNestedElementsForComponentHandlerTest();\n    var buttons = document.querySelectorAll('.mdl-js-button');\n    componentHandler.upgradeElements(document.querySelectorAll('.mdl-js-button'));\n    for (var i; i < buttons.length; i++) {\n      expect($(buttons[i])).to.have.data('upgraded', ',MaterialButton');\n    }\n  });\n\n  it('should upgrade all elements and their children within an HTMLElement', function() {\n    var container = createNestedElementsForComponentHandlerTest();\n    var buttons = document.querySelectorAll('.mdl-js-button');\n    componentHandler.upgradeElements(container);\n    for (var i; i < buttons.length; i++) {\n      expect($(buttons[i])).to.have.data('upgraded', ',MaterialButton');\n    }\n  });\n\n  it('should downgrade multiple components at once', function() {\n    var button = document.createElement('button');\n    button.className = 'mdl-button mdl-js-button mdl-js-ripple-effect';\n    componentHandler.upgradeElement(button);\n    expect(button.dataset.upgraded).to.equal(',MaterialButton,MaterialRipple');\n    componentHandler.downgradeElements(button);\n    expect(button.dataset.upgraded).to.equal('');\n  });\n});\n"
  },
  {
    "path": "test/unit/data-table.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\nvar TABLE_TEMPLATE = '<table class=\"mdl-data-table mdl-js-data-table mdl-data-table--selectable\" id=\"data-table-test\">' +\n      '<thead>' +\n      '  <tr>' +\n      '    <th class=\"mdl-data-table__cell--non-numeric\">Material</th>' +\n      '    <th>Quantity</th>' +\n      '    <th>Unit price</th>' +\n      '  </tr>' +\n      '</thead>' +\n      '<tbody>' +\n      '  <tr>' +\n      '    <td class=\"mdl-data-table__cell--non-numeric\">Acrylic (Transparent)</td>' +\n      '    <td>25</td>' +\n      '    <td>$2.90</td>' +\n      '  </tr>' +\n      '  <tr class=\"is-selected second-row\">' +\n      '    <td class=\"mdl-data-table__cell--non-numeric\">Plywood (Birch)</td>' +\n      '    <td>50</td>' +\n      '    <td>$1.25</td>' +\n      '  </tr>' +\n      '</tbody>' +\n    '</table>';\n\ndescribe('MaterialDataTable', function () {\n\n  it('should be globally available', function () {\n    expect(MaterialDataTable).to.be.a('function');\n  });\n\n  it('should upgrade successfully', function () {\n    var el = document.createElement('div');\n    el.innerHTML = TABLE_TEMPLATE;\n\n    componentHandler.upgradeElement(el, 'MaterialDataTable');\n    expect($(el)).to.have.data('upgraded', ',MaterialDataTable');\n  });\n\n  it('should have is-checked class when the row has the is-selected class', function () {\n    var el = document.createElement('div');\n    el.innerHTML = TABLE_TEMPLATE;\n    document.body.appendChild(el);\n    table = document.querySelector('#data-table-test')\n    componentHandler.upgradeElement(table, 'MaterialDataTable');\n    expect(table.querySelector('.second-row label').classList.contains('is-checked')).to.be.true;\n  });\n\n});"
  },
  {
    "path": "test/unit/icon-toggle.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\ndescribe('MaterialIconToggle', function () {\n\n  function createToggle() {\n    var label = document.createElement('label');\n    var input = document.createElement('input');\n    var icon = document.createElement('i');\n    label.className = 'mdl-icon-toggle mdl-js-icon-toggle';\n    label.for = 'testIconToggle';\n    input.id = label.for;\n    input.type = 'checkbox';\n    input.className = 'mdl-icon-toggle__input';\n    label.appendChild(input);\n    icon.className = 'mdl-icon-toggle__label material-icons';\n    icon.text = 'format_bold';\n    label.appendChild(icon);\n    return label;\n  };\n\n  it('should be globally available', function () {\n    expect(MaterialIconToggle).to.be.a('function');\n  });\n\n  it('should upgrade successfully', function () {\n    var el = createToggle();\n    componentHandler.upgradeElement(el, 'MaterialIconToggle');\n    expect($(el)).to.have.data('upgraded', ',MaterialIconToggle');\n  });\n\n});\n"
  },
  {
    "path": "test/unit/layout.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\ndescribe('MaterialLayout', function () {\n\n  MockMediaQueryList = function(media) {\n    this.media = media;\n    this.listeners = [];\n  }\n\n  MockMediaQueryList.registry = {};\n\n  MockMediaQueryList.mockMatchMedia = function(query) {\n    if (! MockMediaQueryList.registry.hasOwnProperty(query)) {\n      MockMediaQueryList.registry[query] = new MockMediaQueryList(query);\n    }\n    return MockMediaQueryList.registry[query];\n  }\n\n  MockMediaQueryList.prototype.addListener = function(listener) {\n    this.listeners.push(listener);\n  }\n\n  MockMediaQueryList.prototype.triggerMatch = function(matches) {\n    this.matches = matches;\n    this.listeners.forEach(function(listener) {\n      // PhantomJS doesn't support MediaQueryListEvent() so mock the event.\n      var event = {media: this.media, matches: this.matches};\n      listener(event);\n    }.bind(this));\n  }\n\n  it('should be globally available', function () {\n    expect(MaterialLayout).to.be.a('function');\n  });\n\n  it('should upgrade successfully', function () {\n    var el = document.createElement('div');\n    el.innerHTML = '<div class=\"mdl-layout__header\"></div>' +\n    '<div class=\"mdl-layout__drawer\"></div>' +\n    '<div class=\"mdl-layout__content\"></div>';\n\n    var parent = document.createElement('div');\n    parent.appendChild(el); // MaterialLayout.init() expects a parent\n\n    componentHandler.upgradeElement(el, 'MaterialLayout');\n    expect($(el)).to.have.data('upgraded', ',MaterialLayout');\n  });\n\n  describe('Click on the tabs', function (done) {\n     var el;\n     var tab1, tab2;\n     var content1, content2;\n\n     beforeEach(function() {\n       el = document.createElement('div');\n       el.innerHTML = '' +\n       '  <header class=\"mdl-layout__header\">' +\n       '    <div class=\"mdl-layout__tab-bar mdl-js-ripple-effect\">' +\n       '      <a id=\"tab1\" href=\"#scroll-tab-1\" class=\"mdl-layout__tab is-active\">Tab 1</a>' +\n       '      <a id=\"tab2\" href=\"#scroll-tab-2\" class=\"mdl-layout__tab\">Tab 2</a>' +\n       '      <a id=\"tab3\" href=\"#scroll-tab-3\" class=\"mdl-layout__tab\">Tab 3</a>' +\n       '    </div>' +\n       '  </header>' +\n       '  <main class=\"mdl-layout__content\">' +\n       '    <section class=\"mdl-layout__tab-panel is-active\" id=\"scroll-tab-1\">' +\n       '      <div class=\"page-content\"><!-- Your content goes here --></div>' +\n       '    </section>' +\n       '    <section class=\"mdl-layout__tab-panel\" id=\"scroll-tab-2\">' +\n       '      <div class=\"page-content\"><!-- Your content goes here --></div>' +\n       '    </section>' +\n       '    <section class=\"mdl-layout__tab-panel\" id=\"scroll-tab-3\">' +\n       '      <div class=\"page-content\"><!-- Your content goes here --></div>' +\n       '    </section>' +\n       '  </main>';\n\n       var parent = document.createElement('div');\n       parent.appendChild(el); // MaterialLayout.init() expects a parent\n\n       tab1 = el.querySelector('#tab1');\n       tab2 = el.querySelector('#tab2');\n       content1 = el.querySelector('#scroll-tab-1');\n       content2 = el.querySelector('#scroll-tab-2');\n\n       componentHandler.upgradeElement(el, 'MaterialLayout');\n     });\n\n     it('should activate the second tab on click', function (done) {\n       var ev = document.createEvent('MouseEvents');\n       ev.initEvent('click', true, true);\n       tab2.dispatchEvent(ev);\n\n       window.setTimeout(function () {\n         expect($(tab1)).to.not.have.class('is-active');\n         expect($(content1)).to.not.have.class('is-active');\n         expect($(tab2)).to.have.class('is-active');\n         expect($(content2)).to.have.class('is-active');\n         done();\n       }, 100);\n     });\n\n     it('should activate the second tab on custom show method', function (done) {\n       tab2.show();\n\n       window.setTimeout(function () {\n         expect($(tab1)).to.not.have.class('is-active');\n         expect($(content1)).to.not.have.class('is-active');\n         expect($(tab2)).to.have.class('is-active');\n         expect($(content2)).to.have.class('is-active');\n         done();\n       }, 100);\n     });\n   });\n\n  describe('Drawer', function () {\n    var el;\n    var drawer, drawerBtn;\n    var navLink;\n\n    beforeEach(function() {\n      this.originalMatchMedia = window.MaterialLayout.prototype.matchMedia_;\n      window.MaterialLayout.prototype.matchMedia_ = MockMediaQueryList.mockMatchMedia;\n      window.patched = 'yes patched';\n\n      el = document.createElement('div');\n      el.innerHTML = '<div class=\"mdl-layout__header\"></div>' +\n        '<div class=\"mdl-layout__drawer\">' +\n        '   <nav class=\"mdl-navigation\">' +\n        '     <a class=\"mdl-navigation__link\" href=\"\">Phones</a>' +\n        '     <a class=\"mdl-navigation__link\" href=\"\">Tablets</a>' +\n        '     <a class=\"mdl-navigation__link\" href=\"\">Wear</a>' +\n        '   </nav>' +\n        '</div>' +\n        '<div class=\"mdl-layout__content\"></div>';\n\n      var parent = document.createElement('div');\n      parent.appendChild(el);\n\n      componentHandler.upgradeElement(el, 'MaterialLayout');\n\n      drawer = el.querySelector('.mdl-layout__drawer');\n      drawerBtn = el.querySelector('.mdl-layout__drawer-button');\n      navLink = el.querySelector('.mdl-layout__drawer a');\n    });\n\n    afterEach(function() {\n      window.MaterialLayout.prototype.matchMedia_ = this.originalMatchMedia;\n    });\n\n    it('should have attribute aria-hidden=\"true\"', function () {\n      var screenSizeHandler = MockMediaQueryList.registry[\n          '(max-width: 1024px)'];\n\n      // Expect hidden on small screen\n      screenSizeHandler.triggerMatch(true);\n      expect($(drawer)).to.have.attr('aria-hidden', 'true');\n\n      // Expect hidden on wide screen\n      screenSizeHandler.triggerMatch(false);\n      expect($(drawer)).to.have.attr('aria-hidden', 'true');\n    });\n\n    it('should have attribute aria-hidden=\"false\" for fixed drawer', function () {\n      $(el).addClass('mdl-layout--fixed-drawer');\n\n      var screenSizeHandler = MockMediaQueryList.registry[\n          '(max-width: 1024px)'];\n\n      // Expect hidden on small screen\n      screenSizeHandler.triggerMatch(true);\n      expect($(drawer)).to.have.attr('aria-hidden', 'true');\n\n      // Expect shown on wide screen\n      screenSizeHandler.triggerMatch(true);\n      expect($(drawer)).to.have.attr('aria-hidden', 'true');\n    });\n\n    it('button should have attribute aria-expanded=\"false\"', function () {\n      expect($(drawerBtn)).to.have.attr('aria-expanded', 'false');\n    });\n\n    it('and drawer button should have correct values for attributes aria-hidden and aria-expanded', function () {\n      var ev = document.createEvent('MouseEvents');\n      ev.initEvent('click', true, true);\n      drawerBtn.dispatchEvent(ev);\n\n      expect($(drawer)).to.have.attr('aria-hidden', 'false');\n      expect($(drawerBtn)).to.have.attr('aria-expanded', 'true');\n    });\n\n    it('should be closed on hit ESCAPE', function () {\n      var ev = document.createEvent('KeyboardEvent');\n      ev.initEvent('keydown', true, true, null, false, false, false, false, 27, 0);\n      drawer.dispatchEvent(ev);\n\n      expect($(drawer)).to.not.have.class('is-visible');\n      expect($(drawer)).to.have.attr('aria-hidden', 'true');\n      expect($(drawerBtn)).to.have.attr('aria-expanded', 'false');\n    });\n  });\n\n  describe('Manual switch mode', function () {\n    it('should disable content switching', function (done) {\n      var el = document.createElement('div');\n      el.innerHTML = '' +\n        '  <header class=\"mdl-layout__header\">' +\n        '    <div class=\"mdl-layout__tab-bar mdl-js-ripple-effect mdl-layout__tab-manual-switch\">' +\n        '      <a id=\"tab1\" href=\"#scroll-tab-1\" class=\"mdl-layout__tab is-active\">Tab 1</a>' +\n        '      <a id=\"tab2\" href=\"#scroll-tab-2\" class=\"mdl-layout__tab\">Tab 2</a>' +\n        '    </div>' +\n        '  </header>' +\n        '  <main class=\"mdl-layout__content\">' +\n        '    <section class=\"mdl-layout__tab-panel is-active\" id=\"scroll-tab-1\">' +\n        '      <div class=\"page-content\"><!-- Your content goes here --></div>' +\n        '    </section>' +\n        '    <section class=\"mdl-layout__tab-panel\" id=\"scroll-tab-2\">' +\n        '      <div class=\"page-content\"><!-- Your content goes here --></div>' +\n        '    </section>' +\n        '  </main>';\n\n      var parent = document.createElement('div');\n      parent.appendChild(el); // MaterialLayout.init() expects a parent\n\n      var tab1 = el.querySelector('#tab1');\n      var tab2 = el.querySelector('#tab2');\n      var content1 = el.querySelector('#scroll-tab-1');\n      var content2 = el.querySelector('#scroll-tab-2');\n\n      componentHandler.upgradeElement(el, 'MaterialLayout');\n\n      var ev = document.createEvent('MouseEvents');\n      ev.initEvent('click', true, true);\n      tab2.dispatchEvent(ev);\n\n      window.setTimeout(function() {\n        // Since content switching has been set to manual, layout shouldn't\n        // have been switched.\n        expect($(tab1)).to.have.class('is-active');\n        expect($(content1)).to.have.class('is-active');\n        expect($(tab2)).to.not.have.class('is-active');\n        expect($(content2)).to.not.have.class('is-active');\n        done();\n      }, 100);\n    });\n  });\n});\n"
  },
  {
    "path": "test/unit/menu.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\ndescribe('MaterialMenu', function () {\n\n  it('should be globally available', function () {\n    expect(MaterialMenu).to.be.a('function');\n  });\n\n  it('should upgrade successfully', function () {\n    var parent = document.createElement('div'), // parent must exist for MaterialMenu.init()\n      el = document.createElement('ul');\n    parent.appendChild(el)\n\n    componentHandler.upgradeElement(el, 'MaterialMenu');\n    expect($(el)).to.have.data('upgraded', ',MaterialMenu');\n  });\n\n  describe ('visibility API', function () {\n    var parent;\n    var el;\n\n    before(function() {\n      parent = document.createElement('div'); // parent must exist for MaterialMenu.init()\n      el = document.createElement('ul');\n      parent.appendChild(el)\n      componentHandler.upgradeElement(el, 'MaterialMenu');\n    });\n\n    it('should start the showing animation on show()', function(done) {\n      expect($(el.parentElement)).to.not.have.class('is-visible');\n      el.MaterialMenu.show();\n      window.setTimeout(function() {\n        expect($(el.parentElement)).to.have.class('is-visible');\n\n        var ev = document.createEvent('HTMLEvents');\n        ev.initEvent('transitionend', true, true)\n        el.dispatchEvent(ev);\n        done();\n      }, 100);\n    });\n\n    it('should start the hiding animation on hide()', function(done) {\n      expect($(el.parentElement)).to.have.class('is-visible');\n      el.MaterialMenu.hide();\n      window.setTimeout(function() {\n        expect($(el.parentElement)).to.not.have.class('is-visible');\n\n        var ev = document.createEvent('HTMLEvents');\n        ev.initEvent('transitionend', true, true)\n        el.dispatchEvent(ev);\n        done();\n      }, 100);\n    });\n\n    it('should start the showing animating on toggle() when invisible', function(done) {\n      expect($(el.parentElement)).to.not.have.class('is-visible');\n      el.MaterialMenu.toggle();\n      window.setTimeout(function() {\n        expect($(el.parentElement)).to.have.class('is-visible');\n\n        var ev = document.createEvent('HTMLEvents');\n        ev.initEvent('transitionend', true, true)\n        el.dispatchEvent(ev);\n        done();\n      }, 100);\n    });\n\n    it('should start the hiding animating on toggle() when visible', function(done) {\n      expect($(el.parentElement)).to.have.class('is-visible');\n      el.MaterialMenu.toggle();\n      window.setTimeout(function() {\n        expect($(el.parentElement)).to.not.have.class('is-visible');\n\n        var ev = document.createEvent('HTMLEvents');\n        ev.initEvent('transitionend', true, true)\n        el.dispatchEvent(ev);\n        done();\n      }, 100);\n    });\n\n  });\n\n  it('Should be made visible on button click', function (done) {\n    var ctr = document.createElement('div')\n    ctr.innerHTML = '<button id=\"clickable\">Menu</button>' +\n                    '<ul class=\"mdl-menu mdl-js-menu mdl-js-ripple-effect\" for=\"clickable\">' +\n                    '  <li class=\"mdl-menu__item\">5.0 Lollipop</li>' +\n                    '  <li class=\"mdl-menu__item\">4.4 KitKat</li>' +\n                    '  <li disabled class=\"mdl-menu__item\">4.3 Jelly Bean</li>' +\n                    '  <li class=\"mdl-menu__item\">Android History</li>' +\n                    '</ul>';\n    document.body.appendChild(ctr); // `for` only works in document\n\n    var el = ctr.querySelector('ul');\n    componentHandler.upgradeElement(el, 'MaterialMenu');\n\n    var ev = document.createEvent('MouseEvents');\n    ev.initEvent('click', true, true);\n    ctr.querySelector('#clickable').dispatchEvent(ev);\n    window.setTimeout(function() {\n      expect($(el.parentElement)).to.have.class('is-visible');\n      document.body.removeChild(ctr);\n      done();\n    }, 100);\n  });\n\n});\n"
  },
  {
    "path": "test/unit/progress.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\ndescribe('MaterialProgress', function () {\n\n  it('should be globally available', function () {\n    expect(MaterialProgress).to.be.a('function');\n  });\n\n  it('should upgrade successfully', function () {\n    var el = document.createElement('div');\n    componentHandler.upgradeElement(el, 'MaterialProgress');\n    expect($(el)).to.have.data('upgraded', ',MaterialProgress');\n  });\n\n  it('should be a widget', function () {\n    var el = document.createElement('div');\n    componentHandler.upgradeElement(el, 'MaterialProgress');\n    expect(el.MaterialProgress).to.be.a('object');\n  });\n\n  it('should have public methods available', function () {\n    var el = document.createElement('div');\n    componentHandler.upgradeElement(el, 'MaterialProgress');\n    methods = [\n      'setBuffer',\n      'setProgress'\n    ];\n    methods.forEach(function(item) {\n      expect(el.MaterialProgress[item]).to.be.a('function');\n    });\n  });\n\n});\n"
  },
  {
    "path": "test/unit/radio.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\ndescribe('MaterialRadio', function () {\n\n  function createRadio() {\n    return createRadioWithValues('flash', 'on');\n  };\n\n  function createRadioWithValues(name, value) {\n    var label = document.createElement('label');\n    var input = document.createElement('input');\n    var labelText = document.createElement('span');\n    label.for = 'testRadio';\n    input.id = label.for;\n    label.className = 'mdl-radio mdl-js-radio';\n    input.className = 'mdl-radio__button';\n    input.type = 'radio';\n    input.name = name;\n    input.value = value;\n    label.appendChild(input);\n    labelText.className = 'mdl-radio__label';\n    labelText.text = 'Always on';\n    label.appendChild(labelText);\n    return label;\n  }\n\n  it('should be globally available', function () {\n    expect(MaterialRadio).to.be.a('function');\n  });\n\n  it('should upgrade successfully', function () {\n    var el = createRadio();\n    componentHandler.upgradeElement(el, 'MaterialRadio');\n    expect($(el)).to.have.data('upgraded', ',MaterialRadio');\n  });\n\n  it('should be a widget', function() {\n    var radio = createRadio();\n    componentHandler.upgradeElement(radio);\n    expect(radio.MaterialRadio).to.be.a('object');\n  });\n\n  it('should have all public methods available in widget', function() {\n    var radio = createRadio();\n    componentHandler.upgradeElement(radio);\n    var methods = [\n      'disable',\n      'enable',\n      'uncheck',\n      'check',\n      'checkDisabled',\n      'checkToggleState'\n    ];\n    methods.forEach(function(item) {\n      expect(radio.MaterialRadio[item]).to.be.a('function');\n    });\n  });\n\n  it('should get disabled class after being checked', function() {\n    var radio = createRadio();\n    componentHandler.upgradeElement(radio);\n    radio.querySelector('input').disabled = true;\n    radio.MaterialRadio.checkDisabled();\n    expect((function() {\n      return radio.className;\n    }())).to.equal('mdl-radio mdl-js-radio is-upgraded is-disabled');\n  });\n\n  it('should get checked class after checking toggle state', function() {\n    var radio = createRadio();\n    componentHandler.upgradeElement(radio);\n    radio.querySelector('input').checked = true;\n    radio.MaterialRadio.checkToggleState();\n    expect((function() {\n      return radio.className;\n    }())).to.equal('mdl-radio mdl-js-radio is-upgraded is-checked');\n  });\n\n  it('should update related radios on one changing', function() {\n    var radios = [];\n    radios.push(createRadioWithValues('test', 'one'));\n    radios.push(createRadioWithValues('test', 'two'));\n    radios.push(createRadioWithValues('test', 'three'));\n    radios.push(createRadioWithValues('tester', 'A'));\n    radios.push(createRadioWithValues('tester', 'B'));\n    radios.push(createRadioWithValues('tester', 'C'));\n    var container = document.createElement('div');\n    radios.forEach(function(item) {\n      container.appendChild(item);\n      componentHandler.upgradeElement(item);\n    });\n    document.body.appendChild(container);\n\n    // Prepare the change event for manual firing.\n    // Used to trigger sibling checking as if UX triggered.\n    var changeEvent = document.createEvent(\"HTMLEvents\");\n    changeEvent.initEvent(\"change\", false, true);\n\n    // Check that all inputs are in a clean state\n    Array.prototype.splice(document.querySelectorAll('[type=\"radio\"]')).forEach(function(item) {\n      expect(item.parentElement.className).to.equal('mdl-radio mdl-js-radio is-upgraded');\n    });\n\n    radios[0].MaterialRadio.check();\n    radios[0].querySelector('input').dispatchEvent(changeEvent);\n    expect(radios[0].className).to.equal('mdl-radio mdl-js-radio is-upgraded is-checked');\n\n    radios[1].MaterialRadio.check();\n    radios[1].querySelector('input').dispatchEvent(changeEvent);\n    expect(radios[1].className).to.equal('mdl-radio mdl-js-radio is-upgraded is-checked');\n    expect(radios[0].className).to.equal('mdl-radio mdl-js-radio is-upgraded');\n\n    // Check the extra radio set to verify things with different names are not touched when changing.\n    Array.prototype.splice(document.querySelectorAll('[type=\"radio\"][name=\"tester\"]')).forEach(function(item) {\n      expect(item.parentElement.className).to.equal('mdl-radio mdl-js-radio is-upgraded');\n    });\n\n  });\n});"
  },
  {
    "path": "test/unit/ripple.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\ndescribe('MaterialRipple', function () {\n\n  it('should be globally available', function () {\n    expect(MaterialRipple).to.be.a('function');\n  });\n\n});\n"
  },
  {
    "path": "test/unit/slider.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\ndescribe('MaterialSlider', function () {\n\n  it('should be globally available', function () {\n    expect(MaterialSlider).to.be.a('function');\n  });\n\n  it('should upgrade successfully', function () {\n    var el = document.createElement('input');\n    el.type = 'range';\n\n    var parent = document.createElement('div');\n    parent.appendChild(el);\n\n    componentHandler.upgradeElement(el, 'MaterialSlider');\n    expect($(el)).to.have.data('upgraded', ',MaterialSlider');\n  });\n\n});\n"
  },
  {
    "path": "test/unit/snackbar.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\ndescribe('MaterialSnackbar', function () {\n\n  function createSnackbarMarkup() {\n    var el = document.createElement('div');\n    el.className = 'mdl-js-snackbar mdl-snackbar';\n    var text = document.createElement('div');\n    var action = document.createElement('button');\n    action.type = 'button';\n    action.classList.add('mdl-snackbar__action');\n    text.classList.add('mdl-snackbar__text');\n    el.appendChild(text);\n    el.appendChild(action);\n    return el;\n  }\n\n  it('should be globally available', function () {\n    expect(MaterialSnackbar).to.be.a('function');\n  });\n\n  it('should expose public methods', function() {\n    var el = createSnackbarMarkup();\n    componentHandler.upgradeElement(el);\n    var methods = [\n      'showSnackbar'\n    ];\n    methods.forEach(function(item) {\n      expect(el.MaterialSnackbar[item]).to.be.a('function');\n    });\n  });\n\n  it('should be upgradable', function() {\n    var el = createSnackbarMarkup();\n    componentHandler.upgradeElement(el, 'MaterialSnackbar');\n    expect($(el)).to.have.data('upgraded', ',MaterialSnackbar');\n  });\n\n  it('should reveal showSnackbar to widget', function() {\n    var el = createSnackbarMarkup();\n    componentHandler.upgradeElement(el, 'MaterialSnackbar');\n    expect(el.MaterialSnackbar.showSnackbar).to.be.a('function');\n  });\n\n  it('should throw an error if not provided data', function() {\n    expect(function() {\n      var el = createSnackbarMarkup();\n      componentHandler.upgradeElement(el, 'MaterialSnackbar');\n      el.MaterialSnackbar.showSnackbar();\n    }).to.throw('Please provide a data object with at least a message to display.');\n  });\n\n  it('should throw an error if not provided a message', function() {\n    expect(function() {\n      var el = createSnackbarMarkup();\n      componentHandler.upgradeElement(el, 'MaterialSnackbar');\n      el.MaterialSnackbar.showSnackbar({});\n    }).to.throw('Please provide a message to be displayed.');\n  });\n\n  it('should throw an error if not provided actionText with an actionHandler', function() {\n    expect(function() {\n      var el = createSnackbarMarkup();\n      componentHandler.upgradeElement(el, 'MaterialSnackbar');\n      el.MaterialSnackbar.showSnackbar({\n        message: 'Test message',\n        actionHandler: function(event) {}\n      });\n    }).to.throw('Please provide action text with the handler.');\n  });\n\n  it('should throw an error if not constructed with a text area in the markup', function() {\n    expect(function() {\n      var el = document.createElement('div');\n      el.className = 'mdl-js-snackbar mdl-snackbar';\n      componentHandler.upgradeElement(el);\n    }).to.throw('There must be a message element for a snackbar.');\n  });\n\n  it('should throw an error if not constructed with a text area in the markup', function() {\n    expect(function() {\n      var el = document.createElement('div');\n      el.className = 'mdl-js-snackbar mdl-snackbar';\n      var textArea = document.createElement('div');\n      textArea.className = 'mdl-snackbar__text';\n      el.appendChild(textArea);\n      componentHandler.upgradeElement(el);\n    }).to.throw('There must be an action element for a snackbar.');\n  });\n});\n"
  },
  {
    "path": "test/unit/spinner.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\ndescribe('MaterialSpinner', function () {\n\n  it('should be globally available', function () {\n    expect(MaterialSpinner).to.be.a('function');\n  });\n\n  it('should upgrade successfully', function () {\n    var el = document.createElement('div');\n    componentHandler.upgradeElement(el, 'MaterialSpinner');\n    expect($(el)).to.have.data('upgraded', ',MaterialSpinner');\n  });\n\n  it('should be a widget', function () {\n    var el = document.createElement('div');\n    componentHandler.upgradeElement(el, 'MaterialSpinner');\n    expect(el.MaterialSpinner).to.be.a('object');\n  });\n\n  it('should have public methods available', function() {\n    var el = document.createElement('div');\n    componentHandler.upgradeElement(el, 'MaterialSpinner');\n    var methods = [\n      'start',\n      'stop',\n    ];\n    methods.forEach(function(item) {\n      expect(el.MaterialSpinner[item]).to.be.a('function');\n    });\n  });\n\n  it('should start successfully', function () {\n    var el = document.createElement('div');\n    componentHandler.upgradeElement(el, 'MaterialSpinner');\n    el.MaterialSpinner.start();\n    expect($(el)).to.have.class('is-active');\n  });\n\n  it('should stop successfully', function () {\n    var el = document.createElement('div');\n    componentHandler.upgradeElement(el, 'MaterialSpinner');\n    el.MaterialSpinner.start();\n    el.MaterialSpinner.stop();\n    expect($(el)).to.not.have.class('is-active');\n  });\n\n  it('should create layers successfully', function () {\n    var el = document.createElement('div');\n    componentHandler.upgradeElement(el, 'MaterialSpinner');\n    var html = el.innerHTML;\n    expect(html).to.contain('mdl-spinner__layer');\n    expect(html).to.contain('mdl-spinner__layer-1');\n    expect(html).to.contain('mdl-spinner__layer-2');\n    expect(html).to.contain('mdl-spinner__layer-3');\n    expect(html).to.contain('mdl-spinner__layer-4');\n    expect(html).to.contain('mdl-spinner__circle');\n  });\n\n});\n"
  },
  {
    "path": "test/unit/switch.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\ndescribe('MaterialSwitch', function () {\n\n  function createSwitch() {\n    var label = document.createElement('label');\n    var input = document.createElement('input');\n    var labelText = document.createElement('span');\n    label.for = 'testSwitch';\n    input.id = label.for;\n    label.className = 'mdl-switch mdl-js-switch';\n    input.type = 'checkbox';\n    input.className = 'mdl-switch__input';\n    label.appendChild(input);\n    labelText.text = 'Sound off/on';\n    labelText.className = 'mdl-switch__label';\n    label.appendChild(labelText);\n    return label;\n  };\n\n  it('should be globally available', function () {\n    expect(MaterialSwitch).to.be.a('function');\n  });\n\n  it('should upgrade successfully', function () {\n    var el = createSwitch();\n    componentHandler.upgradeElement(el, 'MaterialSwitch');\n    expect($(el)).to.have.data('upgraded', ',MaterialSwitch');\n  });\n\n  it('should get disabled class after being checked', function() {\n    var switchElement = createSwitch();\n    componentHandler.upgradeElement(switchElement);\n    switchElement.querySelector('input').disabled = true;\n    switchElement.MaterialSwitch.checkDisabled();\n    expect((function() {\n      return switchElement.className;\n    }())).to.equal('mdl-switch mdl-js-switch is-upgraded is-disabled');\n  });\n\n  it('should get checked class after checking toggle state', function() {\n    var switchElement = createSwitch();\n    componentHandler.upgradeElement(switchElement);\n    switchElement.querySelector('input').checked = true;\n    switchElement.MaterialSwitch.checkToggleState();\n    expect((function() {\n      return switchElement.className;\n    }())).to.equal('mdl-switch mdl-js-switch is-upgraded is-checked');\n  });\n\n});\n"
  },
  {
    "path": "test/unit/tabs.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\ndescribe('MaterialTabs', function () {\n\n  it('should be globally available', function () {\n    expect(MaterialTabs).to.be.a('function');\n  });\n\n  it('should upgrade successfully', function () {\n    var el = document.createElement('div');\n    el.innerHTML = '' +\n    '<div class=\"mdl-tabs mdl-js-tabs mdl-js-ripple-effect\">' +\n    '  <div class=\"mdl-tabs__tab-bar\">' +\n    '  </div>' +\n    '</div>';\n\n    componentHandler.upgradeElement(el, 'MaterialTabs');\n    expect($(el)).to.have.data('upgraded', ',MaterialTabs');\n  });\n\n  describe('Click on the tabs', function () {\n\n    var el;\n    var tab1;\n    var tab2;\n    var content1;\n    var content2;\n\n    before(function() {\n      el = document.createElement('div');\n      el.innerHTML = '' +\n      '<div class=\"mdl-tabs mdl-js-tabs mdl-js-ripple-effect\">' +\n      '  <div class=\"mdl-tabs__tab-bar\">' +\n      '   <a href=\"#content1\" id=\"tab1\" class=\"mdl-tabs__tab\">1</a>' +\n      '   <a href=\"#content2\" id=\"tab2\" class=\"mdl-tabs__tab\">2</a>' +\n      '   <a href=\"#content3\" id=\"tab3\" class=\"mdl-tabs__tab\">3</a>' +\n      ' </div>' +\n      ' <div class=\"mdl-tabs__panel\" id=\"content1\"></div>' +\n      ' <div class=\"mdl-tabs__panel\" id=\"content2\"></div>' +\n      ' <div class=\"mdl-tabs__panel\" id=\"content3\"></div>' +\n      '</div>';\n      componentHandler.upgradeElement(el, 'MaterialTabs');\n\n      tab1 = el.querySelector('#tab1');\n      tab2 = el.querySelector('#tab2');\n      content1 = el.querySelector('#content1');\n      content2 = el.querySelector('#content2');\n    });\n\n    it('Should activate no tab by default', function (done) {\n      window.setTimeout(function () {\n        expect(el.querySelectorAll('.is-active')).to.have.length(0);\n        done();\n      }, 100);\n    });\n\n    it('Should activate the first tab on click', function (done) {\n      var el = document.createEvent('MouseEvents');\n      el.initEvent('click', true, true);\n      tab1.dispatchEvent(el);\n\n      window.setTimeout(function () {\n        expect($(tab1)).to.have.class('is-active');\n        expect($(content1)).to.have.class('is-active');\n        done();\n      }, 100);\n    });\n\n    it('Should activate the second tab on click', function (done) {\n      var el = document.createEvent('MouseEvents');\n      el.initEvent('click', true, true);\n      tab2.dispatchEvent(el);\n\n      window.setTimeout(function () {\n        expect($(tab1)).to.not.have.class('is-active');\n        expect($(content1)).to.not.have.class('is-active');\n        expect($(tab2)).to.have.class('is-active');\n        expect($(content2)).to.have.class('is-active');\n        done();\n      }, 100);\n    });\n  });\n\n});\n"
  },
  {
    "path": "test/unit/textfield.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\ndescribe('MaterialTextfield', function () {\n\n  function createSingleLineTextfield() {\n    var container = document.createElement('div');\n    var input = document.createElement('input');\n    var label = document.createElement('label');\n    var errorMessage = document.createElement('span');\n    container.className = 'mdl-textfield mdl-js-textfield';\n    input.className = 'mdl-textfield__input';\n    input.pattern = '[0-9]';\n    input.id = 'testInput';\n    label.for = input.id;\n    label.className = 'mdl-textfield__label';\n    label.text = 'Number';\n    errorMessage.className = 'mdl-textfield__error';\n    errorMessage.text = 'Positive number only.';\n    container.appendChild(input);\n    container.appendChild(label);\n    container.appendChild(errorMessage);\n    return container;\n  };\n\n  it('should be globally available', function () {\n    expect(MaterialTextfield).to.be.a('function');\n  });\n\n  it('should upgrade successfully', function () {\n    var el = createSingleLineTextfield();\n    componentHandler.upgradeElement(el, 'MaterialTextfield');\n    expect($(el)).to.have.data('upgraded', ',MaterialTextfield');\n  });\n\n  it('should be a widget', function () {\n    var el = createSingleLineTextfield();\n    componentHandler.upgradeElement(el, 'MaterialTextfield');\n    expect(el.MaterialTextfield).to.be.a('object');\n  });\n\n  it('should have public methods available via widget', function () {\n    var el = createSingleLineTextfield();\n    componentHandler.upgradeElement(el, 'MaterialTextfield');\n    var methods = [\n      'checkDisabled',\n      'checkValidity',\n      'checkDirty',\n      'checkFocus',\n      'disable',\n      'enable',\n      'change'\n    ];\n    methods.forEach(function(item) {\n      expect(el.MaterialTextfield[item]).to.be.a('function');\n    });\n  });\n\n  it('should be invalid after upgrade if invalid previously', function () {\n    var el = createSingleLineTextfield();\n    el.classList.add('is-invalid');\n    componentHandler.upgradeElement(el);\n    expect(el.classList.contains('is-invalid')).to.equal(true);\n  });\n});\n"
  },
  {
    "path": "test/unit/tooltip.js",
    "content": "/**\n * Copyright 2015 Google Inc. 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 *      http://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\ndescribe('MaterialTooltip', function () {\n\n  it('should be globally available', function () {\n    expect(MaterialTooltip).to.be.a('function');\n  });\n\n  it('should upgrade successfully', function () {\n    var parent = document.createElement('div');\n    parent.innerHTML = '<div id=\"target\"></div><div id=\"tooltip\" for=\"target\"></div>';\n    document.body.appendChild(parent);\n\n    var el = parent.querySelector('#tooltip');\n    componentHandler.upgradeElement(el, 'MaterialTooltip');\n    expect($(el)).to.have.data('upgraded', ',MaterialTooltip');\n  });\n\n});\n"
  },
  {
    "path": "test/visual/index.html",
    "content": "<!doctype html>\n<html lang=\"\">\n<head>\n  <meta charset=\"utf-8\">\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n  <meta name=\"description\" content=\"\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <title>Visual tests</title>\n\n  <link href=\"//fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en\" rel='stylesheet'>\n\n  <base href=\"../../\">\n  <link rel=\"stylesheet\" href=\"dist/material.css\">\n  <link rel=\"stylesheet\" href=\"test/visual/style.css\">\n</head>\n<body>\n\n\n    <div class=\"mdl-layout mdl-js-layout mdl-layout--fixed-drawer\">\n      <div class=\"mdl-layout__header\">\n        <div class=\"mdl-layout__header-row\">\n          <span class=\"mdl-layout-title\">Components</span>\n          <div class=\"mdl-layout-spacer\"></div>\n          <div class=\"mdl-input mdl-input--right\">\n            <label class=\"mdl-textfield-expandable-icon mdl-label\" for=\"sample-expandable\">\n              <span class=\"mdl-textfield-expandable-icon-search\"></span>\n            </label>\n            <div class=\"mdl-input__expandable-holder\">\n              <label class=\"mdl-label\" for=\"sample\"></label>\n            </div>\n          </div>\n        </div>\n      </div>\n      <div class=\"mdl-layout__drawer\">\n        <span class=\"mdl-layout-title\">Material Design Lite</span>\n        <nav class=\"mdl-navigation\">\n          <a class=\"mdl-navigation__link\" target=\"preview\" href=\"dist/components/button/demo.html\">Button</a>\n          <a class=\"mdl-navigation__link\" target=\"preview\" href=\"dist/components/card/demo.html\">Card</a>\n          <a class=\"mdl-navigation__link\" target=\"preview\" href=\"dist/components/checkbox/demo.html\">Checkbox</a>\n          <a class=\"mdl-navigation__link\" target=\"preview\" href=\"dist/components/footer/demo.html\">Footer</a>\n          <a class=\"mdl-navigation__link\" target=\"preview\" href=\"dist/components/icon-toggle/demo.html\">Icon toggle</a>\n          <a class=\"mdl-navigation__link\" target=\"preview\" href=\"dist/components/layout/demo.html\">Layout</a>\n          <a class=\"mdl-navigation__link\" target=\"preview\" href=\"dist/components/list/demo.html\">List</a>\n          <a class=\"mdl-navigation__link\" target=\"preview\" href=\"dist/components/menu/demo.html\">Menu</a>\n          <a class=\"mdl-navigation__link\" target=\"preview\" href=\"dist/components/progress/demo.html\">Progress</a>\n          <a class=\"mdl-navigation__link\" target=\"preview\" href=\"dist/components/radio/demo.html\">Radio</a>\n          <a class=\"mdl-navigation__link\" target=\"preview\" href=\"dist/components/spinner/demo.html\">Spinner</a>\n          <a class=\"mdl-navigation__link\" target=\"preview\" href=\"dist/components/slider/demo.html\">Slider</a>\n          <a class=\"mdl-navigation__link\" target=\"preview\" href=\"dist/components/switch/demo.html\">Switch</a>\n          <a class=\"mdl-navigation__link\" target=\"preview\" href=\"dist/components/tabs/demo.html\">Tabs</a>\n          <a class=\"mdl-navigation__link\" target=\"preview\" href=\"dist/components/textfield/demo.html\">Textfield</a>\n          <a class=\"mdl-navigation__link\" target=\"preview\" href=\"dist/components/tooltip/demo.html\">Tooltip</a>\n          <a class=\"mdl-navigation__link\" target=\"preview\" href=\"dist/components/typography/demo.html\">Typography</a>\n        </nav>\n      </div>\n      <iframe name=\"preview\" class=\"mdl-layout__content\" src=\"test/visual/welcome.html\"></iframe>\n    </div>\n  </div>\n\n\n  <script src=\"dist/material.js\"></script>\n\n</body>\n</html>\n"
  },
  {
    "path": "test/visual/style.css",
    "content": ".demo-container {\n  width: 100%;\n  float: left;\n  margin: 0 40px 40px 0;\n  border: 1px solid #888888;\n  position: relative;\n  height: 500px;\n}\n\niframe {\n  width: auto;\n}\n\n.mdl-layout__content {\n  padding: 10px;\n}\n"
  },
  {
    "path": "test/visual/welcome.html",
    "content": "<!doctype html>\n<html lang=\"\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"description\" content=\"\">\n    <meta name=\"viewport\" content=\"width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes\">\n    <title>Menu</title>\n\n    <link rel=\"stylesheet\" href=\"../../css/material.css\">\n    <link rel=\"stylesheet\" href=\"style.css\">\n    <link href='//fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en' rel='stylesheet' type='text/css'>\n\n  </head>\n  <body>\n\n  <div class=\"PreviewBlock\">\n    <p>Material Design Lite is a light-weight implementation of Material Design targeted at static content-sites. Select a component on the left to preview it.</p>\n  </div>\n  </body>\n</html>\n"
  },
  {
    "path": "utils/uniffe.js",
    "content": "/**\n *\n *  Material Design Lite\n *  Copyright 2015 Google Inc. 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'use strict';\n\nvar through = require('through2');\nvar escodegen = require('escodegen');\nvar acorn = require('acorn');\n\nfunction uniffe(contents) {\n  var comments = [];\n  var tokens = [];\n\n  var ast = acorn.parse(contents, {\n    ranges: true,\n    onComment: comments,\n    onToken: tokens\n  });\n\n  escodegen.attachComments(ast, comments, tokens);\n\n  if (ast.body[0].expression === undefined ||\n      ast.body[0].expression.callee === undefined) {\n    return contents;\n  }\n\n  var rootProgram = ast.body[0].expression.callee.body;\n\n  rootProgram.type = 'Program';\n  // drop use strict\n  rootProgram.body = rootProgram.body.slice(1);\n  // attach all leading comments from outside iffe\n  rootProgram.leadingComments = ast.body[0].leadingComments;\n\n  return escodegen.generate(rootProgram, {comment: true});\n}\n\nmodule.exports = function() {\n  return through.obj(function(file, enc, cb) {\n    if (file.isBuffer()) {\n      file.contents = new Buffer(uniffe(file.contents.toString(enc)), enc);\n    }\n\n    cb(null, file);\n  });\n};\n"
  }
]