diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index a170e1370..f5b872699 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -9,82 +9,83 @@ pull request. If you are a contributor in other ways other than code, please either submit a pull request adding your name, or mention it to another maintainer and we will add you. **All** contributors belong here. 💯 -* [Carolyn Van Slyck](https://github.com/carolynvs) (Co-Creator of Porter) -* [Jeremy Rickard](https://github.com/jeremyrickard) (Co-Creator of Porter) -* [Vaughn Dice](https://github.com/vdice) -* [Reddy Prasad](https://github.com/dev-drprasad) -* [Thorsten Hans](https://github.com/ThorstenHans) -* [Ronan Flynn-Curran](https://github.com/flynnduism) -* [Allan Guwatudde](https://github.com/AGMETEOR) -* [Josh Dolitsky](https://github.com/jdolitsky) -* [Urvashi Reddy](https://github.com/youreddy) -* [Jennifer Davis](https://github.com/iennae) -* [Adam Reese](https://github.com/adamreese) -* [Simon Davies](https://github.com/simongdavies) -* [Phillip Ahereza](https://github.com/phillipahereza) -* [Ivan Towlson](https://github.com/itowlson) -* [Scott Coulton](https://github.com/scotty-c) -* [Radu Matei](https://github.com/radu-matei) -* [Raymond Kao](https://github.com/raykao) -* [Ryan Moran](https://github.com/ryanmoran) -* [Sean Harvey](https://github.com/halkyon) -* [SpiLLeR](https://github.com/SpiLLeR) -* [Weidong Feng](https://github.com/fenngwd) -* [Y.Horie](https://github.com/u5surf) -* [Zhaoyang Jiang](https://github.com/JiangZhaoYang) -* [Gauri Madhok](https://github.com/gaurimadhok) -* [Abhishek Gupta](https://github.com/abhirockzz) -* [Anubhav Mishra](https://github.com/anubhavmishra) -* [Aravind](https://github.com/scriptonist) -* [Artem](https://github.com/SuddenGunter) -* [Ben Wilkinson](https://github.com/brwilkinson) -* [Brad](https://github.com/bradcypert) -* [Clarence Bakirtzidis](https://github.com/clarenceb) -* [Cory O'Daniel](https://github.com/coryodaniel) -* [Hongchao Deng](https://github.com/hongchaodeng) -* [John Reese](https://github.com/jpreese) -* [Lanre Adelowo](https://github.com/adelowo) -* [Matt Butcher](https://github.com/technosophos) -* [Michael William Boldt](https://github.com/mboldt) -* [Mohamed Chorfa](https://github.com/MChorfa) -* [Don Stewart](https://github.com/donmstewart) -* [Nicholas Carrigan](https://github.com/nhcarrigan) -* [Stéphane Este-Gracias](https://github.com/sestegra) -* [Jeetu Kumar](https://github.com/i-am-jeetu) -* [Divyam Bhasin](https://github.com/divbhasin) -* [Ritesh Yadav](https://github.com/DARK-art108) -* [Jérémy Audiger](https://github.com/jaudiger) -* [Om More](https://github.com/thisisommore) -* [Avinash Upadhyaya](https://github.com/avinashupadhya99) -* [Mike Barkas](https://github.com/mikebarkas) -* [Joshua Bezaleel Abednego](https://github.com/joshuabezaleel) -* [Avinash Upadhyaya](https://github.com/avinashupadhya99) -* [Mahendra Bishnoi](https://github.com/mahendrabishnoi2) -* [Yingrong Zhao](https://github.com/VinozzZ) -* [Saksham Sharma](https://github.com/sakkshm26) -* [Jeremy Goss](https://github.com/Jemgoss) -* [Chioma Onyekpere](https://github.com/Simpcyclassy) -* [Saksham Sharma](https://github.com/sakkshm26) -* [Quentin Petraroia](https://github.com/qpetraroia) -* [Tamir Kamara](https://github.com/tamirkamara) -* [Chioma Onyekpere](https://github.com/Simpcyclassy) -* [Hrittik Roy](https://github.com/hrittikhere) -* [Tanmay Chaudhry](https://github.com/tchaudhry91) -* [Priyanshu Singh](https://github.com/reveurguy) -* [Kevin Barbour](https://github.com/kevinbarbour) -* [Epsxy](https://github.com/epsxy) -* [Jens Arnfast](https://github.com/jarnfast) -* [Madhu M Pandurangi](https://github.com/MadhuMPandurangi) -* [Karanjot Singh](https://github.com/0xquark) -* [Omar Kohl](https://github.com/omarkohl) -* [James Blair](https://github.com/jmhbnz) -* [Chengwei Guo](https://github.com/cw-Guo) -* [Sarah Christoff](https://github.com/schristoff) -* [Aleksey Barabanov](https://github.com/alekseybb197) -* [Sanskar Bhushan](https://github.com/sbdtu5498) -* [Tomi Paananen](https://github.com/tompaana) -* [Troy Connor](https://github.com/troy0820) -* [Phill Gibson](https://github.com/phillipgibson) -* [Ludvig Liljenberg](https://github.com/ludfjig) -* [Maninderjit Bindra](https://github.com/manisbindra) -* [Gonçalo Montalvão Marques](https://github.com/gonmmarques) +- [Carolyn Van Slyck](https://github.com/carolynvs) (Co-Creator of Porter) +- [Jeremy Rickard](https://github.com/jeremyrickard) (Co-Creator of Porter) +- [Vaughn Dice](https://github.com/vdice) +- [Reddy Prasad](https://github.com/dev-drprasad) +- [Thorsten Hans](https://github.com/ThorstenHans) +- [Ronan Flynn-Curran](https://github.com/flynnduism) +- [Allan Guwatudde](https://github.com/AGMETEOR) +- [Josh Dolitsky](https://github.com/jdolitsky) +- [Urvashi Reddy](https://github.com/youreddy) +- [Jennifer Davis](https://github.com/iennae) +- [Adam Reese](https://github.com/adamreese) +- [Simon Davies](https://github.com/simongdavies) +- [Phillip Ahereza](https://github.com/phillipahereza) +- [Ivan Towlson](https://github.com/itowlson) +- [Scott Coulton](https://github.com/scotty-c) +- [Radu Matei](https://github.com/radu-matei) +- [Raymond Kao](https://github.com/raykao) +- [Ryan Moran](https://github.com/ryanmoran) +- [Sean Harvey](https://github.com/halkyon) +- [SpiLLeR](https://github.com/SpiLLeR) +- [Weidong Feng](https://github.com/fenngwd) +- [Y.Horie](https://github.com/u5surf) +- [Zhaoyang Jiang](https://github.com/JiangZhaoYang) +- [Gauri Madhok](https://github.com/gaurimadhok) +- [Abhishek Gupta](https://github.com/abhirockzz) +- [Anubhav Mishra](https://github.com/anubhavmishra) +- [Aravind](https://github.com/scriptonist) +- [Artem](https://github.com/SuddenGunter) +- [Ben Wilkinson](https://github.com/brwilkinson) +- [Brad](https://github.com/bradcypert) +- [Clarence Bakirtzidis](https://github.com/clarenceb) +- [Cory O'Daniel](https://github.com/coryodaniel) +- [Hongchao Deng](https://github.com/hongchaodeng) +- [John Reese](https://github.com/jpreese) +- [Lanre Adelowo](https://github.com/adelowo) +- [Matt Butcher](https://github.com/technosophos) +- [Michael William Boldt](https://github.com/mboldt) +- [Mohamed Chorfa](https://github.com/MChorfa) +- [Don Stewart](https://github.com/donmstewart) +- [Nicholas Carrigan](https://github.com/nhcarrigan) +- [Stéphane Este-Gracias](https://github.com/sestegra) +- [Jeetu Kumar](https://github.com/i-am-jeetu) +- [Divyam Bhasin](https://github.com/divbhasin) +- [Ritesh Yadav](https://github.com/DARK-art108) +- [Jérémy Audiger](https://github.com/jaudiger) +- [Om More](https://github.com/thisisommore) +- [Avinash Upadhyaya](https://github.com/avinashupadhya99) +- [Mike Barkas](https://github.com/mikebarkas) +- [Joshua Bezaleel Abednego](https://github.com/joshuabezaleel) +- [Avinash Upadhyaya](https://github.com/avinashupadhya99) +- [Mahendra Bishnoi](https://github.com/mahendrabishnoi2) +- [Yingrong Zhao](https://github.com/VinozzZ) +- [Saksham Sharma](https://github.com/sakkshm26) +- [Jeremy Goss](https://github.com/Jemgoss) +- [Chioma Onyekpere](https://github.com/Simpcyclassy) +- [Saksham Sharma](https://github.com/sakkshm26) +- [Quentin Petraroia](https://github.com/qpetraroia) +- [Tamir Kamara](https://github.com/tamirkamara) +- [Chioma Onyekpere](https://github.com/Simpcyclassy) +- [Hrittik Roy](https://github.com/hrittikhere) +- [Tanmay Chaudhry](https://github.com/tchaudhry91) +- [Priyanshu Singh](https://github.com/reveurguy) +- [Kevin Barbour](https://github.com/kevinbarbour) +- [Epsxy](https://github.com/epsxy) +- [Jens Arnfast](https://github.com/jarnfast) +- [Madhu M Pandurangi](https://github.com/MadhuMPandurangi) +- [Karanjot Singh](https://github.com/0xquark) +- [Omar Kohl](https://github.com/omarkohl) +- [James Blair](https://github.com/jmhbnz) +- [Chengwei Guo](https://github.com/cw-Guo) +- [Sarah Christoff](https://github.com/schristoff) +- [Aleksey Barabanov](https://github.com/alekseybb197) +- [Sanskar Bhushan](https://github.com/sbdtu5498) +- [Tomi Paananen](https://github.com/tompaana) +- [Troy Connor](https://github.com/troy0820) +- [Phill Gibson](https://github.com/phillipgibson) +- [Ludvig Liljenberg](https://github.com/ludfjig) +- [Maninderjit Bindra](https://github.com/manisbindra) +- [Gonçalo Montalvão Marques](https://github.com/gonmmarques) +- [Sumit Kumar Soni](https://github.com/zelfroster) diff --git a/docs/archetypes/default.md b/docs/archetypes/default.md index 00e77bd79..97f90a6bc 100644 --- a/docs/archetypes/default.md +++ b/docs/archetypes/default.md @@ -2,5 +2,5 @@ title: "{{ replace .Name "-" " " | title }}" date: {{ .Date }} draft: true +description: "" --- - diff --git a/docs/assets/css/custom.css b/docs/assets/css/custom.css new file mode 100644 index 000000000..36e5e498c --- /dev/null +++ b/docs/assets/css/custom.css @@ -0,0 +1,3 @@ +:root { + --primary-hue: 336deg; +} diff --git a/docs/config-original.toml b/docs/config-original.toml deleted file mode 100644 index c11526530..000000000 --- a/docs/config-original.toml +++ /dev/null @@ -1,543 +0,0 @@ -baseURL = "https://getporter.org/" -languageCode = "en-us" -title = "Porter" -theme = "porter" -canonifyURLs = "false" -relativeURLs = "false" -pluralizeListTitles = "false" -plainIdAnchors = "true" -defaultContentLanguage = "en" - -# Syntax Highlighting -pygmentsUseClasses = true -pygmentsStyle = "friendly" - -[markup] - defaultMarkdownHandler = "goldmark" - - [markup.goldmark.renderer] - unsafe = true - - [markup.tableOfContents] - endLevel = 3 - ordered = false - startLevel = 2 - -# Default Page Parameters -[params] - title = "Porter" - author = "Carolyn Van Slyck" - description = "A Friendly Cloud Installer for Cloud Native Application Bundles" - image = "images/porter-twitter-card.png" - -# -# Docs Navigation -# - -# Get Started -[[menu.main]] - name = "Get Started" - identifier = "get-started" - weight = 2 - url = "#" - [[menu.main]] - name = "Install Porter" - url = "/install/" - identifier = "install" - weight = 11 - parent = "get-started" - [[menu.main]] - name = "Migrate from v0" - url = "/storage-migrate/" - identifier = "migrate" - weight = 12 - parent = "get-started" - [[menu.main]] - name = "QuickStart" - identifier = "quickstart" - url = "/quickstart/" - weight = 30 - parent = "get-started" - [[menu.main]] - name = "Bundles" - url = "/quickstart/" - identifier = "quickstart-bundles" - weight = 1 - parent = "quickstart" - [[menu.main]] - name = "Parameters" - url = "/quickstart/parameters/" - identifier = "quickstart-parameters" - weight = 2 - parent = "quickstart" - [[menu.main]] - name = "Credentials" - url = "/quickstart/credentials/" - identifier = "quickstart-credentials" - weight = 3 - parent = "quickstart" - [[menu.main]] - name = "Configuration" - url = "/quickstart/configuration/" - identifier = "quickstart-configuration" - weight = 4 - parent = "quickstart" - [[menu.main]] - name = "Desired State" - url = "/quickstart/desired-state/" - identifier = "quickstart-desired-state" - weight = 5 - parent = "quickstart" - [[menu.main]] - name = "Create a bundle" - url = "/bundle/create/" - identifier = "quickstart-create-a-bundle" - weight = 6 - parent = "quickstart" - [[menu.main]] - name = "Examples" - url = "/examples/" - identifier = "examples" - weight = 50 - parent = "get-started" - [[menu.main]] - name = "FAQ" - identifier = "faq" - url = "/faq" - weight = 100 - parent = "get-started" - -# Contribute -[[menu.main]] - name = "Contribute" - url = "/contribute/" - identifier = "contribute" - weight = 20 - [[menu.main]] - name = "New Contributor Guide" - url = "/contribute/" - identifier = "contribute-overview" - weight = 51 - parent = "contribute" - [[menu.main]] - name = "Contributing Tutorial" - url = "/contribute/tutorial/" - identifier = "contributing-tutorial" - weight = 52 - parent = "contribute" - [[menu.main]] - name = "Contributing Guide" - url = "/contribute/guide/" - identifier = "contributing-guide" - weight = 53 - parent = "contribute" - [[menu.main]] - name = "Make a Proposal" - url = "/contribute/proposals/" - identifier = "proposals" - weight = 54 - parent = "contribute" - -# Tasks -[[menu.main]] - name = "Tasks" - identifier = "tasks" - weight = 25 - # End Users - [[menu.main]] - name = "End Users" - identifier = "tasks-end-users" - weight = 1 - parent = "tasks" - [[menu.main]] - name = "Manage Installations" - url = "/end-users/installations/" - identifier = "end-users-installations" - weight = 10 - parent = "tasks-end-users" - [[menu.main]] - name = "Examine a Bundle" - url = "/examine-bundles" - identifier = "examine-bundles-overview" - weight = 12 - parent = "tasks-end-users" - [[menu.main]] - name = "View logs" - url = "/end-users/logs/" - identifier = "end-users-logs" - weight = 20 - parent = "tasks-end-users" - [[menu.main]] - name = "Configure Porter" - url = "/end-users/configuration/" - identifier = "end-users-configuration" - weight = 30 - parent = "tasks-end-users" - [[menu.main]] - name = "Connect to Docker" - url = "/end-users/connect-docker/" - identifier = "end-users-connect-docker" - weight = 31 - parent = "tasks-end-users" - [[menu.main]] - name = "Connect to a Registry" - url = "/end-users/connect-registry/" - identifier = "end-users-connect-registry" - weight = 32 - parent = "tasks-end-users" - - - # Bundle Authors - [[menu.main]] - name = "Bundle Authors" - identifier = "tasks-authors" - weight = 10 - parent = "tasks" - [[menu.main]] - name = "Create a bundle" - url = "/bundle/create" - identifier = "bundle-create" - weight = 301 - parent = "tasks-authors" - [[menu.main]] - name = "Custom Dockerfile" - url = "/bundle/custom-dockerfile/" - identifier = "custom-dockerfile" - weight = 302 - parent = "tasks-authors" - [[menu.main]] - name = "Dependencies" - url = "/dependencies" - identifier = "dependencies" - weight = 304 - parent = "tasks-authors" - [[menu.main]] - name = "Templates" - url = "/authors/templates/" - identifier = "author-templates" - weight = 305 - parent = "tasks-authors" - [[menu.main]] - name = "Distribute a Bundle" - url = "/distribute-bundles" - identifier = "distribute-bundles-overview" - weight = 310 - parent = "tasks-authors" - - # Administrators - [[menu.main]] - name = "Administrators" - identifier = "tasks-administrators" - weight = 15 - parent = "tasks" - [[menu.main]] - name = "Administrators" - identifier = "tasks-administrators" - weight = 15 - parent = "tasks" - [[menu.main]] - name = "Inspect the Image in a Bundle" - url = "/inspect-bundles/" - identifier = "inspect-bundles" - weight = 1 - parent = "tasks-administrators" - [[menu.main]] - name = "Copy a Bundle" - identifier = "copy-bundles" - url = "/copy-bundles/" - weight = 5 - parent = "tasks-administrators" - [[menu.main]] - name = "Move a bundle across an airgap" - identifier = "administrators-airgap" - url = "/administrators/airgap/" - weight = 6 - parent = "tasks-administrators" - [[menu.main]] - name = "Collect Diagnostics" - identifier = "diagnostics" - url = "/administrators/diagnostics/" - weight = 100 - parent = "tasks-administrators" - - # Developers - [[menu.main]] - name = "Developers" - identifier = "tasks-developers" - weight = 20 - parent = "tasks" - [[menu.main]] - name = "Create a mixin" - url = "/mixin-dev-guide/" - identifier = "mixin-dev-guide" - weight = 202 - parent = "tasks-developers" - [[menu.main]] - name = "Distribute your mixin" - url = "/mixin-dev-guide/distribution/" - identifier = "mixin-distribution" - weight = 203 - parent = "tasks-developers" - -# Concepts -[[menu.main]] - name = "Concepts" - identifier = "concepts" - weight = 400 - # Mixins - [[menu.main]] - name = "Mixins" - identifier = "mixins" - weight = 10 - parent = "concepts" - [[menu.main]] - name = "Overview" - identifier = "mixins-overview" - weight = 10 - url = "/mixins/" - parent = "mixins" - [[menu.main]] - name = "Mixin Architecture" - url = "/mixin-dev-guide/architecture/" - identifier = "mixin-architecture" - weight = 100 - parent = "mixins" - - # Plugins - [[menu.main]] - name = "Plugins" - identifier = "concepts-plugins" - weight = 20 - parent = "concepts" - [[menu.main]] - name = "Overview" - identifier = "plugins-overview" - weight = 1 - url = "/plugins" - parent = "concepts-plugins" - [[menu.main]] - name = "Types" - identifier = "plugin-types" - weight = 2 - url = "/plugins/types" - parent = "concepts-plugins" - - # Architecture - [[menu.main]] - name = "Porter Architecture" - identifier = "porter-architecture" - weight = 1 - parent = "concepts" - [[menu.main]] - name = "Overview" - url = "/architecture" - identifier = "architecture" - weight = 401 - parent = "porter-architecture" - [[menu.main]] - name = "Security" - url = "/security-features/" - identifier = "porter-security" - weight = 402 - parent = "porter-architecture" - [[menu.main]] - name = "CNAB" - url = "/cnab/" - identifier = "architecture-cnab" - weight = 412 - parent = "porter-architecture" - [[menu.main]] - name = "Buildtime" - url = "/architecture-buildtime" - identifier = "architecture-buildtime" - weight = 413 - parent = "porter-architecture" - [[menu.main]] - name = "Runtime" - url = "/architecture-runtime" - identifier = "architecture-runtime" - weight = 414 - parent = "porter-architecture" - [[menu.main]] - name = "Invocation Images" - url = "/build-image" - identifier = "build-image" - weight = 415 - parent = "porter-architecture" - [[menu.main]] - name = "Credentials" - url = "/credentials/" - identifier = "credentials" - weight = 416 - parent = "porter-architecture" - [[menu.main]] - name = "Parameters" - url = "/parameters/" - identifier = "parameters" - weight = 417 - parent = "porter-architecture" - - # Operator - [[menu.main]] - name = "Porter Operator" - identifier = "porter-operator" - weight = 5 - parent = "concepts" - [[menu.main]] - name = "Overview" - identifier = "operator-overview" - url = "/operator/" - weight = 1 - parent = "porter-operator" - [[menu.main]] - name = "QuickStart" - identifier = "operator-quickstart" - url = "/operator/quickstart/" - weight = 2 - parent = "porter-operator" - [[menu.main]] - name = "Install" - identifier = "operator-install" - url = "/operator/install/" - weight = 3 - parent = "porter-operator" - [[menu.main]] - name = "File Formats" - identifier = "operator-file-formats" - url = "/operator/file-formats/" - weight = 10 - parent = "porter-operator" - -# Mixins -[[menu.main]] - name = "Mixins" - identifier = "mixins-list" - weight = 400 - url = "/mixins/" - -# Plugins -[[menu.main]] - name = "Plugins" - identifier = "plugins-list" - weight = 401 - url = "/plugins/" - -# Troubleshooting -[[menu.main]] - name = "Troubleshooting" - identifier = "troubleshooting" - url = "/troubleshooting" - weight = 501 - -# Best Practices -[[menu.main]] - name = "Best Practices" - url = "/best-practices/" - identifier = "best-practices" - weight = 600 - -# References -[[menu.main]] - name = "References" - identifier = "references" - weight = 1000 -[[menu.main]] - name = "Porter Commands" - url = "/cli/" - identifier = "cli" - weight = 1 - parent = "references" - [[menu.main]] - name = "Overview" - url = "/cli/porter/#see-also" - identifier = "cli-overview" - weight = 1 - parent = "cli" - [[menu.main]] - name = "Bundles" - url = "/cli/porter_bundles" - identifier = "cli-bundles" - weight = 123 - parent = "cli" - [[menu.main]] - name = "Credentials" - url = "/cli/porter_credentials" - identifier = "cli-credentials" - weight = 124 - parent = "cli" - [[menu.main]] - name = "Parameters" - url = "/cli/porter_parameters" - identifier = "cli-parameters" - weight = 125 - parent = "cli" - [[menu.main]] - name = "Installations" - url = "/cli/porter_installations" - identifier = "cli-installations" - weight = 126 - parent = "cli" - [[menu.main]] - name = "Mixins" - url = "/cli/porter_mixins" - identifier = "cli-mixins" - weight = 127 - parent = "cli" - [[menu.main]] - name = "Plugins" - url = "/cli/porter_plugins" - identifier = "cli-plugins" - weight = 128 - parent = "cli" - - [[menu.main]] - name = "Configuration" - url = "/configuration" - identifier = "configuration" - parent = "references" - [[menu.main]] - name = "File Formats" - url = "/reference/file-formats/" - identifier = "file-formats" - parent = "references" - [[menu.main]] - name = "Porter Lint Messages" - url = "/reference/linter/" - identifier = "lint-codes" - parent = "references" - [[menu.main]] - name = "Compatible Registries" - identifier = "compatible-registries" - url = "/compatible-registries/" - parent = "references" - [[menu.main]] - name = "Docker Images" - url = "/docker-images/" - identifer = "docker-images" - parent = "references" - [[menu.main]] - name = "Porter Go Library" - url = "/library/" - identifer = "library" - parent = "references" - [[menu.main]] - name = "Logos" - url = "/logo/" - identifer = "logo" - parent = "references" - [[menu.main]] - name = "CNAB Spec" - url = "https://deislabs.io/cnab" - identifier = "cnab" - parent = "references" - [[menu.main]] - name = "Project Short Links" - url = "/project/short-links/" - identifier = "short-links" - parent = "references" - [[menu.main]] - name = "Version Strategy" - url = "/project/version-strategy/" - identifier = "version-strategy" - parent = "references" - diff --git a/docs/config.toml b/docs/config.toml deleted file mode 100644 index 1fd989f47..000000000 --- a/docs/config.toml +++ /dev/null @@ -1,536 +0,0 @@ -baseURL = "https://getporter.org/" -languageCode = "en-us" -title = "Porter" -theme = "porter" -canonifyURLs = "false" -relativeURLs = "false" -pluralizeListTitles = "false" -plainIdAnchors = "true" -defaultContentLanguage = "en" - -# Syntax Highlighting -pygmentsUseClasses = true -pygmentsStyle = "friendly" - -[markup] - defaultMarkdownHandler = "goldmark" - - [markup.goldmark.renderer] - unsafe = true - - [markup.tableOfContents] - endLevel = 3 - ordered = false - startLevel = 2 - -# Default Page Parameters -[params] - title = "Porter" - author = "Carolyn Van Slyck" - description = "A Friendly Cloud Installer for Cloud Native Application Bundles" - image = "images/porter-twitter-card.png" - -# -# Docs Navigation -# - -# Introduction -[[menu.main]] - name = "Introduction" - identifier = "introduction" - weight = 1 - url = "#" - [[menu.main]] - name = "What is Porter?" - url = "/introduction/what-is-porter" - identifier = "what-is-porter" - weight = 1 - parent = "introduction" - [[menu.main]] - name = "Concepts and Components" - url = "#" - identifier = "concepts-and-components" - weight = 5 - parent = "introduction" - [[menu.main]] - name = "Bundles" - identifier = "intro-bundles" - url = "/introduction/intro-bundles" - weight = 1 - parent = "concepts-and-components" - [[menu.main]] - name = "Parameters" - identifier = "intro-parameters" - url = "/introduction/intro-parameters" - weight = 5 - parent = "concepts-and-components" - [[menu.main]] - name = "Credentials" - identifier = "intro-credentials" - url = "/introduction/intro-credentials" - weight = 10 - parent = "concepts-and-components" - [[menu.main]] - name = "Configuration" - identifier = "intro-configuration" - url = "/introduction/intro-configuration" - weight = 15 - parent = "concepts-and-components" - [[menu.main]] - name = "Desired State" - identifier = "intro-desired-state" - url = "/introduction/intro-desired-state" - weight = 20 - parent = "concepts-and-components" - [[menu.main]] - name = "Invocation Images" - identifier = "intro-invocation-images" - url = "/introduction/intro-invocation-images" - weight = 25 - parent = "concepts-and-components" - [[menu.main]] - name = "Mixins" - identifier = "intro-mixins" - url = "/introduction/intro-mixins" - weight = 30 - parent = "concepts-and-components" - [[menu.main]] - name = "Plugins" - identifier = "intro-plugins" - url = "/introduction/intro-plugins" - weight = 35 - parent = "concepts-and-components" - [[menu.main]] - name = "Mixins vs Plugins" - identifier = "mixins-vs-plugins" - url = "/introduction/mixins-vs-plugins" - weight = 40 - parent = "concepts-and-components" -# QuickStart -[[menu.main]] - name = "QuickStart" - url = "/quickstart/quickstart" - identifier = "quickstart" - weight = 5 -# Getting Started -[[menu.main]] - name = "Getting Started" - url = "#" - identifier = "getting-started" - weight = 10 - [[menu.main]] - name = "Install Porter" - url = "/getting-started/install-porter" - identifier = "install-porter" - weight = 1 - parent = "getting-started" - [[menu.main]] - name = "Migrate Porter v0 to v1" - url = "/getting-started/migrate-v0-v1" - identifier = "migrate-v0-v1" - weight = 5 - parent = "getting-started" - [[menu.main]] - name = "Create a Bundle" - url = "/getting-started/create-bundle" - identifier = "create-bundle" - weight = 10 - parent = "getting-started" -# Configuration -[[menu.main]] - name = "Configuration" - url = "/configuration/configuration" - identifier = "configuration" - weight = 15 -# Operations -[[menu.main]] - name = "Operations" - url = "#" - identifier = "operations" - weight = 20 - [[menu.main]] - name = "Manage Installations" - url = "/operations/manage-installations" - identifier = "manage-installations" - weight = 1 - parent = "operations" - [[menu.main]] - name = "Examine Bundles" - url = "/operations/examine-bundles" - identifier = "examine-bundles" - weight = 5 - parent = "operations" - [[menu.main]] - name = "View Logs" - url = "/operations/view-logs" - identifier = "view-logs" - weight = 10 - parent = "operations" - [[menu.main]] - name = "Create a Porter Config File" - url = "/operations/create-porter-config" - identifier = "create-porter-config" - weight = 15 - parent = "operations" - [[menu.main]] - name = "Connect to Docker" - url = "/operations/connect-to-docker" - identifier = "connect-to-docker" - weight = 20 - parent = "operations" - [[menu.main]] - name = "Connect to Registry" - url = "/operations/connect-to-registry" - identifier = "connect-to-registry" - weight = 25 - parent = "operations" -# Administration -[[menu.main]] - name = "Administration" - url = "#" - identifier = "administration" - weight = 25 - [[menu.main]] - name = "Inspecting Bundles" - url = "/administration/inspecting-bundles" - identifier = "inspecting-bundles" - weight = 1 - parent = "administration" - [[menu.main]] - name = "Copy Bundles" - url = "/administration/copy-bundles" - identifier = "copy-bundles" - weight = 5 - parent = "administration" - [[menu.main]] - name = "Move Bundles Across Airgapped Environments" - url = "/administration/move-bundles-airgapped" - identifier = "move-bundles-airgapped" - weight = 10 - parent = "administration" - [[menu.main]] - name = "Collect Diagnostics from Porter" - url = "/administration/collect-diag-porter" - identifier = "collect-diag-porter" - weight = 15 - parent = "administration" -# Development -[[menu.main]] - name = "Development" - url = "#" - identifier = "development" - weight = 30 - [[menu.main]] - name = "Authoring a Bundle" - url = "#" - identifier = "author-a-bundle" - parent = "development" - weight = 1 - [[menu.main]] - name = "Create a Bundle" - url = "/development/create-a-bundle" - identifier = "create-a-bundle" - weight = 1 - parent = "author-a-bundle" - [[menu.main]] - name = "Using a Custom Dockerfile" - url = "/development/use-custom-dockerfile" - identifier = "use-custom-dockerfile" - weight = 5 - parent = "author-a-bundle" - [[menu.main]] - name = "Working with Dependencies" - url = "/development/working-with-dependencies" - identifier = "working-with-dependencies" - weight = 10 - parent = "author-a-bundle" - [[menu.main]] - name = "Using Templates" - url = "/development/using-templates" - identifier = "using-templates" - weight = 15 - parent = "author-a-bundle" - [[menu.main]] - name = "Distributing a Bundle" - url = "/development/distribute-bundles" - identifier = "distribute-bundles" - weight = 20 - parent = "author-a-bundle" - [[menu.main]] - name = "Developing a Mixin" - url = "/development/dev-a-mixin" - identifier = "dev-a-mixin" - parent = "development" - weight = 5 - [[menu.main]] - name = "Distributing a Mixin" - url = "/development/dist-a-mixin" - identifier = "dist-a-mixin" - parent = "development" - weight = 10 -# How-To Guides -[[menu.main]] - name = "How-To Guides" - url = "#" - identifier = "how-to-guides" - weight = 35 - [[menu.main]] - name = "Working with Mixins" - url = "/how-to-guides/work-with-mixins" - identifier = "work-with-mixins" - parent = "how-to-guides" - weight = 1 - [[menu.main]] - name = "Working with Plugins" - url = "/how-to-guides/work-with-plugins" - identifier = "work-with-plugins" - parent = "how-to-guides" - weight = 5 -# Porter Operator -[[menu.main]] -name = "Porter Operator" -identifier = "porter-operator" -weight = 40 - [[menu.main]] - name = "Overview" - identifier = "operator-overview" - url = "/operator/" - weight = 1 - parent = "porter-operator" - [[menu.main]] - name = "QuickStart" - identifier = "operator-quickstart" - url = "/operator/quickstart/" - weight = 5 - parent = "porter-operator" - [[menu.main]] - name = "Install" - identifier = "operator-install" - url = "/operator/install/" - weight = 10 - parent = "porter-operator" - [[menu.main]] - name = "File Formats" - identifier = "operator-file-formats" - url = "/operator/file-formats/" - weight = 15 - parent = "porter-operator" -# Troubleshooting -[[menu.main]] - name = "Troubleshooting" - url = "/troubleshooting/troubleshooting" - identifier = "troubleshooting" - weight = 45 -# Best Practices -[[menu.main]] - name = "Best Practices" - url = "#" - identifier = "best-practices" - weight = 50 - [[menu.main]] - name = "When to use Credentials vs Parameters" - url = "/best-practices/credentials-or-parameters" - identifier = "credentials-or-parameters" - parent = "best-practices" - weight = 1 - [[menu.main]] - name = "Best Practices for the exec mixin" - url = "/best-practices/exec-mixin" - identifier = "exec-mixin" - parent = "best-practices" - weight = 5 - [[menu.main]] - name = "Best Practices for Porter in a CI Pipeline" - url = "/best-practices/ci-pipeline" - identifier = "ci-pipeline" - parent = "best-practices" - weight = 10 -# Integrations -[[menu.main]] - name = "Integrations" - url = "#" - identifier = "integrations" - weight = 50 - [[menu.main]] - name = "Connect to AKS Cluster" - url = "/integrations/aks" - identifier = "aks" - parent = "integrations" - weight = 1 - [[menu.main]] - name = "Connect to GKE Cluster" - url = "/integrations/gke" - identifier = "gke" - parent = "integrations" - weight = 5 - [[menu.main]] - name = "Connect to KinD Cluster" - url = "/integrations/kind" - identifier = "kind" - parent = "integrations" - weight = 10 - [[menu.main]] - name = "Connect to Minikube Cluster" - url = "/integrations/minikube" - identifier = "minikube" - parent = "integrations" - weight = 15 -# Learn Porter -[[menu.main]] - name = "Learn Porter" - url = "/learn/learning" - identifier = "learn-porter" - weight = 55 -# Contribute -[[menu.main]] - name = "Contribute" - url = "#" - identifier = "contribute" - weight = 60 - [[menu.main]] - name = "How to Contribute" - url = "/contribute/" - identifier = "contribute-how" - parent = "contribute" - weight = 1 - [[menu.main]] - name = "Contributing Tutorial" - url = "/contribute/tutorial" - identifier = "contribute-tutorial" - parent = "contribute" - weight = 5 - [[menu.main]] - name = "Contributing Guide" - url = "/contribute/guide" - identifier = "contribute-guide" - parent = "contribute" - weight = 10 - [[menu.main]] - name = "Make a Proposal" - url = "/contribute/proposals" - identifier = "contribute-proposals" - parent = "contribute" - weight = 15 -# References -[[menu.main]] - name = "References" - url = "#" - identifier = "references" - weight = 60 - [[menu.main]] - name = "CNAB Specification" - url = "https://cnab.io/" - identifier = "cnab-spec" - weight = 1 - parent = "references" - [[menu.main]] - name = "Porter Commands" - url = "#" - identifier = "cli" - weight = 5 - parent = "references" - [[menu.main]] - name = "Overview" - url = "/references/cli/porter" - identifier = "cli-overview" - weight = 1 - parent = "cli" - [[menu.main]] - name = "Bundles" - url = "/references/cli/bundles" - identifier = "cli-bundles" - weight = 5 - parent = "cli" - [[menu.main]] - name = "Credentials" - url = "/references/cli/credentials" - identifier = "cli-credentials" - weight = 10 - parent = "cli" - [[menu.main]] - name = "Parameters" - url = "/references/cli/parameters" - identifier = "cli-parameters" - weight = 15 - parent = "cli" - [[menu.main]] - name = "Installations" - url = "/references/cli/installations" - identifier = "cli-installations" - weight = 20 - parent = "cli" - [[menu.main]] - name = "Mixins" - url = "/references/cli/mixins" - identifier = "cli-mixins" - weight = 25 - parent = "cli" - [[menu.main]] - name = "Plugins" - url = "/references/cli/plugins" - identifier = "cli-plugins" - weight = 30 - parent = "cli" - [[menu.main]] - name = "Compatible Registries" - url = "/references/compatible-registries" - identifier = "compat-registries" - weight = 10 - parent = "references" - [[menu.main]] - name = "Docker Images" - url = "/references/docker-images/" - identifier = "docker-images" - weight = 15 - parent = "references" - [[menu.main]] - name = "Examples" - url = "/references/examples/" - identifier = "examples" - weight = 20 - parent = "references" - [[menu.main]] - name = "File Formats" - url = "/references/file-formats/" - identifier = "file-formats" - weight = 25 - parent = "references" - [[menu.main]] - name = "Logos" - url = "/references/logo/" - identifier = "logo" - weight = 30 - parent = "references" - [[menu.main]] - name = "Porter Go Library" - url = "/references/library/" - identifier = "library" - weight = 35 - parent = "references" - [[menu.main]] - name = "Porter Lint Messages" - url = "/references/linter" - identifier = "linter" - weight = 40 - parent = "references" - [[menu.main]] - name = "Project Short Links" - url = "/references/short-links" - identifier = "short-links" - weight = 45 - parent = "references" - [[menu.main]] - name = "Version Strategy" - url = "/references/version-strategy" - identifier = "version-strategy" - weight = 50 - parent = "references" -# FAQ -[[menu.main]] - name = "FAQ" - url = "/faq/faq" - identifier = "faq" - weight = 65 - - - diff --git a/docs/content/best-practices/_index.md b/docs/content/best-practices/_index.md deleted file mode 100644 index 6ddc0456d..000000000 --- a/docs/content/best-practices/_index.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: Best Practices ---- - diff --git a/docs/content/docs.md b/docs/content/docs/_index.md similarity index 100% rename from docs/content/docs.md rename to docs/content/docs/_index.md diff --git a/docs/content/docs/administration/_index.md b/docs/content/docs/administration/_index.md new file mode 100644 index 000000000..413c4ad88 --- /dev/null +++ b/docs/content/docs/administration/_index.md @@ -0,0 +1,14 @@ +--- +title: "Administration" +description: "" +weight: 6 +--- + +**Learn about managing Administration** + +{{< cards >}} +{{< card link="inspecting-bundles" title="Inspecting Bundles" >}} +{{< card link="copy-bundles" title="Copy Bundles" >}} +{{< card link="move-bundles-airgapped" title="Move Bundles Across Airgapped Environments" >}} +{{< card link="collect-diag-porter" title="Collect Diagnostics from Porter" >}} +{{< /cards >}} diff --git a/docs/content/administration/collect-diag-porter.md b/docs/content/docs/administration/collect-diag-porter.md similarity index 88% rename from docs/content/administration/collect-diag-porter.md rename to docs/content/docs/administration/collect-diag-porter.md index f50e0b041..8ee7113f9 100644 --- a/docs/content/administration/collect-diag-porter.md +++ b/docs/content/docs/administration/collect-diag-porter.md @@ -1,12 +1,13 @@ --- title: Collect Diagnostics from Porter description: How to configure Porter to generate logs and telemetry data for diagnostic purposes +weight: 4 --- Porter can generate two types of data to assist with diagnostics and troubleshooting: -* [Logs](#logs) -* [Telemetry](#telemetry) +- [Logs](#logs) +- [Telemetry](#telemetry) ## Logs @@ -26,13 +27,13 @@ Below is an example trace from running the porter upgrade command. You can see t ![Screen shot of the Jaeger UI showing that porter upgrade was run](../jaeger-trace-example.png) -If you are running a local grpc OpenTelemetry collector, for example with the [otel-jaeger bundle], you can set the following environment variables to have Porter send telemetry data to it. +If you are running a local grpc OpenTelemetry collector, for example with the [otel-jaeger bundle], you can set the following environment variables to have Porter send telemetry data to it. The environment variables below enable telemetry, and use standard OpenTelemetry environment variables to point to an unsecured grpc OpenTelemetry collector. -* PORTER_TELEMETRY_ENABLED: true -* OTEL_EXPORTER_OTLP_PROTOCOL: grpc -* OTEL_EXPORTER_OTLP_ENDPOINT: 127.0.0.1:4317 -* OTEL_EXPORTER_OTLP_INSECURE: true +- PORTER_TELEMETRY_ENABLED: true +- OTEL_EXPORTER_OTLP_PROTOCOL: grpc +- OTEL_EXPORTER_OTLP_ENDPOINT: 127.0.0.1:4317 +- OTEL_EXPORTER_OTLP_INSECURE: true See [Telemetry Settings][telemetry] for all the supported configuration settings. diff --git a/docs/content/administration/copy-bundles.md b/docs/content/docs/administration/copy-bundles.md similarity index 88% rename from docs/content/administration/copy-bundles.md rename to docs/content/docs/administration/copy-bundles.md index 6a5d7e0ad..6da5fa3f0 100644 --- a/docs/content/administration/copy-bundles.md +++ b/docs/content/docs/administration/copy-bundles.md @@ -1,8 +1,9 @@ --- title: Copy Bundles description: Copy a bundle from one registry to another +weight: 2 aliases: -- /copying-bundles/ + - /copying-bundles/ --- Porter allows you to copy a bundle, and all associated images, from one registry to another. This includes both the invocation images and the images defined in the `images` section of the bundle. For example, consider the following `images` map: @@ -10,15 +11,15 @@ Porter allows you to copy a bundle, and all associated images, from one registry ```yaml images: backend: - description: "A complicated backend service" - imageType: "docker" - repository: "jeremyrickard/backend-svc" - digest: "sha256:decafebad60a4cf73a23517dad677e64edf467107fa7d58fce9c50e6a3e4c914" + description: "A complicated backend service" + imageType: "docker" + repository: "jeremyrickard/backend-svc" + digest: "sha256:decafebad60a4cf73a23517dad677e64edf467107fa7d58fce9c50e6a3e4c914" websvc: - description: "A simple web service" - imageType: "docker" - repository: "jeremyrickard/devops-days-msp" - digest: "sha256:85b1a9b4b60a4cf73a23517dad677e64edf467107fa7d58fce9c50e6a3e4c914" + description: "A simple web service" + imageType: "docker" + repository: "jeremyrickard/devops-days-msp" + digest: "sha256:85b1a9b4b60a4cf73a23517dad677e64edf467107fa7d58fce9c50e6a3e4c914" ``` When this bundle is copied, the invocation image, along with the `backend` and `websvc` images will be copied to the new repository. If the bundle author has properly used image [wiring](/wiring/#wiring-images), the new image references will be available within the bundle at run-time. diff --git a/docs/content/administration/inspecting-bundles.md b/docs/content/docs/administration/inspecting-bundles.md similarity index 98% rename from docs/content/administration/inspecting-bundles.md rename to docs/content/docs/administration/inspecting-bundles.md index d43bf1e28..f3901bc9f 100644 --- a/docs/content/administration/inspecting-bundles.md +++ b/docs/content/docs/administration/inspecting-bundles.md @@ -1,9 +1,10 @@ --- title: Inspecting Bundles description: Inspect a bundle to see the images that will be used. +weight: 1 aliases: -- /inspecting-bundles/ -- /inspect-bundle/ + - /inspecting-bundles/ + - /inspect-bundle/ --- You've found a bundle that you'd like to use, but you'd like to what images will be used after you install the bundle. You can use the `porter inspect` command to see this information. If you'd like to see additional information, like parameters, credentials, and outputs, see the [explain](/operations/examine-bundles/) command. diff --git a/docs/content/administration/jaeger-trace-example.png b/docs/content/docs/administration/jaeger-trace-example.png similarity index 100% rename from docs/content/administration/jaeger-trace-example.png rename to docs/content/docs/administration/jaeger-trace-example.png diff --git a/docs/content/administration/move-bundles-airgapped.md b/docs/content/docs/administration/move-bundles-airgapped.md similarity index 99% rename from docs/content/administration/move-bundles-airgapped.md rename to docs/content/docs/administration/move-bundles-airgapped.md index 9d9992a0d..99254aaf0 100644 --- a/docs/content/administration/move-bundles-airgapped.md +++ b/docs/content/docs/administration/move-bundles-airgapped.md @@ -1,6 +1,7 @@ --- title: Move a bundle across an airgap description: How to deploy in an airgapped or disconnected environment +weight: 3 --- An airgapped environment is an environment that doesn't have full access to common networks such as the internet and as such some actions such as pulling Docker images from Docker Hub, or downloading a build artifact, may not be possible. diff --git a/docs/content/administration/porter-airgap-publish.png b/docs/content/docs/administration/porter-airgap-publish.png similarity index 100% rename from docs/content/administration/porter-airgap-publish.png rename to docs/content/docs/administration/porter-airgap-publish.png diff --git a/docs/content/docs/best-practices/_index.md b/docs/content/docs/best-practices/_index.md new file mode 100644 index 000000000..68b9ac01f --- /dev/null +++ b/docs/content/docs/best-practices/_index.md @@ -0,0 +1,12 @@ +--- +title: Best Practices +weight: 11 +--- + +**Follow Best Practices** + +{{< cards >}} +{{< card link="credentials-or-parameters" title="When to use credentials vs parameters" >}} +{{< card link="exec-mixin" title="Best Practices for the mixin." >}} +{{< card link="ci-pipeline" title="Best practices for Porter in a CI pipeline" >}} +{{< /cards >}} diff --git a/docs/content/best-practices/ci-pipeline.md b/docs/content/docs/best-practices/ci-pipeline.md similarity index 74% rename from docs/content/best-practices/ci-pipeline.md rename to docs/content/docs/best-practices/ci-pipeline.md index c2c939890..b9c9888ce 100644 --- a/docs/content/best-practices/ci-pipeline.md +++ b/docs/content/docs/best-practices/ci-pipeline.md @@ -1,97 +1,118 @@ --- title: Best practices for Porter in a CI Pipeline description: How to effectively use a GitHub workflow to create a CI pipeline using Porter. +weight: 3 --- -To properly test your bundle in a CI pipeline, you can utilize a GitHub workflow. -You can have the workflow run when you create a pull request, when you merge into -main, or both. We will go through the best practices of a CI pipeline for your +To properly test your bundle in a CI pipeline, you can utilize a GitHub workflow. +You can have the workflow run when you create a pull request, when you merge into +main, or both. We will go through the best practices of a CI pipeline for your bundle and show you how to set up the GitHub workflow. [Here](https://github.com/getporter/pipeline-demo/blob/main/.github/workflows/publish.yaml) is the full working example workflow explained in this article. ## Parts of the Workflow -We will go through each of the following components of the workflow. +We will go through each of the following components of the workflow. -* [Check out code](#check-out-code) -* [Set up Porter](#set-up-porter) -* [Login to DockerHub to publish the bundle](#login-to-dockerhub) -* [Install mixins](#install-mixins) -* [Run Porter commands](#run-porter-commands) +- [Check out code](#check-out-code) +- [Set up Porter](#set-up-porter) +- [Login to DockerHub to publish the bundle](#login-to-dockerhub) +- [Install mixins](#install-mixins) +- [Run Porter commands](#run-porter-commands) ### Check out code -In order to test your bundle in a workflow, you need to checkout your repo. We -used the GitHub action [Checkout](https://github.com/actions/checkout) to do this. + +In order to test your bundle in a workflow, you need to checkout your repo. We +used the GitHub action [Checkout](https://github.com/actions/checkout) to do this. By default, the action checks out the single commit that triggered the workflow. You -can customize what you want to happen in the checkout action based on their documentation, -but if you do not need to customize, the code below in a step in your workflow is all that +can customize what you want to happen in the checkout action based on their documentation, +but if you do not need to customize, the code below in a step in your workflow is all that is needed. -````yaml + +```yaml - uses: actions/checkout@v1 -```` +``` ### Set up Porter + After checking out the code in the repository, you need to install porter in the workflow -so that you can run porter commands. The [Porter GitHub Action](https://github.com/getporter/gh-action) takes care of installing Porter for you. Adding this +so that you can run porter commands. The [Porter GitHub Action](https://github.com/getporter/gh-action) takes care of installing Porter for you. Adding this action to your workflow will install Porter for you. For example: -````yaml + +```yaml - name: Setup Porter uses: getporter/gh-action@v0.1.1 with: porter_version: v0.27.2 -```` -The porter_version should be the version of Porter you want installed. You can check [our releases](https://github.com/getporter/porter/releases) for the list of recent versions of Porter. When not specified, porter_version defaults to latest version of Porter. +``` + +The porter_version should be the version of Porter you want installed. You can check [our releases](https://github.com/getporter/porter/releases) for the list of recent versions of Porter. When not specified, porter_version defaults to latest version of Porter. ### Login to DockerHub + Next, you will want to login to Docker Hub so that you can publish your bundle to a Docker Hub registry. If you do not wish to publish your bundle to a Docker Hub registry, you can configure another registry in this step instead. In order to do this, you can use the [docker-login](https://github.com/Azure/docker-login) action to do it. Below is an example of how it is used: -````yaml + +```yaml - uses: azure/docker-login@v1 name: Docker Login with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} -```` +``` + You will need to set your docker username and password as [secrets](https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets) in the repository you are setting up the workflow in. ### Install mixins + Next, you should install any mixins your bundle will use so that it can be tested properly. You can add a line as a run command to install your mixin as shown below: -````yaml + +```yaml run: porter mixins install az -```` +``` + You can also specify the version of the mixin by adding the version flag. For example: -````yaml + +```yaml run: porter mixins install az --version v0.4.2 -```` +``` + Take a look at the [documentation](/mixins) to see all available mixins and how to know what command to run to install them. The documentation provides install commands for each mixin. The command `porter mixin search` lists all the mixins created by the community. Depending on if the URL is an atom feed or a github url you can install the mixin using + ```yaml porter mixins install NAME --feed-url ATOM_URL ``` + or + ```yaml porter mixins install NAME --url GITHUB_URL ``` ### Run Porter commands -The final part of the workflow is running porter commands. The commands we suggest running are porter install, porter upgrade, porter uninstall, and porter publish. Porter install will install your bundle and give an error if something is wrong. This will be useful as part of your pipeline in testing your bundle because you can go fix the problem right away instead of finding it later when users try to run your bundle. Porter upgrade and porter uninstall will execute the code and also give errors if there are problems. If all these commands run successfully, you can run porter publish to publish your working bundle image to a registry. In this example, we publish to Docker Hub, but porter publish can publish to any registry. + +The final part of the workflow is running porter commands. The commands we suggest running are porter install, porter upgrade, porter uninstall, and porter publish. Porter install will install your bundle and give an error if something is wrong. This will be useful as part of your pipeline in testing your bundle because you can go fix the problem right away instead of finding it later when users try to run your bundle. Porter upgrade and porter uninstall will execute the code and also give errors if there are problems. If all these commands run successfully, you can run porter publish to publish your working bundle image to a registry. In this example, we publish to Docker Hub, but porter publish can publish to any registry. ## Set up the Workflow -Now that we know the parts that are needed in a workflow, we can learn how to set one up. Here are the steps we will go through to set up the workflow: -* [Make yaml files](#make-yaml-files) -* [Use credential files](#use-credential-files) +Now that we know the parts that are needed in a workflow, we can learn how to set one up. Here are the steps we will go through to set up the workflow: + +- [Make yaml files](#make-yaml-files) +- [Use credential files](#use-credential-files) ### Make yaml files -The way you set up your yaml files depends on who will be contributing to your repository and how they will be contributing. GitHub actions and workflows do not run automatically on pull requests from forks. -So, if you are the only one working on a project and no one else can make pull requests (you have a private repository) or no one will be contributing from a fork, you can set up one yaml file to run when a pull request opens and one yaml file to run when a commit is merged. You can have the one that runs on a pull request run your bundle to test it, and you can have the second yaml file publish the bundle to Docker Hub. +The way you set up your yaml files depends on who will be contributing to your repository and how they will be contributing. GitHub actions and workflows do not run automatically on pull requests from forks. -If you are not the only one contributing to the repository and other contributors will be making pull requests from forks, the yaml file setup is slightly different. Since the GitHub action won't be triggered from a fork, you will only need one yaml file that runs when a pull request is merged. You can test the bundle and publish in the same yaml file. +So, if you are the only one working on a project and no one else can make pull requests (you have a private repository) or no one will be contributing from a fork, you can set up one yaml file to run when a pull request opens and one yaml file to run when a commit is merged. You can have the one that runs on a pull request run your bundle to test it, and you can have the second yaml file publish the bundle to Docker Hub. +If you are not the only one contributing to the repository and other contributors will be making pull requests from forks, the yaml file setup is slightly different. Since the GitHub action won't be triggered from a fork, you will only need one yaml file that runs when a pull request is merged. You can test the bundle and publish in the same yaml file. ### Use credential files + If you were using credentials in your bundle, you will need to set up a credential file in your repository to use with your workflow. For example, if you run `porter credentials create mybun.json`, a JSON file named mybun.json is created. The resulting [credential set template file](/reference/file-formats/#credential-set) (which does not contain any sensitive credentials) is located in the current directory. You can run `porter credentials apply mybun.json` to apply the changes. If the specified credential set already exists, the changes will override the existing credential set, otherwise the apply command will create a new credential set. Then, to install your bundle with the newly created credential set, you would run the following: + ```yaml porter install -c ``` @@ -103,15 +124,15 @@ Now, we will show example code for a workflow and explain what the code does. ```yaml name: CI -# On controls when the action will run. This triggers the workflow on push event for the main branch. -# Can change push to pull_request to run when a PR is made. -# You can also change the branch name from main to the name of the branch you want the workflow to run on. +# On controls when the action will run. This triggers the workflow on push event for the main branch. +# Can change push to pull_request to run when a PR is made. +# You can also change the branch name from main to the name of the branch you want the workflow to run on. on: push: - branches: [ main ] + branches: [main] -# Set up environment variables needed for the bundle. -# If these are sensitive, they should be set as secrets in the repository. +# Set up environment variables needed for the bundle. +# If these are sensitive, they should be set as secrets in the repository. # To do this, go to settings -> secrets -> new secret. env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} @@ -120,38 +141,38 @@ env: # A workflow can be made of many jobs, but this example puts all the steps under one job. jobs: # Publish is the name of this job. - publish: - # Specify the type of machine you want the job to run on. We chose ubuntu-latest. + publish: + # Specify the type of machine you want the job to run on. We chose ubuntu-latest. runs-on: ubuntu-latest - - steps: - # Check out code - - uses: actions/checkout@v1 - # Use Porter GH action to set up Porter. - # You can specify the version of Porter that you want installed by adding the lines for with and porter_version as explained above. - - name: Setup Porter - uses: getporter/gh-action@v0.1.1 - # Install docker mixin needed for this bundle. - # Add lines to install any of the mixins your bundle needs to be able to run. - - name: Install Docker mixin - run: porter mixins install docker - # Run install - - name: Porter install - run: porter install -c ./docker-example.json --allow-docker-host-access - # Run upgrade - - name: Porter upgrade - run: porter upgrade -c ./docker-example.json --allow-docker-host-access - # Run uninstall - - name: Porter uninstall - run: porter uninstall -c ./docker-example.json --allow-docker-host-access - # Login to Docker Hub to publish the bundle - - uses: azure/docker-login@v1 - name: Docker Login - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - # Run publish. - # If any of the porter commands above fail, the workflow will stop, so your bundle will only be published if it works properly. - - name: Porter Publish - run: porter publish + + steps: + # Check out code + - uses: actions/checkout@v1 + # Use Porter GH action to set up Porter. + # You can specify the version of Porter that you want installed by adding the lines for with and porter_version as explained above. + - name: Setup Porter + uses: getporter/gh-action@v0.1.1 + # Install docker mixin needed for this bundle. + # Add lines to install any of the mixins your bundle needs to be able to run. + - name: Install Docker mixin + run: porter mixins install docker + # Run install + - name: Porter install + run: porter install -c ./docker-example.json --allow-docker-host-access + # Run upgrade + - name: Porter upgrade + run: porter upgrade -c ./docker-example.json --allow-docker-host-access + # Run uninstall + - name: Porter uninstall + run: porter uninstall -c ./docker-example.json --allow-docker-host-access + # Login to Docker Hub to publish the bundle + - uses: azure/docker-login@v1 + name: Docker Login + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + # Run publish. + # If any of the porter commands above fail, the workflow will stop, so your bundle will only be published if it works properly. + - name: Porter Publish + run: porter publish ``` diff --git a/docs/content/best-practices/credentials-or-parameters.md b/docs/content/docs/best-practices/credentials-or-parameters.md similarity index 100% rename from docs/content/best-practices/credentials-or-parameters.md rename to docs/content/docs/best-practices/credentials-or-parameters.md diff --git a/docs/content/best-practices/exec-mixin.md b/docs/content/docs/best-practices/exec-mixin.md similarity index 57% rename from docs/content/best-practices/exec-mixin.md rename to docs/content/docs/best-practices/exec-mixin.md index 8ecaeb537..8b9da1dd9 100644 --- a/docs/content/best-practices/exec-mixin.md +++ b/docs/content/docs/best-practices/exec-mixin.md @@ -1,7 +1,7 @@ --- title: Best practices for the exec mixin description: How to effectively use the exec mixin and avoid common mistakes. -weight: 10 +weight: 2 --- The [exec mixin](/mixins/exec/) is intended as the mixin of last resort. 😅 We @@ -13,18 +13,18 @@ Here are some best practices to consider when you find yourself using the exec mixin to make sure that you aren't inadvertently making your life harder than it needs to be: -* [Use purpose-built mixins](#use-purpose-built-mixins) -* [Use script files](#use-scripts) -* [Quoting, Escaping, Bash and YAML](#quoting-escaping-bash-and-yaml) +- [Use purpose-built mixins](#use-purpose-built-mixins) +- [Use script files](#use-scripts) +- [Quoting, Escaping, Bash and YAML](#quoting-escaping-bash-and-yaml) ## Use purpose-built mixins When there is a mixin for the task you are doing, use that mixin instead. Those mixins have advantages over using the exec mixin: -* Automatic generation of the Dockerfile. -* Detection of edge cases and error conditions at runtime. -* Declarative syntax that provides enhanced metadata when people inspect your +- Automatic generation of the Dockerfile. +- Detection of edge cases and error conditions at runtime. +- Declarative syntax that provides enhanced metadata when people inspect your bundles. A bundle using exec can do anything, but specific mixins can be vetted and trusted. @@ -44,10 +44,10 @@ shenanigans. A few reasons why we are being annoying about this: -* Scripts are easier to test, lint and validate. -* Properly escaping code in YAML is just awful. If you open a bug about it, we +- Scripts are easier to test, lint and validate. +- Properly escaping code in YAML is just awful. If you open a bug about it, we won't help and instead will tell you to put it in a script. #SorryNotSorry -* It is much easier to read and understand intent. +- It is much easier to read and understand intent. Here's an example of what we think works well, especially when you need to call bash one-liners occasionally in your porter.yaml. @@ -69,11 +69,11 @@ generate-users() { ```yaml install: -- exec: - description: "Create a file" - command: ./cluster.sh - arguments: - - generate-users + - exec: + description: "Create a file" + command: ./cluster.sh + arguments: + - generate-users ``` [exec-outputs]: /examples/src/exec-outputs/ @@ -83,58 +83,60 @@ install: If you got past the previous section and are still ignoring my good advice 😬, here are a couple thoughts on where you probably went wrong: -* `bash -c` accepts a quoted string, e.g. `bash -c "your command here"`. When you +- `bash -c` accepts a quoted string, e.g. `bash -c "your command here"`. When you embed that in YAML, you have to embed your quotes in more quotes. Are we having fun yet? - **Broken Example** - - This is everyone's first try embedding bash in porter.yaml. Alas it doesn't work... - ```yaml - exec: - description: quotes are for suckers - command: bash - flags: - c: echo "Hello World" - ``` - - **Working Example** - - Why are there two sets of quotes? The outer set is just YAML syntax, the inner quotes are what is captured and used as the command, `bash -c "echo Hello World"`. - ```yaml - exec: - description: such quotes, much wow - command: bash - flags: - c: '"echo Hello World"' - ``` - -* YAML strings have different modes for when they will escape special + **Broken Example** + + This is everyone's first try embedding bash in porter.yaml. Alas it doesn't work... + + ```yaml + exec: + description: quotes are for suckers + command: bash + flags: + c: echo "Hello World" + ``` + + **Working Example** + + Why are there two sets of quotes? The outer set is just YAML syntax, the inner quotes are what is captured and used as the command, `bash -c "echo Hello World"`. + + ```yaml + exec: + description: such quotes, much wow + command: bash + flags: + c: '"echo Hello World"' + ``` + +- YAML strings have different modes for when they will escape special characters, such as `\n`. When you aren't having luck, try switching the [string deliminator](https://yaml-multiline.info/) you are using. Crying then going back to a script file works great too. 😉 - **Broken Example** - - It's easy to forget that single quotes in YAML prevent escapes `\` from working... - - ```yaml - exec: - description: quotes are for suckers - command: bash - flags: - c: 'printf "Hello World \t\n"' - ``` - - **Working Example** - - This ugly thing is something you never want to try to craft yourself OR debug. Just please use a script. - ```yaml - exec: - description: never put this into your yaml - command: bash - flags: - c: |+ - 'printf "Hello World \t - "' - ``` + **Broken Example** + + It's easy to forget that single quotes in YAML prevent escapes `\` from working... + + ```yaml + exec: + description: quotes are for suckers + command: bash + flags: + c: 'printf "Hello World \t\n"' + ``` + + **Working Example** + + This ugly thing is something you never want to try to craft yourself OR debug. Just please use a script. + + ```yaml + exec: + description: never put this into your yaml + command: bash + flags: + c: |+ + 'printf "Hello World \t"' + ``` diff --git a/docs/content/best-practices/go-application.md b/docs/content/docs/best-practices/go-application.md similarity index 100% rename from docs/content/best-practices/go-application.md rename to docs/content/docs/best-practices/go-application.md diff --git a/docs/content/docs/bundle/_index.md b/docs/content/docs/bundle/_index.md new file mode 100644 index 000000000..b5f79f051 --- /dev/null +++ b/docs/content/docs/bundle/_index.md @@ -0,0 +1,12 @@ +--- +title: "Bundle" +date: 2023-09-17T12:46:50+05:30 +description: "" +--- + +**Learn about Bundle in Porter** + +{{< cards >}} +{{< card link="custom-dockerfile" title="Custom Dockerfile" >}} +{{< card link="manifest" title="Manifest" >}} +{{< /cards >}} diff --git a/docs/content/bundle/custom-dockerfile.md b/docs/content/docs/bundle/custom-dockerfile.md similarity index 100% rename from docs/content/bundle/custom-dockerfile.md rename to docs/content/docs/bundle/custom-dockerfile.md diff --git a/docs/content/bundle/manifest/_index.md b/docs/content/docs/bundle/manifest/_index.md similarity index 100% rename from docs/content/bundle/manifest/_index.md rename to docs/content/docs/bundle/manifest/_index.md diff --git a/docs/content/bundle/manifest/file-format/1.0.0-alpha.1.md b/docs/content/docs/bundle/manifest/file-format/1.0.0-alpha.1.md similarity index 100% rename from docs/content/bundle/manifest/file-format/1.0.0-alpha.1.md rename to docs/content/docs/bundle/manifest/file-format/1.0.0-alpha.1.md diff --git a/docs/content/bundle/manifest/file-format/1.0.0.md b/docs/content/docs/bundle/manifest/file-format/1.0.0.md similarity index 100% rename from docs/content/bundle/manifest/file-format/1.0.0.md rename to docs/content/docs/bundle/manifest/file-format/1.0.0.md diff --git a/docs/content/bundle/manifest/file-format/1.0.1.md b/docs/content/docs/bundle/manifest/file-format/1.0.1.md similarity index 100% rename from docs/content/bundle/manifest/file-format/1.0.1.md rename to docs/content/docs/bundle/manifest/file-format/1.0.1.md diff --git a/docs/content/bundle/manifest/file-format/1.1.0.md b/docs/content/docs/bundle/manifest/file-format/1.1.0.md similarity index 100% rename from docs/content/bundle/manifest/file-format/1.1.0.md rename to docs/content/docs/bundle/manifest/file-format/1.1.0.md diff --git a/docs/content/bundle/manifest/file-format/_index.md b/docs/content/docs/bundle/manifest/file-format/_index.md similarity index 100% rename from docs/content/bundle/manifest/file-format/_index.md rename to docs/content/docs/bundle/manifest/file-format/_index.md diff --git a/docs/content/configuration/configuration.md b/docs/content/docs/configuration/configuration.md similarity index 89% rename from docs/content/configuration/configuration.md rename to docs/content/docs/configuration/configuration.md index 2891a9be5..e72511694 100644 --- a/docs/content/configuration/configuration.md +++ b/docs/content/docs/configuration/configuration.md @@ -1,27 +1,28 @@ --- title: Configuration description: Controlling Porter with its config file, environment variables and flags +weight: 4 --- Porter has a hierarchical configuration system that loads configuration values in the following precedence order: -* Flags (highest) -* Environment Variables -* Config File (lowest) +- Flags (highest) +- Environment Variables +- Config File (lowest) You may set a default value for a configuration value in the config file, override it with an environment variable, and then override both for a particular command with a flag. -* [Flags](#flags) -* [Environment Variables](#environment-variables) -* [Config File](#config-file) -* [Experimental Feature Flags](#experimental-feature-flags) - * [Build Drivers](#build-drivers) - * [Structured Logs](#structured-logs) - * [Dependencies v2](#dependencies-v2) -* [Common Configuration Settings](#common-configuration-settings) - * [Set Current Namespace](#namespace) - * [Output Formatting](#output) -* [Allow Docker Host Access](#allow-docker-host-access) +- [Flags](#flags) +- [Environment Variables](#environment-variables) +- [Config File](#config-file) +- [Experimental Feature Flags](#experimental-feature-flags) + - [Build Drivers](#build-drivers) + - [Structured Logs](#structured-logs) + - [Dependencies v2](#dependencies-v2) +- [Common Configuration Settings](#common-configuration-settings) + - [Set Current Namespace](#namespace) + - [Output Formatting](#output) +- [Allow Docker Host Access](#allow-docker-host-access) ## Flags @@ -72,7 +73,7 @@ output: "json" allow-docker-host-access: true # Enable experimental features -experimental: +experimental: - "flagA" - "flagB" @@ -109,35 +110,35 @@ default-secrets-plugin: "kubernetes.secret" # Defines storage accounts storage: - # The storage account name + # The storage account name - name: "devdb" - + # The plugin used to access the storage account plugin: "mongodb" - + # Additional configuration for storage account # These values vary depending on the plugin used config: # The mongodb connection string url: "${secret.porter-db-connection-string}" - + # Timeout for database queries timeout: 300 # Define secret store accounts secrets: - # The secret store name + # The secret store name - name: "mysecrets" - + # The plugin used to access the secret store account plugin: "azure.keyvault" - + # Additional configuration for secret store account # These values vary depending on the plugin used config: # The name of the secret vault vault: "topsecret" - + # The subscription where the vault is defined subscription-id: "${env.AZURE_SUBSCRIPTION_ID}" @@ -146,7 +147,7 @@ logs: # Log command output to a file log-to-file: true - # When structured is true, the logs printed to the console + # When structured is true, the logs printed to the console # include a timestamp and log level structured: false @@ -174,7 +175,7 @@ telemetry: # The compression type used when communicating with the collector endpoint compression: "gzip" - + # The timeout enforced when communicating with the collector endpoint timeout: "3s" @@ -196,11 +197,11 @@ Porter sometimes uses feature flags to release new functionality for users to evaluate, without affecting the stability of Porter. You can enable an experimental feature by: -* Using the experimental global flag `--experimental flagA,flagB`. +- Using the experimental global flag `--experimental flagA,flagB`. The value is a comma-separated list of strings. -* Setting the PORTER_EXPERIMENTAL environment variable like so `PORTER_EXPERIMENTAL=flagA,flagB`. +- Setting the PORTER_EXPERIMENTAL environment variable like so `PORTER_EXPERIMENTAL=flagA,flagB`. The value is a comma-separated list of strings. -* Setting the experimental field in the configuration file like so `experimental: ["flagA","flagB"]`. +- Setting the experimental field in the configuration file like so `experimental: ["flagA","flagB"]`. The value is an array of strings. ### Build Drivers @@ -211,9 +212,9 @@ Build drivers are enabled by default and the only available driver is buildkit. The docker driver uses the local Docker host to build a bundle image, and run it in a container. To use a remote Docker host, set the following environment variables: -* DOCKER_HOST (required) -* DOCKER_TLS_VERIFY (optional) -* DOCKER_CERTS_PATH (optional) +- DOCKER_HOST (required) +- DOCKER_TLS_VERIFY (optional) +- DOCKER_CERTS_PATH (optional) ### Structured Logs @@ -227,9 +228,9 @@ Porter can be configured to [write a logfile for each command](/administration/c The following log settings are available: | Setting | Environment Variable | Description | -|------------------|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ---------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | logs.log-to-file | PORTER_LOGS_LOG_TO_FILE | Specifies if a logfile should be written for each command. | -| logs.structured | PORTER_LOGS_STRUCTURED | Specifies if the logs printed to the console should include a timestamp and log level | +| logs.structured | PORTER_LOGS_STRUCTURED | Specifies if the logs printed to the console should include a timestamp and log level | | logs.level | PORTER_LOGS_LEVEL | Filters the logs to the specified level and higher. The log level controls both the logs written to file, and the logs output to the console when porter is run. Allowed values are: debug, info, warn, error. | #### Telemetry @@ -239,7 +240,7 @@ Porter supports the OpenTelemetry specification for exporting trace data. Porter automatically uses the standard [OpenTelemetry environment variables][otel] to configure the trace exporter. | Setting | Environment Variable | Description | -|-----------------------|-----------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------| +| --------------------- | --------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | | telemetry.enabled | PORTER_TELEMETRY_ENABLED | Enables telemetry collection. Defaults to false. | | telemetry.protocol | OTEL_EXPORTER_OTLP_PROTOCOL
PORTER_TELEMETRY_PROTOCOL | The protocol used to connect with the telemetry server. Either grpc or http/protobuf. Defaults to http/protobuf. | | telemetry.endpoint | OTEL_EXPORTER_OTLP_ENDPOINT
PORTER_TELEMETRY_ENDPOINT | The endpoint where traces should be sent. Defaults 127.0.0.1:4317. | @@ -279,6 +280,7 @@ When it is completed, it is used to activate the features from [PEP003 - Advance Some configuration settings are applicable to many of Porter's commands and to save time you may want to set these values in the configuration file or with environment variables. ### Namespace + \--namespace specifies the current namespace. It is set with the PORTER_NAMESPACE environment variable. @@ -311,21 +313,20 @@ You should trust any bundles that you execute with this setting enabled as it gi ⚠️️ This configuration setting is only available when you are in an environment that provides access to the local docker daemon. Therefore, it does not work with the Azure Cloud Shell driver. - ### Schema Check + The schema-check configuration file setting controls Porter's behavior when the schemaVersion of a resource does not match [Porter's supported version](/reference/file-formats/#supported-versions). By default, Porter requires that a resource's schemaVersion field matches Porter's allowed version(s). In some cases, such as when migrating to a new version of Porter, it may be helpful to use a less strict version comparison. Allowed values are: -* exact - Default behavior. Require that the schemaVersion on the resource exactly match Porter's supported version(s). +- exact - Default behavior. Require that the schemaVersion on the resource exactly match Porter's supported version(s). If it doesn't match, the command will fail. -* minor - Require that the MAJOR.MINOR portion of the schemaVersion on the resource match Porter's supported version. +- minor - Require that the MAJOR.MINOR portion of the schemaVersion on the resource match Porter's supported version. For example, a bundle with a schemaVersion of 1.2.3 would work even though the supported version is 1.2.5. -* major - Require that the MAJOR portion of the schemaVersion on the resource match Porter's supported version. +- major - Require that the MAJOR portion of the schemaVersion on the resource match Porter's supported version. For example, a bundle with a schemaVersion of 1.2.3 would work even though the supported version is 1.3.0. -* none - Only print a warning when the schemaVersion does not exactly match the supported version. +- none - Only print a warning when the schemaVersion does not exactly match the supported version. Porter can only guarantee correct parsing of the file when the schemaVersion exactly matches. Depending on what has changed between schema versions, you can make a judgement call on if those changes are relevant to your situation. - diff --git a/docs/content/docs/contribute/_index.md b/docs/content/docs/contribute/_index.md new file mode 100644 index 000000000..558900759 --- /dev/null +++ b/docs/content/docs/contribute/_index.md @@ -0,0 +1,14 @@ +--- +title: "Contribute" +description: "" +weight: 14 +--- + +**So you want to be a contributor at Porter? :P We would love your contributions.** + +{{< cards >}} +{{< card link="guide" title="Contributing Guide" >}} +{{< card link="tutorial" title="Contributing Tutorial" >}} +{{< card link="proposal" title="Propose a change to Porter" >}} +{{< card link="work-with-us" title="Work on Porter with us" >}} +{{< /cards >}} diff --git a/docs/content/contribute/guide.md b/docs/content/docs/contribute/guide.md similarity index 69% rename from docs/content/contribute/guide.md rename to docs/content/docs/contribute/guide.md index 72cc28d56..3d7ffaa7e 100644 --- a/docs/content/contribute/guide.md +++ b/docs/content/docs/contribute/guide.md @@ -1,9 +1,8 @@ --- title: Contributing Guide -layout: sources -type: sources +weight: 1 aliases: -- /contributing/ + - /contributing/ --- {{% readfile file="/sources/CONTRIBUTING.md" markdown="true" %}} diff --git a/docs/content/contribute/proposals.md b/docs/content/docs/contribute/proposals.md similarity index 98% rename from docs/content/contribute/proposals.md rename to docs/content/docs/contribute/proposals.md index 32314b1ae..2a5260f0f 100644 --- a/docs/content/contribute/proposals.md +++ b/docs/content/docs/contribute/proposals.md @@ -1,6 +1,7 @@ --- title: "Propose a change to Porter" description: "How to propose a change to Porter using our Porter Enhancement Proposal (PEP) process" +weight: 3 --- Sound like fun? 👍 Join us!

diff --git a/docs/content/docs/development/_index.md b/docs/content/docs/development/_index.md new file mode 100644 index 000000000..23886bad4 --- /dev/null +++ b/docs/content/docs/development/_index.md @@ -0,0 +1,13 @@ +--- +title: "Development" +description: "" +weight: 7 +--- + +**Learn about using Porter for Development** + +{{< cards >}} +{{< card link="authoring-a-bundle" title="Authoring a Bundle" >}} +{{< card link="dev-a-mixin" title="Developing a Mixin" >}} +{{< card link="dist-a-mixin" title="Distributing a Mixin" >}} +{{< /cards >}} diff --git a/docs/content/docs/development/authoring-a-bundle/_index.md b/docs/content/docs/development/authoring-a-bundle/_index.md new file mode 100644 index 000000000..f76ac1420 --- /dev/null +++ b/docs/content/docs/development/authoring-a-bundle/_index.md @@ -0,0 +1,15 @@ +--- +title: "Authoring a Bundle" +description: "" +weight: 1 +--- + +**Learn about Authoring a Bundle** + +{{< cards >}} +{{< card link="create-a-bundle" title="Create a Bundle" >}} +{{< card link="use-custom-dockerfile" title="Using a Custom Dockerfile" >}} +{{< card link="working-with-dependencies" title="Working with Dependencies" >}} +{{< card link="using-templates" title="Using Templates" >}} +{{< card link="distribute-bundles" title="Distributing a Bundle" >}} +{{< /cards >}} diff --git a/docs/content/development/create-a-bundle.md b/docs/content/docs/development/authoring-a-bundle/create-a-bundle.md similarity index 88% rename from docs/content/development/create-a-bundle.md rename to docs/content/docs/development/authoring-a-bundle/create-a-bundle.md index 936a85e0d..ee96e6596 100644 --- a/docs/content/development/create-a-bundle.md +++ b/docs/content/docs/development/authoring-a-bundle/create-a-bundle.md @@ -1,6 +1,7 @@ --- title: Create a Bundle description: Create a bundle with Porter +weight: 1 --- Let's walk through how to create and customize your very own Porter bundle. @@ -9,17 +10,18 @@ When writing a bundle, it is best if you have already figured out the commands n Learning Porter while also figuring out how to deploy a particular application can be difficult. ## Requirements + You must [install Porter], and optionally can use the [Porter Visual Studio Code] extension for autocomplete while editing the porter.yaml file. -* [Create a Bundle](#create-a-bundle) -* [Verify the Bundle](#verify-the-bundle) -* [Install Tools](#install-tools) - * [Use Mixins](#use-mixins) - * [Use a Custom Dockerfile](#use-a-custom-dockerfile) -* [Customize the Install Action](#customize-the-install-action) -* [Test Your Bundle](#test-your-bundle) -* [Publish Your Bundle](#publish-your-bundle) -* [Use the Published Bundle](#use-the-published-bundle) +- [Create a Bundle](#create-a-bundle) +- [Verify the Bundle](#verify-the-bundle) +- [Install Tools](#install-tools) + - [Use Mixins](#use-mixins) + - [Use a Custom Dockerfile](#use-a-custom-dockerfile) +- [Customize the Install Action](#customize-the-install-action) +- [Test Your Bundle](#test-your-bundle) +- [Publish Your Bundle](#publish-your-bundle) +- [Use the Published Bundle](#use-the-published-bundle) ## Create a Bundle @@ -33,7 +35,7 @@ It does not allocate any resources and is safe to run and uninstall when you are Your bundle is ready to build and run! Let's do a quick check before making any further changes to verify that everything is working. -1. Use the [porter build] command to build the bundle. +1. Use the [porter build] command to build the bundle. This prepares the bundle so that it can be distributed over a registry by building the bundle image and packaging it in a bundle. 2. Use the [porter install] command to run the bundle's install action defined in the porter.yaml file. @@ -65,15 +67,16 @@ To use a mixin in your bundle: 1. Install the mixin on your computer. Follow the mixin's instructions to install it using the [porter mixin install] command. - + Mixins published by the Porter project can be installed with `porter mixin install NAME`. If the mixin is published by a third party, you will need to specify the \--url or \--feed-url flags so Porter knows where to find the mixin. -3. Add the name of the mixin to the **mixins** section in porter.yaml. + +2. Add the name of the mixin to the **mixins** section in porter.yaml. For example, to install the [terraform mixin], you would add an array entry with the value "terraform": ```yaml mixins: - - exec - - terraform + - exec + - terraform ``` ### Use a Custom Dockerfile @@ -97,14 +100,15 @@ The script prints out "Hello world". Add an array entry, called a **step**, to the **install** section in porter.yaml and use a mixin to run a command when the bundle is installed. The syntax for each mixin is different so reference the documentation for your particular mixin to know what to specify. The general form for any mixin is as follows: + ```yaml install: -- exec: - description: Optional description of the step - # ... mixin specific values -- terraform: - description: Optional description of the step - # ... mixin specific values + - exec: + description: Optional description of the step + # ... mixin specific values + - terraform: + description: Optional description of the step + # ... mixin specific values ``` If you are not using custom mixins, put your bundle's logic in an executable, such as bash script or compiled binary, and place it in the bundle directory (next to your porter.yaml file). @@ -127,7 +131,7 @@ The \--force flag is only safe to use in development, and it allows you to incre ## Publish Your Bundle When you are ready to share your bundle with others, the next step is to publish it to a registry. -Most registries work with Porter, if you run into trouble check our list of [compatible registries]. +Most registries work with Porter, if you run into trouble check our list of [compatible registries]. The [porter publish] command by default pushes the bundle to the registry defined in the porter.yaml file. @@ -135,14 +139,16 @@ The [porter publish] command by default pushes the bundle to the registry define For example, if you have an account on Docker Hub, change the registry value from localhost:5000 to your Docker Hub username. 2. Edit the name field and change it to your preferred name for the bundle, like "mybundle". 3. Use the docker login command to first authenticate to the destination registry: + ``` docker login REGISTRY ``` - For example, if the registry defined in the porter.yaml is ghcr.io/myuser, then run `docker login ghcr.io` to authenticate. + For example, if the registry defined in the porter.yaml is ghcr.io/myuser, then run `docker login ghcr.io` to authenticate. If you are publishing to Docker Hub, the registry field in the bundle would just be your Docker Hub username, and you would authenticate to the registry with just `docker login` without any additional arguments. This works because the Docker client by default uses Docker Hub (docker.io) when a registry is not fully specified. + 4. Now, publish the bundle by running `porter publish`. ## Use the Published Bundle @@ -150,7 +156,7 @@ The [porter publish] command by default pushes the bundle to the registry define Once your bundle is published, people can use it by setting the \--reference flag on relevant porter commands to the bundle's reference. The name, registry, and version fields are used to generate the bundle's default publish location when porter publish is run. By default, the bundle is published to REGISTRY/BUNDLE_NAME:vBUNDLE_VERSION. -The destination may be changed by specifying \--registry, \--reference, or \--tag during [publish](/cli/porter_publish/). +The destination may be changed by specifying \--registry, \--reference, or \--tag during [publish](/cli/porter_publish/). The publish command prints out the full bundle reference when it completes. For example, the following porter.yaml file would result in the bundle being published to ghcr.io/getporter/porter-hello:v0.3.0. @@ -173,11 +179,11 @@ $ porter explain ghcr.io/getporter/porter-hello:v0.2.0 Now that you know how to create a bundle, here are some more detailed topics on how to customize and distribute it: -* [Control how your bundle's image is built with a custom Dockerfile](/bundle/custom-dockerfile/) -* [Customize your Porter manifest, porter.yaml][manifest] -* [Porter Manifest File Format](/bundle/manifest/file-format/) -* [Best Practices for the exec Mixin](/best-practices/exec-mixin/) -* [Understand how bundles are distributed](/distribute-bundles/) +- [Control how your bundle's image is built with a custom Dockerfile](/bundle/custom-dockerfile/) +- [Customize your Porter manifest, porter.yaml][manifest] +- [Porter Manifest File Format](/bundle/manifest/file-format/) +- [Best Practices for the exec Mixin](/best-practices/exec-mixin/) +- [Understand how bundles are distributed](/distribute-bundles/) [install Porter]: /install/ [Porter Visual Studio Code]: https://marketplace.visualstudio.com/items?itemName=getporter.porter-vscode diff --git a/docs/content/development/distribute-bundles.md b/docs/content/docs/development/authoring-a-bundle/distribute-bundles.md similarity index 89% rename from docs/content/development/distribute-bundles.md rename to docs/content/docs/development/authoring-a-bundle/distribute-bundles.md index f0da4dde7..c9690afd0 100644 --- a/docs/content/development/distribute-bundles.md +++ b/docs/content/docs/development/authoring-a-bundle/distribute-bundles.md @@ -1,17 +1,18 @@ --- title: Distribute Bundles description: Share and distribute your bundles with others +weight: 5 aliases: -- /distributing-bundles/ + - /distributing-bundles/ --- Once you have built a bundle with Porter, the next step is to share the bundle and invocation image so others can use it. Porter uses OCI (Docker) registries to share both CNAB bundle manifest and invocation images. -* [Preparing For Bundle Publishing](#preparing-for-bundle-publishing) -* [Bundle Publish](#bundle-publish) -* [Publish Archived Bundles](#publish-archived-bundles) -* [Image References After Publishing](#image-references-after-publishing) - +- [Preparing For Bundle Publishing](#preparing-for-bundle-publishing) +- [Bundle Publish](#bundle-publish) +- [Publish Archived Bundles](#publish-archived-bundles) +- [Image References After Publishing](#image-references-after-publishing) + ## Preparing For Bundle Publishing Before you can publish your bundle, you must first run a `porter build` command. This will create the invocation image so it can be pushed to an OCI (Docker) registry along with your CNAB bundle manifest. It's a good idea to work with your bundle and test it locally before you publish it to a registry. @@ -29,7 +30,7 @@ registry: getporter This YAML snippet indicates that the bundle will be built and tagged as `getporter/kubernetes:v0.2.0`. This full bundle reference is constructed from the provided `registry`, `name` and `version` fields. We recommend using [semantic versioning](https://semver.org/) for the bundle version. -The generated invocation image name will be auto-derived from the same combination of `registry`, `name` and `version`. Using the example above, an invocation image with the name of `getporter/kubernetes:porter-HASH` will be built. +The generated invocation image name will be auto-derived from the same combination of `registry`, `name` and `version`. Using the example above, an invocation image with the name of `getporter/kubernetes:porter-HASH` will be built. Once you have provided values for the fields above, run the `porter build` command one last time to verify that your invocation image can be successfully built. @@ -83,7 +84,7 @@ executing porter install configuration from /cnab/app/porter.yaml Install Hello World App ``` -The latter example ensures immutability for your bundle. After you've initially run `porter publish`, your tagged reference, such as `getporter/kubernetes:v0.2.0` can be updated with subsequent `porter publish` commands. However, the digested version `getporter/kubernetes@sha256:10a41e6d5af73f2cebe4bf6d368bdf5ccc39e641117051d30f88cf0c69e4e456` will not change. If you'd like to publish different version of the bundle, you will need to update minimally the `tag` attribute and optionally the `invocationImage` attribute, before running `porter publish` again. (Porter will detect the manifest change and automatically run a new bundle and invocation image build prior to publishing.) +The latter example ensures immutability for your bundle. After you've initially run `porter publish`, your tagged reference, such as `getporter/kubernetes:v0.2.0` can be updated with subsequent `porter publish` commands. However, the digested version `getporter/kubernetes@sha256:10a41e6d5af73f2cebe4bf6d368bdf5ccc39e641117051d30f88cf0c69e4e456` will not change. If you'd like to publish different version of the bundle, you will need to update minimally the `tag` attribute and optionally the `invocationImage` attribute, before running `porter publish` again. (Porter will detect the manifest change and automatically run a new bundle and invocation image build prior to publishing.) ## Publish Archived Bundles @@ -100,10 +101,10 @@ published **inside** the bundle repository. Bundles should not hard-code image references and instead should use the [images] section and templating so that they are referencing the published location of the image. -* REGISTRY/ORG/BUNDLE:TAG - * REGISTRY/ORG/BUNDLE@**INVOCATION_IMAGE_DIGEST** - * REGISTRY/ORG/BUNDLE@**REFERENCED_IMAGE_1_DIGEST** - * REGISTRY/ORG/BUNDLE@**REFERENCED_IMAGE_2_DIGEST** +- REGISTRY/ORG/BUNDLE:TAG + - REGISTRY/ORG/BUNDLE@**INVOCATION_IMAGE_DIGEST** + - REGISTRY/ORG/BUNDLE@**REFERENCED_IMAGE_1_DIGEST** + - REGISTRY/ORG/BUNDLE@**REFERENCED_IMAGE_2_DIGEST** NOTE: Digest refers to the [repository digest][digest] (not the image id). @@ -158,8 +159,8 @@ process and they are not used by the final bundle. Using the example above, the following repositories are created and can be ignored: -* `jeremyrickard/porter-do-bundle/porter-do` -* `jeremyrickard/porter-do-bundle/spring-music` +- `jeremyrickard/porter-do-bundle/porter-do` +- `jeremyrickard/porter-do-bundle/spring-music` [digest]: https://github.com/opencontainers/image-spec/blob/master/descriptor.md#digests [image-map]: /author-bundles/#images diff --git a/docs/content/development/use-custom-dockerfile.md b/docs/content/docs/development/authoring-a-bundle/use-custom-dockerfile.md similarity index 88% rename from docs/content/development/use-custom-dockerfile.md rename to docs/content/docs/development/authoring-a-bundle/use-custom-dockerfile.md index d57c974f1..0de2e8ddf 100644 --- a/docs/content/development/use-custom-dockerfile.md +++ b/docs/content/docs/development/authoring-a-bundle/use-custom-dockerfile.md @@ -1,4 +1,5 @@ --- title: Using a Custom Dockerfile description: Using a Custom Dockerfile +weight: 2 --- diff --git a/docs/content/development/using-templates.md b/docs/content/docs/development/authoring-a-bundle/using-templates.md similarity index 75% rename from docs/content/development/using-templates.md rename to docs/content/docs/development/authoring-a-bundle/using-templates.md index bd6a250ed..d11f468bd 100644 --- a/docs/content/development/using-templates.md +++ b/docs/content/docs/development/authoring-a-bundle/using-templates.md @@ -1,8 +1,9 @@ --- title: Templates description: How to use templates inside porter.yaml +weight: 4 aliases: -- /wiring/ + - /wiring/ --- Porter supports templates in the action steps of porter.yaml and can perform variable substitution. @@ -14,23 +15,23 @@ Starting in Porter v1.0.0-beta.2, templating does not require surrounding quotes Variables are grouped by the source of its data: -* [installation](#installation) -* [bundle](#bundle) - * [bundle.custom](#custom-metadata) - * [bundle.parameters](#parameters) - * [bundle.credentials](#credentials) - * [bundle.outputs](#outputs) - * [bundle.dependencies](#dependencies) - * [bundle.images](#images) -* [env](#env) +- [installation](#installation) +- [bundle](#bundle) + - [bundle.custom](#custom-metadata) + - [bundle.parameters](#parameters) + - [bundle.credentials](#credentials) + - [bundle.outputs](#outputs) + - [bundle.dependencies](#dependencies) + - [bundle.images](#images) +- [env](#env) ### installation The installation variable contains data related to the execution of the bundle. -| Variable | Description | -|----------|--------------| -| installation.name | The name of the installation. | +| Variable | Description | +| ---------------------- | ---------------------------------- | +| installation.name | The name of the installation. | | installation.namespace | The namespace of the installation. | In the example below, we install a helm chart and set the release name to the installation name of the bundle: @@ -58,19 +59,20 @@ install: The bundle variable contains data that was declared in the bundle definition (porter.yaml). -| Variable | Description | -|----------|--------------| -| bundle.name | The bundle name | -| bundle.description | The bundle description | -| bundle.version | The bundle version defined in porter.yaml | -| bundle.installerImage | The name of the bundle installer image | +| Variable | Description | +| --------------------- | ----------------------------------------- | +| bundle.name | The bundle name | +| bundle.description | The bundle description | +| bundle.version | The bundle version defined in porter.yaml | +| bundle.installerImage | The name of the bundle installer image | #### custom metadata The bundle.custom variable contains data that was declared in the bundle's [custom metadata] section. Nested data can be accessed via `bundle.custom.KEY.SUBKEY` variable. -Here is an example porter.yaml that defines custom metadata and uses it in an action. +Here is an example porter.yaml that defines custom metadata and uses it in an action. + ```yaml custom: chart: @@ -93,6 +95,7 @@ install: The bundle.parameters variable contains the values of parameters passed into the bundle. Here is an example porter.yaml that defines a parameter and uses it in an action: + ```yaml parameters: - name: namespace @@ -113,6 +116,7 @@ install: The bundle.credentials variable contains the values of credentials passed into the bundle. Here is an example porter.yaml that defines a credential and uses it in an action: + ```yaml parameters: - name: database-password @@ -135,6 +139,7 @@ install: The bundle.outputs variable contains the values of outputs generated by the bundle. Here is an example porter.yaml that generates an output during a step and uses it in the next step: + ```yaml install: - exec: @@ -159,15 +164,16 @@ install: The bundle.dependencies variable contains metadata for the bundle's dependencies. -| Variable | Description | -|----------|--------------| -| bundle.dependencies.NAME.name | The bundle name of the dependency. | -| bundle.dependencies.NAME.description | The bundle description of the dependency. | -| bundle.dependencies.NAME.version | The bundle version of the dependency. This is a semver v2 value, and will not have a leading v prefix. | +| Variable | Description | +| ------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| bundle.dependencies.NAME.name | The bundle name of the dependency. | +| bundle.dependencies.NAME.description | The bundle description of the dependency. | +| bundle.dependencies.NAME.version | The bundle version of the dependency. This is a semver v2 value, and will not have a leading v prefix. | Outputs are also available, and the format for the dependency outputs variable is `bundle.dependencies.NAME.outputs.OUTPUT`. Here is an example porter.yaml that has a dependency and uses an output generated by that dependency in an action: + ```yaml dependencies: requires: @@ -197,10 +203,10 @@ In this example, the Helm chart must have already exposed the image as a variabl ```yaml images: mysql: - description: "A mysql server" - imageType: "docker" - repository: "getporter/mysql" - digest: "sha256:85b1a9b4b60a4cf73a23517dad677e64edf467107fa7d58fce9c50e6a3e4c914" + description: "A mysql server" + imageType: "docker" + repository: "getporter/mysql" + digest: "sha256:85b1a9b4b60a4cf73a23517dad677e64edf467107fa7d58fce9c50e6a3e4c914" install: - helm3: @@ -222,7 +228,7 @@ repeatable bundle execution. ### env -The env variable contains environment variables. +The env variable contains environment variables. The environment variable name is case sensitive. ```yaml @@ -234,5 +240,4 @@ install: - ${ env.CNAB_REVISION } ``` - [mustache]: https://mustache.github.io/ diff --git a/docs/content/development/working-with-dependencies.md b/docs/content/docs/development/authoring-a-bundle/working-with-dependencies.md similarity index 88% rename from docs/content/development/working-with-dependencies.md rename to docs/content/docs/development/authoring-a-bundle/working-with-dependencies.md index e81fc7f0c..f4f6f96e5 100644 --- a/docs/content/development/working-with-dependencies.md +++ b/docs/content/docs/development/authoring-a-bundle/working-with-dependencies.md @@ -1,6 +1,7 @@ --- title: Dependencies description: Dependency Management with Porter +weight: 3 --- In the Porter manifest you can [define a dependency](#define-a-dependency) on another @@ -17,7 +18,7 @@ Here is a [full example][example] of a Porter manifest that uses dependencies. In the manifest, add entries for each dependency of your bundle. The `name` field takes a short name for the dependent bundle that you will use to reference the dependent bundle elsewhere in the bundle. For example you can reference the dependent bundle's -outputs via `${ bundle.dependencies.NAME.outputs }`. The `reference` field takes the bundle reference of the dependency. +outputs via `${ bundle.dependencies.NAME.outputs }`. The `reference` field takes the bundle reference of the dependency. Both `name` and `reference` are required fields. ```yaml @@ -30,7 +31,7 @@ dependencies: ## Ordering of dependencies -If more than one dependency is declared, they will be installed in the order they are listed. For example, if both the `mysql` and +If more than one dependency is declared, they will be installed in the order they are listed. For example, if both the `mysql` and `nginx` bundles are required, but the `mysql` bundle should be installed first, you would list them as such: ```yaml @@ -78,9 +79,9 @@ For example, to override the default parameter `database_name` when installing t $ porter install --reference getporter/mysql:v0.1.3 --param mysql#database_name=mywordpress ``` -* `DEPENDENCY`: The dependency name used in the `dependencies` section of the porter manifest. From the example above, the name is "mysql". -* `PARAMETER`: The name of the parameter. -* `VALUE`: The parameter value. +- `DEPENDENCY`: The dependency name used in the `dependencies` section of the porter manifest. From the example above, the name is "mysql". +- `PARAMETER`: The name of the parameter. +- `VALUE`: The parameter value. ### Parameter Set @@ -109,22 +110,22 @@ A parameter for a dependency can be set in a few places, here is the order of pr 1. Parameters set directly on the command-line via `--param` 1. Parameters set in a [Parameter Set][parameter-set] file via `--parameter-set` 1. Parameters set using a dependency default, for example - ```yaml - dependencies: - requires: + ```yaml + dependencies: + requires: - name: mysql bundle: reference: getporter/mysql:v0.1.3 parameters: database_name: wordpress - ``` + ``` 1. Parameter defaults defined in a bundle, for example - ```yaml - parameters: - - name: database_name - type: string - default: mydb - ``` + ```yaml + parameters: + - name: database_name + type: string + default: mydb + ``` ## Dependency Registry Authentication @@ -132,6 +133,7 @@ Porter support multiple registries. If you are pulling different dependencies fr just make sure that you login into each registry before executing your bundle. For example: + ```shell echo $(DOCKER_REGISTRY_TOKEN) | docker login $(DOCKER_REGISTRY_URL) --username $(DOCKER_REGISTRY_USERNAME) --password-stdin echo $(PRIVATE_REGISTRY_TOKEN) | docker login $(PRIVATE_REGISTRY_URL) --username $(PRIVATE_REGISTRY_USERNAME) --password-stdin @@ -140,8 +142,8 @@ For example: ## Dependency Graph -At this time Porter only supports direct dependencies. Dependencies of dependencies, a.k.a. -transitive dependencies, are ignored. See [Design: Dependency Graph Resolution](https://github.com/getporter/porter/issues/69) +At this time Porter only supports direct dependencies. Dependencies of dependencies, a.k.a. +transitive dependencies, are ignored. See [Design: Dependency Graph Resolution](https://github.com/getporter/porter/issues/69) for our backlog item tracking this feature. We do plan to support it! [example]: /src/build/testdata/bundles/wordpress/porter.yaml diff --git a/docs/content/development/dev-a-mixin.md b/docs/content/docs/development/dev-a-mixin.md similarity index 97% rename from docs/content/development/dev-a-mixin.md rename to docs/content/docs/development/dev-a-mixin.md index 6410d35d2..2d877fa48 100644 --- a/docs/content/development/dev-a-mixin.md +++ b/docs/content/docs/development/dev-a-mixin.md @@ -1,6 +1,7 @@ --- title: Developing Mixins description: Creating and Extending Mixins for Porter +weight: 2 --- You can develop a mixin utilizing our template repository as a start at @@ -10,5 +11,4 @@ or by using `porter mixin create` command as exemplified below: porter mixin create MyMixinName --author "My Name" --username mygithubusername [--dir path/to/mymixin] ``` - ## See Also diff --git a/docs/content/development/dist-a-mixin.md b/docs/content/docs/development/dist-a-mixin.md similarity index 85% rename from docs/content/development/dist-a-mixin.md rename to docs/content/docs/development/dist-a-mixin.md index 546efe22e..e616e353b 100644 --- a/docs/content/development/dist-a-mixin.md +++ b/docs/content/docs/development/dist-a-mixin.md @@ -1,6 +1,7 @@ --- -title: Distribute a Mixin +title: Distributing Mixins description: How to distribute a mixin for others to install and use +weight: 3 --- Once you have created a mixin, it is time to share it with others so that @@ -8,18 +9,18 @@ they can try it out and use it too. Porter has built-in commands for managing mixins. All you need to do is get your mixin ready, and publish them to a file server: -* [Prepare](#prepare) -* [Publish](#publish) -* [Install](#install) -* [Search](#search) +- [Prepare](#prepare) +- [Publish](#publish) +- [Install](#install) +- [Search](#search) ## Prepare Your mixin should be compatible with the following architectures and operating systems: -* GOOS: windows, linux, darwin -* GOARCH: amd64 +- GOOS: windows, linux, darwin +- GOARCH: amd64 If you are creating your mixin in Go, you may find the [magefile](https://github.com/getporter/skeletor/blob/main/magefile.go) that we use for our Porter mixins helpful as a starting point. @@ -28,8 +29,8 @@ for our Porter mixins helpful as a starting point. Porter expects mixins to be published with a specific naming convention: -* client: `VERSION/MIXIN-GOOS-GOARCH[FILE-EXT]` -* runtime: `VERSION/MIXIN-linux-amd64` +- client: `VERSION/MIXIN-GOOS-GOARCH[FILE-EXT]` +- runtime: `VERSION/MIXIN-linux-amd64` \* Note: Porter uses `GOOS` and `GOARCH` which are terms from the Go programming language, because it is written in Go. You must use the same terms, for example @@ -58,8 +59,8 @@ When porter installs a mixin, it builds a url from the command-line arguments: porter mixin install NAME --version VERSION --url URL ``` -* client url: `URL/VERSION/NAME-GOOS-GOARCH[FILE_EXT]` -* runtime url: `URL/VERSION/NAME-linux-amd64` +- client url: `URL/VERSION/NAME-GOOS-GOARCH[FILE_EXT]` +- runtime url: `URL/VERSION/NAME-linux-amd64` When `--version` is not specified, it is defaulted to `latest` which should represent the most recent version of the mixin. diff --git a/docs/content/faq/faq.md b/docs/content/docs/faq/_index.md similarity index 63% rename from docs/content/faq/faq.md rename to docs/content/docs/faq/_index.md index 2269144ec..0c27a4818 100644 --- a/docs/content/faq/faq.md +++ b/docs/content/docs/faq/_index.md @@ -1,15 +1,16 @@ --- title: FAQ description: Frequently Asked Questions +weight: 16 --- -* [What is CNAB?](#what-is-cnab) -* [Does Porter fully implement the CNAB specification?](#does-porter-fully-implement-the-cnab-specification) -* [Can I use Porter bundles with other CNAB tools?](#can-i-use-porter-bundles-with-other-cnab-tools) -* [Does Porter solve something that Ansible, Terraform, etc does not?](#does-porter-solve-something-that-ansible-terraform-etc-does-not) -* [If an upgrade fails, can I roll back?](#if-an-upgrade-fails-can-i-roll-back) -* [How do I run commands that aren't in the default invocation image?](#how-do-i-run-commands-that-aren-t-in-the-default-invocation-image) -* [Are mixins just wrappers around OS or executable calls?](#are-mixins-just-wrappers-around-os-or-executable-calls) +- [What is CNAB?](#what-is-cnab) +- [Does Porter fully implement the CNAB specification?](#does-porter-fully-implement-the-cnab-specification) +- [Can I use Porter bundles with other CNAB tools?](#can-i-use-porter-bundles-with-other-cnab-tools) +- [Does Porter solve something that Ansible, Terraform, etc does not?](#does-porter-solve-something-that-ansible-terraform-etc-does-not) +- [If an upgrade fails, can I roll back?](#if-an-upgrade-fails-can-i-roll-back) +- [How do I run commands that aren't in the default invocation image?](#how-do-i-run-commands-that-aren-t-in-the-default-invocation-image) +- [Are mixins just wrappers around OS or executable calls?](#are-mixins-just-wrappers-around-os-or-executable-calls) ## What is CNAB? @@ -24,9 +25,9 @@ For example, let's say that you had a Wordpress bundle, which deploys on to a Kubernetes cluster and relies on a MySQL as a Service database. The bundle could have everything you need inside of it: -* The Wordpress chart -* The installation bash script -* Client binaries for helm and azure +- The Wordpress chart +- The installation bash script +- Client binaries for helm and azure The installer would take care of: @@ -117,33 +118,36 @@ No, Porter does not have a dedicated registry for hosting bundles. You can use a ## What do mixins do? Mixins provide the following features: - * Install a tool into the bundle. It handles editing your dockerfile for you. - * Mixins can adapt imperative command line tools to work with desired state. - - For example, the uninstall command should be re-runnable. I should be able to re-run porter uninstall if there was an error and it should pick up where it left off. Most command line tools are imperative though, and don’t handle errors in a way that works well with that (e.g. returning a failure when you attempt to delete something that is already deleted). - * Mixins provide rich metadata that end-users can use to both understand what a bundle will do, and companies can limit what bundles they allow based on both the mixins present and what functionality of the mi xin is used. - * Mixins help collect outputs from steps, and reuse those as arguments to subsequent steps. - For example, the helm mixin can create a database and generate an output with the connection string. The terraform mixin can then use that connection string as an input variable, or even expose that output to the end-user when the bundle finishes running. - + +- Install a tool into the bundle. It handles editing your dockerfile for you. +- Mixins can adapt imperative command line tools to work with desired state. + + For example, the uninstall command should be re-runnable. I should be able to re-run porter uninstall if there was an error and it should pick up where it left off. Most command line tools are imperative though, and don’t handle errors in a way that works well with that (e.g. returning a failure when you attempt to delete something that is already deleted). + +- Mixins provide rich metadata that end-users can use to both understand what a bundle will do, and companies can limit what bundles they allow based on both the mixins present and what functionality of the mi xin is used. +- Mixins help collect outputs from steps, and reuse those as arguments to subsequent steps. + For example, the helm mixin can create a database and generate an output with the connection string. The terraform mixin can then use that connection string as an input variable, or even expose that output to the end-user when the bundle finishes running. + You never have to use mixins, other than the built-in exec. You could write a custom dockerfile and then call a bash script. But most people find that working with mixins is easier. ## What is the difference between Porter and existing DevOps tools? Porter is never a replacement for an existing tool. Think of it as doing extra nice things on top of what those great tools already do! - * Packages everything you use to deploy in a single artifact that can be easily distributed over registries and across air gapped networks. - * Bundles can be signed and the signature verified before installing the bundle to improve supply chain security. - * Makes for more reliable deployments because it has the exact version of a CLI that goes with the deployment. End users don’t need to install the right versions of tools locally (sometimes different apps require different versions). - * Provides metadata about a deployment that you can use in many ways. End users can run porter explain to quickly see how to customize an installation with parameters, what credentials are needed by the bundle. No need to read separate installation docs to figure out how to deploy an app. - * Reduces the operational knowledge required to manage an application. Often a deployment uses multiple tools, for example terraform, AND helm, AND kubectl and they are glued together with bash scripts. When those are put inside a bundle, it simplifies how much the end user needs to know. It’s always a single command, porter upgrade . In many cases the end user doesn’t even need to know what tools are used, or how to use those tools. - * Makes it easier for a team to manage an application securely. Porter remembers the actions performed previously on the bundle, the parameter values used previously, the current version of the bundle, etc. - * You can put together the necessary parameters and credentials so your teammates don’t need to each hunt down the proper values themselves, or even worse copy sensitive credentials into local environment variables on every machine that does the deployment. Secrets stay in a secret store and aren’t copied around. -Those are just some of the reasons why working with bundles with the tools embedded inside is helpful vs using the same tools standalone. + +- Packages everything you use to deploy in a single artifact that can be easily distributed over registries and across air gapped networks. +- Bundles can be signed and the signature verified before installing the bundle to improve supply chain security. +- Makes for more reliable deployments because it has the exact version of a CLI that goes with the deployment. End users don’t need to install the right versions of tools locally (sometimes different apps require different versions). +- Provides metadata about a deployment that you can use in many ways. End users can run porter explain to quickly see how to customize an installation with parameters, what credentials are needed by the bundle. No need to read separate installation docs to figure out how to deploy an app. +- Reduces the operational knowledge required to manage an application. Often a deployment uses multiple tools, for example terraform, AND helm, AND kubectl and they are glued together with bash scripts. When those are put inside a bundle, it simplifies how much the end user needs to know. It’s always a single command, porter upgrade . In many cases the end user doesn’t even need to know what tools are used, or how to use those tools. +- Makes it easier for a team to manage an application securely. Porter remembers the actions performed previously on the bundle, the parameter values used previously, the current version of the bundle, etc. +- You can put together the necessary parameters and credentials so your teammates don’t need to each hunt down the proper values themselves, or even worse copy sensitive credentials into local environment variables on every machine that does the deployment. Secrets stay in a secret store and aren’t copied around. + Those are just some of the reasons why working with bundles with the tools embedded inside is helpful vs using the same tools standalone. ## Do you have suggestions for bundles that I could make? - * Create a bundle for a side project. It handles setting up any infrastructure, such as creating a VM or other cloud resources, and it then also deploys your app. Maybe pushing your serverless function as one example, or running a helm chart. - This is useful because often we figure out how to do these things while working on the project and then after not having time for the project most people forget how to deploy their project. That makes it super hard to start back up on the project! So using bundles helps make the best use of your limited side project time -* Create a bundle for an open source project. Pick a project that you like, maybe wordpress, mysql or discourse, and then write a bundle that will deploy the software to a cloud provider. This is a fun one because other people can use your bundle! +- Create a bundle for a side project. It handles setting up any infrastructure, such as creating a VM or other cloud resources, and it then also deploys your app. Maybe pushing your serverless function as one example, or running a helm chart. + This is useful because often we figure out how to do these things while working on the project and then after not having time for the project most people forget how to deploy their project. That makes it super hard to start back up on the project! So using bundles helps make the best use of your limited side project time +- Create a bundle for an open source project. Pick a project that you like, maybe wordpress, mysql or discourse, and then write a bundle that will deploy the software to a cloud provider. This is a fun one because other people can use your bundle! [CNAB Core Spec]: https://github.com/cnabio/cnab-spec/blob/main/100-CNAB.md [CNAB Dependencies Spec]: https://github.com/cnabio/cnab-spec/blob/main/500-CNAB-dependencies.md diff --git a/docs/content/docs/getting-started/_index.md b/docs/content/docs/getting-started/_index.md new file mode 100644 index 000000000..81a7a6719 --- /dev/null +++ b/docs/content/docs/getting-started/_index.md @@ -0,0 +1,13 @@ +--- +title: "Getting Started" +description: "" +weight: 3 +--- + +**Get Started with Porter** + +{{< cards >}} +{{< card link="create-bundle" title="Create a Bundle" >}} +{{< card link="migrate-v0-v1" title="Migrate from v0 to v1" >}} +{{< card link="install-porter" title="Install Porter" >}} +{{< /cards >}} diff --git a/docs/content/getting-started/create-bundle.md b/docs/content/docs/getting-started/create-bundle.md similarity index 88% rename from docs/content/getting-started/create-bundle.md rename to docs/content/docs/getting-started/create-bundle.md index bc70fbec3..aa219839c 100644 --- a/docs/content/getting-started/create-bundle.md +++ b/docs/content/docs/getting-started/create-bundle.md @@ -1,6 +1,7 @@ --- title: Create a Bundle description: Create a bundle with Porter +weight: 3 --- Let's walk through how to create and customize your very own Porter bundle. @@ -9,17 +10,18 @@ When writing a bundle, it is best if you have already figured out the commands n Learning Porter while also figuring out how to deploy a particular application can be difficult. ## Requirements + You must [install Porter], and optionally can use the [Porter Visual Studio Code] extension for autocomplete while editing the porter.yaml file. -* [Create a Bundle](#create-a-bundle) -* [Verify the Bundle](#verify-the-bundle) -* [Install Tools](#install-tools) - * [Use Mixins](#use-mixins) - * [Use a Custom Dockerfile](#use-a-custom-dockerfile) -* [Customize the Install Action](#customize-the-install-action) -* [Test Your Bundle](#test-your-bundle) -* [Publish Your Bundle](#publish-your-bundle) -* [Use the Published Bundle](#use-the-published-bundle) +- [Create a Bundle](#create-a-bundle) +- [Verify the Bundle](#verify-the-bundle) +- [Install Tools](#install-tools) + - [Use Mixins](#use-mixins) + - [Use a Custom Dockerfile](#use-a-custom-dockerfile) +- [Customize the Install Action](#customize-the-install-action) +- [Test Your Bundle](#test-your-bundle) +- [Publish Your Bundle](#publish-your-bundle) +- [Use the Published Bundle](#use-the-published-bundle) ## Create a Bundle @@ -33,7 +35,7 @@ It does not allocate any resources and is safe to run and uninstall when you are Your bundle is ready to build and run! Let's do a quick check before making any further changes to verify that everything is working. -1. Use the [porter build] command to build the bundle. +1. Use the [porter build] command to build the bundle. This prepares the bundle so that it can be distributed over a registry by building the bundle image and packaging it in a bundle. 2. Use the [porter install] command to run the bundle's install action defined in the porter.yaml file. @@ -65,15 +67,16 @@ To use a mixin in your bundle: 1. Install the mixin on your computer. Follow the mixin's instructions to install it using the [porter mixin install] command. - + Mixins published by the Porter project can be installed with `porter mixin install NAME`. If the mixin is published by a third party, you will need to specify the \--url or \--feed-url flags so Porter knows where to find the mixin. -3. Add the name of the mixin to the **mixins** section in porter.yaml. + +2. Add the name of the mixin to the **mixins** section in porter.yaml. For example, to install the [terraform mixin], you would add an array entry with the value "terraform": ```yaml mixins: - - exec - - terraform + - exec + - terraform ``` ### Use a Custom Dockerfile @@ -97,14 +100,15 @@ The script prints out "Hello world". Add an array entry, called a **step**, to the **install** section in porter.yaml and use a mixin to run a command when the bundle is installed. The syntax for each mixin is different so reference the documentation for your particular mixin to know what to specify. The general form for any mixin is as follows: + ```yaml install: -- exec: - description: Optional description of the step - # ... mixin specific values -- terraform: - description: Optional description of the step - # ... mixin specific values + - exec: + description: Optional description of the step + # ... mixin specific values + - terraform: + description: Optional description of the step + # ... mixin specific values ``` If you are not using custom mixins, put your bundle's logic in an executable, such as bash script or compiled binary, and place it in the bundle directory (next to your porter.yaml file). @@ -127,7 +131,7 @@ The \--force flag is only safe to use in development, and it allows you to incre ## Publish Your Bundle When you are ready to share your bundle with others, the next step is to publish it to a registry. -Most registries work with Porter, if you run into trouble check our list of [compatible registries]. +Most registries work with Porter, if you run into trouble check our list of [compatible registries]. The [porter publish] command by default pushes the bundle to the registry defined in the porter.yaml file. @@ -135,14 +139,16 @@ The [porter publish] command by default pushes the bundle to the registry define For example, if you have an account on Docker Hub, change the registry value from localhost:5000 to your Docker Hub username. 2. Edit the name field and change it to your preferred name for the bundle, like "mybundle". 3. Use the docker login command to first authenticate to the destination registry: + ``` docker login REGISTRY ``` - For example, if the registry defined in the porter.yaml is ghcr.io/myuser, then run `docker login ghcr.io` to authenticate. + For example, if the registry defined in the porter.yaml is ghcr.io/myuser, then run `docker login ghcr.io` to authenticate. If you are publishing to Docker Hub, the registry field in the bundle would just be your Docker Hub username, and you would authenticate to the registry with just `docker login` without any additional arguments. This works because the Docker client by default uses Docker Hub (docker.io) when a registry is not fully specified. + 4. Now, publish the bundle by running `porter publish`. ## Use the Published Bundle @@ -150,7 +156,7 @@ The [porter publish] command by default pushes the bundle to the registry define Once your bundle is published, people can use it by setting the \--reference flag on relevant porter commands to the bundle's reference. The name, registry, and version fields are used to generate the bundle's default publish location when porter publish is run. By default, the bundle is published to REGISTRY/BUNDLE_NAME:vBUNDLE_VERSION. -The destination may be changed by specifying \--registry, \--reference, or \--tag during [publish](/cli/porter_publish/). +The destination may be changed by specifying \--registry, \--reference, or \--tag during [publish](/cli/porter_publish/). The publish command prints out the full bundle reference when it completes. For example, the following porter.yaml file would result in the bundle being published to ghcr.io/getporter/porter-hello:v0.3.0. @@ -173,11 +179,11 @@ $ porter explain ghcr.io/getporter/porter-hello:v0.2.0 Now that you know how to create a bundle, here are some more detailed topics on how to customize and distribute it: -* [Control how your bundle's image is built with a custom Dockerfile](/bundle/custom-dockerfile/) -* [Customize your Porter manifest, porter.yaml][manifest] -* [Porter Manifest File Format](/bundle/manifest/file-format/) -* [Best Practices for the exec Mixin](/best-practices/exec-mixin/) -* [Understand how bundles are distributed](/distribute-bundles/) +- [Control how your bundle's image is built with a custom Dockerfile](/bundle/custom-dockerfile/) +- [Customize your Porter manifest, porter.yaml][manifest] +- [Porter Manifest File Format](/bundle/manifest/file-format/) +- [Best Practices for the exec Mixin](/best-practices/exec-mixin/) +- [Understand how bundles are distributed](/distribute-bundles/) [install Porter]: /install/ [Porter Visual Studio Code]: https://marketplace.visualstudio.com/items?itemName=getporter.porter-vscode diff --git a/docs/content/getting-started/install-porter.md b/docs/content/docs/getting-started/install-porter.md similarity index 99% rename from docs/content/getting-started/install-porter.md rename to docs/content/docs/getting-started/install-porter.md index bbd67ad62..ab18ddba2 100644 --- a/docs/content/getting-started/install-porter.md +++ b/docs/content/docs/getting-started/install-porter.md @@ -1,6 +1,9 @@ --- title: Install Porter description: Installing the Porter client and mixins +weight: 1 +aliases: + - /install/ --- > Join our [mailing list] for announcements of releases and announcements of new features. diff --git a/docs/content/getting-started/migrate-v0-v1.md b/docs/content/docs/getting-started/migrate-v0-v1.md similarity index 99% rename from docs/content/getting-started/migrate-v0-v1.md rename to docs/content/docs/getting-started/migrate-v0-v1.md index 868d1fff1..c2568dff2 100644 --- a/docs/content/getting-started/migrate-v0-v1.md +++ b/docs/content/docs/getting-started/migrate-v0-v1.md @@ -1,6 +1,7 @@ --- title: Migrate from Porter v0 to v1 description: How to prepare for and migrate Porter's data +weight: 2 --- Porter's data storage backend and format are changing from v0 to v1.0. @@ -43,6 +44,7 @@ For non-production environments, you may use the [filesystem](/plugins/filesyste This stores any sensitive data generated by Porter in your PORTER_HOME directory and is suitable for testing out v1. Here are secret plugins that we recommend for production use: + - [Azure Key Vault](/plugins/azure/#secrets) - [Kubernetes Secrets](/plugins/kubernetes/#secrets) - [Hashicorp Vault](/plugins/hashicorp/) @@ -179,6 +181,7 @@ To upgrade a bundle for use with Porter v1: Porter now generates the invocation image name using a hash generated from the bundle's metadata using the following format: BUNDLE_REPOSITORY:porter-HASH. We also no longer push the invocation image to a separate repository, so if you used to rely on the BUNDLE_NAME-installer naming convention, that is not available going forward. 5. If the bundle defines dependencies, the dependency list has been moved from under `dependences` to under `dependencies.requires`, and the `reference` and `version` fields moved under a new field `bundle`. + ```yaml # V0 dependency declaration dependencies: diff --git a/docs/content/docs/how-to-guides/_index.md b/docs/content/docs/how-to-guides/_index.md new file mode 100644 index 000000000..aa1275a38 --- /dev/null +++ b/docs/content/docs/how-to-guides/_index.md @@ -0,0 +1,12 @@ +--- +title: "How to Guides" +description: "" +weight: 8 +--- + +**Guides for working with Mixins and Plugins** + +{{< cards >}} +{{< card link="work-with-mixins" title="Working with Mixins" >}} +{{< card link="work-with-plugins" title="Working with Plugins" >}} +{{< /cards >}} diff --git a/docs/content/how-to-guides/work-with-mixins.md b/docs/content/docs/how-to-guides/work-with-mixins.md similarity index 92% rename from docs/content/how-to-guides/work-with-mixins.md rename to docs/content/docs/how-to-guides/work-with-mixins.md index f4d6e2762..efacfd799 100644 --- a/docs/content/how-to-guides/work-with-mixins.md +++ b/docs/content/docs/how-to-guides/work-with-mixins.md @@ -1,6 +1,7 @@ --- -title: Mixin Architecture +title: Working with Mixins description: How do mixins work? Hotwiring a porter mixin +weight: 1 --- ## What is a Mixin @@ -15,18 +16,18 @@ For example, a bundle author may wish to execute a bash command. The author woul ```yaml mixins: -- exec + - exec name: hello version: 0.1.0 regisry: getporter install: -- exec: - description: "Say Hello" - command: bash - flags: - c: echo Hello World + - exec: + description: "Say Hello" + command: bash + flags: + c: echo Hello World ``` ## Mixin API @@ -57,9 +58,9 @@ In this case, the `helm` mixin will first run apt-get update and then install `c The [CNAB specification](https://github.com/cnabio/cnab-spec/blob/master/103-bundle-runtime.md) specifies three actions that an invocation image should support: -* install -* upgrade -* uninstall +- install +- upgrade +- uninstall Porter in turn, expects that a mixin should provide a command that corresponds to each of these actions. If the corresponding action is not relevant, the mixin should still provide a command for the action and return no error. Here is `helm` mixin again for reference: @@ -97,12 +98,12 @@ helm3: db.name: ${ bundle.parameters.database-name } db.user: ${ bundle.parameters.mysql-user } outputs: - - name: mysql-root-password - secret: porter-ci-mysql - key: mysql-root-password - - name: mysql-password - secret: porter-ci-mysql - key: mysql-password + - name: mysql-root-password + secret: porter-ci-mysql + key: mysql-root-password + - name: mysql-password + secret: porter-ci-mysql + key: mysql-password ``` In this case, the `description` and `outputs` elements of this YAML are defined by Porter, but the `helm` block is defined by the mixin. The `outputs` section itself is also largely defined by the mixin. Porter will pass the entire block to the mixin, with the expectation that the mixin will report errors if the YAML is incorrect. The next section discusses how mixins can define their inputs and outputs. @@ -115,5 +116,5 @@ Mixins can expose JSON schema to describe the YAML format that they expect to ac If you'd like to build a mixin and would like to refer to some existing implementations, please see: -* [helm-mixin](https://github.com/getporter/helm3-mixin) - The Porter Helm Mixin -* [az-mixin](https://github.com/getporter/az-mixin) - The Porter Azure (az cli) Mixin +- [helm-mixin](https://github.com/getporter/helm3-mixin) - The Porter Helm Mixin +- [az-mixin](https://github.com/getporter/az-mixin) - The Porter Azure (az cli) Mixin diff --git a/docs/content/how-to-guides/work-with-plugins.md b/docs/content/docs/how-to-guides/work-with-plugins.md similarity index 99% rename from docs/content/how-to-guides/work-with-plugins.md rename to docs/content/docs/how-to-guides/work-with-plugins.md index 12399bded..69281d2eb 100644 --- a/docs/content/how-to-guides/work-with-plugins.md +++ b/docs/content/docs/how-to-guides/work-with-plugins.md @@ -1,6 +1,7 @@ --- -title: Getting Started with Plugins +title: Working with Plugins description: Learn how to use plugins with Porter +weight: 2 --- In this tutorial we will use the [Azure plugin][azure] to demonstrate how to diff --git a/docs/content/docs/integrations/_index.md b/docs/content/docs/integrations/_index.md new file mode 100644 index 000000000..2a98b02c0 --- /dev/null +++ b/docs/content/docs/integrations/_index.md @@ -0,0 +1,14 @@ +--- +title: "Integrations" +description: "" +weight: 12 +--- + +**Learn about various Integrations with Porter** + +{{< cards >}} +{{< card link="aks" title="Connect to AKS" >}} +{{< card link="gke" title="Connect to GKE" >}} +{{< card link="kind" title="Connect to KinD" >}} +{{< card link="minikube" title="Connect to Minikube" >}} +{{< /cards >}} diff --git a/docs/content/integrations/aks.md b/docs/content/docs/integrations/aks.md similarity index 92% rename from docs/content/integrations/aks.md rename to docs/content/docs/integrations/aks.md index 887f4fa7e..b854ea021 100644 --- a/docs/content/integrations/aks.md +++ b/docs/content/docs/integrations/aks.md @@ -1,6 +1,7 @@ --- title: Connect to AKS description: How to connect to an AKS cluster inside a Porter bundle. +weight: 1 --- ## Coming Soon diff --git a/docs/content/integrations/gke.md b/docs/content/docs/integrations/gke.md similarity index 63% rename from docs/content/integrations/gke.md rename to docs/content/docs/integrations/gke.md index 4055f8785..caefbc397 100644 --- a/docs/content/integrations/gke.md +++ b/docs/content/docs/integrations/gke.md @@ -1,6 +1,7 @@ --- title: Connect to GKE description: How to connect to a GKE cluster inside a Porter bundle. +weight: 2 --- GKE cluster authentication requires more than just a kubeconfig, it also needs a @@ -12,44 +13,46 @@ See [ghcr.io/getporter/examples/gke][example] for a full working example bundle. 1. [Generate a kubeconfig](#generate-a-kubeconfig). 1. [Create a service account](#create-a-service-account). -1. Define credentials in **porter.yaml** for the kubeconfig - and service account: - - ```yaml - credentials: - - name: kubeconfig - path: /home/nonroot/.kube/config - - name: google-service-account - path: /home/nonroot/google-service-account.json - ``` +1. Define credentials in **porter.yaml** for the kubeconfig + and service account: + + ```yaml + credentials: + - name: kubeconfig + path: /home/nonroot/.kube/config + - name: google-service-account + path: /home/nonroot/google-service-account.json + ``` 1. Define an environment variable, `GOOGLE_APPLICATION_CREDENTIALS` that contains the path to the service account file, `/home/nonroot/google-service-account.json`. - This can be accomplished via one of the methods below. The first method is - recommended over using a parameter. Using parameters to define environment - variables is a hack provided only for the purpose of this example. + This can be accomplished via one of the methods below. The first method is + recommended over using a parameter. Using parameters to define environment + variables is a hack provided only for the purpose of this example. + + - Add the following line to your [Custom Dockerfile](/bundle/custom-dockerfile): - * Add the following line to your [Custom Dockerfile](/bundle/custom-dockerfile): + ``` + ENV GOOGLE_APPLICATION_CREDENTIALS=/home/nonroot/google-service-account.json + ``` - ``` - ENV GOOGLE_APPLICATION_CREDENTIALS=/home/nonroot/google-service-account.json - ``` - * Add a parameter to **porter.yaml**: + - Add a parameter to **porter.yaml**: - ```yaml - parameters: - - name: google-app-creds - env: GOOGLE_APPLICATION_CREDENTIALS - default: /home/nonroot/google-service-account.json - ``` + ```yaml + parameters: + - name: google-app-creds + env: GOOGLE_APPLICATION_CREDENTIALS + default: /home/nonroot/google-service-account.json + ``` --- ## Generate a kubeconfig -1. You must have `gcloud` installed locally, and be authenticated. -1. Define the following environment variables: + +1. You must have `gcloud` installed locally, and be authenticated. +1. Define the following environment variables: ```bash CLUSTER="REPLACE_WITH_YOUR_CLUSTER_NAME" @@ -57,7 +60,8 @@ See [ghcr.io/getporter/examples/gke][example] for a full working example bundle. PROJECT="REPLACE_WITH_YOUR_GOOGLE_PROJECT" GET_CMD="gcloud container clusters describe $CLUSTER --zone=$ZONE --project=$PROJECT" ``` -1. Run the following command to create a kubeconfig for your GKE cluster: + +1. Run the following command to create a kubeconfig for your GKE cluster: cat > kubeconfig.yaml <}} +{{< card link="what-is-porter" title="What is Porter?" >}} +{{< card link="concepts-and-components" title="Concepts and Components" >}} +{{< /cards >}} diff --git a/docs/content/docs/introduction/concepts-and-components/_index.md b/docs/content/docs/introduction/concepts-and-components/_index.md new file mode 100644 index 000000000..e77042d10 --- /dev/null +++ b/docs/content/docs/introduction/concepts-and-components/_index.md @@ -0,0 +1,18 @@ +--- +title: "Concepts and Components" +description: "" +--- + +**Learn about all the different Concepts and Components** + +{{< cards >}} +{{< card link="intro-bundles" title="Bundles" >}} +{{< card link="intro-parameters" title="Parameters" >}} +{{< card link="intro-configuration" title="Configuration" >}} +{{< card link="intro-credentials" title="Credentials" >}} +{{< card link="intro-desired-state" title="Desired State" >}} +{{< card link="intro-invocation-images" title="Invocation Images" >}} +{{< card link="intro-mixins" title="Mixins" >}} +{{< card link="mixins-vs-plugins" title="Mixins vs Plugins" >}} +{{< card link="intro-plugins" title="Plugins" >}} +{{< /cards >}} diff --git a/docs/content/introduction/intro-bundles.md b/docs/content/docs/introduction/concepts-and-components/intro-bundles.md similarity index 86% rename from docs/content/introduction/intro-bundles.md rename to docs/content/docs/introduction/concepts-and-components/intro-bundles.md index 35cef1eea..2f5052e8a 100644 --- a/docs/content/introduction/intro-bundles.md +++ b/docs/content/docs/introduction/concepts-and-components/intro-bundles.md @@ -1,6 +1,7 @@ --- title: Bundles description: Introduction to Bundles +weight: 1 --- A bundle, as defined by the CNAB specification, is a standard packaging format for multi-component distributed applications. It allows packages to target different runtimes and architectures. It empowers application distributors to package applications for deployment on a wide variety of cloud platforms, providers, and services. Furthermore, it provides necessary capabilities for delivering multi-container applications in disconnected (airgapped) environments. @@ -10,7 +11,7 @@ A bundle, as defined by the CNAB specification, is a standard packaging format f A bundle created by Porter can then be an OCI artifact which includes a docker image with the necessary files and development tools along with the bundle's metadata and any other docker images used by the bundle. Once a bundle is built, it can be distributed using Docker / OCI registries. This allows you to use existing tools and infrastructure to share your application with other teams, customers, and end-users. -Because the bundle contains everything you need to deploy, included referenced images, you can even [move a bundle into a disconnected or airgapped environment](/administrators/airgap/). When written with airgap deployments in mind, a bundle can be deployed anywhere without requiring access to the original network or the internet. +Because the bundle contains everything you need to deploy, included referenced images, you can even [move a bundle into a disconnected or airgapped environment](/docs/administration/move-bundles-airgapped/). When written with airgap deployments in mind, a bundle can be deployed anywhere without requiring access to the original network or the internet. Once a bundle is installed, is tracked as an "installation" of the bundle. An installation is a record of which bundle was installed, the parameters used to customize the installation, previous runs of the bundle, the current version of the bundle, along with other useful metadata. @@ -64,4 +65,4 @@ uninstall: ## Next Steps - Learn more about Bundles - TODO -- [Introduction to Parameters](/introduction/intro-parameters) +- [Introduction to Parameters](/docs/introduction/concepts-and-components/intro-parameters) diff --git a/docs/content/introduction/intro-configuration.md b/docs/content/docs/introduction/concepts-and-components/intro-configuration.md similarity index 89% rename from docs/content/introduction/intro-configuration.md rename to docs/content/docs/introduction/concepts-and-components/intro-configuration.md index a51fb9623..8e2840bf0 100644 --- a/docs/content/introduction/intro-configuration.md +++ b/docs/content/docs/introduction/concepts-and-components/intro-configuration.md @@ -1,27 +1,28 @@ --- title: Configuration description: Controlling Porter with its config file, environment variables and flags +weight: 4 --- Porter has a hierarchical configuration system that loads configuration values in the following precedence order: -* Flags (highest) -* Environment Variables -* Config File (lowest) +- Flags (highest) +- Environment Variables +- Config File (lowest) You may set a default value for a configuration value in the config file, override it with an environment variable, and then override both for a particular command with a flag. -* [Flags](#flags) -* [Environment Variables](#environment-variables) -* [Config File](#config-file) -* [Experimental Feature Flags](#experimental-feature-flags) - * [Build Drivers](#build-drivers) - * [Structured Logs](#structured-logs) - * [Dependencies v2](#dependencies-v2) -* [Common Configuration Settings](#common-configuration-settings) - * [Set Current Namespace](#namespace) - * [Output Formatting](#output) -* [Allow Docker Host Access](#allow-docker-host-access) +- [Flags](#flags) +- [Environment Variables](#environment-variables) +- [Config File](#config-file) +- [Experimental Feature Flags](#experimental-feature-flags) + - [Build Drivers](#build-drivers) + - [Structured Logs](#structured-logs) + - [Dependencies v2](#dependencies-v2) +- [Common Configuration Settings](#common-configuration-settings) + - [Set Current Namespace](#namespace) + - [Output Formatting](#output) +- [Allow Docker Host Access](#allow-docker-host-access) ## Flags @@ -72,7 +73,7 @@ output: "json" allow-docker-host-access: true # Enable experimental features -experimental: +experimental: - "flagA" - "flagB" @@ -109,35 +110,35 @@ default-secrets-plugin: "kubernetes.secret" # Defines storage accounts storage: - # The storage account name + # The storage account name - name: "devdb" - + # The plugin used to access the storage account plugin: "mongodb" - + # Additional configuration for storage account # These values vary depending on the plugin used config: # The mongodb connection string url: "${secret.porter-db-connection-string}" - + # Timeout for database queries timeout: 300 # Define secret store accounts secrets: - # The secret store name + # The secret store name - name: "mysecrets" - + # The plugin used to access the secret store account plugin: "azure.keyvault" - + # Additional configuration for secret store account # These values vary depending on the plugin used config: # The name of the secret vault vault: "topsecret" - + # The subscription where the vault is defined subscription-id: "${env.AZURE_SUBSCRIPTION_ID}" @@ -146,7 +147,7 @@ logs: # Log command output to a file log-to-file: true - # When structured is true, the logs printed to the console + # When structured is true, the logs printed to the console # include a timestamp and log level structured: false @@ -174,7 +175,7 @@ telemetry: # The compression type used when communicating with the collector endpoint compression: "gzip" - + # The timeout enforced when communicating with the collector endpoint timeout: "3s" @@ -196,11 +197,11 @@ Porter sometimes uses feature flags to release new functionality for users to evaluate, without affecting the stability of Porter. You can enable an experimental feature by: -* Using the experimental global flag `--experimental flagA,flagB`. +- Using the experimental global flag `--experimental flagA,flagB`. The value is a comma-separated list of strings. -* Setting the PORTER_EXPERIMENTAL environment variable like so `PORTER_EXPERIMENTAL=flagA,flagB`. +- Setting the PORTER_EXPERIMENTAL environment variable like so `PORTER_EXPERIMENTAL=flagA,flagB`. The value is a comma-separated list of strings. -* Setting the experimental field in the configuration file like so `experimental: ["flagA","flagB"]`. +- Setting the experimental field in the configuration file like so `experimental: ["flagA","flagB"]`. The value is an array of strings. ### Build Drivers @@ -211,9 +212,9 @@ Build drivers are enabled by default and the only available driver is buildkit. The docker driver uses the local Docker host to build a bundle image, and run it in a container. To use a remote Docker host, set the following environment variables: -* DOCKER_HOST (required) -* DOCKER_TLS_VERIFY (optional) -* DOCKER_CERTS_PATH (optional) +- DOCKER_HOST (required) +- DOCKER_TLS_VERIFY (optional) +- DOCKER_CERTS_PATH (optional) ### Structured Logs @@ -227,9 +228,9 @@ Porter can be configured to [write a logfile for each command](/administrators/d The following log settings are available: | Setting | Environment Variable | Description | -|------------------|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ---------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | logs.log-to-file | PORTER_LOGS_LOG_TO_FILE | Specifies if a logfile should be written for each command. | -| logs.structured | PORTER_LOGS_STRUCTURED | Specifies if the logs printed to the console should include a timestamp and log level | +| logs.structured | PORTER_LOGS_STRUCTURED | Specifies if the logs printed to the console should include a timestamp and log level | | logs.level | PORTER_LOGS_LEVEL | Filters the logs to the specified level and higher. The log level controls both the logs written to file, and the logs output to the console when porter is run. Allowed values are: debug, info, warn, error. | #### Telemetry @@ -239,7 +240,7 @@ Porter supports the OpenTelemetry specification for exporting trace data. Porter automatically uses the standard [OpenTelemetry environment variables][otel] to configure the trace exporter. | Setting | Environment Variable | Description | -|-----------------------|-----------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------| +| --------------------- | --------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | | telemetry.enabled | PORTER_TELEMETRY_ENABLED | Enables telemetry collection. Defaults to false. | | telemetry.protocol | OTEL_EXPORTER_OTLP_PROTOCOL
PORTER_TELEMETRY_PROTOCOL | The protocol used to connect with the telemetry server. Either grpc or http/protobuf. Defaults to http/protobuf. | | telemetry.endpoint | OTEL_EXPORTER_OTLP_ENDPOINT
PORTER_TELEMETRY_ENDPOINT | The endpoint where traces should be sent. Defaults 127.0.0.1:4317. | @@ -279,6 +280,7 @@ When it is completed, it is used to activate the features from [PEP003 - Advance Some configuration settings are applicable to many of Porter's commands and to save time you may want to set these values in the configuration file or with environment variables. ### Namespace + \--namespace specifies the current namespace. It is set with the PORTER_NAMESPACE environment variable. @@ -311,21 +313,20 @@ You should trust any bundles that you execute with this setting enabled as it gi ⚠️️ This configuration setting is only available when you are in an environment that provides access to the local docker daemon. Therefore, it does not work with the Azure Cloud Shell driver. - ### Schema Check + The schema-check configuration file setting controls Porter's behavior when the schemaVersion of a resource does not match [Porter's supported version](/reference/file-formats/#supported-versions). By default, Porter requires that a resource's schemaVersion field matches Porter's allowed version(s). In some cases, such as when migrating to a new version of Porter, it may be helpful to use a less strict version comparison. Allowed values are: -* exact - Default behavior. Require that the schemaVersion on the resource exactly match Porter's supported version(s). +- exact - Default behavior. Require that the schemaVersion on the resource exactly match Porter's supported version(s). If it doesn't match, the command will fail. -* minor - Require that the MAJOR.MINOR portion of the schemaVersion on the resource match Porter's supported version. +- minor - Require that the MAJOR.MINOR portion of the schemaVersion on the resource match Porter's supported version. For example, a bundle with a schemaVersion of 1.2.3 would work even though the supported version is 1.2.5. -* major - Require that the MAJOR portion of the schemaVersion on the resource match Porter's supported version. +- major - Require that the MAJOR portion of the schemaVersion on the resource match Porter's supported version. For example, a bundle with a schemaVersion of 1.2.3 would work even though the supported version is 1.3.0. -* none - Only print a warning when the schemaVersion does not exactly match the supported version. +- none - Only print a warning when the schemaVersion does not exactly match the supported version. Porter can only guarantee correct parsing of the file when the schemaVersion exactly matches. Depending on what has changed between schema versions, you can make a judgement call on if those changes are relevant to your situation. - diff --git a/docs/content/introduction/intro-credentials.md b/docs/content/docs/introduction/concepts-and-components/intro-credentials.md similarity index 94% rename from docs/content/introduction/intro-credentials.md rename to docs/content/docs/introduction/concepts-and-components/intro-credentials.md index 1273775eb..e97c90667 100644 --- a/docs/content/introduction/intro-credentials.md +++ b/docs/content/docs/introduction/concepts-and-components/intro-credentials.md @@ -1,15 +1,16 @@ --- title: Credentials description: The lifecycle of a credential from definition, to resolution, and finally injection at runtime +weight: 3 aliases: -- /how-credentials-work/ -- /best-practices/credentials/ + - /how-credentials-work/ + - /best-practices/credentials/ --- When you are authoring a bundle, you can define what credentials your bundle requires such as a github token, cloud provider username/password, etc. Then in your action's steps you can reference the credentials using porter's template -language `${ bundle.credentials.github_token }`, or directly access the +language `${ bundle.credentials.github_token }`, or directly access the environment variable or path where the credential is stored. In the example below, the bundle defines two credentials. A kubeconfig file, @@ -19,10 +20,10 @@ variable. ```yaml credentials: -- name: kubeconfig - path: /home/nonroot/.kube/config -- name: token - env: GITHUB_TOKEN + - name: kubeconfig + path: /home/nonroot/.kube/config + - name: token + env: GITHUB_TOKEN ``` The paths and environment variable names used in the credential @@ -32,7 +33,7 @@ that is the responsibility of credential sets. ## Credential Sets -Before running a bundle the user must first create a credential set using two commands, +Before running a bundle the user must first create a credential set using two commands, [porter credentials create][create]and [porter credentials apply][apply]. A credentials set is a mapping that tells porter "given a name of a credential such as `github_token`, where can the value be found?". Credential values can be resolved from many places, such as environment @@ -45,6 +46,7 @@ If you are creating credential sets manually, you can use the [Credential Set Sc to validate that you have created it properly. ### Remembering Credentials + Porter remembers the last set of credentials used with an installation, and reuses them when the bundle is executed again. For example, if Carolyn installs a bundle using her credentials, Porter remembers that Carolyn's credentials are associated with the resulting installation. @@ -82,7 +84,7 @@ $ porter upgrade -c blue-team-creds --version 0.3.1 Now when you execute the bundle you can pass the credential set to the command with `--credential-set` or `-c` flags. For example, `porter install --credential-set github`. Before the bundle is executed, Porter users the credential set's mappings to retrieve the -credential values, and then injects them into the bundle's execution environment +credential values, and then injects them into the bundle's execution environment as either environment variables or files. Inside the bundle's execution environment Porter replaces the template placeholders @@ -119,4 +121,4 @@ porter.yaml up front. ## Related -* [QuickStart: Pass credentials to a bundle](/quickstart/credentials/) +- [QuickStart: Pass credentials to a bundle](/quickstart/credentials/) diff --git a/docs/content/introduction/intro-desired-state.md b/docs/content/docs/introduction/concepts-and-components/intro-desired-state.md similarity index 99% rename from docs/content/introduction/intro-desired-state.md rename to docs/content/docs/introduction/concepts-and-components/intro-desired-state.md index 5b06104b6..958963234 100644 --- a/docs/content/introduction/intro-desired-state.md +++ b/docs/content/docs/introduction/concepts-and-components/intro-desired-state.md @@ -1,6 +1,7 @@ --- title: Desired State description: TODO +weight: 5 --- **Desired State** commands, such as [porter installation apply], where you are responsible for specifying the _desired state_ of the installation within a file, diff --git a/docs/content/introduction/intro-invocation-images.md b/docs/content/docs/introduction/concepts-and-components/intro-invocation-images.md similarity index 99% rename from docs/content/introduction/intro-invocation-images.md rename to docs/content/docs/introduction/concepts-and-components/intro-invocation-images.md index 40f53a795..fdc8d9f3e 100644 --- a/docs/content/introduction/intro-invocation-images.md +++ b/docs/content/docs/introduction/concepts-and-components/intro-invocation-images.md @@ -1,6 +1,7 @@ --- title: Invocation Images descriptions: How does Porter build an Invocation Image? +weight: 6 --- When you build a Cloud Native Application Bundle (CNAB) with Porter, a bundle.json and an invocation image are created for you. How does Porter turn your _porter.yaml_ into an invocation image? This walkthrough will explain how Porter constructs the invocation image, including how mixins and other bundles allow you to compose functionality. diff --git a/docs/content/introduction/intro-mixins.md b/docs/content/docs/introduction/concepts-and-components/intro-mixins.md similarity index 86% rename from docs/content/introduction/intro-mixins.md rename to docs/content/docs/introduction/concepts-and-components/intro-mixins.md index 72eba11cb..cd2bc76ac 100644 --- a/docs/content/introduction/intro-mixins.md +++ b/docs/content/docs/introduction/concepts-and-components/intro-mixins.md @@ -1,9 +1,10 @@ --- title: Mixins description: Quickly integrate with existing tools using Porter mixins +weight: 7 aliases: -- /using-mixins/ -- /use-mixins/ + - /using-mixins/ + - /use-mixins/ --- Mixins make Porter special. They are the building blocks that you use when authoring bundles. Find them, use them, [create your own](/mixin-dev-guide/). @@ -14,11 +15,10 @@ they need to run, such as a CLI or config files, and how to execute their steps There are [many mixins](/mixins/) created by the Porter community. Only the [exec mixin](/mixins/exec/) is installed by default. - # Next -* [Use a mixin in a bundle](/author-bundles/#mixins) -* [Mixin Architecture](/mixin-dev-guide/architecture/) +- [Use a mixin in a bundle](/author-bundles/#mixins) +- [Mixin Architecture](/mixin-dev-guide/architecture/) # Available Mixins diff --git a/docs/content/introduction/intro-parameters.md b/docs/content/docs/introduction/concepts-and-components/intro-parameters.md similarity index 65% rename from docs/content/introduction/intro-parameters.md rename to docs/content/docs/introduction/concepts-and-components/intro-parameters.md index 9587ed124..dd6a39793 100644 --- a/docs/content/introduction/intro-parameters.md +++ b/docs/content/docs/introduction/concepts-and-components/intro-parameters.md @@ -1,13 +1,14 @@ --- title: Parameters description: The lifecycle of a parameter from definition, to resolution, and finally injection at runtime +weight: 2 aliases: -- /how-parameters-work/ + - /how-parameters-work/ --- When you are authoring a bundle, you can define parameters that are required by your bundle. These parameters are restricted to a list of [allowable data -types](/author-bundles/#parameter-types) and are used to define parameters such as +types](/docs/bundle/manifest) and are used to define parameters such as username and password values for a backing database, or the region that a certain resource should be deployed in, etc. Then in your action's steps you can reference the parameters using porter's template language `${ @@ -15,12 +16,12 @@ bundle.parameters.db_name }`. When a bundle is executed, parameter values are resolved in a hierarchy of (from highest to lowest precedence): -* Overrides specified either with the \--param flag or by setting parameters directly on an installation resource -* Parameter sets specified with the \--parameter-set flag or by setting the parameter set name directly on an installation resource -* Parameter values remembered from the last time the bundle was run -* Defaults defined for the parameter in the bundle definition +- Overrides specified either with the \--param flag or by setting parameters directly on an installation resource +- Parameter sets specified with the \--parameter-set flag or by setting the parameter set name directly on an installation resource +- Parameter values remembered from the last time the bundle was run +- Defaults defined for the parameter in the bundle definition -Let's use the hello-llama bundle from the [Parameters QuickStart](/quickstart/parameters/) as an example and walk through the various ways that Porter will resolve the name parameter. +Let's use the hello-llama bundle from the [Parameters QuickStart](/docs/quickstart/parameters/) as an example and walk through the various ways that Porter will resolve the name parameter. 1. The bundle has one parameter, name, and it has a default therefore we do not need to specify it when installing the bundle. Running `porter install test -r ghcr.io/getporter/hello-llama:v0.1.1` uses the default value of "llama" for the name parameter. 2. Now we can override that name using the \--param flag, `porter upgrade test --param name=sparkles`. @@ -30,17 +31,17 @@ Let's use the hello-llama bundle from the [Parameters QuickStart](/quickstart/pa ## Parameter Sets A Parameter Set is a file which maps parameters to their strategies for value -resolution. Strategies include resolving from a source on the user's machine +resolution. Strategies include resolving from a source on the user's machine such as an environment variable (`env`), filepath (`path`), command result -(`command`) or simply the value itself (`value`). In addition, a parameter -can have a secret source (`secret`). See the [secrets +(`command`) or simply the value itself (`value`). In addition, a parameter +can have a secret source (`secret`). See the [secrets plugin docs](/plugins/types/#secrets) to learn how to configure Porter to use an external secret store. -Parameter Sets are created using the combination of [porter parameters create][create] -and [porter parameters apply][apply]. -Afterwards a parameter set can be [edited][edit] if changes are required. -See [porter parameters help](/cli/porter_parameters/) for all available commands. +Parameter Sets are created using the combination of [porter parameters create](/docs/references/cli/parameters/create) +and [porter parameters apply](/docs/references/cli/parameters/apply). +Afterwards a parameter set can be [edited](/docs/references/cli/parameters/edit) if changes are required. +See [porter parameters help](/docs/references/cli/porter/parameters/) for all available commands. Now when you execute the bundle you can pass the name of the parameter set to the command using the `--parameter-set` or `-p` flag, e.g. @@ -49,13 +50,13 @@ the command using the `--parameter-set` or `-p` flag, e.g. If you are creating parameter sets manually, you can use the [Parameter Set Schema] to validate that you have created it properly. -[Parameter Set Schema]: /src/pkg/schema/parameter-set.schema.json +[Parameter Set Schema]: https://github.com/getporter/porter/blob/main/pkg/schema/parameter-set.schema.json ## User-specified values A user may also supply parameter values when invoking an action on the bundle. User-supplied values take precedence over both the bundle defaults and any -included in a provided parameter set file. The CLI flag for supplying a +included in a provided parameter set file. The CLI flag for supplying a parameter override is `--param`. For example, you may decide to override the `db_name` parameter for a given @@ -63,28 +64,27 @@ installation via `porter install --param db_name=mydb -p myparamset`. When a parameter's bundle definition is set to `sensitive=true`, the user-specified value will be stored into a secret store to prevent security leakage. See the [secrets -plugin docs](/plugins/types/#secrets) to learn how porter uses an external secret store +plugin docs](/plugins/types/#secrets) to learn how porter uses an external secret store to handle sensitive data. - ## Bundle defaults The bundle author may have decided to supply a default value for a given parameter as well. This value would be used when neither a user-specified -value nor a parameter set value is supplied. See the `Parameters` section in -the [Author Bundles](/author-bundles#parameters/) doc for more info. +value nor a parameter set value is supplied. See the `Parameters` section in +the [Author Bundles](/docs/bundle/manifest) doc for more info. ## Q & A ### Why can't the parameter source be defined in porter.yaml? -See the helpful explanation in the [credentials](/credentials/) doc, which +See the helpful explanation in the [credentials](/docs/introduction/concepts-and-components/intro-credentials/) doc, which applies to parameter sources as well. -[create]: /cli/porter_parameters_create/ -[apply]: /cli/porter_parameters_apply/ -[edit]: /cli/porter_parameters_edit/ +[create]: /docs/references/cli/parameters/create/ +[apply]: /docs/references/cli/parameters/apply/ +[edit]: /docs/references/cli/parameters/edit/ ## Related -* [QuickStart: Use parameters with a bundle](/quickstart/parameters/) +- [QuickStart: Use parameters with a bundle](/docs/quickstart/parameters/) diff --git a/docs/content/introduction/intro-plugins.md b/docs/content/docs/introduction/concepts-and-components/intro-plugins.md similarity index 99% rename from docs/content/introduction/intro-plugins.md rename to docs/content/docs/introduction/concepts-and-components/intro-plugins.md index 085a32713..fcec37173 100644 --- a/docs/content/introduction/intro-plugins.md +++ b/docs/content/docs/introduction/concepts-and-components/intro-plugins.md @@ -1,6 +1,7 @@ --- title: Plugins description: Learn what a Porter plugin can do and see a listing of available plugins +weight: 8 --- The Porter client is extensible and anyone can write a plugin to integrate with @@ -28,7 +29,6 @@ add your own to the list. [mongodb plugin]: /plugins/mongodb/ [mongodb-docker plugin]: /plugins/mongodb-docker/ - [vs]: /introduction/mixins-vs-plugins/ [types]: /plugins/types/ [search-guide]: /package-search/ diff --git a/docs/content/introduction/mixins-vs-plugins.md b/docs/content/docs/introduction/concepts-and-components/mixins-vs-plugins.md similarity index 89% rename from docs/content/introduction/mixins-vs-plugins.md rename to docs/content/docs/introduction/concepts-and-components/mixins-vs-plugins.md index 7e68dd4a6..567881e7d 100644 --- a/docs/content/introduction/mixins-vs-plugins.md +++ b/docs/content/docs/introduction/concepts-and-components/mixins-vs-plugins.md @@ -1,11 +1,12 @@ --- title: Mixins vs. Plugins description: What is the difference between a Porter mixin and a plugin? When would you use one instead of another? +weight: 9 --- [Mixins](/mixins/) are the building blocks for authoring bundles. They understand both Porter and CNAB, so you don't have to, and ideally have built-in -logic to make your bundles easier to author and more robust. They are involved +logic to make your bundles easier to author and more robust. They are involved when the bundle is built, assisting with generating the Dockerfile for the invocation image. Most importantly they are responsible for handling the actions in your porter.yaml when your bundle is run. For example, the helm mixin @@ -31,6 +32,6 @@ Guide](/mixin-dev-guide) to get started. ## See Also -* [Available Mixins](/mixins/) -* [Available Plugins](/plugins/) -* [Types of Plugins](/plugins/types/) \ No newline at end of file +- [Available Mixins](/mixins/) +- [Available Plugins](/plugins/) +- [Types of Plugins](/plugins/types/) diff --git a/docs/content/introduction/what-is-porter.md b/docs/content/docs/introduction/what-is-porter.md similarity index 76% rename from docs/content/introduction/what-is-porter.md rename to docs/content/docs/introduction/what-is-porter.md index cfca47247..31f0df5a4 100644 --- a/docs/content/introduction/what-is-porter.md +++ b/docs/content/docs/introduction/what-is-porter.md @@ -1,12 +1,13 @@ --- title: What is Porter? description: Detailed look at how Porter does its magic 🎩✨ +weight: 1 --- Porter is an implementation of the [Cloud Native Application Bundle](https://cnab.io/) specification and creates installers, known as bundles, that understand how to install not only your application but its infrastructure and configuration. A bundle helps you package up the logic for installing your application so that you can hand it off to another team, a customer, or just a co-worker who doesn’t know all the ins and outs of your application and provide them a consistent installation experience that doesn’t require them to know what tools you use to deploy or how the sausage is made. ## See Also -- [Create a Bundle](/getting-started/create-bundle/) -- [Distribute Bundles](/development/distribute-bundles/) -- [Airgapped Deployments](/administration/move-bundles-airgapped/) +- [Create a Bundle](/docs/getting-started/create-bundle/) +- [Distribute Bundles](/docs/development/authoring-a-bundle/distribute-bundles/) +- [Airgapped Deployments](/docs/administration/move-bundles-airgapped/) diff --git a/docs/content/learn/learning.md b/docs/content/docs/learn/_index.md similarity index 83% rename from docs/content/learn/learning.md rename to docs/content/docs/learn/_index.md index dd8942cbd..34585edbd 100644 --- a/docs/content/learn/learning.md +++ b/docs/content/docs/learn/_index.md @@ -1,23 +1,24 @@ --- title: Learning description: External videos, blog posts and tutorials about CNAB and Porter +weight: 13 aliases: -- /resources/ + - /resources/ --- -Do you have a blog post, video, tutorial, demo, or some other neat thing -using Porter or CNAB that you'd like to share? [Open up a pull request][pr] +Do you have a blog post, video, tutorial, demo, or some other neat thing +using Porter or CNAB that you'd like to share? [Open up a pull request][pr] and show it off! ✨ Check out our new [CNCF Porter Community] channel for all of our conference talks, demos and meeting videos. -* [The Devil is in the Deployments: Bundle Use Cases](#the-devil-is-in-the-deployments-bundle-use-cases) -* [Deploy Across an Airgap](#deploy-across-an-airgap) -* [Understanding Cloud Native Application Bundles](#understanding-cloud-native-application-bundles) -* [Porter: Digital Ocean, Terraform, Kubernetes](#porter-digital-ocean-terraform-kubernetes) -* [Porter Bundle with K3D, Helm3 and Brigade by Nuno Do Carmo](#porter-bundle-with-k3d-helm3-and-brigade-by-nuno-do-carmo) -* [Porter: An Opinionated CNAB Authoring Experience](#porter-an-opinionated-cnab-authoring-experience) -* [Free Glue Code - Porter](#free-glue-code---porter) +- [The Devil is in the Deployments: Bundle Use Cases](#the-devil-is-in-the-deployments-bundle-use-cases) +- [Deploy Across an Airgap](#deploy-across-an-airgap) +- [Understanding Cloud Native Application Bundles](#understanding-cloud-native-application-bundles) +- [Porter: Digital Ocean, Terraform, Kubernetes](#porter-digital-ocean-terraform-kubernetes) +- [Porter Bundle with K3D, Helm3 and Brigade by Nuno Do Carmo](#porter-bundle-with-k3d-helm3-and-brigade-by-nuno-do-carmo) +- [Porter: An Opinionated CNAB Authoring Experience](#porter-an-opinionated-cnab-authoring-experience) +- [Free Glue Code - Porter](#free-glue-code---porter) [pr]: /contribute/guide/ @@ -35,12 +36,12 @@ neatly inside of just Kubernetes. Let's learn when bundles make sense, when they don't, and what your day could look like if you were using them: -* Install tools to manage your app: helm, aws/azure/gcloud, terraform. -* Deploy your app along with its infra: cloud storage, dns entry, load balancer, ssl cert. -* Get software and its dependencies into airgapped networks. -* Manage disparate operational tech, such as Helm or Terraform, across +- Install tools to manage your app: helm, aws/azure/gcloud, terraform. +- Deploy your app along with its infra: cloud storage, dns entry, load balancer, ssl cert. +- Get software and its dependencies into airgapped networks. +- Manage disparate operational tech, such as Helm or Terraform, across teams and departments. -* Secure your pipeline. +- Secure your pipeline. @@ -54,11 +55,11 @@ A gentle introduction to Porter and a demo of how to use Porter to deploy your a CNCF Webinar where Carolyn Van Slyck, the co-creator of Porter, the friendly cloud installer that gives you building blocks to create CNAB bundles from your existing pipeline, will demonstrate real world bundles, answering common questions: -* What is a bundle? -* When are bundles useful? -* Does this replace existing technology? -* Why wouldn’t I just use helm, terraform, etc? -* Are all CNAB tools the same? Interchangeable? +- What is a bundle? +- When are bundles useful? +- Does this replace existing technology? +- Why wouldn’t I just use helm, terraform, etc? +- Are all CNAB tools the same? Interchangeable? diff --git a/docs/content/docs/operations/_index.md b/docs/content/docs/operations/_index.md new file mode 100644 index 000000000..308ffe90c --- /dev/null +++ b/docs/content/docs/operations/_index.md @@ -0,0 +1,16 @@ +--- +title: "Operations" +description: "" +weight: 5 +--- + +**Get Started with Porter** + +{{< cards >}} +{{< card link="manage-installations" title="Manage Installations" >}} +{{< card link="examine-bundles" title="Examine Bundles" >}} +{{< card link="view-logs" title="View Logs" >}} +{{< card link="create-porter-config" title="Create a Porter Config File" >}} +{{< card link="connect-to-docker" title="Connect to Docker" >}} +{{< card link="connect-to-registry" title="Connect to Registry" >}} +{{< /cards >}} diff --git a/docs/content/operations/connect-to-docker.md b/docs/content/docs/operations/connect-to-docker.md similarity index 75% rename from docs/content/operations/connect-to-docker.md rename to docs/content/docs/operations/connect-to-docker.md index c45f821fa..fa26df0d7 100644 --- a/docs/content/operations/connect-to-docker.md +++ b/docs/content/docs/operations/connect-to-docker.md @@ -1,14 +1,15 @@ --- title: Connect to Docker description: Configure Porter to authenticate and connect to a Docker engine +weight: 5 --- Some Porter commands connect to a Docker engine in order to build, push, and pull the bundle image. Learn how to configure Porter to connect with various Docker configurations. -* [Connect to the local Docker engine](#connect-to-the-local-docker-engine) -* [Connect to a remote Docker engine](#connect-to-a-remote-docker-engine) -* [Additional Supported Docker Settings](#additional-supported-docker-settings) +- [Connect to the local Docker engine](#connect-to-the-local-docker-engine) +- [Connect to a remote Docker engine](#connect-to-a-remote-docker-engine) +- [Additional Supported Docker Settings](#additional-supported-docker-settings) ## Connect to the local Docker engine @@ -20,13 +21,14 @@ Try it out by running `porter install --reference ghcr.io/getporter/examples/por Porter uses the standard Docker environment variables to connect to a remote Docker engine: -* **DOCKER_HOST**: The host name and port of the remote Docker engine. -* **DOCKER_CERT_PATH**: The local directory containing the certificates necessary to connect to the remote Docker engine. By default, Porter looks for ca.pem, cert.pem, key.pem in ~/.docker/certs. -* **DOCKER_TLS_VERIFY**: When this environment variable is set, Porter will use TLS to connect to the remote Docker engine. If the value is not true, the TLS certificates will not be verified. +- **DOCKER_HOST**: The host name and port of the remote Docker engine. +- **DOCKER_CERT_PATH**: The local directory containing the certificates necessary to connect to the remote Docker engine. By default, Porter looks for ca.pem, cert.pem, key.pem in ~/.docker/certs. +- **DOCKER_TLS_VERIFY**: When this environment variable is set, Porter will use TLS to connect to the remote Docker engine. If the value is not true, the TLS certificates will not be verified. Below is an example of how to set and use these environment variables. **Bash** + ```bash export DOCKER_HOST="example.com:2376" export DOCKER_TLS_VERIFY="true" @@ -36,6 +38,7 @@ porter install --reference ghcr.io/getporter/examples/porter-hello:v0.2.0 ``` **Powershell** + ```powershell $env:DOCKER_HOST="example.com:2376" $env:DOCKER_TLS_VERIFY="true" @@ -45,14 +48,16 @@ porter install --reference ghcr.io/getporter/examples/porter-hello:v0.2.0 ``` ## Additional Supported Docker Settings + Porter supports additional Docker environment variables that may be useful to you: -* **DOCKER_NETWORK**: Specifies the name of an existing [Docker network] that Porter should use when running Docker containers. -* **DOCKER_CONTEXT**: Specifies the name of an existing [Docker context] that Porter should use when running Docker containers. +- **DOCKER_NETWORK**: Specifies the name of an existing [Docker network] that Porter should use when running Docker containers. +- **DOCKER_CONTEXT**: Specifies the name of an existing [Docker context] that Porter should use when running Docker containers. [Docker context]: https://docs.docker.com/engine/context/working-with-contexts/ [Docker network]: https://docs.docker.com/engine/reference/commandline/network/ ## Next Steps -* [Connect to a Docker Registry](/end-users/connect-registry/) -* [Configure Porter](/end-users/configuration/) + +- [Connect to a Docker Registry](/end-users/connect-registry/) +- [Configure Porter](/end-users/configuration/) diff --git a/docs/content/operations/connect-to-registry.md b/docs/content/docs/operations/connect-to-registry.md similarity index 89% rename from docs/content/operations/connect-to-registry.md rename to docs/content/docs/operations/connect-to-registry.md index 96f1260a3..f22d72306 100644 --- a/docs/content/operations/connect-to-registry.md +++ b/docs/content/docs/operations/connect-to-registry.md @@ -1,16 +1,17 @@ --- title: Connect to a Registry description: Configure Porter to authenticate and connect to a registry +weight: 6 --- Porter stores bundles in OCI (Docker) registries. Learn how to configure Porter to authenticate and connect to your registry. -* [Authenticate to a Registry](#authenticate-to-a-registry) -* [Connect to an Insecure Registry](#connect-to-an-insecure-registry) - * [Prerequisites](#prerequisites) - * [Connect to an Unsecured Registry](#connect-to-an-unsecured-registry) - * [Registry Secured with an Untrusted Certificate](#connect-to-a-registry-secured-with-an-untrusted-certificate) +- [Authenticate to a Registry](#authenticate-to-a-registry) +- [Connect to an Insecure Registry](#connect-to-an-insecure-registry) + - [Prerequisites](#prerequisites) + - [Connect to an Unsecured Registry](#connect-to-an-unsecured-registry) + - [Registry Secured with an Untrusted Certificate](#connect-to-a-registry-secured-with-an-untrusted-certificate) ## Authenticate to a Registry @@ -20,7 +21,7 @@ For example, use `docker login` to authenticate to Docker Hub or `docker login g ## Connect to an Insecure Registry -There are two situations where Porter considers a registry to be insecure: [the registry is not secured with TLS](#connect-to-an-unsecured-registry) or [the registry uses an untrusted TLS certificate](#connect-to-a-registry-secured-with-an-untrusted-certificate). +There are two situations where Porter considers a registry to be insecure: [the registry is not secured with TLS](#connect-to-an-unsecured-registry) or [the registry uses an untrusted TLS certificate](#connect-to-a-registry-secured-with-an-untrusted-certificate). The \--insecure-registry flag can be specified for any command that accepts a \--reference flag. ### Prerequisites @@ -54,9 +55,10 @@ Sometimes you may want to connect to a registry that is secured with an untruste For example, when you are running a test or development registry that uses a self-signed certificate or when using a custom root certificate that the system does not trust. Use the the \--insecure-registry flag to allow connecting to the registry. -1. Create a self-signed certificate* +1. Create a self-signed certificate\* **Bash** + ```bash mkdir certs openssl req -new -newkey rsa:4096 -days 365 -nodes \ @@ -66,9 +68,11 @@ Use the the \--insecure-registry flag to allow connecting to the registry. \* Apologies, we are still figuring out how to do the same thing on PowerShell, so please use WSL to accomplish this next task. If you know, please share so we can improve our documentation! + 2. Run a Docker registry that uses your certificate generated in the previous step **Bash** + ```bash docker run --name registry-with-tls -d \ -v `pwd`/certs:/certs \ @@ -76,8 +80,9 @@ Use the the \--insecure-registry flag to allow connecting to the registry. -e REGISTRY_HTTP_TLS_KEY=/certs/registry_auth.key \ -p 0.0.0.0:5002:5000 registry:2 ``` - + **PowerShell** + ```powershell docker run --name registry-with-tls -d ` -v ${pwd}/certs:/certs ` @@ -85,6 +90,7 @@ Use the the \--insecure-registry flag to allow connecting to the registry. -e REGISTRY_HTTP_TLS_KEY=/certs/registry_auth.key ` -p 0.0.0.0:5002:5000 registry:2 ``` + 3. Copy a bundle into your registry ```bash porter copy --insecure-registry --source ghcr.io/getporter/examples/porter-hello:v0.2.0 --destination localhost:5002/hello:v0.2.0 @@ -104,5 +110,6 @@ docker rm -vf registry registry-with-tls ``` ## Next Steps -* [Connect to Docker](/end-users/connect-docker/) -* [Configure Porter](/end-users/configuration/) + +- [Connect to Docker](/end-users/connect-docker/) +- [Configure Porter](/end-users/configuration/) diff --git a/docs/content/operations/create-porter-config.md b/docs/content/docs/operations/create-porter-config.md similarity index 94% rename from docs/content/operations/create-porter-config.md rename to docs/content/docs/operations/create-porter-config.md index 0c1dc87cc..32bf02a01 100644 --- a/docs/content/operations/create-porter-config.md +++ b/docs/content/docs/operations/create-porter-config.md @@ -1,6 +1,7 @@ --- title: Create a Porter Config File description: Learn how to customize Porter's default behavior through configuration file +weight: 4 --- Porter's default behavior, such as log level and default plugins, can be modified through its config file. @@ -19,7 +20,7 @@ Create a file at ~/.porter/config.yaml and open it in your editor. ## Configure Plugins By default, Porter uses the [host plugin](/plugins/host) for resolving secrets and the [mongodb-docker](/plugins/mongodb-docker) as the storage -plugin. In the examples below, we will see how to configure Porter to use other plugins. +plugin. In the examples below, we will see how to configure Porter to use other plugins. ### Change the default secrets plugin @@ -30,6 +31,7 @@ The filesystem plugin stores secrets in your PORTER_HOME directory. It is suitab Once you have the [newly created config file](#create-a-config-file), open in your choice of editor, change the default secret plugin to [filesystem](/plugins/filesystem): + ```yaml default-secrets-plugin: "filesystem" ``` @@ -42,9 +44,10 @@ Use either the [azure-keyvault](/plugins/azure-keyvault) or [hashicorp-vault](/p ### Change the default storage plugin The default mongodb-docker storage plugin runs in a docker container, storing -its data in a volume named `porter-mongodb-docker-plugin-data`. It's not suitable for production use. +its data in a volume named `porter-mongodb-docker-plugin-data`. It's not suitable for production use. To switch it out to another storage plugin, like MongoDB, open Porter's config file again and add below code, setting the url property to a valid connection string: + ```yaml # Use the storage configuration named devdb default-storage: "devdb" @@ -61,6 +64,6 @@ The [mongodb plugin](/plugins/mongodb/) allows Porter to store its data in a Mon suitable for production use. ## Next Steps -* [Configuration File Format](/configuration/) -* [Available Plugins](/plugins/#available-plugins) +- [Configuration File Format](/configuration/) +- [Available Plugins](/plugins/#available-plugins) diff --git a/docs/content/operations/examine-bundles.md b/docs/content/docs/operations/examine-bundles.md similarity index 98% rename from docs/content/operations/examine-bundles.md rename to docs/content/docs/operations/examine-bundles.md index 3202c8f4e..dead4428a 100644 --- a/docs/content/operations/examine-bundles.md +++ b/docs/content/docs/operations/examine-bundles.md @@ -1,8 +1,9 @@ --- title: Examine Bundles description: Figure out how to use a bundle +weight: 2 aliases: -- /examining-bundles/ + - /examining-bundles/ --- Once a bundle has been built, how do users of the bundle figure out how to actually _use_ it? A user could read the `porter.yaml` or the `bundle.json` if they have the bundle locally, but this won't work for a bundle that has been published to an OCI registry. Even when you have them locally, the `bundle.json` and `porter.yaml` aren't the best way to figure out how to use a bundle. How should a user examine the bundle then? Porter has a command called `explain` to help with this! diff --git a/docs/content/operations/manage-installations.md b/docs/content/docs/operations/manage-installations.md similarity index 75% rename from docs/content/operations/manage-installations.md rename to docs/content/docs/operations/manage-installations.md index addb2aa38..8d0881cd5 100644 --- a/docs/content/operations/manage-installations.md +++ b/docs/content/docs/operations/manage-installations.md @@ -1,6 +1,7 @@ --- title: Manage Installations description: Manage bundle installations with Porter +weight: 1 --- When a bundle is installed, an **installation** is created. @@ -13,19 +14,19 @@ Installations that are not defined in a namespace are considered global, and may Each installation has an associated **STATE** and **STATUS** field, which can be examined using [porter installation list]. Before an installation is successfully installed, the STATE is initially set to "defined". After successful installation using [porter install], the STATE is changed "installed". Once an installation has been uninstalled using [porter uninstall] the STATUS is set to "uninstalled". The STATUS field reports the result of the latest action, and can be either "succeeded" or "failed". Here are some possible combinations, assuming [porter install] was the latest action: -State | Status | Meaning ---- | --- | --- | -defined | failed | Porter knows about your installation, but failed to install it. -installed | succeeded | Your installation was successfully installed. +| State | Status | Meaning | +| --------- | --------- | --------------------------------------------------------------- | +| defined | failed | Porter knows about your installation, but failed to install it. | +| installed | succeeded | Your installation was successfully installed. | Assuming instead [porter uninstall] was the latest action, here are some combinations and their meanings: -State | Status | Meaning ---- | --- | --- | -installed | failed | Porter tried to uninstall your installation, but failed. -uninstalled | succeeded | Your installation was successfully uninstalled. +| State | Status | Meaning | +| ----------- | --------- | -------------------------------------------------------- | +| installed | failed | Porter tried to uninstall your installation, but failed. | +| uninstalled | succeeded | Your installation was successfully uninstalled. | -There are two ways to manage installations: [imperative commands](#imperative-commands) or [desired state](#desired-state). +There are two ways to manage installations: [imperative commands](#imperative-commands) or [desired state](#desired-state). They are not mutually exclusive, and you can switch back and forth between them at any time. ## Imperative Commands @@ -51,20 +52,21 @@ Re-applying that same file would result in Porter doing nothing, because the bun However, if you changed a parameter value for the installation, or the bundle version, then Porter would execute the upgrade action. The following will result in Porter executing the bundle: -* The installation has not completed successfully yet. -* The bundle reference has changed. The bundle reference is resolved using the repository, version, digest, and tag fields. -* The resolved parameter values have changed, either because an associated parameter set has changed, the parameters defined on the bundle have changed, or the values resolved by any parameter sets have changed. -* The list of credential set names have changed. Currently, Porter does not compare resolved credential values. -* The porter installation apply command was run with the --force. + +- The installation has not completed successfully yet. +- The bundle reference has changed. The bundle reference is resolved using the repository, version, digest, and tag fields. +- The resolved parameter values have changed, either because an associated parameter set has changed, the parameters defined on the bundle have changed, or the values resolved by any parameter sets have changed. +- The list of credential set names have changed. Currently, Porter does not compare resolved credential values. +- The porter installation apply command was run with the --force. Allowing Porter to manage reconciling the state of the installation is how the [Porter Operator] will work when it is ready, and is well suited for use with GitOps. -With a GitOps workflow, you define the desired state of your applications and infrastructure in code, check it into version control (git), and then trigger workflows when those files are modified. +With a GitOps workflow, you define the desired state of your applications and infrastructure in code, check it into version control (git), and then trigger workflows when those files are modified. ## Next Steps -* [Install a bundle using imperative commands with the Porter CLI](/quickstart/) -* [Define an installation in a file and manage it using desired state](/quickstart/desired-state/) -* [Reference: File Formats](/reference/file-formats/) +- [Install a bundle using imperative commands with the Porter CLI](/quickstart/) +- [Define an installation in a file and manage it using desired state](/quickstart/desired-state/) +- [Reference: File Formats](/reference/file-formats/) [porter installation list]: /cli/porter_installations_list/ [porter installation show]: /cli/porter_installations_show/ diff --git a/docs/content/operations/view-logs.md b/docs/content/docs/operations/view-logs.md similarity index 98% rename from docs/content/operations/view-logs.md rename to docs/content/docs/operations/view-logs.md index 4b579c51c..8758eddcf 100644 --- a/docs/content/operations/view-logs.md +++ b/docs/content/docs/operations/view-logs.md @@ -1,8 +1,9 @@ --- title: View Logs description: View logs from previous runs of Porter +weight: 3 aliases: -- operators/logs/ + - operators/logs/ --- You can view the logs from the most recent execution of a bundle with the diff --git a/docs/content/docs/operator b/docs/content/docs/operator new file mode 120000 index 000000000..a94b94d9e --- /dev/null +++ b/docs/content/docs/operator @@ -0,0 +1 @@ +../../sources/operator/docs/content \ No newline at end of file diff --git a/docs/content/docs/quickstart/_index.md b/docs/content/docs/quickstart/_index.md new file mode 100644 index 000000000..e39a6e604 --- /dev/null +++ b/docs/content/docs/quickstart/_index.md @@ -0,0 +1,13 @@ +--- +title: "Quickstart" +description: "" +weight: 2 +--- + +{{< cards >}} +{{< card link="bundles" title="Bundles" >}} +{{< card link="configuration" title="Configuration" >}} +{{< card link="credentials" title="Credentials" >}} +{{< card link="desired-state" title="Desired State" >}} +{{< card link="parameters" title="Parameters" >}} +{{< /cards >}} diff --git a/docs/content/quickstart/quickstart.md b/docs/content/docs/quickstart/bundles.md similarity index 99% rename from docs/content/quickstart/quickstart.md rename to docs/content/docs/quickstart/bundles.md index 2d9b8b502..57a6b35b8 100644 --- a/docs/content/quickstart/quickstart.md +++ b/docs/content/docs/quickstart/bundles.md @@ -1,7 +1,6 @@ --- -title: "QuickStart: Bundles" +title: "Bundles" descriptions: Learn about bundles and how to install them with Porter -layout: single --- So you're interested in learning more about Porter? Great! This guide will walk you through key concepts of managing bundles. You will use the porter CLI to install, upgrade, and uninstall the bundle. diff --git a/docs/content/quickstart/configuration.md b/docs/content/docs/quickstart/configuration.md similarity index 93% rename from docs/content/quickstart/configuration.md rename to docs/content/docs/quickstart/configuration.md index f25989617..7409b9aeb 100644 --- a/docs/content/quickstart/configuration.md +++ b/docs/content/docs/quickstart/configuration.md @@ -1,5 +1,5 @@ --- -title: "QuickStart: Configuration" +title: "Configuration" descriptions: Control Porter's behavior with its config file layout: single --- @@ -13,10 +13,11 @@ file to achieve some common tasks. ## Create configuration file -First, let's create the configuration file. +First, let's create the configuration file. In your PORTER_HOME directory, by default ~/.porter/, create a file with name config.yaml. + ```yaml touch ~/.porter/config.yaml ``` @@ -25,6 +26,7 @@ touch ~/.porter/config.yaml Instead of explicitly setting namespace for multiple bundles one by one, we can define a global default namespace in the configuration file like so: + ```yaml namespace: "dev" ``` @@ -37,6 +39,7 @@ configured, Porter returns an error when sensitive data is detected during a bun try out porter with bundles that contain sensitive data, such as using sensitive parameters or generating sensitive outputs, copy and paste below code into the configuration file: + ```yaml default-secrets-plugin: "filesystem" ``` @@ -53,4 +56,4 @@ In this QuickStart you learned how to configure Porter to define global default value for bundles and porter itself. You also learned how to work with bundles that contains or produces sensitive data. -* [Learn more about Porter's configuration file](/configuration) +- [Learn more about Porter's configuration file](/configuration) diff --git a/docs/content/quickstart/credentials.md b/docs/content/docs/quickstart/credentials.md similarity index 97% rename from docs/content/quickstart/credentials.md rename to docs/content/docs/quickstart/credentials.md index 65bc9d8bb..18e29d04c 100644 --- a/docs/content/quickstart/credentials.md +++ b/docs/content/docs/quickstart/credentials.md @@ -1,5 +1,5 @@ --- -title: "QuickStart: Credentials" +title: "Credentials" descriptions: Learn how to use a bundle with credentials layout: single --- @@ -149,15 +149,15 @@ Retrieve current user profile from GitHub ## Cleanup -To clean up the resources installed from this QuickStart, use the `porter uninstall` command. +To clean up the resources installed from this QuickStart, use the `porter uninstall` command. ``` porter uninstall examples/credentials-tutorial ``` -## Next Steps +## Next Steps In this QuickStart, you learned how to see the credentials defined on a bundle, generate a credential set telling Porter where to find the credentials values, and pass credentials when executing a bundle. -* [QuickStart: Manage an installation using desired state](/quickstart/desired-state/) -* [Understanding how credentials are resolved](/credentials/) +- [QuickStart: Manage an installation using desired state](/quickstart/desired-state/) +- [Understanding how credentials are resolved](/credentials/) diff --git a/docs/content/quickstart/desired-state.md b/docs/content/docs/quickstart/desired-state.md similarity index 97% rename from docs/content/quickstart/desired-state.md rename to docs/content/docs/quickstart/desired-state.md index f2b4b556b..35b21038b 100644 --- a/docs/content/quickstart/desired-state.md +++ b/docs/content/docs/quickstart/desired-state.md @@ -1,5 +1,5 @@ --- -title: "QuickStart: Desired State" +title: "Desired State" descriptions: Manage an installation by defining its desired state in a file layout: single --- @@ -295,9 +295,9 @@ The installation is out-of-sync, running the uninstall action... In this QuickStart you learned how to manage installations using desired state by defining the installation in a file, and then triggering reconciliation of that installation with the apply command. -* [Understand the difference between imperative commands and desired state](/operations/manage-installations/) -* [Automating Porter with the Porter Operator](/operator/) -* [Create a bundle](/development/create-a-bundle/) +- [Understand the difference between imperative commands and desired state](/operations/manage-installations/) +- [Automating Porter with the Porter Operator](/operator/) +- [Create a bundle](/development/create-a-bundle/) [managing installations]: /operations/manage-installations/ [porter credentials apply]: /cli/porter_credentials_apply/ diff --git a/docs/content/quickstart/parameters.md b/docs/content/docs/quickstart/parameters.md similarity index 92% rename from docs/content/quickstart/parameters.md rename to docs/content/docs/quickstart/parameters.md index d6597ed79..7564c1b68 100644 --- a/docs/content/quickstart/parameters.md +++ b/docs/content/docs/quickstart/parameters.md @@ -1,7 +1,6 @@ --- -title: "QuickStart: Parameters" +title: "Parameters" descriptions: Learn how to use a bundle with parameters -layout: single --- Now that you know how to install a bundle, let's look at how to specify parameters to customize how that bundle is installed. @@ -9,9 +8,9 @@ Bundle authors define parameters in bundles so that end-users can tweak how the A parameter can be a string, integer, boolean or even a json object. Some examples of how parameters can be used in a bundle are: -* Log Level: Default the log level for an application to info. At any time a user can upgrade the bundle to change that parameter to a different value. -* Deployment Region: Let the user specify which region, such as eastus-1, where the application should be deployed. -* Helm Release Name: A bundle that uses Helm will often define a parameter that allows the user to set the release name for the Helm release. +- Log Level: Default the log level for an application to info. At any time a user can upgrade the bundle to change that parameter to a different value. +- Deployment Region: Let the user specify which region, such as eastus-1, where the application should be deployed. +- Helm Release Name: A bundle that uses Helm will often define a parameter that allows the user to set the release name for the Helm release. For optional parameters, bundles set a default value that is used when the user does not specify a value for the parameter. @@ -49,11 +48,11 @@ Parameter sets store multiple parameters and pass them to a bundle using the par With parameter sets you can avoid errors, and the requirement of remembering and manually configuring parameters at the command line. Parameter sets store the parameter name, and the source of the parameter value which could be a: -* hard-coded value -* environment variable -* file -* command -* secret +- hard-coded value +- environment variable +- file +- command +- secret Some parameters may be sensitive, for example a database connection string or oauth token. For improved security, and to limit exposure of sensitive values, it is recommended that you source sensitive parameter values from a secret store such as HashiCorp Vault or Azure Key Vault. @@ -90,7 +89,7 @@ execution completed successfully! ## Create a Parameter Set -Create a parameter set for the hello-llama with the combination of `porter parameters create` and `porter parameters apply` commands. The `create` command will generate a [template file](/reference/file-formats#parameter-set). You need to edit the file to include the corresponding parameters needed for the bundle. After modifying the file, the `apply` command will create the parameter set based on the file. +Create a parameter set for the hello-llama with the combination of `porter parameters create` and `porter parameters apply` commands. The `create` command will generate a [template file](/reference/file-formats#parameter-set). You need to edit the file to include the corresponding parameters needed for the bundle. After modifying the file, the `apply` command will create the parameter set based on the file. ```console $ porter parameters create hello-llama.json @@ -146,15 +145,15 @@ execution completed successfully! ## Cleanup -To clean up the resources installed from this QuickStart, use the `porter uninstall` command. +To clean up the resources installed from this QuickStart, use the `porter uninstall` command. ``` porter uninstall hello-llama ``` -## Next Steps +## Next Steps In this QuickStart, you learned how to see the parameters defined on a bundle, their default values, and customize the installation of a bundle by specifying alternate values. -* [QuickStart: Pass credentials to a bundle](/quickstart/credentials/) -* [Understanding how parameters are resolved](/parameters) +- [QuickStart: Pass credentials to a bundle](/quickstart/credentials/) +- [Understanding how parameters are resolved](/parameters) diff --git a/docs/content/docs/references/_index.md b/docs/content/docs/references/_index.md new file mode 100644 index 000000000..7a76ccbe6 --- /dev/null +++ b/docs/content/docs/references/_index.md @@ -0,0 +1,5 @@ +--- +title: "References" +description: "" +weight: 15 +--- diff --git a/docs/content/docs/references/cli/_index.md b/docs/content/docs/references/cli/_index.md new file mode 100644 index 000000000..5aca45ff2 --- /dev/null +++ b/docs/content/docs/references/cli/_index.md @@ -0,0 +1,15 @@ +--- +title: "Porter Commands" +date: 2023-09-10T01:55:46+05:30 +description: "" +weight: 2 +--- + +**All of the Porter Commands** + +{{< cards >}} +{{< card link="inspecting-bundles" title="Inspecting Bundles" >}} +{{< card link="copy-bundles" title="Copy Bundles" >}} +{{< card link="move-bundles-airgapped" title="Move Bundles Across Airgapped Environments" >}} +{{< card link="collect-diag-porter" title="Collect Diagnostics from Porter" >}} +{{< /cards >}} diff --git a/docs/content/references/cli/archive.md b/docs/content/docs/references/cli/archive.md similarity index 100% rename from docs/content/references/cli/archive.md rename to docs/content/docs/references/cli/archive.md diff --git a/docs/content/references/cli/build.md b/docs/content/docs/references/cli/build.md similarity index 100% rename from docs/content/references/cli/build.md rename to docs/content/docs/references/cli/build.md diff --git a/docs/content/references/cli/bundles.md b/docs/content/docs/references/cli/bundles/_index.md similarity index 96% rename from docs/content/references/cli/bundles.md rename to docs/content/docs/references/cli/bundles/_index.md index 5d9edca82..1c235f914 100644 --- a/docs/content/references/cli/bundles.md +++ b/docs/content/docs/references/cli/bundles/_index.md @@ -1,10 +1,9 @@ --- -title: "porter bundles" +title: "Bundles" +weight: 2 --- -## porter bundles - -Bundle commands +## Bundle Commands ### Synopsis diff --git a/docs/content/references/cli/bundles_archive.md b/docs/content/docs/references/cli/bundles/archive.md similarity index 100% rename from docs/content/references/cli/bundles_archive.md rename to docs/content/docs/references/cli/bundles/archive.md diff --git a/docs/content/references/cli/bundles_build.md b/docs/content/docs/references/cli/bundles/build.md similarity index 100% rename from docs/content/references/cli/bundles_build.md rename to docs/content/docs/references/cli/bundles/build.md diff --git a/docs/content/references/cli/bundles_copy.md b/docs/content/docs/references/cli/bundles/copy.md similarity index 100% rename from docs/content/references/cli/bundles_copy.md rename to docs/content/docs/references/cli/bundles/copy.md diff --git a/docs/content/references/cli/bundles_create.md b/docs/content/docs/references/cli/bundles/create.md similarity index 100% rename from docs/content/references/cli/bundles_create.md rename to docs/content/docs/references/cli/bundles/create.md diff --git a/docs/content/references/cli/bundles_explain.md b/docs/content/docs/references/cli/bundles/explain.md similarity index 100% rename from docs/content/references/cli/bundles_explain.md rename to docs/content/docs/references/cli/bundles/explain.md diff --git a/docs/content/references/cli/bundles_inspect.md b/docs/content/docs/references/cli/bundles/inspect.md similarity index 100% rename from docs/content/references/cli/bundles_inspect.md rename to docs/content/docs/references/cli/bundles/inspect.md diff --git a/docs/content/references/cli/bundles_lint.md b/docs/content/docs/references/cli/bundles/lint.md similarity index 100% rename from docs/content/references/cli/bundles_lint.md rename to docs/content/docs/references/cli/bundles/lint.md diff --git a/docs/content/references/cli/completion.md b/docs/content/docs/references/cli/completion.md similarity index 100% rename from docs/content/references/cli/completion.md rename to docs/content/docs/references/cli/completion.md diff --git a/docs/content/references/cli/copy.md b/docs/content/docs/references/cli/copy.md similarity index 100% rename from docs/content/references/cli/copy.md rename to docs/content/docs/references/cli/copy.md diff --git a/docs/content/references/cli/create.md b/docs/content/docs/references/cli/create.md similarity index 100% rename from docs/content/references/cli/create.md rename to docs/content/docs/references/cli/create.md diff --git a/docs/content/references/cli/credentials.md b/docs/content/docs/references/cli/credentials/_index.md similarity index 95% rename from docs/content/references/cli/credentials.md rename to docs/content/docs/references/cli/credentials/_index.md index 6a11085da..7376ca0ce 100644 --- a/docs/content/references/cli/credentials.md +++ b/docs/content/docs/references/cli/credentials/_index.md @@ -1,10 +1,9 @@ --- -title: "porter credentials" +title: "Credentials" +weight: 3 --- -## porter credentials - -Credentials commands +## Credentials Commands ### Options diff --git a/docs/content/references/cli/credentials_apply.md b/docs/content/docs/references/cli/credentials/apply.md similarity index 100% rename from docs/content/references/cli/credentials_apply.md rename to docs/content/docs/references/cli/credentials/apply.md diff --git a/docs/content/references/cli/credentials_create.md b/docs/content/docs/references/cli/credentials/create.md similarity index 100% rename from docs/content/references/cli/credentials_create.md rename to docs/content/docs/references/cli/credentials/create.md diff --git a/docs/content/references/cli/credentials_delete.md b/docs/content/docs/references/cli/credentials/delete.md similarity index 100% rename from docs/content/references/cli/credentials_delete.md rename to docs/content/docs/references/cli/credentials/delete.md diff --git a/docs/content/references/cli/credentials_edit.md b/docs/content/docs/references/cli/credentials/edit.md similarity index 100% rename from docs/content/references/cli/credentials_edit.md rename to docs/content/docs/references/cli/credentials/edit.md diff --git a/docs/content/references/cli/credentials_generate.md b/docs/content/docs/references/cli/credentials/generate.md similarity index 100% rename from docs/content/references/cli/credentials_generate.md rename to docs/content/docs/references/cli/credentials/generate.md diff --git a/docs/content/references/cli/credentials_list.md b/docs/content/docs/references/cli/credentials/list.md similarity index 100% rename from docs/content/references/cli/credentials_list.md rename to docs/content/docs/references/cli/credentials/list.md diff --git a/docs/content/references/cli/credentials_show.md b/docs/content/docs/references/cli/credentials/show.md similarity index 100% rename from docs/content/references/cli/credentials_show.md rename to docs/content/docs/references/cli/credentials/show.md diff --git a/docs/content/references/cli/explain.md b/docs/content/docs/references/cli/explain.md similarity index 100% rename from docs/content/references/cli/explain.md rename to docs/content/docs/references/cli/explain.md diff --git a/docs/content/references/cli/inspect.md b/docs/content/docs/references/cli/inspect.md similarity index 100% rename from docs/content/references/cli/inspect.md rename to docs/content/docs/references/cli/inspect.md diff --git a/docs/content/references/cli/install.md b/docs/content/docs/references/cli/install.md similarity index 100% rename from docs/content/references/cli/install.md rename to docs/content/docs/references/cli/install.md diff --git a/docs/content/references/cli/installations.md b/docs/content/docs/references/cli/installations/_index.md similarity index 100% rename from docs/content/references/cli/installations.md rename to docs/content/docs/references/cli/installations/_index.md diff --git a/docs/content/references/cli/installations_apply.md b/docs/content/docs/references/cli/installations/apply.md similarity index 100% rename from docs/content/references/cli/installations_apply.md rename to docs/content/docs/references/cli/installations/apply.md diff --git a/docs/content/references/cli/installations_delete.md b/docs/content/docs/references/cli/installations/delete.md similarity index 100% rename from docs/content/references/cli/installations_delete.md rename to docs/content/docs/references/cli/installations/delete.md diff --git a/docs/content/references/cli/installations_install.md b/docs/content/docs/references/cli/installations/install.md similarity index 100% rename from docs/content/references/cli/installations_install.md rename to docs/content/docs/references/cli/installations/install.md diff --git a/docs/content/references/cli/installations_invoke.md b/docs/content/docs/references/cli/installations/invoke.md similarity index 100% rename from docs/content/references/cli/installations_invoke.md rename to docs/content/docs/references/cli/installations/invoke.md diff --git a/docs/content/references/cli/installations_list.md b/docs/content/docs/references/cli/installations/list.md similarity index 100% rename from docs/content/references/cli/installations_list.md rename to docs/content/docs/references/cli/installations/list.md diff --git a/docs/content/references/cli/installations_logs.md b/docs/content/docs/references/cli/installations/logs.md similarity index 100% rename from docs/content/references/cli/installations_logs.md rename to docs/content/docs/references/cli/installations/logs.md diff --git a/docs/content/references/cli/installations_logs_show.md b/docs/content/docs/references/cli/installations/logs_show.md similarity index 100% rename from docs/content/references/cli/installations_logs_show.md rename to docs/content/docs/references/cli/installations/logs_show.md diff --git a/docs/content/references/cli/installations_output.md b/docs/content/docs/references/cli/installations/output.md similarity index 100% rename from docs/content/references/cli/installations_output.md rename to docs/content/docs/references/cli/installations/output.md diff --git a/docs/content/references/cli/installations_output_list.md b/docs/content/docs/references/cli/installations/output_list.md similarity index 100% rename from docs/content/references/cli/installations_output_list.md rename to docs/content/docs/references/cli/installations/output_list.md diff --git a/docs/content/references/cli/installations_output_show.md b/docs/content/docs/references/cli/installations/output_show.md similarity index 100% rename from docs/content/references/cli/installations_output_show.md rename to docs/content/docs/references/cli/installations/output_show.md diff --git a/docs/content/references/cli/installations_runs.md b/docs/content/docs/references/cli/installations/runs.md similarity index 100% rename from docs/content/references/cli/installations_runs.md rename to docs/content/docs/references/cli/installations/runs.md diff --git a/docs/content/references/cli/installations_runs_list.md b/docs/content/docs/references/cli/installations/runs_list.md similarity index 100% rename from docs/content/references/cli/installations_runs_list.md rename to docs/content/docs/references/cli/installations/runs_list.md diff --git a/docs/content/references/cli/installations_show.md b/docs/content/docs/references/cli/installations/show.md similarity index 100% rename from docs/content/references/cli/installations_show.md rename to docs/content/docs/references/cli/installations/show.md diff --git a/docs/content/references/cli/installations_uninstall.md b/docs/content/docs/references/cli/installations/uninstall.md similarity index 100% rename from docs/content/references/cli/installations_uninstall.md rename to docs/content/docs/references/cli/installations/uninstall.md diff --git a/docs/content/references/cli/installations_upgrade.md b/docs/content/docs/references/cli/installations/upgrade.md similarity index 100% rename from docs/content/references/cli/installations_upgrade.md rename to docs/content/docs/references/cli/installations/upgrade.md diff --git a/docs/content/references/cli/invoke.md b/docs/content/docs/references/cli/invoke.md similarity index 100% rename from docs/content/references/cli/invoke.md rename to docs/content/docs/references/cli/invoke.md diff --git a/docs/content/references/cli/lint.md b/docs/content/docs/references/cli/lint.md similarity index 100% rename from docs/content/references/cli/lint.md rename to docs/content/docs/references/cli/lint.md diff --git a/docs/content/references/cli/list.md b/docs/content/docs/references/cli/list.md similarity index 100% rename from docs/content/references/cli/list.md rename to docs/content/docs/references/cli/list.md diff --git a/docs/content/references/cli/logs.md b/docs/content/docs/references/cli/logs.md similarity index 100% rename from docs/content/references/cli/logs.md rename to docs/content/docs/references/cli/logs.md diff --git a/docs/content/references/cli/mixins.md b/docs/content/docs/references/cli/mixins/_index.md similarity index 100% rename from docs/content/references/cli/mixins.md rename to docs/content/docs/references/cli/mixins/_index.md diff --git a/docs/content/references/cli/mixins_create.md b/docs/content/docs/references/cli/mixins/create.md similarity index 100% rename from docs/content/references/cli/mixins_create.md rename to docs/content/docs/references/cli/mixins/create.md diff --git a/docs/content/references/cli/mixins_feed.md b/docs/content/docs/references/cli/mixins/feed.md similarity index 100% rename from docs/content/references/cli/mixins_feed.md rename to docs/content/docs/references/cli/mixins/feed.md diff --git a/docs/content/references/cli/mixins_feed_generate.md b/docs/content/docs/references/cli/mixins/feed_generate.md similarity index 100% rename from docs/content/references/cli/mixins_feed_generate.md rename to docs/content/docs/references/cli/mixins/feed_generate.md diff --git a/docs/content/references/cli/mixins_feed_template.md b/docs/content/docs/references/cli/mixins/feed_template.md similarity index 100% rename from docs/content/references/cli/mixins_feed_template.md rename to docs/content/docs/references/cli/mixins/feed_template.md diff --git a/docs/content/references/cli/mixins_install.md b/docs/content/docs/references/cli/mixins/install.md similarity index 100% rename from docs/content/references/cli/mixins_install.md rename to docs/content/docs/references/cli/mixins/install.md diff --git a/docs/content/references/cli/mixins_list.md b/docs/content/docs/references/cli/mixins/list.md similarity index 100% rename from docs/content/references/cli/mixins_list.md rename to docs/content/docs/references/cli/mixins/list.md diff --git a/docs/content/references/cli/mixins_search.md b/docs/content/docs/references/cli/mixins/search.md similarity index 100% rename from docs/content/references/cli/mixins_search.md rename to docs/content/docs/references/cli/mixins/search.md diff --git a/docs/content/references/cli/mixins_uninstall.md b/docs/content/docs/references/cli/mixins/uninstall.md similarity index 100% rename from docs/content/references/cli/mixins_uninstall.md rename to docs/content/docs/references/cli/mixins/uninstall.md diff --git a/docs/content/references/cli/parameters.md b/docs/content/docs/references/cli/parameters/_index.md similarity index 50% rename from docs/content/references/cli/parameters.md rename to docs/content/docs/references/cli/parameters/_index.md index 70648a450..14ba54d54 100644 --- a/docs/content/references/cli/parameters.md +++ b/docs/content/docs/references/cli/parameters/_index.md @@ -1,10 +1,9 @@ --- -title: "porter parameters" +title: "Parameters" +weight: 4 --- -## porter parameters - -Parameter set commands +## Parameter set commands ### Options @@ -25,12 +24,14 @@ Parameter set commands Most commands require a Docker daemon, either local or remote. -Try our QuickStart https://getporter.org/quickstart to learn how to use Porter. - -- [porter parameters apply](/cli/porter_parameters_apply/) - Apply changes to a parameter set -- [porter parameters create](/cli/porter_parameters_create/) - Create a Parameter Set -- [porter parameters delete](/cli/porter_parameters_delete/) - Delete a Parameter Set -- [porter parameters edit](/cli/porter_parameters_edit/) - Edit Parameter Set -- [porter parameters generate](/cli/porter_parameters_generate/) - Generate Parameter Set -- [porter parameters list](/cli/porter_parameters_list/) - List parameter sets -- [porter parameters show](/cli/porter_parameters_show/) - Show a Parameter Set +Try our [QuickStart](/docs/quickstart) to learn how to use Porter. + +{{< cards >}} +{{< card link="apply" title="Porter Parameters Apply" >}} +{{< card link="create" title="Porter Parameters Create" >}} +{{< card link="delete" title="Porter Parameters Delete" >}} +{{< card link="edit" title="Porter Parameters Edit" >}} +{{< card link="generate" title="Porter Parameters Generate" >}} +{{< card link="list" title="Porter Parameters List" >}} +{{< card link="show" title="Porter Parameters Show" >}} +{{< /cards >}} diff --git a/docs/content/references/cli/parameters_apply.md b/docs/content/docs/references/cli/parameters/apply.md similarity index 75% rename from docs/content/references/cli/parameters_apply.md rename to docs/content/docs/references/cli/parameters/apply.md index 4b97a23d6..042e043c5 100644 --- a/docs/content/references/cli/parameters_apply.md +++ b/docs/content/docs/references/cli/parameters/apply.md @@ -1,9 +1,6 @@ --- -title: "porter parameters apply" -slug: porter_parameters_apply -url: /cli/porter_parameters_apply/ +title: "Porter Parameters Apply" --- -## porter parameters apply Apply changes to a parameter set @@ -14,9 +11,8 @@ Apply changes from the specified file to a parameter set. If the parameter set d Supported file extensions: json and yaml. You can use the generate and show commands to create the initial file: - porter parameters generate myparams --reference SOME_BUNDLE - porter parameters show myparams --output yaml > myparams.yaml - +porter parameters generate myparams --reference SOME_BUNDLE +porter parameters show myparams --output yaml > myparams.yaml ``` porter parameters apply FILE [flags] @@ -44,5 +40,4 @@ porter parameters apply FILE [flags] ### SEE ALSO -* [porter parameters](/cli/porter_parameters/) - Parameter set commands - +- [porter parameters](/cli/porter_parameters/) - Parameter set commands diff --git a/docs/content/docs/references/cli/parameters/create.md b/docs/content/docs/references/cli/parameters/create.md new file mode 100644 index 000000000..ebaa13d61 --- /dev/null +++ b/docs/content/docs/references/cli/parameters/create.md @@ -0,0 +1,39 @@ +--- +title: "Porter Parameters Create" +--- + +Create a Parameter Set + +### Synopsis + +Create a new blank resource for the definition of a Parameter Set. + +``` +porter parameters create [flags] +``` + +### Examples + +``` +porter parameters create FILE [--output yaml|json] +porter parameters create parameter-set.json +porter parameters create parameter-set --output yaml +``` + +### Options + +``` +-h, --help help for create + --output string Parameter set resource file format +``` + +### Options inherited from parent commands + +``` +--experimental strings Comma separated list of experimental features to enable. See https://getporter.org/configuration/#experimental-feature-flags for available feature flags. +--verbosity string Threshold for printing messages to the console. Available values are: debug, info, warning, error. (default "info") +``` + +### SEE ALSO + +- [porter parameters](/cli/porter_parameters/) - Parameter set commands diff --git a/docs/content/references/cli/parameters_delete.md b/docs/content/docs/references/cli/parameters/delete.md similarity index 100% rename from docs/content/references/cli/parameters_delete.md rename to docs/content/docs/references/cli/parameters/delete.md diff --git a/docs/content/references/cli/parameters_edit.md b/docs/content/docs/references/cli/parameters/edit.md similarity index 79% rename from docs/content/references/cli/parameters_edit.md rename to docs/content/docs/references/cli/parameters/edit.md index 474fb8183..3c64354d9 100644 --- a/docs/content/references/cli/parameters_edit.md +++ b/docs/content/docs/references/cli/parameters/edit.md @@ -1,9 +1,6 @@ --- -title: "porter parameters edit" -slug: porter_parameters_edit -url: /cli/porter_parameters_edit/ +title: "Porter Parameters Edit" --- -## porter parameters edit Edit Parameter Set @@ -37,5 +34,4 @@ porter parameters edit [flags] ### SEE ALSO -* [porter parameters](/cli/porter_parameters/) - Parameter set commands - +- [porter parameters](/cli/porter_parameters/) - Parameter set commands diff --git a/docs/content/references/cli/parameters_generate.md b/docs/content/docs/references/cli/parameters/generate.md similarity index 100% rename from docs/content/references/cli/parameters_generate.md rename to docs/content/docs/references/cli/parameters/generate.md diff --git a/docs/content/references/cli/parameters_list.md b/docs/content/docs/references/cli/parameters/list.md similarity index 100% rename from docs/content/references/cli/parameters_list.md rename to docs/content/docs/references/cli/parameters/list.md diff --git a/docs/content/references/cli/parameters_show.md b/docs/content/docs/references/cli/parameters/show.md similarity index 100% rename from docs/content/references/cli/parameters_show.md rename to docs/content/docs/references/cli/parameters/show.md diff --git a/docs/content/references/cli/plugins.md b/docs/content/docs/references/cli/plugins/_index.md similarity index 100% rename from docs/content/references/cli/plugins.md rename to docs/content/docs/references/cli/plugins/_index.md diff --git a/docs/content/references/cli/plugins_install.md b/docs/content/docs/references/cli/plugins/install.md similarity index 100% rename from docs/content/references/cli/plugins_install.md rename to docs/content/docs/references/cli/plugins/install.md diff --git a/docs/content/references/cli/plugins_list.md b/docs/content/docs/references/cli/plugins/list.md similarity index 100% rename from docs/content/references/cli/plugins_list.md rename to docs/content/docs/references/cli/plugins/list.md diff --git a/docs/content/references/cli/plugins_search.md b/docs/content/docs/references/cli/plugins/search.md similarity index 100% rename from docs/content/references/cli/plugins_search.md rename to docs/content/docs/references/cli/plugins/search.md diff --git a/docs/content/references/cli/plugins_show.md b/docs/content/docs/references/cli/plugins/show.md similarity index 100% rename from docs/content/references/cli/plugins_show.md rename to docs/content/docs/references/cli/plugins/show.md diff --git a/docs/content/references/cli/plugins_uninstall.md b/docs/content/docs/references/cli/plugins/uninstall.md similarity index 100% rename from docs/content/references/cli/plugins_uninstall.md rename to docs/content/docs/references/cli/plugins/uninstall.md diff --git a/docs/content/references/cli/porter.md b/docs/content/docs/references/cli/porter.md similarity index 98% rename from docs/content/references/cli/porter.md rename to docs/content/docs/references/cli/porter.md index 8e3b197fe..ab63f749d 100644 --- a/docs/content/references/cli/porter.md +++ b/docs/content/docs/references/cli/porter.md @@ -1,10 +1,9 @@ --- -title: "porter" +title: "Overview" +weight: 1 slug: porter --- -## porter - With Porter you can package your application artifact, client tools, configuration and deployment logic together as a versioned bundle that you can distribute, and then install with a single command. Most commands require a Docker daemon, either local or remote. diff --git a/docs/content/references/cli/publish.md b/docs/content/docs/references/cli/publish.md similarity index 100% rename from docs/content/references/cli/publish.md rename to docs/content/docs/references/cli/publish.md diff --git a/docs/content/references/cli/schema.md b/docs/content/docs/references/cli/schema.md similarity index 100% rename from docs/content/references/cli/schema.md rename to docs/content/docs/references/cli/schema.md diff --git a/docs/content/references/cli/show.md b/docs/content/docs/references/cli/show.md similarity index 100% rename from docs/content/references/cli/show.md rename to docs/content/docs/references/cli/show.md diff --git a/docs/content/references/cli/storage.md b/docs/content/docs/references/cli/storage/_index.md similarity index 100% rename from docs/content/references/cli/storage.md rename to docs/content/docs/references/cli/storage/_index.md diff --git a/docs/content/references/cli/storage_fix-permissions.md b/docs/content/docs/references/cli/storage/fix-permissions.md similarity index 100% rename from docs/content/references/cli/storage_fix-permissions.md rename to docs/content/docs/references/cli/storage/fix-permissions.md diff --git a/docs/content/references/cli/storage_migrate.md b/docs/content/docs/references/cli/storage/migrate.md similarity index 100% rename from docs/content/references/cli/storage_migrate.md rename to docs/content/docs/references/cli/storage/migrate.md diff --git a/docs/content/references/cli/uninstall.md b/docs/content/docs/references/cli/uninstall.md similarity index 100% rename from docs/content/references/cli/uninstall.md rename to docs/content/docs/references/cli/uninstall.md diff --git a/docs/content/references/cli/upgrade.md b/docs/content/docs/references/cli/upgrade.md similarity index 100% rename from docs/content/references/cli/upgrade.md rename to docs/content/docs/references/cli/upgrade.md diff --git a/docs/content/references/cli/version.md b/docs/content/docs/references/cli/version.md similarity index 100% rename from docs/content/references/cli/version.md rename to docs/content/docs/references/cli/version.md diff --git a/docs/content/references/compatible-registries.md b/docs/content/docs/references/compatible-registries.md similarity index 80% rename from docs/content/references/compatible-registries.md rename to docs/content/docs/references/compatible-registries.md index 61e2f5fe1..790db2154 100644 --- a/docs/content/references/compatible-registries.md +++ b/docs/content/docs/references/compatible-registries.md @@ -1,6 +1,7 @@ --- title: Compatible Registries description: Understanding which OCI registries work with CNAB +weight: 3 --- Cloud Native Application Bundles are very new, and support for storing anything @@ -12,17 +13,17 @@ There is an explicit verification using Porter because we use specific libraries such as [cnab-to-oci], and this helps us communicate confidently that we've tested out a particular registry and know that it will work for you. -| Registry | Compatible | -|-----------------------------------------|-----------------| +| Registry | Compatible | +| --------------------------------------- | ---------------- | | Amazon Elastic Container Registry (ECR) | ✅ [Yes](#notes) | | Artifactory | ✅ Yes | | Azure Container Registry (ACR) | ✅ Yes | -| DigitalOcean Container Registry | ✅ Yes | +| DigitalOcean Container Registry | ✅ Yes | | Docker Hub | ✅ Yes | -| GitHub Container Registry (GHCR) | ✅ Yes | +| GitHub Container Registry (GHCR) | ✅ Yes | | GitHub Packages | ❌ No | | GitLab | ❌ No | -| Google Artifact Registry | ✅ Yes | +| Google Artifact Registry | ✅ Yes | | Google Cloud Registry (GCR) | ❌ No | | Harbor 2 | ✅ Yes | | Nexus | ❌ No | @@ -33,7 +34,7 @@ let us know](https://github.com/deislabs/porter/issues/new)! ### Notes -* Amazon Elastic Container Registry (ECR) requires that you create the repository for the installer and the bundle before publishing. +- Amazon Elastic Container Registry (ECR) requires that you create the repository for the installer and the bundle before publishing. [cnab-to-oci]: https://github.com/cnabio/cnab-to-oci [oci-spec]: https://github.com/opencontainers/distribution-spec/blob/master/spec.md diff --git a/docs/content/references/docker-images/_index.md b/docs/content/docs/references/docker-images/_index.md similarity index 63% rename from docs/content/references/docker-images/_index.md rename to docs/content/docs/references/docker-images/_index.md index 13a5d1569..2d8374796 100644 --- a/docs/content/references/docker-images/_index.md +++ b/docs/content/docs/references/docker-images/_index.md @@ -1,8 +1,14 @@ --- title: Docker Images description: Listing of available Docker images of the Porter client +weight: 4 --- We publish Docker images based on our Porter releases that may be helpful to you for your CI pipelines and in other situations where you can't install Porter locally, such as workshops. + +{{< cards >}} +{{< card link="agent" title="Porter Agent Docker Image" >}} +{{< card link="client" title="Porter Client Docker Image" >}} +{{< /cards >}} diff --git a/docs/content/references/docker-images/agent.md b/docs/content/docs/references/docker-images/agent.md similarity index 100% rename from docs/content/references/docker-images/agent.md rename to docs/content/docs/references/docker-images/agent.md diff --git a/docs/content/references/docker-images/client.md b/docs/content/docs/references/docker-images/client.md similarity index 100% rename from docs/content/references/docker-images/client.md rename to docs/content/docs/references/docker-images/client.md diff --git a/docs/content/references/docker-images/workshop.md b/docs/content/docs/references/docker-images/workshop.md similarity index 100% rename from docs/content/references/docker-images/workshop.md rename to docs/content/docs/references/docker-images/workshop.md diff --git a/docs/content/references/examples/_index.md b/docs/content/docs/references/examples/_index.md similarity index 97% rename from docs/content/references/examples/_index.md rename to docs/content/docs/references/examples/_index.md index 62acd094b..87664bdeb 100644 --- a/docs/content/references/examples/_index.md +++ b/docs/content/docs/references/examples/_index.md @@ -1,6 +1,7 @@ --- title: Examples description: Learn how to work with various tools and techniques with these example Porter bundles. +weight: 5 --- These are example bundles that demonstrate various techniques or how to use a specific tool with Porter. diff --git a/docs/content/references/examples/airgap.md b/docs/content/docs/references/examples/airgap.md similarity index 100% rename from docs/content/references/examples/airgap.md rename to docs/content/docs/references/examples/airgap.md diff --git a/docs/content/references/examples/docker.md b/docs/content/docs/references/examples/docker.md similarity index 100% rename from docs/content/references/examples/docker.md rename to docs/content/docs/references/examples/docker.md diff --git a/docs/content/references/examples/hello.md b/docs/content/docs/references/examples/hello.md similarity index 100% rename from docs/content/references/examples/hello.md rename to docs/content/docs/references/examples/hello.md diff --git a/docs/content/docs/references/file-formats/_index.md b/docs/content/docs/references/file-formats/_index.md new file mode 100644 index 000000000..590129989 --- /dev/null +++ b/docs/content/docs/references/file-formats/_index.md @@ -0,0 +1,12 @@ +--- +title: File Formats +description: Defines the format of files used by Porter +weight: 6 +--- + +- [Bundle Manifest](/bundle/manifest/file-format/) +- [Credential Sets](./credential-set/) +- [Parameter Sets](./parameter-set/) +- [Installation](./installation/) +- [Plugins](./plugins/) +- [Porter Operator File Formats](/operator/file-formats/) diff --git a/docs/content/references/file-formats/credential-set/1.0.1.md b/docs/content/docs/references/file-formats/credential-set/1.0.1.md similarity index 100% rename from docs/content/references/file-formats/credential-set/1.0.1.md rename to docs/content/docs/references/file-formats/credential-set/1.0.1.md diff --git a/docs/content/references/file-formats/credential-set/_index.md b/docs/content/docs/references/file-formats/credential-set/_index.md similarity index 100% rename from docs/content/references/file-formats/credential-set/_index.md rename to docs/content/docs/references/file-formats/credential-set/_index.md diff --git a/docs/content/references/file-formats/installation/1.0.2.md b/docs/content/docs/references/file-formats/installation/1.0.2.md similarity index 100% rename from docs/content/references/file-formats/installation/1.0.2.md rename to docs/content/docs/references/file-formats/installation/1.0.2.md diff --git a/docs/content/references/file-formats/installation/_index.md b/docs/content/docs/references/file-formats/installation/_index.md similarity index 100% rename from docs/content/references/file-formats/installation/_index.md rename to docs/content/docs/references/file-formats/installation/_index.md diff --git a/docs/content/references/file-formats/parameter-set/1.0.1.md b/docs/content/docs/references/file-formats/parameter-set/1.0.1.md similarity index 100% rename from docs/content/references/file-formats/parameter-set/1.0.1.md rename to docs/content/docs/references/file-formats/parameter-set/1.0.1.md diff --git a/docs/content/references/file-formats/parameter-set/_index.md b/docs/content/docs/references/file-formats/parameter-set/_index.md similarity index 100% rename from docs/content/references/file-formats/parameter-set/_index.md rename to docs/content/docs/references/file-formats/parameter-set/_index.md diff --git a/docs/content/references/file-formats/plugins/_index.md b/docs/content/docs/references/file-formats/plugins/_index.md similarity index 100% rename from docs/content/references/file-formats/plugins/_index.md rename to docs/content/docs/references/file-formats/plugins/_index.md diff --git a/docs/content/references/library/_index.md b/docs/content/docs/references/library/_index.md similarity index 99% rename from docs/content/references/library/_index.md rename to docs/content/docs/references/library/_index.md index 15f6166a3..ca3da94af 100644 --- a/docs/content/references/library/_index.md +++ b/docs/content/docs/references/library/_index.md @@ -1,6 +1,7 @@ --- title: "Porter Go Library" description: "How to use Porter's Go libraries to programmatically automate Porter" +weight: 8 --- Porter's CLI is built upon a [public Go diff --git a/docs/content/references/linter.md b/docs/content/docs/references/linter.md similarity index 85% rename from docs/content/references/linter.md rename to docs/content/docs/references/linter.md index e621ca9d2..e72658ff6 100644 --- a/docs/content/references/linter.md +++ b/docs/content/docs/references/linter.md @@ -1,16 +1,17 @@ --- title: Porter Lint Messages description: Describes the error and warning messages returned by [porter Lint command](https://getporter.org/cli/porter_lint) +weight: 9 --- -* [exec-100](#exec-100) -* [porter-100](#porter-100) - +- [exec-100](#exec-100) +- [porter-100](#porter-100) ## exec-100 + The exec-100 warning is a message generated by the porter lint command when it detects a potential problem with the use of an embedded Bash script in the exec mixin of a Porter bundle. The exec mixin is a feature of Porter that allows you to run commands on a computer from a porter.yaml manifest file. -The exec-100 warning suggests that it is a best practice to avoid using embedded Bash scripts in exec mixins, and to use scripts instead. +The exec-100 warning suggests that it is a best practice to avoid using embedded Bash scripts in exec mixins, and to use scripts instead. Using embedded Bash scripts can be problematic because they can be difficult to read and understand, and they can also be insecure if they are not written correctly. It's generally a good idea to avoid using embedded Bash scripts if possible, and to use scripts instead. @@ -18,9 +19,9 @@ To fix the problem indicated by the exec-100 warning, you can try replacing any You can find more information about best practices for using the exec mixin on the Porter website at the following URL: https://getporter.org/best-practices/exec-mixin/#use-scripts. - ## porter-100 -The porter-100 error is a message generated by the porter lint command when it detects when a parameter name has one of the reserved prefixes `porter-` and `porter_`. + +The porter-100 error is a message generated by the porter lint command when it detects when a parameter name has one of the reserved prefixes `porter-` and `porter_`. The porter-100 error suggests that a parameter has been created which uses one of the reserved prefixes. @@ -28,4 +29,4 @@ Using a reserved prefix can be problematic as it can overwrite a predefined para To fix the problem indicated by the porter-100 error, you should replace the prefix of any newly defined parameters to not start with "porter". -You can find more information about parameters in following URL: https://getporter.org/quickstart/parameters/. \ No newline at end of file +You can find more information about parameters in following URL: https://getporter.org/quickstart/parameters/. diff --git a/docs/content/references/logo.md b/docs/content/docs/references/logo.md similarity index 98% rename from docs/content/references/logo.md rename to docs/content/docs/references/logo.md index 4c117c570..4e48be479 100644 --- a/docs/content/references/logo.md +++ b/docs/content/docs/references/logo.md @@ -1,13 +1,14 @@ --- title: Porter's Logo description: Meet Michelle, the Porter Cat, and follow her adventures with DevOps +weight: 7 --- Orange cartoon cat standing on two hind legs, wearing a red bellhop hat and bowtie Meet Michelle, the Porter Cat! She has traveled the world to see how people are deploying software, and now she's here to help you use Porter to bundle your -deployments. 🧳🌍 +deployments. 🧳🌍 ## Origin Story @@ -88,7 +89,6 @@ We have a few versions of the logo depending on the space and layout constraints - ### Wordmark Porter's wordmark is set in the @@ -99,8 +99,8 @@ Porter's wordmark is set in the Abril is a bold display typeface created by Veronika Burian & José Scaglione (as [TypeTogether]). These font files are licensed under the Open Font License. -* [Download Abril Fatface][Abril] -* [Open Font License][OFL] +- [Download Abril Fatface][Abril] +- [Open Font License][OFL] Note: For normal page copy please pair a more legible typeface like [Open Sans]. @@ -109,7 +109,7 @@ Note: For normal page copy please pair a more legible typeface like [Open Sans]. [OFL]: https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL [Open Sans]: https://fonts.google.com/specimen/Open+Sans -### Color values: +### Color values: ![Porter color palette demonstrating the primary brand colors, secondary (shading), and the cat mascot colors](https://raw.githubusercontent.com/getporter/community/main/art/styleguide/porter-palette.png) @@ -136,7 +136,6 @@ $orange: #F1CE91; ## Porter Cat - ![Je Suis Porter Cat: Yellow cat standing and waving, wearing a red bellhop hat and bowtie. Underneath is a picture of the cat's face saying "your bundles are packed!". To the side is a repeat of the guidelines below for drawing the Porter Cat mascot](https://github.com/getporter/community/raw/main/art/styleguide/porter-cat-overview.png) ### Guidelines for Drawing Porter Cat @@ -176,7 +175,7 @@ arc away from the arms. Avoid crossing the tail and arms if possible. When the logo needs to be scaled way down, the line-drawing border needs to lighten. At a certain point (say 20px) the border should be dropped for this -simplified rendering (favicon). You can also represent Porter Cat using the +simplified rendering (favicon). You can also represent Porter Cat using the [cat face emoji] 🐱 in your blog posts and on social media. --- diff --git a/docs/content/docs/references/short-links.md b/docs/content/docs/references/short-links.md new file mode 100644 index 000000000..b89a4adad --- /dev/null +++ b/docs/content/docs/references/short-links.md @@ -0,0 +1,33 @@ +--- +title: Project Short Links +description: Useful short links to common project resources +weight: 10 +--- + +The Porter website has a number of useful short links defined to help you quickly navigate to project resources. + +- [/find-issue](/find-issue): View all Porter issues labeled with "help wanted" and "good first issue". +- [/board](/board/): The Porter project board, contains issues for all repositories. +- /board/ISSUE+LABEL: View all issues on the Porter project board with the specified label, using a plus sign in place of spaces. + - [/board/good+first+issue](/board/good+first+issue): Good first issues for new contributors. + - [/board/help+wanted](/board/help+wanted): Issues that are ready for someone to work on. +- [/roadmap](/roadmap/): The Porter project roadmap. +- [/board/pull-requests](/board/pull-requests): Open pull requests across all our repositories. +- /REPO/src/FILE_PATH: Links to a source file in Porter repository on the main branch. + - [/packages/src/mixins/index.json](/packages/src/mixins/index.json): Links to Porter's index of community mixins. + - [/community/src/art/cat/porter-cat-default.png](/community/src/art/cat/porter-cat-default.png): Links to the Porter cat logo. +- /src/FILE_PATH: Links to a source file in Porter's main repository. + - [/src/CONTRIBUTING.md](/src/CONTRIBUTING.md): Links to Porter's new contributors guide. + - [/src/CONTRIBUTORS.md](/src/CONTRIBUTORS.md): Links to Porter's list of contributors. +- [/twitter](/twitter/): The Porter Twitter account. +- [/slack](/slack/): The #porter Slack channel. +- [/mailing-list](/mailing-list/): The Porter mailing list. +- [/zoom/dev](/zoom/dev/): The Porter Community Meeting zoom link. +- [/dev-meeting](/dev-meeting/): The Porter Community Meeting agenda and notes document. +- [/forum](/forum/): The Porter discussion forum. +- [/devstats](/devstats/): The Porter project stats on the CNCF DevStats site. +- [/calendar](/calendar/): The Porter community calendar. +- [/videos](/videos/): The Porter YouTube channel. +- VERSION/FILE_PATH: Downloads a Porter release asset from our GitHub releases. + - [/latest/install-mac.sh](/latest/install-mac.sh): Downloads the macOS Porter installation script for the most recent stable version of Porter. + - [/v0.38.4/porter-darwin-amd64](/v0.38.4/porter-darwin-amd64): Downloads the macOS Porter binary for v0.38.4 diff --git a/docs/content/references/version-strategy/index.md b/docs/content/docs/references/version-strategy/index.md similarity index 65% rename from docs/content/references/version-strategy/index.md rename to docs/content/docs/references/version-strategy/index.md index 864db7ace..36c1585e1 100644 --- a/docs/content/references/version-strategy/index.md +++ b/docs/content/docs/references/version-strategy/index.md @@ -1,15 +1,16 @@ --- title: Version Strategy description: How Porter is versioned +weight: 11 --- Porter uses GitHub flow for the most part: -* Branches are created from **main** and merged back into main. -* Changes to main are made available through our **canary** builds. +- Branches are created from **main** and merged back into main. +- Changes to main are made available through our **canary** builds. These represent the most recent changes to main, and are not stable. -* Every week or so the maintainers determine if there are changes we want to release, and once canary is stable, we tag main with a semantic version. -* You can get the most recent stable release by using the **latest** tag, which is a pointer to the most recent tagged release of the main branch. +- Every week or so the maintainers determine if there are changes we want to release, and once canary is stable, we tag main with a semantic version. +- You can get the most recent stable release by using the **latest** tag, which is a pointer to the most recent tagged release of the main branch. ## Version Schema @@ -17,11 +18,11 @@ Porter's version numbers adhere [semver v2], of `MAJOR.MINOR.PATCH-PRERELEASE.PR The version tracks changes to Porter's configuration files, commands, data format, or behavior. Porter's library is not yet stable and changes to the underlying Porter code, including breaking changes to downstream consumers, is not encoded in Porter's version number. -* **MAJOR** - Indicates a breaking change. Until we reach v1, there isn't any indication in the version number to indicate breaking changes. -* **MINOR** - Indicates a new feature. Until we reach v1, breaking changes can be included in a minor release. -* **PATCH** - Indicates a bug fix. -* **PRERELEASE** - The name of the prerelease phase, such as alpha, beta or rc (release candidate). -* **PRERELEASE_NUMBER** - The number of releases in the specified prerelease phase. +- **MAJOR** - Indicates a breaking change. Until we reach v1, there isn't any indication in the version number to indicate breaking changes. +- **MINOR** - Indicates a new feature. Until we reach v1, breaking changes can be included in a minor release. +- **PATCH** - Indicates a bug fix. +- **PRERELEASE** - The name of the prerelease phase, such as alpha, beta or rc (release candidate). +- **PRERELEASE_NUMBER** - The number of releases in the specified prerelease phase. For example, v1.0.0-alpha.2 is the second v1 alpha release. [semver v2]: https://semver.org/spec/v2.0.0.html diff --git a/docs/content/references/version-strategy/v1-branch-strategy.jpg b/docs/content/docs/references/version-strategy/v1-branch-strategy.jpg similarity index 100% rename from docs/content/references/version-strategy/v1-branch-strategy.jpg rename to docs/content/docs/references/version-strategy/v1-branch-strategy.jpg diff --git a/docs/content/troubleshooting/troubleshooting.md b/docs/content/docs/troubleshooting/_index.md similarity index 93% rename from docs/content/troubleshooting/troubleshooting.md rename to docs/content/docs/troubleshooting/_index.md index 433c5ad0c..e50b3b149 100644 --- a/docs/content/troubleshooting/troubleshooting.md +++ b/docs/content/docs/troubleshooting/_index.md @@ -1,13 +1,14 @@ --- title: Troubleshooting description: Error messages you may see from Porter and how to handle them +weight: 10 --- With any porter error, it can really help to re-run the command again with the `--debug` flag. -* [Examine Previous Logs](#examine-previous-logs) -* [Mapping values are not allowed in this context](#mapping-values-are-not-allowed-in-this-context) -* [You see apt errors when you use a custom Dockerfile](#you-see-apt-errors-when-you-use-a-custom-dockerfile) +- [Examine Previous Logs](#examine-previous-logs) +- [Mapping values are not allowed in this context](#mapping-values-are-not-allowed-in-this-context) +- [You see apt errors when you use a custom Dockerfile](#you-see-apt-errors-when-you-use-a-custom-dockerfile) ## Examine Previous Logs @@ -46,12 +47,13 @@ exec: : yaml: line 5: mapping values are not allowed in this context ``` -Right now Porter [doesn't preserve the wrapping quotes around mapping values][851], so if you +Right now Porter [doesn't preserve the wrapping quotes around mapping values][851], so if you have lines that contain a colon followed by a space `: ` or a hash `#` preceeded by a space, then things will get tricky. If you can remove the space, or wrap the entire line in an extra quote, that should workaround the problem. [851]: https://github.com/getporter/porter/issues/851 + **before** ```yaml diff --git a/docs/content/install.md b/docs/content/install.md deleted file mode 100644 index 8370438fd..000000000 --- a/docs/content/install.md +++ /dev/null @@ -1,276 +0,0 @@ ---- -title: Install Porter -description: Installing the Porter client and mixins ---- - -> Join our [mailing list] for announcements of releases and announcements of new features. -> Connect with other Porter users and contributors on [Slack]. - -* [Install or Upgrade Porter](#install-or-upgrade) -* [Clean Install](#clean-install) -* [Install Latest Release](#latest) -* [Install a Canary Build](#canary) -* [Install a Mixin](#mixins) -* [Install a Plugin](#plugins) -* [Install the Porter VS Code Extension][vscode-ext] -* [Customize the Installation Script](#install-script-parameters) -* [Configure Command Completion](#command-completion) - -# Install or Upgrade - -The examples below use a hard-coded version of Porter. There may be a newer version available which you can check for on our [release] page. -Set VERSION to the most recent [release] version number. - -**MacOS** - -```bash -export VERSION="v1.0.14" -curl -L https://cdn.porter.sh/$VERSION/install-mac.sh | bash -``` - -**Linux** - -```bash -export VERSION="v1.0.14" -curl -L https://cdn.porter.sh/$VERSION/install-linux.sh | bash -``` - -**Windows** - -```powershell -$VERSION="v1.0.14" -(New-Object System.Net.WebClient).DownloadFile("https://cdn.porter.sh/$VERSION/install-windows.ps1", "install-porter.ps1") -.\install-porter.ps1 -``` - -## Running multiple versions - -If you have multiple versions of Porter installed on the same machine, you can switch between then by setting the PORTER_HOME environment variable and adding the desired version of Porter to your PATH. - -**Bash** - -```bash -export PORTER_HOME=~/.porterv1 -export PATH=$PORTER_HOME:$PATH -# Check that you are using the desired version of porter -porter version -``` - -**Windows** - -```powershell -$env:PORTER_HOME="$env:USERPROFILE\.porterv1" -$env:PATH+=";$env:PORTER_HOME" -# Check that you are using the desired version of porter -porter version -``` - -[vscode-ext]: https://marketplace.visualstudio.com/items?itemName=ms-kubernetes-tools.porter-vscode -[ps-link]: https://www.howtogeek.com/126469/how-to-create-a-powershell-profile/ -[mailing list]: https://groups.io/g/porter -[Slack]: /community/#slack - -# Clean Install - -To perform a clean installation of Porter: - -1. Remove the PORTER_HOME directory, which by default is located at `~/.porter`. -2. Start over with a fresh database. If you were using an external database, update your porter configuration file to use a different database. - - Otherwise, if you had not specified a storage plugin or database in the configuration file, then your database is located in a container in Docker. - Remove the mongodb container and volume, so that when Porter is run again, it creates a new database: - ``` - docker rm -f porter-mongodb-docker-plugin - docker volume rm porter-mongodb-docker-plugin-data - ``` -3. Install Porter following the instructions on this page. - -# Latest - -Install the most recent tagged v1 release of porter and the [exec mixin]. - -## Latest MacOS -``` -curl -L https://cdn.porter.sh/latest/install-mac.sh | bash -``` - -## Latest Linux -``` -curl -L https://cdn.porter.sh/latest/install-linux.sh | bash -``` - -## Latest Windows -You will need to create a [PowerShell Profile][ps-link] if you do not have one. - -``` -iwr "https://cdn.porter.sh/latest/install-windows.ps1" -UseBasicParsing | iex -``` - -# Canary - -Install the most recent build of Porter and the [exec mixin] from the main branch. - -This saves you the trouble of cloning and building porter and its mixin -repositories yourself. The build may not be stable, but it will have new features -that we are developing. - -## Canary MacOS -``` -curl -L https://cdn.porter.sh/canary/install-mac.sh | bash -``` - -## Canary Linux -``` -curl -L https://cdn.porter.sh/canary/install-linux.sh | bash -``` - -## Canary Windows -You will need to create a [PowerShell Profile][ps-link] if you do not have one. - -``` -iwr "https://cdn.porter.sh/canary/install-windows.ps1" -UseBasicParsing | iex -``` - -# Mixins - -We have a number of [mixins](/mixins) to help you get started. -Only the [exec mixin] is installed with Porter v1.0.0+, other mixins should be installed separately. - -You can update an existing mixin, or install a new mixin using the `porter mixin -install` command: - -```console -$ porter mixin install terraform --version v1.0.0-rc.1 -installed terraform mixin v1.0.0-rc.1 (090064b) -``` - -All the Porter-authored mixins are published to `https://cdn.porter.sh/mixins/atom.xml`. - -# Plugins - -We have a couple [plugins](/plugins) which extend Porter and integrate with other cloud providers and software. - -You can update an existing plugin, or install a new plugin using the `porter plugin -install` command: - -```console -$ porter plugin install azure --version v1.0.0-rc.1 -installed azure plugin v1.0.0-rc.1 (d0d98f4) -``` - -All the Porter-authored plugins are published to `https://cdn.porter.sh/plugins/atom.xml`. - - -[releases]: https://github.com/getporter/porter/releases - -# Install Script Parameters - -The installation scripts provide the following parameters. Parameters can be specified with environment variables for the macOS and Linux scripts, and on Windows they are named parameters in the script. - -## PORTER_HOME - -Location where Porter is installed (defaults to ~/.porter). - -**Posix Shells** -```bash -export PORTER_HOME=/alt/porter/home -curl -L REPLACE_WITH_INSTALL_URL | bash -``` - -**PowerShell** -```powershell -iwr REPLACE_WITH_INSTALL_URL -OutFile install-porter.ps1 -UseBasicParsing -.\install-porter.ps1 -PORTER_HOME C:\alt\porter\home -``` - -## PORTER_MIRROR - -Base URL where Porter assets, such as binaries and atom feeds, are downloaded. -This lets you set up an internal mirror. Note that atom feeds and index files -should be updated in the mirror to point to the mirrored location. Porter does -not alter the contents of these files. - -**Posix Shells** -```bash -export PORTER_MIRROR=https://example.com/porter -curl -L REPLACE_WITH_INSTALL_URL | bash -``` - -**PowerShell** -```powershell -iwr REPLACE_WITH_INSTALL_URL -OutFile install-porter.ps1 -UseBasicParsing -.\install-porter.ps1 -PORTER_MIRROR https://example.com/porter -``` - -### URL Structure - -Configuring a mirror of Porter's assets is out of scope of this document. -Reach out on the Porter [mailing list] for assistance. - -Below is the general structure for Porter's asset URLs: - -``` -PERMALINK/ - - install-linux.sh - - install-mac.sh - - install-windows.ps1 - - porter-GOOS-GOARCH[FILE_EXT] -mixins/ - - atom.xml - - index.json - - MIXIN/PERMALINK/MIXIN-GOOS-GOARCH[FILE_EXT] -plugins/ - - atom.xml - - index.json - - PLUGIN/PERMALINK/PLUGIN-GOOS-GOARCH[FILE_EXT] -``` - -# Command Completion - -Porter provides autocompletion support for Bash, Fish, Zsh, and PowerShell. - -> If you use Bash the completion script depends on Bash v4.1 or newer and bash-completion v2. - -> The default version for macOS is Bash v3.2 and bash-completion v1. The completion command will not work properly with these versions. -> The Kubernetes project has detailed information for upgrading Bash and installing bash-completion [here]. - -[here]: https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#enable-shell-autocompletion - -### Initial Setup -The initial setup is to generate a completion script file and have your shell environment source it when you start your shell. - - The completion command will generate its output to standard out and you can capture the output into a file. This file should be put in a place where your shell reads completion files. - -An example for Bash: -```bash -porter completion bash > /usr/local/etc/bash_completion.d/porter -``` - -Once your completion script file is in place you will have to source it for your current shell or start a new shell session. - - -### Completion Usage - -To list available commands for Porter, in your terminal run -```console -$ porter [tab][tab] -``` - -To find a specific command that starts with _bu_ -```console -$ porter bu[tab][tab] - -build bundles -``` -Commands that have sub-commands will be displayed with completions as well - -```console -$ porter credentials [tab][tab] - -delete edit generate list show -``` - -> Note: Completion commands are available for Porter's built-in commands and flags, future plans include dynamic completion for your project. - -[exec mixin]: /mixins/exec/ -[release]: https://github.com/getporter/porter/releases diff --git a/docs/content/references/cli/parameters_create.md b/docs/content/references/cli/parameters_create.md deleted file mode 100644 index 97adffb7a..000000000 --- a/docs/content/references/cli/parameters_create.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "porter parameters create" -slug: porter_parameters_create -url: /cli/porter_parameters_create/ ---- -## porter parameters create - -Create a Parameter Set - -### Synopsis - -Create a new blank resource for the definition of a Parameter Set. - -``` -porter parameters create [flags] -``` - -### Examples - -``` - - porter parameters create FILE [--output yaml|json] - porter parameters create parameter-set.json - porter parameters create parameter-set --output yaml -``` - -### Options - -``` - -h, --help help for create - --output string Parameter set resource file format -``` - -### Options inherited from parent commands - -``` - --experimental strings Comma separated list of experimental features to enable. See https://getporter.org/configuration/#experimental-feature-flags for available feature flags. - --verbosity string Threshold for printing messages to the console. Available values are: debug, info, warning, error. (default "info") -``` - -### SEE ALSO - -* [porter parameters](/cli/porter_parameters/) - Parameter set commands - diff --git a/docs/content/references/file-formats/_index.md b/docs/content/references/file-formats/_index.md deleted file mode 100644 index bd80e5aa3..000000000 --- a/docs/content/references/file-formats/_index.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: File Formats -description: Defines the format of files used by Porter -layout: single ---- - -* [Bundle Manifest](/bundle/manifest/file-format/) -* [Credential Sets](./credential-set/) -* [Parameter Sets](./parameter-set/) -* [Installation](./installation/) -* [Plugins](./plugins/) -* [Porter Operator File Formats](/operator/file-formats/) diff --git a/docs/content/references/short-links.md b/docs/content/references/short-links.md deleted file mode 100644 index 3b6fb03cb..000000000 --- a/docs/content/references/short-links.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Short Links -description: Useful short links to common project resources ---- - -The Porter website has a number of useful short links defined to help you quickly navigate to project resources. - -* [/find-issue](/find-issue): View all Porter issues labeled with "help wanted" and "good first issue". -* [/board](/board/): The Porter project board, contains issues for all repositories. -* /board/ISSUE+LABEL: View all issues on the Porter project board with the specified label, using a plus sign in place of spaces. - * [/board/good+first+issue](/board/good+first+issue): Good first issues for new contributors. - * [/board/help+wanted](/board/help+wanted): Issues that are ready for someone to work on. -* [/roadmap](/roadmap/): The Porter project roadmap. -* [/board/pull-requests](/board/pull-requests): Open pull requests across all our repositories. -* /REPO/src/FILE_PATH: Links to a source file in Porter repository on the main branch. - * [/packages/src/mixins/index.json](/packages/src/mixins/index.json): Links to Porter's index of community mixins. - * [/community/src/art/cat/porter-cat-default.png](/community/src/art/cat/porter-cat-default.png): Links to the Porter cat logo. -* /src/FILE_PATH: Links to a source file in Porter's main repository. - * [/src/CONTRIBUTING.md](/src/CONTRIBUTING.md): Links to Porter's new contributors guide. - * [/src/CONTRIBUTORS.md](/src/CONTRIBUTORS.md): Links to Porter's list of contributors. -* [/twitter](/twitter/): The Porter Twitter account. -* [/slack](/slack/): The #porter Slack channel. -* [/mailing-list](/mailing-list/): The Porter mailing list. -* [/zoom/dev](/zoom/dev/): The Porter Community Meeting zoom link. -* [/dev-meeting](/dev-meeting/): The Porter Community Meeting agenda and notes document. -* [/forum](/forum/): The Porter discussion forum. -* [/devstats](/devstats/): The Porter project stats on the CNCF DevStats site. -* [/calendar](/calendar/): The Porter community calendar. -* [/videos](/videos/): The Porter YouTube channel. -* VERSION/FILE_PATH: Downloads a Porter release asset from our GitHub releases. - * [/latest/install-mac.sh](/latest/install-mac.sh): Downloads the macOS Porter installation script for the most recent stable version of Porter. - * [/v0.38.4/porter-darwin-amd64](/v0.38.4/porter-darwin-amd64): Downloads the macOS Porter binary for v0.38.4 - \ No newline at end of file diff --git a/docs/data/icons.yaml b/docs/data/icons.yaml new file mode 100644 index 000000000..6dca5ec21 --- /dev/null +++ b/docs/data/icons.yaml @@ -0,0 +1,7 @@ +knowledge: +metadata: +package: +secure: +team: +time: +cncf: diff --git a/docs/go.mod b/docs/go.mod new file mode 100644 index 000000000..96e7855c1 --- /dev/null +++ b/docs/go.mod @@ -0,0 +1,5 @@ +module github.com/getporter/porter + +go 1.20 + +require github.com/imfing/hextra v0.2.5 // indirect diff --git a/docs/go.sum b/docs/go.sum new file mode 100644 index 000000000..529c7cd22 --- /dev/null +++ b/docs/go.sum @@ -0,0 +1,2 @@ +github.com/imfing/hextra v0.2.5 h1:lOuQAHxkehJ3PQsDMe+BHnh4Ig4pyZbjhqnUUuBsrE8= +github.com/imfing/hextra v0.2.5/go.mod h1:cEfel3lU/bSx7lTE/+uuR4GJaphyOyiwNR3PTqFTXpI= diff --git a/docs/hugo.toml b/docs/hugo.toml new file mode 100644 index 000000000..da294e311 --- /dev/null +++ b/docs/hugo.toml @@ -0,0 +1,93 @@ +baseURL = "https://getporter.org/" +languageCode = "en-us" +title = "Porter" +canonifyURLs = "false" +relativeURLs = "false" +pluralizeListTitles = "false" +plainIdAnchors = "true" +defaultContentLanguage = "en" +enableInlineShortcodes= true + +[[module.imports]] + path = 'github.com/imfing/hextra' + +[markup] + defaultMarkdownHandler = "goldmark" + + [markup.goldmark.renderer] + unsafe = true + + [markup.tableOfContents] + endLevel = 3 + ordered = false + startLevel = 2 + + [markup.highlight] + noClasses= false + +# Default Page Parameters +[params] + title = "Porter" + author = "Carolyn Van Slyck" + description = "A Friendly Cloud Installer for Cloud Native Application Bundles" + image = "images/porter-twitter-card.png" + + [params.navbar.logo] + path = "images/porter-icon-badge.png" + width = 80 + height = 50 + + [params.footer] + displayCopyright = true + displayPoweredBy = true + + +# Docs Navigation +[[menu.main]] +name = "Install" +url = "/docs/getting-started/install-porter" +identifier = "install-porter" +weight = 1 + +[[menu.main]] +name = "QuickStart" +url = "/docs/quickstart" +identifier = "quickstart" +weight = 2 + +[[menu.main]] +name = "Blog" +url = "/blog" +identifier = "blog" +weight = 3 + +[[menu.main]] +name = "Community" +url = "/community" +identifier = "community" +weight = 4 + +[[menu.main]] +name = "Learning" +url = "/docs/learn" +identifier = "learn" +weight = 5 + +[[menu.main]] +name = "Docs" +url = "/docs" +identifier = "docs" +weight = 6 + +[[menu.main]] +name = "Search" +weight = 7 + [menu.main.params] + type = "search" + +[[menu.main]] +name = "GitHub" +weight = 8 +url = "https://github.com/getporter/porter" + [menu.main.params] + icon = "github" diff --git a/docs/i18n/en.yaml b/docs/i18n/en.yaml new file mode 100644 index 000000000..9aa9eb581 --- /dev/null +++ b/docs/i18n/en.yaml @@ -0,0 +1,7 @@ +copyright: "© The Porter Authors 2023 + + +© 2023 The Linux Foundation. All rights reserved. + + +The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see the [Trademark Usage page](https://www.linuxfoundation.org/legal/trademark-usage)." \ No newline at end of file diff --git a/docs/layouts/404.html b/docs/layouts/404.html new file mode 100644 index 000000000..e21e3fcc3 --- /dev/null +++ b/docs/layouts/404.html @@ -0,0 +1,19 @@ +{{ define "main" }} +
+
+

+ 404 +

+

+ The Page you are looking for doesn't exist - + Go Home +

+
+
+{{- end -}} diff --git a/docs/layouts/index.html b/docs/layouts/index.html new file mode 100644 index 000000000..6320eb9ef --- /dev/null +++ b/docs/layouts/index.html @@ -0,0 +1,141 @@ +{{ define "main" }} +
+ {{ partial "sidebar.html" (dict "context" . "disableSidebar" true) }} +
+
+

+ + Your application, and everything you need to deploy, together + + 💖 +

+

+ Package your application, client tools, configuration, and deployment logic into an installer that you can + distribute and run with a single command. +

+
+ {{- $docsURL := "docs" | relURL -}} + + Get Started + +
+
+
+
+ {{ template "cta-card" (dict + "title" "What is Porter?" + "subtitle" "Take everything you need to do a deployment, the application itself and the entire process to deploy it: command-line tools, configuration files, secrets, and bash scripts to glue it all together. Package that into a versioned bundle distributed over standard Docker registries or plain tgz files.
Now anyone can install your application without deep knowledge of your deployment process, or following a step-by-step deployment doc, regardless of the tech stack." + "style" "background: radial-gradient(ellipse at 50% 80%,rgba(45,175,233,0.15),hsla(0,0%,100%,0));" + ) + }} +
+
+ {{ template "cta-card" (dict + "title" "When would I use Porter?" + "subtitle" "Porter is never a replacement for an existing tool. Think of it as doing extra nice things on top of what those great tools already do!" + "style" "background: radial-gradient(ellipse at 50% 80%,rgba(246,204,105,0.15),hsla(0,0%,100%,0));" + ) + }} +
+ +

+

+ +
+ {{ template "hextra-feature-card" (dict + "title" "Package" + "icon" "package" + "style" "background: radial-gradient(ellipse at 60% 500%,rgba(45,175,233,0.15),hsla(0,0%,100%,0));" + "subtitle" "Package everything you use to deploy in a single artifact that can be easily distributed over registries and across air gapped networks." + ) + }} + {{ template "hextra-feature-card" (dict + "title" "Secure" + "icon" "secure" + "style" "background: radial-gradient(ellipse at 60% 500%,rgba(246,204,105,0.15),hsla(0,0%,100%,0));" + "subtitle" "JIT secret injection, immutable artifacts, and container security are just some of Porter's security features." + ) + }} + {{ template "hextra-feature-card" (dict + "title" "Time" + "icon" "time" + "style" "background: radial-gradient(ellipse at 60% 500%,rgba(208,0,82,0.15),hsla(0,0%,100%,0));" + "subtitle" "Save time because the bundle contains the exact version of your deployment tools. Users don’t need to find and install tools or switch between versions." + ) + }} + {{ template "hextra-feature-card" (dict + "title" "Rich Metadata" + "icon" "metadata" + "style" "background: radial-gradient(ellipse at 60% 500%,rgba(246,204,105,0.15),hsla(0,0%,100%,0));" + "subtitle" "View rich metadata about a deployment. Run porter explain to quickly see how to customize an installation with parameters, what credentials are needed by the bundle. There is no need for detailed installation documentation." + ) + }} + {{ template "hextra-feature-card" (dict + "title" "Operational Knowledge" + "icon" "knowledge" + "style" "background: radial-gradient(ellipse at 60% 500%,rgba(208,0,82,0.15),hsla(0,0%,100%,0));" + "subtitle" "Reduce the operational knowledge required to manage an application. Often deployments involve multiple tools, such as terraform, helm, kubectl; all glued together with bash scripts. Bundles abstract away the details of a deployment, and provide a consistent set of commands to deploy any application. " + ) + }} + {{ template "hextra-feature-card" (dict + "title" "Team" + "icon" "team" + "style" "background: radial-gradient(ellipse at 60% 500%,rgba(45,175,233,0.15),hsla(0,0%,100%,0));" + "subtitle" "Manage deployments securely as a team. Porter uses secure just-in-time credential injection and remembers the parameters last used to deploy. Teammates don’t need to hunt down the proper values themselves, or copy sensitive credentials into local environment variables or files. Secrets remain secure in a secret store such as Hashicorp Vault or Azure Key Vault." + ) + }} +
+
+
+
+ +{{- end -}} + +{{- define "cta-card" -}} + {{- $title := .title -}} + {{- $subtitle := .subtitle -}} + {{- $class := .class -}} + {{- $style := .style -}} + +
+
+

{{ $title }}

+

{{ $subtitle | markdownify }}

+
+
+{{- end -}} + +{{- define "hextra-feature-card" -}} + {{- $title := .title -}} + {{- $subtitle := .subtitle -}} + {{- $class := .class -}} + {{- $icon := .icon -}} + {{- $image := .image -}} + {{- $imageClass := .imageClass -}} + {{- $style := .style -}} + +
+
+

+ {{- partial "utils/icon.html" (dict "name" $icon) -}} + {{ $title }} +

+

{{ $subtitle | markdownify }}

+
+
+{{- end -}} diff --git a/docs/static/android-chrome-192x192.png b/docs/static/android-chrome-192x192.png new file mode 100644 index 000000000..6e061d6e3 Binary files /dev/null and b/docs/static/android-chrome-192x192.png differ diff --git a/docs/static/android-chrome-512x512.png b/docs/static/android-chrome-512x512.png new file mode 100644 index 000000000..f4c358d86 Binary files /dev/null and b/docs/static/android-chrome-512x512.png differ diff --git a/docs/static/apple-touch-icon.png b/docs/static/apple-touch-icon.png new file mode 100644 index 000000000..9553c0d34 Binary files /dev/null and b/docs/static/apple-touch-icon.png differ diff --git a/docs/static/favicon-16x16.png b/docs/static/favicon-16x16.png new file mode 100644 index 000000000..feaaca209 Binary files /dev/null and b/docs/static/favicon-16x16.png differ diff --git a/docs/static/favicon-32x32.png b/docs/static/favicon-32x32.png new file mode 100644 index 000000000..1a3345d8c Binary files /dev/null and b/docs/static/favicon-32x32.png differ diff --git a/docs/static/favicon-dark.svg b/docs/static/favicon-dark.svg new file mode 100644 index 000000000..4f4556243 --- /dev/null +++ b/docs/static/favicon-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/static/favicon.ico b/docs/static/favicon.ico new file mode 100644 index 000000000..2727e7474 Binary files /dev/null and b/docs/static/favicon.ico differ diff --git a/docs/static/favicon.svg b/docs/static/favicon.svg new file mode 100644 index 000000000..4f4556243 --- /dev/null +++ b/docs/static/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/static/images/cncf-color.svg b/docs/static/images/cncf-color.svg new file mode 100644 index 000000000..32b7afe6d --- /dev/null +++ b/docs/static/images/cncf-color.svg @@ -0,0 +1 @@ + diff --git a/docs/static/images/favicon.ico b/docs/static/images/favicon.ico deleted file mode 100644 index d3102622b..000000000 Binary files a/docs/static/images/favicon.ico and /dev/null differ diff --git a/docs/static/images/knowledge.svg b/docs/static/images/knowledge.svg new file mode 100644 index 000000000..f0a2c9fcc --- /dev/null +++ b/docs/static/images/knowledge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/static/images/metadata.svg b/docs/static/images/metadata.svg new file mode 100644 index 000000000..eed59a868 --- /dev/null +++ b/docs/static/images/metadata.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/static/images/package.svg b/docs/static/images/package.svg new file mode 100644 index 000000000..bf60f19fb --- /dev/null +++ b/docs/static/images/package.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/static/images/secure.svg b/docs/static/images/secure.svg new file mode 100644 index 000000000..d28af8e12 --- /dev/null +++ b/docs/static/images/secure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/static/images/team.svg b/docs/static/images/team.svg new file mode 100644 index 000000000..0789bbe7a --- /dev/null +++ b/docs/static/images/team.svg @@ -0,0 +1 @@ + diff --git a/docs/static/images/time.svg b/docs/static/images/time.svg new file mode 100644 index 000000000..9b05d1492 --- /dev/null +++ b/docs/static/images/time.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/static/site.webmanifest b/docs/static/site.webmanifest new file mode 100644 index 000000000..6c9e74949 --- /dev/null +++ b/docs/static/site.webmanifest @@ -0,0 +1,20 @@ +{ + "name": "Porter", + "short_name": "Porter", + "start_url": "index.html", + "icons": [ + { + "src": "android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" + } \ No newline at end of file diff --git a/docs/themes/porter/assets/sass/docs-404.scss b/docs/themes/porter/assets/sass/docs-404.scss deleted file mode 100755 index fc58c8955..000000000 --- a/docs/themes/porter/assets/sass/docs-404.scss +++ /dev/null @@ -1,17 +0,0 @@ -.section-404 { - position: relative; - min-height: 670px; - - #particles-js { - position: absolute; - width: 100%; - } - - h1 { - text-transform: none; - font-size: $scalex8; - letter-spacing: 0.05em; - margin: 5em 7.5% 2.5em; - position: relative; - } -} diff --git a/docs/themes/porter/assets/sass/docs-content.scss b/docs/themes/porter/assets/sass/docs-content.scss deleted file mode 100755 index 8b7c4f425..000000000 --- a/docs/themes/porter/assets/sass/docs-content.scss +++ /dev/null @@ -1,296 +0,0 @@ -.main .list-wrap { - padding-top: 1em; - padding-bottom: 1em; - font-size: $scalex5; - font-weight: normal; - line-height: 1.5; - z-index: 500; - position: relative; - @include CMedium; - - h1 { - text-transform: none; - letter-spacing: 0.03em; - margin-top: 1em; - } - - h2 { - color: darken($grey3, 5%); - font-size: $scalex7; - letter-spacing: 0.05em; - @include CBold; - @include upperCase; - letter-spacing: 0.125em; - margin: 0em 0 0.875em; - padding-top: 1em; - } - - h3 { - color: $grey4; - @include CBold; - margin: 1.825em 0 1.825em; - } - - h4 { - font-size: $scalex5; - } - - p, ul, ol, blockquote { - color: $grey4; - line-height: 1.725; - font-size: $scalex5; - } - - p { - margin: 0.825rem 0 1.667rem; - } - - a { - color: darken($blue3, 7.5%); - background: white; - @include transition; - - &:hover { - color: darken($blue2, 5%); - border-bottom: 2px solid $blue1; - background-color: #f6fbfe; - } - } - - .header-link { - position: absolute; - left: -0.4em; - opacity: 0; - font-size: 1rem; - padding-top: 0.333em; - @include transition(all, 0.3s, ease-in-out); - - &:hover { - border-bottom: none; - background-color: transparent; - } - } - - h2:hover, - h3:hover, - h4:hover, - h5:hover, - h6:hover { - color: $blue4; - - .header-link { - opacity: 1; - left: -0.825em; - } - } -} - -.main.docs { - padding-top: 4rem; -} - -.main .content-wrap { - padding-top: 1em; - padding-bottom: 10em; - font-size: $scalex5; - font-weight: normal; - line-height: 1.5; - z-index: 500; - position: relative; - @include CMedium; - - h1 { - text-transform: none; - letter-spacing: 0.03em; - margin-top: 1em; - scroll-margin-top: 1.6em; - } - - article { - padding: 2em 0 0; - overflow:auto; - - h1 { - font-size: $scalex8; - color: $blue3; - margin: 1em 0 1em; - } - } - - h2 { - color: darken($grey3, 5%); - font-size: $scalex7; - letter-spacing: 0.05em; - @include CBold; - @include upperCase; - letter-spacing: 0.125em; - margin: 0em 0 0.875em; - padding-top: 1em; - scroll-margin-top: 2.5em; - } - - h3 { - color: $grey4; - @include CBold; - margin: 1.825em 0 1.825em; - } - - h4 { - font-size: $scalex5; - } - - figure { - width: max-content; - text-align: center; - margin: 0 auto; - } - - blockquote { - p { - &:first-child { - color: $grey3; - } - } - } - - p { - color: $grey4; - line-height: 1.725; - margin: 0.825rem 0 1.667rem; - font-size: $scalex5; - } - - &.markdown pre, - pre { - background-color: #e4f3f9; - color: black; - border: none; - padding: 0.75em 1em; - margin: 0 0 2.5em; - font-size: 1rem; - - code { - padding: 0; - background-color: #e4f3f9; - font-size: 1rem; - white-space: pre; - } - } - - .code-box { - margin: 0px; - width: 100%; - height: 220px; - border-bottom: 3px solid $grey1; - overflow: auto; - } - - strong { - letter-spacing: 0.0125em; - } - - code { - dispaly: block; - color: black; - padding: 0.5em 0.5em; - background-color: #e4f3f9; - border: none; - font-size: 1rem; - white-space: nowrap; - } - - &.markdown ul, - &.markdown ol, - ul, - ol { - padding: 0 0.25rem; - color: $grey4; - font-size: $scalex5; - line-height: 1.7; - } - - table { - margin: 1.5rem 0; - border: none; - width: 100%; - - th, - td { - border: none; - vertical-align: top; - text-align: left; - padding: 0.425em 0.75em 0.425em 0.2em; - width: auto; - } - - td { - color: $grey4; - font-size: $scalex5; - } - } - - a { - color: darken($blue3, 7.5%); - background: white; - @include transition; - - &:hover { - color: darken($blue2, 5%); - border-bottom: 2px solid $blue1; - background-color: #f6fbfe; - } - } - - .header-link { - position: absolute; - left: -0.4em; - opacity: 0; - font-size: 1rem; - padding-top: 0.333em; - @include transition(all, 0.3s, ease-in-out); - - &:hover { - border-bottom: none; - background-color: transparent; - } - } - - h1:hover, - h2:hover, - h3:hover, - h4:hover, - h5:hover, - h6:hover { - color: $blue4; - - .header-link { - opacity: 1; - left: -0.825em; - } - } - - img { - padding: 0.5em; - background-color: white; - max-width: 100%; - margin: 0 auto; - display: block - } - - iframe, - embed, - .youtube-player { - min-height: 320px; - width: 100% !important; - max-width: 560px; - } -} - -.copy-button-container { - display: flex; - justify-content: flex-end; - .copy-button { - margin-bottom: 0; - padding: 4px; - } -} \ No newline at end of file diff --git a/docs/themes/porter/assets/sass/docs-footer.scss b/docs/themes/porter/assets/sass/docs-footer.scss deleted file mode 100755 index b6eaade2a..000000000 --- a/docs/themes/porter/assets/sass/docs-footer.scss +++ /dev/null @@ -1,244 +0,0 @@ -.main { - margin-bottom: -5em; - - &.footer-expanded { - margin-bottom: -11em; - } -} - -.styleguide-footer { - min-height: 5rem; - overflow: hidden; - position: relative; - z-index: 500; - padding-top: 1.25em; - background-color: $grey4; - border-bottom: 6px solid $grey4; - min-width: 100%; - @include transition; - - ul { - list-style: none; - float: left; - margin-bottom: 0; - - li { - display: block; - margin: 0; - - a { - font-weight: 400; - } - } - } - - p, - li { - color: $grey2; - line-height: 1.7; - font-size: 0.667rem; - @include CMedium; - } - - li a { - font-size: 0.75rem; - } - - strong { - @include upperCase; - margin: 0.75rem 0 0.25rem; - display: block; - font-weight: normal; - - a { - color: $grey2; - cursor: pointer; - } - } - - a { - color: $blue1; - - &:hover { - border: none; - text-decoration: none; - color: white; - } - } - - .fa.footer-reveal { - font-size: 1rem; - cursor: pointer; - width: 2em; - height: 2em; - text-align: center; - position: absolute; - left: -0.65em; - top: 0.35rem; - @include border-radius(50%, 50%); - @include transition; - - &:hover { - background: darken($grey4, 5%); - color: $grey2; - } - } - - p { - margin-top: 0.75rem; - color: $grey4; - - &:nth-child(2) { - margin-top: 2.67rem; - font-size: 0.75rem; - line-height: 1.5; - - a { - color: $blue1; - } - } - } - - img { - margin: 0; - float: right; - opacity: 0.7; - @include transition; - - &:hover { - opacity: 1; - } - } - - .sub-nav-social { - position: absolute; - right: 1em; - bottom: 2em; - text-align: right; - - li { - display: inline-block; - margin: 1rem 0.25em; - text-align: right; - - a { - font-size: 1.5em; - color: $grey3; - width: 2em; - height: 2em; - text-align: center; - background: darken($grey4, 5%); - @include border-radius(50%, 50%); - @include transition; - - &:hover { - background: $blue4; - color: white; - } - } - } - } - - .footer-extra { - div { - display: none; - opacity: 0; - height: 0; - min-height: 0; - overflow: hidden; - @include transition(all, 0.3s, ease-in-out); - } - } - - &.footer-expanded { - margin-top: -11rem; - min-height: 11rem; - - .footer-extra div { - display: block; - opacity: 1; - min-height: 8em; - } - - a.fa.footer-reveal { - -ms-transform: rotate(180deg); - -webkit-transform: rotate(180deg); - transform: rotate(180deg); - } - } -} - -#contrib { - background: $blue1; - padding-bottom: 4rem; -} - -.contrib-text { - p { - color: white; - font-size: 1rem; - margin: 0 auto; - padding-left: 2rem; - - &.lead { - font-size: 1.2rem; - margin: 2rem auto 3rem; - position: relative; - line-height: 4; - - &:after { - content: " "; - display: block; - width: 14%; - position: absolute; - bottom: -1.25rem; - left: 43%; - height: 5px; - background: $grey1; - opacity: 0.25; - } - } - - img { - max-height: 24px; - margin: -2px 0 0 22px; - } - - a { - color: white; - font-weight: bold; - } - } -} - -.cncf-wrap { - max-width: 100%; -} - -.cncf { - background:#193d54; - min-height: 2rem; - text-align: center; - padding-left: 300px; - - img { - display: inline-block; - max-width: 10rem; - transform: scale(2); - margin: 1.5rem 0 1.5rem 7.5%; - @media only screen and (max-width: 569px) { - max-width: 8rem; - } - } - - p { - margin: 1.5rem 2.5% 0 0; - display: inline-block; - color: white; - font-size: 22px; - - &:hover { - color: $blue2; - } - } -} diff --git a/docs/themes/porter/assets/sass/docs-home.scss b/docs/themes/porter/assets/sass/docs-home.scss deleted file mode 100755 index 10dfaf1af..000000000 --- a/docs/themes/porter/assets/sass/docs-home.scss +++ /dev/null @@ -1,229 +0,0 @@ -.home { - box-sizing: border-box; - min-height: 100%; - - a { - text-decoration: underline; - } - - .docs-home { - #helm { - background: $blue1; - } - } - - .home-intro-wrap { - box-sizing: border-box; - min-height: 100%; - background: $blue1; - } - - h3 { - color: #f6fbfe; - font-size: 1.125rem; - @include CBold; - } - - #helm { - - max-width: 100%; - position: relative; - z-index: 500; - - &:after { - z-index: -100; - display: block; - height: 850px; - width: 100%; - bottom: 0; - // background-color: $blue1; - position: fixed; - } - - .content{ - .emoji-list { - @include mobile { - margin: 0 0 35px 0 !important; - } - } - } - - .billboard { - background-color: white; - background-size: 376px; - padding: 165px 60px 100px 60px; - position: relative; - text-align:left; - - @include mobile{ - padding: 0 23px 100px 20px; - } - - .helm-logo { - max-width: 120px; - } - - #underline1 { - position: relative; - - @include mobile { - background-image: linear-gradient(to right, #f6b6aa 0%, #f6b6aa 100%) !important; - background-repeat: no-repeat !important; - background-size: 100% 0.3em !important; - background-position: 0px 85% !important; - } - } - - #underline1::before { - content: ""; - position: absolute; - left: 115px; - bottom: 10px; - width: 235px; - height: 14px; - transform: skew(-12deg) translateX(-50%); - background: rgba(238,111,87,0.5); - - @include mobile { - content: none; - } - } - - h1 { - @include CBlack; - color: $blue1; - line-height: 1.2; - letter-spacing: -2px; - font-size: 3.57rem; - position: relative; - text-transform: none !important; - - @include mobile { - font-size: 11.755vw !important; - margin: 3rem 0 0 0 !important; - } - } - - h2 { - @include CMedium; - color: $blue4; - font-size: 1.4rem; - line-height: 1.3; - margin-bottom: 30px; - - @include mobile { - font-size: 1.3rem !important; - line-height: 1.3 !important; - margin: 2rem 0 0 !important; - padding-bottom: 0rem !important; - } - } - - .helm-logo { - position: absolute; - left: 5rem; - top: 2rem; - max-width: 102px; - } - - .fa { - position: absolute; - font-size: 2.5rem; - top: 4rem; - right: 5rem; - color: $grey4; - - &.fa-twitter { - right: 9rem; - color: $blue2; - @include transition; - } - - &:hover { - opacity: 0.7; - } - } - - &:after { - $height: 6px; - background-size: $gutter; - bottom: 0; - content: ''; - display: block; - height: $height; - position: absolute; - width: 100%; - } - } - } - - - - @media only screen and (min-device-width: $mobile-maximum-width + 1) { - @include boat-animation-rules(-$boat-size, 25%, 145%, 0); - } - - #boat { - height: 2em; - - @media only screen and (min-device-width: $mobile-maximum-width + 1) { - $duration: 20s; - background: url('/img/boat.png') no-repeat; - background-size: $boat-size; - height: 120px; //TODO programmatize this! - position: relative; - margin-top: 40px; - - -moz-animation: $boat-animation; - -webkit-animation: $boat-animation; - -ms-animation: $boat-animation; - -o-animation: $boat-animation; - animation: $boat-animation; - -webkit-animation-duration: $duration; - -moz-animation-duration: $duration; - -ms-animation-duration: $duration; - -o-animation-duration: $duration; - animation-duration: $duration; - } - } - - .home-featured { - background-color: $blue1; - padding-top: 20px; - padding-bottom: 65px; - min-height: 400px; - - .panels { - width: 92%; - max-width: 1140px; - min-width: 800px; - } - - .panel { - background-color: white; - @include box-shadow(0,1px,4px,$blue4); - @include border-radius(0.25em,0.25em); - text-align: center; - min-height: 125px; - color: $grey4; - margin-bottom: 1.25rem; - - h3 { - padding: 0.75rem 0 0.5rem; - border-bottom: 1px solid $light2; - margin: 0 auto 1rem; - font-size: 1rem; - color: $blue3; - @include CBold; - letter-spacing: 0.02em; - } - - p { - line-height: 1.4; - display: block; - font-size: 0.925rem; - padding: 0 3.5% 1rem; - } - } - } -} \ No newline at end of file diff --git a/docs/themes/porter/assets/sass/docs-layout.scss b/docs/themes/porter/assets/sass/docs-layout.scss deleted file mode 100755 index 35d22efe3..000000000 --- a/docs/themes/porter/assets/sass/docs-layout.scss +++ /dev/null @@ -1,48 +0,0 @@ -html, -body { - min-height: 100%; - padding: 0; - margin: 0; - background: white; - background-position: static; - background-attachment: fixed; -} - -// .inner-wrap, -// .off-canvas-wrap, -// .main { -// min-height: 100%; -// } - -.main { - min-height: 760px; -} - -.sidebar { - min-height: 100%; -} - -.container-full { - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; - min-height: 100%; - height:100%; - overflow-y: scroll; - overflow-x: hidden; - padding-left: 300px; - width: 100%; -} - -.sidebar { - width: 25%; - width: 300px; -} - -.flextable { - display: flex; - flex-flow: row; - flex-wrap: wrap; - justify-content: space-evenly; - align-items: baseline; -} \ No newline at end of file diff --git a/docs/themes/porter/assets/sass/docs-responsive.scss b/docs/themes/porter/assets/sass/docs-responsive.scss deleted file mode 100755 index f56e3eae2..000000000 --- a/docs/themes/porter/assets/sass/docs-responsive.scss +++ /dev/null @@ -1,275 +0,0 @@ - -// mobile style -@media only screen and (max-width: 64.063em) { - .container-full { - padding-left: 0; - overflow-y: auto; - } - - .left-off-canvas-toggle .fa { - padding: 1em 1.25em; - line-height: 3; - } - - .sidebar { - display: none; - } - - .top-bar { - left: 0; - - ul.inline { - display: none; - } - } - - .blog-logo { - position: fixed; - z-index: 1450; - max-width: 50%; - left: 50%; - margin: 0.25rem auto 0 -25%; - } - - .st-default-autocomplete { - width: 90% !important; - min-width: 320px !important; - left: 5% !important; - } - - nav.top-bar { - .docs-logo { - display: none !important; - } - } - - .main { - &.home { - min-height: 500px; - - .home-featured .panels { - min-width: 100%; - } - - .fa { - display: none; - } - } - - &.blog { - padding-top: 6.5rem; - } - - &.docs { - padding-top: 3.5rem; - - .docs-logo { - position: absolute; - z-index: 1450; - max-width: 50%; - left: 50%; - margin: 0.25rem auto 0 -25%; - display: block !important; - } - } - } - - nav.home-nav { - position: relative; - ul { - margin-left: auto; - margin-right: auto; - - li { - padding: 0; - margin: 0; - - a { - background-color: lighten($blue1, 35%); - padding: 0.25rem 1rem; - margin: 0 0.333rem 0.75rem; - font-size: 1rem; - border-radius: 0.35em; - min-width: 15vw; - - img { - margin: -0.8rem 0rem 0rem 0rem; - max-height: 2rem; - } - } - } - } - - h1 { - position: relative; - min-width: 86%; - text-align: center; - - img { - max-width: 45%; - min-height: auto !important; - margin: 0 auto; - } - } - - ul { - position: relative; - top: 2.25rem; - right: 0; - padding-right: 2rem; - width: 100%; - text-align: center; - } - } - - .home #helm .billboard { - h1 { - font-size: 5.755vw; - margin: 3rem 3.5vw 1.5em; - padding: 0; - } - - h2 { - font-size: 1rem; - line-height: 1.636; - margin: 2rem 3.5vw 5rem; - padding-bottom: 3.5rem; - } - } - - .main .content-wrap h1 { - font-size: $scalex5; - } - - .main .content-wrap article { - padding: 0 0 0.5em; - - h1 { - font-size: $scalex8; - } - - h2 { - font-size: $scalex6; - } - - p:first-child { - padding-right: 0; - font-size: $scalex5; - } - } - - aside.left-off-canvas-menu { - height: calc(100vh - calc(100vh - 100%)); - overflow-y: auto; - ul { - background: $blue2 !important; - - li { - @include CBold; - font-size: 1.25rem; - - a { - color: white !important; - border-bottom: none !important; - - &:hover { - background: $blue2 !important; - } - - &.active { - color: white !important; - background: $blue4 !important; - } - } - - a + ul { - display: none; - background: $blue4 !important; - margin-left: 0; - padding: 0.5em 0 1em 1.5em; - - li { - font-size: 1rem; - list-style: none; - - a { - padding: 0.1em 0.66667rem; - border-bottom: none; - color: $light2 !important; - } - } - } - - a.active + ul { - display: block; - } - } - } - - .button-wrap { - padding: 0.75em 5%; - - .button { - margin: 0.4em 0; - } - } - } - - .top-bar { - .breadcrumb { - left: 2.75rem; - } - .right { - li { - display: none; - - &:nth-child(2) { - display: inline-block; - - a { - position: absolute; - right: -4em; - top: -0.35em; - font-size: 1.75rem; - } - } - } - } - - } - - .contrib-text .lead { - display: none; - } - - .cncf-wrap { - .cncf { - padding-top: 2rem; - padding-bottom: 2rem; - - img, - p { - float: none; - min-width: 80%; - margin: 1.5rem auto; - } - - img { - max-width: 51%; - } - } - } -} - - -// affix the sidebar buttons, if the screen is tall enough -@media screen and ( min-height: 575px ){ - .sidebar { - padding-bottom: 0px; - - .sidebar-buttons { - position: fixed; - bottom: 0; - } - } -} diff --git a/docs/themes/porter/assets/sass/docs-sidebar.scss b/docs/themes/porter/assets/sass/docs-sidebar.scss deleted file mode 100755 index 59a9e3627..000000000 --- a/docs/themes/porter/assets/sass/docs-sidebar.scss +++ /dev/null @@ -1,229 +0,0 @@ -.sidebar { - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; - min-height: 100%; - left: 0; - top: 0; - bottom: 0; - background: $green; - z-index: 700; - position: fixed; - border-right: 1px solid lighten($blue1, 35%); - - // wrap the sidebar links in a vertical scrollable section - // 100% height (minus the height of h1 and sidebar-button) - .sidebar-wrap { - overflow-x: hidden; - overflow-y: scroll; - display: block; - position: relative; - height: 100%; - margin-top: -5rem; - margin-bottom: -4.75rem; - z-index: 10; - padding: 0; - } - - a { - @include transition; - - .ripple { - margin: auto 0; - display: inline-block; - - span { - display: block; - margin: 0 auto 0; - background: $blue3; - width: 10%; - opacity: 0; - height: 3px; - @include transition; - } - } - - &:hover .ripple span { - width: 100%; - opacity: 1; - } - } - - h1 { - margin: 0; - padding: 0; - min-height: 5rem; - z-index: 1020; - position: relative; - text-transform: none; - - a { - display: block; - width: 100%; - padding: 0.1333em 2.25rem; - background-color: white; - text-align: left; - - img, - svg { - display: block; - fill: currentColor; - @include transition; - } - - span { - top: 1em; - position: absolute; - font-size: 1.5rem; - color: $blue3; - left: 6.5rem; - letter-spacing: -0.125rem; - @include CMedium; - } - - &:hover { - background: $light2; - - svg { - color: white !important; - } - } - } - } - - ul { - margin: 0 auto 0.5em; - padding: 7.5rem 0 6rem; - - li { - a { - display: block; - padding: 0em 15% 0.25em; - color: $grey3; - letter-spacing: 0.035em; - line-height: 1.4; - text-transform: capitalize; - font-size: 1.5em; - @include CBold; - letter-spacing: 0.02em; - @include transition(all, 0.3s, cubic-bezier(0.25,0.1,0.25,1)); - - &:hover { - color: $blue4; - background: lighten($blue3, 37.5%); - } - - &.active { - text-decoration: underline; - background: transparent; - - span.ripple { - text-decoration: underline; - width: 100%; - opacity: 1; - } - - &:hover .ripple span { - background: $blue3; - } - - & + ul { - display: block; - } - } - } - - &:last-child { - a.sidebar-nav-item:after { - content: '\f08e'; - font-family: "FontAwesome"; - display: inline-block; - padding-left: 0.5em; - width: 1em; - height: 1em; - font-size: $scalex4; - opacity: 0.5; - } - } - - &.toctree-l1.current { - ul { - display: block !important; - } - } - - &.toctree-l2 { - ul { - display: block !important; - } - } - - &.toctree-l3 { - padding-left: 2em; - } - ul { - margin: 0; - padding: 0.5em 0 1.25em; - display: none; - - li { - margin: 0; - - a { - padding: 0.25em 0 0.25em 17.5%; - line-height: 1; - font-size: $scalex3; - border-right: 4px solid transparent; - @include transition; - font-family: $base; - font-weight: bold; - - &:hover { - color: $blue4; - background: lighten($blue3, 37.5%); - } - } - - &.active a { - color: $blue4; - border-right: 4px solid $blue4; - background: desaturate(lighten($blue1, 39.5%), 20%); - } - } - } - } - } - - .sidebar-buttons { - border-top: 2px solid white; - min-height: 4.75rem; - background: $green; - - .button-wrap { - width: 300px; - padding: 0.5em 10% 0.5em; - } - - .button.expand.small { - margin: 0.333em 0; - display: block; - padding-top: .5rem; - padding-bottom: .575rem; - background-color: white; - color: $blue3; - - i { - margin: -0.05em 0.5em 0 -0.667em; - color: $blue3; - font-size: $scalex3; - } - } - } -} - -.left-off-canvas-toggle .fa { - &:before { - color: $blue3; - } - background-color: white; -} diff --git a/docs/themes/porter/assets/sass/docs-topbar.scss b/docs/themes/porter/assets/sass/docs-topbar.scss deleted file mode 100755 index 3550e9d93..000000000 --- a/docs/themes/porter/assets/sass/docs-topbar.scss +++ /dev/null @@ -1,93 +0,0 @@ -.top-bar { - perspective: 800px; - min-height: 5.125em; - transform-style: preserve-3d; - background: white; - border-bottom: 1px solid lighten($blue1, 35%); - transition: transform 200ms linear; - position: fixed; - left: 300px; - right: 0; - top: 0; - z-index: 1000; - - ul { - min-width: 33.333%; - margin-right: 0; - margin-top: 0.75em; - padding-right: 3.5%; - - li { - display: inline-block; - margin: 0 0.5rem; - - a { - padding: 1em; - color: $blue4; - font-size: 1.125rem; - @include CBold; - - img { - padding-right: 0.333em; - max-height: 1.2rem; - } - } - - &:last-child, - &:nth-last-child(2) { - margin-right: -1rem; - } - } - } - - .breadcrumb { - position: absolute; - top: 0; - left: 1em; - z-index: 1030; - line-height: 1.5; - font-size: $scalex3; - letter-spacing: 0.05em; - - a { - padding: 0.333em 0; - margin: 0.575em 0 0.575em 0.5em; - float: left; - text-transform: capitalize; - font-size: 1.5rem; - color: $blue3; - letter-spacing: -0.125rem; - @include CMedium; - @include transition; - - &:hover { - color: $blue1; - } - - &:before { - content: '/'; - display: inline-block; - width: 0.75em; - height: 2em; - margin: 0 0 0 -0.2em; - color: $grey1; - } - - &:first-child:before { - display: none; - } - } - } -} - -.left-off-canvas-toggle { - z-index: 1100; - position: fixed; - top: 0; - left: 0; - - img { - padding: 1.425em 0.925em; - color: $grey4; - } -} diff --git a/docs/themes/porter/assets/sass/fontawesome/_animated.scss b/docs/themes/porter/assets/sass/fontawesome/_animated.scss deleted file mode 100755 index 5201a8323..000000000 --- a/docs/themes/porter/assets/sass/fontawesome/_animated.scss +++ /dev/null @@ -1,66 +0,0 @@ -// Spinning Icons -// -------------------------- - -.#{$fa-css-prefix}-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} - -.#{$fa-css-prefix}-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} - -// Fade In -// ------- - -@keyframes fadein { - from { opacity: 0; } - to { opacity: 1; } -} - -/* Firefox < 16 */ -@-moz-keyframes fadein { - from { opacity: 0; } - to { opacity: 1; } -} - -/* Safari, Chrome and Opera > 12.1 */ -@-webkit-keyframes fadein { - from { opacity: 0; } - to { opacity: 1; } -} - -/* Internet Explorer */ -@-ms-keyframes fadein { - from { opacity: 0; } - to { opacity: 1; } -} - -/* Opera < 12.1 */ -@-o-keyframes fadein { - from { opacity: 0; } - to { opacity: 1; } -} diff --git a/docs/themes/porter/assets/sass/fontawesome/_bordered-pulled.scss b/docs/themes/porter/assets/sass/fontawesome/_bordered-pulled.scss deleted file mode 100755 index d4b85a02f..000000000 --- a/docs/themes/porter/assets/sass/fontawesome/_bordered-pulled.scss +++ /dev/null @@ -1,25 +0,0 @@ -// Bordered & Pulled -// ------------------------- - -.#{$fa-css-prefix}-border { - padding: .2em .25em .15em; - border: solid .08em $fa-border-color; - border-radius: .1em; -} - -.#{$fa-css-prefix}-pull-left { float: left; } -.#{$fa-css-prefix}-pull-right { float: right; } - -.#{$fa-css-prefix} { - &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } - &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } -} - -/* Deprecated as of 4.4.0 */ -.pull-right { float: right; } -.pull-left { float: left; } - -.#{$fa-css-prefix} { - &.pull-left { margin-right: .3em; } - &.pull-right { margin-left: .3em; } -} diff --git a/docs/themes/porter/assets/sass/fontawesome/_core.scss b/docs/themes/porter/assets/sass/fontawesome/_core.scss deleted file mode 100755 index 7425ef85f..000000000 --- a/docs/themes/porter/assets/sass/fontawesome/_core.scss +++ /dev/null @@ -1,12 +0,0 @@ -// Base Class Definition -// ------------------------- - -.#{$fa-css-prefix} { - display: inline-block; - font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} diff --git a/docs/themes/porter/assets/sass/fontawesome/_fixed-width.scss b/docs/themes/porter/assets/sass/fontawesome/_fixed-width.scss deleted file mode 100755 index b221c9813..000000000 --- a/docs/themes/porter/assets/sass/fontawesome/_fixed-width.scss +++ /dev/null @@ -1,6 +0,0 @@ -// Fixed Width Icons -// ------------------------- -.#{$fa-css-prefix}-fw { - width: (18em / 14); - text-align: center; -} diff --git a/docs/themes/porter/assets/sass/fontawesome/_icons.scss b/docs/themes/porter/assets/sass/fontawesome/_icons.scss deleted file mode 100755 index 6f9375989..000000000 --- a/docs/themes/porter/assets/sass/fontawesome/_icons.scss +++ /dev/null @@ -1,697 +0,0 @@ -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ - -.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; } -.#{$fa-css-prefix}-music:before { content: $fa-var-music; } -.#{$fa-css-prefix}-search:before { content: $fa-var-search; } -.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; } -.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; } -.#{$fa-css-prefix}-star:before { content: $fa-var-star; } -.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; } -.#{$fa-css-prefix}-user:before { content: $fa-var-user; } -.#{$fa-css-prefix}-film:before { content: $fa-var-film; } -.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; } -.#{$fa-css-prefix}-th:before { content: $fa-var-th; } -.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; } -.#{$fa-css-prefix}-check:before { content: $fa-var-check; } -.#{$fa-css-prefix}-remove:before, -.#{$fa-css-prefix}-close:before, -.#{$fa-css-prefix}-times:before { content: $fa-var-times; } -.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; } -.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; } -.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; } -.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; } -.#{$fa-css-prefix}-gear:before, -.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; } -.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; } -.#{$fa-css-prefix}-home:before { content: $fa-var-home; } -.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; } -.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; } -.#{$fa-css-prefix}-road:before { content: $fa-var-road; } -.#{$fa-css-prefix}-download:before { content: $fa-var-download; } -.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; } -.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; } -.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; } -.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; } -.#{$fa-css-prefix}-rotate-right:before, -.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; } -.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; } -.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; } -.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; } -.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; } -.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; } -.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; } -.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; } -.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; } -.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; } -.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; } -.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; } -.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; } -.#{$fa-css-prefix}-book:before { content: $fa-var-book; } -.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; } -.#{$fa-css-prefix}-print:before { content: $fa-var-print; } -.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; } -.#{$fa-css-prefix}-font:before { content: $fa-var-font; } -.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; } -.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; } -.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; } -.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; } -.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; } -.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; } -.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; } -.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; } -.#{$fa-css-prefix}-list:before { content: $fa-var-list; } -.#{$fa-css-prefix}-dedent:before, -.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; } -.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; } -.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; } -.#{$fa-css-prefix}-photo:before, -.#{$fa-css-prefix}-image:before, -.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; } -.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; } -.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; } -.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; } -.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; } -.#{$fa-css-prefix}-edit:before, -.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; } -.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; } -.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; } -.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; } -.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; } -.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; } -.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; } -.#{$fa-css-prefix}-play:before { content: $fa-var-play; } -.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; } -.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; } -.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; } -.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; } -.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; } -.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; } -.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; } -.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; } -.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; } -.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; } -.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; } -.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; } -.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; } -.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; } -.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; } -.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; } -.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; } -.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; } -.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; } -.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; } -.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; } -.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; } -.#{$fa-css-prefix}-mail-forward:before, -.#{$fa-css-prefix}-share:before { content: $fa-var-share; } -.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; } -.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; } -.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; } -.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; } -.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; } -.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; } -.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; } -.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; } -.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; } -.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; } -.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; } -.#{$fa-css-prefix}-warning:before, -.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; } -.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; } -.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; } -.#{$fa-css-prefix}-random:before { content: $fa-var-random; } -.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; } -.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; } -.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; } -.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; } -.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; } -.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; } -.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; } -.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; } -.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; } -.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; } -.#{$fa-css-prefix}-bar-chart-o:before, -.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; } -.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; } -.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; } -.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; } -.#{$fa-css-prefix}-key:before { content: $fa-var-key; } -.#{$fa-css-prefix}-gears:before, -.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; } -.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; } -.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; } -.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; } -.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; } -.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; } -.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; } -.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; } -.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; } -.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; } -.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; } -.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; } -.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; } -.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; } -.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; } -.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; } -.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; } -.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; } -.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; } -.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; } -.#{$fa-css-prefix}-facebook-f:before, -.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; } -.#{$fa-css-prefix}-github:before { content: $fa-var-github; } -.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; } -.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; } -.#{$fa-css-prefix}-feed:before, -.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; } -.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; } -.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; } -.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; } -.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; } -.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; } -.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; } -.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; } -.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; } -.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; } -.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; } -.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; } -.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; } -.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; } -.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; } -.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; } -.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; } -.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; } -.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; } -.#{$fa-css-prefix}-group:before, -.#{$fa-css-prefix}-users:before { content: $fa-var-users; } -.#{$fa-css-prefix}-chain:before, -.#{$fa-css-prefix}-link:before { content: $fa-var-link; } -.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; } -.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; } -.#{$fa-css-prefix}-cut:before, -.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; } -.#{$fa-css-prefix}-copy:before, -.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; } -.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; } -.#{$fa-css-prefix}-save:before, -.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; } -.#{$fa-css-prefix}-square:before { content: $fa-var-square; } -.#{$fa-css-prefix}-navicon:before, -.#{$fa-css-prefix}-reorder:before, -.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; } -.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; } -.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; } -.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; } -.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; } -.#{$fa-css-prefix}-table:before { content: $fa-var-table; } -.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; } -.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; } -.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; } -.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; } -.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; } -.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; } -.#{$fa-css-prefix}-money:before { content: $fa-var-money; } -.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; } -.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; } -.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; } -.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; } -.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; } -.#{$fa-css-prefix}-unsorted:before, -.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; } -.#{$fa-css-prefix}-sort-down:before, -.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; } -.#{$fa-css-prefix}-sort-up:before, -.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; } -.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; } -.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; } -.#{$fa-css-prefix}-rotate-left:before, -.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; } -.#{$fa-css-prefix}-legal:before, -.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; } -.#{$fa-css-prefix}-dashboard:before, -.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; } -.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; } -.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; } -.#{$fa-css-prefix}-flash:before, -.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; } -.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; } -.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; } -.#{$fa-css-prefix}-paste:before, -.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; } -.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; } -.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; } -.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; } -.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; } -.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; } -.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; } -.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; } -.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; } -.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; } -.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; } -.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; } -.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; } -.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; } -.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; } -.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; } -.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; } -.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; } -.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; } -.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; } -.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; } -.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; } -.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; } -.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; } -.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; } -.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; } -.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; } -.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; } -.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; } -.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; } -.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; } -.#{$fa-css-prefix}-mobile-phone:before, -.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; } -.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; } -.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; } -.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; } -.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; } -.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; } -.#{$fa-css-prefix}-mail-reply:before, -.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; } -.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; } -.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; } -.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; } -.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; } -.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; } -.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; } -.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; } -.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; } -.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; } -.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; } -.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; } -.#{$fa-css-prefix}-code:before { content: $fa-var-code; } -.#{$fa-css-prefix}-mail-reply-all:before, -.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; } -.#{$fa-css-prefix}-star-half-empty:before, -.#{$fa-css-prefix}-star-half-full:before, -.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; } -.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; } -.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; } -.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; } -.#{$fa-css-prefix}-unlink:before, -.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; } -.#{$fa-css-prefix}-question:before { content: $fa-var-question; } -.#{$fa-css-prefix}-info:before { content: $fa-var-info; } -.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; } -.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; } -.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; } -.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; } -.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; } -.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; } -.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; } -.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; } -.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; } -.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; } -.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; } -.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; } -.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; } -.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; } -.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; } -.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; } -.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; } -.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; } -.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; } -.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; } -.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; } -.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; } -.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; } -.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; } -.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; } -.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; } -.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; } -.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; } -.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; } -.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; } -.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; } -.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; } -.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; } -.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; } -.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; } -.#{$fa-css-prefix}-toggle-down:before, -.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; } -.#{$fa-css-prefix}-toggle-up:before, -.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; } -.#{$fa-css-prefix}-toggle-right:before, -.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; } -.#{$fa-css-prefix}-euro:before, -.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; } -.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; } -.#{$fa-css-prefix}-dollar:before, -.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; } -.#{$fa-css-prefix}-rupee:before, -.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; } -.#{$fa-css-prefix}-cny:before, -.#{$fa-css-prefix}-rmb:before, -.#{$fa-css-prefix}-yen:before, -.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; } -.#{$fa-css-prefix}-ruble:before, -.#{$fa-css-prefix}-rouble:before, -.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; } -.#{$fa-css-prefix}-won:before, -.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; } -.#{$fa-css-prefix}-bitcoin:before, -.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; } -.#{$fa-css-prefix}-file:before { content: $fa-var-file; } -.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; } -.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; } -.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; } -.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; } -.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; } -.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; } -.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; } -.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; } -.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; } -.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; } -.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; } -.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; } -.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; } -.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; } -.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; } -.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; } -.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; } -.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; } -.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; } -.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; } -.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; } -.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; } -.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; } -.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; } -.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; } -.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; } -.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; } -.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; } -.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; } -.#{$fa-css-prefix}-android:before { content: $fa-var-android; } -.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; } -.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; } -.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; } -.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; } -.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; } -.#{$fa-css-prefix}-female:before { content: $fa-var-female; } -.#{$fa-css-prefix}-male:before { content: $fa-var-male; } -.#{$fa-css-prefix}-gittip:before, -.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; } -.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; } -.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; } -.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; } -.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; } -.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; } -.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; } -.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; } -.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; } -.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; } -.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; } -.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; } -.#{$fa-css-prefix}-toggle-left:before, -.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; } -.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; } -.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; } -.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; } -.#{$fa-css-prefix}-turkish-lira:before, -.#{$fa-css-prefix}-try:before { content: $fa-var-try; } -.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; } -.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; } -.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; } -.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; } -.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; } -.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; } -.#{$fa-css-prefix}-institution:before, -.#{$fa-css-prefix}-bank:before, -.#{$fa-css-prefix}-university:before { content: $fa-var-university; } -.#{$fa-css-prefix}-mortar-board:before, -.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; } -.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; } -.#{$fa-css-prefix}-google:before { content: $fa-var-google; } -.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; } -.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; } -.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; } -.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; } -.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; } -.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; } -.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; } -.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; } -.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; } -.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; } -.#{$fa-css-prefix}-language:before { content: $fa-var-language; } -.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; } -.#{$fa-css-prefix}-building:before { content: $fa-var-building; } -.#{$fa-css-prefix}-child:before { content: $fa-var-child; } -.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; } -.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; } -.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; } -.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; } -.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; } -.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; } -.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; } -.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; } -.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; } -.#{$fa-css-prefix}-automobile:before, -.#{$fa-css-prefix}-car:before { content: $fa-var-car; } -.#{$fa-css-prefix}-cab:before, -.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; } -.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; } -.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; } -.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; } -.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; } -.#{$fa-css-prefix}-database:before { content: $fa-var-database; } -.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; } -.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; } -.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; } -.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; } -.#{$fa-css-prefix}-file-photo-o:before, -.#{$fa-css-prefix}-file-picture-o:before, -.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; } -.#{$fa-css-prefix}-file-zip-o:before, -.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; } -.#{$fa-css-prefix}-file-sound-o:before, -.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; } -.#{$fa-css-prefix}-file-movie-o:before, -.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; } -.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; } -.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; } -.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; } -.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; } -.#{$fa-css-prefix}-life-bouy:before, -.#{$fa-css-prefix}-life-buoy:before, -.#{$fa-css-prefix}-life-saver:before, -.#{$fa-css-prefix}-support:before, -.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; } -.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; } -.#{$fa-css-prefix}-ra:before, -.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; } -.#{$fa-css-prefix}-ge:before, -.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; } -.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; } -.#{$fa-css-prefix}-git:before { content: $fa-var-git; } -.#{$fa-css-prefix}-y-combinator-square:before, -.#{$fa-css-prefix}-yc-square:before, -.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; } -.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; } -.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; } -.#{$fa-css-prefix}-wechat:before, -.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; } -.#{$fa-css-prefix}-send:before, -.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; } -.#{$fa-css-prefix}-send-o:before, -.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; } -.#{$fa-css-prefix}-history:before { content: $fa-var-history; } -.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; } -.#{$fa-css-prefix}-header:before { content: $fa-var-header; } -.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; } -.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; } -.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; } -.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; } -.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; } -.#{$fa-css-prefix}-soccer-ball-o:before, -.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; } -.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; } -.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; } -.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; } -.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; } -.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; } -.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; } -.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; } -.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; } -.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; } -.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; } -.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; } -.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; } -.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; } -.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; } -.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; } -.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; } -.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; } -.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; } -.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; } -.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; } -.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; } -.#{$fa-css-prefix}-at:before { content: $fa-var-at; } -.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; } -.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; } -.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; } -.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; } -.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; } -.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; } -.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; } -.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; } -.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; } -.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; } -.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; } -.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; } -.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; } -.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; } -.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; } -.#{$fa-css-prefix}-shekel:before, -.#{$fa-css-prefix}-sheqel:before, -.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; } -.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; } -.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; } -.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; } -.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; } -.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; } -.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; } -.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; } -.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; } -.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; } -.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; } -.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; } -.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; } -.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; } -.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; } -.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; } -.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; } -.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; } -.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; } -.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; } -.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; } -.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; } -.#{$fa-css-prefix}-intersex:before, -.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; } -.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; } -.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; } -.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; } -.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; } -.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; } -.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; } -.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; } -.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; } -.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; } -.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; } -.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; } -.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; } -.#{$fa-css-prefix}-server:before { content: $fa-var-server; } -.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; } -.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; } -.#{$fa-css-prefix}-hotel:before, -.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; } -.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; } -.#{$fa-css-prefix}-train:before { content: $fa-var-train; } -.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; } -.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; } -.#{$fa-css-prefix}-yc:before, -.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; } -.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; } -.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; } -.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; } -.#{$fa-css-prefix}-battery-4:before, -.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; } -.#{$fa-css-prefix}-battery-3:before, -.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; } -.#{$fa-css-prefix}-battery-2:before, -.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; } -.#{$fa-css-prefix}-battery-1:before, -.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; } -.#{$fa-css-prefix}-battery-0:before, -.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; } -.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; } -.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; } -.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; } -.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; } -.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; } -.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; } -.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; } -.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; } -.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; } -.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; } -.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; } -.#{$fa-css-prefix}-hourglass-1:before, -.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; } -.#{$fa-css-prefix}-hourglass-2:before, -.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; } -.#{$fa-css-prefix}-hourglass-3:before, -.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; } -.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; } -.#{$fa-css-prefix}-hand-grab-o:before, -.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; } -.#{$fa-css-prefix}-hand-stop-o:before, -.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; } -.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; } -.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; } -.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; } -.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; } -.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; } -.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; } -.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; } -.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; } -.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; } -.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; } -.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; } -.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; } -.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; } -.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; } -.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; } -.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; } -.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; } -.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; } -.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; } -.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; } -.#{$fa-css-prefix}-tv:before, -.#{$fa-css-prefix}-television:before { content: $fa-var-television; } -.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; } -.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; } -.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; } -.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; } -.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; } -.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; } -.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; } -.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; } -.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; } -.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; } -.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; } -.#{$fa-css-prefix}-map:before { content: $fa-var-map; } -.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; } -.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; } -.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; } -.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; } -.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; } -.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; } -.#{$fa-css-prefix}-reddit-alien:before { content: $fa-var-reddit-alien; } -.#{$fa-css-prefix}-edge:before { content: $fa-var-edge; } -.#{$fa-css-prefix}-credit-card-alt:before { content: $fa-var-credit-card-alt; } -.#{$fa-css-prefix}-codiepie:before { content: $fa-var-codiepie; } -.#{$fa-css-prefix}-modx:before { content: $fa-var-modx; } -.#{$fa-css-prefix}-fort-awesome:before { content: $fa-var-fort-awesome; } -.#{$fa-css-prefix}-usb:before { content: $fa-var-usb; } -.#{$fa-css-prefix}-product-hunt:before { content: $fa-var-product-hunt; } -.#{$fa-css-prefix}-mixcloud:before { content: $fa-var-mixcloud; } -.#{$fa-css-prefix}-scribd:before { content: $fa-var-scribd; } -.#{$fa-css-prefix}-pause-circle:before { content: $fa-var-pause-circle; } -.#{$fa-css-prefix}-pause-circle-o:before { content: $fa-var-pause-circle-o; } -.#{$fa-css-prefix}-stop-circle:before { content: $fa-var-stop-circle; } -.#{$fa-css-prefix}-stop-circle-o:before { content: $fa-var-stop-circle-o; } -.#{$fa-css-prefix}-shopping-bag:before { content: $fa-var-shopping-bag; } -.#{$fa-css-prefix}-shopping-basket:before { content: $fa-var-shopping-basket; } -.#{$fa-css-prefix}-hashtag:before { content: $fa-var-hashtag; } -.#{$fa-css-prefix}-bluetooth:before { content: $fa-var-bluetooth; } -.#{$fa-css-prefix}-bluetooth-b:before { content: $fa-var-bluetooth-b; } -.#{$fa-css-prefix}-percent:before { content: $fa-var-percent; } diff --git a/docs/themes/porter/assets/sass/fontawesome/_larger.scss b/docs/themes/porter/assets/sass/fontawesome/_larger.scss deleted file mode 100755 index 41e9a8184..000000000 --- a/docs/themes/porter/assets/sass/fontawesome/_larger.scss +++ /dev/null @@ -1,13 +0,0 @@ -// Icon Sizes -// ------------------------- - -/* makes the font 33% larger relative to the icon container */ -.#{$fa-css-prefix}-lg { - font-size: (4em / 3); - line-height: (3em / 4); - vertical-align: -15%; -} -.#{$fa-css-prefix}-2x { font-size: 2em; } -.#{$fa-css-prefix}-3x { font-size: 3em; } -.#{$fa-css-prefix}-4x { font-size: 4em; } -.#{$fa-css-prefix}-5x { font-size: 5em; } diff --git a/docs/themes/porter/assets/sass/fontawesome/_list.scss b/docs/themes/porter/assets/sass/fontawesome/_list.scss deleted file mode 100755 index 7d1e4d54d..000000000 --- a/docs/themes/porter/assets/sass/fontawesome/_list.scss +++ /dev/null @@ -1,19 +0,0 @@ -// List Icons -// ------------------------- - -.#{$fa-css-prefix}-ul { - padding-left: 0; - margin-left: $fa-li-width; - list-style-type: none; - > li { position: relative; } -} -.#{$fa-css-prefix}-li { - position: absolute; - left: -$fa-li-width; - width: $fa-li-width; - top: (2em / 14); - text-align: center; - &.#{$fa-css-prefix}-lg { - left: -$fa-li-width + (4em / 14); - } -} diff --git a/docs/themes/porter/assets/sass/fontawesome/_mixins.scss b/docs/themes/porter/assets/sass/fontawesome/_mixins.scss deleted file mode 100755 index f96719b6a..000000000 --- a/docs/themes/porter/assets/sass/fontawesome/_mixins.scss +++ /dev/null @@ -1,26 +0,0 @@ -// Mixins -// -------------------------- - -@mixin fa-icon() { - display: inline-block; - font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} - -@mixin fa-icon-rotate($degrees, $rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); - -webkit-transform: rotate($degrees); - -ms-transform: rotate($degrees); - transform: rotate($degrees); -} - -@mixin fa-icon-flip($horiz, $vert, $rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); - -webkit-transform: scale($horiz, $vert); - -ms-transform: scale($horiz, $vert); - transform: scale($horiz, $vert); -} diff --git a/docs/themes/porter/assets/sass/fontawesome/_path.scss b/docs/themes/porter/assets/sass/fontawesome/_path.scss deleted file mode 100755 index bb457c23a..000000000 --- a/docs/themes/porter/assets/sass/fontawesome/_path.scss +++ /dev/null @@ -1,15 +0,0 @@ -/* FONT PATH - * -------------------------- */ - -@font-face { - font-family: 'FontAwesome'; - src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); - src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), - url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), - url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), - url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), - url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); -// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts - font-weight: normal; - font-style: normal; -} diff --git a/docs/themes/porter/assets/sass/fontawesome/_rotated-flipped.scss b/docs/themes/porter/assets/sass/fontawesome/_rotated-flipped.scss deleted file mode 100755 index a3558fd09..000000000 --- a/docs/themes/porter/assets/sass/fontawesome/_rotated-flipped.scss +++ /dev/null @@ -1,20 +0,0 @@ -// Rotated & Flipped Icons -// ------------------------- - -.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } -.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } -.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } - -.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } -.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } - -// Hook for IE8-9 -// ------------------------- - -:root .#{$fa-css-prefix}-rotate-90, -:root .#{$fa-css-prefix}-rotate-180, -:root .#{$fa-css-prefix}-rotate-270, -:root .#{$fa-css-prefix}-flip-horizontal, -:root .#{$fa-css-prefix}-flip-vertical { - filter: none; -} diff --git a/docs/themes/porter/assets/sass/fontawesome/_stacked.scss b/docs/themes/porter/assets/sass/fontawesome/_stacked.scss deleted file mode 100755 index aef740366..000000000 --- a/docs/themes/porter/assets/sass/fontawesome/_stacked.scss +++ /dev/null @@ -1,20 +0,0 @@ -// Stacked Icons -// ------------------------- - -.#{$fa-css-prefix}-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.#{$fa-css-prefix}-stack-1x { line-height: inherit; } -.#{$fa-css-prefix}-stack-2x { font-size: 2em; } -.#{$fa-css-prefix}-inverse { color: $fa-inverse; } diff --git a/docs/themes/porter/assets/sass/fontawesome/_variables.scss b/docs/themes/porter/assets/sass/fontawesome/_variables.scss deleted file mode 100755 index 0a471102c..000000000 --- a/docs/themes/porter/assets/sass/fontawesome/_variables.scss +++ /dev/null @@ -1,708 +0,0 @@ -// Variables -// -------------------------- - -$fa-font-path: "../fonts" !default; -$fa-font-size-base: 14px !default; -$fa-line-height-base: 1 !default; -//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.5.0/fonts" !default; // for referencing Bootstrap CDN font files directly -$fa-css-prefix: fa !default; -$fa-version: "4.5.0" !default; -$fa-border-color: #eee !default; -$fa-inverse: #fff !default; -$fa-li-width: (30em / 14) !default; - -$fa-var-500px: "\f26e"; -$fa-var-adjust: "\f042"; -$fa-var-adn: "\f170"; -$fa-var-align-center: "\f037"; -$fa-var-align-justify: "\f039"; -$fa-var-align-left: "\f036"; -$fa-var-align-right: "\f038"; -$fa-var-amazon: "\f270"; -$fa-var-ambulance: "\f0f9"; -$fa-var-anchor: "\f13d"; -$fa-var-android: "\f17b"; -$fa-var-angellist: "\f209"; -$fa-var-angle-double-down: "\f103"; -$fa-var-angle-double-left: "\f100"; -$fa-var-angle-double-right: "\f101"; -$fa-var-angle-double-up: "\f102"; -$fa-var-angle-down: "\f107"; -$fa-var-angle-left: "\f104"; -$fa-var-angle-right: "\f105"; -$fa-var-angle-up: "\f106"; -$fa-var-apple: "\f179"; -$fa-var-archive: "\f187"; -$fa-var-area-chart: "\f1fe"; -$fa-var-arrow-circle-down: "\f0ab"; -$fa-var-arrow-circle-left: "\f0a8"; -$fa-var-arrow-circle-o-down: "\f01a"; -$fa-var-arrow-circle-o-left: "\f190"; -$fa-var-arrow-circle-o-right: "\f18e"; -$fa-var-arrow-circle-o-up: "\f01b"; -$fa-var-arrow-circle-right: "\f0a9"; -$fa-var-arrow-circle-up: "\f0aa"; -$fa-var-arrow-down: "\f063"; -$fa-var-arrow-left: "\f060"; -$fa-var-arrow-right: "\f061"; -$fa-var-arrow-up: "\f062"; -$fa-var-arrows: "\f047"; -$fa-var-arrows-alt: "\f0b2"; -$fa-var-arrows-h: "\f07e"; -$fa-var-arrows-v: "\f07d"; -$fa-var-asterisk: "\f069"; -$fa-var-at: "\f1fa"; -$fa-var-automobile: "\f1b9"; -$fa-var-backward: "\f04a"; -$fa-var-balance-scale: "\f24e"; -$fa-var-ban: "\f05e"; -$fa-var-bank: "\f19c"; -$fa-var-bar-chart: "\f080"; -$fa-var-bar-chart-o: "\f080"; -$fa-var-barcode: "\f02a"; -$fa-var-bars: "\f0c9"; -$fa-var-battery-0: "\f244"; -$fa-var-battery-1: "\f243"; -$fa-var-battery-2: "\f242"; -$fa-var-battery-3: "\f241"; -$fa-var-battery-4: "\f240"; -$fa-var-battery-empty: "\f244"; -$fa-var-battery-full: "\f240"; -$fa-var-battery-half: "\f242"; -$fa-var-battery-quarter: "\f243"; -$fa-var-battery-three-quarters: "\f241"; -$fa-var-bed: "\f236"; -$fa-var-beer: "\f0fc"; -$fa-var-behance: "\f1b4"; -$fa-var-behance-square: "\f1b5"; -$fa-var-bell: "\f0f3"; -$fa-var-bell-o: "\f0a2"; -$fa-var-bell-slash: "\f1f6"; -$fa-var-bell-slash-o: "\f1f7"; -$fa-var-bicycle: "\f206"; -$fa-var-binoculars: "\f1e5"; -$fa-var-birthday-cake: "\f1fd"; -$fa-var-bitbucket: "\f171"; -$fa-var-bitbucket-square: "\f172"; -$fa-var-bitcoin: "\f15a"; -$fa-var-black-tie: "\f27e"; -$fa-var-bluetooth: "\f293"; -$fa-var-bluetooth-b: "\f294"; -$fa-var-bold: "\f032"; -$fa-var-bolt: "\f0e7"; -$fa-var-bomb: "\f1e2"; -$fa-var-book: "\f02d"; -$fa-var-bookmark: "\f02e"; -$fa-var-bookmark-o: "\f097"; -$fa-var-briefcase: "\f0b1"; -$fa-var-btc: "\f15a"; -$fa-var-bug: "\f188"; -$fa-var-building: "\f1ad"; -$fa-var-building-o: "\f0f7"; -$fa-var-bullhorn: "\f0a1"; -$fa-var-bullseye: "\f140"; -$fa-var-bus: "\f207"; -$fa-var-buysellads: "\f20d"; -$fa-var-cab: "\f1ba"; -$fa-var-calculator: "\f1ec"; -$fa-var-calendar: "\f073"; -$fa-var-calendar-check-o: "\f274"; -$fa-var-calendar-minus-o: "\f272"; -$fa-var-calendar-o: "\f133"; -$fa-var-calendar-plus-o: "\f271"; -$fa-var-calendar-times-o: "\f273"; -$fa-var-camera: "\f030"; -$fa-var-camera-retro: "\f083"; -$fa-var-car: "\f1b9"; -$fa-var-caret-down: "\f0d7"; -$fa-var-caret-left: "\f0d9"; -$fa-var-caret-right: "\f0da"; -$fa-var-caret-square-o-down: "\f150"; -$fa-var-caret-square-o-left: "\f191"; -$fa-var-caret-square-o-right: "\f152"; -$fa-var-caret-square-o-up: "\f151"; -$fa-var-caret-up: "\f0d8"; -$fa-var-cart-arrow-down: "\f218"; -$fa-var-cart-plus: "\f217"; -$fa-var-cc: "\f20a"; -$fa-var-cc-amex: "\f1f3"; -$fa-var-cc-diners-club: "\f24c"; -$fa-var-cc-discover: "\f1f2"; -$fa-var-cc-jcb: "\f24b"; -$fa-var-cc-mastercard: "\f1f1"; -$fa-var-cc-paypal: "\f1f4"; -$fa-var-cc-stripe: "\f1f5"; -$fa-var-cc-visa: "\f1f0"; -$fa-var-certificate: "\f0a3"; -$fa-var-chain: "\f0c1"; -$fa-var-chain-broken: "\f127"; -$fa-var-check: "\f00c"; -$fa-var-check-circle: "\f058"; -$fa-var-check-circle-o: "\f05d"; -$fa-var-check-square: "\f14a"; -$fa-var-check-square-o: "\f046"; -$fa-var-chevron-circle-down: "\f13a"; -$fa-var-chevron-circle-left: "\f137"; -$fa-var-chevron-circle-right: "\f138"; -$fa-var-chevron-circle-up: "\f139"; -$fa-var-chevron-down: "\f078"; -$fa-var-chevron-left: "\f053"; -$fa-var-chevron-right: "\f054"; -$fa-var-chevron-up: "\f077"; -$fa-var-child: "\f1ae"; -$fa-var-chrome: "\f268"; -$fa-var-circle: "\f111"; -$fa-var-circle-o: "\f10c"; -$fa-var-circle-o-notch: "\f1ce"; -$fa-var-circle-thin: "\f1db"; -$fa-var-clipboard: "\f0ea"; -$fa-var-clock-o: "\f017"; -$fa-var-clone: "\f24d"; -$fa-var-close: "\f00d"; -$fa-var-cloud: "\f0c2"; -$fa-var-cloud-download: "\f0ed"; -$fa-var-cloud-upload: "\f0ee"; -$fa-var-cny: "\f157"; -$fa-var-code: "\f121"; -$fa-var-code-fork: "\f126"; -$fa-var-codepen: "\f1cb"; -$fa-var-codiepie: "\f284"; -$fa-var-coffee: "\f0f4"; -$fa-var-cog: "\f013"; -$fa-var-cogs: "\f085"; -$fa-var-columns: "\f0db"; -$fa-var-comment: "\f075"; -$fa-var-comment-o: "\f0e5"; -$fa-var-commenting: "\f27a"; -$fa-var-commenting-o: "\f27b"; -$fa-var-comments: "\f086"; -$fa-var-comments-o: "\f0e6"; -$fa-var-compass: "\f14e"; -$fa-var-compress: "\f066"; -$fa-var-connectdevelop: "\f20e"; -$fa-var-contao: "\f26d"; -$fa-var-copy: "\f0c5"; -$fa-var-copyright: "\f1f9"; -$fa-var-creative-commons: "\f25e"; -$fa-var-credit-card: "\f09d"; -$fa-var-credit-card-alt: "\f283"; -$fa-var-crop: "\f125"; -$fa-var-crosshairs: "\f05b"; -$fa-var-css3: "\f13c"; -$fa-var-cube: "\f1b2"; -$fa-var-cubes: "\f1b3"; -$fa-var-cut: "\f0c4"; -$fa-var-cutlery: "\f0f5"; -$fa-var-dashboard: "\f0e4"; -$fa-var-dashcube: "\f210"; -$fa-var-database: "\f1c0"; -$fa-var-dedent: "\f03b"; -$fa-var-delicious: "\f1a5"; -$fa-var-desktop: "\f108"; -$fa-var-deviantart: "\f1bd"; -$fa-var-diamond: "\f219"; -$fa-var-digg: "\f1a6"; -$fa-var-dollar: "\f155"; -$fa-var-dot-circle-o: "\f192"; -$fa-var-download: "\f019"; -$fa-var-dribbble: "\f17d"; -$fa-var-dropbox: "\f16b"; -$fa-var-drupal: "\f1a9"; -$fa-var-edge: "\f282"; -$fa-var-edit: "\f044"; -$fa-var-eject: "\f052"; -$fa-var-ellipsis-h: "\f141"; -$fa-var-ellipsis-v: "\f142"; -$fa-var-empire: "\f1d1"; -$fa-var-envelope: "\f0e0"; -$fa-var-envelope-o: "\f003"; -$fa-var-envelope-square: "\f199"; -$fa-var-eraser: "\f12d"; -$fa-var-eur: "\f153"; -$fa-var-euro: "\f153"; -$fa-var-exchange: "\f0ec"; -$fa-var-exclamation: "\f12a"; -$fa-var-exclamation-circle: "\f06a"; -$fa-var-exclamation-triangle: "\f071"; -$fa-var-expand: "\f065"; -$fa-var-expeditedssl: "\f23e"; -$fa-var-external-link: "\f08e"; -$fa-var-external-link-square: "\f14c"; -$fa-var-eye: "\f06e"; -$fa-var-eye-slash: "\f070"; -$fa-var-eyedropper: "\f1fb"; -$fa-var-facebook: "\f09a"; -$fa-var-facebook-f: "\f09a"; -$fa-var-facebook-official: "\f230"; -$fa-var-facebook-square: "\f082"; -$fa-var-fast-backward: "\f049"; -$fa-var-fast-forward: "\f050"; -$fa-var-fax: "\f1ac"; -$fa-var-feed: "\f09e"; -$fa-var-female: "\f182"; -$fa-var-fighter-jet: "\f0fb"; -$fa-var-file: "\f15b"; -$fa-var-file-archive-o: "\f1c6"; -$fa-var-file-audio-o: "\f1c7"; -$fa-var-file-code-o: "\f1c9"; -$fa-var-file-excel-o: "\f1c3"; -$fa-var-file-image-o: "\f1c5"; -$fa-var-file-movie-o: "\f1c8"; -$fa-var-file-o: "\f016"; -$fa-var-file-pdf-o: "\f1c1"; -$fa-var-file-photo-o: "\f1c5"; -$fa-var-file-picture-o: "\f1c5"; -$fa-var-file-powerpoint-o: "\f1c4"; -$fa-var-file-sound-o: "\f1c7"; -$fa-var-file-text: "\f15c"; -$fa-var-file-text-o: "\f0f6"; -$fa-var-file-video-o: "\f1c8"; -$fa-var-file-word-o: "\f1c2"; -$fa-var-file-zip-o: "\f1c6"; -$fa-var-files-o: "\f0c5"; -$fa-var-film: "\f008"; -$fa-var-filter: "\f0b0"; -$fa-var-fire: "\f06d"; -$fa-var-fire-extinguisher: "\f134"; -$fa-var-firefox: "\f269"; -$fa-var-flag: "\f024"; -$fa-var-flag-checkered: "\f11e"; -$fa-var-flag-o: "\f11d"; -$fa-var-flash: "\f0e7"; -$fa-var-flask: "\f0c3"; -$fa-var-flickr: "\f16e"; -$fa-var-floppy-o: "\f0c7"; -$fa-var-folder: "\f07b"; -$fa-var-folder-o: "\f114"; -$fa-var-folder-open: "\f07c"; -$fa-var-folder-open-o: "\f115"; -$fa-var-font: "\f031"; -$fa-var-fonticons: "\f280"; -$fa-var-fort-awesome: "\f286"; -$fa-var-forumbee: "\f211"; -$fa-var-forward: "\f04e"; -$fa-var-foursquare: "\f180"; -$fa-var-frown-o: "\f119"; -$fa-var-futbol-o: "\f1e3"; -$fa-var-gamepad: "\f11b"; -$fa-var-gavel: "\f0e3"; -$fa-var-gbp: "\f154"; -$fa-var-ge: "\f1d1"; -$fa-var-gear: "\f013"; -$fa-var-gears: "\f085"; -$fa-var-genderless: "\f22d"; -$fa-var-get-pocket: "\f265"; -$fa-var-gg: "\f260"; -$fa-var-gg-circle: "\f261"; -$fa-var-gift: "\f06b"; -$fa-var-git: "\f1d3"; -$fa-var-git-square: "\f1d2"; -$fa-var-github: "\f09b"; -$fa-var-github-alt: "\f113"; -$fa-var-github-square: "\f092"; -$fa-var-gittip: "\f184"; -$fa-var-glass: "\f000"; -$fa-var-globe: "\f0ac"; -$fa-var-google: "\f1a0"; -$fa-var-google-plus: "\f0d5"; -$fa-var-google-plus-square: "\f0d4"; -$fa-var-google-wallet: "\f1ee"; -$fa-var-graduation-cap: "\f19d"; -$fa-var-gratipay: "\f184"; -$fa-var-group: "\f0c0"; -$fa-var-h-square: "\f0fd"; -$fa-var-hacker-news: "\f1d4"; -$fa-var-hand-grab-o: "\f255"; -$fa-var-hand-lizard-o: "\f258"; -$fa-var-hand-o-down: "\f0a7"; -$fa-var-hand-o-left: "\f0a5"; -$fa-var-hand-o-right: "\f0a4"; -$fa-var-hand-o-up: "\f0a6"; -$fa-var-hand-paper-o: "\f256"; -$fa-var-hand-peace-o: "\f25b"; -$fa-var-hand-pointer-o: "\f25a"; -$fa-var-hand-rock-o: "\f255"; -$fa-var-hand-scissors-o: "\f257"; -$fa-var-hand-spock-o: "\f259"; -$fa-var-hand-stop-o: "\f256"; -$fa-var-hashtag: "\f292"; -$fa-var-hdd-o: "\f0a0"; -$fa-var-header: "\f1dc"; -$fa-var-headphones: "\f025"; -$fa-var-heart: "\f004"; -$fa-var-heart-o: "\f08a"; -$fa-var-heartbeat: "\f21e"; -$fa-var-history: "\f1da"; -$fa-var-home: "\f015"; -$fa-var-hospital-o: "\f0f8"; -$fa-var-hotel: "\f236"; -$fa-var-hourglass: "\f254"; -$fa-var-hourglass-1: "\f251"; -$fa-var-hourglass-2: "\f252"; -$fa-var-hourglass-3: "\f253"; -$fa-var-hourglass-end: "\f253"; -$fa-var-hourglass-half: "\f252"; -$fa-var-hourglass-o: "\f250"; -$fa-var-hourglass-start: "\f251"; -$fa-var-houzz: "\f27c"; -$fa-var-html5: "\f13b"; -$fa-var-i-cursor: "\f246"; -$fa-var-ils: "\f20b"; -$fa-var-image: "\f03e"; -$fa-var-inbox: "\f01c"; -$fa-var-indent: "\f03c"; -$fa-var-industry: "\f275"; -$fa-var-info: "\f129"; -$fa-var-info-circle: "\f05a"; -$fa-var-inr: "\f156"; -$fa-var-instagram: "\f16d"; -$fa-var-institution: "\f19c"; -$fa-var-internet-explorer: "\f26b"; -$fa-var-intersex: "\f224"; -$fa-var-ioxhost: "\f208"; -$fa-var-italic: "\f033"; -$fa-var-joomla: "\f1aa"; -$fa-var-jpy: "\f157"; -$fa-var-jsfiddle: "\f1cc"; -$fa-var-key: "\f084"; -$fa-var-keyboard-o: "\f11c"; -$fa-var-krw: "\f159"; -$fa-var-language: "\f1ab"; -$fa-var-laptop: "\f109"; -$fa-var-lastfm: "\f202"; -$fa-var-lastfm-square: "\f203"; -$fa-var-leaf: "\f06c"; -$fa-var-leanpub: "\f212"; -$fa-var-legal: "\f0e3"; -$fa-var-lemon-o: "\f094"; -$fa-var-level-down: "\f149"; -$fa-var-level-up: "\f148"; -$fa-var-life-bouy: "\f1cd"; -$fa-var-life-buoy: "\f1cd"; -$fa-var-life-ring: "\f1cd"; -$fa-var-life-saver: "\f1cd"; -$fa-var-lightbulb-o: "\f0eb"; -$fa-var-line-chart: "\f201"; -$fa-var-link: "\f0c1"; -$fa-var-linkedin: "\f0e1"; -$fa-var-linkedin-square: "\f08c"; -$fa-var-linux: "\f17c"; -$fa-var-list: "\f03a"; -$fa-var-list-alt: "\f022"; -$fa-var-list-ol: "\f0cb"; -$fa-var-list-ul: "\f0ca"; -$fa-var-location-arrow: "\f124"; -$fa-var-lock: "\f023"; -$fa-var-long-arrow-down: "\f175"; -$fa-var-long-arrow-left: "\f177"; -$fa-var-long-arrow-right: "\f178"; -$fa-var-long-arrow-up: "\f176"; -$fa-var-magic: "\f0d0"; -$fa-var-magnet: "\f076"; -$fa-var-mail-forward: "\f064"; -$fa-var-mail-reply: "\f112"; -$fa-var-mail-reply-all: "\f122"; -$fa-var-male: "\f183"; -$fa-var-map: "\f279"; -$fa-var-map-marker: "\f041"; -$fa-var-map-o: "\f278"; -$fa-var-map-pin: "\f276"; -$fa-var-map-signs: "\f277"; -$fa-var-mars: "\f222"; -$fa-var-mars-double: "\f227"; -$fa-var-mars-stroke: "\f229"; -$fa-var-mars-stroke-h: "\f22b"; -$fa-var-mars-stroke-v: "\f22a"; -$fa-var-maxcdn: "\f136"; -$fa-var-meanpath: "\f20c"; -$fa-var-medium: "\f23a"; -$fa-var-medkit: "\f0fa"; -$fa-var-meh-o: "\f11a"; -$fa-var-mercury: "\f223"; -$fa-var-microphone: "\f130"; -$fa-var-microphone-slash: "\f131"; -$fa-var-minus: "\f068"; -$fa-var-minus-circle: "\f056"; -$fa-var-minus-square: "\f146"; -$fa-var-minus-square-o: "\f147"; -$fa-var-mixcloud: "\f289"; -$fa-var-mobile: "\f10b"; -$fa-var-mobile-phone: "\f10b"; -$fa-var-modx: "\f285"; -$fa-var-money: "\f0d6"; -$fa-var-moon-o: "\f186"; -$fa-var-mortar-board: "\f19d"; -$fa-var-motorcycle: "\f21c"; -$fa-var-mouse-pointer: "\f245"; -$fa-var-music: "\f001"; -$fa-var-navicon: "\f0c9"; -$fa-var-neuter: "\f22c"; -$fa-var-newspaper-o: "\f1ea"; -$fa-var-object-group: "\f247"; -$fa-var-object-ungroup: "\f248"; -$fa-var-odnoklassniki: "\f263"; -$fa-var-odnoklassniki-square: "\f264"; -$fa-var-opencart: "\f23d"; -$fa-var-openid: "\f19b"; -$fa-var-opera: "\f26a"; -$fa-var-optin-monster: "\f23c"; -$fa-var-outdent: "\f03b"; -$fa-var-pagelines: "\f18c"; -$fa-var-paint-brush: "\f1fc"; -$fa-var-paper-plane: "\f1d8"; -$fa-var-paper-plane-o: "\f1d9"; -$fa-var-paperclip: "\f0c6"; -$fa-var-paragraph: "\f1dd"; -$fa-var-paste: "\f0ea"; -$fa-var-pause: "\f04c"; -$fa-var-pause-circle: "\f28b"; -$fa-var-pause-circle-o: "\f28c"; -$fa-var-paw: "\f1b0"; -$fa-var-paypal: "\f1ed"; -$fa-var-pencil: "\f040"; -$fa-var-pencil-square: "\f14b"; -$fa-var-pencil-square-o: "\f044"; -$fa-var-percent: "\f295"; -$fa-var-phone: "\f095"; -$fa-var-phone-square: "\f098"; -$fa-var-photo: "\f03e"; -$fa-var-picture-o: "\f03e"; -$fa-var-pie-chart: "\f200"; -$fa-var-pied-piper: "\f1a7"; -$fa-var-pied-piper-alt: "\f1a8"; -$fa-var-pinterest: "\f0d2"; -$fa-var-pinterest-p: "\f231"; -$fa-var-pinterest-square: "\f0d3"; -$fa-var-plane: "\f072"; -$fa-var-play: "\f04b"; -$fa-var-play-circle: "\f144"; -$fa-var-play-circle-o: "\f01d"; -$fa-var-plug: "\f1e6"; -$fa-var-plus: "\f067"; -$fa-var-plus-circle: "\f055"; -$fa-var-plus-square: "\f0fe"; -$fa-var-plus-square-o: "\f196"; -$fa-var-power-off: "\f011"; -$fa-var-print: "\f02f"; -$fa-var-product-hunt: "\f288"; -$fa-var-puzzle-piece: "\f12e"; -$fa-var-qq: "\f1d6"; -$fa-var-qrcode: "\f029"; -$fa-var-question: "\f128"; -$fa-var-question-circle: "\f059"; -$fa-var-quote-left: "\f10d"; -$fa-var-quote-right: "\f10e"; -$fa-var-ra: "\f1d0"; -$fa-var-random: "\f074"; -$fa-var-rebel: "\f1d0"; -$fa-var-recycle: "\f1b8"; -$fa-var-reddit: "\f1a1"; -$fa-var-reddit-alien: "\f281"; -$fa-var-reddit-square: "\f1a2"; -$fa-var-refresh: "\f021"; -$fa-var-registered: "\f25d"; -$fa-var-remove: "\f00d"; -$fa-var-renren: "\f18b"; -$fa-var-reorder: "\f0c9"; -$fa-var-repeat: "\f01e"; -$fa-var-reply: "\f112"; -$fa-var-reply-all: "\f122"; -$fa-var-retweet: "\f079"; -$fa-var-rmb: "\f157"; -$fa-var-road: "\f018"; -$fa-var-rocket: "\f135"; -$fa-var-rotate-left: "\f0e2"; -$fa-var-rotate-right: "\f01e"; -$fa-var-rouble: "\f158"; -$fa-var-rss: "\f09e"; -$fa-var-rss-square: "\f143"; -$fa-var-rub: "\f158"; -$fa-var-ruble: "\f158"; -$fa-var-rupee: "\f156"; -$fa-var-safari: "\f267"; -$fa-var-save: "\f0c7"; -$fa-var-scissors: "\f0c4"; -$fa-var-scribd: "\f28a"; -$fa-var-search: "\f002"; -$fa-var-search-minus: "\f010"; -$fa-var-search-plus: "\f00e"; -$fa-var-sellsy: "\f213"; -$fa-var-send: "\f1d8"; -$fa-var-send-o: "\f1d9"; -$fa-var-server: "\f233"; -$fa-var-share: "\f064"; -$fa-var-share-alt: "\f1e0"; -$fa-var-share-alt-square: "\f1e1"; -$fa-var-share-square: "\f14d"; -$fa-var-share-square-o: "\f045"; -$fa-var-shekel: "\f20b"; -$fa-var-sheqel: "\f20b"; -$fa-var-shield: "\f132"; -$fa-var-ship: "\f21a"; -$fa-var-shirtsinbulk: "\f214"; -$fa-var-shopping-bag: "\f290"; -$fa-var-shopping-basket: "\f291"; -$fa-var-shopping-cart: "\f07a"; -$fa-var-sign-in: "\f090"; -$fa-var-sign-out: "\f08b"; -$fa-var-signal: "\f012"; -$fa-var-simplybuilt: "\f215"; -$fa-var-sitemap: "\f0e8"; -$fa-var-skyatlas: "\f216"; -$fa-var-skype: "\f17e"; -$fa-var-slack: "\f198"; -$fa-var-sliders: "\f1de"; -$fa-var-slideshare: "\f1e7"; -$fa-var-smile-o: "\f118"; -$fa-var-soccer-ball-o: "\f1e3"; -$fa-var-sort: "\f0dc"; -$fa-var-sort-alpha-asc: "\f15d"; -$fa-var-sort-alpha-desc: "\f15e"; -$fa-var-sort-amount-asc: "\f160"; -$fa-var-sort-amount-desc: "\f161"; -$fa-var-sort-asc: "\f0de"; -$fa-var-sort-desc: "\f0dd"; -$fa-var-sort-down: "\f0dd"; -$fa-var-sort-numeric-asc: "\f162"; -$fa-var-sort-numeric-desc: "\f163"; -$fa-var-sort-up: "\f0de"; -$fa-var-soundcloud: "\f1be"; -$fa-var-space-shuttle: "\f197"; -$fa-var-spinner: "\f110"; -$fa-var-spoon: "\f1b1"; -$fa-var-spotify: "\f1bc"; -$fa-var-square: "\f0c8"; -$fa-var-square-o: "\f096"; -$fa-var-stack-exchange: "\f18d"; -$fa-var-stack-overflow: "\f16c"; -$fa-var-star: "\f005"; -$fa-var-star-half: "\f089"; -$fa-var-star-half-empty: "\f123"; -$fa-var-star-half-full: "\f123"; -$fa-var-star-half-o: "\f123"; -$fa-var-star-o: "\f006"; -$fa-var-steam: "\f1b6"; -$fa-var-steam-square: "\f1b7"; -$fa-var-step-backward: "\f048"; -$fa-var-step-forward: "\f051"; -$fa-var-stethoscope: "\f0f1"; -$fa-var-sticky-note: "\f249"; -$fa-var-sticky-note-o: "\f24a"; -$fa-var-stop: "\f04d"; -$fa-var-stop-circle: "\f28d"; -$fa-var-stop-circle-o: "\f28e"; -$fa-var-street-view: "\f21d"; -$fa-var-strikethrough: "\f0cc"; -$fa-var-stumbleupon: "\f1a4"; -$fa-var-stumbleupon-circle: "\f1a3"; -$fa-var-subscript: "\f12c"; -$fa-var-subway: "\f239"; -$fa-var-suitcase: "\f0f2"; -$fa-var-sun-o: "\f185"; -$fa-var-superscript: "\f12b"; -$fa-var-support: "\f1cd"; -$fa-var-table: "\f0ce"; -$fa-var-tablet: "\f10a"; -$fa-var-tachometer: "\f0e4"; -$fa-var-tag: "\f02b"; -$fa-var-tags: "\f02c"; -$fa-var-tasks: "\f0ae"; -$fa-var-taxi: "\f1ba"; -$fa-var-television: "\f26c"; -$fa-var-tencent-weibo: "\f1d5"; -$fa-var-terminal: "\f120"; -$fa-var-text-height: "\f034"; -$fa-var-text-width: "\f035"; -$fa-var-th: "\f00a"; -$fa-var-th-large: "\f009"; -$fa-var-th-list: "\f00b"; -$fa-var-thumb-tack: "\f08d"; -$fa-var-thumbs-down: "\f165"; -$fa-var-thumbs-o-down: "\f088"; -$fa-var-thumbs-o-up: "\f087"; -$fa-var-thumbs-up: "\f164"; -$fa-var-ticket: "\f145"; -$fa-var-times: "\f00d"; -$fa-var-times-circle: "\f057"; -$fa-var-times-circle-o: "\f05c"; -$fa-var-tint: "\f043"; -$fa-var-toggle-down: "\f150"; -$fa-var-toggle-left: "\f191"; -$fa-var-toggle-off: "\f204"; -$fa-var-toggle-on: "\f205"; -$fa-var-toggle-right: "\f152"; -$fa-var-toggle-up: "\f151"; -$fa-var-trademark: "\f25c"; -$fa-var-train: "\f238"; -$fa-var-transgender: "\f224"; -$fa-var-transgender-alt: "\f225"; -$fa-var-trash: "\f1f8"; -$fa-var-trash-o: "\f014"; -$fa-var-tree: "\f1bb"; -$fa-var-trello: "\f181"; -$fa-var-tripadvisor: "\f262"; -$fa-var-trophy: "\f091"; -$fa-var-truck: "\f0d1"; -$fa-var-try: "\f195"; -$fa-var-tty: "\f1e4"; -$fa-var-tumblr: "\f173"; -$fa-var-tumblr-square: "\f174"; -$fa-var-turkish-lira: "\f195"; -$fa-var-tv: "\f26c"; -$fa-var-twitch: "\f1e8"; -$fa-var-twitter: "\f099"; -$fa-var-twitter-square: "\f081"; -$fa-var-umbrella: "\f0e9"; -$fa-var-underline: "\f0cd"; -$fa-var-undo: "\f0e2"; -$fa-var-university: "\f19c"; -$fa-var-unlink: "\f127"; -$fa-var-unlock: "\f09c"; -$fa-var-unlock-alt: "\f13e"; -$fa-var-unsorted: "\f0dc"; -$fa-var-upload: "\f093"; -$fa-var-usb: "\f287"; -$fa-var-usd: "\f155"; -$fa-var-user: "\f007"; -$fa-var-user-md: "\f0f0"; -$fa-var-user-plus: "\f234"; -$fa-var-user-secret: "\f21b"; -$fa-var-user-times: "\f235"; -$fa-var-users: "\f0c0"; -$fa-var-venus: "\f221"; -$fa-var-venus-double: "\f226"; -$fa-var-venus-mars: "\f228"; -$fa-var-viacoin: "\f237"; -$fa-var-video-camera: "\f03d"; -$fa-var-vimeo: "\f27d"; -$fa-var-vimeo-square: "\f194"; -$fa-var-vine: "\f1ca"; -$fa-var-vk: "\f189"; -$fa-var-volume-down: "\f027"; -$fa-var-volume-off: "\f026"; -$fa-var-volume-up: "\f028"; -$fa-var-warning: "\f071"; -$fa-var-wechat: "\f1d7"; -$fa-var-weibo: "\f18a"; -$fa-var-weixin: "\f1d7"; -$fa-var-whatsapp: "\f232"; -$fa-var-wheelchair: "\f193"; -$fa-var-wifi: "\f1eb"; -$fa-var-wikipedia-w: "\f266"; -$fa-var-windows: "\f17a"; -$fa-var-won: "\f159"; -$fa-var-wordpress: "\f19a"; -$fa-var-wrench: "\f0ad"; -$fa-var-xing: "\f168"; -$fa-var-xing-square: "\f169"; -$fa-var-y-combinator: "\f23b"; -$fa-var-y-combinator-square: "\f1d4"; -$fa-var-yahoo: "\f19e"; -$fa-var-yc: "\f23b"; -$fa-var-yc-square: "\f1d4"; -$fa-var-yelp: "\f1e9"; -$fa-var-yen: "\f157"; -$fa-var-youtube: "\f167"; -$fa-var-youtube-play: "\f16a"; -$fa-var-youtube-square: "\f166"; - diff --git a/docs/themes/porter/assets/sass/fontawesome/font-awesome.scss b/docs/themes/porter/assets/sass/fontawesome/font-awesome.scss deleted file mode 100755 index f4668a53c..000000000 --- a/docs/themes/porter/assets/sass/fontawesome/font-awesome.scss +++ /dev/null @@ -1,17 +0,0 @@ -/*! - * Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ - -@import "variables"; -@import "mixins"; -@import "path"; -@import "core"; -@import "larger"; -@import "fixed-width"; -@import "list"; -@import "bordered-pulled"; -@import "animated"; -@import "rotated-flipped"; -@import "stacked"; -@import "icons"; diff --git a/docs/themes/porter/assets/sass/foundation/_functions.scss b/docs/themes/porter/assets/sass/foundation/_functions.scss deleted file mode 100644 index e0fbd4938..000000000 --- a/docs/themes/porter/assets/sass/foundation/_functions.scss +++ /dev/null @@ -1,156 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -// This is the default html and body font-size for the base rem value. -$rem-base: 16px !default; - -// IMPORT ONCE -// We use this to prevent styles from being loaded multiple times for components that rely on other components. -$modules: () !default; - -@mixin exports($name) { - // Import from global scope - $modules: $modules !global; - // Check if a module is already on the list - $module_index: index($modules, $name); - @if (($module_index == null) or ($module_index == false)) { - $modules: append($modules, $name) !global; - @content; - } -} - -// -// @functions -// - - -// RANGES -// We use these functions to define ranges for various things, like media queries. -@function lower-bound($range) { - @if length($range) <= 0 { - @return 0; - } - @return nth($range, 1); -} - -@function upper-bound($range) { - @if length($range) < 2 { - @return 999999999999; - } - @return nth($range, 2); -} - -// STRIP UNIT -// It strips the unit of measure and returns it -@function strip-unit($num) { - @return $num / ($num * 0 + 1); -} - -// TEXT INPUT TYPES - -@function text-inputs( $types: all, $selector: input ) { - - $return: (); - - $all-text-input-types: - text - password - date - datetime - datetime-local - month - week - email - number - search - tel - time - url - color - textarea; - - @if $types == all { $types: $all-text-input-types; } - - @each $type in $types { - @if $type == textarea { - @if $selector == input { - $return: append($return, unquote('#{$type}'), comma) - } @else { - $return: append($return, unquote('#{$type}#{$selector}'), comma) - } - } @else { - $return: append($return, unquote('#{$selector}[type="#{$type}"]'), comma) - } - } - - @return $return; - -} - -// CONVERT TO REM -@function convert-to-rem($value, $base-value: $rem-base) { - $value: strip-unit($value) / strip-unit($base-value) * 1rem; - @if ($value == 0rem) { $value: 0; } // Turn 0rem into 0 - @return $value; -} - -@function data($attr) { - @if $namespace { - @return '[data-' + $namespace + '-' + $attr + ']'; - } - - @return '[data-' + $attr + ']'; -} - -// REM CALC - -// New Syntax, allows to optionally calculate on a different base value to counter compounding effect of rem's. -// Call with 1, 2, 3 or 4 parameters, 'px' is not required but supported: -// -// rem-calc(10 20 30px 40); -// -// Space delimited, if you want to delimit using comma's, wrap it in another pair of brackets -// -// rem-calc((10, 20, 30, 40px)); -// -// Optionally call with a different base (eg: 8px) to calculate rem. -// -// rem-calc(16px 32px 48px, 8px); -// -// If you require to comma separate your list -// -// rem-calc((16px, 32px, 48), 8px); - -@function rem-calc($values, $base-value: $rem-base) { - $max: length($values); - - @if $max == 1 { @return convert-to-rem(nth($values, 1), $base-value); } - - $remValues: (); - @for $i from 1 through $max { - $remValues: append($remValues, convert-to-rem(nth($values, $i), $base-value)); - } - @return $remValues; -} - - -@function em-calc($values, $base-value: $rem-base) { - $remValues: rem-calc($values, $base-value: $rem-base); - - $max: length($remValues); - - @if $max == 1 { @return strip-unit(nth($remValues, 1)) * 1em; } - - $emValues: (); - @for $i from 1 through $max { - $emValues: append($emValues, strip-unit(nth($remValues, $i)) * 1em); - } - @return $emValues; -} - - -// Deprecated: OLD EM CALC -@function emCalc($values) { - @return em-calc($values); -} diff --git a/docs/themes/porter/assets/sass/foundation/_settings.scss b/docs/themes/porter/assets/sass/foundation/_settings.scss deleted file mode 100644 index 574142f1d..000000000 --- a/docs/themes/porter/assets/sass/foundation/_settings.scss +++ /dev/null @@ -1,1489 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -// - -// Table of Contents -// Foundation Settings - -// a. Base -// b. Grid -// c. Global -// d. Media Query Ranges -// e. Typography -// 01. Accordion -// 02. Alert Boxes -// 03. Block Grid -// 04. Breadcrumbs -// 05. Buttons -// 06. Button Groups -// 07. Clearing -// 08. Dropdown -// 09. Dropdown Buttons -// 10. Flex Video -// 11. Forms -// 12. Icon Bar -// 13. Inline Lists -// 14. Joyride -// 15. Keystrokes -// 16. Labels -// 17. Magellan -// 18. Off-canvas -// 19. Orbit -// 20. Pagination -// 21. Panels -// 22. Pricing Tables -// 23. Progress Bar -// 24. Range Slider -// 25. Reveal -// 26. Side Nav -// 27. Split Buttons -// 28. Sub Nav -// 29. Switch -// 30. Tables -// 31. Tabs -// 32. Thumbnails -// 33. Tooltips -// 34. Top Bar -// 36. Visibility Classes - -// a. Base -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// This is the default html and body font-size for the base rem value. -// $rem-base: 16px; - -// Allows the use of rem-calc() or lower-bound() in your settings -@import 'foundation/functions'; - -// The default font-size is set to 100% of the browser style sheet (usually 16px) -// for compatibility with browser-based text zoom or user-set defaults. - -// Since the typical default browser font-size is 16px, that makes the calculation for grid size. -// If you want your base font-size to be different and not have it affect the grid breakpoints, -// set $rem-base to $base-font-size and make sure $base-font-size is a px value. -// $base-font-size: 100%; - -// The $base-font-size is 100% while $base-line-height is 150% -// $base-line-height: 150%; - -// We use this to control whether or not CSS classes come through in the gem files. -$include-html-classes: true; -// $include-print-styles: true; -$include-html-global-classes: $include-html-classes; - -// b. Grid -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-grid-classes: $include-html-classes; -// $include-xl-html-grid-classes: false; - -// $row-width: rem-calc(1000); -// $total-columns: 12; -// $column-gutter: rem-calc(30); - -// c. Global -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// We use these to define default font stacks -// $font-family-sans-serif: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; -// $font-family-serif: Georgia, Cambria, "Times New Roman", Times, serif; -// $font-family-monospace: Consolas, "Liberation Mono", Courier, monospace; - -// We use these to define default font weights -// $font-weight-normal: normal; -// $font-weight-bold: bold; - -// $white : #FFFFFF; -// $ghost : #FAFAFA; -// $snow : #F9F9F9; -// $vapor : #F6F6F6; -// $white-smoke : #F5F5F5; -// $silver : #EFEFEF; -// $smoke : #EEEEEE; -// $gainsboro : #DDDDDD; -// $iron : #CCCCCC; -// $base : #AAAAAA; -// $aluminum : #999999; -// $jumbo : #888888; -// $monsoon : #777777; -// $steel : #666666; -// $charcoal : #555555; -// $tuatara : #444444; -// $oil : #333333; -// $jet : #222222; -// $black : #000000; - -// We use these as default colors throughout -// $primary-color: #008CBA; -// $secondary-color: #e7e7e7; -// $alert-color: #f04124; -// $success-color: #43AC6A; -// $warning-color: #f08a24; -// $info-color: #a0d3e8; - -// We use these to control various global styles -// $body-bg: $white; -// $body-font-color: $jet; -// $body-font-family: $font-family-sans-serif; -// $body-font-weight: $font-weight-normal; -// $body-font-style: normal; - -// We use this to control font-smoothing -// $font-smoothing: antialiased; - -// We use these to control text direction settings -// $text-direction: ltr; -// $opposite-direction: right; -// $default-float: left; -// $last-child-float: $opposite-direction; - -// We use these to make sure border radius matches unless we want it different. -// $global-radius: 3px; -// $global-rounded: 1000px; - -// We use these to control inset shadow shiny edges and depressions. -// $shiny-edge-size: 0 1px 0; -// $shiny-edge-color: rgba($white, .5); -// $shiny-edge-active-color: rgba($black, .2); - -// d. Media Query Ranges -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $small-breakpoint: em-calc(640); -// $medium-breakpoint: em-calc(1024); -// $large-breakpoint: em-calc(1440); -// $xlarge-breakpoint: em-calc(1920); - -// $small-range: (0, $small-breakpoint); -// $medium-range: ($small-breakpoint + em-calc(1), $medium-breakpoint); -// $large-range: ($medium-breakpoint + em-calc(1), $large-breakpoint); -// $xlarge-range: ($large-breakpoint + em-calc(1), $xlarge-breakpoint); -// $xxlarge-range: ($xlarge-breakpoint + em-calc(1), em-calc(99999999)); - -// $screen: "only screen"; - -// $landscape: "#{$screen} and (orientation: landscape)"; -// $portrait: "#{$screen} and (orientation: portrait)"; - -// $small-up: $screen; -// $small-only: "#{$screen} and (max-width: #{upper-bound($small-range)})"; - -// $medium-up: "#{$screen} and (min-width:#{lower-bound($medium-range)})"; -// $medium-only: "#{$screen} and (min-width:#{lower-bound($medium-range)}) and (max-width:#{upper-bound($medium-range)})"; - -// $large-up: "#{$screen} and (min-width:#{lower-bound($large-range)})"; -// $large-only: "#{$screen} and (min-width:#{lower-bound($large-range)}) and (max-width:#{upper-bound($large-range)})"; - -// $xlarge-up: "#{$screen} and (min-width:#{lower-bound($xlarge-range)})"; -// $xlarge-only: "#{$screen} and (min-width:#{lower-bound($xlarge-range)}) and (max-width:#{upper-bound($xlarge-range)})"; - -// $xxlarge-up: "#{$screen} and (min-width:#{lower-bound($xxlarge-range)})"; -// $xxlarge-only: "#{$screen} and (min-width:#{lower-bound($xxlarge-range)}) and (max-width:#{upper-bound($xxlarge-range)})"; - -// $retina: ( -// "#{$screen} and (-webkit-min-device-pixel-ratio: 2)", -// "#{$screen} and (min--moz-device-pixel-ratio: 2)", -// "#{$screen} and (-o-min-device-pixel-ratio: 2/1)", -// "#{$screen} and (min-device-pixel-ratio: 2)", -// "#{$screen} and (min-resolution: 192dpi)", -// "#{$screen} and (min-resolution: 2dppx)" -// ); - -// Legacy -// $small: $medium-up; -// $medium: $medium-up; -// $large: $large-up; - -// We use this as cursors values for enabling the option of having custom cursors in the whole site's stylesheet -// $cursor-crosshair-value: crosshair; -// $cursor-default-value: default; -// $cursor-disabled-value: not-allowed; -// $cursor-pointer-value: pointer; -// $cursor-help-value: help; -// $cursor-text-value: text; - -// e. Typography -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-type-classes: $include-html-classes; - -// We use these to control header font styles -// $header-font-family: $body-font-family; -// $header-font-weight: $font-weight-normal; -// $header-font-style: normal; -// $header-font-color: $jet; -// $header-line-height: 1.4; -// $header-top-margin: .2rem; -// $header-bottom-margin: .5rem; -// $header-text-rendering: optimizeLegibility; - -// We use these to control header font sizes -// $h1-font-size: rem-calc(44); -// $h2-font-size: rem-calc(37); -// $h3-font-size: rem-calc(27); -// $h4-font-size: rem-calc(23); -// $h5-font-size: rem-calc(18); -// $h6-font-size: 1rem; - -// We use these to control header size reduction on small screens -// $h1-font-reduction: rem-calc(10); -// $h2-font-reduction: rem-calc(10); -// $h3-font-reduction: rem-calc(5); -// $h4-font-reduction: rem-calc(5); -// $h5-font-reduction: 0; -// $h6-font-reduction: 0; - -// These control how subheaders are styled. -// $subheader-line-height: 1.4; -// $subheader-font-color: scale-color($header-font-color, $lightness: 35%); -// $subheader-font-weight: $font-weight-normal; -// $subheader-top-margin: .2rem; -// $subheader-bottom-margin: .5rem; - -// A general styling -// $small-font-size: 60%; -// $small-font-color: scale-color($header-font-color, $lightness: 35%); - -// We use these to style paragraphs -// $paragraph-font-family: inherit; -// $paragraph-font-weight: $font-weight-normal; -// $paragraph-font-size: 1rem; -// $paragraph-line-height: 1.6; -// $paragraph-margin-bottom: rem-calc(20); -// $paragraph-aside-font-size: rem-calc(14); -// $paragraph-aside-line-height: 1.35; -// $paragraph-aside-font-style: italic; -// $paragraph-text-rendering: optimizeLegibility; - -// We use these to style tags -// $code-color: $oil; -// $code-font-family: $font-family-monospace; -// $code-font-weight: $font-weight-normal; -// $code-background-color: scale-color($secondary-color, $lightness: 70%); -// $code-border-size: 1px; -// $code-border-style: solid; -// $code-border-color: scale-color($code-background-color, $lightness: -10%); -// $code-padding: rem-calc(2) rem-calc(5) rem-calc(1); - -// We use these to style anchors -// $anchor-text-decoration: none; -// $anchor-text-decoration-hover: none; -// $anchor-font-color: $primary-color; -// $anchor-font-color-hover: scale-color($anchor-font-color, $lightness: -14%); - -// We use these to style the
element -// $hr-border-width: 1px; -// $hr-border-style: solid; -// $hr-border-color: $gainsboro; -// $hr-margin: rem-calc(20); - -// We use these to style lists -// $list-font-family: $paragraph-font-family; -// $list-font-size: $paragraph-font-size; -// $list-line-height: $paragraph-line-height; -// $list-margin-bottom: $paragraph-margin-bottom; -// $list-style-position: outside; -// $list-side-margin: 1.1rem; -// $list-ordered-side-margin: 1.4rem; -// $list-side-margin-no-bullet: 0; -// $list-nested-margin: rem-calc(20); -// $definition-list-header-weight: $font-weight-bold; -// $definition-list-header-margin-bottom: .3rem; -// $definition-list-margin-bottom: rem-calc(12); - -// We use these to style blockquotes -// $blockquote-font-color: scale-color($header-font-color, $lightness: 35%); -// $blockquote-padding: rem-calc(9 20 0 19); -// $blockquote-border: 1px solid $gainsboro; -// $blockquote-cite-font-size: rem-calc(13); -// $blockquote-cite-font-color: scale-color($header-font-color, $lightness: 23%); -// $blockquote-cite-link-color: $blockquote-cite-font-color; - -// Acronym styles -// $acronym-underline: 1px dotted $gainsboro; - -// We use these to control padding and margin -// $microformat-padding: rem-calc(10 12); -// $microformat-margin: rem-calc(0 0 20 0); - -// We use these to control the border styles -// $microformat-border-width: 1px; -// $microformat-border-style: solid; -// $microformat-border-color: $gainsboro; - -// We use these to control full name font styles -// $microformat-fullname-font-weight: $font-weight-bold; -// $microformat-fullname-font-size: rem-calc(15); - -// We use this to control the summary font styles -// $microformat-summary-font-weight: $font-weight-bold; - -// We use this to control abbr padding -// $microformat-abbr-padding: rem-calc(0 1); - -// We use this to control abbr font styles -// $microformat-abbr-font-weight: $font-weight-bold; -// $microformat-abbr-font-decoration: none; - -// 01. Accordion -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-accordion-classes: $include-html-classes; - -// $accordion-navigation-padding: rem-calc(16); -// $accordion-navigation-bg-color: $silver; -// $accordion-navigation-hover-bg-color: scale-color($accordion-navigation-bg-color, $lightness: -5%); -// $accordion-navigation-active-bg-color: scale-color($accordion-navigation-bg-color, $lightness: -3%); -// $accordion-navigation-active-font-color: $jet; -// $accordion-navigation-font-color: $jet; -// $accordion-navigation-font-size: rem-calc(16); -// $accordion-navigation-font-family: $body-font-family; - -// $accordion-content-padding: ($column-gutter/2); -// $accordion-content-active-bg-color: $white; - -// 02. Alert Boxes -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-alert-classes: $include-html-classes; - -// We use this to control alert padding. -// $alert-padding-top: rem-calc(14); -// $alert-padding-default-float: $alert-padding-top; -// $alert-padding-opposite-direction: $alert-padding-top + rem-calc(10); -// $alert-padding-bottom: $alert-padding-top; - -// We use these to control text style. -// $alert-font-weight: $font-weight-normal; -// $alert-font-size: rem-calc(13); -// $alert-font-color: $white; -// $alert-font-color-alt: scale-color($secondary-color, $lightness: -66%); - -// We use this for close hover effect. -// $alert-function-factor: -14%; - -// We use these to control border styles. -// $alert-border-style: solid; -// $alert-border-width: 1px; -// $alert-border-color: scale-color($primary-color, $lightness: $alert-function-factor); -// $alert-bottom-margin: rem-calc(20); - -// We use these to style the close buttons -// $alert-close-color: $oil; -// $alert-close-top: 50%; -// $alert-close-position: rem-calc(4); -// $alert-close-font-size: rem-calc(22); -// $alert-close-opacity: .3; -// $alert-close-opacity-hover: .5; -// $alert-close-padding: 9px 6px 4px; -// $alert-close-background: inherit; - -// We use this to control border radius -// $alert-radius: $global-radius; - -// $alert-transition-speed: 300ms; -// $alert-transition-ease: ease-out; - -// 03. Block Grid -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-block-grid-classes: $include-html-classes; -// $include-xl-html-block-grid-classes: false; - -// We use this to control the maximum number of block grid elements per row -// $block-grid-elements: 12; -// $block-grid-default-spacing: rem-calc(20); - -// $align-block-grid-to-grid: false; -// @if $align-block-grid-to-grid {$block-grid-default-spacing: $column-gutter;} - -// Enables media queries for block-grid classes. Set to false if writing semantic HTML. -// $block-grid-media-queries: true; - -// 04. Breadcrumbs -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-nav-classes: $include-html-classes; - -// We use this to set the background color for the breadcrumb container. -// $crumb-bg: scale-color($secondary-color, $lightness: 55%); - -// We use these to set the padding around the breadcrumbs. -// $crumb-padding: rem-calc(9 14 9); -// $crumb-side-padding: rem-calc(12); - -// We use these to control border styles. -// $crumb-function-factor: -10%; -// $crumb-border-size: 1px; -// $crumb-border-style: solid; -// $crumb-border-color: scale-color($crumb-bg, $lightness: $crumb-function-factor); -// $crumb-radius: $global-radius; - -// We use these to set various text styles for breadcrumbs. -// $crumb-font-size: rem-calc(11); -// $crumb-font-color: $primary-color; -// $crumb-font-color-current: $oil; -// $crumb-font-color-unavailable: $aluminum; -// $crumb-font-transform: uppercase; -// $crumb-link-decor: underline; - -// We use these to control the slash between breadcrumbs -// $crumb-slash-color: $base; -// $crumb-slash: "/"; -// $crumb-slash-position: 1px; - -// 05. Buttons -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-button-classes: $include-html-classes; - -// We use these to build padding for buttons. -// $button-tny: rem-calc(10); -// $button-sml: rem-calc(14); -// $button-med: rem-calc(16); -// $button-lrg: rem-calc(18); - -// We use this to control the display property. -// $button-display: inline-block; -// $button-margin-bottom: rem-calc(20); - -// We use these to control button text styles. -// $button-font-family: $body-font-family; -// $button-font-color: $white; -// $button-font-color-alt: $oil; -// $button-font-tny: rem-calc(11); -// $button-font-sml: rem-calc(13); -// $button-font-med: rem-calc(16); -// $button-font-lrg: rem-calc(20); -// $button-font-weight: $font-weight-normal; -// $button-font-align: center; - -// We use these to control various hover effects. -// $button-function-factor: -20%; - -// We use these to control button border styles. -// $button-border-width: 0; -// $button-border-style: solid; -// $button-bg-color: $primary-color; -// $button-bg-hover: scale-color($button-bg-color, $lightness: $button-function-factor); -// $button-border-color: $button-bg-hover; -// $secondary-button-bg-hover: scale-color($secondary-color, $lightness: $button-function-factor); -// $secondary-button-border-color: $secondary-button-bg-hover; -// $success-button-bg-hover: scale-color($success-color, $lightness: $button-function-factor); -// $success-button-border-color: $success-button-bg-hover; -// $alert-button-bg-hover: scale-color($alert-color, $lightness: $button-function-factor); -// $alert-button-border-color: $alert-button-bg-hover; -// $warning-button-bg-hover: scale-color($warning-color, $lightness: $button-function-factor); -// $warning-button-border-color: $warning-button-bg-hover; -// $info-button-bg-hover: scale-color($info-color, $lightness: $button-function-factor); -// $info-button-border-color: $info-button-bg-hover; - -// We use this to set the default radius used throughout the core. -// $button-radius: $global-radius; -// $button-round: $global-rounded; - -// We use this to set default opacity and cursor for disabled buttons. -// $button-disabled-opacity: .7; -// $button-disabled-cursor: $cursor-default-value; - -// 06. Button Groups -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-button-classes: $include-html-classes; - -// Sets the margin for the right side by default, and the left margin if right-to-left direction is used -// $button-bar-margin-opposite: rem-calc(10); -// $button-group-border-width: 1px; - -// 07. Clearing -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-clearing-classes: $include-html-classes; - -// We use these to set the background colors for parts of Clearing. -// $clearing-bg: $oil; -// $clearing-caption-bg: $clearing-bg; -// $clearing-carousel-bg: rgba(51,51,51,0.8); -// $clearing-img-bg: $clearing-bg; - -// We use these to style the close button -// $clearing-close-color: $iron; -// $clearing-close-size: 30px; - -// We use these to style the arrows -// $clearing-arrow-size: 12px; -// $clearing-arrow-color: $clearing-close-color; - -// We use these to style captions -// $clearing-caption-font-color: $iron; -// $clearing-caption-font-size: .875em; -// $clearing-caption-padding: 10px 30px 20px; - -// We use these to make the image and carousel height and style -// $clearing-active-img-height: 85%; -// $clearing-carousel-height: 120px; -// $clearing-carousel-thumb-width: 120px; -// $clearing-carousel-thumb-active-border: 1px solid rgb(255,255,255); - -// 08. Dropdown -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-dropdown-classes: $include-html-classes; - -// We use these to controls height and width styles. -// $f-dropdown-max-width: 200px; -// $f-dropdown-height: auto; -// $f-dropdown-max-height: none; - -// Used for bottom position -// $f-dropdown-margin-top: 2px; - -// Used for right position -// $f-dropdown-margin-left: $f-dropdown-margin-top; - -// Used for left position -// $f-dropdown-margin-right: $f-dropdown-margin-top; - -// Used for top position -// $f-dropdown-margin-bottom: $f-dropdown-margin-top; - -// We use this to control the background color -// $f-dropdown-bg: $white; - -// We use this to set the border styles for dropdowns. -// $f-dropdown-border-style: solid; -// $f-dropdown-border-width: 1px; -// $f-dropdown-border-color: scale-color($white, $lightness: -20%); - -// We use these to style the triangle pip. -// $f-dropdown-triangle-size: 6px; -// $f-dropdown-triangle-color: $white; -// $f-dropdown-triangle-side-offset: 10px; - -// We use these to control styles for the list elements. -// $f-dropdown-list-style: none; -// $f-dropdown-font-color: $charcoal; -// $f-dropdown-font-size: rem-calc(14); -// $f-dropdown-list-padding: rem-calc(5, 10); -// $f-dropdown-line-height: rem-calc(18); -// $f-dropdown-list-hover-bg: $smoke; -// $dropdown-mobile-default-float: 0; - -// We use this to control the styles for when the dropdown has custom content. -// $f-dropdown-content-padding: rem-calc(20); - -// Default radius for dropdown. -// $f-dropdown-radius: $global-radius; - - -// 09. Dropdown Buttons -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-button-classes: $include-html-classes; - -// We use these to set the color of the pip in dropdown buttons -// $dropdown-button-pip-color: $white; -// $dropdown-button-pip-color-alt: $oil; - -// We use these to set the size of the pip in dropdown buttons -// $button-pip-tny: rem-calc(6); -// $button-pip-sml: rem-calc(7); -// $button-pip-med: rem-calc(9); -// $button-pip-lrg: rem-calc(11); - -// We use these to style tiny dropdown buttons -// $dropdown-button-padding-tny: $button-pip-tny * 7; -// $dropdown-button-pip-size-tny: $button-pip-tny; -// $dropdown-button-pip-opposite-tny: $button-pip-tny * 3; -// $dropdown-button-pip-top-tny: (-$button-pip-tny / 2) + rem-calc(1); - -// We use these to style small dropdown buttons -// $dropdown-button-padding-sml: $button-pip-sml * 7; -// $dropdown-button-pip-size-sml: $button-pip-sml; -// $dropdown-button-pip-opposite-sml: $button-pip-sml * 3; -// $dropdown-button-pip-top-sml: (-$button-pip-sml / 2) + rem-calc(1); - -// We use these to style medium dropdown buttons -// $dropdown-button-padding-med: $button-pip-med * 6 + rem-calc(3); -// $dropdown-button-pip-size-med: $button-pip-med - rem-calc(3); -// $dropdown-button-pip-opposite-med: $button-pip-med * 2.5; -// $dropdown-button-pip-top-med: (-$button-pip-med / 2) + rem-calc(2); - -// We use these to style large dropdown buttons -// $dropdown-button-padding-lrg: $button-pip-lrg * 5 + rem-calc(3); -// $dropdown-button-pip-size-lrg: $button-pip-lrg - rem-calc(6); -// $dropdown-button-pip-opposite-lrg: $button-pip-lrg * 2.5; -// $dropdown-button-pip-top-lrg: (-$button-pip-lrg / 2) + rem-calc(3); - -// 10. Flex Video -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-media-classes: $include-html-classes; - -// We use these to control video container padding and margins -// $flex-video-padding-top: rem-calc(25); -// $flex-video-padding-bottom: 67.5%; -// $flex-video-margin-bottom: rem-calc(16); - -// We use this to control widescreen bottom padding -// $flex-video-widescreen-padding-bottom: 56.34%; - -// 11. Forms -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-form-classes: $include-html-classes; - -// We use this to set the base for lots of form spacing and positioning styles -// $form-spacing: rem-calc(16); - -// We use these to style the labels in different ways -// $form-label-pointer: pointer; -// $form-label-font-size: rem-calc(14); -// $form-label-font-weight: $font-weight-normal; -// $form-label-line-height: 1.5; -// $form-label-font-color: scale-color($black, $lightness: 30%); -// $form-label-small-transform: capitalize; -// $form-label-bottom-margin: 0; -// $input-font-family: inherit; -// $input-font-color: rgba(0,0,0,0.75); -// $input-font-size: rem-calc(14); -// $input-placeholder-font-color: #cccccc; -// $input-bg-color: $white; -// $input-focus-bg-color: scale-color($white, $lightness: -2%); -// $input-border-color: scale-color($white, $lightness: -20%); -// $input-focus-border-color: scale-color($white, $lightness: -40%); -// $input-border-style: solid; -// $input-border-width: 1px; -// $input-border-radius: $global-radius; -// $input-disabled-bg: $gainsboro; -// $input-disabled-cursor: $cursor-default-value; -// $input-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1); -// $input-include-glowing-effect: false; - -// We use these to style the fieldset border and spacing. -// $fieldset-border-style: solid; -// $fieldset-border-width: 1px; -// $fieldset-border-color: $gainsboro; -// $fieldset-padding: rem-calc(20); -// $fieldset-margin: rem-calc(18 0); - -// We use these to style the legends when you use them -// $legend-bg: $white; -// $legend-font-weight: $font-weight-bold; -// $legend-padding: rem-calc(0 3); - -// We use these to style the prefix and postfix input elements -// $input-prefix-bg: scale-color($white, $lightness: -5%); -// $input-prefix-border-color: scale-color($white, $lightness: -20%); -// $input-prefix-border-size: 1px; -// $input-prefix-border-type: solid; -// $input-prefix-overflow: hidden; -// $input-prefix-font-color: $oil; -// $input-prefix-font-color-alt: $white; - -// We use this setting to turn on/off HTML5 number spinners (the up/down arrows) -// $input-number-spinners: true; - -// We use these to style the error states for inputs and labels -// $input-error-message-padding: rem-calc(6 9 9); -// $input-error-message-top: -1px; -// $input-error-message-font-size: rem-calc(12); -// $input-error-message-font-weight: $font-weight-normal; -// $input-error-message-font-style: italic; -// $input-error-message-font-color: $white; -// $input-error-message-bg-color: $alert-color; -// $input-error-message-font-color-alt: $oil; - -// We use this to style the glowing effect of inputs when focused -// $glowing-effect-fade-time: .45s; -// $glowing-effect-color: $input-focus-border-color; - -// We use this to style the transition when inputs are focused and when the glowing effect is disabled. -// $input-transition-fade-time: 0.15s; -// $input-transition-fade-timing-function: linear; - -// Select variables -// $select-bg-color: $ghost; -// $select-hover-bg-color: scale-color($select-bg-color, $lightness: -3%); - - -// 12. Icon Bar -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// We use these to style the icon-bar and items -// $icon-bar-bg: $oil; -// $icon-bar-font-color: $white; -// $icon-bar-font-color-hover: $icon-bar-font-color; -// $icon-bar-font-size: 1rem; -// $icon-bar-hover-color: $primary-color; -// $icon-bar-icon-color: $white; -// $icon-bar-icon-color-hover: $icon-bar-icon-color; -// $icon-bar-icon-size: 1.875rem; -// $icon-bar-image-width: 1.875rem; -// $icon-bar-image-height: 1.875rem; -// $icon-bar-active-color: $primary-color; -// $icon-bar-item-padding: 1.25rem; - -// We use this to set default opacity and cursor for disabled icons. -// $icon-bar-disabled-opacity: .7; - -// 13. Inline Lists -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-inline-list-classes: $include-html-classes; - -// We use this to control the margins and padding of the inline list. -// $inline-list-top-margin: 0; -// $inline-list-opposite-margin: 0; -// $inline-list-bottom-margin: rem-calc(17); -// $inline-list-default-float-margin: rem-calc(-22); -// $inline-list-default-float-list-margin: rem-calc(22); - -// $inline-list-padding: 0; - -// We use this to control the overflow of the inline list. -// $inline-list-overflow: hidden; - -// We use this to control the list items -// $inline-list-display: block; - -// We use this to control any elements within list items -// $inline-list-children-display: block; - -// 14. Joyride -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-joyride-classes: $include-html-classes; - -// Controlling default Joyride styles -// $joyride-tip-bg: $oil; -// $joyride-tip-default-width: 300px; -// $joyride-tip-padding: rem-calc(18 20 24); -// $joyride-tip-border: solid 1px $charcoal; -// $joyride-tip-radius: 4px; -// $joyride-tip-position-offset: 22px; - -// Here, we're setting the tip font styles -// $joyride-tip-font-color: $white; -// $joyride-tip-font-size: rem-calc(14); -// $joyride-tip-header-weight: $font-weight-bold; - -// This changes the nub size -// $joyride-tip-nub-size: 10px; - -// This adjusts the styles for the timer when its enabled -// $joyride-tip-timer-width: 50px; -// $joyride-tip-timer-height: 3px; -// $joyride-tip-timer-color: $steel; - -// This changes up the styles for the close button -// $joyride-tip-close-color: $monsoon; -// $joyride-tip-close-size: 24px; -// $joyride-tip-close-weight: $font-weight-normal; - -// When Joyride is filling the screen, we use this style for the bg -// $joyride-screenfill: rgba(0,0,0,0.5); - -// 15. Keystrokes -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-keystroke-classes: $include-html-classes; - -// We use these to control text styles. -// $keystroke-font: "Consolas", "Menlo", "Courier", monospace; -// $keystroke-font-size: inherit; -// $keystroke-font-color: $jet; -// $keystroke-font-color-alt: $white; -// $keystroke-function-factor: -7%; - -// We use this to control keystroke padding. -// $keystroke-padding: rem-calc(2 4 0); - -// We use these to control background and border styles. -// $keystroke-bg: scale-color($white, $lightness: $keystroke-function-factor); -// $keystroke-border-style: solid; -// $keystroke-border-width: 1px; -// $keystroke-border-color: scale-color($keystroke-bg, $lightness: $keystroke-function-factor); -// $keystroke-radius: $global-radius; - -// 16. Labels -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-label-classes: $include-html-classes; - -// We use these to style the labels -// $label-padding: rem-calc(4 8 4); -// $label-radius: $global-radius; - -// We use these to style the label text -// $label-font-sizing: rem-calc(11); -// $label-font-weight: $font-weight-normal; -// $label-font-color: $oil; -// $label-font-color-alt: $white; -// $label-font-family: $body-font-family; - -// 17. Magellan -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-magellan-classes: $include-html-classes; - -// $magellan-bg: $white; -// $magellan-padding: 10px; - -// 18. Off-canvas -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// Off Canvas Tab Bar Variables -// $include-html-off-canvas-classes: $include-html-classes; - -// $tabbar-bg: $oil; -// $tabbar-height: rem-calc(45); -// $tabbar-icon-width: $tabbar-height; -// $tabbar-line-height: $tabbar-height; -// $tabbar-color: $white; -// $tabbar-middle-padding: 0 rem-calc(10); - -// Off Canvas Divider Styles -// $tabbar-left-section-border: solid 1px scale-color($tabbar-bg, $lightness: -50%); -// $tabbar-right-section-border: $tabbar-left-section-border; - - -// Off Canvas Tab Bar Headers -// $tabbar-header-color: $white; -// $tabbar-header-weight: $font-weight-bold; -// $tabbar-header-line-height: $tabbar-height; -// $tabbar-header-margin: 0; - -// Off Canvas Menu Variables -// $off-canvas-width: rem-calc(250); -// $off-canvas-bg: $oil; -// $off-canvas-bg-hover: scale-color($tabbar-bg, $lightness: -30%); -// $off-canvas-bg-active: scale-color($tabbar-bg, $lightness: -30%); - -// Off Canvas Menu List Variables -// $off-canvas-label-padding: .3rem rem-calc(15); -// $off-canvas-label-color: $aluminum; -// $off-canvas-label-text-transform: uppercase; -// $off-canvas-label-font-size: rem-calc(12); -// $off-canvas-label-font-weight: $font-weight-bold; -// $off-canvas-label-bg: $tuatara; -// $off-canvas-label-border-top: 1px solid scale-color($off-canvas-label-bg, $lightness: 14%); -// $off-canvas-label-border-bottom: none; -// $off-canvas-label-margin:0; -// $off-canvas-link-padding: rem-calc(10, 15); -// $off-canvas-link-color: rgba($white, .7); -// $off-canvas-link-border-bottom: 1px solid scale-color($off-canvas-bg, $lightness: -25%); -// $off-canvas-back-bg: #444; -// $off-canvas-back-border-top: $off-canvas-label-border-top; -// $off-canvas-back-border-bottom: $off-canvas-label-border-bottom; -// $off-canvas-back-hover-bg: scale-color($off-canvas-back-bg, $lightness: -30%); -// $off-canvas-back-hover-border-top: 1px solid scale-color($off-canvas-label-bg, $lightness: 14%); -// $off-canvas-back-hover-border-bottom: none; - -// Off Canvas Menu Icon Variables -// $tabbar-menu-icon-color: $white; -// $tabbar-menu-icon-hover: scale-color($tabbar-menu-icon-color, $lightness: -30%); - -// $tabbar-menu-icon-text-indent: rem-calc(35); -// $tabbar-menu-icon-width: $tabbar-icon-width; -// $tabbar-menu-icon-height: $tabbar-height; -// $tabbar-menu-icon-padding: 0; - -// $tabbar-hamburger-icon-width: rem-calc(16); -// $tabbar-hamburger-icon-left: false; -// $tabbar-hamburger-icon-top: false; -// $tabbar-hamburger-icon-thickness: 1px; -// $tabbar-hamburger-icon-gap: 6px; - -// Off Canvas Back-Link Overlay -// $off-canvas-overlay-transition: background 300ms ease; -// $off-canvas-overlay-cursor: pointer; -// $off-canvas-overlay-box-shadow: -4px 0 4px rgba($black, .5), 4px 0 4px rgba($black, .5); -// $off-canvas-overlay-background: rgba($white, .2); -// $off-canvas-overlay-background-hover: rgba($white, .05); - -// Transition Variables -// $menu-slide: "transform 500ms ease"; - -// 19. Orbit -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-orbit-classes: $include-html-classes; - -// We use these to control the caption styles -// $orbit-container-bg: none; -// $orbit-caption-bg: rgba(51,51,51, .8); -// $orbit-caption-font-color: $white; -// $orbit-caption-font-size: rem-calc(14); -// $orbit-caption-position: "bottom"; // Supported values: "bottom", "under" -// $orbit-caption-padding: rem-calc(10 14); -// $orbit-caption-height: auto; - -// We use these to control the left/right nav styles -// $orbit-nav-bg: transparent; -// $orbit-nav-bg-hover: rgba(0,0,0,0.3); -// $orbit-nav-arrow-color: $white; -// $orbit-nav-arrow-color-hover: $white; - -// We use these to control the timer styles -// $orbit-timer-bg: rgba(255,255,255,0.3); -// $orbit-timer-show-progress-bar: true; - -// We use these to control the bullet nav styles -// $orbit-bullet-nav-color: $iron; -// $orbit-bullet-nav-color-active: $aluminum; -// $orbit-bullet-radius: rem-calc(9); - -// We use these to controls the style of slide numbers -// $orbit-slide-number-bg: rgba(0,0,0,0); -// $orbit-slide-number-font-color: $white; -// $orbit-slide-number-padding: rem-calc(5); - -// Graceful Loading Wrapper and preloader -// $wrapper-class: "slideshow-wrapper"; -// $preloader-class: "preloader"; - -// Hide controls on small -// $orbit-nav-hide-for-small: true; -// $orbit-bullet-hide-for-small: true; -// $orbit-timer-hide-for-small: true; - -// 20. Pagination -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-pagination-classes: $include-html-classes; - -// We use these to control the pagination container -// $pagination-height: rem-calc(24); -// $pagination-margin: rem-calc(-5); - -// We use these to set the list-item properties -// $pagination-li-float: $default-float; -// $pagination-li-height: rem-calc(24); -// $pagination-li-font-color: $jet; -// $pagination-li-font-size: rem-calc(14); -// $pagination-li-margin: rem-calc(5); - -// We use these for the pagination anchor links -// $pagination-link-pad: rem-calc(1 10 1); -// $pagination-link-font-color: $aluminum; -// $pagination-link-active-bg: scale-color($white, $lightness: -10%); - -// We use these for disabled anchor links -// $pagination-link-unavailable-cursor: default; -// $pagination-link-unavailable-font-color: $aluminum; -// $pagination-link-unavailable-bg-active: transparent; - -// We use these for currently selected anchor links -// $pagination-link-current-background: $primary-color; -// $pagination-link-current-font-color: $white; -// $pagination-link-current-font-weight: $font-weight-bold; -// $pagination-link-current-cursor: default; -// $pagination-link-current-active-bg: $primary-color; - -// 21. Panels -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-panel-classes: $include-html-classes; - -// We use these to control the background and border styles -// $panel-bg: scale-color($white, $lightness: -5%); -// $panel-border-style: solid; -// $panel-border-size: 1px; -// $callout-panel-bg: scale-color($primary-color, $lightness: 94%); - -// We use this % to control how much we darken things on hover -// $panel-border-color: scale-color($panel-bg, $lightness: -11%); - -// We use these to set default inner padding and bottom margin -// $panel-margin-bottom: rem-calc(20); -// $panel-padding: rem-calc(20); - -// We use these to set default font colors -// $panel-font-color: $oil; -// $panel-font-color-alt: $white; - -// $panel-header-adjust: true; -// $callout-panel-link-color: $primary-color; -// $callout-panel-link-color-hover: scale-color($callout-panel-link-color, $lightness: -14%); - -// 22. Pricing Tables -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-pricing-classes: $include-html-classes; - -// We use this to control the border color -// $price-table-border: solid 1px $gainsboro; - -// We use this to control the bottom margin of the pricing table -// $price-table-margin-bottom: rem-calc(20); - -// We use these to control the title styles -// $price-title-bg: $oil; -// $price-title-padding: rem-calc(15 20); -// $price-title-align: center; -// $price-title-color: $smoke; -// $price-title-weight: $font-weight-normal; -// $price-title-size: rem-calc(16); -// $price-title-font-family: $body-font-family; - -// We use these to control the price styles -// $price-money-bg: $vapor; -// $price-money-padding: rem-calc(15 20); -// $price-money-align: center; -// $price-money-color: $oil; -// $price-money-weight: $font-weight-normal; -// $price-money-size: rem-calc(32); -// $price-money-font-family: $body-font-family; - - -// We use these to control the description styles -// $price-bg: $white; -// $price-desc-color: $monsoon; -// $price-desc-padding: rem-calc(15); -// $price-desc-align: center; -// $price-desc-font-size: rem-calc(12); -// $price-desc-weight: $font-weight-normal; -// $price-desc-line-height: 1.4; -// $price-desc-bottom-border: dotted 1px $gainsboro; - -// We use these to control the list item styles -// $price-item-color: $oil; -// $price-item-padding: rem-calc(15); -// $price-item-align: center; -// $price-item-font-size: rem-calc(14); -// $price-item-weight: $font-weight-normal; -// $price-item-bottom-border: dotted 1px $gainsboro; - -// We use these to control the CTA area styles -// $price-cta-bg: $white; -// $price-cta-align: center; -// $price-cta-padding: rem-calc(20 20 0); - -// 23. Progress Bar -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-media-classes: $include-html-classes; - -// We use this to set the progress bar height -// $progress-bar-height: rem-calc(25); -// $progress-bar-color: $vapor; - -// We use these to control the border styles -// $progress-bar-border-color: scale-color($white, $lightness: 20%); -// $progress-bar-border-size: 1px; -// $progress-bar-border-style: solid; -// $progress-bar-border-radius: $global-radius; - -// We use these to control the margin & padding -// $progress-bar-margin-bottom: rem-calc(10); - -// We use these to set the meter colors -// $progress-meter-color: $primary-color; -// $progress-meter-secondary-color: $secondary-color; -// $progress-meter-success-color: $success-color; -// $progress-meter-alert-color: $alert-color; - -// 24. Range Slider -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-range-slider-classes: $include-html-classes; - -// These variables define the slider bar styles -// $range-slider-bar-width: 100%; -// $range-slider-bar-height: rem-calc(16); - -// $range-slider-bar-border-width: 1px; -// $range-slider-bar-border-style: solid; -// $range-slider-bar-border-color: $gainsboro; -// $range-slider-radius: $global-radius; -// $range-slider-round: $global-rounded; -// $range-slider-bar-bg-color: $ghost; -// $range-slider-active-segment-bg-color: scale-color($secondary-color, $lightness: -1%); - -// Vertical bar styles -// $range-slider-vertical-bar-width: rem-calc(16); -// $range-slider-vertical-bar-height: rem-calc(200); - -// These variables define the slider handle styles -// $range-slider-handle-width: rem-calc(32); -// $range-slider-handle-height: rem-calc(22); -// $range-slider-handle-position-top: rem-calc(-5); -// $range-slider-handle-bg-color: $primary-color; -// $range-slider-handle-border-width: 1px; -// $range-slider-handle-border-style: solid; -// $range-slider-handle-border-color: none; -// $range-slider-handle-radius: $global-radius; -// $range-slider-handle-round: $global-rounded; -// $range-slider-handle-bg-hover-color: scale-color($primary-color, $lightness: -12%); -// $range-slider-handle-cursor: pointer; - -// $range-slider-disabled-opacity: .7; -// $range-slider-disabled-cursor: $cursor-disabled-value; - -// 25. Reveal -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-reveal-classes: $include-html-classes; - -// We use these to control the style of the reveal overlay. -// $reveal-overlay-bg: rgba($black, .45); -// $reveal-overlay-bg-old: $black; - -// We use these to control the style of the modal itself. -// $reveal-modal-bg: $white; -// $reveal-position-top: rem-calc(100); -// $reveal-default-width: 80%; -// $reveal-max-width: $row-width; -// $reveal-modal-padding: rem-calc(20); -// $reveal-box-shadow: 0 0 10px rgba($black,.4); - -// We use these to style the reveal close button -// $reveal-close-font-size: rem-calc(40); -// $reveal-close-top: rem-calc(10); -// $reveal-close-side: rem-calc(22); -// $reveal-close-color: $base; -// $reveal-close-weight: $font-weight-bold; - -// We use this to set the default radius used throughout the core. -// $reveal-radius: $global-radius; -// $reveal-round: $global-rounded; - -// We use these to control the modal border -// $reveal-border-style: solid; -// $reveal-border-width: 1px; -// $reveal-border-color: $steel; - -// $reveal-modal-class: "reveal-modal"; -// $close-reveal-modal-class: "close-reveal-modal"; - -// 26. Side Nav -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-nav-classes: $include-html-classes; - -// We use this to control padding. -// $side-nav-padding: rem-calc(14 0); - -// We use these to control list styles. -// $side-nav-list-type: none; -// $side-nav-list-position: outside; -// $side-nav-list-margin: rem-calc(0 0 7 0); - -// We use these to control link styles. -// $side-nav-link-color: $primary-color; -// $side-nav-link-color-active: scale-color($side-nav-link-color, $lightness: 30%); -// $side-nav-link-color-hover: scale-color($side-nav-link-color, $lightness: 30%); -// $side-nav-link-bg-hover: hsla(0, 0, 0, .025); -// $side-nav-link-margin: 0; -// $side-nav-link-padding: rem-calc(7 14); -// $side-nav-font-size: rem-calc(14); -// $side-nav-font-weight: $font-weight-normal; -// $side-nav-font-weight-active: $side-nav-font-weight; -// $side-nav-font-family: $body-font-family; -// $side-nav-font-family-active: $side-nav-font-family; - -// We use these to control heading styles. -// $side-nav-heading-color: $side-nav-link-color; -// $side-nav-heading-font-size: $side-nav-font-size; -// $side-nav-heading-font-weight: bold; -// $side-nav-heading-text-transform: uppercase; - -// We use these to control border styles -// $side-nav-divider-size: 1px; -// $side-nav-divider-style: solid; -// $side-nav-divider-color: scale-color($white, $lightness: 10%); - -// 27. Split Buttons -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-button-classes: $include-html-classes; - -// We use these to control different shared styles for Split Buttons -// $split-button-function-factor: 10%; -// $split-button-pip-color: $white; -// $split-button-span-border-color: rgba(255,255,255,0.5); -// $split-button-pip-color-alt: $oil; -// $split-button-active-bg-tint: rgba(0,0,0,0.1); - -// We use these to control tiny split buttons -// $split-button-padding-tny: $button-pip-tny * 10; -// $split-button-span-width-tny: $button-pip-tny * 6; -// $split-button-pip-size-tny: $button-pip-tny; -// $split-button-pip-top-tny: $button-pip-tny * 2; -// $split-button-pip-default-float-tny: rem-calc(-6); - -// We use these to control small split buttons -// $split-button-padding-sml: $button-pip-sml * 10; -// $split-button-span-width-sml: $button-pip-sml * 6; -// $split-button-pip-size-sml: $button-pip-sml; -// $split-button-pip-top-sml: $button-pip-sml * 1.5; -// $split-button-pip-default-float-sml: rem-calc(-6); - -// We use these to control medium split buttons -// $split-button-padding-med: $button-pip-med * 9; -// $split-button-span-width-med: $button-pip-med * 5.5; -// $split-button-pip-size-med: $button-pip-med - rem-calc(3); -// $split-button-pip-top-med: $button-pip-med * 1.5; -// $split-button-pip-default-float-med: rem-calc(-6); - -// We use these to control large split buttons -// $split-button-padding-lrg: $button-pip-lrg * 8; -// $split-button-span-width-lrg: $button-pip-lrg * 5; -// $split-button-pip-size-lrg: $button-pip-lrg - rem-calc(6); -// $split-button-pip-top-lrg: $button-pip-lrg + rem-calc(5); -// $split-button-pip-default-float-lrg: rem-calc(-6); - -// 28. Sub Nav -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-nav-classes: $include-html-classes; - -// We use these to control margin and padding -// $sub-nav-list-margin: rem-calc(-4 0 18); -// $sub-nav-list-padding-top: rem-calc(4); - -// We use this to control the definition -// $sub-nav-font-family: $body-font-family; -// $sub-nav-font-size: rem-calc(14); -// $sub-nav-font-color: $aluminum; -// $sub-nav-font-weight: $font-weight-normal; -// $sub-nav-text-decoration: none; -// $sub-nav-padding: rem-calc(3 16); -// $sub-nav-border-radius: 3px; -// $sub-nav-font-color-hover: scale-color($sub-nav-font-color, $lightness: -25%); - - -// We use these to control the active item styles - -// $sub-nav-active-font-weight: $font-weight-normal; -// $sub-nav-active-bg: $primary-color; -// $sub-nav-active-bg-hover: scale-color($sub-nav-active-bg, $lightness: -14%); -// $sub-nav-active-color: $white; -// $sub-nav-active-padding: $sub-nav-padding; -// $sub-nav-active-cursor: default; - -// $sub-nav-item-divider: ""; -// $sub-nav-item-divider-margin: rem-calc(12); - -// 29. Switch -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-form-classes: $include-html-classes; - -// Controlling background color for the switch container -// $switch-bg: $gainsboro; - -// We use these to control the switch heights for our default classes -// $switch-height-tny: 1.5rem; -// $switch-height-sml: 1.75rem; -// $switch-height-med: 2rem; -// $switch-height-lrg: 2.5rem; -// $switch-bottom-margin: 1.5rem; - -// We use these to style the switch-paddle -// $switch-paddle-bg: $white; -// $switch-paddle-transition-speed: .15s; -// $switch-paddle-transition-ease: ease-out; -// $switch-active-color: $primary-color; - -// 30. Tables -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-table-classes: $include-html-classes; - -// These control the background color for the table and even rows -// $table-bg: $white; -// $table-even-row-bg: $snow; - -// These control the table cell border style -// $table-border-style: solid; -// $table-border-size: 1px; -// $table-border-color: $gainsboro; - -// These control the table head styles -// $table-head-bg: $white-smoke; -// $table-head-font-size: rem-calc(14); -// $table-head-font-color: $jet; -// $table-head-font-weight: $font-weight-bold; -// $table-head-padding: rem-calc(8 10 10); - -// These control the table foot styles -// $table-foot-bg: $table-head-bg; -// $table-foot-font-size: $table-head-font-size; -// $table-foot-font-color: $table-head-font-color; -// $table-foot-font-weight: $table-head-font-weight; -// $table-foot-padding: $table-head-padding; - -// These control the caption -// $table-caption-bg: transparent; -// $table-caption-font-color: $table-head-font-color; -// $table-caption-font-size: rem-calc(16); -// $table-caption-font-weight: bold; - -// These control the row padding and font styles -// $table-row-padding: rem-calc(9 10); -// $table-row-font-size: rem-calc(14); -// $table-row-font-color: $jet; -// $table-line-height: rem-calc(18); - -// These are for controlling the layout, display and margin of tables -// $table-layout: auto; -// $table-display: table-cell; -// $table-margin-bottom: rem-calc(20); - - -// 31. Tabs -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-tabs-classes: $include-html-classes; - -// $tabs-navigation-padding: rem-calc(16); -// $tabs-navigation-bg-color: $silver; -// $tabs-navigation-active-bg-color: $white; -// $tabs-navigation-hover-bg-color: scale-color($tabs-navigation-bg-color, $lightness: -6%); -// $tabs-navigation-font-color: $jet; -// $tabs-navigation-active-font-color: $tabs-navigation-font-color; -// $tabs-navigation-font-size: rem-calc(16); -// $tabs-navigation-font-family: $body-font-family; - -// $tabs-content-margin-bottom: rem-calc(24); -// $tabs-content-padding: ($column-gutter/2); - -// $tabs-vertical-navigation-margin-bottom: 1.25rem; - -// 32. Thumbnails -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-media-classes: $include-html-classes; - -// We use these to control border styles -// $thumb-border-style: solid; -// $thumb-border-width: 4px; -// $thumb-border-color: $white; -// $thumb-box-shadow: 0 0 0 1px rgba($black,.2); -// $thumb-box-shadow-hover: 0 0 6px 1px rgba($primary-color,0.5); - -// Radius and transition speed for thumbs -// $thumb-radius: $global-radius; -// $thumb-transition-speed: 200ms; - -// 33. Tooltips -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-tooltip-classes: $include-html-classes; - -// $has-tip-border-bottom: dotted 1px $iron; -// $has-tip-font-weight: $font-weight-bold; -// $has-tip-font-color: $oil; -// $has-tip-border-bottom-hover: dotted 1px scale-color($primary-color, $lightness: -55%); -// $has-tip-font-color-hover: $primary-color; -// $has-tip-cursor-type: help; - -// $tooltip-padding: rem-calc(12); -// $tooltip-bg: $oil; -// $tooltip-font-size: rem-calc(14); -// $tooltip-font-weight: $font-weight-normal; -// $tooltip-font-color: $white; -// $tooltip-line-height: 1.3; -// $tooltip-close-font-size: rem-calc(10); -// $tooltip-close-font-weight: $font-weight-normal; -// $tooltip-close-font-color: $monsoon; -// $tooltip-font-size-sml: rem-calc(14); -// $tooltip-radius: $global-radius; -// $tooltip-rounded: $global-rounded; -// $tooltip-pip-size: 5px; -// $tooltip-max-width: 300px; - -// 34. Top Bar -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-top-bar-classes: $include-html-classes; - -// Background color for the top bar -// $topbar-bg-color: $oil; -// $topbar-bg: $topbar-bg-color; - -// Height and margin -// $topbar-height: rem-calc(45); -// $topbar-margin-bottom: 0; - -// Controlling the styles for the title in the top bar -// $topbar-title-weight: $font-weight-normal; -// $topbar-title-font-size: rem-calc(17); - -// Set the link colors and styles for top-level nav -// $topbar-link-color: $white; -// $topbar-link-color-hover: $white; -// $topbar-link-color-active: $white; -// $topbar-link-color-active-hover: $white; -// $topbar-link-weight: $font-weight-normal; -// $topbar-link-font-size: rem-calc(13); -// $topbar-link-hover-lightness: -10%; // Darken by 10% -// $topbar-link-bg: $topbar-bg; -// $topbar-link-bg-hover: $jet; -// $topbar-link-bg-color-hover: $charcoal; -// $topbar-link-bg-active: $primary-color; -// $topbar-link-bg-active-hover: scale-color($primary-color, $lightness: -14%); -// $topbar-link-font-family: $body-font-family; -// $topbar-link-text-transform: none; -// $topbar-link-padding: ($topbar-height / 3); -// $topbar-back-link-size: rem-calc(18); -// $topbar-link-dropdown-padding: rem-calc(20); -// $topbar-button-font-size: .75rem; -// $topbar-button-top: 7px; - -// Style the top bar dropdown elements -// $topbar-dropdown-bg: $oil; -// $topbar-dropdown-link-color: $white; -// $topbar-dropdown-link-color-hover: $topbar-link-color-hover; -// $topbar-dropdown-link-bg: $oil; -// $topbar-dropdown-link-bg-hover: $jet; -// $topbar-dropdown-link-weight: $font-weight-normal; -// $topbar-dropdown-toggle-size: 5px; -// $topbar-dropdown-toggle-color: $white; -// $topbar-dropdown-toggle-alpha: .4; - -// $topbar-dropdown-label-color: $monsoon; -// $topbar-dropdown-label-text-transform: uppercase; -// $topbar-dropdown-label-font-weight: $font-weight-bold; -// $topbar-dropdown-label-font-size: rem-calc(10); -// $topbar-dropdown-label-bg: $oil; - -// Top menu icon styles -// $topbar-menu-link-transform: uppercase; -// $topbar-menu-link-font-size: rem-calc(13); -// $topbar-menu-link-weight: $font-weight-bold; -// $topbar-menu-link-color: $white; -// $topbar-menu-icon-color: $white; -// $topbar-menu-link-color-toggled: $jumbo; -// $topbar-menu-icon-color-toggled: $jumbo; -// $topbar-menu-icon-position: $opposite-direction; // Change to $default-float for a left menu icon - -// Transitions and breakpoint styles -// $topbar-transition-speed: 300ms; -// Using rem-calc for the below breakpoint causes issues with top bar -// $topbar-breakpoint: #{lower-bound($medium-range)}; // Change to 9999px for always mobile layout -// $topbar-media-query: "#{$screen} and (min-width:#{lower-bound($topbar-breakpoint)})"; - -// Top-bar input styles -// $topbar-input-height: rem-calc(28); - -// Divider Styles -// $topbar-divider-border-bottom: solid 1px scale-color($topbar-bg-color, $lightness: 13%); -// $topbar-divider-border-top: solid 1px scale-color($topbar-bg-color, $lightness: -50%); - -// Sticky Class -// $topbar-sticky-class: ".sticky"; -// $topbar-arrows: true; //Set false to remove the triangle icon from the menu item -// $topbar-dropdown-arrows: true; //Set false to remove the \00bb >> text from dropdown subnavigation li// - -// 36. Visibility Classes -// - - - - - - - - - - - - - - - - - - - - - - - - - - -// $include-html-visibility-classes: $include-html-classes; -// $include-accessibility-classes: true; -// $include-table-visibility-classes: true; -// $include-legacy-visibility-classes: true; diff --git a/docs/themes/porter/assets/sass/foundation/components/_accordion.scss b/docs/themes/porter/assets/sass/foundation/components/_accordion.scss deleted file mode 100644 index b1c7053d5..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_accordion.scss +++ /dev/null @@ -1,161 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @variables -// - -$include-html-accordion-classes: $include-html-classes !default; - -$accordion-navigation-padding: rem-calc(16) !default; -$accordion-navigation-bg-color: $silver !default; -$accordion-navigation-hover-bg-color: scale-color($accordion-navigation-bg-color, $lightness: -5%) !default; -$accordion-navigation-active-bg-color: scale-color($accordion-navigation-bg-color, $lightness: -3%) !default; -$accordion-navigation-active-font-color: $jet !default; -$accordion-navigation-font-color: $jet !default; -$accordion-navigation-font-size: rem-calc(16) !default; -$accordion-navigation-font-family: $body-font-family !default; - -$accordion-content-padding: ($column-gutter/2) !default; -$accordion-content-active-bg-color: $white !default; - - -// Mixin: accordion-container() -// Decription: Responsible for the container component of accordions, generating styles relating to a margin of zero and a clearfix -// Explicit Dependencies: a clearfix mixin *is* defined. -// Implicit Dependencies: None - -@mixin accordion-container() { - @include clearfix; - margin-bottom: 0; -} - -// Mixin: accordion-navigation( $bg, $hover-bg, $active-bg, $padding, $active_class, $font-color, $font-size, $font-family) { -// @params $bg-color: [ color or string ]: Specify the background color for the navigation element -// @params $hover-bg-color [ color or string ]: Specify the background color for the navigation element when hovered -// @params $active-bg [ color or string ]: Specify the background color for the navigation element when clicked and not released. -// @params $active_class [ string ]: Specify the class name used to keep track of which accordion tab should be visible -// @params $font-color [ color or string ]: Color of the font for accordion -// @params $font-size [ number ]: Specifiy the font-size of the text inside the navigation element -// @params $font-family [ string ]: Specify the font family for the text of the navigation of the accorion -// @params $active-font [ color or string ]: Specify the font color for the navigation element when active. - -@mixin accordion-navigation( $bg: $accordion-navigation-bg-color, $hover-bg: $accordion-navigation-hover-bg-color, $active-bg: $accordion-navigation-active-bg-color, $padding: $accordion-navigation-padding, $active_class: 'active', $font-color: $accordion-navigation-font-color, $font-size: $accordion-navigation-font-size, $font-family: $accordion-navigation-font-family, $active-font: $accordion-navigation-active-font-color ) { - display: block; - margin-bottom: 0 !important; - @if type-of($active_class) != "string" { - @warn "`#{$active_class}` isn't a valid string. A valid string is needed to correctly be interpolated as a CSS class. CSS classes cannot start with a number or consist of only numbers. CSS will not be generated for the active state of this navigation component." - } - @else { - &.#{ $active_class } > a { - background: $active-bg; - color: $active-font; - } - } - > a { - background: $bg; - color: $font-color; - @if type-of($padding) != number { - @warn "`#{$padding}` was read as #{type-of($padding)}"; - @if $accordion-navigation-padding != null { - @warn "#{$padding} was read as a #{type-of($padding)}"; - @warn "`#{$padding}` isn't a valid number. $accordion-navigation-padding (#{$accordion-navigation-padding}) will be used instead.)"; - padding: $accordion-navigation-padding; - } - @else { - @warn "`#{$padding}` isn't a valid number and $accordion-navigation-padding is missing. A value of `null` is returned to not output an invalid value for padding"; - padding: null; - } - } - @else { - padding: $padding; - } - display: block; - font-family: $font-family; - @if type-of($font-size) != number { - @warn "`#{$font-size}` was read as a #{type-of($font-size)}"; - @if $accordion-navigation-font-size != null { - @warn "`#{$font-size}` is not a valid number. The value of $accordion-navigation-font-size will be used instead (#{$accordion-navigation-font-size})."; - font-size: $accordion-navigation-font-size; - } - @else{ - @warn "`#{$font-size}` is not a valid number and the default value of $accordion-navigation-font-size is not defined. A value of `null` will be returned to not generate an invalid value for font-size."; - font-size: null; - - } - } - @else { - font-size: $font-size; - } - &:hover { - background: $hover-bg; - } - } -} - -// Mixin: accordion-content($bg, $padding, $active-class) -// @params $padding [ number ]: Padding for the content of the container -// @params $bg [ color ]: Background color for the content when it's visible -// @params $active_class [ string ]: Class name used to keep track of which accordion tab should be visible. - -@mixin accordion-content($bg: $accordion-content-active-bg-color, $padding: $accordion-content-padding, $active_class: 'active') { - display: none; - @if type-of($padding) != "number" { - @warn "#{$padding} was read as a #{type-of($padding)}"; - @if $accordion-content-padding != null { - @warn "`#{$padding}` isn't a valid number. $accordion-content-padding used instead"; - padding: $accordion-content-padding; - } @else { - @warn "`#{$padding}` isn't a valid number and the default value of $accordion-content-padding is not defined. A value of `null` is returned to not output an invalid value for padding."; - padding: null; - } - } @else { - padding: $padding; - } - - @if type-of($active_class) != "string" { - @warn "`#{$active_class}` isn't a valid string. A valid string is needed to correctly be interpolated as a CSS class. CSS classes cannot start with a number or consist of only numbers. CSS will not be generated for the active state of the content. " - } - @else { - &.#{$active_class} { - background: $bg; - display: block; - } - } -} - -@include exports("accordion") { - @if $include-html-accordion-classes { - .accordion { - @include clearfix; - margin-bottom: 0; - margin-left: 0; - .accordion-navigation, dd { - display: block; - margin-bottom: 0 !important; - &.active > a { background: $accordion-navigation-active-bg-color; color: $accordion-navigation-active-font-color; } - > a { - background: $accordion-navigation-bg-color; - color: $accordion-navigation-font-color; - display: block; - font-family: $accordion-navigation-font-family; - font-size: $accordion-navigation-font-size; - padding: $accordion-navigation-padding; - &:hover { background: $accordion-navigation-hover-bg-color; } - } - - > .content { - display: none; - padding: $accordion-content-padding; - &.active { - background: $accordion-content-active-bg-color; - display: block; - } - } - } - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_alert-boxes.scss b/docs/themes/porter/assets/sass/foundation/components/_alert-boxes.scss deleted file mode 100644 index c1d56d802..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_alert-boxes.scss +++ /dev/null @@ -1,128 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// Alert Box Variables -// -$include-html-alert-classes: $include-html-classes !default; - -// We use this to control alert padding. -$alert-padding-top: rem-calc(14) !default; -$alert-padding-default-float: $alert-padding-top !default; -$alert-padding-opposite-direction: $alert-padding-top + rem-calc(10) !default; -$alert-padding-bottom: $alert-padding-top !default; - -// We use these to control text style. -$alert-font-weight: $font-weight-normal !default; -$alert-font-size: rem-calc(13) !default; -$alert-font-color: $white !default; -$alert-font-color-alt: scale-color($secondary-color, $lightness: -66%) !default; - -// We use this for close hover effect. -$alert-function-factor: -14% !default; - -// We use these to control border styles. -$alert-border-style: solid !default; -$alert-border-width: 1px !default; -$alert-border-color: scale-color($primary-color, $lightness: $alert-function-factor) !default; -$alert-bottom-margin: rem-calc(20) !default; - -// We use these to style the close buttons -$alert-close-color: $oil !default; -$alert-close-top: 50% !default; -$alert-close-position: rem-calc(4) !default; -$alert-close-font-size: rem-calc(22) !default; -$alert-close-opacity: .3 !default; -$alert-close-opacity-hover: .5 !default; -$alert-close-padding: 0 6px 4px !default; -$alert-close-background: inherit !default; - -// We use this to control border radius -$alert-radius: $global-radius !default; - -$alert-transition-speed: 300ms !default; -$alert-transition-ease: ease-out !default; - -// -// Alert Mixins -// - -// We use this mixin to create a default alert base. -@mixin alert-base { - border-style: $alert-border-style; - border-width: $alert-border-width; - display: block; - font-size: $alert-font-size; - font-weight: $alert-font-weight; - margin-bottom: $alert-bottom-margin; - padding: $alert-padding-top $alert-padding-opposite-direction $alert-padding-bottom $alert-padding-default-float; - position: relative; - @include single-transition(opacity, $alert-transition-speed, $alert-transition-ease) -} - -// We use this mixin to add alert styles -// -// $bg - The background of the alert. Default: $primary-color. -@mixin alert-style($bg:$primary-color) { - - // This finds the lightness percentage of the background color. - $bg-lightness: lightness($bg); - - // We control which background color and border come through. - background-color: $bg; - border-color: scale-color($bg, $lightness: $alert-function-factor); - - // We control the text color for you based on the background color. - @if $bg-lightness > 70% { color: $alert-font-color-alt; } - @else { color: $alert-font-color; } - -} - -// We use this to create the close button. -@mixin alert-close { - #{$opposite-direction}: $alert-close-position; - background: $alert-close-background; - color: $alert-close-color; - font-size: $alert-close-font-size; - line-height: .9; - margin-top: -($alert-close-font-size / 2); - opacity: $alert-close-opacity; - padding: $alert-close-padding; - position: absolute; - top: $alert-close-top; - &:hover, - &:focus { opacity: $alert-close-opacity-hover; } -} - -// We use this to quickly create alerts with a single mixin. -// -// $bg - Background of alert. Default: $primary-color. -// $radius - Radius of alert box. Default: false. -@mixin alert($bg:$primary-color, $radius:false) { - @include alert-base; - @include alert-style($bg); - @include radius($radius); -} - -@include exports("alert-box") { - @if $include-html-alert-classes { - .alert-box { - @include alert; - - .close { @include alert-close; } - - &.radius { @include radius($alert-radius); } - &.round { @include radius($global-rounded); } - - &.success { @include alert-style($success-color); } - &.alert { @include alert-style($alert-color); } - &.secondary { @include alert-style($secondary-color); } - &.warning { @include alert-style($warning-color); } - &.info { @include alert-style($info-color); } - &.alert-close { opacity: 0} - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_block-grid.scss b/docs/themes/porter/assets/sass/foundation/components/_block-grid.scss deleted file mode 100644 index a923e764b..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_block-grid.scss +++ /dev/null @@ -1,133 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// Block Grid Variables -// -$include-html-block-grid-classes: $include-html-classes !default; -$include-xl-html-block-grid-classes: false !default; - -// We use this to control the maximum number of block grid elements per row -$block-grid-elements: 12 !default; -$block-grid-default-spacing: rem-calc(20) !default; - -$align-block-grid-to-grid: false !default; -@if $align-block-grid-to-grid { - $block-grid-default-spacing: $column-gutter; -} - -// Enables media queries for block-grid classes. Set to false if writing semantic HTML. -$block-grid-media-queries: true !default; - -// -// Block Grid Mixins -// - -// Create a custom block grid -// -// $per-row - # of items to display per row. Default: false. -// $spacing - # of ems to use as padding on each block item. Default: rem-calc(20). -// $include-spacing - Adds padding to our list item. Default: true. -// $base-style - Apply a base style to block grid. Default: true. -@mixin block-grid( - $per-row:false, - $spacing:$block-grid-default-spacing, - $include-spacing:true, - $base-style:true) { - - @if $base-style { - display: block; - padding: 0; - @if $align-block-grid-to-grid { - margin: 0; - } @else { - margin: 0 (-$spacing/2); - } - @include clearfix; - - > li { - display: block; - float: $default-float; - height: auto; - @if $include-spacing { - padding: 0 ($spacing/2) $spacing; - } - } - } - - @if $per-row { - > li { - list-style: none; - @if $include-spacing { - padding: 0 ($spacing/2) $spacing; - } - width: 100%/$per-row; - - &:nth-of-type(1n) { clear: none; } - &:nth-of-type(#{$per-row}n+1) { clear: both; } - @if $align-block-grid-to-grid { - @include block-grid-aligned($per-row, $spacing); - } - } - } -} - -@mixin block-grid-aligned($per-row, $spacing) { - @for $i from 1 through $block-grid-elements { - @if $per-row >= $i { - $grid-column: '+' + $i; - @if $per-row == $i { - $grid-column: ''; - } - &:nth-of-type(#{$per-row}n#{unquote($grid-column)}) { - padding-left: ($spacing - (($spacing / $per-row) * ($per-row - ($i - 1)))); - padding-right: ($spacing - (($spacing / $per-row) * $i)); - } - } - } -} - -// Generate presentational markup for block grid. -// -// $size - Name of class to use, i.e. "large" will generate .large-block-grid-1, .large-block-grid-2, etc. -@mixin block-grid-html-classes($size, $include-spacing) { - @for $i from 1 through $block-grid-elements { - .#{$size}-block-grid-#{($i)} { - @include block-grid($i, $block-grid-default-spacing, $include-spacing, false); - } - } -} - -@include exports("block-grid") { - @if $include-html-block-grid-classes { - - [class*="block-grid-"] { @include block-grid; } - - @if $block-grid-media-queries { - @media #{$small-up} { - @include block-grid-html-classes($size:small, $include-spacing:false); - } - - @media #{$medium-up} { - @include block-grid-html-classes($size:medium, $include-spacing:false); - } - - @media #{$large-up} { - @include block-grid-html-classes($size:large, $include-spacing:false); - } - - @if $include-xl-html-block-grid-classes { - @media #{$xlarge-up} { - @include block-grid-html-classes($size:xlarge, $include-spacing:false); - } - - @media #{$xxlarge-up} { - @include block-grid-html-classes($size:xxlarge, $include-spacing:false); - } - } - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_breadcrumbs.scss b/docs/themes/porter/assets/sass/foundation/components/_breadcrumbs.scss deleted file mode 100644 index 13c6d670f..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_breadcrumbs.scss +++ /dev/null @@ -1,132 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// Breadcrumb Variables -// -$include-html-nav-classes: $include-html-classes !default; - -// We use this to set the background color for the breadcrumb container. -$crumb-bg: scale-color($secondary-color, $lightness: 55%) !default; - -// We use these to set the padding around the breadcrumbs. -$crumb-padding: rem-calc(9 14 9) !default; -$crumb-side-padding: rem-calc(12) !default; - -// We use these to control border styles. -$crumb-function-factor: -10% !default; -$crumb-border-size: 1px !default; -$crumb-border-style: solid !default; -$crumb-border-color: scale-color($crumb-bg, $lightness: $crumb-function-factor) !default; -$crumb-radius: $global-radius !default; - -// We use these to set various text styles for breadcrumbs. -$crumb-font-size: rem-calc(11) !default; -$crumb-font-color: $primary-color !default; -$crumb-font-color-current: $oil !default; -$crumb-font-color-unavailable: $aluminum !default; -$crumb-font-transform: uppercase !default; -$crumb-link-decor: underline !default; - -// We use these to control the slash between breadcrumbs -$crumb-slash-color: $base !default; -$crumb-slash: "/" !default; -$crumb-slash-position: 1px !default; - -// -// Breadcrumb Mixins -// - -// We use this mixin to create a container around our breadcrumbs -@mixin crumb-container { - border-style: $crumb-border-style; - border-width: $crumb-border-size; - display: block; - list-style: none; - margin-#{$default-float}: 0; - overflow: hidden; - padding: $crumb-padding; - - // We control which background color and border come through. - background-color: $crumb-bg; - border-color: $crumb-border-color; -} - -// We use this mixin to create breadcrumb styles from list items. -@mixin crumbs { - - // A normal state will make the links look and act like clickable breadcrumbs. - color: $crumb-font-color; - float: $default-float; - font-size: $crumb-font-size; - line-height: $crumb-font-size; - margin: 0; - text-transform: $crumb-font-transform; - - &:hover a, &:focus a { text-decoration: $crumb-link-decor; } - - a { - color: $crumb-font-color; - } - - // Current is for the link of the current page - &.current { - color: $crumb-font-color-current; - cursor: $cursor-default-value; - a { - color: $crumb-font-color-current; - cursor: $cursor-default-value; - } - - &:hover, &:hover a, - &:focus, &:focus a { text-decoration: none; } - } - - // Unavailable removed color and link styles so it looks inactive. - &.unavailable { - color: $crumb-font-color-unavailable; - a { color: $crumb-font-color-unavailable; } - - &:hover, - &:hover a, - &:focus, - a:focus { - color: $crumb-font-color-unavailable; - cursor: $cursor-disabled-value; - text-decoration: none; - } - } - - &:before { - color: $crumb-slash-color; - content: "#{$crumb-slash}"; - margin: 0 $crumb-side-padding; - position: relative; - top: $crumb-slash-position; - } - - &:first-child:before { - content: " "; - margin: 0; - } -} - -@include exports("breadcrumbs") { - @if $include-html-nav-classes { - .breadcrumbs { - @include crumb-container; - @include radius($crumb-radius); - - > * { - @include crumbs; - } - } - /* Accessibility - hides the forward slash */ - [aria-label="breadcrumbs"] [aria-hidden="true"]:after { - content: "/"; - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_button-groups.scss b/docs/themes/porter/assets/sass/foundation/components/_button-groups.scss deleted file mode 100644 index 889c2c8e9..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_button-groups.scss +++ /dev/null @@ -1,208 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; -@import 'buttons'; - -// -// Button Group Variables -// -$include-html-button-classes: $include-html-classes !default; - -// Sets the margin for the right side by default, and the left margin if right-to-left direction is used -$button-bar-margin-opposite: rem-calc(10) !default; -$button-group-border-width: 1px !default; - -// -// Button Group Mixins -// - -// We use this to add styles for a button group container -@mixin button-group-container($styles:true, $float:false) { - @if $styles { - list-style: none; - margin: 0; - #{$default-float}: 0; - @include clearfix(); - } - @if $float { - float: #{$default-float}; - margin-#{$opposite-direction}: $button-bar-margin-opposite; - & div { overflow: hidden; } - } -} - -// We use this to control styles for button groups -@mixin button-group-style($radius:false, $even:false, $float:false, $orientation:horizontal) { - - > button, .button { - border-#{$default-float}: $button-group-border-width solid; - border-color: rgba(255, 255, 255, .5); - } - - &:first-child { - button, .button { - border-#{$default-float}: 0; - } - } - - $button-group-display: list-item; - $button-group-margin: 0; - - // We use this to control the flow, or remove those styles completely. - @if $float { - $button-group-display: list-item; - $button-group-margin: 0; - float: $float; - // Make sure the first child doesn't get the negative margin. - &:first-child { margin-#{$default-float}: 0; } - } - @else { - $button-group-display: inline-block; - $button-group-margin: 0 -2px; - } - - @if $orientation == vertical { - $button-group-display: block; - $button-group-margin: 0; - > button, .button { - border-color: rgba(255, 255, 255, .5); - border-left-width: 0; - border-top: $button-group-border-width solid; - display: block; - margin:0; - } - > button { - width: 100%; - } - - &:first-child { - button, .button { - border-top: 0; - } - } - } - - display: $button-group-display; - margin: $button-group-margin; - - - // We use these to control left and right radius on first/last buttons in the group. - @if $radius == true { - &, - > a, - > button, - > .button { @include radius(0); } - &:first-child, - &:first-child > a, - &:first-child > button, - &:first-child > .button { - @if $orientation == vertical { - @include side-radius(top, $button-radius); - } - @else { - @include side-radius($default-float, $button-radius); - } - } - &:last-child, - &:last-child > a, - &:last-child > button, - &:last-child > .button { - @if $orientation == vertical { - @include side-radius(bottom, $button-radius); - } - @else { - @include side-radius($opposite-direction, $button-radius); - } - } - } - @else if $radius { - &, - > a, - > button, - > .button { @include radius(0); } - &:first-child, - &:first-child > a, - &:first-child > button, - &:first-child > .button { - @if $orientation == vertical { - @include side-radius(top, $radius); - } - @else { - @include side-radius($default-float, $radius); - } - } - &:last-child, - &:last-child > a, - &:last-child > button, - &:last-child > .button { - @if $orientation == vertical { - @include side-radius(bottom, $radius); - } - @else { - @include side-radius($opposite-direction, $radius); - } - } - } - - // We use this to make the buttons even width across their container - @if $even { - width: percentage((100/$even) / 100); - button, .button { width: 100%; } - } -} - -@include exports("button-group") { - @if $include-html-button-classes { - .button-group { @include button-group-container; - - @for $i from 2 through 8 { - &.even-#{$i} li { @include button-group-style($even:$i, $float:null); } - } - - > li { @include button-group-style(); } - - &.stack { - > li { @include button-group-style($orientation:vertical); float: none; } - } - - &.stack-for-small { - > li { - @include button-group-style($orientation:horizontal); - @media #{$small-only} { - @include button-group-style($orientation:vertical); - width: 100%; - } - } - } - - &.radius > * { @include button-group-style($radius:$button-radius, $float:null); } - &.radius.stack > * { @include button-group-style($radius:$button-radius, $float:null, $orientation:vertical); } - &.radius.stack-for-small > * { - @media #{$medium-up} { - @include button-group-style($radius:$button-radius, $orientation:horizontal); - } - @media #{$small-only} { - @include button-group-style($radius:$button-radius, $orientation:vertical); - } - } - - &.round > * { @include button-group-style($radius:$button-round, $float:null); } - &.round.stack > * { @include button-group-style($radius:$button-med, $float:null, $orientation:vertical); } - &.round.stack-for-small > * { - @media #{$medium-up} { - @include button-group-style($radius:$button-round, $orientation:horizontal); - } - @media #{$small-only} { - @include button-group-style($radius:$button-med, $orientation:vertical); - } - } - } - - .button-bar { - @include clearfix; - .button-group { @include button-group-container($styles:false, $float:true); } - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_buttons.scss b/docs/themes/porter/assets/sass/foundation/components/_buttons.scss deleted file mode 100644 index c7025ca98..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_buttons.scss +++ /dev/null @@ -1,261 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @variables -// -$include-html-button-classes: $include-html-classes !default; - -// We use these to build padding for buttons. -$button-tny: rem-calc(10) !default; -$button-sml: rem-calc(14) !default; -$button-med: rem-calc(16) !default; -$button-lrg: rem-calc(18) !default; - -// We use this to control the display property. -$button-display: inline-block !default; -$button-margin-bottom: rem-calc(20) !default; - -// We use these to control button text styles. -$button-font-family: $body-font-family !default; -$button-font-color: $white !default; -$button-font-color-alt: $oil !default; -$button-font-tny: rem-calc(11) !default; -$button-font-sml: rem-calc(13) !default; -$button-font-med: rem-calc(16) !default; -$button-font-lrg: rem-calc(20) !default; -$button-font-weight: $font-weight-normal !default; -$button-font-align: center !default; - -// We use these to control various hover effects. -$button-function-factor: -20% !default; - -// We use these to control button border styles. -$button-border-width: 0 !default; -$button-border-style: solid !default; -$button-bg-color: $primary-color !default; -$button-bg-hover: scale-color($button-bg-color, $lightness: $button-function-factor) !default; -$button-border-color: $button-bg-hover !default; -$secondary-button-bg-color: $secondary-color !default; -$secondary-button-bg-hover: scale-color($secondary-color, $lightness: $button-function-factor) !default; -$secondary-button-border-color: $secondary-button-bg-hover !default; -$success-button-bg-color: $success-color !default; -$success-button-bg-hover: scale-color($success-color, $lightness: $button-function-factor) !default; -$success-button-border-color: $success-button-bg-hover !default; -$alert-button-bg-color: $alert-color !default; -$alert-button-bg-hover: scale-color($alert-color, $lightness: $button-function-factor) !default; -$alert-button-border-color: $alert-button-bg-hover !default; -$warning-button-bg-color: $warning-color !default; -$warning-button-bg-hover: scale-color($warning-color, $lightness: $button-function-factor) !default; -$warning-button-border-color: $warning-button-bg-hover !default; -$info-button-bg-color: $info-color !default; -$info-button-bg-hover: scale-color($info-color, $lightness: $button-function-factor) !default; -$info-button-border-color: $info-button-bg-hover !default; - -// We use this to set the default radius used throughout the core. -$button-radius: $global-radius !default; -$button-round: $global-rounded !default; - -// We use this to set default opacity and cursor for disabled buttons. -$button-disabled-opacity: .7 !default; -$button-disabled-cursor: $cursor-default-value !default; - - -// -// @MIXIN -// -// We use this mixin to create a default button base. -// -// $style - Sets base styles. Can be set to false. Default: true. -// $display - Used to control display property. Default: $button-display || inline-block - -@mixin button-base($style:true, $display:$button-display) { - @if $style { - -webkit-appearance: none; - -moz-appearance: none; - border-radius:0; - border-style: $button-border-style; - border-width: $button-border-width; - cursor: $cursor-pointer-value; - font-family: $button-font-family; - font-weight: $button-font-weight; - line-height: normal; - margin: 0 0 $button-margin-bottom; - position: relative; - text-align: $button-font-align; - text-decoration: none; - } - @if $display { display: $display; } -} - -// @MIXIN -// -// We use this mixin to add button size styles -// -// $padding - Used to build padding for buttons Default: $button-med ||= rem-calc(12) -// $full-width - We can set $full-width:true to remove side padding extend width - Default: false - -@mixin button-size($padding:$button-med, $full-width:false) { - - // We control which padding styles come through, - // these can be turned off by setting $padding:false - @if $padding { - padding: $padding ($padding * 2) ($padding + rem-calc(1)) ($padding * 2); - // We control the font-size based on mixin input. - @if $padding == $button-med { font-size: $button-font-med; } - @else if $padding == $button-tny { font-size: $button-font-tny; } - @else if $padding == $button-sml { font-size: $button-font-sml; } - @else if $padding == $button-lrg { font-size: $button-font-lrg; } - } - - // We can set $full-width:true to remove side padding extend width. - @if $full-width { - // We still need to check if $padding is set. - @if $padding { - padding-bottom: $padding + rem-calc(1); - padding-top: $padding; - } @else if $padding == false { - padding-bottom:0; - padding-top:0; - } - padding-left: $button-med; - padding-right: $button-med; - width: 100%; - } -} - -// @MIXIN -// -// we use this mixin to create the button hover and border colors - -// @MIXIN -// -// We use this mixin to add button color styles -// -// $bg - Background color. We can set $bg:false for a transparent background. Default: $primary-color. -// $radius - If true, set to button radius which is $button-radius || explicitly set radius amount in px (ex. $radius:10px). Default: false -// $disabled - We can set $disabled:true to create a disabled transparent button. Default: false -// $bg-hover - Button Hover Background Color. Default: $button-bg-hover -// $border-color - Button Border Color. Default: $button-border-color -@mixin button-style($bg:$button-bg-color, $radius:false, $disabled:false, $bg-hover:null, $border-color:null) { - - // We control which background styles are used, - // these can be removed by setting $bg:false - @if $bg { - - @if $bg-hover == null { - $bg-hover: if($bg == $button-bg-color, $button-bg-hover, scale-color($bg, $lightness: $button-function-factor)); - } - - @if $border-color == null { - $border-color: if($bg == $button-bg-color, $button-border-color, scale-color($bg, $lightness: $button-function-factor)); - } - - // This find the lightness percentage of the background color. - $bg-lightness: lightness($bg); - $bg-hover-lightness: lightness($bg-hover); - - background-color: $bg; - border-color: $border-color; - &:hover, - &:focus { background-color: $bg-hover; } - - // We control the text color for you based on the background color. - color: if($bg-lightness > 70%, $button-font-color-alt, $button-font-color); - - &:hover, - &:focus { - color: if($bg-hover-lightness > 70%, $button-font-color-alt, $button-font-color); - } - } - - // We can set $disabled:true to create a disabled transparent button. - @if $disabled { - box-shadow: none; - cursor: $button-disabled-cursor; - opacity: $button-disabled-opacity; - &:hover, - &:focus { background-color: $bg; } - } - - // We can control how much button radius is used. - @if $radius == true { @include radius($button-radius); } - @else if $radius { @include radius($radius); } - -} - -// @MIXIN -// -// We use this to quickly create buttons with a single mixin. As @jaredhardy puts it, "the kitchen sink mixin" -// -// $padding - Used to build padding for buttons Default: $button-med ||= rem-calc(12) -// $bg - Primary color set in settings file. Default: $button-bg. -// $radius - If true, set to button radius which is $global-radius || explicitly set radius amount in px (ex. $radius:10px). Default:false. -// $full-width - We can set $full-width:true to remove side padding extend width. Default:false. -// $disabled - We can set $disabled:true to create a disabled transparent button. Default:false. -// $is-prefix - Not used? Default:false. -// $bg-hover - Button Hover Color - Default null - see button-style mixin -// $border-color - Button Border Color - Default null - see button-style mixin -// $transition - We can control whether or not to include the background-color transition property - Default:true. -@mixin button($padding:$button-med, $bg:$button-bg-color, $radius:false, $full-width:false, $disabled:false, $is-prefix:false, $bg-hover:null, $border-color:null, $transition: true) { - @include button-base; - @include button-size($padding, $full-width); - @include button-style($bg, $radius, $disabled, $bg-hover, $border-color); - - @if $transition { - @include single-transition(background-color); - } -} - - -@include exports("button") { - @if $include-html-button-classes { - - // Default styles applied outside of media query - button, .button { - @include button-base; - @include button-size; - @include button-style; - - @include single-transition(background-color); - - &.secondary { @include button-style($bg:$secondary-button-bg-color, $bg-hover:$secondary-button-bg-hover, $border-color:$secondary-button-border-color); } - &.success { @include button-style($bg:$success-button-bg-color, $bg-hover:$success-button-bg-hover, $border-color:$success-button-border-color); } - &.alert { @include button-style($bg:$alert-button-bg-color, $bg-hover:$alert-button-bg-hover, $border-color:$alert-button-border-color); } - &.warning { @include button-style($bg:$warning-button-bg-color, $bg-hover:$warning-button-bg-hover, $border-color:$warning-button-border-color); } - &.info { @include button-style($bg:$info-button-bg-color, $bg-hover:$info-button-bg-hover, $border-color:$info-button-border-color); } - - &.large { @include button-size($padding:$button-lrg); } - &.small { @include button-size($padding:$button-sml); } - &.tiny { @include button-size($padding:$button-tny); } - &.expand { @include button-size($full-width:true); } - - &.left-align { text-align: left; text-indent: rem-calc(12); } - &.right-align { text-align: right; padding-right: rem-calc(12); } - - &.radius { @include button-style($bg:false, $radius:true); } - &.round { @include button-style($bg:false, $radius:$button-round); } - - &.disabled, &[disabled] { @include button-style($bg:$button-bg-color, $disabled:true, $bg-hover:$button-bg-hover, $border-color:$button-border-color); - &.secondary { @include button-style($bg:$secondary-button-bg-color, $disabled:true, $bg-hover:$secondary-button-bg-hover, $border-color:$secondary-button-border-color); } - &.success { @include button-style($bg:$success-button-bg-color, $disabled:true, $bg-hover:$success-button-bg-hover, $border-color:$success-button-border-color); } - &.alert { @include button-style($bg:$alert-button-bg-color, $disabled:true, $bg-hover:$alert-button-bg-hover, $border-color:$alert-button-border-color); } - &.warning { @include button-style($bg:$warning-button-bg-color, $disabled:true, $bg-hover:$warning-button-bg-hover, $border-color:$warning-button-border-color); } - &.info { @include button-style($bg:$info-button-bg-color, $disabled:true, $bg-hover:$info-button-bg-hover, $border-color:$info-button-border-color); } - } - } - - //firefox 2px fix - button::-moz-focus-inner {border:0; padding:0;} - - @media #{$medium-up} { - button, .button { - @include button-base($style:false, $display:inline-block); - @include button-size($padding:false, $full-width:false); - } - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_clearing.scss b/docs/themes/porter/assets/sass/foundation/components/_clearing.scss deleted file mode 100644 index e58966a41..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_clearing.scss +++ /dev/null @@ -1,260 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @variables -// -$include-html-clearing-classes: $include-html-classes !default; - -// We use these to set the background colors for parts of Clearing. -$clearing-bg: $oil !default; -$clearing-caption-bg: $clearing-bg !default; -$clearing-carousel-bg: rgba(51,51,51,0.8) !default; -$clearing-img-bg: $clearing-bg !default; - -// We use these to style the close button -$clearing-close-color: $iron !default; -$clearing-close-size: 30px !default; - -// We use these to style the arrows -$clearing-arrow-size: 12px !default; -$clearing-arrow-color: $clearing-close-color !default; - -// We use these to style captions -$clearing-caption-font-color: $iron !default; -$clearing-caption-font-size: .875em !default; -$clearing-caption-padding: 10px 30px 20px !default; - -// We use these to make the image and carousel height and style -$clearing-active-img-height: 85% !default; -$clearing-carousel-height: 120px !default; -$clearing-carousel-thumb-width: 120px !default; -$clearing-carousel-thumb-active-border: 1px solid rgb(255,255,255) !default; - -@include exports("clearing") { - @if $include-html-clearing-classes { - // We decided to not create a mixin for Clearing because it relies - // on predefined classes and structure to work properly. - // The variables above should give enough control. - - /* Clearing Styles */ - .clearing-thumbs, #{data('clearing')} { - @include clearfix; - list-style: none; - margin-#{$default-float}: 0; - margin-bottom: 0; - - li { - float: $default-float; - margin-#{$opposite-direction}: 10px; - } - - &[class*="block-grid-"] li { - margin-#{$opposite-direction}: 0; - } - } - - .clearing-blackout { - background: $clearing-bg; - height: 100%; - position: fixed; - top: 0; - width: 100%; - z-index: 998; - #{$default-float}: 0; - - .clearing-close { display: block; } - } - - .clearing-container { - height: 100%; - margin: 0; - overflow: hidden; - position: relative; - z-index: 998; - } - - .clearing-touch-label { - color: $base; - font-size: .6em; - left: 50%; - position: absolute; - top: 50%; - } - - .visible-img { - height: 95%; - position: relative; - - img { - position: absolute; - #{$default-float}: 50%; - top: 50%; - @if $default-float == left { - -webkit-transform: translateY(-50%) translateX(-50%); - -moz-transform: translateY(-50%) translateX(-50%); - -ms-transform: translateY(-50%) translateX(-50%); - -o-transform: translateY(-50%) translateX(-50%); - transform: translateY(-50%) translateX(-50%); - } - @else { - -webkit-transform: translateY(-50%) translateX(50%); - -moz-transform: translateY(-50%) translateX(50%); - -ms-transform: translateY(-50%) translateX(50%); - -o-transform: translateY(-50%) translateX(50%); - transform: translateY(-50%) translateX(50%); - }; - max-height: 100%; - max-width: 100%; - } - } - - .clearing-caption { - background: $clearing-caption-bg; - bottom: 0; - color: $clearing-caption-font-color; - font-size: $clearing-caption-font-size; - line-height: 1.3; - margin-bottom: 0; - padding: $clearing-caption-padding; - position: absolute; - text-align: center; - width: 100%; - #{$default-float}: 0; - } - - .clearing-close { - color: $clearing-close-color; - display: none; - font-size: $clearing-close-size; - line-height: 1; - padding-#{$default-float}: 20px; - padding-top: 10px; - z-index: 999; - - &:hover, - &:focus { color: $iron; } - } - - .clearing-assembled .clearing-container { height: 100%; - .carousel > ul { display: none; } - } - - // If you want to show a lightbox, but only have a single image come through as the thumbnail - .clearing-feature li { - display: none; - &.clearing-featured-img { - display: block; - } - } - - // Large screen overrides - @media #{$medium-up} { - .clearing-main-prev, - .clearing-main-next { - height: 100%; - position: absolute; - top: 0; - width: 40px; - > span { - border: solid $clearing-arrow-size; - display: block; - height: 0; - position: absolute; - top: 50%; - width: 0; - &:hover { opacity: .8; } - } - } - .clearing-main-prev { - #{$default-float}: 0; - > span { - #{$default-float}: 5px; - border-color: transparent; - border-#{$opposite-direction}-color: $clearing-arrow-color; - } - } - .clearing-main-next { - #{$opposite-direction}: 0; - > span { - border-color: transparent; - border-#{$default-float}-color: $clearing-arrow-color; - } - } - - .clearing-main-prev.disabled, - .clearing-main-next.disabled { opacity: .3; } - - .clearing-assembled .clearing-container { - - .carousel { - background: $clearing-carousel-bg; - height: $clearing-carousel-height; - margin-top: 10px; - text-align: center; - - > ul { - display: inline-block; - z-index: 999; - height: 100%; - position: relative; - float: none; - - li { - clear: none; - cursor: $cursor-pointer-value; - display: block; - float: $default-float; - margin-#{$opposite-direction}: 0; - min-height: inherit; - opacity: .4; - overflow: hidden; - padding: 0; - position: relative; - width: $clearing-carousel-thumb-width; - - &.fix-height { - img { - height: 100%; - max-width: none; - } - } - - a.th { - border: none; - box-shadow: none; - display: block; - } - - img { - cursor: $cursor-pointer-value !important; - width: 100% !important; - } - - &.visible { opacity: 1; } - &:hover { opacity: .8; } - } - } - } - - .visible-img { - background: $clearing-img-bg; - height: $clearing-active-img-height; - overflow: hidden; - } - } - - .clearing-close { - padding-#{$default-float}: 0; - padding-top: 0; - position: absolute; - top: 10px; - #{$opposite-direction}: 20px; - } - } - - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_dropdown-buttons.scss b/docs/themes/porter/assets/sass/foundation/components/_dropdown-buttons.scss deleted file mode 100644 index 1dc92d1eb..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_dropdown-buttons.scss +++ /dev/null @@ -1,130 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @variables -// -$include-html-button-classes: $include-html-classes !default; - -// We use these to set the color of the pip in dropdown buttons -$dropdown-button-pip-color: $white !default; -$dropdown-button-pip-color-alt: $oil !default; - -// We use these to set the size of the pip in dropdown buttons -$button-pip-tny: rem-calc(6) !default; -$button-pip-sml: rem-calc(7) !default; -$button-pip-med: rem-calc(9) !default; -$button-pip-lrg: rem-calc(11) !default; - -// We use these to style tiny dropdown buttons -$dropdown-button-padding-tny: $button-pip-tny * 7 !default; -$dropdown-button-pip-size-tny: $button-pip-tny !default; -$dropdown-button-pip-opposite-tny: $button-pip-tny * 3 !default; -$dropdown-button-pip-top-tny: (-$button-pip-tny / 2) + rem-calc(1) !default; - -// We use these to style small dropdown buttons -$dropdown-button-padding-sml: $button-pip-sml * 7 !default; -$dropdown-button-pip-size-sml: $button-pip-sml !default; -$dropdown-button-pip-opposite-sml: $button-pip-sml * 3 !default; -$dropdown-button-pip-top-sml: (-$button-pip-sml / 2) + rem-calc(1) !default; - -// We use these to style medium dropdown buttons -$dropdown-button-padding-med: $button-pip-med * 6 + rem-calc(3) !default; -$dropdown-button-pip-size-med: $button-pip-med - rem-calc(3) !default; -$dropdown-button-pip-opposite-med: $button-pip-med * 2.5 !default; -$dropdown-button-pip-top-med: (-$button-pip-med / 2) + rem-calc(2) !default; - -// We use these to style large dropdown buttons -$dropdown-button-padding-lrg: $button-pip-lrg * 5 + rem-calc(3) !default; -$dropdown-button-pip-size-lrg: $button-pip-lrg - rem-calc(6) !default; -$dropdown-button-pip-opposite-lrg: $button-pip-lrg * 2.5 !default; -$dropdown-button-pip-top-lrg: (-$button-pip-lrg / 2) + rem-calc(3) !default; - -// @mixins -// -// Dropdown Button Mixin -// -// We use this mixin to build off of the button mixin and add dropdown button styles -// -// $padding - Determines the size of button you're working with. Default: medium. Options [tiny, small, medium, large] -// $pip-color - Color of the little triangle that points to the dropdown. Default: $white. -// $base-style - Add in base-styles. This can be set to false. Default:true - -@mixin dropdown-button($padding:medium, $pip-color:$dropdown-button-pip-color, $base-style:true) { - - // We add in base styles, but they can be negated by setting to 'false'. - @if $base-style { - position: relative; - - // This creates the base styles for the triangle pip - &::after { - border-color: $dropdown-button-pip-color transparent transparent transparent; - border-style: solid; - content: ""; - display: block; - height: 0; - position: absolute; - top: 50%; - width: 0; - } - } - - // If we're dealing with tiny buttons, use these styles - @if $padding == tiny { - padding-#{$opposite-direction}: $dropdown-button-padding-tny; - &:after { - border-width: $dropdown-button-pip-size-tny; - #{$opposite-direction}: $dropdown-button-pip-opposite-tny; - margin-top: $dropdown-button-pip-top-tny; - } - } - - // If we're dealing with small buttons, use these styles - @if $padding == small { - padding-#{$opposite-direction}: $dropdown-button-padding-sml; - &::after { - border-width: $dropdown-button-pip-size-sml; - #{$opposite-direction}: $dropdown-button-pip-opposite-sml; - margin-top: $dropdown-button-pip-top-sml; - } - } - - // If we're dealing with default (medium) buttons, use these styles - @if $padding == medium { - padding-#{$opposite-direction}: $dropdown-button-padding-med; - &::after { - border-width: $dropdown-button-pip-size-med; - #{$opposite-direction}: $dropdown-button-pip-opposite-med; - margin-top: $dropdown-button-pip-top-med; - } - } - - // If we're dealing with large buttons, use these styles - @if $padding == large { - padding-#{$opposite-direction}: $dropdown-button-padding-lrg; - &::after { - border-width: $dropdown-button-pip-size-lrg; - #{$opposite-direction}: $dropdown-button-pip-opposite-lrg; - margin-top: $dropdown-button-pip-top-lrg; - } - } - - // We can control the pip color. We didn't use logic in this case, just set it and forget it. - @if $pip-color { - &::after { border-color: $pip-color transparent transparent transparent; } - } -} - -@include exports("dropdown-button") { - @if $include-html-button-classes { - .dropdown.button, button.dropdown { @include dropdown-button; - &.tiny { @include dropdown-button(tiny, $base-style:false); } - &.small { @include dropdown-button(small, $base-style:false); } - &.large { @include dropdown-button(large, $base-style:false); } - &.secondary:after { border-color: $dropdown-button-pip-color-alt transparent transparent transparent; } - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_dropdown.scss b/docs/themes/porter/assets/sass/foundation/components/_dropdown.scss deleted file mode 100644 index 22b70636f..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_dropdown.scss +++ /dev/null @@ -1,269 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @variables -// -$include-html-dropdown-classes: $include-html-classes !default; - -// We use these to controls height and width styles. -$f-dropdown-max-width: 200px !default; -$f-dropdown-height: auto !default; -$f-dropdown-max-height: none !default; - -// Used for bottom position -$f-dropdown-margin-top: 2px !default; - -// Used for right position -$f-dropdown-margin-left: $f-dropdown-margin-top !default; - -// Used for left position -$f-dropdown-margin-right: $f-dropdown-margin-top !default; - -// Used for top position -$f-dropdown-margin-bottom: $f-dropdown-margin-top !default; - -// We use this to control the background color -$f-dropdown-bg: $white !default; - -// We use this to set the border styles for dropdowns. -$f-dropdown-border-style: solid !default; -$f-dropdown-border-width: 1px !default; -$f-dropdown-border-color: scale-color($white, $lightness: -20%) !default; - -// We use these to style the triangle pip. -$f-dropdown-triangle-size: 6px !default; -$f-dropdown-triangle-color: $white !default; -$f-dropdown-triangle-side-offset: 10px !default; - -// We use these to control styles for the list elements. -$f-dropdown-list-style: none !default; -$f-dropdown-font-color: $charcoal !default; -$f-dropdown-font-size: rem-calc(14) !default; -$f-dropdown-list-padding: rem-calc(5, 10) !default; -$f-dropdown-line-height: rem-calc(18) !default; -$f-dropdown-list-hover-bg: $smoke !default; -$dropdown-mobile-default-float: 0 !default; - -// We use this to control the styles for when the dropdown has custom content. -$f-dropdown-content-padding: rem-calc(20) !default; - -// Default radius for dropdown. -$f-dropdown-radius: $global-radius !default; - -// -// @mixins -// -// -// NOTE: Make default max-width change between list and content types. Can add more width with classes, maybe .small, .medium, .large, etc.; -// We use this to style the dropdown container element. -// $content-list - Sets list-style. Default: list. Options: [list, content] -// $triangle - Sets if dropdown has triangle. Default:true. -// $max-width - Default: $f-dropdown-max-width || 200px. -@mixin dropdown-container($content:list, $triangle:true, $max-width:$f-dropdown-max-width) { - display: none; - left: -9999px; - list-style: $f-dropdown-list-style; - margin-#{$default-float}: 0; - position: absolute; - - &.open { - display: block; - } - - > *:first-child { margin-top: 0; } - > *:last-child { margin-bottom: 0; } - - @if $content == list { - background: $f-dropdown-bg; - border: $f-dropdown-border-style $f-dropdown-border-width $f-dropdown-border-color; - font-size: $f-dropdown-font-size; - height: $f-dropdown-height; - max-height: $f-dropdown-max-height; - width: 100%; - z-index: 89; - } - @else if $content == content { - background: $f-dropdown-bg; - border: $f-dropdown-border-style $f-dropdown-border-width $f-dropdown-border-color; - font-size: $f-dropdown-font-size; - height: $f-dropdown-height; - max-height: $f-dropdown-max-height; - padding: $f-dropdown-content-padding; - width: 100%; - z-index: 89; - } - - @if $triangle == bottom { - margin-top: $f-dropdown-margin-top; - - @if $f-dropdown-triangle-size != 0px { - - &:before { - @include css-triangle($f-dropdown-triangle-size, $f-dropdown-triangle-color, bottom); - position: absolute; - top: -($f-dropdown-triangle-size * 2); - #{$default-float}: $f-dropdown-triangle-side-offset; - z-index: 89; - } - &:after { - @include css-triangle($f-dropdown-triangle-size + 1, $f-dropdown-border-color, bottom); - position: absolute; - top: -(($f-dropdown-triangle-size + 1) * 2); - #{$default-float}: $f-dropdown-triangle-side-offset - 1; - z-index: 88; - } - - &.right:before { - #{$default-float}: auto; - #{$opposite-direction}: $f-dropdown-triangle-side-offset; - } - &.right:after { - #{$default-float}: auto; - #{$opposite-direction}: $f-dropdown-triangle-side-offset - 1; - } - } - } - - @if $triangle == $default-float { - margin-top: 0; - margin-#{$default-float}: $f-dropdown-margin-right; - - &:before { - @include css-triangle($f-dropdown-triangle-size, $f-dropdown-triangle-color, #{$opposite-direction}); - position: absolute; - top: $f-dropdown-triangle-side-offset; - #{$default-float}: -($f-dropdown-triangle-size * 2); - z-index: 89; - } - &:after { - @include css-triangle($f-dropdown-triangle-size + 1, $f-dropdown-border-color, #{$opposite-direction}); - position: absolute; - top: $f-dropdown-triangle-side-offset - 1; - #{$default-float}: -($f-dropdown-triangle-size * 2) - 2; - z-index: 88; - } - - } - - @if $triangle == $opposite-direction { - margin-top: 0; - margin-#{$default-float}: -$f-dropdown-margin-right; - - &:before { - @include css-triangle($f-dropdown-triangle-size, $f-dropdown-triangle-color, #{$default-float}); - position: absolute; - top: $f-dropdown-triangle-side-offset; - #{$opposite-direction}: -($f-dropdown-triangle-size * 2); - #{$default-float}: auto; - z-index: 89; - } - &:after { - @include css-triangle($f-dropdown-triangle-size + 1, $f-dropdown-border-color, #{$default-float}); - position: absolute; - top: $f-dropdown-triangle-side-offset - 1; - #{$opposite-direction}: -($f-dropdown-triangle-size * 2) - 2; - #{$default-float}: auto; - z-index: 88; - } - - } - - @if $triangle == top { - margin-left: 0; - margin-top: -$f-dropdown-margin-bottom; - - &:before { - @include css-triangle($f-dropdown-triangle-size, $f-dropdown-triangle-color, top); - bottom: -($f-dropdown-triangle-size * 2); - position: absolute; - top: auto; - #{$default-float}: $f-dropdown-triangle-side-offset; - #{$opposite-direction}: auto; - z-index: 89; - } - &:after { - @include css-triangle($f-dropdown-triangle-size + 1, $f-dropdown-border-color, top); - bottom: -($f-dropdown-triangle-size * 2) - 2; - position: absolute; - top: auto; - #{$default-float}: $f-dropdown-triangle-side-offset - 1; - #{$opposite-direction}: auto; - z-index: 88; - } - - } - - @if $max-width { max-width: $max-width; } - @else { max-width: $f-dropdown-max-width; } - -} - -// @MIXIN -// -// We use this to style the list elements or content inside the dropdown. - -@mixin dropdown-style { - cursor: $cursor-pointer-value; - font-size: $f-dropdown-font-size; - line-height: $f-dropdown-line-height; - margin: 0; - - &:hover, - &:focus { background: $f-dropdown-list-hover-bg; } - - a { - display: block; - padding: $f-dropdown-list-padding; - color: $f-dropdown-font-color; - } -} - -@include exports("dropdown") { - @if $include-html-dropdown-classes { - - /* Foundation Dropdowns */ - .f-dropdown { - @include dropdown-container(list, bottom); - - &.drop-#{$opposite-direction} { - @include dropdown-container(list, #{$default-float}); - } - - &.drop-#{$default-float} { - @include dropdown-container(list, #{$opposite-direction}); - } - - &.drop-top { - @include dropdown-container(list, top); - } - // max-width: none; - - li { @include dropdown-style; } - - // You can also put custom content in these dropdowns - &.content { @include dropdown-container(content, $triangle:false); } - - // Radius of Dropdown - &.radius { @include radius($f-dropdown-radius); } - - // Sizes - &.tiny { max-width: 200px; } - &.small { max-width: 300px; } - &.medium { max-width: 500px; } - &.large { max-width: 800px; } - &.mega { - width:100%!important; - max-width:100%!important; - - &.open{ - left:0!important; - } - } - } - - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_flex-video.scss b/docs/themes/porter/assets/sass/foundation/components/_flex-video.scss deleted file mode 100644 index 4df77e5f7..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_flex-video.scss +++ /dev/null @@ -1,51 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @variables -// -$include-html-media-classes: $include-html-classes !default; - -// We use these to control video container padding and margins -$flex-video-padding-top: rem-calc(25) !default; -$flex-video-padding-bottom: 67.5% !default; -$flex-video-margin-bottom: rem-calc(16) !default; - -// We use this to control widescreen bottom padding -$flex-video-widescreen-padding-bottom: 56.34% !default; - -// -// @mixins -// - -@mixin flex-video-container { - height: 0; - margin-bottom: $flex-video-margin-bottom; - overflow: hidden; - padding-bottom: $flex-video-padding-bottom; - padding-top: $flex-video-padding-top; - position: relative; - - &.widescreen { padding-bottom: $flex-video-widescreen-padding-bottom; } - &.vimeo { padding-top: 0; } - - iframe, - object, - embed, - video { - height: 100%; - position: absolute; - top: 0; - width: 100%; - #{$default-float}: 0; - } -} - -@include exports("flex-video") { - @if $include-html-media-classes { - .flex-video { @include flex-video-container; } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_forms.scss b/docs/themes/porter/assets/sass/foundation/components/_forms.scss deleted file mode 100644 index f9e5f352e..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_forms.scss +++ /dev/null @@ -1,607 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; -@import 'buttons'; - -// -// @variables -// -$include-html-form-classes: $include-html-classes !default; - -// We use this to set the base for lots of form spacing and positioning styles -$form-spacing: rem-calc(16) !default; - -// We use these to style the labels in different ways -$form-label-pointer: pointer !default; -$form-label-font-size: rem-calc(14) !default; -$form-label-font-weight: $font-weight-normal !default; -$form-label-line-height: 1.5 !default; -$form-label-font-color: scale-color($black, $lightness: 30%) !default; -$form-label-small-transform: capitalize !default; -$form-label-bottom-margin: 0 !default; -$input-font-family: inherit !default; -$input-font-color: rgba(0,0,0,0.75) !default; -$input-placeholder-font-color: $steel !default; -$input-font-size: rem-calc(14) !default; -$input-bg-color: $white !default; -$input-focus-bg-color: scale-color($white, $lightness: -2%) !default; -$input-border-color: scale-color($white, $lightness: -20%) !default; -$input-focus-border-color: scale-color($white, $lightness: -40%) !default; -$input-border-style: solid !default; -$input-border-width: 1px !default; -$input-border-radius: $global-radius !default; -$input-disabled-bg: $gainsboro !default; -$input-disabled-cursor: $cursor-default-value !default; -$input-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1) !default; -$input-include-glowing-effect: false !default; - -// We use these to style the fieldset border and spacing. -$fieldset-border-style: solid !default; -$fieldset-border-width: 1px !default; -$fieldset-border-color: $gainsboro !default; -$fieldset-padding: rem-calc(20) !default; -$fieldset-margin: rem-calc(18 0) !default; - -// We use these to style the legends when you use them -$legend-font-weight: $font-weight-bold !default; -$legend-padding: rem-calc(0 3) !default; - -// We use these to style the prefix and postfix input elements -$input-prefix-bg: scale-color($white, $lightness: -5%) !default; -$input-prefix-border-color: scale-color($white, $lightness: -20%) !default; -$input-prefix-border-size: 1px !default; -$input-prefix-border-type: solid !default; -$input-prefix-overflow: visible !default; -$input-prefix-font-color: $oil !default; -$input-prefix-font-color-alt: $white !default; - -// We use this setting to turn on/off HTML5 number spinners (the up/down arrows) -$input-number-spinners: true !default; - -// We use these to style the error states for inputs and labels -$input-error-message-padding: rem-calc(6 9 9) !default; -$input-error-message-top: -1px !default; -$input-error-message-font-size: rem-calc(12) !default; -$input-error-message-font-weight: $font-weight-normal !default; -$input-error-message-font-style: italic !default; -$input-error-message-font-color: $white !default; -$input-error-message-bg-color: $alert-color !default; -$input-error-message-font-color-alt: $oil !default; - -// We use this to style the glowing effect of inputs when focused -$glowing-effect-fade-time: .45s !default; -$glowing-effect-color: $input-focus-border-color !default; - -// We use this to style the transition when inputs are focused and when the glowing effect is disabled. -$input-transition-fade-time: 0.15s !default; -$input-transition-fade-timing-function: linear !default; - -// Select variables -$select-bg-color: $ghost !default; -$select-hover-bg-color: scale-color($select-bg-color, $lightness: -3%) !default; - -// -// @MIXINS -// - -// We use this mixin to give us form styles for rows inside of forms -@mixin form-row-base { - .row { margin: 0 ((-$form-spacing) / 2); - - .column, - .columns { padding: 0 ($form-spacing / 2); } - - // Use this to collapse the margins of a form row - &.collapse { margin: 0; - - .column, - .columns { padding: 0; } - input { - @include side-radius($opposite-direction, 0); - } - - } - } - input.column, - input.columns, - textarea.column, - textarea.columns { padding-#{$default-float}: ($form-spacing / 2); } -} - -// @MIXIN -// -// We use this mixin to give all basic form elements their style -@mixin form-element { - background-color: $input-bg-color; - border: { - style: $input-border-style; - width: $input-border-width; - color: $input-border-color; - } - box-shadow: $input-box-shadow; - color: $input-font-color; - display: block; - font-family: $input-font-family; - font-size: $input-font-size; - height: ($input-font-size + ($form-spacing * 1.5) - rem-calc(1)); - margin: 0 0 $form-spacing 0; - padding: $form-spacing / 2; - width: 100%; - @include box-sizing(border-box); - @if $input-include-glowing-effect { - @include block-glowing-effect(focus, $glowing-effect-fade-time, $glowing-effect-color); - } - // Basic focus styles - &:focus { - background: $input-focus-bg-color; - border-color: $input-focus-border-color; - outline: none; - } - // Disabled Styles - &:disabled { - background-color: $input-disabled-bg; - cursor: $input-disabled-cursor; - } - - // Disabled background input background color - &[disabled], - &[readonly], - fieldset[disabled] & { - background-color: $input-disabled-bg; - cursor: $input-disabled-cursor; - } -} - -// @MIXIN -// -// We use this mixin to create form labels -// -// $alignment - Alignment options. Default: false. Options: [right, inline, false] -// $base-style - Control whether or not the base styles come through. Default: true. -@mixin form-label($alignment:false, $base-style:true) { - - // Control whether or not the base styles come through. - @if $base-style { - color: $form-label-font-color; - cursor: $form-label-pointer; - display: block; - font-size: $form-label-font-size; - font-weight: $form-label-font-weight; - line-height: $form-label-line-height; - margin-bottom: $form-label-bottom-margin; - } - - // Alignment options - @if $alignment == right { - float: none !important; - text-align: right; - } - @else if $alignment == inline { - margin: 0 0 $form-spacing 0; - padding: $form-spacing / 2 + rem-calc($input-border-width) 0; - } -} - -// We use this mixin to create postfix/prefix form Labels -@mixin prefix-postfix-base { - border-style: $input-prefix-border-type; - border-width: $input-prefix-border-size; - display: block; - font-size: $form-label-font-size; - height: ($input-font-size + ($form-spacing * 1.5) - rem-calc(1)); - line-height: ($input-font-size + ($form-spacing * 1.5) - rem-calc(1)); - overflow: $input-prefix-overflow; - padding-bottom: 0; - padding-top: 0; - position: relative; - text-align: center; - width: 100%; - z-index: 2; -} - -// @MIXIN -// -// We use this mixin to create prefix label styles -// $bg - Default:$input-prefix-bg || scale-color($white, $lightness: -5%) !default; -// $is-button - Toggle position settings if prefix is a button. Default:false -// -@mixin prefix($bg:$input-prefix-bg, $border:$input-prefix-border-color, $is-button:false) { - - @if $bg { - $bg-lightness: lightness($bg); - background: $bg; - border-#{$opposite-direction}: none; - - // Control the font color based on background brightness - @if $bg-lightness > 70% or $bg == yellow { color: $input-prefix-font-color; } - @else { color: $input-prefix-font-color-alt; } - } - - @if $border { - border-color: $border; - } - - @if $is-button { - border: none; - padding-#{$default-float}: 0; - padding-#{$opposite-direction}: 0; - padding-bottom: 0; - padding-top: 0; - text-align: center; - } - -} - -// @MIXIN -// -// We use this mixin to create postfix label styles -// $bg - Default:$input-prefix-bg || scale-color($white, $lightness: -5%) !default; -// $is-button - Toggle position settings if prefix is a button. Default: false -@mixin postfix($bg:$input-prefix-bg, $border-left-hidden:true, $border:$input-prefix-border-color, $is-button:false) { - - @if $bg { - $bg-lightness: lightness($bg); - background: $bg; - @if $border-left-hidden { - border-#{$default-float}: none; - } - - // Control the font color based on background brightness - @if $bg-lightness > 70% or $bg == yellow { color: $input-prefix-font-color; } - @else { color: $input-prefix-font-color-alt; } - } - - @if $border { - border-color: $border; - } - - @if $is-button { - border: none; - padding-#{$default-float}: 0; - padding-#{$opposite-direction}: 0; - padding-bottom: 0; - padding-top: 0; - text-align: center; - } - -} - -// We use this mixin to style fieldsets -@mixin fieldset { - border: $fieldset-border-width $fieldset-border-style $fieldset-border-color; - margin: $fieldset-margin; - padding: $fieldset-padding; - - // and legend styles - legend { - font-weight: $legend-font-weight; - margin: 0; - margin-#{$default-float}: rem-calc(-3); - padding: $legend-padding; - } -} - -// @MIXIN -// -// We use this mixin to control border and background color of error inputs -// $color - Default: $alert-color (found in settings file) -@mixin form-error-color($color:$alert-color) { - background-color: rgba($color, .1); - border-color: $color; - - // Go back to normal on focus - &:focus { - background: $input-focus-bg-color; - border-color: $input-focus-border-color; - } -} - -// @MIXIN -// -// We use this simple mixin to style labels for error inputs -// $color - Default:$alert-color. Found in settings file -@mixin form-label-error-color($color:$alert-color) { color: $color; } - -// @MIXIN -// -// We use this mixin to create error message styles -// $bg - Default: $alert-color (Found in settings file) -@mixin form-error-message($bg:$input-error-message-bg-color) { - display: block; - font-size: $input-error-message-font-size; - font-style: $input-error-message-font-style; - font-weight: $input-error-message-font-weight; - margin-bottom: $form-spacing; - margin-top: $input-error-message-top; - padding: $input-error-message-padding; - - // We can control the text color based on the brightness of the background. - $bg-lightness: lightness($bg); - background: $bg; - @if $bg-lightness < 70% or $bg == yellow { color: $input-error-message-font-color; } - @else { color: $input-error-message-font-color-alt; } -} - -// We use this mixin to style select elements -@mixin form-select { - -webkit-appearance: none !important; - -moz-appearance: none !important; - background-color: $select-bg-color; - border-radius: 0; - - // Hide the dropdown arrow shown in newer IE versions - &::-ms-expand { - display: none; - } - - // The custom arrow has some fake horizontal padding so we can align it - // from the right side of the element without relying on CSS3 - background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+'); - - // We can safely use leftmost and rightmost now - background-position: if($text-direction == 'rtl', 0%, 100%) center; - - background-repeat: no-repeat; - border: { - style: $input-border-style; - width: $input-border-width; - color: $input-border-color; - } - color: $input-font-color; - font-family: $input-font-family; - font-size: $input-font-size; - line-height: normal; - padding: ($form-spacing / 2); - @include radius(0); - &.radius { @include radius($global-radius); } - &:focus { - background-color: $select-hover-bg-color; - border-color: $input-focus-border-color; - } - // Disabled Styles - &:disabled { - background-color: $input-disabled-bg; - cursor: $input-disabled-cursor; - } -} - -// We use this mixin to turn on/off HTML5 number spinners -@mixin html5number($browser, $on: true) { - @if $on == false { - @if $browser == webkit { - -webkit-appearance: none; - margin: 0; - } @else if $browser == moz { - -moz-appearance: textfield; - } - } -} - -@include exports("form") { - @if $include-html-form-classes { - /* Standard Forms */ - form { margin: 0 0 $form-spacing; } - - /* Using forms within rows, we need to set some defaults */ - form .row { @include form-row-base; } - - /* Label Styles */ - label { @include form-label; - &.right { @include form-label(right, false); } - &.inline { @include form-label(inline, false); } - /* Styles for required inputs */ - small { - text-transform: $form-label-small-transform; - color: scale-color($form-label-font-color, $lightness: 15%); - } - } - - /* Attach elements to the beginning or end of an input */ - .prefix, - .postfix { @include prefix-postfix-base; } - - /* Adjust padding, alignment and radius if pre/post element is a button */ - .postfix.button { @include button-size(false, false); @include postfix(false, false, false, true); } - .prefix.button { @include button-size(false, false); @include prefix(false, false, true); } - - .prefix.button.radius { @include radius(0); @include side-radius($default-float, $button-radius); } - .postfix.button.radius { @include radius(0); @include side-radius($opposite-direction, $button-radius); } - .prefix.button.round { @include radius(0); @include side-radius($default-float, $button-round); } - .postfix.button.round { @include radius(0); @include side-radius($opposite-direction, $button-round); } - - /* Separate prefix and postfix styles when on span or label so buttons keep their own */ - span.prefix, label.prefix { @include prefix(); } - span.postfix, label.postfix { @include postfix(); } - - /* We use this to get basic styling on all basic form elements */ - input:not([type]), #{text-inputs(all, 'input')} { - -webkit-appearance: none; - -moz-appearance: none; - border-radius: 0; - @include form-element; - @if $input-include-glowing-effect == false { - -webkit-transition: border-color $input-transition-fade-time $input-transition-fade-timing-function, background $input-transition-fade-time $input-transition-fade-timing-function; - -moz-transition: border-color $input-transition-fade-time $input-transition-fade-timing-function, background $input-transition-fade-time $input-transition-fade-timing-function; - -ms-transition: border-color $input-transition-fade-time $input-transition-fade-timing-function, background $input-transition-fade-time $input-transition-fade-timing-function; - -o-transition: border-color $input-transition-fade-time $input-transition-fade-timing-function, background $input-transition-fade-time $input-transition-fade-timing-function; - transition: border-color $input-transition-fade-time $input-transition-fade-timing-function, background $input-transition-fade-time $input-transition-fade-timing-function; - } - &.radius { - @include radius($input-border-radius); - } - } - - form { - .row { - .prefix-radius.row.collapse { - input, - textarea, - select, - button { @include radius(0); @include side-radius($opposite-direction, $button-radius); } - .prefix { @include radius(0); @include side-radius($default-float, $button-radius); } - } - .postfix-radius.row.collapse { - input, - textarea, - select, - button { @include radius(0); @include side-radius($default-float, $button-radius); } - .postfix { @include radius(0); @include side-radius($opposite-direction, $button-radius); } - } - .prefix-round.row.collapse { - input, - textarea, - select, - button { @include radius(0); @include side-radius($opposite-direction, $button-round); } - .prefix { @include radius(0); @include side-radius($default-float, $button-round); } - } - .postfix-round.row.collapse { - input, - textarea, - select, - button { @include radius(0); @include side-radius($default-float, $button-round); } - .postfix { @include radius(0); @include side-radius($opposite-direction, $button-round); } - } - } - } - - input[type="submit"] { - -webkit-appearance: none; - -moz-appearance: none; - border-radius: 0; - } - - /* Respect enforced amount of rows for textarea */ - textarea[rows] { - height: auto; - } - - /* Not allow resize out of parent */ - textarea { - max-width: 100%; - } - - // style placeholder text cross browser - ::-webkit-input-placeholder { - color: $input-placeholder-font-color; - } - - :-moz-placeholder { /* Firefox 18- */ - color: $input-placeholder-font-color; - } - - ::-moz-placeholder { /* Firefox 19+ */ - color: $input-placeholder-font-color; - } - - :-ms-input-placeholder { - color: $input-placeholder-font-color; - } - - - /* Add height value for select elements to match text input height */ - select { - @include form-select; - height: ($input-font-size + ($form-spacing * 1.5) - rem-calc(1)); - &[multiple] { - height: auto; - } - } - - /* Adjust margin for form elements below */ - input[type="file"], - input[type="checkbox"], - input[type="radio"], - select { - margin: 0 0 $form-spacing 0; - } - - input[type="checkbox"] + label, - input[type="radio"] + label { - display: inline-block; - margin-#{$default-float}: $form-spacing * .5; - margin-#{$opposite-direction}: $form-spacing; - margin-bottom: 0; - vertical-align: baseline; - } - - /* Normalize file input width */ - input[type="file"] { - width:100%; - } - - /* HTML5 Number spinners settings */ - input[type=number] { - @include html5number(moz, $input-number-spinners) - } - input[type="number"]::-webkit-inner-spin-button, - input[type="number"]::-webkit-outer-spin-button { - @include html5number(webkit, $input-number-spinners); - } - - /* We add basic fieldset styling */ - fieldset { - @include fieldset; - } - - /* Error Handling */ - - #{data('abide')} { - .error small.error, .error span.error, span.error, small.error { - @include form-error-message; - } - span.error, small.error { display: none; } - } - - span.error, small.error { - @include form-error-message; - } - - .error { - input, - textarea, - select { - margin-bottom: 0; - } - - input[type="checkbox"], - input[type="radio"] { - margin-bottom: $form-spacing - } - - label, - label.error { - @include form-label-error-color; - } - - small.error { - @include form-error-message; - } - - > label { - > small { - background: transparent; - color: scale-color($form-label-font-color, $lightness: 15%); - display: inline; - font-size: 60%; - font-style: normal; - margin: 0; - padding: 0; - text-transform: $form-label-small-transform; - } - } - - span.error-message { - display: block; - } - } - - input.error, - textarea.error, - select.error { - margin-bottom: 0; - } - label.error { @include form-label-error-color; } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_global.scss b/docs/themes/porter/assets/sass/foundation/components/_global.scss deleted file mode 100644 index b581e0c42..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_global.scss +++ /dev/null @@ -1,566 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import '../functions'; -// -// Foundation Variables -// - -// Data attribute namespace -// styles get applied to [data-mysite-plugin], etc -$namespace: false !default; - -// The default font-size is set to 100% of the browser style sheet (usually 16px) -// for compatibility with browser-based text zoom or user-set defaults. - -// Since the typical default browser font-size is 16px, that makes the calculation for grid size. -// If you want your base font-size to be different and not have it affect the grid breakpoints, -// set $rem-base to $base-font-size and make sure $base-font-size is a px value. -$base-font-size: 100% !default; - -// $base-line-height is 24px while $base-font-size is 16px -$base-line-height: 1.5 !default; - -// -// Global Foundation Mixins -// - -// @mixins -// -// We use this to control border radius. -// $radius - Default: $global-radius || 4px -@mixin radius($radius:$global-radius) { - @if $radius { - border-radius: $radius; - } -} - -// @mixins -// -// We use this to create equal side border radius on elements. -// $side - Options: left, right, top, bottom -@mixin side-radius($side, $radius:$global-radius) { - @if ($side == left or $side == right) { - -webkit-border-bottom-#{$side}-radius: $radius; - -webkit-border-top-#{$side}-radius: $radius; - border-bottom-#{$side}-radius: $radius; - border-top-#{$side}-radius: $radius; - } @else { - -webkit-#{$side}-left-radius: $radius; - -webkit-#{$side}-right-radius: $radius; - border-#{$side}-left-radius: $radius; - border-#{$side}-right-radius: $radius; - } -} - -// @mixins -// -// We can control whether or not we have inset shadows edges. -// $active - Default: true, Options: false -@mixin inset-shadow($active:true) { - box-shadow: $shiny-edge-size $shiny-edge-color inset; - - @if $active { &:active { - box-shadow: $shiny-edge-size $shiny-edge-active-color inset; } } -} - -// @mixins -// -// We use this to add transitions to elements -// $property - Default: all, Options: http://www.w3.org/TR/css3-transitions/#animatable-properties -// $speed - Default: 300ms -// $ease - Default: ease-out, Options: http://css-tricks.com/almanac/properties/t/transition-timing-function/ -@mixin single-transition($property:all, $speed:300ms, $ease:ease-out) { - @include transition($property, $speed, $ease); -} - -// @mixins -// -// We use this to add single or multiple transitions to elements -// $property - Default: all, Options: http://www.w3.org/TR/css3-transitions/#animatable-properties -// $speed - Default: 300ms -// $ease - Default: ease-out, Options: http://css-tricks.com/almanac/properties/t/transition-timing-function/ -// $delay - Default: null (0s) -@mixin transition($property:all, $speed:300ms, $ease:ease-out, $delay:null) { - $transition: none; - - @if length($property) > 1 { - - @each $transition_list in $property { - - @for $i from 1 through length($transition_list) { - - @if $i == 1 { - $_property: nth($transition_list, $i); - } - - @if length($transition_list) > 1 { - @if $i == 2 { - $_speed: nth($transition_list, $i); - } - } @else { - $_speed: $speed; - } - - @if length($transition_list) > 2 { - @if $i == 3 { - $_ease: nth($transition_list, $i); - } - } @else { - $_ease: $ease; - } - - @if length($transition_list) > 3 { - @if $i == 4 { - $_delay: nth($transition_list, $i); - } - } @else { - $_delay: $delay; - } - } - - @if $transition == none { - $transition: $_property $_speed $_ease $_delay; - } @else { - $transition: $transition, $_property $_speed $_ease $_delay; - } - } - } - @else { - - @each $prop in $property { - - @if $transition == none { - $transition: $prop $speed $ease $delay; - } @else { - $transition: $transition, $prop $speed $ease $delay; - } - } - } - - transition: $transition; -} - -// @mixins -// -// We use this to add box-sizing across browser prefixes -@mixin box-sizing($type:border-box) { - -webkit-box-sizing: $type; // Android < 2.3, iOS < 4 - -moz-box-sizing: $type; // Firefox < 29 - box-sizing: $type; // Chrome, IE 8+, Opera, Safari 5.1 -} - -// @mixins -// -// We use this to create isosceles triangles -// $triangle-size - Used to set border-size. No default, set a px or em size. -// $triangle-color - Used to set border-color which makes up triangle. No default -// $triangle-direction - Used to determine which direction triangle points. Options: top, bottom, left, right -@mixin css-triangle($triangle-size, $triangle-color, $triangle-direction) { - border: inset $triangle-size; - content: ""; - display: block; - height: 0; - width: 0; - @if ($triangle-direction == top) { - border-color: $triangle-color transparent transparent transparent; - border-top-style: solid; - } - @if ($triangle-direction == bottom) { - border-color: transparent transparent $triangle-color transparent; - border-bottom-style: solid; - } - @if ($triangle-direction == left) { - border-color: transparent transparent transparent $triangle-color; - border-left-style: solid; - } - @if ($triangle-direction == right) { - border-color: transparent $triangle-color transparent transparent; - border-right-style: solid; - } -} - -// @mixins -// -// We use this to create the icon with three lines aka the hamburger icon, the menu-icon or the navicon -// $width - Width of hamburger icon in rem -// $left - If false, icon will be centered horizontally || explicitly set value in rem -// $top - If false, icon will be centered vertically || explicitly set value in rem -// $thickness - thickness of lines in hamburger icon, set value in px -// $gap - spacing between the lines in hamburger icon, set value in px -// $color - icon color -// $hover-color - icon color during hover -// $offcanvas - Set to true of @include in offcanvas -@mixin hamburger($width, $left, $top, $thickness, $gap, $color, $hover-color, $offcanvas) { - span::after { - content: ""; - display: block; - height: 0; - position: absolute; - - @if $offcanvas { - @if $top { - top: $top; - } - @else { - top: 50%; - margin-top: (-$width/2); - } - @if $left { - left: $left; - } - @else { - left: ($tabbar-menu-icon-width - $width)/2; - } - } - @else { - margin-top: -($width/2); - top: 50%; - #{$opposite-direction}: $topbar-link-padding; - } - - box-shadow: - 0 0 0 $thickness $color, - 0 $gap + $thickness 0 $thickness $color, - 0 (2 * $gap + 2*$thickness) 0 $thickness $color; - width: $width; - } - span:hover:after { - box-shadow: - 0 0 0 $thickness $hover-color, - 0 $gap + $thickness 0 $thickness $hover-color, - 0 (2 * $gap + 2*$thickness) 0 $thickness $hover-color; - } -} - -// We use this to do clear floats -@mixin clearfix { - &:before, &:after { content: " "; display: table; } - &:after { clear: both; } -} - -// @mixins -// -// We use this to add a glowing effect to block elements -// $selector - Used for selector state. Default: focus, Options: hover, active, visited -// $fade-time - Default: 300ms -// $glowing-effect-color - Default: fade-out($primary-color, .25) -@mixin block-glowing-effect($selector:focus, $fade-time:300ms, $glowing-effect-color:fade-out($primary-color, .25)) { - transition: box-shadow $fade-time, border-color $fade-time ease-in-out; - - &:#{$selector} { - border-color: $glowing-effect-color; - box-shadow: 0 0 5px $glowing-effect-color; - } -} - -// @mixins -// -// We use this to translate elements in 2D -// $horizontal: Default: 0 -// $vertical: Default: 0 -@mixin translate2d($horizontal:0, $vertical:0) { - transform: translate($horizontal, $vertical) -} - -// @mixins -// -// Makes an element visually hidden, but accessible. -// @see http://snook.ca/archives/html_and_css/hiding-content-for-accessibility -@mixin element-invisible { - clip: rect(1px, 1px, 1px, 1px); - height: 1px; - overflow: hidden; - position: absolute !important; - width: 1px; -} - -// @mixins -// -// Turns off the element-invisible effect. -@mixin element-invisible-off { - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; -} - -$white : #FFFFFF !default; -$ghost : #FAFAFA !default; -$snow : #F9F9F9 !default; -$vapor : #F6F6F6 !default; -$white-smoke : #F5F5F5 !default; -$silver : #EFEFEF !default; -$smoke : #EEEEEE !default; -$gainsboro : #DDDDDD !default; -$iron : #CCCCCC !default; -$base : #AAAAAA !default; -$aluminum : #999999 !default; -$jumbo : #888888 !default; -$monsoon : #777777 !default; -$steel : #666666 !default; -$charcoal : #555555 !default; -$tuatara : #444444 !default; -$oil : #333333 !default; -$jet : #222222 !default; -$black : #000000 !default; - -// We use these as default colors throughout -$primary-color: #008CBA !default; // bondi-blue -$secondary-color: #e7e7e7 !default; // white-lilac -$alert-color: #f04124 !default; // cinnabar -$success-color: #43AC6A !default; // sea-green -$warning-color: #f08a24 !default; // carrot -$info-color: #a0d3e8 !default; // cornflower - -// We use these to define default font stacks -$font-family-sans-serif: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif !default; -$font-family-serif: Georgia, Cambria, "Times New Roman", Times, serif !default; -$font-family-monospace: Consolas, "Liberation Mono", Courier, monospace !default; - -// We use these to define default font weights -$font-weight-normal: normal !default; -$font-weight-bold: bold !default; - -// We use these to control various global styles -$body-bg: #fff !default; -$body-font-color: #222 !default; -$body-font-family: $font-family-sans-serif !default; -$body-font-weight: $font-weight-normal !default; -$body-font-style: normal !default; - -// We use this to control font-smoothing -$font-smoothing: antialiased !default; - -// We use these to control text direction settings -$text-direction: ltr !default; -$default-float: left !default; -$opposite-direction: right !default; -@if $text-direction == ltr { - $default-float: left; - $opposite-direction: right; -} @else { - $default-float: right; - $opposite-direction: left; -} - -// We use these to make sure border radius matches unless we want it different. -$global-radius: 3px !default; -$global-rounded: 1000px !default; - -// We use these to control inset shadow shiny edges and depressions. -$shiny-edge-size: 0 1px 0 !default; -$shiny-edge-color: rgba(#fff, .5) !default; -$shiny-edge-active-color: rgba(#000, .2) !default; - -// We use this to control whether or not CSS classes come through in the gem files. -$include-html-classes: true !default; -$include-print-styles: true !default; -$include-js-meta-styles: true !default; // Warning! Meta styles are a dependancy of the Javascript. -$include-html-global-classes: $include-html-classes !default; - -$column-gutter: rem-calc(30) !default; - -// Media Query Ranges -$small-breakpoint: em-calc(640) !default; -$medium-breakpoint: em-calc(1024) !default; -$large-breakpoint: em-calc(1440) !default; -$xlarge-breakpoint: em-calc(1920) !default; - -$small-range: (0, $small-breakpoint) !default; -$medium-range: ($small-breakpoint + em-calc(1), $medium-breakpoint) !default; -$large-range: ($medium-breakpoint + em-calc(1), $large-breakpoint) !default; -$xlarge-range: ($large-breakpoint + em-calc(1), $xlarge-breakpoint) !default; -$xxlarge-range: ($xlarge-breakpoint + em-calc(1), em-calc(99999999)) !default; - -$screen: "only screen" !default; - -$landscape: "#{$screen} and (orientation: landscape)" !default; -$portrait: "#{$screen} and (orientation: portrait)" !default; - -$small-up: $screen !default; -$small-only: "#{$screen} and (max-width: #{upper-bound($small-range)})" !default; - -$medium-up: "#{$screen} and (min-width:#{lower-bound($medium-range)})" !default; -$medium-only: "#{$screen} and (min-width:#{lower-bound($medium-range)}) and (max-width:#{upper-bound($medium-range)})" !default; - -$large-up: "#{$screen} and (min-width:#{lower-bound($large-range)})" !default; -$large-only: "#{$screen} and (min-width:#{lower-bound($large-range)}) and (max-width:#{upper-bound($large-range)})" !default; - -$xlarge-up: "#{$screen} and (min-width:#{lower-bound($xlarge-range)})" !default; -$xlarge-only: "#{$screen} and (min-width:#{lower-bound($xlarge-range)}) and (max-width:#{upper-bound($xlarge-range)})" !default; - -$xxlarge-up: "#{$screen} and (min-width:#{lower-bound($xxlarge-range)})" !default; -$xxlarge-only: "#{$screen} and (min-width:#{lower-bound($xxlarge-range)}) and (max-width:#{upper-bound($xxlarge-range)})" !default; - -$retina: ( - "#{$screen} and (-webkit-min-device-pixel-ratio: 2)", - "#{$screen} and (min--moz-device-pixel-ratio: 2)", - "#{$screen} and (-o-min-device-pixel-ratio: 2/1)", - "#{$screen} and (min-device-pixel-ratio: 2)", - "#{$screen} and (min-resolution: 192dpi)", - "#{$screen} and (min-resolution: 2dppx)" -); - -// Legacy -$small: $small-up; -$medium: $medium-up; -$large: $large-up; - - -//We use this as cursors values for enabling the option of having custom cursors in the whole site's stylesheet -$cursor-auto-value: auto !default; -$cursor-crosshair-value: crosshair !default; -$cursor-default-value: default !default; -$cursor-disabled-value: not-allowed !default; -$cursor-pointer-value: pointer !default; -$cursor-help-value: help !default; -$cursor-text-value: text !default; - - -@include exports("global") { - - // Meta styles are a dependancy of the Javascript. - // Used to provide media query values for javascript components. - // Forward slash placed around everything to convince PhantomJS to read the value. - - @if $include-js-meta-styles { - - meta.foundation-version { - font-family: "/5.5.3/"; - } - - meta.foundation-mq-small { - font-family: "/" + unquote($small-up) + "/"; - width: lower-bound($small-range); - } - - meta.foundation-mq-small-only { - font-family: "/" + unquote($small-only) + "/"; - width: lower-bound($small-range); - } - - meta.foundation-mq-medium { - font-family: "/" + unquote($medium-up) + "/"; - width: lower-bound($medium-range); - } - - meta.foundation-mq-medium-only { - font-family: "/" + unquote($medium-only) + "/"; - width: lower-bound($medium-range); - } - - meta.foundation-mq-large { - font-family: "/" + unquote($large-up) + "/"; - width: lower-bound($large-range); - } - - meta.foundation-mq-large-only { - font-family: "/" + unquote($large-only) + "/"; - width: lower-bound($large-range); - } - - meta.foundation-mq-xlarge { - font-family: "/" + unquote($xlarge-up) + "/"; - width: lower-bound($xlarge-range); - } - - meta.foundation-mq-xlarge-only { - font-family: "/" + unquote($xlarge-only) + "/"; - width: lower-bound($xlarge-range); - } - - meta.foundation-mq-xxlarge { - font-family: "/" + unquote($xxlarge-up) + "/"; - width: lower-bound($xxlarge-range); - } - - meta.foundation-data-attribute-namespace { - font-family: #{$namespace}; - } - - } - - @if $include-html-global-classes { - - // Must be 100% for off canvas to work - html, body { height: 100%; } - - // Set box-sizing globally to handle padding and border widths - *, - *:before, - *:after { - @include box-sizing(border-box); - } - - html, - body { font-size: $base-font-size; } - - // Default body styles - body { - background: $body-bg; - color: $body-font-color; - cursor: $cursor-auto-value; - font-family: $body-font-family; - font-style: $body-font-style; - font-weight: $body-font-weight; - line-height: $base-line-height; // Set to $base-line-height to take on browser default of 150% - margin: 0; - padding: 0; - position: relative; - } - - a:hover { cursor: $cursor-pointer-value; } - - // Grid Defaults to get images and embeds to work properly - img { max-width: 100%; height: auto; } - - img { -ms-interpolation-mode: bicubic; } - - #map_canvas, - .map_canvas, - .mqa-display { - img, - embed, - object { max-width: none !important; - } - } - - // Miscellaneous useful HTML classes - .left { float: left !important; } - .right { float: right !important; } - .clearfix { @include clearfix; } - - // Hide visually and from screen readers - .hide { - display: none; - } - - // Hide visually and from screen readers, but maintain layout - .invisible { visibility: hidden; } - - // Font smoothing - // Antialiased font smoothing works best for light text on a dark background. - // Apply to single elements instead of globally to body. - // Note this only applies to webkit-based desktop browsers and Firefox 25 (and later) on the Mac. - .antialiased { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } - - // Get rid of gap under images by making them display: inline-block; by default - img { - display: inline-block; - vertical-align: middle; - } - - // - // Global resets for forms - // - - // Make sure textarea takes on height automatically - textarea { height: auto; min-height: 50px; } - - // Make select elements 100% width by default - select { width: 100%; } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_grid.scss b/docs/themes/porter/assets/sass/foundation/components/_grid.scss deleted file mode 100644 index 70d256bb2..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_grid.scss +++ /dev/null @@ -1,292 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @variables -// -$include-html-grid-classes: $include-html-classes !default; -$include-xl-html-grid-classes: false !default; - -$row-width: rem-calc(1000) !default; -$total-columns: 12 !default; - -$last-child-float: $opposite-direction !default; - -// -// Grid Functions -// - -// Deprecated: We'll drop support for this in 5.1, use grid-calc() -@function gridCalc($colNumber, $totalColumns) { - @warn "gridCalc() is deprecated, use grid-calc()"; - @return grid-calc($colNumber, $totalColumns); -} - -// @FUNCTION -// $colNumber - Found in settings file -// $totalColumns - Found in settings file -@function grid-calc($colNumber, $totalColumns) { - $result: percentage(($colNumber / $totalColumns)); - @if $result == 0% { $result: 0; } - @return $result; -} - -// -// @mixins -// - -// For creating container, nested, and collapsed rows. -// -// -// $behavior - Any special behavior for this row? Default: false. Options: nest, collapse, nest-collapse, false. -@mixin grid-row($behavior: false) { - - // use @include grid-row(nest); to include a nested row - @if $behavior == nest { - margin: 0 (-($column-gutter/2)); - max-width: none; - width: auto; - } - - // use @include grid-row(collapse); to collapsed a container row margins - @else if $behavior == collapse { - margin: 0; - max-width: $row-width; - width: 100%; - } - - // use @include grid-row(nest-collapse); to collapse outer margins on a nested row - @else if $behavior == nest-collapse { - margin: 0; - max-width: none; - width: auto; - } - - // use @include grid-row; to use a container row - @else { - margin: 0 auto; - max-width: $row-width; - width: 100%; - } - - // Clearfix for all rows - @include clearfix(); -} - -// Creates a column, should be used inside of a media query to control layouts -// -// $columns - The number of columns this should be -// $last-column - Is this the last column? Default: false. -// $center - Center these columns? Default: false. -// $offset - # of columns to offset. Default: false. -// $push - # of columns to push. Default: false. -// $pull - # of columns to pull. Default: false. -// $collapse - Get rid of gutter padding on column? Default: false. -// $float - Should this float? Default: true. Options: true, false, left, right. -@mixin grid-column( - $columns:false, - $last-column:false, - $center:false, - $offset:false, - $push:false, - $pull:false, - $collapse:false, - $float:true, - $position:false) { - - // If positioned for default .column, include relative position - // push and pull require position set - @if $position or $push or $pull { - position: relative; - } - - // If collapsed, get rid of gutter padding - @if $collapse { - padding-left: 0; - padding-right: 0; - } - - // Gutter padding whenever a column isn't set to collapse - // (use $collapse:null to do nothing) - @else if $collapse == false { - padding-left: ($column-gutter / 2); - padding-right: ($column-gutter / 2); - } - - // If a column number is given, calculate width - @if $columns { - width: grid-calc($columns, $total-columns); - - // If last column, float naturally instead of to the right - @if $last-column { float: $opposite-direction; } - } - - // Source Ordering, adds left/right depending on which you use. - @if $push { #{$default-float}: grid-calc($push, $total-columns); #{$opposite-direction}: auto; } - @if $pull { #{$opposite-direction}: grid-calc($pull, $total-columns); #{$default-float}: auto; } - - @if $float and $last-column == false { - @if $float == left or $float == true { float: $default-float; } - @else if $float == right { float: $opposite-direction; } - @else { float: none; } - } - - // If centered, get rid of float and add appropriate margins - @if $center { - margin-#{$default-float}: auto; - margin-#{$opposite-direction}: auto; - float: none; - } - - // If offset, calculate appropriate margins - @if $offset { margin-#{$default-float}: grid-calc($offset, $total-columns) !important; } - -} - -// Create presentational classes for grid -// -// $size - Name of class to use, i.e. "large" will generate .large-1, .large-2, etc. -@mixin grid-html-classes($size) { - - @for $i from 0 through $total-columns - 1 { - .#{$size}-push-#{$i} { - @include grid-column($push:$i, $collapse:null, $float:false); - } - .#{$size}-pull-#{$i} { - @include grid-column($pull:$i, $collapse:null, $float:false); - } - } - - .column, - .columns { @include grid-column($columns:false, $position:true); } - - - @for $i from 1 through $total-columns { - .#{$size}-#{$i} { @include grid-column($columns:$i, $collapse:null, $float:false); } - } - - @for $i from 0 through $total-columns - 1 { - .#{$size}-offset-#{$i} { @include grid-column($offset:$i, $collapse:null, $float:false); } - } - - .#{$size}-reset-order { - float: $default-float; - left: auto; - margin-#{$default-float}: 0; - margin-#{$opposite-direction}: 0; - right: auto; - } - - .column.#{$size}-centered, - .columns.#{$size}-centered { @include grid-column($center:true, $collapse:null, $float:false); } - - .column.#{$size}-uncentered, - .columns.#{$size}-uncentered { - float: $default-float; - margin-#{$default-float}: 0; - margin-#{$opposite-direction}: 0; - } - - // Fighting [class*="column"] + [class*="column"]:last-child - .column.#{$size}-centered:last-child, - .columns.#{$size}-centered:last-child{ - float: none; - } - - // Fighting .column.-centered:last-child - .column.#{$size}-uncentered:last-child, - .columns.#{$size}-uncentered:last-child { - float: $default-float; - } - - .column.#{$size}-uncentered.opposite, - .columns.#{$size}-uncentered.opposite { - float: $opposite-direction; - } - - .row { - &.#{$size}-collapse { - > .column, - > .columns { @include grid-column($collapse:true, $float:false); } - - .row {margin-left:0; margin-right:0;} - } - &.#{$size}-uncollapse { - > .column, - > .columns { - @include grid-column; - } - } - } -} - -@include exports("grid") { - @if $include-html-grid-classes { - .row { - @include grid-row; - - &.collapse { - > .column, - > .columns { @include grid-column($collapse:true, $float:false); } - - .row {margin-left:0; margin-right:0;} - } - - .row { @include grid-row($behavior:nest); - &.collapse { @include grid-row($behavior:nest-collapse); } - } - } - - .column, - .columns { @include grid-column($columns:$total-columns); } - - .column, - .columns { - & + &:last-child { - float: $last-child-float; - } - & + &.end { - float: $default-float; - } - } - - @media #{$small-up} { - @include grid-html-classes($size:small); - } - - @media #{$medium-up} { - @include grid-html-classes($size:medium); - // Old push and pull classes - @for $i from 0 through $total-columns - 1 { - .push-#{$i} { - @include grid-column($push:$i, $collapse:null, $float:false); - } - .pull-#{$i} { - @include grid-column($pull:$i, $collapse:null, $float:false); - } - } - } - @media #{$large-up} { - @include grid-html-classes($size:large); - @for $i from 0 through $total-columns - 1 { - .push-#{$i} { - @include grid-column($push:$i, $collapse:null, $float:false); - } - .pull-#{$i} { - @include grid-column($pull:$i, $collapse:null, $float:false); - } - } - } - } - @if $include-xl-html-grid-classes { - @media #{$xlarge-up} { - @include grid-html-classes($size:xlarge); - } - @media #{$xxlarge-up} { - @include grid-html-classes($size:xxlarge); - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_icon-bar.scss b/docs/themes/porter/assets/sass/foundation/components/_icon-bar.scss deleted file mode 100644 index 6ca01daba..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_icon-bar.scss +++ /dev/null @@ -1,460 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - - -// @name -// @dependencies _global.scss - -$include-html-icon-bar-classes: $include-html-classes !default; - -// @variables - -// We use these to style the icon-bar and items -$icon-bar-bg: $oil !default; -$icon-bar-font-color: $white !default; -$icon-bar-font-color-hover: $icon-bar-font-color !default; -$icon-bar-font-size: 1rem !default; -$icon-bar-hover-color: $primary-color !default; -$icon-bar-icon-color: $white !default; -$icon-bar-icon-color-hover: $icon-bar-icon-color !default; -$icon-bar-icon-size: 1.875rem !default; -$icon-bar-image-width: 1.875rem !default; -$icon-bar-image-height: 1.875rem !default; -$icon-bar-active-color: $primary-color !default; -$icon-bar-item-padding: 1.25rem !default; - -// We use this to set default opacity and cursor for disabled icons. -$icon-bar-disabled-opacity: .7 !default; -$icon-bar-disabled-cursor: $cursor-disabled-value !default; - - -// -// @mixins -// - -// We use this mixin to create the base styles for our Icon bar element. -// -@mixin icon-bar-base() { - display: inline-block; - font-size: 0; - width: 100%; - - > * { - display: block; - float: left; - font-size: $icon-bar-font-size; - margin: 0 auto; - padding: $icon-bar-item-padding; - text-align: center; - width: 25%; - - i, img { - display: block; - margin: 0 auto; - - & + label { - margin-top: .0625rem; - } - } - - i { - font-size: $icon-bar-icon-size; - vertical-align: middle; - } - - img { - height: $icon-bar-image-height; - width: $icon-bar-image-width; - } - } - - &.label-right > * { - - i, img { - display: inline-block; - margin: 0 .0625rem 0 0; - - & + label { - margin-top: 0; - } - } - - label { display: inline-block; } - } - - &.vertical.label-right > * { - text-align: left; - } - - &.vertical, &.small-vertical{ - height: 100%; - width: auto; - - .item { - float: none; - margin: auto; - width: auto; - } - } - - &.medium-vertical { - @media #{$medium-up} { - height: 100%; - width: auto; - - .item { - float: none; - margin: auto; - width: auto; - } - } - } - &.large-vertical { - @media #{$large-up} { - height: 100%; - width: auto; - - .item { - float: none; - margin: auto; - width: auto; - } - } - } -} - -// We use this mixin to create the size styles for icon bars. -@mixin icon-bar-size( - $padding: $icon-bar-item-padding, - $font-size: $icon-bar-font-size, - $icon-size: $icon-bar-icon-size, - $image-width: $icon-bar-image-width, - $image-height: $icon-bar-image-height) { - - > * { - font-size: $font-size; - padding: $padding; - - i, img { - - & + label { - margin-top: .0625rem; - font-size: $font-size; - } - } - - i { - font-size: $icon-size; - } - - img { - height: $image-height; - width: $image-width; - } - } - -} - -@mixin icon-bar-style( - $bar-bg:$icon-bar-bg, - $bar-font-color:$icon-bar-font-color, - $bar-font-color-hover:$icon-bar-font-color-hover, - $bar-hover-color:$icon-bar-hover-color, - $bar-icon-color:$icon-bar-icon-color, - $bar-icon-color-hover:$icon-bar-icon-color-hover, - $bar-active-color:$icon-bar-active-color, - $base-style:true, - $disabled:false) { - - @if $base-style { - - background: $bar-bg; - - > * { - label { color: $bar-font-color; } - - i { color: $bar-icon-color; } - } - - > a:hover { - - background: $bar-hover-color; - - label { color: $bar-font-color-hover; } - - i { color: $bar-icon-color-hover; } - } - - > a.active { - - background: $bar-active-color; - - label { color: $bar-font-color-hover; } - - i { color: $bar-icon-color-hover; } - } - } - @if $disabled { - .item.disabled { - cursor: $icon-bar-disabled-cursor; - opacity: $icon-bar-disabled-opacity; - pointer-events: none; - >* { - opacity: $icon-bar-disabled-opacity; - cursor: $icon-bar-disabled-cursor; - } - } - } - -} - -// We use this to quickly create icon bars with a single mixin -// $height - The overall calculated height of the icon bar (horizontal) -// $bar-bg - the background color of the bar -// $bar-font-color - the font color -// $bar-hover-color - okay these are pretty obvious variables -// $bar-icon-color - maybe we could skip explaining them all? Okay this one does change icon color if you use an icon font -// $bar-active-color - the color of an active / hover state -// $base-style - Apply base styles? Default: true. -// $disabled - Allow disabled icons? Default: false. - -@mixin icon-bar( - $bar-bg:$icon-bar-bg, - $bar-font-color:$icon-bar-font-color, - $bar-font-color-hover:$icon-bar-font-color-hover, - $bar-hover-color:$icon-bar-hover-color, - $bar-icon-color:$icon-bar-icon-color, - $bar-icon-color-hover:$icon-bar-icon-color-hover, - $bar-active-color:$icon-bar-active-color, - $padding: $icon-bar-item-padding, - $font-size: $icon-bar-font-size, - $icon-size: $icon-bar-icon-size, - $image-width: $icon-bar-image-width, - $image-height: $icon-bar-image-height, - $base-style:true, - $disabled:true) { - @include icon-bar-base(); - @include icon-bar-size($padding, $font-size, $icon-size, $image-width, $image-height); - @include icon-bar-style($bar-bg, $bar-font-color, $bar-font-color-hover, $bar-hover-color, $bar-icon-color, $bar-icon-color-hover, $bar-active-color, $base-style, $disabled); - - // Counts - - &.two-up { - .item { width: 50%; } - &.vertical .item, &.small-vertical .item { width: auto; } - &.medium-vertical .item { - @media #{$medium-up} { - width: auto; - } - } - &.large-vertical .item { - @media #{$large-up} { - width: auto; - } - } - } - &.three-up { - .item { width: 33.3333%; } - &.vertical .item, &.small-vertical .item { width: auto; } - &.medium-vertical .item { - @media #{$medium-up} { - width: auto; - } - } - &.large-vertical .item { - @media #{$large-up} { - width: auto; - } - } - } - &.four-up { - .item { width: 25%; } - &.vertical .item, &.small-vertical .item { width: auto; } - &.medium-vertical .item { - @media #{$medium-up} { - width: auto; - } - } - &.large-vertical .item { - @media #{$large-up} { - width: auto; - } - } - } - &.five-up { - .item { width: 20%; } - &.vertical .item, &.small-vertical .item { width: auto; } - &.medium-vertical .item { - @media #{$medium-up} { - width: auto; - } - } - &.large-vertical .item { - @media #{$large-up} { - width: auto; - } - } - } - &.six-up { - .item { width: 16.66667%; } - &.vertical .item, &.small-vertical .item { width: auto; } - &.medium-vertical .item { - @media #{$medium-up} { - width: auto; - } - } - &.large-vertical .item { - @media #{$large-up} { - width: auto; - } - } - } - &.seven-up { - .item { width: 14.28571%; } - &.vertical .item, &.small-vertical .item { width: auto; } - &.medium-vertical .item { - @media #{$medium-up} { - width: auto; - } - } - &.large-vertical .item { - @media #{$large-up} { - width: auto; - } - } - } - &.eight-up { - .item { width: 12.5%; } - &.vertical .item, &.small-vertical .item { width: auto; } - &.medium-vertical .item { - @media #{$medium-up} { - width: auto; - } - } - &.large-vertical .item { - @media #{$large-up} { - width: auto; - } - } - } -} - -@include exports("icon-bar") { - @if $include-html-icon-bar-classes { - .icon-bar { - @include icon-bar; - } - } -} - -@if $include-html-icon-bar-classes { - - // toolbar styles - - .icon-bar { - - // Counts - - &.two-up { - .item { width: 50%; } - &.vertical .item, &.small-vertical .item { width: auto; } - &.medium-vertical .item { - @media #{$medium-up} { - width: auto; - } - } - &.large-vertical .item { - @media #{$large-up} { - width: auto; - } - } - } - &.three-up { - .item { width: 33.3333%; } - &.vertical .item, &.small-vertical .item { width: auto; } - &.medium-vertical .item { - @media #{$medium-up} { - width: auto; - } - } - &.large-vertical .item { - @media #{$large-up} { - width: auto; - } - } - } - &.four-up { - .item { width: 25%; } - &.vertical .item, &.small-vertical .item { width: auto; } - &.medium-vertical .item { - @media #{$medium-up} { - width: auto; - } - } - &.large-vertical .item { - @media #{$large-up} { - width: auto; - } - } - } - &.five-up { - .item { width: 20%; } - &.vertical .item, &.small-vertical .item { width: auto; } - &.medium-vertical .item { - @media #{$medium-up} { - width: auto; - } - } - &.large-vertical .item { - @media #{$large-up} { - width: auto; - } - } - } - &.six-up { - .item { width: 16.66667%; } - &.vertical .item, &.small-vertical .item { width: auto; } - &.medium-vertical .item { - @media #{$medium-up} { - width: auto; - } - } - &.large-vertical .item { - @media #{$large-up} { - width: auto; - } - } - } - &.seven-up { - .item { width: 14.28571%; } - &.vertical .item, &.small-vertical .item { width: auto; } - &.medium-vertical .item { - @media #{$medium-up} { - width: auto; - } - } - &.large-vertical .item { - @media #{$large-up} { - width: auto; - } - } - } - &.eight-up { - .item { width: 12.5%; } - &.vertical .item, &.small-vertical .item { width: auto; } - &.medium-vertical .item { - @media #{$medium-up} { - width: auto; - } - } - &.large-vertical .item { - @media #{$large-up} { - width: auto; - } - } - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_inline-lists.scss b/docs/themes/porter/assets/sass/foundation/components/_inline-lists.scss deleted file mode 100644 index 7b46c56ec..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_inline-lists.scss +++ /dev/null @@ -1,58 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @variables -// -$include-html-inline-list-classes: $include-html-classes !default; - -// We use this to control the margins and padding of the inline list. -$inline-list-top-margin: 0 !default; -$inline-list-opposite-margin: 0 !default; -$inline-list-bottom-margin: rem-calc(17) !default; -$inline-list-default-float-margin: rem-calc(-22) !default; -$inline-list-default-float-list-margin: rem-calc(22) !default; - -$inline-list-padding: 0 !default; - -// We use this to control the overflow of the inline list. -$inline-list-overflow: hidden !default; - -// We use this to control the list items -$inline-list-display: block !default; - -// We use this to control any elements within list items -$inline-list-children-display: block !default; - -// -// @mixins -// -// We use this mixin to create inline lists -@mixin inline-list { - list-style: none; - margin-top: $inline-list-top-margin; - margin-bottom: $inline-list-bottom-margin; - margin-#{$default-float}: $inline-list-default-float-margin; - margin-#{$opposite-direction}: $inline-list-opposite-margin; - overflow: $inline-list-overflow; - padding: $inline-list-padding; - - > li { - display: $inline-list-display; - float: $default-float; - list-style: none; - margin-#{$default-float}: $inline-list-default-float-list-margin; - > * { display: $inline-list-children-display; } - } -} - -@include exports("inline-list") { - @if $include-html-inline-list-classes { - .inline-list { - @include inline-list(); - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_joyride.scss b/docs/themes/porter/assets/sass/foundation/components/_joyride.scss deleted file mode 100644 index 050ae7f8d..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_joyride.scss +++ /dev/null @@ -1,220 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @variables -// -$include-html-joyride-classes: $include-html-classes !default; - -// Controlling default Joyride styles -$joyride-tip-bg: $oil !default; -$joyride-tip-default-width: 300px !default; -$joyride-tip-padding: rem-calc(18 20 24) !default; -$joyride-tip-border: solid 1px $charcoal !default; -$joyride-tip-radius: 4px !default; -$joyride-tip-position-offset: 22px !default; - -// Here, we're setting the tip font styles -$joyride-tip-font-color: $white !default; -$joyride-tip-font-size: rem-calc(14) !default; -$joyride-tip-header-weight: $font-weight-bold !default; - -// This changes the nub size -$joyride-tip-nub-size: 10px !default; - -// This adjusts the styles for the timer when its enabled -$joyride-tip-timer-width: 50px !default; -$joyride-tip-timer-height: 3px !default; -$joyride-tip-timer-color: $steel !default; - -// This changes up the styles for the close button -$joyride-tip-close-color: $monsoon !default; -$joyride-tip-close-size: 24px !default; -$joyride-tip-close-weight: $font-weight-normal !default; - -// When Joyride is filling the screen, we use this style for the bg -$joyride-screenfill: rgba(0,0,0,0.5) !default; - - -// We decided not to make a mixin for this because it relies on -// predefined classes to work properly. -@include exports("joyride") { - @if $include-html-joyride-classes { - - /* Foundation Joyride */ - .joyride-list { display: none; } - - /* Default styles for the container */ - .joyride-tip-guide { - background: $joyride-tip-bg; - color: $joyride-tip-font-color; - display: none; - font-family: inherit; - font-weight: $font-weight-normal; - position: absolute; - top: 0; - width: 95%; - z-index: 103; - #{$default-float}: 2.5%; - } - - .lt-ie9 .joyride-tip-guide { - margin-#{$default-float}: -400px; - max-width: 800px; - #{$default-float}: 50%; - } - - .joyride-content-wrapper { - padding: $joyride-tip-padding; - width: 100%; - - .button { margin-bottom: 0 !important; } - - .joyride-prev-tip { margin-right: 10px; } - } - - /* Add a little css triangle pip, older browser just miss out on the fanciness of it */ - .joyride-tip-guide { - .joyride-nub { - border: $joyride-tip-nub-size solid $joyride-tip-bg; - display: block; - height: 0; - position: absolute; - width: 0; - #{$default-float}: $joyride-tip-position-offset; - - &.top { - border-color: $joyride-tip-bg; - border-top-color: transparent !important; - border-top-style: solid; - border-#{$default-float}-color: transparent !important; - border-#{$opposite-direction}-color: transparent !important; - top: -($joyride-tip-nub-size*2); - } - &.bottom { - border-color: $joyride-tip-bg !important; - border-bottom-color: transparent !important; - border-bottom-style: solid; - border-#{$default-float}-color: transparent !important; - border-#{$opposite-direction}-color: transparent !important; - bottom: -($joyride-tip-nub-size*2); - } - - &.right { right: -($joyride-tip-nub-size*2); } - &.left { left: -($joyride-tip-nub-size*2); } - } - } - - /* Typography */ - .joyride-tip-guide h1, - .joyride-tip-guide h2, - .joyride-tip-guide h3, - .joyride-tip-guide h4, - .joyride-tip-guide h5, - .joyride-tip-guide h6 { - color: $joyride-tip-font-color; - font-weight: $joyride-tip-header-weight; - line-height: 1.25; - margin: 0; - } - .joyride-tip-guide p { - font-size: $joyride-tip-font-size; - line-height: 1.3; - margin: rem-calc(0 0 18 0); - } - - .joyride-timer-indicator-wrap { - border: $joyride-tip-border; - bottom: rem-calc(16); - height: $joyride-tip-timer-height; - position: absolute; - width: $joyride-tip-timer-width; - #{$opposite-direction}: rem-calc(17); - } - .joyride-timer-indicator { - background: $joyride-tip-timer-color; - display: block; - height: inherit; - width: 0; - } - - .joyride-close-tip { - color: $joyride-tip-close-color !important; - font-size: $joyride-tip-close-size; - font-weight: $joyride-tip-close-weight; - line-height: .5 !important; - position: absolute; - text-decoration: none; - top: 10px; - #{$opposite-direction}: 12px; - - &:hover, - &:focus { color: $smoke !important; } - } - - .joyride-modal-bg { - background: $joyride-screenfill; - cursor: $cursor-pointer-value; - display: none; - height: 100%; - position: fixed; - top: 0; - width: 100%; - z-index: 100; - #{$default-float}: 0; - } - - .joyride-expose-wrapper { - background-color: $white; - border-radius: 3px; - box-shadow: 0 0 15px $white; - position: absolute; - z-index: 102; - } - - .joyride-expose-cover { - background: transparent; - border-radius: 3px; - left: 0; - position: absolute; - top: 0; - z-index: 9999; - } - - - /* Styles for screens that are at least 768px; */ - @media #{$small} { - .joyride-tip-guide { width: $joyride-tip-default-width; #{$default-float}: inherit; - .joyride-nub { - &.bottom { - border-color: $joyride-tip-bg !important; - border-bottom-color: transparent !important; - border-#{$default-float}-color: transparent !important; - border-#{$opposite-direction}-color: transparent !important; - bottom: -($joyride-tip-nub-size*2); - } - &.right { - border-color: $joyride-tip-bg !important; - border-right-color: transparent !important; border-bottom-color: transparent !important; - border-top-color: transparent !important; - left: auto; - right: -($joyride-tip-nub-size*2); - top: $joyride-tip-position-offset; - } - &.left { - border-color: $joyride-tip-bg !important; - border-bottom-color: transparent !important; - border-left-color: transparent !important; - border-top-color: transparent !important; - left: -($joyride-tip-nub-size*2); - right: auto; - top: $joyride-tip-position-offset; - } - } - } - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_keystrokes.scss b/docs/themes/porter/assets/sass/foundation/components/_keystrokes.scss deleted file mode 100644 index 28076df17..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_keystrokes.scss +++ /dev/null @@ -1,60 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @variables -// -$include-html-keystroke-classes: $include-html-classes !default; - -// We use these to control text styles. -$keystroke-font: "Consolas", "Menlo", "Courier", monospace !default; -$keystroke-font-size: inherit !default; -$keystroke-font-color: $jet !default; -$keystroke-font-color-alt: $white !default; -$keystroke-function-factor: -7% !default; - -// We use this to control keystroke padding. -$keystroke-padding: rem-calc(2 4 0) !default; - -// We use these to control background and border styles. -$keystroke-bg: scale-color($white, $lightness: $keystroke-function-factor) !default; -$keystroke-border-style: solid !default; -$keystroke-border-width: 1px !default; -$keystroke-border-color: scale-color($keystroke-bg, $lightness: $keystroke-function-factor) !default; -$keystroke-radius: $global-radius !default; - -// -// @mixins -// -// We use this mixin to create keystroke styles. -// $bg - Default: $keystroke-bg || scale-color($white, $lightness: $keystroke-function-factor) !default; -@mixin keystroke($bg:$keystroke-bg) { - // This find the lightness percentage of the background color. - $bg-lightness: lightness($bg); - background-color: $bg; - border-color: scale-color($bg, $lightness: $keystroke-function-factor); - - // We adjust the font color based on the brightness of the background. - @if $bg-lightness > 70% { color: $keystroke-font-color; } - @else { color: $keystroke-font-color-alt; } - - border-style: $keystroke-border-style; - border-width: $keystroke-border-width; - font-family: $keystroke-font; - font-size: $keystroke-font-size; - margin: 0; - padding: $keystroke-padding; -} - -@include exports("keystroke") { - @if $include-html-keystroke-classes { - .keystroke, - kbd { - @include keystroke; - @include radius($keystroke-radius); - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_labels.scss b/docs/themes/porter/assets/sass/foundation/components/_labels.scss deleted file mode 100644 index 770d82fa6..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_labels.scss +++ /dev/null @@ -1,106 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @variables -// -$include-html-label-classes: $include-html-classes !default; - -// We use these to style the labels -$label-padding: rem-calc(4 8 4) !default; -$label-radius: $global-radius !default; - -// We use these to style the label text -$label-font-sizing: rem-calc(11) !default; -$label-font-weight: $font-weight-normal !default; -$label-font-color: $oil !default; -$label-font-color-alt: $white !default; -$label-font-family: $body-font-family !default; - -// -// @mixins -// -// We use this mixin to create a default label base. -@mixin label-base { - display: inline-block; - font-family: $label-font-family; - font-weight: $label-font-weight; - line-height: 1; - margin-bottom: auto; - position: relative; - text-align: center; - text-decoration: none; - white-space: nowrap; -} - -// @mixins -// -// We use this mixin to add label size styles. -// $padding - Used to determine label padding. Default: $label-padding || rem-calc(4 8 4) !default -// $text-size - Used to determine label text-size. Default: $text-size found in settings -@mixin label-size($padding:$label-padding, $text-size:$label-font-sizing) { - @if $padding { padding: $padding; } - @if $text-size { font-size: $text-size; } -} - -// @mixins -// -// We use this mixin to add label styles. -// $bg - Default: $primary-color (found in settings file) -// $radius - Default: false, Options: true, sets radius to $global-radius (found in settings file) -@mixin label-style($bg:$primary-color, $radius:false) { - - // We control which background color comes through - @if $bg { - - // This find the lightness percentage of the background color. - $bg-lightness: lightness($bg); - - background-color: $bg; - - // We control the text color for you based on the background color. - @if $bg-lightness < 70% { color: $label-font-color-alt; } - @else { color: $label-font-color; } - } - - // We use this to control the radius on labels. - @if $radius == true { @include radius($label-radius); } - @else if $radius { @include radius($radius); } - -} - -// @mixins -// -// We use this to add close buttons to alerts -// $padding - Default: $label-padding, -// $text-size - Default: $label-font-sizing, -// $bg - Default: $primary-color(found in settings file) -// $radius - Default: false, Options: true which sets radius to $global-radius (found in settings file) -@mixin label($padding:$label-padding, $text-size:$label-font-sizing, $bg:$primary-color, $radius:false) { - - @include label-base; - @include label-size($padding, $text-size); - @include label-style($bg, $radius); -} - -@include exports("label") { - @if $include-html-label-classes { - .label { - @include label-base; - @include label-size; - @include label-style; - - &.radius { @include label-style(false, true); } - &.round { @include label-style(false, $radius:1000px); } - - &.alert { @include label-style($alert-color); } - &.warning { @include label-style($warning-color); } - &.success { @include label-style($success-color); } - &.secondary { @include label-style($secondary-color); } - &.info { @include label-style($info-color); } - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_magellan.scss b/docs/themes/porter/assets/sass/foundation/components/_magellan.scss deleted file mode 100644 index b06a18b9c..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_magellan.scss +++ /dev/null @@ -1,34 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @variables -// -$include-html-magellan-classes: $include-html-classes !default; - -$magellan-bg: $white !default; -$magellan-padding: 10px !default; - -@include exports("magellan") { - @if $include-html-magellan-classes { - - #{data('magellan-expedition')}, #{data('magellan-expedition-clone')} { - background: $magellan-bg; - min-width: 100%; - padding: $magellan-padding; - z-index: 50; - - .sub-nav { - margin-bottom: 0; - dd { margin-bottom: 0; } - a { - line-height: 1.8em; - } - } - } - - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_offcanvas.scss b/docs/themes/porter/assets/sass/foundation/components/_offcanvas.scss deleted file mode 100644 index 567f4dc2a..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_offcanvas.scss +++ /dev/null @@ -1,608 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; -@import 'type'; - -// Off Canvas Tab Bar Variables -$include-html-off-canvas-classes: $include-html-classes !default; - -$tabbar-bg: $oil !default; -$tabbar-height: rem-calc(45) !default; -$tabbar-icon-width: $tabbar-height !default; -$tabbar-line-height: $tabbar-height !default; -$tabbar-color: $white !default; -$tabbar-middle-padding: 0 rem-calc(10) !default; - -// Off Canvas Divider Styles -$tabbar-left-section-border: solid 1px scale-color($tabbar-bg, $lightness: -50%) !default; -$tabbar-right-section-border: $tabbar-left-section-border; - - -// Off Canvas Tab Bar Headers -$tabbar-header-color: $white !default; -$tabbar-header-weight: $font-weight-bold !default; -$tabbar-header-line-height: $tabbar-height !default; -$tabbar-header-margin: 0 !default; - -// Off Canvas Menu Variables -$off-canvas-width: rem-calc(250) !default; -$off-canvas-height: rem-calc(300) !default; -$off-canvas-bg: $oil !default; -$off-canvas-bg-hover: scale-color($tabbar-bg, $lightness: -30%) !default; -$off-canvas-bg-active: scale-color($tabbar-bg, $lightness: -30%) !default; - -// Off Canvas Menu List Variables -$off-canvas-label-padding: .3rem rem-calc(15) !default; -$off-canvas-label-color: $aluminum !default; -$off-canvas-label-text-transform: uppercase !default; -$off-canvas-label-font-size: rem-calc(12) !default; -$off-canvas-label-font-weight: $font-weight-bold !default; -$off-canvas-label-bg: $tuatara !default; -$off-canvas-label-border-top: 1px solid scale-color($off-canvas-label-bg, $lightness: 14%) !default; -$off-canvas-label-border-bottom: none !default; -$off-canvas-label-margin:0 !default; -$off-canvas-link-padding: rem-calc(10, 15) !default; -$off-canvas-link-color: rgba($white, .7) !default; -$off-canvas-link-border-bottom: 1px solid scale-color($off-canvas-bg, $lightness: -25%) !default; -$off-canvas-back-bg: #444 !default; -$off-canvas-back-border-top: $off-canvas-label-border-top !default; -$off-canvas-back-border-bottom: $off-canvas-label-border-bottom !default; -$off-canvas-back-hover-bg: scale-color($off-canvas-back-bg, $lightness: -30%) !default; -$off-canvas-back-hover-border-top: 1px solid scale-color($off-canvas-label-bg, $lightness: 14%) !default; -$off-canvas-back-hover-border-bottom: none !default; - -// Off Canvas Menu Icon Variables -$tabbar-menu-icon-color: $white !default; -$tabbar-menu-icon-hover: scale-color($tabbar-menu-icon-color, $lightness: -30%) !default; - -$tabbar-menu-icon-text-indent: rem-calc(35) !default; -$tabbar-menu-icon-width: $tabbar-icon-width !default; -$tabbar-menu-icon-height: $tabbar-height !default; -$tabbar-menu-icon-padding: 0 !default; - -$tabbar-hamburger-icon-width: rem-calc(16) !default; -$tabbar-hamburger-icon-left: false !default; -$tabbar-hamburger-icon-top: false !default; -$tabbar-hamburger-icon-thickness: 1px !default; -$tabbar-hamburger-icon-gap: 6px !default; - -// Off Canvas Back-Link Overlay -$off-canvas-overlay-transition: background 300ms ease !default; -$off-canvas-overlay-cursor: pointer !default; -$off-canvas-overlay-box-shadow: -4px 0 4px rgba($black, .5), 4px 0 4px rgba($black, .5) !default; -$off-canvas-overlay-background: rgba($white, .2) !default; -$off-canvas-overlay-background-hover: rgba($white, .05) !default; - -// Transition Variables -$menu-slide: "transform 500ms ease" !default; - - -// MIXINS -// Remove transition flicker on phones -@mixin kill-flicker { - // -webkit-transform: translateZ(0x); - -webkit-backface-visibility: hidden; -} - -// Basic properties for the content wraps -@mixin wrap-base { - position: relative; - width: 100%; - height:100%; -} - -@mixin translate3d($tx, $ty, $tz) { - -webkit-transform: translate3d($tx, $ty, $tz); - -moz-transform: translate3d($tx, $ty, $tz); - -ms-transform: translate($tx, $ty); - -o-transform: translate3d($tx, $ty, $tz); - transform: translate3d($tx, $ty, $tz) -} - -// basic styles for off-canvas menu container -@mixin off-canvas-menu($position) { - @include kill-flicker; - * { @include kill-flicker; } - background: $off-canvas-bg; - bottom: 0; - box-sizing: content-box; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - overflow-x: hidden; - overflow-y: auto; - position: absolute; - transition: transform 500ms ease 0s; - width: $off-canvas-width; - z-index: 1001; - - @if $position == left { - @include translate3d(-100%,0,0); - left: 0; - top: 0; - } - @if $position == right { - @include translate3d(100%,0,0); - right: 0; - top: 0; - } - @if $position == top { - @include translate3d(0,-100%,0); - top: 0; - width: 100%; - height: $off-canvas-height; - } - @if $position == bottom { - @include translate3d(0,100%,0); - bottom: 0; - width: 100%; - height: $off-canvas-height; - } -} - -// OFF CANVAS WRAP -// Wrap visible content and prevent horizontal scroll bars -@mixin off-canvas-wrap { - @include kill-flicker; - @include wrap-base; - overflow-y: visible; - overflow-x: clip; - &.move-right, - &.move-left, - &.move-bottom, - &.move-top { min-height: 100%; -webkit-overflow-scrolling: touch; } -} - -// INNER WRAP -// Main content area that moves to reveal the off-canvas nav -@mixin inner-wrap { - // @include kill-flicker; - // removed for now till chrome fixes backface issue - @include wrap-base; - @include clearfix; - -webkit-transition: -webkit-#{$menu-slide}; - -moz-transition: -moz-#{$menu-slide}; - -ms-transition: -ms-#{$menu-slide}; - -o-transition: -o-#{$menu-slide}; - transition: #{$menu-slide}; -} - -// TAB BAR -// This is the tab bar base -@mixin tab-bar-base { - @include kill-flicker; - - // base styles - background: $tabbar-bg; - color: $tabbar-color; - height: $tabbar-height; - line-height: $tabbar-line-height; - - // make sure it's below the .exit-off-canvas link - position: relative; - // z-index: 999; - - // Typography - h1, h2, h3, h4, h5, h6 { - color: $tabbar-header-color; - font-weight: $tabbar-header-weight; - line-height: $tabbar-header-line-height; - margin: $tabbar-header-margin; - } - h1, h2, h3, h4 { font-size: $h5-font-size; } -} - -// SMALL SECTIONS -// These are small sections on the left and right that contain the off-canvas toggle buttons; -@mixin tabbar-small-section($position) { - height: $tabbar-height; - position: absolute; - top: 0; - width: $tabbar-icon-width; - @if $position == left { - border-right: $tabbar-left-section-border; - // box-shadow: 1px 0 0 scale-color($tabbar-bg, $lightness: 13%); - left: 0; - } - @if $position == right { - border-left: $tabbar-right-section-border; - // box-shadow: -1px 0 0 scale-color($tabbar-bg, $lightness: -50%); - right:0; - } -} - -@mixin tab-bar-section { - height: $tabbar-height; - padding: $tabbar-middle-padding; - position: absolute; - text-align: center; - top: 0; - &.left { text-align: left; } - &.right { text-align: right; } - - - // still need to make these non-presentational - &.left { - left: 0; - right: $tabbar-icon-width; - } - &.right { - left: $tabbar-icon-width; - right: 0; - } - &.middle { - left: $tabbar-icon-width; - right: $tabbar-icon-width; - } -} - -// OFF CANVAS LIST -// This is the list of links in the off-canvas menu -@mixin off-canvas-list { - list-style-type: none; - margin:0; - padding:0; - - li { - label { - background: $off-canvas-label-bg; - border-bottom: $off-canvas-label-border-bottom; - border-top: $off-canvas-label-border-top; - color: $off-canvas-label-color; - display: block; - font-size: $off-canvas-label-font-size; - font-weight: $off-canvas-label-font-weight; - margin: $off-canvas-label-margin; - padding: $off-canvas-label-padding; - text-transform: $off-canvas-label-text-transform; - } - a { - border-bottom: $off-canvas-link-border-bottom; - color: $off-canvas-link-color; - display: block; - padding: $off-canvas-link-padding; - transition: background 300ms ease; - &:hover { - background: $off-canvas-bg-hover; - } - &:active { - background: $off-canvas-bg-active; - } - } - } - -} - -// BACK LINK -// This is an overlay that, when clicked, will toggle off the off canvas menu -@mixin back-link { - @include kill-flicker; - - box-shadow: $off-canvas-overlay-box-shadow; - cursor: $off-canvas-overlay-cursor; - transition: $off-canvas-overlay-transition; - - // fill the screen - -webkit-tap-highlight-color: rgba(0,0,0,0); - background: $off-canvas-overlay-background; - bottom: 0; - display: block; - left: 0; - position: absolute; - right: 0; - top: 0; - z-index: 1002; - - @media #{$medium-up} { - &:hover { - background: $off-canvas-overlay-background-hover; - } - } -} - -// -// Off-Canvas Submenu Classes -// -@mixin off-canvas-submenu($position) { - @include kill-flicker; - * { @include kill-flicker; } - -webkit-overflow-scrolling: touch; - background: $off-canvas-bg; - bottom: 0; - box-sizing: content-box; - margin: 0; - overflow-x: hidden; - overflow-y: auto; - position: absolute; - top: 0; - width: $off-canvas-width; - height: $off-canvas-height; - z-index: 1002; - @if $position == left { - @include translate3d(-100%,0,0); - left: 0; - } - @if $position == right { - @include translate3d(100%,0,0); - right: 0; - } - @if $position == top { - @include translate3d(0,-100%,0); - top: 0; - width: 100%; - } - @if $position == bottom { - @include translate3d(0,100%,0); - bottom: 0; - width: 100%; - } - -webkit-transition: -webkit-#{$menu-slide}; - -moz-transition: -moz-#{$menu-slide}; - -ms-transition: -ms-#{$menu-slide}; - -o-transition: -o-#{$menu-slide}; - transition: #{$menu-slide}; - - //back button style like label - .back > a { - background: $off-canvas-back-bg; - border-bottom: $off-canvas-back-border-bottom; - border-top: $off-canvas-back-border-top; - color: $off-canvas-label-color; - font-weight: $off-canvas-label-font-weight; - padding: $off-canvas-label-padding; - text-transform: $off-canvas-label-text-transform; - - &:hover { - background: $off-canvas-back-hover-bg; - border-bottom: $off-canvas-back-hover-border-bottom; - border-top: $off-canvas-back-hover-border-top; - } - - margin: $off-canvas-label-margin; - @if $position == right { - @if $text-direction == rtl { - &:before { - @include icon-double-arrows($position: left); - } - } @else { - &:after { - @include icon-double-arrows($position: right); - } - } - } - @if $position == left { - @if $text-direction == rtl { - &:after { - @include icon-double-arrows($position: right); - } - } @else { - &:before { - @include icon-double-arrows($position: left); - } - } - } - } -} -//Left double angle quote or Right double angle quote chars -@mixin icon-double-arrows ($position) { - @if $position == left { - content: "\AB"; - @if $text-direction == rtl { - margin-left: .5rem; - } @else { - margin-right: .5rem; - } - } - @if $position == right { - content: "\BB"; - @if $text-direction == rtl { - margin-right: .5rem; - } @else { - margin-left: .5rem; - } - } - display: inline; -} - -// -// DEFAULT CLASSES -// -@include exports("offcanvas") { - @if $include-html-off-canvas-classes { - - .off-canvas-wrap { @include off-canvas-wrap; } - .inner-wrap { @include inner-wrap; } - - .tab-bar { @include tab-bar-base; } - - .left-small { @include tabbar-small-section($position: left); } - .right-small { @include tabbar-small-section($position: right); } - - .tab-bar-section { @include tab-bar-section; } - - // MENU BUTTON - // This is a little bonus. You don't need it for off canvas to work. Mixins to be written in the future. - .tab-bar .menu-icon { - color: $tabbar-menu-icon-color; - display: block; - height: $tabbar-menu-icon-height; - padding: $tabbar-menu-icon-padding; - position: relative; - text-indent: $tabbar-menu-icon-text-indent; - transform: translate3d(0,0,0); - width: $tabbar-menu-icon-width; - - // @include for the hamburger menu-icon - // - // Arguments as follows: ($width, $left, $top, $thickness, $gap, $color, $hover-color) - // $width - Width of hamburger icon in rem Default: $tabbar-hamburger-icon-width. - // $left - If false, icon will be centered horizontally || explicitly set value in rem Default: $tabbar-hamburger-icon-left= False - // $top - If false, icon will be centered vertically || explicitly set value in rem Default: = False - // $thickness - thickness of lines in hamburger icon, set value in px Default: $tabbar-hamburger-icon-thickness = 1px - // $gap - spacing between the lines in hamburger icon, set value in px Default: $tabbar-hamburger-icon-gap = 6px - // $color - icon color Default: $tabbar-menu-icon-color - // $hover-color - icon color when hovered Default: $tabbar-menu-icon-hover - // $offcanvas - Set to true - @include hamburger($tabbar-hamburger-icon-width, $tabbar-hamburger-icon-left, $tabbar-hamburger-icon-top, $tabbar-hamburger-icon-thickness, $tabbar-hamburger-icon-gap, $tabbar-menu-icon-color, $tabbar-menu-icon-hover, true) - } - - .left-off-canvas-menu { @include off-canvas-menu($position: left); } - .right-off-canvas-menu { @include off-canvas-menu($position: right); } - .top-off-canvas-menu { @include off-canvas-menu($position: top); } - .bottom-off-canvas-menu { @include off-canvas-menu($position: bottom); } - - ul.off-canvas-list { @include off-canvas-list; } - - - // ANIMATION CLASSES - // These classes are added with JS and trigger the actual animation. - .move-right { - > .inner-wrap { - @include translate3d($off-canvas-width,0,0); - } - .exit-off-canvas { @include back-link;} - } - - .move-left { - > .inner-wrap { - @include translate3d(-($off-canvas-width),0,0); - - } - .exit-off-canvas { @include back-link; } - } - .move-top { - > .inner-wrap { - @include translate3d(0,-($off-canvas-height),0); - - } - .exit-off-canvas { @include back-link; } - } - .move-bottom { - > .inner-wrap { - @include translate3d(0,($off-canvas-height),0); - - } - .exit-off-canvas { @include back-link; } - } - .offcanvas-overlap { - .left-off-canvas-menu, .right-off-canvas-menu, - .top-off-canvas-menu, .bottom-off-canvas-menu { - -ms-transform: none; - -webkit-transform: none; - -moz-transform: none; - -o-transform: none; - transform: none; - z-index: 1003; - } - .exit-off-canvas { @include back-link; } - } - .offcanvas-overlap-left { - .right-off-canvas-menu { - -ms-transform: none; - -webkit-transform: none; - -moz-transform: none; - -o-transform: none; - transform: none; - z-index: 1003; - } - .exit-off-canvas { @include back-link; } - } - .offcanvas-overlap-right { - .left-off-canvas-menu { - -ms-transform: none; - -webkit-transform: none; - -moz-transform: none; - -o-transform: none; - transform: none; - z-index: 1003; - } - .exit-off-canvas { @include back-link; } - } - .offcanvas-overlap-top { - .bottom-off-canvas-menu { - -ms-transform: none; - -webkit-transform: none; - -moz-transform: none; - -o-transform: none; - transform: none; - z-index: 1003; - } - .exit-off-canvas { @include back-link; } - } - .offcanvas-overlap-bottom { - .top-off-canvas-menu { - -ms-transform: none; - -webkit-transform: none; - -moz-transform: none; - -o-transform: none; - transform: none; - z-index: 1003; - } - .exit-off-canvas { @include back-link; } - } - - // Older browsers - .no-csstransforms { - .left-off-canvas-menu { left: -($off-canvas-width); } - .right-off-canvas-menu { right: -($off-canvas-width); } - .top-off-canvas-menu { top: -($off-canvas-height); } - .bottom-off-canvas-menu { bottom: -($off-canvas-height); } - - .move-left > .inner-wrap { right: $off-canvas-width; } - .move-right > .inner-wrap { left: $off-canvas-width; } - .move-top > .inner-wrap { right: $off-canvas-height; } - .move-bottom > .inner-wrap { left: $off-canvas-height; } - - - } - - .left-submenu { - @include off-canvas-submenu($position: left); - &.move-right, &.offcanvas-overlap-right, &.offcanvas-overlap { - @include translate3d(0%,0,0); - } - } - - .right-submenu { - @include off-canvas-submenu($position: right); - &.move-left, &.offcanvas-overlap-left, &.offcanvas-overlap { - @include translate3d(0%,0,0); - } - } - - .top-submenu { - @include off-canvas-submenu($position: top); - &.move-bottom, &.offcanvas-overlap-bottom, &.offcanvas-overlap { - @include translate3d(0,0%,0); - } - } - - .bottom-submenu { - @include off-canvas-submenu($position: bottom); - &.move-top, &.offcanvas-overlap-top, &.offcanvas-overlap { - @include translate3d(0,0%,0); - } - } - - @if $text-direction == rtl { - .left-off-canvas-menu ul.off-canvas-list li.has-submenu > a:before { - @include icon-double-arrows($position: left); - } - .right-off-canvas-menu ul.off-canvas-list li.has-submenu > a:after { - @include icon-double-arrows($position: right); - } - } @else { - .left-off-canvas-menu ul.off-canvas-list li.has-submenu > a:after { - @include icon-double-arrows($position: right); - } - .right-off-canvas-menu ul.off-canvas-list li.has-submenu > a:before { - @include icon-double-arrows($position: left); - } - } - - } -} - - - diff --git a/docs/themes/porter/assets/sass/foundation/components/_orbit.scss b/docs/themes/porter/assets/sass/foundation/components/_orbit.scss deleted file mode 100644 index dfd02d02f..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_orbit.scss +++ /dev/null @@ -1,388 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// @variables -// -$include-html-orbit-classes: $include-html-classes !default; - -// We use these to control the caption styles -$orbit-container-bg: none !default; -$orbit-caption-bg: rgba(51,51,51, .8) !default; -$orbit-caption-font-color: $white !default; -$orbit-caption-font-size: rem-calc(14) !default; -$orbit-caption-position: "bottom" !default; // Supported values: "bottom", "under" -$orbit-caption-padding: rem-calc(10 14) !default; -$orbit-caption-height: auto !default; - -// We use these to control the left/right nav styles -$orbit-nav-bg: transparent !default; -$orbit-nav-bg-hover: rgba(0,0,0,0.3) !default; -$orbit-nav-arrow-color: $white !default; -$orbit-nav-arrow-color-hover: $white !default; - -// We use these to control the timer styles -$orbit-timer-bg: rgba(255,255,255,0.3) !default; -$orbit-timer-show-progress-bar: true !default; - -// We use these to control the bullet nav styles -$orbit-bullet-nav-color: $iron !default; -$orbit-bullet-nav-color-active: $aluminum !default; -$orbit-bullet-radius: rem-calc(9) !default; - -// We use these to controls the style of slide numbers -$orbit-slide-number-bg: rgba(0,0,0,0) !default; -$orbit-slide-number-font-color: $white !default; -$orbit-slide-number-padding: rem-calc(5) !default; - -// Graceful Loading Wrapper and preloader -$wrapper-class: "slideshow-wrapper" !default; -$preloader-class: "preloader" !default; - -// Hide controls on small -$orbit-nav-hide-for-small: true !default; -$orbit-bullet-hide-for-small: true !default; -$orbit-timer-hide-for-small: true !default; - - -@include exports("orbit") { - @if $include-html-orbit-classes { - - @-webkit-keyframes rotate { - from { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - to { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } - } - - - @keyframes rotate { - from { - -webkit-transform: rotate(0deg); - -moz-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(0deg); - } - to { - -webkit-transform: rotate(360deg); - -moz-transform: rotate(360deg); - -ms-transform: rotate(360deg); - transform: rotate(360deg); - } - } - - /* Orbit Graceful Loading */ - .#{$wrapper-class} { - position: relative; - - ul { - // Prevent bullets showing before .orbit-container is loaded - list-style-type: none; - margin: 0; - - // Hide all list items - li, - li .orbit-caption { display: none; } - - // ...except for the first one - li:first-child { display: block; } - } - - .orbit-container { background-color: transparent; - - // Show images when .orbit-container is loaded - li { display: block; - - .orbit-caption { display: block; } - } - .orbit-bullets li { - display: inline-block; - } - } - - // Orbit preloader - .#{$preloader-class} { - @include radius(1000px); - animation-duration: 1.5s; - animation-iteration-count: infinite; - animation-name: rotate; - animation-timing-function: linear; - border-color: $charcoal $white; - border: solid 3px; - display: block; - height: 40px; - left: 50%; - margin-left: -20px; - margin-top: -20px; - position: absolute; - top: 50%; - width: 40px; - } - } - - - .orbit-container { - background: $orbit-container-bg; - overflow: hidden; - position: relative; - width: 100%; - - .orbit-slides-container { - list-style: none; - margin: 0; - padding: 0; - position: relative; - - // Prevents images (and captions) from disappearing after first rotation on Chrome for Android - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); - - img { display: block; max-width: 100%; } - - > * { - position: absolute; - top: 0; - width: 100%; - @if $text-direction == rtl { - margin-right: 100%; - } - @else { - margin-left: 100%; - } - - &:first-child { - @if $text-direction == rtl { - margin-right: 0; - } - @else { - margin-left: 0; - } - } - - .orbit-caption { - @if $orbit-caption-position == "bottom" { - bottom: 0; - position: absolute; - } @else if $orbit-caption-position == "under" { - position: relative; - } - - background-color: $orbit-caption-bg; - color: $orbit-caption-font-color; - font-size: $orbit-caption-font-size; - padding: $orbit-caption-padding; - width: 100%; - } - } - } - - .orbit-slide-number { - #{$default-float}: 10px; - background: $orbit-slide-number-bg; - color: $orbit-slide-number-font-color; - font-size: 12px; - position: absolute; - span { font-weight: 700; padding: $orbit-slide-number-padding;} - top: 10px; - z-index: 10; - } - - .orbit-timer { - - position: absolute; - top: 12px; - #{$opposite-direction}: 10px; - height: 6px; - width: 100px; - z-index: 10; - - - .orbit-progress { - @if $orbit-timer-show-progress-bar { - height: 3px; - background-color: $orbit-timer-bg; - display: block; - width: 0; - position: relative; - right: 20px; - top: 5px; - - } - } - - // Play button - & > span { - border: solid 4px $white; - border-bottom: none; - border-top: none; - display: none; - height: 14px; - position: absolute; - top: 0; - width: 11px; - #{$opposite-direction}: 0; - } - - // Pause button - &.paused { - & > span { - top: 0; - width: 11px; - height: 14px; - border: inset 8px; - border-left-style: solid; - border-color: transparent; - border-left-color: $white; - #{$opposite-direction}: -4px; - - &.dark { - border-left-color: $oil; - } - } - } - } - - - - &:hover .orbit-timer > span { display: block; } - - // Let's get those controls to be right in the center on each side - .orbit-prev, - .orbit-next { - background-color: $orbit-nav-bg; - color: white; - height: 60px; - line-height: 50px; - margin-top: -25px; - position: absolute; - text-indent: -9999px !important; - top: 45%; - width: 36px; - z-index: 10; - - &:hover { - background-color: $orbit-nav-bg-hover; - } - - & > span { - border: inset 10px; - display: block; - height: 0; - margin-top: -10px; - position: absolute; - top: 50%; - width: 0; - } - } - .orbit-prev { #{$default-float}: 0; - & > span { - border-#{$opposite-direction}-style: solid; - border-color: transparent; - border-#{$opposite-direction}-color: $orbit-nav-arrow-color; - } - &:hover > span { - border-#{$opposite-direction}-color: $orbit-nav-arrow-color-hover; - } - } - .orbit-next { #{$opposite-direction}: 0; - & > span { - border-color: transparent; - border-#{$default-float}-style: solid; - border-#{$default-float}-color: $orbit-nav-arrow-color; - #{$default-float}: 50%; - margin-#{$default-float}: -4px; - } - &:hover > span { - border-#{$default-float}-color: $orbit-nav-arrow-color-hover; - } - } - } - - .orbit-bullets-container { text-align: center; } - .orbit-bullets { - display: block; - float: none; - margin: 0 auto 30px auto; - overflow: hidden; - position: relative; - text-align: center; - top: 10px; - - li { - background: $orbit-bullet-nav-color; - cursor: pointer; - display: inline-block; - // float: $default-float; - float: none; - height: $orbit-bullet-radius; - margin-#{$opposite-direction}: 6px; - width: $orbit-bullet-radius; - - @include radius(1000px); - - &.active { - background: $orbit-bullet-nav-color-active; - } - - &:last-child { margin-#{$opposite-direction}: 0; } - } - } - - .touch { - .orbit-container { - .orbit-prev, - .orbit-next { display: none; } - } - - .orbit-bullets { display: none; } - } - - - @media #{$medium-up} { - - .touch { - .orbit-container { - .orbit-prev, - .orbit-next { display: inherit; } - } - - .orbit-bullets { display: block; } - } - - } - - @media #{$small-only} { - .orbit-stack-on-small { - .orbit-slides-container {height: auto !important;} - .orbit-slides-container > * { - margin:0 !important; - opacity: 1 !important; - position: relative; - } - - .orbit-slide-number { - display: none; - } - } - - @if $orbit-timer-hide-for-small { - .orbit-timer{display: none;} - } - @if $orbit-nav-hide-for-small { - .orbit-next,.orbit-prev{display: none;} - } - @if $orbit-bullet-hide-for-small { - .orbit-bullets{display: none;} - } - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_pagination.scss b/docs/themes/porter/assets/sass/foundation/components/_pagination.scss deleted file mode 100644 index aec81ae50..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_pagination.scss +++ /dev/null @@ -1,163 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @variables -// -$include-pagination-classes: $include-html-classes !default; - -// We use these to control the pagination container -$pagination-height: rem-calc(24) !default; -$pagination-margin: rem-calc(-5) !default; - -// We use these to set the list-item properties -$pagination-li-float: $default-float !default; -$pagination-li-height: rem-calc(24) !default; -$pagination-li-font-color: $jet !default; -$pagination-li-font-size: rem-calc(14) !default; -$pagination-li-margin: rem-calc(5) !default; - -// We use these for the pagination anchor links -$pagination-link-pad: rem-calc(1 10 1) !default; -$pagination-link-font-color: $aluminum !default; -$pagination-link-active-bg: scale-color($white, $lightness: -10%) !default; - -// We use these for disabled anchor links -$pagination-link-unavailable-cursor: default !default; -$pagination-link-unavailable-font-color: $aluminum !default; -$pagination-link-unavailable-bg-active: transparent !default; - -// We use these for currently selected anchor links -$pagination-link-current-background: $primary-color !default; -$pagination-link-current-font-color: $white !default; -$pagination-link-current-font-weight: $font-weight-bold !default; -$pagination-link-current-cursor: default !default; -$pagination-link-current-active-bg: $primary-color !default; - -// @mixins -// -// Style the pagination container. Currently only used when centering elements. -// $center - Default: false, Options: true -@mixin pagination-container($center:false) { - @if $center { text-align: center; } -} - -// @mixins -// Style unavailable list items -@mixin pagination-unavailable-item { - a, button { - cursor: $pagination-link-unavailable-cursor; - color: $pagination-link-unavailable-font-color; - pointer-events: none; - } - &:hover a, - & a:focus, - - &:hover button, - & button:focus - { background: $pagination-link-unavailable-bg-active; } -} -// @mixins -// Style the current list item. Do not assume that the current item has -// an anchor element. -// $has-anchor - Default: true, Options: false -@mixin pagination-current-item($has-anchor: true) { - @if $has-anchor { - a, button { - background: $pagination-link-current-background; - color: $pagination-link-current-font-color; - cursor: $pagination-link-current-cursor; - font-weight: $pagination-link-current-font-weight; - - &:hover, - &:focus { background: $pagination-link-current-active-bg; } - } - } @else { - background: $pagination-link-current-background; - color: $pagination-link-current-font-color; - cursor: $pagination-link-current-cursor; - font-weight: $pagination-link-current-font-weight; - height: auto; - padding: $pagination-link-pad; - @include radius; - - &:hover, - &:focus { background: $pagination-link-current-active-bg; } - } -} - -// @mixins -// -// We use this mixin to set the properties for the creating Foundation pagination -// $center - Left or center align the li elements. Default: false -// $base-style - Sets base styles for pagination. Default: true, Options: false -// $use-default-classes - Makes unavailable & current classes available for use. Default: true -@mixin pagination($center:false, $base-style:true, $use-default-classes:true) { - - @if $base-style { - display: block; - margin-#{$default-float}: $pagination-margin; - min-height: $pagination-height; - - li { - color: $pagination-li-font-color; - font-size: $pagination-li-font-size; - height: $pagination-li-height; - margin-#{$default-float}: $pagination-li-margin; - - a, button { - @include radius; - @include single-transition(background-color); - background: none; - color: $pagination-link-font-color; - display: block; - font-size: 1em; - font-weight: normal; - line-height: inherit; - padding: $pagination-link-pad; - } - - &:hover a, - a:focus, - &:hover button, - button:focus - { background: $pagination-link-active-bg; } - - @if $use-default-classes { - &.unavailable { @include pagination-unavailable-item(); } - &.current { @include pagination-current-item(); } - } - } - } - - // Left or center align the li elements - li { - @if $center { - display: inline-block; - float: none; - } @else { - display: block; - float: $pagination-li-float; - } - } -} - -@include exports("pagination") { - @if $include-pagination-classes { - ul.pagination { - @include pagination; - } - - /* Pagination centred wrapper */ - .pagination-centered { - @include pagination-container(true); - - ul.pagination { - @include pagination(true, false); - } - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_panels.scss b/docs/themes/porter/assets/sass/foundation/components/_panels.scss deleted file mode 100644 index 123ad9c52..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_panels.scss +++ /dev/null @@ -1,107 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @variables -// -$include-html-panel-classes: $include-html-classes !default; - -// We use these to control the background and border styles -$panel-bg: scale-color($white, $lightness: -5%) !default; -$panel-border-style: solid !default; -$panel-border-size: 1px !default; -$callout-panel-bg: scale-color($primary-color, $lightness: 94%) !default; - -// We use this % to control how much we darken things on hover -$panel-border-color: scale-color($panel-bg, $lightness: -11%) !default; - -// We use these to set default inner padding and bottom margin -$panel-margin-bottom: rem-calc(20) !default; -$panel-padding: rem-calc(20) !default; - -// We use these to set default font colors -$panel-font-color: $oil !default; -$panel-font-color-alt: $white !default; - -$panel-header-adjust: true !default; -$callout-panel-link-color: $primary-color !default; -$callout-panel-link-color-hover: scale-color($callout-panel-link-color, $lightness: -14%) !default; -// -// @mixins -// -// We use this mixin to create panels. -// $bg - Sets the panel background color. Default: $panel-pg || scale-color($white, $lightness: -5%) !default -// $padding - Sets the panel padding amount. Default: $panel-padding || rem-calc(20) -// $adjust - Sets the font color based on the darkness of the bg & resets header line-heights for panels. Default: $panel-header-adjust || true -@mixin panel($bg:$panel-bg, $padding:$panel-padding, $adjust:$panel-header-adjust, $border:true) { - - @if $bg { - $bg-lightness: lightness($bg); - - @if $border { - border-style: $panel-border-style; - border-width: $panel-border-size; - border-color: $panel-border-color; - } @else { - border-style: none; - border-width: 0; - } - - margin-bottom: $panel-margin-bottom; - padding: $padding; - - background: $bg; - @if $bg-lightness >= 50% { color: $panel-font-color; } - @else { color: $panel-font-color-alt; } - - // Respect the padding, fool. - > :first-child { margin-top: 0; } - > :last-child { margin-bottom: 0; } - - @if $adjust { - // We set the font color based on the darkness of the bg. - @if $bg-lightness >= 50% { - h1, h2, h3, h4, h5, h6, p, li, dl { color: $panel-font-color; } - } - @else { - h1, h2, h3, h4, h5, h6, p, li, dl { color: $panel-font-color-alt; } - } - - // reset header line-heights for panels - h1, h2, h3, h4, h5, h6 { - line-height: 1; margin-bottom: rem-calc(20) / 2; - &.subheader { line-height: 1.4; } - } - } - } -} - -@include exports("panel") { - @if $include-html-panel-classes { - - /* Panels */ - .panel { @include panel; - - &.callout { - @include panel($callout-panel-bg); - a:not(.button) { - color: $callout-panel-link-color; - - &:hover, - &:focus { - color: $callout-panel-link-color-hover; - } - } - } - - &.radius { - @include radius; - } - - } - - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_pricing-tables.scss b/docs/themes/porter/assets/sass/foundation/components/_pricing-tables.scss deleted file mode 100644 index 71b7b9c7e..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_pricing-tables.scss +++ /dev/null @@ -1,150 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @variables -// -$include-html-pricing-classes: $include-html-classes !default; - -// We use this to control the border color -$price-table-border: solid 1px $gainsboro !default; - -// We use this to control the bottom margin of the pricing table -$price-table-margin-bottom: rem-calc(20) !default; - -// We use these to control the title styles -$price-title-bg: $oil !default; -$price-title-padding: rem-calc(15 20) !default; -$price-title-align: center !default; -$price-title-color: $smoke !default; -$price-title-weight: $font-weight-normal !default; -$price-title-size: rem-calc(16) !default; -$price-title-font-family: $body-font-family !default; - -// We use these to control the price styles -$price-money-bg: $vapor !default; -$price-money-padding: rem-calc(15 20) !default; -$price-money-align: center !default; -$price-money-color: $oil !default; -$price-money-weight: $font-weight-normal !default; -$price-money-size: rem-calc(32) !default; -$price-money-font-family: $body-font-family !default; - - -// We use these to control the description styles -$price-bg: $white !default; -$price-desc-color: $monsoon !default; -$price-desc-padding: rem-calc(15) !default; -$price-desc-align: center !default; -$price-desc-font-size: rem-calc(12) !default; -$price-desc-weight: $font-weight-normal !default; -$price-desc-line-height: 1.4 !default; -$price-desc-bottom-border: dotted 1px $gainsboro !default; - -// We use these to control the list item styles -$price-item-color: $oil !default; -$price-item-padding: rem-calc(15) !default; -$price-item-align: center !default; -$price-item-font-size: rem-calc(14) !default; -$price-item-weight: $font-weight-normal !default; -$price-item-bottom-border: dotted 1px $gainsboro !default; - -// We use these to control the CTA area styles -$price-cta-bg: $white !default; -$price-cta-align: center !default; -$price-cta-padding: rem-calc(20 20 0) !default; - -// @mixins -// -// We use this to create the container element for the pricing tables -@mixin pricing-table-container { - border: $price-table-border; - margin-#{$default-float}: 0; - margin-bottom: $price-table-margin-bottom; - - & * { - list-style: none; - line-height: 1; - } -} -// @mixins -// -// We use this mixin to create the pricing table title styles -@mixin pricing-table-title { - background-color: $price-title-bg; - color: $price-title-color; - font-family: $price-title-font-family; - font-size: $price-title-size; - font-weight: $price-title-weight; - padding: $price-title-padding; - text-align: $price-title-align; -} - -// @mixins -// -// We use this mixin to control the pricing table price styles -@mixin pricing-table-price { - background-color: $price-money-bg; - color: $price-money-color; - font-family: $price-money-font-family; - font-size: $price-money-size; - font-weight: $price-money-weight; - padding: $price-money-padding; - text-align: $price-money-align; -} - -// @mixins -// -// We use this mixin to create the description styles for the pricing table -@mixin pricing-table-description { - background-color: $price-bg; - border-bottom: $price-desc-bottom-border; - color: $price-desc-color; - font-size: $price-desc-font-size; - font-weight: $price-desc-weight; - line-height: $price-desc-line-height; - padding: $price-desc-padding; - text-align: $price-desc-align; -} - -// @mixins -// -// We use this mixin to style the bullet items in the pricing table -@mixin pricing-table-bullet { - background-color: $price-bg; - border-bottom: $price-item-bottom-border; - color: $price-item-color; - font-size: $price-item-font-size; - font-weight: $price-item-weight; - padding: $price-item-padding; - text-align: $price-item-align; -} - -// @mixins -// -// We use this mixin to style the CTA area of the pricing tables -@mixin pricing-table-cta { - background-color: $price-cta-bg; - padding: $price-cta-padding; - text-align: $price-cta-align; -} - -@include exports("pricing-table") { - @if $include-html-pricing-classes { - - /* Pricing Tables */ - .pricing-table { - @include pricing-table-container; - - .title { @include pricing-table-title; } - .price { @include pricing-table-price; } - .description { @include pricing-table-description; } - .bullet-item { @include pricing-table-bullet; } - .cta-button { @include pricing-table-cta; } - } - - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_progress-bars.scss b/docs/themes/porter/assets/sass/foundation/components/_progress-bars.scss deleted file mode 100644 index 65af4cdec..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_progress-bars.scss +++ /dev/null @@ -1,85 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @variables -// -$include-html-media-classes: $include-html-classes !default; - -// We use this to set the progress bar height -$progress-bar-height: rem-calc(25) !default; -$progress-bar-color: $vapor !default; - -// We use these to control the border styles -$progress-bar-border-color: scale-color($white, $lightness: 20%) !default; -$progress-bar-border-size: 1px !default; -$progress-bar-border-style: solid !default; -$progress-bar-border-radius: $global-radius !default; - -// We use these to control the margin & padding -$progress-bar-pad: rem-calc(2) !default; -$progress-bar-margin-bottom: rem-calc(10) !default; - -// We use these to set the meter colors -$progress-meter-color: $primary-color !default; -$progress-meter-secondary-color: $secondary-color !default; -$progress-meter-success-color: $success-color !default; -$progress-meter-alert-color: $alert-color !default; - -// @mixins -// -// We use this to set up the progress bar container -@mixin progress-container { - background-color: $progress-bar-color; - border: $progress-bar-border-size $progress-bar-border-style $progress-bar-border-color; - height: $progress-bar-height; - margin-bottom: $progress-bar-margin-bottom; - padding: $progress-bar-pad; -} - -// @mixins -// -// $bg - Default: $progress-meter-color || $primary-color -@mixin progress-meter($bg:$progress-meter-color) { - background: $bg; - display: block; - height: 100%; - float: left; - width: 0%; -} - - -@include exports("progress-bar") { - @if $include-html-media-classes { - - /* Progress Bar */ - .progress { - @include progress-container; - - // Meter - .meter { - @include progress-meter; - - &.secondary { @include progress-meter($bg:$progress-meter-secondary-color); } - &.success { @include progress-meter($bg:$progress-meter-success-color); } - &.alert { @include progress-meter($bg:$progress-meter-alert-color); } - } - &.secondary .meter { @include progress-meter($bg:$progress-meter-secondary-color); } - &.success .meter { @include progress-meter($bg:$progress-meter-success-color); } - &.alert .meter { @include progress-meter($bg:$progress-meter-alert-color); } - - &.radius { @include radius($progress-bar-border-radius); - .meter { @include radius($progress-bar-border-radius - 1); } - } - - &.round { @include radius(1000px); - .meter { @include radius(999px); } - } - - } - - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_range-slider.scss b/docs/themes/porter/assets/sass/foundation/components/_range-slider.scss deleted file mode 100644 index 1a3521847..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_range-slider.scss +++ /dev/null @@ -1,177 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @name _range-slider.scss -// @dependencies _global.scss -// - -// -// @variables -// - -$include-html-range-slider-classes: $include-html-classes !default; - -// These variables define the slider bar styles -$range-slider-bar-width: 100% !default; -$range-slider-bar-height: rem-calc(16) !default; - -$range-slider-bar-border-width: 1px !default; -$range-slider-bar-border-style: solid !default; -$range-slider-bar-border-color: $gainsboro !default; -$range-slider-radius: $global-radius !default; -$range-slider-round: $global-rounded !default; -$range-slider-bar-bg-color: $ghost !default; -$range-slider-active-segment-bg-color: scale-color($secondary-color, $lightness: -1%) !default; - -// Vertical bar styles -$range-slider-vertical-bar-width: rem-calc(16) !default; -$range-slider-vertical-bar-height: rem-calc(200) !default; - -// These variables define the slider handle styles -$range-slider-handle-width: rem-calc(32) !default; -$range-slider-handle-height: rem-calc(22) !default; -$range-slider-handle-position-top: rem-calc(-5) !default; -$range-slider-handle-bg-color: $primary-color !default; -$range-slider-handle-border-width: 1px !default; -$range-slider-handle-border-style: solid !default; -$range-slider-handle-border-color: none !default; -$range-slider-handle-radius: $global-radius !default; -$range-slider-handle-round: $global-rounded !default; -$range-slider-handle-bg-hover-color: scale-color($primary-color, $lightness: -12%) !default; -$range-slider-handle-cursor: pointer !default; - -$range-slider-disabled-opacity: .7 !default; -$range-slider-disabled-cursor: $cursor-disabled-value !default; - -// -// @mixins -// - -@mixin range-slider-bar-base($vertical: false) { - border: $range-slider-bar-border-width $range-slider-bar-border-style $range-slider-bar-border-color; - margin: rem-calc(20 0); - position: relative; - -ms-touch-action: none; - touch-action: none; - @if $vertical == true { - display: inline-block; - height: $range-slider-vertical-bar-height; - width: $range-slider-vertical-bar-width; - } @else { - display: block; - height: $range-slider-bar-height; - width: $range-slider-bar-width; - } -} -@mixin range-slider-bar-style( - $bg: true, - $radius: false, - $round: false, - $disabled: false) { - @if $bg == true { background: $range-slider-bar-bg-color; } - @if $radius == true { @include radius($range-slider-radius); } - @if $round == true { @include radius($range-slider-round); } - @if $disabled == true { - cursor: $range-slider-disabled-cursor; - opacity: $range-slider-disabled-opacity; - } -} - -@mixin range-slider-bar( - $bg: $range-slider-bar-bg-color, - $radius:false) { - @include range-slider-bar-base; - @include range-slider-bar-style; -} - -@mixin range-slider-handle-base() { - border: $range-slider-handle-border-width $range-slider-handle-border-style $range-slider-handle-border-color; - cursor: $range-slider-handle-cursor; - display: inline-block; - height: $range-slider-handle-height; - position: absolute; - top: $range-slider-handle-position-top; - width: $range-slider-handle-width; - z-index: 1; - - // This removes the 300ms touch delay on Windows 8 - -ms-touch-action: manipulation; - touch-action: manipulation; -} - -@mixin range-slider-handle-style( - $bg: true, - $radius: false, - $round: false, - $disabled: false) { - @if $bg == true { background: $range-slider-handle-bg-color; } - @if $radius == true { @include radius($range-slider-radius); } - @if $round == true { @include radius($range-slider-round); } - @if $disabled == true { - cursor: $cursor-default-value; - opacity: $range-slider-disabled-opacity; - } - &:hover { - background: $range-slider-handle-bg-hover-color; - } -} - -@mixin range-slider-handle() { - @include range-slider-handle-base; - @include range-slider-handle-style; -} - -// CSS Generation -@include exports("range-slider-bar") { - @if $include-html-range-slider-classes { - .range-slider { - @include range-slider-bar-base; - @include range-slider-bar-style($bg:true, $radius:false); - &.vertical-range { - @include range-slider-bar-base($vertical: true); - .range-slider-handle { - bottom: -($range-slider-vertical-bar-height - $range-slider-handle-width); - margin-#{$default-float}: -($range-slider-handle-width / 4); - margin-top: 0; - position: absolute; - } - .range-slider-active-segment { - border-bottom-left-radius: inherit; - border-bottom-right-radius: inherit; - border-top-left-radius: initial; - bottom: 0; - height: auto; - width: $range-slider-bar-height - rem-calc((strip-unit($range-slider-bar-border-width) * 2)); - } - } - &.radius { - @include range-slider-bar-style($radius:true); - .range-slider-handle { @include range-slider-handle-style($radius: true); } - } - &.round { - @include range-slider-bar-style($round:true); - .range-slider-handle { @include range-slider-handle-style($round: true); } - } - &.disabled, &[disabled] { - @include range-slider-bar-style($disabled:true); - .range-slider-handle { @include range-slider-handle-style($disabled: true); } - } - } - .range-slider-active-segment { - background: $range-slider-active-segment-bg-color; - border-bottom-left-radius: inherit; - border-top-left-radius: inherit; - display: inline-block; - height: $range-slider-bar-height - rem-calc((strip-unit($range-slider-bar-border-width) * 2)); - position: absolute; - } - .range-slider-handle { - @include range-slider-handle-base; - @include range-slider-handle-style($bg:true, $radius: false); - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_reveal.scss b/docs/themes/porter/assets/sass/foundation/components/_reveal.scss deleted file mode 100644 index 508bde91d..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_reveal.scss +++ /dev/null @@ -1,212 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; -@import 'grid'; - -// -// @name _reveal.scss -// @dependencies _global.scss -// - -$include-html-reveal-classes: $include-html-classes !default; - -// We use these to control the style of the reveal overlay. -$reveal-overlay-bg: rgba($black, .45) !default; -$reveal-overlay-bg-old: $black !default; - -// We use these to control the style of the modal itself. -$reveal-modal-bg: $white !default; -$reveal-position-top: rem-calc(100) !default; -$reveal-default-width: 80% !default; -$reveal-max-width: $row-width !default; -$reveal-modal-padding: rem-calc(30) !default; -$reveal-box-shadow: 0 0 10px rgba($black,.4) !default; - -// We use these to style the reveal close button -$reveal-close-font-size: rem-calc(40) !default; -$reveal-close-top: rem-calc(10) !default; -$reveal-close-side: rem-calc(22) !default; -$reveal-close-color: $base !default; -$reveal-close-weight: $font-weight-bold !default; - -// We use this to set the default radius used throughout the core. -$reveal-radius: $global-radius !default; -$reveal-round: $global-rounded !default; - -// We use these to control the modal border -$reveal-border-style: solid !default; -$reveal-border-width: 1px !default; -$reveal-border-color: $steel !default; - -$reveal-modal-class: "reveal-modal" !default; -$close-reveal-modal-class: "close-reveal-modal" !default; - -// Set base z-index -$z-index-base: 1005; - -// -// @mixins -// - -// We use this to create the reveal background overlay styles -@mixin reveal-bg( $include-z-index-value: true ) { - // position: absolute; // allows modal background to extend beyond window position - background: $reveal-overlay-bg-old; // Autoprefixer should be used to avoid such variables needed when Foundation for Sites can do so in the near future. - background: $reveal-overlay-bg; - bottom: 0; - display: none; - left: 0; - position: fixed; - right: 0; - top: 0; - z-index: if( $include-z-index-value, $z-index-base - 1, auto ); - #{$default-float}: 0; -} - -// We use this mixin to create the structure of a reveal modal -// -// $base-style - Provides reveal base styles, can be set to false to override. Default: true, Options: false -// $width - Sets reveal width Default: $reveal-default-width || 80% -// -@mixin reveal-modal-base( $base-style: true, $width:$reveal-default-width, $max-width:$reveal-max-width, $border-radius: $reveal-radius) { - @if $base-style { - border-radius: $border-radius; - display: none; - position: absolute; - top:0; - visibility: hidden; - width: 100%; - z-index: $z-index-base; - #{$default-float}: 0; - - @media #{$small-only} { - min-height:100vh; - } - - // Make sure rows don't have a min-width on them - .column, .columns { min-width: 0; } - - // Get rid of margin from first and last element inside modal - > :first-child { margin-top: 0; } - - > :last-child { margin-bottom: 0; } - } - - @if $width { - @media #{$medium-up} { - left: 0; - margin: 0 auto; - max-width: $max-width; - right: 0; - width: $width; - } - } -} - -// We use this to style the reveal modal defaults -// -// $bg - Sets background color of reveal modal. Default: $reveal-modal-bg || $white -// $padding - Padding to apply to reveal modal. Default: $reveal-modal-padding. -// $border - Choose whether reveal uses a border. Default: true, Options: false -// $border-style - Set reveal border style. Default: $reveal-border-style || solid -// $border-width - Width of border (i.e. 1px). Default: $reveal-border-width. -// $border-color - Color of border. Default: $reveal-border-color. -// $box-shadow - Choose whether or not to include the default box-shadow. Default: true, Options: false -// $radius - If true, set to modal radius which is $global-radius || explicitly set radius amount in px (ex. $radius:10px). Default: false -// $top-offset - Default: $reveal-position-top || 50px -@mixin reveal-modal-style( - $bg:false, - $padding:false, - $border:false, - $border-style:$reveal-border-style, - $border-width:$reveal-border-width, - $border-color:$reveal-border-color, - $box-shadow:false, - $radius:false, - $top-offset:false) { - - @if $bg { background-color: $bg; } - @if $padding != false { padding: $padding; } - - @if $border { border: $border-style $border-width $border-color; } - - // We can choose whether or not to include the default box-shadow. - @if $box-shadow { - box-shadow: $reveal-box-shadow; - } - @else{ - box-shadow: none; - } - - // We can control how much radius is used on the modal - @if $radius == true { @include radius($reveal-radius); } - @else if $radius { @include radius($radius); } - - @if $top-offset { - @media #{$medium-up} { - top: $top-offset; - } - } -} - -// We use this to create a close button for the reveal modal -// -// $color - Default: $reveal-close-color || $base -@mixin reveal-close($color:$reveal-close-color) { - color: $color; - cursor: $cursor-pointer-value; - font-size: $reveal-close-font-size; - font-weight: $reveal-close-weight; - line-height: 1; - position: absolute; - top: $reveal-close-top; - #{$opposite-direction}: $reveal-close-side; -} - -@include exports("reveal") { - @if $include-html-reveal-classes { - - // Reveal Modals - .reveal-modal-bg { @include reveal-bg; } - - .#{$reveal-modal-class} { - @include reveal-modal-base; - @include reveal-modal-style( - $bg:$reveal-modal-bg, - $padding:$reveal-modal-padding, - $border:true, - $box-shadow:true, - $radius:false, - $top-offset:$reveal-position-top - ); - - &.radius { @include reveal-modal-style($radius:true); } - &.round { @include reveal-modal-style($radius:$reveal-round); } - &.collapse { @include reveal-modal-style($padding:0); } - &.tiny { @include reveal-modal-base(false, 30%); } - &.small { @include reveal-modal-base(false, 40%); } - &.medium { @include reveal-modal-base(false, 60%); } - &.large { @include reveal-modal-base(false, 70%); } - &.xlarge { @include reveal-modal-base(false, 95%); } - &.full { - @include reveal-modal-base(false, 100%); - height: 100vh; - height:100%; - left:0; - margin-left: 0 !important; - max-width: none !important; - min-height:100vh; - top:0; - } - - // Modals pushed to back - &.toback { - z-index: $z-index-base - 2; - } - - .#{$close-reveal-modal-class} { @include reveal-close; } - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_side-nav.scss b/docs/themes/porter/assets/sass/foundation/components/_side-nav.scss deleted file mode 100644 index ba74a53a9..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_side-nav.scss +++ /dev/null @@ -1,120 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @variables -// - -$include-html-nav-classes: $include-html-classes !default; - -// We use this to control padding. -$side-nav-padding: rem-calc(14 0) !default; - -// We use these to control list styles. -$side-nav-list-type: none !default; -$side-nav-list-position: outside !default; -$side-nav-list-margin: rem-calc(0 0 7 0) !default; - -// We use these to control link styles. -$side-nav-link-color: $primary-color !default; -$side-nav-link-color-active: scale-color($side-nav-link-color, $lightness: 30%) !default; -$side-nav-link-color-hover: scale-color($side-nav-link-color, $lightness: 30%) !default; -$side-nav-link-bg-hover: hsla(0, 0, 0, .025) !default; -$side-nav-link-margin: 0 !default; -$side-nav-link-padding: rem-calc(7 14) !default; -$side-nav-font-size: rem-calc(14) !default; -$side-nav-font-weight: $font-weight-normal !default; -$side-nav-font-weight-active: $side-nav-font-weight !default; -$side-nav-font-family: $body-font-family !default; -$side-nav-font-family-active: $side-nav-font-family !default; - -// We use these to control heading styles. -$side-nav-heading-color: $side-nav-link-color !default; -$side-nav-heading-font-size: $side-nav-font-size !default; -$side-nav-heading-font-weight: bold !default; -$side-nav-heading-text-transform: uppercase !default; - -// We use these to control border styles -$side-nav-divider-size: 1px !default; -$side-nav-divider-style: solid !default; -$side-nav-divider-color: scale-color($white, $lightness: -10%) !default; - - -// -// @mixins -// - - -// We use this to style the side-nav -// -// $divider-color - Border color of divider. Default: $side-nav-divider-color. -// $font-size - Font size of nav items. Default: $side-nav-font-size. -// $link-color - Color of navigation links. Default: $side-nav-link-color. -// $link-color-hover - Color of navigation links when hovered. Default: $side-nav-link-color-hover. -@mixin side-nav( - $divider-color:$side-nav-divider-color, - $font-size:$side-nav-font-size, - $link-color:$side-nav-link-color, - $link-color-active:$side-nav-link-color-active, - $link-color-hover:$side-nav-link-color-hover, - $link-bg-hover:$side-nav-link-bg-hover) { - display: block; - font-family: $side-nav-font-family; - list-style-position: $side-nav-list-position; - list-style-type: $side-nav-list-type; - margin: 0; - padding: $side-nav-padding; - - li { - font-size: $font-size; - font-weight: $side-nav-font-weight; - margin: $side-nav-list-margin; - - a:not(.button) { - color: $link-color; - display: block; - margin: $side-nav-link-margin; - padding: $side-nav-link-padding; - &:hover, - &:focus { - background: $link-bg-hover; - color: $link-color-hover; - } - &:active { - color: $link-color-active; - } - } - - &.active > a:first-child:not(.button) { - color: $side-nav-link-color-active; - font-family: $side-nav-font-family-active; - font-weight: $side-nav-font-weight-active; - } - - &.divider { - border-top: $side-nav-divider-size $side-nav-divider-style; - height: 0; - list-style: none; - padding: 0; - border-top-color: $divider-color; - } - - &.heading { - color: $side-nav-heading-color; - font: { - size: $side-nav-heading-font-size; - weight: $side-nav-heading-font-weight; - } - text-transform: $side-nav-heading-text-transform; - } - } -} - -@include exports("side-nav") { - @if $include-html-nav-classes { - .side-nav {@include side-nav;} - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_split-buttons.scss b/docs/themes/porter/assets/sass/foundation/components/_split-buttons.scss deleted file mode 100644 index 7e8a4e30c..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_split-buttons.scss +++ /dev/null @@ -1,203 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; -@import 'buttons'; -@import 'dropdown-buttons'; - -// -// @name _split-buttons.scss -// @dependencies _buttons.scss, _global.scss -// - -// -// @variables -// - -$include-html-button-classes: $include-html-classes !default; - -// We use these to control different shared styles for Split Buttons -$split-button-function-factor: 10% !default; -$split-button-pip-color: $white !default; -$split-button-pip-color-alt: $oil !default; -$split-button-active-bg-tint: rgba(0,0,0,0.1) !default; -$split-button-span-border-color: rgba(255,255,255,0.5) !default; - -// We use these to control tiny split buttons -$split-button-padding-tny: $button-pip-tny * 10 !default; -$split-button-span-width-tny: $button-pip-tny * 6 !default; -$split-button-pip-size-tny: $button-pip-tny !default; -$split-button-pip-top-tny: $button-pip-tny * 2 !default; -$split-button-pip-default-float-tny: rem-calc(-6) !default; - -// We use these to control small split buttons -$split-button-padding-sml: $button-pip-sml * 10 !default; -$split-button-span-width-sml: $button-pip-sml * 6 !default; -$split-button-pip-size-sml: $button-pip-sml !default; -$split-button-pip-top-sml: $button-pip-sml * 1.5 !default; -$split-button-pip-default-float-sml: rem-calc(-6) !default; - -// We use these to control medium split buttons -$split-button-padding-med: $button-pip-med * 9 !default; -$split-button-span-width-med: $button-pip-med * 5.5 !default; -$split-button-pip-size-med: $button-pip-med - rem-calc(3) !default; -$split-button-pip-top-med: $button-pip-med * 1.5 !default; -$split-button-pip-default-float-med: rem-calc(-6) !default; - -// We use these to control large split buttons -$split-button-padding-lrg: $button-pip-lrg * 8 !default; -$split-button-span-width-lrg: $button-pip-lrg * 5 !default; -$split-button-pip-size-lrg: $button-pip-lrg - rem-calc(6) !default; -$split-button-pip-top-lrg: $button-pip-lrg + rem-calc(5) !default; -$split-button-pip-default-float-lrg: rem-calc(-6) !default; - - -// -// @mixins -// - -// We use this mixin to create split buttons that build upon the button mixins -// -// $padding - Type of padding to apply. Default: medium. Options: tiny, small, medium, large. -// $pip-color - Color of the triangle. Default: $split-button-pip-color. -// $span-border - Border color of button divider. Default: $split-button-span-border-color. -// $base-style - Apply base style to split button. Default: true. -@mixin split-button( - $padding:medium, - $pip-color:$split-button-pip-color, - $span-border:$split-button-span-border-color, - $base-style:true) { - - // With this, we can control whether or not the base styles come through. - @if $base-style { - position: relative; - - // Styling for the split arrow clickable area - span { - display: block; - height: 100%; - position: absolute; - #{$opposite-direction}: 0; - top: 0; - border-#{$default-float}: solid 1px; - - // Building the triangle pip indicator - &:after { - position: absolute; - content: ""; - width: 0; - height: 0; - display: block; - border-style: inset; - top: 50%; - #{$default-float}: 50%; - } - - &:active { background-color: $split-button-active-bg-tint; } - } - } - - // Control the border color for the span area of the split button - @if $span-border { - span { - border-#{$default-float}-color: $span-border; - } - } - - // Style of the button and clickable area for tiny sizes - @if $padding == tiny { - padding-#{$opposite-direction}: $split-button-padding-tny; - - span { width: $split-button-span-width-tny; - &:after { - border-top-style: solid; - border-width: $split-button-pip-size-tny; - margin-#{$default-float}: $split-button-pip-default-float-tny; - top: 48%; - } - } - } - - // Style of the button and clickable area for small sizes - @else if $padding == small { - padding-#{$opposite-direction}: $split-button-padding-sml; - - span { width: $split-button-span-width-sml; - &:after { - border-top-style: solid; - border-width: $split-button-pip-size-sml; - margin-#{$default-float}: $split-button-pip-default-float-sml; - top: 48%; - } - } - } - - // Style of the button and clickable area for default (medium) sizes - @else if $padding == medium { - padding-#{$opposite-direction}: $split-button-padding-med; - - span { width: $split-button-span-width-med; - &:after { - border-top-style: solid; - border-width: $split-button-pip-size-med; - margin-#{$default-float}: $split-button-pip-default-float-med; - top: 48%; - } - } - } - - // Style of the button and clickable area for large sizes - @else if $padding == large { - padding-#{$opposite-direction}: $split-button-padding-lrg; - - span { width: $split-button-span-width-lrg; - &:after { - border-top-style: solid; - border-width: $split-button-pip-size-lrg; - margin-#{$default-float}: $split-button-pip-default-float-lrg; - top: 48%; - } - } - } - - // Control the color of the triangle pip - @if $pip-color { - span:after { border-color: $pip-color transparent transparent transparent; } - } -} - -@include exports("split-button") { - @if $include-html-button-classes { - - .split.button { @include split-button; - - &.secondary { @include split-button(false, $split-button-pip-color, $split-button-span-border-color, false); } - &.alert { @include split-button(false, false, $split-button-span-border-color, false); } - &.success { @include split-button(false, false, $split-button-span-border-color, false); } - - &.tiny { @include split-button(tiny, false, false, false); } - &.small { @include split-button(small, false, false, false); } - &.large { @include split-button(large, false, false, false); } - &.expand { padding-left: 2rem; } - - &.secondary { @include split-button(false, $split-button-pip-color-alt, false, false); } - - &.radius span { @include side-radius($opposite-direction, $global-radius); } - &.round span { @include side-radius($opposite-direction, 1000px); } - &.no-pip{ - span:before{ border-style:none; } - span:after{ border-style:none; } - span>i{ - display: block; - left: 50%; - margin-left: -0.28889em; - margin-top: -0.48889em; - position: absolute; - top: 50%; - } - } - } - - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_sub-nav.scss b/docs/themes/porter/assets/sass/foundation/components/_sub-nav.scss deleted file mode 100644 index 279b6356f..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_sub-nav.scss +++ /dev/null @@ -1,125 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @name _sub-nav.scss -// @dependencies _global.scss -// - -// -// @variables -// - -$include-html-nav-classes: $include-html-classes !default; - -// We use these to control margin and padding -$sub-nav-list-margin: rem-calc(-4 0 18) !default; -$sub-nav-list-padding-top: rem-calc(4) !default; - -// We use this to control the definition -$sub-nav-font-family: $body-font-family !default; -$sub-nav-font-size: rem-calc(14) !default; -$sub-nav-font-color: $aluminum !default; -$sub-nav-font-weight: $font-weight-normal !default; -$sub-nav-text-decoration: none !default; -$sub-nav-padding: rem-calc(3 16) !default; -$sub-nav-border-radius: 3px !default; -$sub-nav-font-color-hover: scale-color($sub-nav-font-color, $lightness: -25%) !default; - - -// We use these to control the active item styles - -$sub-nav-active-font-weight: $font-weight-normal !default; -$sub-nav-active-bg: $primary-color !default; -$sub-nav-active-bg-hover: scale-color($sub-nav-active-bg, $lightness: -14%) !default; -$sub-nav-active-color: $white !default; -$sub-nav-active-padding: $sub-nav-padding !default; -$sub-nav-active-cursor: default !default; - -$sub-nav-item-divider: "" !default; -$sub-nav-item-divider-margin: rem-calc(12) !default; - -// -// @mixins -// - - -// Create a sub-nav item -// -// $font-color - Font color. Default: $sub-nav-font-color. -// $font-size - Font size. Default: $sub-nav-font-size. -// $active-bg - Background of active nav item. Default: $sub-nav-active-bg. -// $active-bg-hover - Background of active nav item, when hovered. Default: $sub-nav-active-bg-hover. -@mixin sub-nav( - $font-color: $sub-nav-font-color, - $font-size: $sub-nav-font-size, - $active-bg: $sub-nav-active-bg, - $active-bg-hover: $sub-nav-active-bg-hover) { - display: block; - margin: $sub-nav-list-margin; - overflow: hidden; - padding-top: $sub-nav-list-padding-top; - width: auto; - - dt { - text-transform: uppercase; - } - - dt, - dd, - li { - color: $font-color; - float: $default-float; - font-family: $sub-nav-font-family; - font-size: $font-size; - font-weight: $sub-nav-font-weight; - margin-#{$default-float}: rem-calc(16); - margin-bottom: 0; - - a { - color: $sub-nav-font-color; - padding: $sub-nav-padding; - text-decoration: $sub-nav-text-decoration; - - &:hover { - color: $sub-nav-font-color-hover; - } - } - - &.active a { - @include radius($sub-nav-border-radius); - background: $active-bg; - color: $sub-nav-active-color; - cursor: $sub-nav-active-cursor; - font-weight: $sub-nav-active-font-weight; - padding: $sub-nav-active-padding; - - &:hover { - background: $active-bg-hover; - } - } - - @if $sub-nav-item-divider != "" { - margin-#{$default-float}: 0; - - &:before { - content: "#{$sub-nav-item-divider}"; - margin: 0 $sub-nav-item-divider-margin; - } - - &:first-child:before { - content: ""; - margin: 0; - } - } - } -} - -@include exports("sub-nav") { - @if $include-html-nav-classes { - .sub-nav { @include sub-nav; } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_switches.scss b/docs/themes/porter/assets/sass/foundation/components/_switches.scss deleted file mode 100644 index 883d9ad71..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_switches.scss +++ /dev/null @@ -1,241 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @name -// @dependencies _global.scss -// - -// -// @variables -// - -$include-html-form-classes: $include-html-classes !default; - -// Controlling background color for the switch container -$switch-bg: $gainsboro !default; - -// We use these to control the switch heights for our default classes -$switch-height-tny: 1.5rem !default; -$switch-height-sml: 1.75rem !default; -$switch-height-med: 2rem !default; -$switch-height-lrg: 2.5rem !default; -$switch-bottom-margin: 1.5rem !default; - -// We use these to style the switch-paddle -$switch-paddle-bg: $white !default; -$switch-paddle-transition-speed: .15s !default; -$switch-paddle-transition-ease: ease-out !default; -$switch-active-color: $primary-color !default; - - -// -// @mixins -// - -// We use this mixin to create the base styles for our switch element. -// -// $transition-speed - Time in ms for switch to toggle. Default: $switch-paddle-transition-speed. -// $transition-ease - Easing function to use for animation (i.e. ease-out). Default: $switch-paddle-transition-ease. -@mixin switch-base( - $transition-speed:$switch-paddle-transition-speed, - $transition-ease:$switch-paddle-transition-ease) { - - border: none; - margin-bottom: $switch-bottom-margin; - outline: 0; - padding: 0; - position: relative; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - - // Default label styles for type and transition - label { - background: $switch-bg; - color: transparent; - cursor: pointer; - display: block; - margin-bottom: ($switch-height-med / 2); - position: relative; - text-indent: 100%; - width: $switch-height-med * 2; height: $switch-height-med; - - // Transition for the switch label to follow paddle - @include single-transition(left, $transition-speed, $transition-ease); - } - - // So that we don't need to recreate the form with any JS, we use the - // existing checkbox or radio button, but we cleverly position and hide it. - input { - left: 10px; - opacity: 0; - padding:0; - position: absolute; - top: 9px; - - & + label { margin-left: 0; margin-right: 0; } - } - - // The paddle for the switch is created from an after psuedoclass - // content element. This is sized and positioned, and reacts to - // the state of the input. - - label:after { - background: $switch-paddle-bg; - content: ""; - display: block; - height: $switch-height-med - .5rem; - left: .25rem; - position: absolute; - top: .25rem; - width: $switch-height-med - .5rem; - - -webkit-transition: left $transition-speed $transition-ease; - -moz-transition: left $transition-speed $transition-ease; - -o-transition: translate3d(0,0,0); - transition: left $transition-speed $transition-ease; - - -webkit-transform: translate3d(0,0,0); - -moz-transform: translate3d(0,0,0); - -ms-transform: translate3d(0,0,0); - -o-transform: translate3d(0,0,0); - transform: translate3d(0,0,0); - } - - input:checked + label { - background: $switch-active-color; - } - - input:checked + label:after { - left: $switch-height-med + .25rem; - } -} - -// We use this mixin to create the size styles for switches. -// -// $height - Height (in px) of the switch. Default: $switch-height-med. -// $font-size - Font size of text in switch. Default: $switch-font-size-med. -// $line-height - Line height of switch. Default: 2.3rem. -@mixin switch-size($height: $switch-height-med) { - - label { - height: $height; - width: $height * 2; - } - - label:after { - height: $height - .5rem; - width: $height - .5rem; - } - - input:checked + label:after { - left: $height + .25rem; - } - -} - -// We use this mixin to add color and other fanciness to the switches. -// -// $paddle-bg - Background of switch paddle. Default: $switch-paddle-bg. -// $active-color - Background color of positive side of switch. Default: $switch-positive-color. -// $negative-color - Background color of negative side of switch. Default: $switch-negative-color. -// $radius - Radius to apply to switch. Default: false. -// $base-style - Apply base styles? Default: true. -@mixin switch-style( - $paddle-bg:$switch-paddle-bg, - $active-color:$switch-active-color, - $radius:false, - $base-style:true) { - - @if $base-style { - - label { - color: transparent; - background: $switch-bg; - } - - label:after { - background: $paddle-bg; - } - - input:checked + label { - background: $active-color; - } - } - - // Setting up the radius for switches - @if $radius == true { - label { - border-radius: 2rem; - } - label:after { - border-radius: 2rem; - } - } - @else if $radius { - label { - border-radius: $radius; - } - label:after { - border-radius: $radius; - } - } - -} - -// We use this to quickly create switches with a single mixin -// -// $transition-speed - Time in ms for switch to toggle. Default: $switch-paddle-transition-speed. -// $transition-ease - Easing function to use for animation (i.e. ease-out). Default: $switch-paddle-transition-ease. -// $height - Height (in px) of the switch. Default: $switch-height-med. -// $paddle-bg - Background of switch paddle. Default: $switch-paddle-bg. -// $active-color - Background color of an active switch. Default: $switch-active-color. -// $radius - Radius to apply to switch. Default: false. -// $base-style - Apply base styles? Default: true. -@mixin switch( - $transition-speed: $switch-paddle-transition-speed, - $transition-ease: $switch-paddle-transition-ease, - $height: $switch-height-med, - $paddle-bg: $switch-paddle-bg, - $active-color: $switch-active-color, - $radius:false, - $base-style:true) { - @include switch-base($transition-speed, $transition-ease); - @include switch-size($height); - @include switch-style($paddle-bg, $active-color, $radius, $base-style); -} - -@include exports("switch") { - @if $include-html-form-classes { - .switch { - @include switch; - - // Large radio switches - &.large { @include switch-size($switch-height-lrg); } - - // Small radio switches - &.small { @include switch-size($switch-height-sml); } - - // Tiny radio switches - &.tiny { @include switch-size($switch-height-tny); } - - // Add a radius to the switch - &.radius { - label { @include radius(4px); } - label:after { @include radius(3px); } - } - - // Make the switch completely round, like a pill - &.round { @include radius(1000px); - label { @include radius(2rem); } - label:after { @include radius(2rem); } - } - - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_tables.scss b/docs/themes/porter/assets/sass/foundation/components/_tables.scss deleted file mode 100644 index 53e2c7a9f..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_tables.scss +++ /dev/null @@ -1,135 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @name _tables.scss -// @dependencies _global.scss -// - -// -// @variables -// - -$include-html-table-classes: $include-html-classes !default; - -// These control the background color for the table and even rows -$table-bg: $white !default; -$table-even-row-bg: $snow !default; - -// These control the table cell border style -$table-border-style: solid !default; -$table-border-size: 1px !default; -$table-border-color: $gainsboro !default; - -// These control the table head styles -$table-head-bg: $white-smoke !default; -$table-head-font-size: rem-calc(14) !default; -$table-head-font-color: $jet !default; -$table-head-font-weight: $font-weight-bold !default; -$table-head-padding: rem-calc(8 10 10) !default; - -// These control the table foot styles -$table-foot-bg: $table-head-bg !default; -$table-foot-font-size: $table-head-font-size !default; -$table-foot-font-color: $table-head-font-color !default; -$table-foot-font-weight: $table-head-font-weight !default; -$table-foot-padding: $table-head-padding !default; - -// These control the caption -$table-caption-bg: transparent !default; -$table-caption-font-color: $table-head-font-color !default; -$table-caption-font-size: rem-calc(16) !default; -$table-caption-font-weight: bold !default; - -// These control the row padding and font styles -$table-row-padding: rem-calc(9 10) !default; -$table-row-font-size: rem-calc(14) !default; -$table-row-font-color: $jet !default; -$table-line-height: rem-calc(18) !default; - -// These are for controlling the layout, display and margin of tables -$table-layout: auto !default; -$table-display: table-cell !default; -$table-margin-bottom: rem-calc(20) !default; - - -// -// @mixins -// - -@mixin table { - background: $table-bg; - border: $table-border-style $table-border-size $table-border-color; - margin-bottom: $table-margin-bottom; - table-layout: $table-layout; - - caption { - background: $table-caption-bg; - color: $table-caption-font-color; - font: { - size: $table-caption-font-size; - weight: $table-caption-font-weight; - } - } - - thead { - background: $table-head-bg; - - tr { - th, - td { - color: $table-head-font-color; - font-size: $table-head-font-size; - font-weight: $table-head-font-weight; - padding: $table-head-padding; - } - } - } - - tfoot { - background: $table-foot-bg; - - tr { - th, - td { - color: $table-foot-font-color; - font-size: $table-foot-font-size; - font-weight: $table-foot-font-weight; - padding: $table-foot-padding; - } - } - } - - tr { - th, - td { - color: $table-row-font-color; - font-size: $table-row-font-size; - padding: $table-row-padding; - text-align: $default-float; - } - - &.even, - &.alt, - &:nth-of-type(even) { background: $table-even-row-bg; } - } - - thead tr th, - tfoot tr th, - tfoot tr td, - tbody tr th, - tbody tr td, - tr td { display: $table-display; line-height: $table-line-height; } -} - - -@include exports("table") { - @if $include-html-table-classes { - table { - @include table; - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_tabs.scss b/docs/themes/porter/assets/sass/foundation/components/_tabs.scss deleted file mode 100644 index 2cfdbebbb..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_tabs.scss +++ /dev/null @@ -1,142 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; -@import 'grid'; - -// -// @variables -// - -$include-html-tabs-classes: $include-html-classes !default; - -$tabs-navigation-padding: rem-calc(16) !default; -$tabs-navigation-bg-color: $silver !default; -$tabs-navigation-active-bg-color: $white !default; -$tabs-navigation-hover-bg-color: scale-color($tabs-navigation-bg-color, $lightness: -6%) !default; -$tabs-navigation-font-color: $jet !default; -$tabs-navigation-active-font-color: $tabs-navigation-font-color !default; -$tabs-navigation-font-size: rem-calc(16) !default; -$tabs-navigation-font-family: $body-font-family !default; - -$tabs-content-margin-bottom: rem-calc(24) !default; -$tabs-content-padding: ($column-gutter/2) !default; - -$tabs-vertical-navigation-margin-bottom: 1.25rem !default; - -@include exports("tab") { - @if $include-html-tabs-classes { - .tabs { - @include clearfix; - margin-bottom: 0 !important; - margin-left: 0; - - dd, - .tab-title { - float: $default-float; - list-style: none; - margin-bottom: 0 !important; - position: relative; - - > a { - display: block; - background-color: $tabs-navigation-bg-color; - color: $tabs-navigation-font-color; - font-family: $tabs-navigation-font-family; - font-size: $tabs-navigation-font-size; - padding: $tabs-navigation-padding $tabs-navigation-padding * 2; - - &:hover { - background-color: $tabs-navigation-hover-bg-color; - } - } - - &.active > a { - background-color: $tabs-navigation-active-bg-color; - color: $tabs-navigation-active-font-color; - } - } - - &.radius { - dd:first-child, - .tab:first-child { - a { @include side-radius($default-float, $global-radius); } - } - - dd:last-child, - .tab:last-child { - a { @include side-radius($opposite-direction, $global-radius); } - } - } - - &.vertical { - dd, - .tab-title { - position: inherit; - float: none; - display: block; - top: auto; - } - } - } - - .tabs-content { - @include clearfix; - margin-bottom: $tabs-content-margin-bottom; - width: 100%; - - > .content { - display: none; - float: $default-float; - padding: $tabs-content-padding 0; - width: 100%; - - &.active { - display: block; - float: none; - } - &.contained { - padding: $tabs-content-padding; - } - } - - &.vertical { - display: block; - - > .content { - padding: 0 $tabs-content-padding; - } - } - } - - @media #{$medium-up} { - .tabs { - &.vertical { - float: $default-float; - margin: 0; - margin-bottom: $tabs-vertical-navigation-margin-bottom !important; - max-width: 20%; - width: 20%; - } - } - - .tabs-content { - &.vertical { - float: $default-float; - margin-#{$default-float}: -1px; - max-width: 80%; - padding-#{$default-float}: 1rem; - width: 80%; - } - } - } - - .no-js { - .tabs-content > .content { - display: block; - float: none; - } - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_thumbs.scss b/docs/themes/porter/assets/sass/foundation/components/_thumbs.scss deleted file mode 100644 index e40a501c5..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_thumbs.scss +++ /dev/null @@ -1,66 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// @name _thumbs.scss -// @dependencies _globals.scss -// - -// -// @variables -// - -$include-html-media-classes: $include-html-classes !default; - -// We use these to control border styles -$thumb-border-style: solid !default; -$thumb-border-width: 4px !default; -$thumb-border-color: $white !default; -$thumb-box-shadow: 0 0 0 1px rgba($black,.2) !default; -$thumb-box-shadow-hover: 0 0 6px 1px rgba($primary-color,0.5) !default; - -// Radius and transition speed for thumbs -$thumb-radius: $global-radius !default; -$thumb-transition-speed: 200ms !default; - -// -// @mixins -// - -// We use this to create image thumbnail styles. -// -// $border-width - Width of border around thumbnail. Default: $thumb-border-width. -// $box-shadow - Box shadow to apply to thumbnail. Default: $thumb-box-shadow. -// $box-shadow-hover - Box shadow to apply on hover. Default: $thumb-box-shadow-hover. -@mixin thumb( - $border-width:$thumb-border-width, - $box-shadow:$thumb-box-shadow, - $box-shadow-hover:$thumb-box-shadow-hover) { - border: $thumb-border-style $border-width $thumb-border-color; - box-shadow: $box-shadow; - display: inline-block; - line-height: 0; - max-width: 100%; - - &:hover, - &:focus { - box-shadow: $box-shadow-hover; - } -} - - -@include exports("thumb") { - @if $include-html-media-classes { - - /* Image Thumbnails */ - .th { - @include thumb; - @include single-transition(all, $thumb-transition-speed, ease-out); - - &.radius { @include radius($thumb-radius); } - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_tooltips.scss b/docs/themes/porter/assets/sass/foundation/components/_tooltips.scss deleted file mode 100644 index b2f219353..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_tooltips.scss +++ /dev/null @@ -1,142 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// Tooltip Variables -// -$include-html-tooltip-classes: $include-html-classes !default; - -$has-tip-border-bottom: dotted 1px $iron !default; -$has-tip-font-weight: $font-weight-bold !default; -$has-tip-font-color: $oil !default; -$has-tip-border-bottom-hover: dotted 1px scale-color($primary-color, $lightness: -55%) !default; -$has-tip-font-color-hover: $primary-color !default; -$has-tip-cursor-type: help !default; - -$tooltip-padding: rem-calc(12) !default; -$tooltip-bg: $oil !default; -$tooltip-font-size: rem-calc(14) !default; -$tooltip-font-weight: $font-weight-normal !default; -$tooltip-font-color: $white !default; -$tooltip-line-height: 1.3 !default; -$tooltip-close-font-size: rem-calc(10) !default; -$tooltip-close-font-weight: $font-weight-normal !default; -$tooltip-close-font-color: $monsoon !default; -$tooltip-font-size-sml: rem-calc(14) !default; -$tooltip-radius: $global-radius !default; -$tooltip-rounded: $global-rounded !default; -$tooltip-pip-size: 5px !default; -$tooltip-max-width: 300px !default; - -@include exports("tooltip") { - @if $include-html-tooltip-classes { - - /* Tooltips */ - .has-tip { - border-bottom: $has-tip-border-bottom; - color: $has-tip-font-color; - cursor: $has-tip-cursor-type; - font-weight: $has-tip-font-weight; - - &:hover, - &:focus { - border-bottom: $has-tip-border-bottom-hover; - color: $has-tip-font-color-hover; - } - - &.tip-left, - &.tip-right { float: none !important; } - } - - .tooltip { - background: $tooltip-bg; - color: $tooltip-font-color; - display: none; - font-size: $tooltip-font-size; - font-weight: $tooltip-font-weight; - line-height: $tooltip-line-height; - max-width: $tooltip-max-width; - padding: $tooltip-padding; - position: absolute; - width: 100%; - z-index: 1006; - #{$default-float}: 50%; - - > .nub { - border: solid $tooltip-pip-size; - border-color: transparent transparent $tooltip-bg transparent; - display: block; - height: 0; - pointer-events: none; - position: absolute; - top: -($tooltip-pip-size * 2); - width: 0; - #{$default-float}: $tooltip-pip-size; - - &.rtl { - left: auto; - #{$opposite-direction}: $tooltip-pip-size; - } - } - - &.radius { - @include radius($tooltip-radius); - } - &.round { - @include radius($tooltip-rounded); - > .nub { - left: 2rem; - } - } - - &.opened { - border-bottom: $has-tip-border-bottom-hover !important; - color: $has-tip-font-color-hover !important; - } - } - - .tap-to-close { - color: $tooltip-close-font-color; - display: block; - font-size: $tooltip-close-font-size; - font-weight: $tooltip-close-font-weight; - } - - @media #{$small} { - .tooltip { - > .nub { - border-color: transparent transparent $tooltip-bg transparent; - top: -($tooltip-pip-size * 2); - } - &.tip-top>.nub { - border-color: $tooltip-bg transparent transparent transparent; - bottom: -($tooltip-pip-size * 2); - top: auto; - } - - &.tip-left, - &.tip-right { float: none !important; } - - &.tip-left>.nub { - border-color: transparent transparent transparent $tooltip-bg; - left: auto; - margin-top: -$tooltip-pip-size; - right: -($tooltip-pip-size * 2); - top: 50%; - } - &.tip-right>.nub { - border-color: transparent $tooltip-bg transparent transparent; - left: -($tooltip-pip-size * 2); - margin-top: -$tooltip-pip-size; - right: auto; - top: 50%; - } - - } - } - - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_top-bar.scss b/docs/themes/porter/assets/sass/foundation/components/_top-bar.scss deleted file mode 100644 index 37ecfaeb1..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_top-bar.scss +++ /dev/null @@ -1,745 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; -@import 'grid'; -@import 'buttons'; -@import 'forms'; - -// -// Top Bar Variables -// -$include-html-top-bar-classes: $include-html-classes !default; - -// Background color for the top bar -$topbar-bg-color: $oil !default; -$topbar-bg: $topbar-bg-color !default; - -// Height and margin -$topbar-height: rem-calc(45) !default; -$topbar-margin-bottom: 0 !default; - -// Controlling the styles for the title in the top bar -$topbar-title-weight: $font-weight-normal !default; -$topbar-title-font-size: rem-calc(17) !default; - -// Set the link colors and styles for top-level nav -$topbar-link-color: $white !default; -$topbar-link-color-hover: $white !default; -$topbar-link-color-active: $white !default; -$topbar-link-color-active-hover: $white !default; -$topbar-link-weight: $font-weight-normal !default; -$topbar-link-font-size: rem-calc(13) !default; -$topbar-link-hover-lightness: -10% !default; // Darken by 10% -$topbar-link-bg: $topbar-bg !default; -$topbar-link-bg-hover: $jet !default; -$topbar-link-bg-color-hover: $charcoal !default; -$topbar-link-bg-active: $primary-color !default; -$topbar-link-bg-active-hover: scale-color($primary-color, $lightness: -14%) !default; -$topbar-link-font-family: $body-font-family !default; -$topbar-link-text-transform: none !default; -$topbar-link-padding: ($topbar-height / 3) !default; -$topbar-back-link-size: rem-calc(18) !default; -$topbar-link-dropdown-padding: rem-calc(20) !default; -$topbar-button-font-size: .75rem !default; -$topbar-button-top: 7px !default; - -// Style the top bar dropdown elements -$topbar-dropdown-bg: $oil !default; -$topbar-dropdown-link-color: $white !default; -$topbar-dropdown-link-color-hover: $topbar-link-color-hover !default; -$topbar-dropdown-link-bg: $oil !default; -$topbar-dropdown-link-bg-hover: $jet !default; -$topbar-dropdown-link-weight: $font-weight-normal !default; -$topbar-dropdown-toggle-size: 5px !default; -$topbar-dropdown-toggle-color: $white !default; -$topbar-dropdown-toggle-alpha: .4 !default; - -$topbar-dropdown-label-color: $monsoon !default; -$topbar-dropdown-label-text-transform: uppercase !default; -$topbar-dropdown-label-font-weight: $font-weight-bold !default; -$topbar-dropdown-label-font-size: rem-calc(10) !default; -$topbar-dropdown-label-bg: $oil !default; - -// Top menu icon styles -$topbar-menu-link-transform: uppercase !default; -$topbar-menu-link-font-size: rem-calc(13) !default; -$topbar-menu-link-weight: $font-weight-bold !default; -$topbar-menu-link-color: $white !default; -$topbar-menu-icon-color: $white !default; -$topbar-menu-link-color-toggled: $jumbo !default; -$topbar-menu-icon-color-toggled: $jumbo !default; -$topbar-menu-icon-position: $opposite-direction !default; // Change to $default-float for a left menu icon - -// Transitions and breakpoint styles -$topbar-transition-speed: 300ms !default; -// Using rem-calc for the below breakpoint causes issues with top bar -$topbar-breakpoint: #{lower-bound($medium-range)} !default; // Change to 9999px for always mobile layout -$topbar-media-query: "#{$screen} and (min-width:#{lower-bound($topbar-breakpoint)})" !default; - -// Top-bar input styles -$topbar-input-height: rem-calc(28) !default; - -// Divider Styles -$topbar-divider-border-bottom: solid 1px scale-color($topbar-bg-color, $lightness: 13%) !default; -$topbar-divider-border-top: solid 1px scale-color($topbar-bg-color, $lightness: -50%) !default; - -// Sticky Class -$topbar-sticky-class: ".sticky" !default; -$topbar-arrows: true !default; //Set false to remove the triangle icon from the menu item -$topbar-dropdown-arrows: true !default; //Set false to remove the \00bb >> text from dropdown subnavigation li - -// Accessibility mixins for hiding and showing the menu dropdown items -@mixin topbar-hide-dropdown { - // Makes an element visually hidden by default, but visible when focused. - @include element-invisible(); - display: block; -} - -@mixin topbar-show-dropdown { - @include element-invisible-off(); - display: block; - position: absolute !important; // Reset the position from static to absolute -} - -@include exports("top-bar") { - - @if $include-html-top-bar-classes { - - // Used to provide media query values for javascript components. - // This class is generated despite the value of $include-html-top-bar-classes - // to ensure width calculations work correctly. - meta.foundation-mq-topbar { - font-family: "/" + unquote($topbar-media-query) + "/"; - width: $topbar-breakpoint; - } - - /* Wrapped around .top-bar to contain to grid width */ - .contain-to-grid { - width: 100%; - background: $topbar-bg; - - .top-bar { - margin-bottom: $topbar-margin-bottom; - } - } - - // Wrapped around .top-bar to make it stick to the top - .fixed { - position: fixed; - top: 0; - width: 100%; - z-index: 99; - #{$default-float}: 0; - - &.expanded:not(.top-bar) { - height: auto; - max-height: 100%; - overflow-y: auto; - width: 100%; - - .title-area { - position: fixed; - width: 100%; - z-index: 99; - } - - // Ensure you can scroll the menu on small screens - .top-bar-section { - margin-top: $topbar-height; - z-index: 98; - } - } - } - - .top-bar { - background: $topbar-bg; - height: $topbar-height; - line-height: $topbar-height; - margin-bottom: $topbar-margin-bottom; - overflow: hidden; - position: relative; - - // Topbar Global list Styles - ul { - list-style: none; - margin-bottom: 0; - } - - .row { - max-width: none; - } - - form, - input, - select { - margin-bottom: 0; - } - - input, - select { - font-size: $topbar-button-font-size; - height: $topbar-input-height; - padding-bottom: .35rem; - padding-top: .35rem; - } - - .button, button { - font-size: $topbar-button-font-size; - margin-bottom: 0; - padding-bottom: .35rem + rem-calc(1); - padding-top: .35rem + rem-calc(1); - // position: relative; - // top: -1px; - - // Corrects a slight misalignment when put next to an input field - @media #{$small-only} { - position: relative; - top: -1px; - } - } - - // Title Area - .title-area { - margin: 0; - position: relative; - } - - .name { - font-size: $rem-base; - height: $topbar-height; - margin: 0; - - h1, h2, h3, h4, p, span { - font-size: $topbar-title-font-size; - line-height: $topbar-height; - margin: 0; - - a { - color: $topbar-link-color; - display: block; - font-weight: $topbar-title-weight; - padding: 0 $topbar-link-padding; - width: 75%; - } - } - } - - // Menu toggle button on small devices - .toggle-topbar { - position: absolute; - #{$topbar-menu-icon-position}: 0; - top: 0; - - a { - color: $topbar-link-color; - display: block; - font-size: $topbar-menu-link-font-size; - font-weight: $topbar-menu-link-weight; - height: $topbar-height; - line-height: $topbar-height; - padding: 0 $topbar-link-padding; - position: relative; - text-transform: $topbar-menu-link-transform; - } - - // Adding the class "menu-icon" will add the 3-line icon people love and adore. - &.menu-icon { - margin-top: -16px; - top: 50%; - - a { - @include hamburger(16px, false, 0, 1px, 6px, $topbar-menu-icon-color, "", false); - - @if $text-direction == rtl { - text-indent: -58px; - } - color: $topbar-menu-link-color; - height: 34px; - line-height: 33px; - padding: 0 $topbar-link-padding+rem-calc(25) 0 $topbar-link-padding; - position: relative; - } - } - } - - // Change things up when the top-bar is expanded - &.expanded { - background: transparent; - height: auto; - - .title-area { - background: $topbar-bg; - } - - .toggle-topbar { - a { - color: $topbar-menu-link-color-toggled; - - span::after { - // Shh, don't tell, but box-shadows create the menu icon :) - // Change the color of the bars when the menu is expanded, using given thickness from hamburger() above - box-shadow: 0 0 0 1px $topbar-menu-icon-color-toggled, - 0 7px 0 1px $topbar-menu-icon-color-toggled, - 0 14px 0 1px $topbar-menu-icon-color-toggled; - } - } - } - - // Fixes an issue with Desktop and Mobile Safari where deeply-nested menus don't appear - @media screen and (-webkit-min-device-pixel-ratio:0) { - .top-bar-section { - .has-dropdown.moved > .dropdown, - .dropdown { - clip: initial; - } - - // This was needed as parent ul's had padding, and the clip: was allowing content to peak through - .has-dropdown:not(.moved) > ul { - padding: 0; - } - } - } - } - } - - // Right and Left Navigation that stacked by default - .top-bar-section { - #{$default-float}: 0; - position: relative; - width: auto; - @include single-transition($default-float, $topbar-transition-speed); - - ul { - display: block; - font-size: $rem-base; - height: auto; - margin: 0; - padding: 0; - width: 100%; - } - - .divider, - [role="separator"] { - border-top: $topbar-divider-border-top; - clear: both; - height: 1px; - width: 100%; - } - - ul li { - background: $topbar-dropdown-bg; - - > a { - color: $topbar-link-color; - display: block; - font-family: $topbar-link-font-family; - font-size: $topbar-link-font-size; - font-weight: $topbar-link-weight; - padding-#{$default-float}: $topbar-link-padding; - padding: 12px 0 12px $topbar-link-padding; - text-transform: $topbar-link-text-transform; - width: 100%; - - &.button { - font-size: $topbar-link-font-size; - padding-#{$default-float}: $topbar-link-padding; - padding-#{$opposite-direction}: $topbar-link-padding; - @include button-style($bg:$primary-color); - } - - &.button.secondary { @include button-style($bg:$secondary-color); } - &.button.success { @include button-style($bg:$success-color); } - &.button.alert { @include button-style($bg:$alert-color); } - &.button.warning { @include button-style($bg:$warning-color); } - &.button.info { @include button-style($bg:$info-color); } - } - - > button { - font-size: $topbar-link-font-size; - padding-#{$default-float}: $topbar-link-padding; - padding-#{$opposite-direction}: $topbar-link-padding; - @include button-style($bg:$primary-color); - - &.secondary { @include button-style($bg:$secondary-color); } - &.success { @include button-style($bg:$success-color); } - &.alert { @include button-style($bg:$alert-color); } - &.warning { @include button-style($bg:$warning-color); } - &.info { @include button-style($bg:$info-color); } - } - - // Apply the hover link color when it has that class - &:hover:not(.has-form) > a { - background-color: $topbar-link-bg-color-hover; - color: $topbar-link-color-hover; - - @if ($topbar-link-bg-hover) { - background: $topbar-link-bg-hover; - } - } - - // Apply the active link color when it has that class - &.active > a { - background: $topbar-link-bg-active; - color: $topbar-link-color-active; - - &:hover { - background: $topbar-link-bg-active-hover; - color: $topbar-link-color-active-hover; - } - } - } - - // Add some extra padding for list items contains buttons - .has-form { - padding: $topbar-link-padding; - } - - // Styling for list items that have a dropdown within them. - .has-dropdown { - position: relative; - - > a { - &:after { - @if ($topbar-arrows) { - @include css-triangle($topbar-dropdown-toggle-size, rgba($topbar-dropdown-toggle-color, $topbar-dropdown-toggle-alpha), $default-float); - } - - margin-#{$opposite-direction}: $topbar-link-padding; - margin-top: -($topbar-dropdown-toggle-size / 2) - 2; - position: absolute; - top: 50%; - #{$opposite-direction}: 0; - } - } - - &.moved { - position: static; - - > .dropdown { - @include topbar-show-dropdown(); - width: 100%; - } - - > a:after { - display: none; - } - } - } - - // Styling elements inside of dropdowns - .dropdown { - @include topbar-hide-dropdown(); - padding: 0; - position: absolute; - top: 0; - z-index: 99; - #{$default-float}: 100%; - - li { - height: auto; - width: 100%; - - a { - font-weight: $topbar-dropdown-link-weight; - padding: 8px $topbar-link-padding; - &.parent-link { - font-weight: $topbar-link-weight; - } - } - - &.title h5, - &.parent-link { - // Back Button - margin-bottom: 0; - margin-top: 0; - font-size: $topbar-back-link-size; - a { - color: $topbar-link-color; - // line-height: ($topbar-height / 2); - display: block; - &:hover { background:none; } - } - } - - &.has-form { - padding: 8px $topbar-link-padding; - } - - .button, - button { - top: auto; - } - } - - label { - color: $topbar-dropdown-label-color; - font-size: $topbar-dropdown-label-font-size; - font-weight: $topbar-dropdown-label-font-weight; - margin-bottom: 0; - padding: 8px $topbar-link-padding 2px; - text-transform: $topbar-dropdown-label-text-transform; - } - } - } - - .js-generated { display: block; } - - - // Top Bar styles intended for screen sizes above the breakpoint. - @media #{$topbar-media-query} { - .top-bar { - @include clearfix; - background: $topbar-bg; - overflow: visible; - - .toggle-topbar { display: none; } - - .title-area { float: $default-float; } - .name h1 a, - .name h2 a, - .name h3 a, - .name h4 a, - .name h5 a, - .name h6 a { width: auto; } - - input, - select, - .button, - button { - font-size: rem-calc(14); - height: $topbar-input-height; - position: relative; - top: (($topbar-height - $topbar-input-height) / 2); - } - - .has-form > .button, - .has-form > button { - font-size: rem-calc(14); - height: $topbar-input-height; - position: relative; - top: (($topbar-height - $topbar-input-height) / 2); - } - - &.expanded { - background: $topbar-bg; - } - } - - .contain-to-grid .top-bar { - margin: 0 auto; - margin-bottom: $topbar-margin-bottom; - max-width: $row-width; - } - - .top-bar-section { - @include single-transition(none,0,0); - #{$default-float}: 0 !important; - - ul { - display: inline; - height: auto !important; - width: auto; - - li { - float: $default-float; - .js-generated { display: none; } - } - } - - li { - &.hover { - > a:not(.button) { - background-color: $topbar-link-bg-color-hover; - @if ($topbar-link-bg-hover) { - background: $topbar-link-bg-hover; - } - color: $topbar-link-color-hover; - } - } - - &:not(.has-form) { - a:not(.button) { - background: $topbar-link-bg; - line-height: $topbar-height; - padding: 0 $topbar-link-padding; - &:hover { - background-color: $topbar-link-bg-color-hover; - @if ($topbar-link-bg-hover) { - background: $topbar-link-bg-hover; - } - } - } - } - - &.active:not(.has-form) { - a:not(.button) { - background: $topbar-link-bg-active; - color: $topbar-link-color-active; - line-height: $topbar-height; - padding: 0 $topbar-link-padding; - &:hover { - background: $topbar-link-bg-active-hover; - color: $topbar-link-color-active-hover; - } - } - } - } - - .has-dropdown { - @if $topbar-arrows { - > a { - padding-#{$opposite-direction}: $topbar-link-padding + $topbar-link-dropdown-padding !important; - &:after { - @include css-triangle($topbar-dropdown-toggle-size, rgba($topbar-dropdown-toggle-color, $topbar-dropdown-toggle-alpha), top); - margin-top: -($topbar-dropdown-toggle-size / 2); - top: ($topbar-height / 2); - } - } - } - - &.moved { position: relative; - > .dropdown { - @include topbar-hide-dropdown(); - } - } - - &.hover, &.not-click:hover { - > .dropdown { - @include topbar-show-dropdown(); - } - } - - > a:focus + .dropdown { - @include topbar-show-dropdown(); - } - - .dropdown li.has-dropdown { - > a { - @if ($topbar-dropdown-arrows) { - &:after { - border: none; - content: "\00bb"; - top: rem-calc(3); - - #{$opposite-direction}: 5px; - } - } - } - } - } - - .dropdown { - #{$default-float}: 0; - background: transparent; - min-width: 100%; - top: auto; - - li { - a { - background: $topbar-dropdown-link-bg; - color: $topbar-dropdown-link-color; - line-height: $topbar-height; - padding: 12px $topbar-link-padding; - white-space: nowrap; - } - - &:not(.has-form):not(.active) { - > a:not(.button) { - background: $topbar-dropdown-link-bg; - color: $topbar-dropdown-link-color; - } - - &:hover > a:not(.button) { - background-color: $topbar-link-bg-color-hover; - color: $topbar-dropdown-link-color-hover; - @if ($topbar-dropdown-link-bg-hover) { - background: $topbar-dropdown-link-bg-hover; - } - } - } - - label { - background: $topbar-dropdown-label-bg; - white-space: nowrap; - } - - // Second Level Dropdowns - .dropdown { - #{$default-float}: 100%; - top: 0; - } - } - } - - > ul > .divider, - > ul > [role="separator"] { - border-#{$opposite-direction}: $topbar-divider-border-bottom; - border-bottom: none; - border-top: none; - clear: none; - height: $topbar-height; - width: 0; - } - - .has-form { - background: $topbar-link-bg; - height: $topbar-height; - padding: 0 $topbar-link-padding; - } - - // Position overrides for ul.right and ul.left - .#{$opposite-direction} { - li .dropdown { - #{$default-float}: auto; - #{$opposite-direction}: 0; - - li .dropdown { #{$opposite-direction}: 100%; } - } - } - .#{$default-float} { - li .dropdown { - #{$opposite-direction}: auto; - #{$default-float}: 0; - - li .dropdown { #{$default-float}: 100%; } - } - } - } - - // Degrade gracefully when Javascript is disabled. Displays dropdown and changes - // background & text color on hover. - .no-js .top-bar-section { - ul li { - // Apply the hover link color when it has that class - &:hover > a { - background-color: $topbar-link-bg-color-hover; - @if ($topbar-link-bg-hover) { - background: $topbar-link-bg-hover; - } - color: $topbar-link-color-hover; - } - - // Apply the active link color when it has that class - &:active > a { - background: $topbar-link-bg-active; - color: $topbar-link-color-active; - } - } - - .has-dropdown { - &:hover { - > .dropdown { - @include topbar-show-dropdown(); - } - } - - > a:focus + .dropdown { - @include topbar-show-dropdown(); - } - } - } - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_type.scss b/docs/themes/porter/assets/sass/foundation/components/_type.scss deleted file mode 100644 index e0559a608..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_type.scss +++ /dev/null @@ -1,525 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -$include-html-type-classes: $include-html-classes !default; - -// We use these to control header font styles -$header-font-family: $body-font-family !default; -$header-font-weight: $font-weight-normal !default; -$header-font-style: normal !default; -$header-font-color: $jet !default; -$header-line-height: 1.4 !default; -$header-top-margin: .2rem !default; -$header-bottom-margin: .5rem !default; -$header-text-rendering: optimizeLegibility !default; - -// We use these to control header font sizes -$h1-font-size: rem-calc(44) !default; -$h2-font-size: rem-calc(37) !default; -$h3-font-size: rem-calc(27) !default; -$h4-font-size: rem-calc(23) !default; -$h5-font-size: rem-calc(18) !default; -$h6-font-size: 1rem !default; - -// We use these to control header size reduction on small screens -$h1-font-reduction: rem-calc(10) !default; -$h2-font-reduction: rem-calc(10) !default; -$h3-font-reduction: rem-calc(5) !default; -$h4-font-reduction: rem-calc(5) !default; -$h5-font-reduction: 0 !default; -$h6-font-reduction: 0 !default; - -// These control how subheaders are styled. -$subheader-line-height: 1.4 !default; -$subheader-font-color: scale-color($header-font-color, $lightness: 35%) !default; -$subheader-font-weight: $font-weight-normal !default; -$subheader-top-margin: .2rem !default; -$subheader-bottom-margin: .5rem !default; - -// A general styling -$small-font-size: 60% !default; -$small-font-color: scale-color($header-font-color, $lightness: 35%) !default; - -// We use these to style paragraphs -$paragraph-font-family: inherit !default; -$paragraph-font-weight: $font-weight-normal !default; -$paragraph-font-size: 1rem !default; -$paragraph-line-height: 1.6 !default; -$paragraph-margin-bottom: rem-calc(20) !default; -$paragraph-aside-font-size: rem-calc(14) !default; -$paragraph-aside-line-height: 1.35 !default; -$paragraph-aside-font-style: italic !default; -$paragraph-text-rendering: optimizeLegibility !default; - -// We use these to style tags -$code-color: $oil !default; -$code-font-family: $font-family-monospace !default; -$code-font-weight: $font-weight-normal !default; -$code-background-color: scale-color($secondary-color, $lightness: 70%) !default; -$code-border-size: 1px !default; -$code-border-style: solid !default; -$code-border-color: scale-color($code-background-color, $lightness: -10%) !default; -$code-padding: rem-calc(2) rem-calc(5) rem-calc(1) !default; - -// We use these to style anchors -$anchor-text-decoration: none !default; -$anchor-text-decoration-hover: none !default; -$anchor-font-color: $primary-color !default; -$anchor-font-color-hover: scale-color($anchor-font-color, $lightness: -14%) !default; - -// We use these to style the
element -$hr-border-width: 1px !default; -$hr-border-style: solid !default; -$hr-border-color: $gainsboro !default; -$hr-margin: rem-calc(20) !default; - -// We use these to style lists -$list-font-family: $paragraph-font-family !default; -$list-font-size: $paragraph-font-size !default; -$list-line-height: $paragraph-line-height !default; -$list-margin-bottom: $paragraph-margin-bottom !default; -$list-style-position: outside !default; -$list-side-margin: 1.1rem !default; -$list-ordered-side-margin: 1.4rem !default; -$list-side-margin-no-bullet: 0 !default; -$list-nested-margin: rem-calc(20) !default; -$definition-list-header-weight: $font-weight-bold !default; -$definition-list-header-margin-bottom: .3rem !default; -$definition-list-margin-bottom: rem-calc(12) !default; - -// We use these to style blockquotes -$blockquote-font-color: scale-color($header-font-color, $lightness: 35%) !default; -$blockquote-padding: rem-calc(9 20 0 19) !default; -$blockquote-border: 1px solid $gainsboro !default; -$blockquote-cite-font-size: rem-calc(13) !default; -$blockquote-cite-font-color: scale-color($header-font-color, $lightness: 23%) !default; -$blockquote-cite-link-color: $blockquote-cite-font-color !default; - -// Acronym styles -$acronym-underline: 1px dotted $gainsboro !default; - -// We use these to control padding and margin -$microformat-padding: rem-calc(10 12) !default; -$microformat-margin: rem-calc(0 0 20 0) !default; - -// We use these to control the border styles -$microformat-border-width: 1px !default; -$microformat-border-style: solid !default; -$microformat-border-color: $gainsboro !default; - -// We use these to control full name font styles -$microformat-fullname-font-weight: $font-weight-bold !default; -$microformat-fullname-font-size: rem-calc(15) !default; - -// We use this to control the summary font styles -$microformat-summary-font-weight: $font-weight-bold !default; - -// We use this to control abbr padding -$microformat-abbr-padding: rem-calc(0 1) !default; - -// We use this to control abbr font styles -$microformat-abbr-font-weight: $font-weight-bold !default; -$microformat-abbr-font-decoration: none !default; - -// Controls the page margin when printing the website -$print-margin: 0.34in !default; - -// Text alignment class names -$align-class-names: - small-only, - small, - medium-only, - medium, - large-only, - large, - xlarge-only, - xlarge, - xxlarge-only, - xxlarge; - -// Text alignment breakpoints -$align-class-breakpoints: - $small-only, - $small-up, - $medium-only, - $medium-up, - $large-only, - $large-up, - $xlarge-only, - $xlarge-up, - $xxlarge-only, - $xxlarge-up; - -// Generates text align and justify classes -@mixin align-classes{ - .text-left { text-align: left !important; } - .text-right { text-align: right !important; } - .text-center { text-align: center !important; } - .text-justify { text-align: justify !important; } - - @for $i from 1 through length($align-class-names) { - @media #{(nth($align-class-breakpoints, $i))} { - .#{(nth($align-class-names, $i))}-text-left { text-align: left !important; } - .#{(nth($align-class-names, $i))}-text-right { text-align: right !important; } - .#{(nth($align-class-names, $i))}-text-center { text-align: center !important; } - .#{(nth($align-class-names, $i))}-text-justify { text-align: justify !important; } - } - } -} - -// -// Typography Placeholders -// - -// These will throw a deprecation warning if used within a media query. -@mixin lead { - font-size: $paragraph-font-size + rem-calc(3.5); - line-height: 1.6; -} - -@mixin subheader { - line-height: $subheader-line-height; - color: $subheader-font-color; - font-weight: $subheader-font-weight; - margin-top: $subheader-top-margin; - margin-bottom: $subheader-bottom-margin; -} -@include exports("type") { - @if $include-html-type-classes { - // Responsive Text alignment - @include align-classes; - - /* Typography resets */ - div, - dl, - dt, - dd, - ul, - ol, - li, - h1, - h2, - h3, - h4, - h5, - h6, - pre, - form, - p, - blockquote, - th, - td { - margin:0; - padding:0; - } - - /* Default Link Styles */ - a { - color: $anchor-font-color; - line-height: inherit; - text-decoration: $anchor-text-decoration; - - &:hover, - &:focus { - color: $anchor-font-color-hover; - @if $anchor-text-decoration-hover != $anchor-text-decoration { - text-decoration: $anchor-text-decoration-hover; - } - } - - img { border:none; } - } - - /* Default paragraph styles */ - p { - font-family: $paragraph-font-family; - font-size: $paragraph-font-size; - font-weight: $paragraph-font-weight; - line-height: $paragraph-line-height; - margin-bottom: $paragraph-margin-bottom; - text-rendering: $paragraph-text-rendering; - - &.lead { @include lead; } - - & aside { - font-size: $paragraph-aside-font-size; - font-style: $paragraph-aside-font-style; - line-height: $paragraph-aside-line-height; - } - } - - /* Default header styles */ - h1, h2, h3, h4, h5, h6 { - color: $header-font-color; - font-family: $header-font-family; - font-style: $header-font-style; - font-weight: $header-font-weight; - line-height: $header-line-height; - margin-bottom: $header-bottom-margin; - margin-top: $header-top-margin; - text-rendering: $header-text-rendering; - - small { - color: $small-font-color; - font-size: $small-font-size; - line-height: 0; - } - } - - h1 { font-size: $h1-font-size - $h1-font-reduction; } - h2 { font-size: $h2-font-size - $h2-font-reduction; } - h3 { font-size: $h3-font-size - $h3-font-reduction; } - h4 { font-size: $h4-font-size - $h4-font-reduction; } - h5 { font-size: $h5-font-size - $h5-font-reduction; } - h6 { font-size: $h6-font-size - $h6-font-reduction; } - - .subheader { @include subheader; } - - hr { - border: $hr-border-style $hr-border-color; - border-width: $hr-border-width 0 0; - clear: both; - height: 0; - margin: $hr-margin 0 ($hr-margin - rem-calc($hr-border-width)); - } - - /* Helpful Typography Defaults */ - em, - i { - font-style: italic; - line-height: inherit; - } - - strong, - b { - font-weight: $font-weight-bold; - line-height: inherit; - } - - small { - font-size: $small-font-size; - line-height: inherit; - } - - code { - background-color: $code-background-color; - border-color: $code-border-color; - border-style: $code-border-style; - border-width: $code-border-size; - color: $code-color; - font-family: $code-font-family; - font-weight: $code-font-weight; - padding: $code-padding; - } - - /* Lists */ - ul, - ol, - dl { - font-family: $list-font-family; - font-size: $list-font-size; - line-height: $list-line-height; - list-style-position: $list-style-position; - margin-bottom: $list-margin-bottom; - } - - ul { - margin-#{$default-float}: $list-side-margin; - } - - /* Unordered Lists */ - ul { - li { - ul, - ol { - margin-#{$default-float}: $list-nested-margin; - margin-bottom: 0; - } - } - &.square, - &.circle, - &.disc { - li ul { list-style: inherit; } - } - - &.square { list-style-type: square; margin-#{$default-float}: $list-side-margin;} - &.circle { list-style-type: circle; margin-#{$default-float}: $list-side-margin;} - &.disc { list-style-type: disc; margin-#{$default-float}: $list-side-margin;} - } - - /* Ordered Lists */ - ol { - margin-#{$default-float}: $list-ordered-side-margin; - li { - ul, - ol { - margin-#{$default-float}: $list-nested-margin; - margin-bottom: 0; - } - } - } - - // Lists without bullets - .no-bullet { - list-style-type: none; - margin-#{$default-float}: $list-side-margin-no-bullet; - - li { - ul, - ol { - margin-#{$default-float}: $list-nested-margin; - margin-bottom: 0; - list-style: none; - } - } - } - - /* Definition Lists */ - dl { - dt { - margin-bottom: $definition-list-header-margin-bottom; - font-weight: $definition-list-header-weight; - } - dd { margin-bottom: $definition-list-margin-bottom; } - } - - /* Abbreviations */ - abbr, - acronym { - text-transform: uppercase; - font-size: 90%; - color: $body-font-color; - cursor: $cursor-help-value; - } - abbr { - text-transform: none; - &[title] { - border-bottom: $acronym-underline; - } - } - - /* Blockquotes */ - blockquote { - margin: 0 0 $paragraph-margin-bottom; - padding: $blockquote-padding; - border-#{$default-float}: $blockquote-border; - - cite { - display: block; - font-size: $blockquote-cite-font-size; - color: $blockquote-cite-font-color; - &:before { - content: "\2014 \0020"; - } - - a, - a:visited { - color: $blockquote-cite-link-color; - } - } - } - blockquote, - blockquote p { - line-height: $paragraph-line-height; - color: $blockquote-font-color; - } - - /* Microformats */ - .vcard { - display: inline-block; - margin: $microformat-margin; - border: $microformat-border-width $microformat-border-style $microformat-border-color; - padding: $microformat-padding; - - li { - margin: 0; - display: block; - } - .fn { - font-weight: $microformat-fullname-font-weight; - font-size: $microformat-fullname-font-size; - } - } - - .vevent { - .summary { font-weight: $microformat-summary-font-weight; } - - abbr { - cursor: $cursor-default-value; - text-decoration: $microformat-abbr-font-decoration; - font-weight: $microformat-abbr-font-weight; - border: none; - padding: $microformat-abbr-padding; - } - } - - - @media #{$medium-up} { - h1, h2, h3, h4, h5, h6 { line-height: $header-line-height; } - h1 { font-size: $h1-font-size; } - h2 { font-size: $h2-font-size; } - h3 { font-size: $h3-font-size; } - h4 { font-size: $h4-font-size; } - h5 { font-size: $h5-font-size; } - h6 { font-size: $h6-font-size; } - } - - // Only include these styles if you want them. - @if $include-print-styles { - /* - * Print styles. - * - * Inlined to avoid required HTTP connection: www.phpied.com/delay-loading-your-print-css/ - * Credit to Paul Irish and HTML5 Boilerplate (html5boilerplate.com) - */ - @media print { - * { - background: transparent !important; - color: $black !important; /* Black prints faster: h5bp.com/s */ - box-shadow: none !important; - text-shadow: none !important; - } - - a, - a:visited { text-decoration: underline;} - a[href]:after { content: " (" attr(href) ")"; } - - abbr[title]:after { content: " (" attr(title) ")"; } - - // Don't show links for images, or javascript/internal links - .ir a:after, - a[href^="javascript:"]:after, - a[href^="#"]:after { content: ""; } - - pre, - blockquote { - border: 1px solid $aluminum; - page-break-inside: avoid; - } - - thead { display: table-header-group; /* h5bp.com/t */ } - - tr, - img { page-break-inside: avoid; } - - img { max-width: 100% !important; } - - @page { margin: $print-margin; } - - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - - h2, - h3 { page-break-after: avoid; } - } - } - - } -} diff --git a/docs/themes/porter/assets/sass/foundation/components/_visibility.scss b/docs/themes/porter/assets/sass/foundation/components/_visibility.scss deleted file mode 100644 index f28399741..000000000 --- a/docs/themes/porter/assets/sass/foundation/components/_visibility.scss +++ /dev/null @@ -1,425 +0,0 @@ -// Foundation by ZURB -// foundation.zurb.com -// Licensed under MIT Open Source - -@import 'global'; - -// -// Foundation Visibility Classes -// -$include-html-visibility-classes: $include-html-classes !default; -$include-accessibility-classes: true !default; -$include-table-visibility-classes: true !default; -$include-legacy-visibility-classes: true !default; - -// -// Media Class Names -// -// Visibility Breakpoints -$visibility-breakpoint-sizes: - small, - medium, - large, - xlarge, - xxlarge; - -$visibility-breakpoint-queries: - unquote($small-up), - unquote($medium-up), - unquote($large-up), - unquote($xlarge-up), - unquote($xxlarge-up); - -@mixin visibility-loop { - @each $current-visibility-breakpoint in $visibility-breakpoint-sizes { - $visibility-inherit-list: (); - $visibility-none-list: (); - - $visibility-visible-list: (); - $visibility-hidden-list: (); - - $visibility-table-list: (); - $visibility-table-header-group-list: (); - $visibility-table-row-group-list: (); - $visibility-table-row-list: (); - $visibility-table-cell-list: (); - - @each $visibility-comparison-breakpoint in $visibility-breakpoint-sizes { - @if index($visibility-breakpoint-sizes, $visibility-comparison-breakpoint) < index($visibility-breakpoint-sizes, $current-visibility-breakpoint) { - // Smaller than current breakpoint - - $visibility-inherit-list: append($visibility-inherit-list, unquote( - '.hide-for-#{$visibility-comparison-breakpoint}-only, .show-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-none-list: append($visibility-none-list, unquote( - '.show-for-#{$visibility-comparison-breakpoint}-only, .hide-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-visible-list: append($visibility-visible-list, unquote( - '.hidden-for-#{$visibility-comparison-breakpoint}-only, .visible-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-hidden-list: append($visibility-hidden-list, unquote( - '.visible-for-#{$visibility-comparison-breakpoint}-only, .hidden-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-table-list: append($visibility-table-list, unquote( - 'table.hide-for-#{$visibility-comparison-breakpoint}-only, table.show-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-table-header-group-list: append($visibility-table-header-group-list, unquote( - 'thead.hide-for-#{$visibility-comparison-breakpoint}-only, thead.show-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-table-row-group-list: append($visibility-table-row-group-list, unquote( - 'tbody.hide-for-#{$visibility-comparison-breakpoint}-only, tbody.show-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-table-row-list: append($visibility-table-row-list, unquote( - 'tr.hide-for-#{$visibility-comparison-breakpoint}-only, tr.show-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-table-cell-list: append($visibility-table-cell-list, unquote( - 'th.hide-for-#{$visibility-comparison-breakpoint}-only, td.hide-for-#{$visibility-comparison-breakpoint}-only, th.show-for-#{$visibility-comparison-breakpoint}-up, td.show-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - - // Foundation 4 compatibility: - // Include .show/hide-for-[size] and .show/hide-for-[size]-down classes - // for small, medium, and large breakpoints only - @if $include-legacy-visibility-classes and index((small, medium, large), $visibility-comparison-breakpoint) != false { - $visibility-inherit-list: append($visibility-inherit-list, unquote( - '.hide-for-#{$visibility-comparison-breakpoint}, .hide-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-none-list: append($visibility-none-list, unquote( - '.show-for-#{$visibility-comparison-breakpoint}, .show-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-visible-list: append($visibility-visible-list, unquote( - '.hidden-for-#{$visibility-comparison-breakpoint}, .hidden-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-hidden-list: append($visibility-hidden-list, unquote( - '.visible-for-#{$visibility-comparison-breakpoint}, .visible-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-table-list: append($visibility-table-list, unquote( - 'table.hide-for-#{$visibility-comparison-breakpoint}, table.hide-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-table-header-group-list: append($visibility-table-header-group-list, unquote( - 'thead.hide-for-#{$visibility-comparison-breakpoint}, thead.hide-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-table-row-group-list: append($visibility-table-row-group-list, unquote( - 'tbody.hide-for-#{$visibility-comparison-breakpoint}, tbody.hide-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-table-row-list: append($visibility-table-row-list, unquote( - 'tr.hide-for-#{$visibility-comparison-breakpoint}, tr.hide-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-table-cell-list: append($visibility-table-cell-list, unquote( - 'th.hide-for-#{$visibility-comparison-breakpoint}, td.hide-for-#{$visibility-comparison-breakpoint}, th.hide-for-#{$visibility-comparison-breakpoint}-down, td.hide-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - } - - } @else if index($visibility-breakpoint-sizes, $visibility-comparison-breakpoint) > index($visibility-breakpoint-sizes, $current-visibility-breakpoint) { - // Larger than current breakpoint - - $visibility-inherit-list: append($visibility-inherit-list, unquote( - '.hide-for-#{$visibility-comparison-breakpoint}-only, .hide-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-none-list: append($visibility-none-list, unquote( - '.show-for-#{$visibility-comparison-breakpoint}-only, .show-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-visible-list: append($visibility-visible-list, unquote( - '.hidden-for-#{$visibility-comparison-breakpoint}-only, .hidden-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-hidden-list: append($visibility-hidden-list, unquote( - '.visible-for-#{$visibility-comparison-breakpoint}-only, .visible-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-table-list: append($visibility-table-list, unquote( - 'table.hide-for-#{$visibility-comparison-breakpoint}-only, table.hide-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-table-header-group-list: append($visibility-table-header-group-list, unquote( - 'thead.hide-for-#{$visibility-comparison-breakpoint}-only, thead.hide-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-table-row-group-list: append($visibility-table-row-group-list, unquote( - 'tbody.hide-for-#{$visibility-comparison-breakpoint}-only, tbody.hide-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-table-row-list: append($visibility-table-row-list, unquote( - 'tr.hide-for-#{$visibility-comparison-breakpoint}-only, tr.hide-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-table-cell-list: append($visibility-table-cell-list, unquote( - 'th.hide-for-#{$visibility-comparison-breakpoint}-only, td.hide-for-#{$visibility-comparison-breakpoint}-only, th.hide-for-#{$visibility-comparison-breakpoint}-up, td.hide-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - - // Foundation 4 compatibility: - // Include .show/hide-for-[size] and .show/hide-for-[size]-down classes - // for small, medium, and large breakpoints only - @if $include-legacy-visibility-classes and index((small, medium, large), $visibility-comparison-breakpoint) != false { - $visibility-inherit-list: append($visibility-inherit-list, unquote( - '.hide-for-#{$visibility-comparison-breakpoint}, .show-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-none-list: append($visibility-none-list, unquote( - '.show-for-#{$visibility-comparison-breakpoint}, .hide-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-visible-list: append($visibility-visible-list, unquote( - '.hidden-for-#{$visibility-comparison-breakpoint}, .visible-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-hidden-list: append($visibility-hidden-list, unquote( - '.visible-for-#{$visibility-comparison-breakpoint}, .hidden-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-table-list: append($visibility-table-list, unquote( - 'table.hide-for-#{$visibility-comparison-breakpoint}, table.show-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-table-header-group-list: append($visibility-table-header-group-list, unquote( - 'thead.hide-for-#{$visibility-comparison-breakpoint}, thead.show-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-table-row-group-list: append($visibility-table-row-group-list, unquote( - 'tbody.hide-for-#{$visibility-comparison-breakpoint}, tbody.show-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-table-row-list: append($visibility-table-row-list, unquote( - 'tr.hide-for-#{$visibility-comparison-breakpoint}, tr.show-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-table-cell-list: append($visibility-table-cell-list, unquote( - 'th.hide-for-#{$visibility-comparison-breakpoint}, td.hide-for-#{$visibility-comparison-breakpoint}, th.show-for-#{$visibility-comparison-breakpoint}-down, td.show-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - } - - } @else { - // Current breakpoint - - $visibility-inherit-list: append($visibility-inherit-list, unquote( - '.show-for-#{$visibility-comparison-breakpoint}-only, .show-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-none-list: append($visibility-none-list, unquote( - '.hide-for-#{$visibility-comparison-breakpoint}-only, .hide-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-visible-list: append($visibility-visible-list, unquote( - '.visible-for-#{$visibility-comparison-breakpoint}-only, .visible-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-hidden-list: append($visibility-hidden-list, unquote( - '.hidden-for-#{$visibility-comparison-breakpoint}-only, .hidden-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-table-list: append($visibility-table-list, unquote( - 'table.show-for-#{$visibility-comparison-breakpoint}-only, table.show-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-table-header-group-list: append($visibility-table-header-group-list, unquote( - 'thead.show-for-#{$visibility-comparison-breakpoint}-only, thead.show-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-table-row-group-list: append($visibility-table-row-group-list, unquote( - 'tbody.show-for-#{$visibility-comparison-breakpoint}-only, tbody.show-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-table-row-list: append($visibility-table-row-list, unquote( - 'tr.show-for-#{$visibility-comparison-breakpoint}-only, tr.show-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - $visibility-table-cell-list: append($visibility-table-cell-list, unquote( - 'th.show-for-#{$visibility-comparison-breakpoint}-only, td.show-for-#{$visibility-comparison-breakpoint}-only, th.show-for-#{$visibility-comparison-breakpoint}-up, td.show-for-#{$visibility-comparison-breakpoint}-up' - ), comma); - - // Foundation 4 compatibility: - // Include .show/hide-for-[size] and .show/hide-for-[size]-down classes - // for small, medium, and large breakpoints only - @if $include-legacy-visibility-classes and index((small, medium, large), $visibility-comparison-breakpoint) != false { - $visibility-inherit-list: append($visibility-inherit-list, unquote( - '.show-for-#{$visibility-comparison-breakpoint}, .show-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-none-list: append($visibility-none-list, unquote( - '.hide-for-#{$visibility-comparison-breakpoint}, .hide-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-visible-list: append($visibility-visible-list, unquote( - '.visible-for-#{$visibility-comparison-breakpoint}, .visible-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-hidden-list: append($visibility-hidden-list, unquote( - '.hidden-for-#{$visibility-comparison-breakpoint}, .hidden-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-table-list: append($visibility-table-list, unquote( - 'table.show-for-#{$visibility-comparison-breakpoint}, table.show-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-table-header-group-list: append($visibility-table-header-group-list, unquote( - 'thead.show-for-#{$visibility-comparison-breakpoint}, thead.show-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-table-row-group-list: append($visibility-table-row-group-list, unquote( - 'tbody.show-for-#{$visibility-comparison-breakpoint}, tbody.show-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-table-row-list: append($visibility-table-row-list, unquote( - 'tr.show-for-#{$visibility-comparison-breakpoint}, tr.show-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - $visibility-table-cell-list: append($visibility-table-cell-list, unquote( - 'th.show-for-#{$visibility-comparison-breakpoint}, td.show-for-#{$visibility-comparison-breakpoint}, th.show-for-#{$visibility-comparison-breakpoint}-down, td.show-for-#{$visibility-comparison-breakpoint}-down' - ), comma); - } - } - } - - /* #{$current-visibility-breakpoint} displays */ - @media #{nth($visibility-breakpoint-queries, index($visibility-breakpoint-sizes, $current-visibility-breakpoint))} { - #{$visibility-inherit-list} { - display: inherit !important; - } - #{$visibility-none-list} { - display: none !important; - } - @if $include-accessibility-classes != false { - #{$visibility-visible-list} { - @include element-invisible-off; - } - #{$visibility-hidden-list} { - @include element-invisible; - } - } - @if $include-table-visibility-classes != false { - #{$visibility-table-list} { - display: table !important; - } - #{$visibility-table-header-group-list} { - display: table-header-group !important; - } - #{$visibility-table-row-group-list} { - display: table-row-group !important; - } - #{$visibility-table-row-list} { - display: table-row; - } - #{$visibility-table-cell-list} { - display: table-cell !important; - } - } - } - } -} - -@include exports("visibility"){ - @if $include-html-visibility-classes != false { - - @include visibility-loop; - - /* Orientation targeting */ - .show-for-landscape, - .hide-for-portrait { display: inherit !important; } - .hide-for-landscape, - .show-for-portrait { display: none !important; } - - /* Specific visibility for tables */ - table { - &.hide-for-landscape, - &.show-for-portrait { display: table !important; } - } - thead { - &.hide-for-landscape, - &.show-for-portrait { display: table-header-group !important; } - } - tbody { - &.hide-for-landscape, - &.show-for-portrait { display: table-row-group !important; } - } - tr { - &.hide-for-landscape, - &.show-for-portrait { display: table-row !important; } - } - td, - th { - &.hide-for-landscape, - &.show-for-portrait { display: table-cell !important; } - } - - @media #{$landscape} { - .show-for-landscape, - .hide-for-portrait { display: inherit !important; } - .hide-for-landscape, - .show-for-portrait { display: none !important; } - - /* Specific visibility for tables */ - table { - &.show-for-landscape, - &.hide-for-portrait { display: table !important; } - } - thead { - &.show-for-landscape, - &.hide-for-portrait { display: table-header-group !important; } - } - tbody { - &.show-for-landscape, - &.hide-for-portrait { display: table-row-group !important; } - } - tr { - &.show-for-landscape, - &.hide-for-portrait { display: table-row !important; } - } - td, - th { - &.show-for-landscape, - &.hide-for-portrait { display: table-cell !important; } - } - } - - @media #{$portrait} { - .show-for-portrait, - .hide-for-landscape { display: inherit !important; } - .hide-for-portrait, - .show-for-landscape { display: none !important; } - - /* Specific visibility for tables */ - table { - &.show-for-portrait, - &.hide-for-landscape { display: table !important; } - } - thead { - &.show-for-portrait, - &.hide-for-landscape { display: table-header-group !important; } - } - tbody { - &.show-for-portrait, - &.hide-for-landscape { display: table-row-group !important; } - } - tr { - &.show-for-portrait, - &.hide-for-landscape { display: table-row !important; } - } - td, - th { - &.show-for-portrait, - &.hide-for-landscape { display: table-cell !important; } - } - } - - /* Touch-enabled device targeting */ - .show-for-touch { display: none !important; } - .hide-for-touch { display: inherit !important; } - .touch .show-for-touch { display: inherit !important; } - .touch .hide-for-touch { display: none !important; } - - /* Specific visibility for tables */ - table.hide-for-touch { display: table !important; } - .touch table.show-for-touch { display: table !important; } - thead.hide-for-touch { display: table-header-group !important; } - .touch thead.show-for-touch { display: table-header-group !important; } - tbody.hide-for-touch { display: table-row-group !important; } - .touch tbody.show-for-touch { display: table-row-group !important; } - tr.hide-for-touch { display: table-row !important; } - .touch tr.show-for-touch { display: table-row !important; } - td.hide-for-touch { display: table-cell !important; } - .touch td.show-for-touch { display: table-cell !important; } - th.hide-for-touch { display: table-cell !important; } - .touch th.show-for-touch { display: table-cell !important; } - - /* Screen reader-specific classes */ - .show-for-sr { - @include element-invisible; - } - .show-on-focus { - @include element-invisible; - - &:focus, - &:active { - @include element-invisible-off; - } - } - - /* Print visibility */ - @if $include-print-styles { - .print-only, - .show-for-print { display: none !important; } - @media print { - .print-only, - .show-for-print { display: block !important; } - .hide-on-print, - .hide-for-print { display: none !important; } - - table.show-for-print { display: table !important; } - thead.show-for-print { display: table-header-group !important; } - tbody.show-for-print { display: table-row-group !important; } - tr.show-for-print { display: table-row !important; } - td.show-for-print { display: table-cell !important; } - th.show-for-print { display: table-cell !important; } - } - } - } -} diff --git a/docs/themes/porter/assets/sass/foundation/normalize.scss b/docs/themes/porter/assets/sass/foundation/normalize.scss deleted file mode 100644 index 5e5e3c898..000000000 --- a/docs/themes/porter/assets/sass/foundation/normalize.scss +++ /dev/null @@ -1,424 +0,0 @@ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ - -/** - * 1. Set default font family to sans-serif. - * 2. Prevent iOS and IE text size adjust after device orientation change, - * without disabling user zoom. - */ - -html { - font-family: sans-serif; /* 1 */ - -ms-text-size-adjust: 100%; /* 2 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/** - * Remove default margin. - */ - -body { - margin: 0; -} - -/* HTML5 display definitions - ========================================================================== */ - -/** - * Correct `block` display not defined for any HTML5 element in IE 8/9. - * Correct `block` display not defined for `details` or `summary` in IE 10/11 - * and Firefox. - * Correct `block` display not defined for `main` in IE 11. - */ - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} - -/** - * 1. Correct `inline-block` display not defined in IE 8/9. - * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. - */ - -audio, -canvas, -progress, -video { - display: inline-block; /* 1 */ - vertical-align: baseline; /* 2 */ -} - -/** - * Prevent modern browsers from displaying `audio` without controls. - * Remove excess height in iOS 5 devices. - */ - -audio:not([controls]) { - display: none; - height: 0; -} - -/** - * Address `[hidden]` styling not present in IE 8/9/10. - * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. - */ - -[hidden], -template { - display: none; -} - -/* Links - ========================================================================== */ - -/** - * Remove the gray background color from active links in IE 10. - */ - -a { - background-color: transparent; -} - -/** - * Improve readability of focused elements when they are also in an - * active/hover state. - */ - -a:active, -a:hover { - outline: 0; -} - -/* Text-level semantics - ========================================================================== */ - -/** - * Address styling not present in IE 8/9/10/11, Safari, and Chrome. - */ - -abbr[title] { - border-bottom: 1px dotted; -} - -/** - * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. - */ - -b, -strong { - font-weight: bold; -} - -/** - * Address styling not present in Safari and Chrome. - */ - -dfn { - font-style: italic; -} - -/** - * Address variable `h1` font-size and margin within `section` and `article` - * contexts in Firefox 4+, Safari, and Chrome. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/** - * Address styling not present in IE 8/9. - */ - -mark { - background: #ff0; - color: #000; -} - -/** - * Address inconsistent and variable font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` affecting `line-height` in all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/* Embedded content - ========================================================================== */ - -/** - * Remove border when inside `a` element in IE 8/9/10. - */ - -img { - border: 0; -} - -/** - * Correct overflow not hidden in IE 9/10/11. - */ - -svg:not(:root) { - overflow: hidden; -} - -/* Grouping content - ========================================================================== */ - -/** - * Address margin not present in IE 8/9 and Safari. - */ - -figure { - margin: 1em 40px; -} - -/** - * Address differences between Firefox and other browsers. - */ - -hr { - box-sizing: content-box; - height: 0; -} - -/** - * Contain overflow in all browsers. - */ - -pre { - overflow: auto; -} - -/** - * Address odd `em`-unit font size rendering in all browsers. - */ - -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} - -/* Forms - ========================================================================== */ - -/** - * Known limitation: by default, Chrome and Safari on OS X allow very limited - * styling of `select`, unless a `border` property is set. - */ - -/** - * 1. Correct color not being inherited. - * Known issue: affects color of disabled elements. - * 2. Correct font properties not being inherited. - * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. - */ - -button, -input, -optgroup, -select, -textarea { - color: inherit; /* 1 */ - font: inherit; /* 2 */ - margin: 0; /* 3 */ -} - -/** - * Address `overflow` set to `hidden` in IE 8/9/10/11. - */ - -button { - overflow: visible; -} - -/** - * Address inconsistent `text-transform` inheritance for `button` and `select`. - * All other form control elements do not inherit `text-transform` values. - * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. - * Correct `select` style inheritance in Firefox. - */ - -button, -select { - text-transform: none; -} - -/** - * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` - * and `video` controls. - * 2. Correct inability to style clickable `input` types in iOS. - * 3. Improve usability and consistency of cursor style between image-type - * `input` and others. - */ - -button, -html input[type="button"], /* 1 */ -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; /* 2 */ - cursor: pointer; /* 3 */ -} - -/** - * Re-set default cursor for disabled elements. - */ - -button[disabled], -html input[disabled] { - cursor: default; -} - -/** - * Remove inner padding and border in Firefox 4+. - */ - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -/** - * Address Firefox 4+ setting `line-height` on `input` using `!important` in - * the UA stylesheet. - */ - -input { - line-height: normal; -} - -/** - * It's recommended that you don't attempt to style these elements. - * Firefox's implementation doesn't respect box-sizing, padding, or width. - * - * 1. Address box sizing set to `content-box` in IE 8/9/10. - * 2. Remove excess padding in IE 8/9/10. - */ - -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Fix the cursor style for Chrome's increment/decrement buttons. For certain - * `font-size` values of the `input`, it causes the cursor style of the - * decrement button to change from `default` to `text`. - */ - -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Address `appearance` set to `searchfield` in Safari and Chrome. - * 2. Address `box-sizing` set to `border-box` in Safari and Chrome. - */ - -input[type="search"] { - -webkit-appearance: textfield; /* 1 */ - box-sizing: content-box; /* 2 */ -} - -/** - * Remove inner padding and search cancel button in Safari and Chrome on OS X. - * Safari (but not Chrome) clips the cancel button when the search input has - * padding (and `textfield` appearance). - */ - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * Define consistent border, margin, and padding. - */ - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -/** - * 1. Correct `color` not being inherited in IE 8/9/10/11. - * 2. Remove padding so people aren't caught out if they zero out fieldsets. - */ - -legend { - border: 0; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Remove default vertical scrollbar in IE 8/9/10/11. - */ - -textarea { - overflow: auto; -} - -/** - * Don't inherit the `font-weight` (applied by a rule above). - * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. - */ - -optgroup { - font-weight: bold; -} - -/* Tables - ========================================================================== */ - -/** - * Remove most spacing between table cells. - */ - -table { - border-collapse: collapse; - border-spacing: 0; -} - -td, -th { - padding: 0; -} diff --git a/docs/themes/porter/assets/sass/helm-animation.scss b/docs/themes/porter/assets/sass/helm-animation.scss deleted file mode 100644 index a5a2a6b89..000000000 --- a/docs/themes/porter/assets/sass/helm-animation.scss +++ /dev/null @@ -1,90 +0,0 @@ -// homepage animation - -@mixin boat-animation-rules($startX, $startY, $endX, $endY) { - $crest: -7px; - $trough: -12px; - @keyframes animatedBoat { - 0% { background-position: $startX $startY; bottom: $crest;} - 10% { bottom: $trough; } - 20% { bottom: $crest; } - 30% { bottom: $trough; } - 40% { bottom: $crest; } - 50% { bottom: $trough; } - 60% { bottom: $crest; } - 70% { bottom: $trough; } - 80% { bottom: $crest; } - 90% { bottom: $trough; } - 100% { background-position: $endX $endY; bottom: $crest; } - } - @-moz-keyframes animatedBoat { - 0% { background-position: $startX $startY; bottom: $crest;} - 10% { bottom: $trough; } - 20% { bottom: $crest; } - 30% { bottom: $trough; } - 40% { bottom: $crest; } - 50% { bottom: $trough; } - 60% { bottom: $crest; } - 70% { bottom: $trough; } - 80% { bottom: $crest; } - 90% { bottom: $trough; } - 100% { background-position: $endX $endY; bottom: $crest; } - } - @-webkit-keyframes animatedBoat { - 0% { background-position: $startX $startY; bottom: $crest;} - 10% { bottom: $trough; } - 20% { bottom: $crest; } - 30% { bottom: $trough; } - 40% { bottom: $crest; } - 50% { bottom: $trough; } - 60% { bottom: $crest; } - 70% { bottom: $trough; } - 80% { bottom: $crest; } - 90% { bottom: $trough; } - 100% { background-position: $endX $endY; bottom: $crest; } - } - @-ms-keyframes animatedBoat { - 0% { background-position: $startX $startY; bottom: $crest;} - 10% { bottom: $trough; } - 20% { bottom: $crest; } - 30% { bottom: $trough; } - 40% { bottom: $crest; } - 50% { bottom: $trough; } - 60% { bottom: $crest; } - 70% { bottom: $trough; } - 80% { bottom: $crest; } - 90% { bottom: $trough; } - 100% { background-position: $endX $endY; bottom: $crest; } - } - @-o-keyframes animatedBoat { - 0% { background-position: $startX $startY; bottom: $crest;} - 10% { bottom: $trough; } - 20% { bottom: $crest; } - 30% { bottom: $trough; } - 40% { bottom: $crest; } - 50% { bottom: $trough; } - 60% { bottom: $crest; } - 70% { bottom: $trough; } - 80% { bottom: $crest; } - 90% { bottom: $trough; } - 100% { background-position: $endX $endY; bottom: $crest; } - } -} - -$boat-animation: animatedBoat 10s linear infinite; -$source-font: $base; -$inconsolata-font: 'Inconsolata', Fixed, monospace; -$vertical-margin: 25%; -$footer-padding: 4em; -$mobile-maximum-width: 414px; -$tablet-maximum-width: 768px; -$boat-size: 150px; -$gutter: 20px; -$normalWeight: 400; -$lightWeight: 300; -$titleFontSize: 54px; -$bodyFontSize: 18px; -$helmLogoHeight: 79px; -$helmLogoWidth: 170px; -$fishSize: 210px; -$fishDepth: 150px; -$deisLogoWidth: 125px; \ No newline at end of file diff --git a/docs/themes/porter/assets/sass/helm-blog.scss b/docs/themes/porter/assets/sass/helm-blog.scss deleted file mode 100644 index acee48dd1..000000000 --- a/docs/themes/porter/assets/sass/helm-blog.scss +++ /dev/null @@ -1,168 +0,0 @@ -.blog-layout { - - .main { - padding-top: 9rem; - - &.blog { - .content-wrap { - h1 { - margin-top: 0; - color: $gray; - } - - article { - padding: 0; - overflow: inherit; - - h2 { - text-transform: capitalize; - letter-spacing: 0.05em; - font-size: 2rem; - } - - p.date { - margin-top: 0; - padding-top: 0; - font-weight: bold; - font-size: 1rem; - color: lighten($gray, 35%); - margin: 0.5rem 0; - } - - // Workaround bug: https://github.com/gohugoio/hugo/issues/1217#issuecomment-628409159 - .summary { - p { - display: inline; - margin: 0; - padding: 0; - } - - a { - font-weight: 900; - } - } - } - } - } - - &.blog-single { - .content-wrap { - article { - h1 { - font-size: 2.75rem; - margin-bottom: 0.25em; - } - - p.date { - font-style: italic; - margin-bottom: 2.67em; - } - - img { - box-shadow: none; - display: block; - margin: 0 auto; - - &:hover { - @include box-shadow(none); - } - } - - .blog-meta { - margin-top: 7.5rem; - } - - .blog-author { - text-align: left; - figure { - display: inline-block; - width: 100%; - - a { - position: relative; - background: lighten($gold, 25%); - padding: 1rem; - display: inline-block; - width: 100%; - min-height: 12rem; - border-radius: 0.67em; - padding-left: 12rem; - @media only screen and (max-width: 569px) { - padding-left: 8rem; - } - - img { - position: absolute; - left: 1rem; - top: 1rem; - border-radius: 50%; - max-width: 10rem; - @media only screen and (max-width: 569px) { - max-width: 6rem; - } - } - - figcaption { - text-align: left; - font-size: 1.35rem; - margin-top: 2.75rem; - } - } - } - } - - .blog-tags { - position: relative; - padding: .5rem 2rem 4rem; - min-height: 12rem; - @media only screen and (max-width: 569px) { - padding: .5rem 1rem 4rem; - } - a.tag { - font-size: 1.25rem; - border-radius: 2rem; - background: $blue; - color: white; - padding: 0.2rem 1.5rem; - margin: 0.25rem; - font-weight: bold; - text-transform: uppercase; - letter-spacing: 0.075em; - @media only screen and (max-width: 569px) { - font-size: 1rem; - } - } - - > div { - display: flex; - align-items: center; - flex-wrap: wrap; - } - } - - .button-rss { - display: block; - background: lighten($blue, 35%); - border-radius: 3rem; - margin: 2.5rem 0 0; - position: absolute; - bottom: 0; - left: 5%; - right: 5%; - } - } - } - } - } - - .top-bar { - width: 100%; - left: auto; - } - - .blog-logo { - position: fixed; - z-index: 1001; - margin-top: 0; - } -} diff --git a/docs/themes/porter/assets/sass/helm-buttons.scss b/docs/themes/porter/assets/sass/helm-buttons.scss deleted file mode 100644 index 3bda76d5f..000000000 --- a/docs/themes/porter/assets/sass/helm-buttons.scss +++ /dev/null @@ -1,6 +0,0 @@ -.button { - @include border-radius(0.15em,0.15em); - @include CBold; - line-height: 1.636; - background-color: $blue1; -} \ No newline at end of file diff --git a/docs/themes/porter/assets/sass/helm-home.scss b/docs/themes/porter/assets/sass/helm-home.scss deleted file mode 100644 index e853637ec..000000000 --- a/docs/themes/porter/assets/sass/helm-home.scss +++ /dev/null @@ -1,1100 +0,0 @@ -body.home { - overflow-x: hidden; - font-family: 'CLight'; - - .row { - max-width: 100%; - } - - .row.fullwidth { - max-width: 100%; - } - - h1 { - @include CBold; - } - - h2, h3, h4, h5 { - @include CMedium; - } - - #footer { - max-width: 100%; - - .row { - max-width: 100%; - } - } -} -html,body { - height: 100%; -} -nav.home-nav { - position: absolute; - left: 0; - right: 0; - top: 0; - z-index: 2000; - - h1 { - position: absolute; - left: 5%; - top: 0.5rem; - max-width: 250px; - } - - ul { - position: absolute; - top: 3.25rem; - right: 2%; - - li { - list-style: none; - display: inline-block; - - a { - display: inline-block; - margin: 0 1rem; - font-size: 1.25rem; - line-height: 2; - position: relative; - letter-spacing: 0.0125em; - color: $dark2; - text-decoration: none; - @include CBlack; - @include ripple; - - img { - max-height: 3rem; - color: $dark2; - line-height: 2.5; - padding-top: 0.5rem; - margin: -.8rem 0rem 1rem 0rem; - - &:hover { - opacity: 0.7; - } - } - } - } - } -} - -#helm.home { - background: #183d54; - - .billboard { - background-color: white; - background-size: 376px; - background-attachment: fixed; - min-height: 480px; - padding-top: 250px; - position: relative; - text-align: center; - - .txt-github { - color: white; - font-size: 1.5rem; - } - - .btn-github { - background: #d00052; - text-decoration: none; - padding: .8rem 1.6rem; - &:hover { - border-color: transparent; - } - - @include mobile { - padding: .4rem 1.1rem; - font-size: 1.3rem; - } - } - - h1 { - @include CBold; - color: $blue; - font-size: 2.925rem; - } - - h2 { - color: $darkblue; - font-size: 1.25rem; - margin-bottom: 30px; - } - - &:after { - $height: 6px; - background-size: $gutter; - bottom: 0; - left: 0; - content: ''; - display: block; - height: $height; - position: absolute; - width: 100%; - } - - &.blog-billboard { - min-height: 180px; - padding-top: 50px; - } - } - - #blog { - background: $blue; - background: linear-gradient(180deg, rgba(76,179,225,1) 0%, rgba(42,140,184,1) 100%); - margin-bottom: 6rem; - min-height: 450px; - - .blog-section { - h1.blog-subhead { - font-size: 1.5rem; - padding: 2rem 5rem; - opacity: 0.75; - } - } - - article.post__content { - padding-top: 2rem; - padding-bottom: 7.5rem; - - h1 { - font-size: 3rem; - } - } - - p { - padding-right: 2%; - font-size: 1.333rem; - line-height: 1.636; - margin-top: 1.2rem; - margin-bottom: 2rem; - } - - p.date { - font-size: 0.925rem; - font-weight: bold; - margin: -0.5rem 0 2.5rem; - color: $darkblue; - } - - p.author { - margin-top: 2.5rem; - line-height: 1.2; - - small { - font-size: 1rem; - } - } - } - - .card { - background: none; - border: 5px solid #3bbdc4; - box-shadow: none; - border-radius: 20px; - - @include mobile { - width: 63rem !important; - } - - .card-img-top { - color: #a5d6d0; - } - - &:hover { - cursor: pointer; - box-shadow: 0 5px 15px #39bec5; - transition: all 0.2s ease-in-out; - } - } - - .card-body { - .card-title { - @include CBlack; - font-size: 1.7rem; - text-transform: capitalize; - text-align: center; - letter-spacing: 0; - } - - .card-text { - @include CLight; - line-height: 1.1; - font-weight: 400; - opacity: .7; - font-size: 1.4rem; - padding: 0; - } - - } - - .content { - h1, h2, h3, h5 { - color: white; - @include CBlack; - } - - h2 { - font-size: 2.7rem; - margin: 2rem 0; - padding-top: 1em; - } - - - @include mobile{ - h2 { - font-size:2rem !important; - } - p, .why-porter, .why-porter li { - font-size: 1.2rem !important; - } - } - - p, ul, li { - color: white; - font-size: 1.5rem; - line-height: 1.4; - @include CLight; - -webkit-font-smoothing: antialiased; - } - - p { - margin-bottom: 1.4rem; - } - - .github-stats { - padding-top: 1em; - } - - a { - color: white; - text-decoration: none; - } - - #underline, #underline1 { - position: relative; - } - - #underline { - z-index: -2; - background-image: linear-gradient(to right, #4b84a3 0%, #4b84a3 100%); - background-repeat: no-repeat; - background-size: 70% 0.7em; - background-position: -5px 170%; - } - - #underline1 { - background-image: linear-gradient(to right, #4b84a3 0%, #4b84a3 100%); - background-repeat: no-repeat; - background-size: 97% 0.7em; - background-position: -5px 170%; - z-index: -2; - } - - .helm-overview-img { - margin: 3.5rem 0 3rem; - } - } - - .helm-features { - text-align: center; - margin-top: 5em; - padding: 0; - margin-bottom: 4em; - padding-bottom: 4rem; - - .large-3 { - min-height: 280px; - } - - h1 { - @include CBlack; - @include normCase; - color: #183d54; - font-size: 3rem; - letter-spacing: 0em; - margin: 1.5rem 0 2.5rem; - display: inline-block; - - .fa { - color: $pink; - } - } - - h3 { - color: $darkblue; - margin: 0.25em 0 0; - font-size: 2rem; - letter-spacing: -1px; - position: relative; - @include CBold; - - small { - position: absolute; - top: 8.667em; - color: red; - width: 10em; - left: 50%; - font-size: 0.6em; - margin-left: -5em; - } - - @include mobile { - font-size: 1.7rem; - img{ - width: 65px ; - } - } - } - - h3:not(:first-child) { - padding-top: 2em; - } - - .columns { - position: relative; - padding: 30px; - - @include mobile { - padding: 10px; - - figcaption + img { - padding: 10px; - border-radius: 2em; - } - } - } - - img { - top: 0; - left: 50%; - border-radius: 1em; - } - - p { - font-size: 1.5em; - color: black; - line-height: 1.5; - margin: 10px 0 1.5rem 0; - padding: 0 5%; - - code { - border: none; - } - - @include mobile { - font-size: 1.2rem; - } - } - - .row { - background-color: white; - - &:first-child { - border-radius: 0.5em 0.5em 0 0; - } - &:last-child { - padding-bottom: 0.5em; - border-radius: 0 0 0.5em 0.5em; - } - } - - #underline, #underline1 { - position: relative; - } - - #underline::before { - content: ""; - position: absolute; - left: 50%; - bottom: 5px; - width: 360px; - height: 10px; - transform: skew(-12deg) translateX(-50%); - background: rgba(57,190,197,0.5); - } - } - - .helm-features + .container{ - @include mobile{ - padding-bottom: 75px; - } - } - - .get-helm { - padding-bottom: 50px; - border: 5px solid wheat; - padding: 2em; - margin-bottom: 4em; - position: relative; - border-radius: 0.5em; - z-index: 100; - - h2 { - margin: 0 0 0.5em; - padding: 0; - } - - img { - margin: 0.333em 0; - } - } - - .get-charts { - border-radius: 0.5em; - margin-left: 20px; - padding: 2em 0em 0 0em; - - h2 { - margin: 1.5rem 0 1rem; - padding: 0; - } - - @media only screen and (max-width: 569px) { - margin-left: 0; - } - } - - .helm-quotes { - background-color: white; - border-radius: 25px; - color: $dark2; - background: linear-gradient( 0deg, #fff, #F7F7F7); - - h2, p { - color: $darkblue; - } - - a { - color: $red; - text-decoration: underline; - } - } - - .helm-community { - background-color: white; - padding-bottom: 100px; - border-radius: 25px; - color: $darkblue; - background: linear-gradient( 0deg, #fff, #F7F7F7); - - h2, p { - color: $darkblue; - } - - h2 { - margin-bottom: 0.3em; - font-size: 3rem; - } - - .helm-community-links { - ul { - - @include mobile { - padding: 0 !important; - margin: 0 !important; - text-align: left !important; - } - - .btn-section { - display: inline-block; - padding: 10px 20px 10px 20px; - border-radius: 20px; - } - - li { - font-size: 1.5rem; - list-style: none; - color: $darkblue; - line-height: 2.5; - padding-left: 2.25em; - position: relative; - @include CMedium; - - a { - color: $dark2; - text-decoration: none; - background-image: linear-gradient(to right, #A7BFE8 0%, #6190E8 100%); - background-repeat: no-repeat; - background-size: 100% 0.3em; - padding: 15px 10px; - background-position: 0 88%; - transition: background-size 0.1s ease-in-out; - - &:hover { - // color: $blue; - // border-color: $lightblue; - background-size: 100% 80%; - color: white; - } - } - - .fa-solid, .fa-brands{ - font-size: 1.5rem; - } - } - } - } - .topbar { - height: 20px; - background-color: #f8cc88; - } - .topbar--1 { - height: 20px; - background-color: $red; - } - - .text-content { - padding: 2rem; - } - - .helm-community-blocks { - section { - border: 25px solid white; - border-bottom: none; - border-top: none; - margin: 0 0 2em; - min-height: 125px; - background-color: ghostwhite; - position: relative; - - h4 { - color: $darkblue; - font-size: 1.5em; - @include CBlack; - margin: -0.25em 0 0.667em; - } - - p { - color: $darkblue; - font-size: 1.4rem; - } - - a { - color: $red; - text-decoration: underline; - font-weight: 600; - } - - iframe { - width: 35%; - display: inline-block; - min-width: 200px; - position: absolute; - right: 1em; - top: 1em; - } - - .right { - background-color: lighten($light1, 1.5%); - text-align: center; - padding: 1.25em 2em 1em; - width: 33.3%; - position: absolute; - top: 1em; - right: 1em; - - .fa { - font-size: 2.75rem; - float: left; - display: inline-block; - padding-right: 0.333em; - color: $blue; - } - em { - font-style: normal; - font-size: 1.125em; - display: inline-block; - min-width: 50%; - color: $blue; - font-weight: bold; - } - small { - display: inline-block; - font-size: 0.667rem; - min-width: 50%; - color: $blue; - } - } - } - } - } -} - -.helm-contrib-logos { - text-align: center; - padding-bottom: 50px; - - .helm-contrib-logos { - padding-top: 1.5rem; - } - - img { - padding: 0; - display: inline-block; - margin: 0; - max-width: 15%; - } - - .helm-logo { - margin: 0 auto; - margin-bottom: 2.25em; - display: block; - text-align: center; - padding: 3.5em 0 0; - } - - hr { - background-color: $lightblue; - height: 2px; - opacity: 0.25; - width: 50%; - margin: 1rem 25%; - } - - p { - color: $dark1; - text-align: center; - padding: 0; - margin: 0 auto; - font-size: 1.333em; - line-height: 2; - letter-spacing: 0.025em; - color: #9B9B9B; - - a { - color: $dark2; - border-bottom: 2px solid transparent; - - &:hover { - border-bottom: 2px solid $blue; - } - } - - small { - padding-top: 1rem; - font-size: 0.925em; - } - } -} - -.full-width { - min-width: 100%; -} - -.cncf { - background: white; - min-height: 5rem; - margin-top: 4rem; - text-align: center; - padding-left: 0 !important; - - img { - display: inline-block; - max-width: 14rem; - margin: 3rem 5%; - } - - p { - margin: 3.5rem 5%; - display: inline-block; - color: #777; - - &:hover { - color: $lightblue; - } - } -} - -.copyright { - background: #193d54; - color: white; - font-size: 1.3rem; - padding: 1rem; - - a, a:focus, a:visited { - color: $blue2; - text-decoration:none !important ; - } - - @include mobile { - padding: 20px 20px 30px !important; - font-size: 1rem; - } -} - -@media only screen and (min-device-width: $mobile-maximum-width + 1) { - @include boat-animation-rules(-$boat-size, 25%, 145%, 0); -} - -#boat { - height: 2em; - @media only screen and (min-device-width: $mobile-maximum-width + 1) { - $duration: 20s; - background: url('/img/boat.png') no-repeat; - background-size: $boat-size; - height: 169px; //TODO programmatize this! - position: relative; - - -moz-animation: $boat-animation; - -webkit-animation: $boat-animation; - -ms-animation: $boat-animation; - -o-animation: $boat-animation; - animation: $boat-animation; - -webkit-animation-duration: $duration; - -moz-animation-duration: $duration; - -ms-animation-duration: $duration; - -o-animation-duration: $duration; - animation-duration: $duration; - } -} - -@media screen and (max-width: 1024px) { - #helm { - .billboard { - .helm-logo { - position: absolute; - left: 50%; - top: 2.3rem; - max-width: 112px; - margin-left: -66px; - } - - h1 { - margin: -3rem 10% 0; - font-size: 2.25rem; - } - - h2 { - margin: 1rem 12.5%; - font-size: 1.5rem; - } - } - } - - .contrib-logos-1, - .contrib-logos-2 { - img { - max-height: 80px; - } - } - - .cncf { - padding-top: 2rem; - padding-bottom: 2rem; - padding-left: 0 !important; - - img, - p { - float: none; - padding: 0; - margin: 1.5rem 0 !important; - } - - img { - max-width: 51%; - } - } -} - -#helm { - .panel { - font-size: 21px; - padding: ($gutter / 1.5) 0; - width: 100%; - position: relative; - - @include mobile { - padding: 10px 0; - } - - &.-blue { - background-color: $blue; - color: #fff; - @include tablet { - padding-top: $gutter; - } - h1, h2, p { - color: $black; - } - } - - &.-gray { - background-color: $light1; - } - } - - .geo-shapes-title { - margin: 0 auto; - - &.blue h2 hr.border { - border-color: $blue; - } - - &.pink h2 hr.border { - border-color: $pink; - } - - h2 { - display: inline-block; - line-height: 1; - padding: 0 1em; - margin: 0 0 1.5em; - @include CBold; - - hr.border { - border-color: $green; - border-width: 0 0 5px; - margin: 0.575em -5% 1em - } - - .geo-shapes { - padding-bottom: 0; - font-size: 21px; - line-height: 1.5; - - hr { - width: 42.5%; - margin-left: auto; - margin-right: auto; - } - } - } - } - - .panel.panel--signoff { - min-height: 320px; - overflow: hidden; - margin-top: 75px; - - &.panel--signoff-how { - min-height: 570px; - } - - .text-center { - @include centerer; - margin-top: -5%; - z-index: 1200; - - .geo-shapes { - padding-top: 2em; - padding-bottom: 0.5em; - } - - h2 { - margin: 0.5em 0; - } - - h4 a { - @include ripple; - line-height: 1; - } - - p:last-child { - margin-bottom: 0; - } - } - - .shape-position.shape-position-bottom { - bottom: -10%; - } - } - - .intro { - @include centerer; - margin-top: 50px; - - .geo-shapes { - padding-bottom: 0.5em; - } - - p { - max-width: 92%; - font-size: 0.875em; - margin: 0.5em auto 1.5em; - } - } - - .content { - - .pics { - p { - padding-right: 0; - } - } - - .text-center { - p { - padding-right: 0; - } - } - - p { - padding-right: 5%; - line-height: 1.636; - margin-bottom: 1.5rem; - - &:last-child { - @include tablet { - margin-bottom: 1em; - } - } - - &.lead { - @include CMedium; - padding: 0; - font-size: 0.925em; - } - } - - code, - pre { - font-family: $font-family-monospace; - background: darken($light1, 1.5%); - border: none; - color: $dark2; - line-height: 1.8; - } - - table { - border: 2px solid $light1; - margin: 1.5em auto; - width: 100%; - - th, - td { - vertical-align: top; - padding: 0.825em 1.5em 1.25em 0.75em; - line-height: 1.333; - } - - th { - @include CBold; - color: white; - font-size: 1em; - background: $dark1; - line-height: 1.2; - } - - .small { - font-size: 0.75em; - line-height: 1.7; - max-width: 50%; - } - } - - dl { - margin: 0 0 1.5em; - font-size: 1.25rem; - line-height: 1.5; - - dt, - dd { - @include CMedium; - } - - dt { - @include CBold; - color: darken($light2, 12.5%); - } - - &.inline-list { - dt, - dd { - float: left; - display: inline-block; - margin-right: 1em; - } - - dt { - clear: left; - } - } - } - - address { - @include CMedium; - font-size: 1.25rem; - margin: 2em 0 1em; - line-height: 1.333; - - em { - @include CBold; - font-style: normal; - color: darken($light2, 12.5%); - } - } - - hr.blank { - color: white; - border-color: white; - } - - a.ripple { - @include ripple; - display: inline; - - &:after { - position: absolute; - left: 0; - bottom: -0.2em; - } - } - - .breakout-cta-row { - background: white; - box-shadow: 0 1px 3px darken($light2, 2.5%); - padding: 1em 1.25em; - margin-bottom: 1.25em; - - p.left { - font-size: 0.75em; - padding: 0.5em 0; - margin: 0; - color: darken($light2, 42.5%); - } - - @include mobile { - p.left, - button { - float: none; - text-align: center; - margin: 0 auto; - } - } - } - - .centerer { - @include centerer; - } - } - - .hidden { - display: none; - } - - .off-canvas-wrap { - height:100%; - } - - // required to enforce "sticky" menu items when hamburger is clicked - .off-canvas-wrap.move-left { - position: fixed; - } - - // ensure that top navbar hugs the top in mobile - .navbar.top-bar { - @include mobile { - top: 0; - } - } - - #tos { - padding-top: 100px; - @include mobile { - padding: 80px 20px 20px 20px; - } - } -} diff --git a/docs/themes/porter/assets/sass/helm-mixins.scss b/docs/themes/porter/assets/sass/helm-mixins.scss deleted file mode 100644 index 41b64623a..000000000 --- a/docs/themes/porter/assets/sass/helm-mixins.scss +++ /dev/null @@ -1,265 +0,0 @@ -/* Helm.sh Styles */ -// -// Variables -// -// 1. Colours -// 2. Setup Fonts -// 3. CSS3 & Vendor Prefixes - - -// 1. -// Porter Colours - -$gray: #3C2E53; // ideal for text -$gold: #DFB960; -$green: #DDF5F2; // ideal for bg -$pink: #CFBFD0; -$red: #AB2449; -$orange: #F1CE91; - - -// Helm Colours -// -// Primary Colors - -$blue1: #2DAFE9; -$blue2: #2BA0D3; -$blue3: #2090CD; -$blue4: #277A9F; - -// Shading -$grey1: #ccc; -$grey2: #999; -$grey3: #666; -$grey4: #333333; - -$light2: #EBF7FC; -$light1: lighten($light2, 2.5%); - - - // old helm.sh colors, discontinue these - $grey : #E4E4E4; - $light1 : #F4F4F4; - $light2 : #E4E4E4; - - $black : #555555; - $dark1 : #4E4E4E; - $dark2 : #464646; - - $blue : #3FB1E5; - $pink : #FF2A53; - - $darkpink : #EF637E; - $darkblue : #27759A; - $darkgreen : #44A653; - - $salmon : #F99EAC; - - $lightpink : #FF7590; - $lightblue : #7FCCF0; - $lightgreen : #68D478; - - -// 2. -// Fonts -// - -@font-face { - font-family: 'CBlack'; - src: url("/fonts/CBlack.otf") format("opentype"); -} - -@font-face { - font-family: 'CLight'; - src: url("/fonts/CLight.otf") format("opentype"); -} - -@font-face { - font-family: 'CMedium'; - src: url("/fonts/CMedium.otf") format("opentype"); -} - -@font-face { - font-family: 'CBold'; - src: url("/fonts/CBold.otf") format("opentype"); -} - -@mixin CBlack { - font-family: 'CBlack'; - font-weight: 900; -} - -@mixin CBold { - font-family: 'CBold'; -} - -@mixin CLight { - font-family: 'CLight'; -} - -@mixin CMedium { - font-family: 'CMedium'; -} - -@mixin upperCase { - text-transform: uppercase; - letter-spacing: 0.25em; -} - -@mixin normCase { - text-transform: none; - letter-spacing: 0.015em; -} - - -// 3. -// Load CSS & Vendor Prefixes -// -// via Compass -// https://github.com/gruntjs/grunt-contrib-compass -// - -//@import "assets/compass/css3"; - -@mixin transition($property:all, $duration:0.3s, $easing:ease-in-out) { - transition: $property $duration $easing; -} - -@mixin border-radius($radius1:3px, $radius2:3px) { - -webkit-border-radius: $radius1 $radius2 $radius1 $radius2; - -moz-border-radius: $radius1 $radius2 $radius1 $radius2; - border-radius: $radius1 $radius2 $radius1 $radius2; -} - -@mixin box-shadow($xlength:0, $ylength:2px, $size:0, $color:rgba(30,30,30,0.25)) { - -webkit-box-shadow: $xlength $ylength $size $color; - -moz-box-shadow: $xlength $ylength $size $color; - box-shadow: $xlength $ylength $size $color; -} - -@mixin keyframe ($animation_name) { - @-webkit-keyframes $animation_name { - @content; - } - @-moz-keyframes $animation_name { - @content; - } - @-o-keyframes $animation_name { - @content; - } - @keyframes $animation_name { - @content; - } -} - -@mixin animation ($delay, $duration, $animation) { - -webkit-animation-delay: $delay; - -webkit-animation-duration: $duration; - -webkit-animation-name: $animation; - -webkit-animation-fill-mode: forwards; - -moz-animation-delay: $delay; - -moz-animation-duration: $duration; - -moz-animation-name: $animation; - -moz-animation-fill-mode: forwards; - animation-delay: $delay; - animation-duration: $duration; - animation-name: $animation; - animation-fill-mode: forwards; -} - -/** - * Media query breakpoints - */ - $desktopFloor: 64.0625em; - $tabletFloor: 40.063em; - $tabletCeiling: 64.0624em; - $mobileCeiling: 60em; - - @mixin mobile { - @media only screen and (max-width: $mobileCeiling) { - @content; - } - } - - @mixin tablet { - @media only screen and (min-width: $tabletFloor) { - @content; - } - } - - @mixin mobileAndTablet { - @media only screen and (max-width: $tabletCeiling) { - @content; - } - } - - @mixin desktop { - @media only screen and (min-width: $desktopFloor) { - @content; - } - } - - @mixin landscape { - @media only screen and (min-width: 569px) and (max-width: 736px) and (orientation: landscape) { - @content; - } - } - - @mixin smallLandscape { - @media only screen and (max-width: 568px) and (orientation: landscape) { - @content; - } - } - - // vertical alignment - - @mixin fullheight { - min-height: 100%; - height: 100%; - } - - @mixin centerer { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - } - - @mixin topper { - position: absolute; - top: 0%; - } - - @mixin bottomer { - position: absolute; - bottom: 0%; - } - - // link effect - @mixin ripple($color: $salmon) { - position: relative; - display: inline-block; - text-align: center; - @include transition; - - &::after { - display: inline-block; - content: ""; - background: #cc0046; - height: 5px; - position: absolute; - bottom: 0; - left: 50%; - width: 10%; - opacity: 0; - margin: 0 0 0 -5%; - @include transition; - } - - &:hover::after { - width: 100%; - left: 0; - margin-left: 0; - opacity: 1; - } - } diff --git a/docs/themes/porter/assets/sass/helm-typography.scss b/docs/themes/porter/assets/sass/helm-typography.scss deleted file mode 100644 index 27756f417..000000000 --- a/docs/themes/porter/assets/sass/helm-typography.scss +++ /dev/null @@ -1,167 +0,0 @@ -// -/* Typography & Vertical Rythm -// -*/ - - -// Typography Variables - - $base-font-size: 16px; - - //scale down - $scalex0: $base-font-size * 0.625; // 11.4 / 10 - $scalex1: $base-font-size * 0.75; // 13.7 / 12 - $scalex2: $base-font-size * 0.8125; // 14.8 / 14 - $scalex3: $base-font-size * 0.875; // 16 / 14 (

) - $scalex4: $base-font-size * 0.9375; // 17.1 / 16 - - //scale up - $scalex5: $base-font-size * 1.12; // 20.5 / 18 - $scalex6: $base-font-size * 1.25; // 22.8 / 20 - $scalex7: $base-font-size * 1.5; // 27.4 / 24 - $scalex8: $base-font-size * 2; // 36.6 / 32 - $scalex9: $base-font-size * 2.25; // 41.1 / 36 - $scalex10: $base-font-size * 2.95; // 54.9 / 48 - - -$base-line-height: 1.5; -$base-vertical-space: 2.5rem; -$base-pad-right: 5%; - - -// Size Modifier Classes -.x0 { font-size: $scalex0; } -.x1 { font-size: $scalex1; } -.x2 { font-size: $scalex2; } -.x3 { font-size: $scalex3; } -.x4 { font-size: $scalex4; } -.x5 { font-size: $scalex5; } -.x6 { font-size: $scalex6; } -.x7 { font-size: $scalex7; } -.x8 { font-size: $scalex8; } -.x9 { font-size: $scalex9; } -.x10 { font-size: $scalex10; } - -// Ensure Aliasing -// -html, -body { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - - -// Base Typography Styles -// -h1, h2, h3, h4, h5, h6 { - @include CMedium; - margin-top: $base-vertical-space / 3; - margin-bottom: $base-vertical-space / 3; -} - -h1 { - color: $blue4; - font-size: $scalex10; - @include upperCase; - @include CBold; -} - -h2 { - font-size: $base-font-size * 2.25; - - &.onboard-welcome, - .onboard-welcome { - color: $blue4; - font-size: $scalex10; - @include CBold; - } - - &.onboard-tasks, - .onboard-tasks { - color: $blue3; - } - - &.onboard, - .onboard { - color: $blue4; - } - - &.welcome-text, - .welcome-text { - color: $blue4; - font-size: $base-font-size * 1.75; - @include CMedium; - } -} - -h3 { - font-size: $base-font-size * 1.5; -} - -.content { - h3 { - @include upperCase; - @include CBold; - font-size: $scalex2; - color: $grey2; - } -} - -h4 { - font-size: $base-font-size * 0.75; - @include CBold; - - &.day, - .day { - color: $grey2; - } -} - -h5 { - color: $grey4; -} - -.content h5, -.line-chart-wrap h5 { - @include CMedium; - @include upperCase; - font-size: $base-font-size * 0.75; -} - -p, ol, ul, dl, blockquote, table { - font-size: $scalex3; - padding-right: $base-pad-right; - font-family: $base; -} - -p { - line-height: 2.15; - color: $grey3; -} - -ol, ul { - margin-left: 1.8rem; - margin-bottom: $base-vertical-space; -} - -a { - color: $blue2; -} - - -.text-upper { - @include upperCase; -} - -.regular-text { - @include CMedium; -} - -.prefix, .postfix { - @include CBold; - @include border-radius; - @include upperCase; - font-size: $scalex3; - height: 3.3125rem; - line-height: 3.3125rem; -} diff --git a/docs/themes/porter/assets/sass/styles.scss b/docs/themes/porter/assets/sass/styles.scss deleted file mode 100755 index 651fd86e9..000000000 --- a/docs/themes/porter/assets/sass/styles.scss +++ /dev/null @@ -1,50 +0,0 @@ -/* == -Helm -*/ - -// point to the node_modules directory -$npm : '../../../../../node_modules'; - -// load reset (normalize) -@import "foundation/normalize.scss"; - -// load foundation -@import "foundation/components/grid.scss"; -@import "foundation/components/block-grid.scss"; - -@import "foundation/components/buttons.scss"; - -@import "foundation/components/inline-lists.scss"; -@import "foundation/components/top-bar.scss"; -@import "foundation/components/type.scss"; -@import "foundation/components/offcanvas.scss"; -@import "foundation/components/visibility.scss"; -@import "foundation/components/tables.scss"; - - -// load helm styles -@import "helm-animation.scss"; -@import "helm-mixins.scss"; -@import "helm-buttons.scss"; -@import "helm-typography.scss"; - -$fa-font-path: "/fonts" !default; -@import 'fontawesome/font-awesome.scss'; - -// load main helm.sh page -@import "helm-home.scss"; -@import "helm-blog.scss"; - -// load documentation styles -@import "docs-layout.scss"; -@import "docs-sidebar.scss"; -@import "docs-topbar.scss"; -@import "docs-footer.scss"; -@import "docs-home.scss"; -@import "docs-content.scss"; -@import "docs-responsive.scss"; -@import "docs-404.scss"; - -html { - background: white !important; -} diff --git a/docs/themes/porter/layouts/404/index.html b/docs/themes/porter/layouts/404/index.html deleted file mode 100755 index e282400df..000000000 --- a/docs/themes/porter/layouts/404/index.html +++ /dev/null @@ -1,20 +0,0 @@ -{{ partial "header.html" . }} - -

- {{ partial "docs-sidebar.html" . }} - - - - {{ partial "footer-home.html" . }} \ No newline at end of file diff --git a/docs/themes/porter/layouts/_default/article.html b/docs/themes/porter/layouts/_default/article.html deleted file mode 100755 index 247f84f21..000000000 --- a/docs/themes/porter/layouts/_default/article.html +++ /dev/null @@ -1,3 +0,0 @@ -
-
{{ .Content }}
-
\ No newline at end of file diff --git a/docs/themes/porter/layouts/_default/card.html b/docs/themes/porter/layouts/_default/card.html deleted file mode 100755 index 52b91e040..000000000 --- a/docs/themes/porter/layouts/_default/card.html +++ /dev/null @@ -1,3 +0,0 @@ -
-
{{ .Content }}
-
\ No newline at end of file diff --git a/docs/themes/porter/layouts/_default/li-grid.html b/docs/themes/porter/layouts/_default/li-grid.html deleted file mode 100755 index 2a0381af7..000000000 --- a/docs/themes/porter/layouts/_default/li-grid.html +++ /dev/null @@ -1 +0,0 @@ -
  • {{ .Title }}

  • diff --git a/docs/themes/porter/layouts/_default/li.html b/docs/themes/porter/layouts/_default/li.html deleted file mode 100755 index 2a0381af7..000000000 --- a/docs/themes/porter/layouts/_default/li.html +++ /dev/null @@ -1 +0,0 @@ -
  • {{ .Title }}

  • diff --git a/docs/themes/porter/layouts/_default/list-node.html b/docs/themes/porter/layouts/_default/list-node.html deleted file mode 100755 index 2a7efd112..000000000 --- a/docs/themes/porter/layouts/_default/list-node.html +++ /dev/null @@ -1,9 +0,0 @@ -
    - -
    \ No newline at end of file diff --git a/docs/themes/porter/layouts/_default/list.html b/docs/themes/porter/layouts/_default/list.html deleted file mode 100755 index e99493aab..000000000 --- a/docs/themes/porter/layouts/_default/list.html +++ /dev/null @@ -1,20 +0,0 @@ -{{ partial "header.html" . }} - -
    - {{ partial "docs-sidebar.html" . }} - -
    - {{ partial "topbar.html" . }} - -
    -
     
    -
    - {{ range .Paginator.Pages }} - {{ .Render "li"}} - {{ end }} -
    -
     
    -
    -
    - - {{ partial "footer.html" . }} diff --git a/docs/themes/porter/layouts/_default/section.html b/docs/themes/porter/layouts/_default/section.html deleted file mode 100755 index bbd19ab94..000000000 --- a/docs/themes/porter/layouts/_default/section.html +++ /dev/null @@ -1,35 +0,0 @@ -{{ partial "header.html" . }} - -
    - {{ partial "docs-sidebar.html" . }} - -
    - {{ partial "topbar.html" . }} - -
    -
     
    -
    -

    {{ .Title }}

    - {{ .Content }} -
    -
     
    -
    - -
    -
     
    -
    - {{ range (where .Pages ".Params.unlisted" "!=" "true") }} - - - {{ end }} -
    -
     
    -
    -
    - - {{ partial "footer.html" . }} diff --git a/docs/themes/porter/layouts/_default/single.html b/docs/themes/porter/layouts/_default/single.html deleted file mode 100755 index 1edfe9706..000000000 --- a/docs/themes/porter/layouts/_default/single.html +++ /dev/null @@ -1,19 +0,0 @@ -{{ partial "header.html" . }} - -
    - {{ partial "docs-sidebar.html" . }} - -
    - {{ partial "topbar.html" . }} - -
    -
     
    -
    -

    {{ .Title }}

    - {{ .Content }} -
    -
     
    -
    -
    - - {{ partial "footer.html" . }} diff --git a/docs/themes/porter/layouts/_default/summary.html b/docs/themes/porter/layouts/_default/summary.html deleted file mode 100755 index 964adb615..000000000 --- a/docs/themes/porter/layouts/_default/summary.html +++ /dev/null @@ -1,19 +0,0 @@ -
    - -
    diff --git a/docs/themes/porter/layouts/_default/table-row.html b/docs/themes/porter/layouts/_default/table-row.html deleted file mode 100755 index 46af71a5c..000000000 --- a/docs/themes/porter/layouts/_default/table-row.html +++ /dev/null @@ -1,4 +0,0 @@ - - {{ .Title }} - {{ .Date.Format "Jan 2, 2006" }} - diff --git a/docs/themes/porter/layouts/_default/taxonomy.html b/docs/themes/porter/layouts/_default/taxonomy.html deleted file mode 100644 index 859e05674..000000000 --- a/docs/themes/porter/layouts/_default/taxonomy.html +++ /dev/null @@ -1,32 +0,0 @@ -{{ partial "header.html" . }} - -
    -{{ partial "sidebar.html" . }} - -
    - {{ partial "topbar.html" . }} - -
     
    -
    -

    {{ title .Type | singularize }}: {{ .Title }}

    - {{ .Content }} - - {{ range .Paginator.Pages }} -
    -
    -

    {{ .Title }}

    -

    {{ dateFormat "Jan 2, 2006" .Date }}

    -
    - - {{ .Summary }} - {{ if .Truncated }} - - {{ end }} -
    - - {{ end }} -
    -
     
    -
    - -{{ partial "footer-blog.html" . }} \ No newline at end of file diff --git a/docs/themes/porter/layouts/blog/list.html b/docs/themes/porter/layouts/blog/list.html deleted file mode 100644 index 7d8434cca..000000000 --- a/docs/themes/porter/layouts/blog/list.html +++ /dev/null @@ -1,42 +0,0 @@ -{{ partial "header.html" . }} - -
    - {{ partial "sidebar.html" . }} - -
    - {{ partial "topbar.html" . }} - -
     
    -
    -

    {{ .Title }}

    - {{ .Content }} - - {{ range .Pages }} -
    -
    -

    {{ .Title }}

    -

    {{ dateFormat "Jan 2, 2006" .Date }}

    -
    - -
    - {{ if hasPrefix .Summary "

    " }} - {{ .Summary }} - {{ else }} -

    - {{ .Summary }} -

    - {{ end }} - {{ if .Truncated }} - - {{ end }} -
    -
    - - {{ end }} -
    -
     
    -
    - - {{ partial "footer.html" . }} - -
    diff --git a/docs/themes/porter/layouts/blog/rss.xml b/docs/themes/porter/layouts/blog/rss.xml deleted file mode 100644 index d6bd2fb32..000000000 --- a/docs/themes/porter/layouts/blog/rss.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - {{ .Title }} - {{ .Permalink }} - en-us - {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 MST" }} - {{ range first 10 .Data.Pages }} - - {{ .Title }} - {{ .Permalink }} - {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 MST" }} - {{ .Permalink }} - {{ .Content | html }} - - {{ end }} - - diff --git a/docs/themes/porter/layouts/blog/single.html b/docs/themes/porter/layouts/blog/single.html deleted file mode 100644 index a9b96775d..000000000 --- a/docs/themes/porter/layouts/blog/single.html +++ /dev/null @@ -1,37 +0,0 @@ -{{ partial "header.html" . }} - -
    - {{ partial "sidebar.html" . }} - -
    - {{ partial "topbar.html" . }} - -
     
    -
    -
    -

    {{ .Title }}

    -

    {{ dateFormat "Jan 2, 2006" .Date }}

    - {{ .Content }} - - -
    -
    - {{ partial "author.html" .}} -
    -
    - {{ partial "tags.html" . }} - - Subscribe to RSS -
    -
    -
    - - -
    -
    -
    -
     
    -
    -
    - - {{ partial "footer.html" . }} diff --git a/docs/themes/porter/layouts/index.html b/docs/themes/porter/layouts/index.html deleted file mode 100644 index bf97a5e32..000000000 --- a/docs/themes/porter/layouts/index.html +++ /dev/null @@ -1,343 +0,0 @@ - - - - - - - - - Porter - - - - - - - - - - - - - - - - - - - - - - - - - {{ $style := resources.Get "sass/styles.scss" | resources.ToCSS }} - - - - - - - - - -
    -
    - - - -
    - -
    - - -
    -
    -

    Your application, and everything you need to deploy, together 💖

    -

    Package your application, client tools, configuration, and deployment logic into an installer that you can distribute and run with a single command.

    - - Get Started -
    - -
    - -
    -
    -
    -

    What is Porter?

    -

    Take everything you need to do a deployment, the application itself and the entire process - to deploy it: command-line tools, configuration files, secrets, and bash scripts to glue it all together. - Package that into a versioned bundle distributed over standard Docker registries or plain tgz files.

    -

    Now anyone can install your application without deep knowledge of your deployment process, - or following a step-by-step deployment doc, regardless of the tech stack. -

    - -

    Why Porter?

    -
      -
    • Single command to find and deploy any application, regardless of the tech stack. No knowledge of the deployment process necessary.
    • -
    • Secure handling of secrets and credentials, integrated with industry standard secret stores.
    • -
    • Share the operational load of managing your team's deployments.
    • -
    • Works with and improves existing tools, such as bash, cloud CLIs, terraform and helm. You don't rewrite your existing deployments to start using Porter.
    • -
    • Reliable deployments because the client environment: cli versions, installed commands, configuration... is dependable and consistent.
    • -
    - -
    -

    When would I use Porter?

    -

    Porter is never a replacement for an existing tool. Think of it as doing extra nice things on top of what those great tools already do! - Below are some reasons why working with bundles with the tools embedded inside is helpful vs. using the same tools standalone. -

    -
      -
    • - -
      -
      Package
      -

      - Package everything you use to deploy in a single artifact that can be easily distributed over registries and across air gapped networks. -

      -
      -
    • - -
    • - - -
      -
      Secure
      -

      - JIT secret injection, immutable artifacts, and container security are just some of Porter's security features. -

      -
      -
      -
    • - -
    • - -
      -
      Time
      -

      - Save time because the bundle contains the exact version of your deployment tools. Users don’t need to find and install tools or switch between versions. -

      -
      -
    • - -
    • - -
      -
      Rich Metadata
      -

      - View rich metadata about a deployment. Run porter explain to quickly see how to customize an installation with parameters, what credentials are needed by the bundle. There is no need for detailed installation documentation. -

      -
      -
    • - -
    • - -
      -
      Operational Knowledge
      -

      - Reduce the operational knowledge required to manage an application. Often deployments involve multiple tools, such as terraform, helm, kubectl; all glued together with bash scripts. Bundles abstract away the details of a deployment, and provide a consistent set of commands to deploy any application. -

      -
      -
    • - -
    • - -
      -
      Team
      -

      - Manage deployments securely as a team. Porter uses secure just-in-time credential injection and remembers the parameters last used to deploy. Teammates don’t need to hunt down the proper values themselves, or copy sensitive credentials into local environment variables or files. Secrets remain secure in a secret store such as Hashicorp Vault or Azure Key Vault. -

      -
      -
    • -
    -

    -
    - -
    -
    -
    - -
    -
    -
    -

    - "It used to take a day for the dev team to roll out one to two environments. - We’ve gone from that to the ability to parallelize our deployment pipeline to target thousands of instances overnight at the push of a button. - The potential cost savings are significant given the scale we're talking about." -

    -

    - Ken Priyadarshi: EY Global Chief Architect
    - EY Technology
    -

    -

    - Read the case study -

    -
    -
    -
    - -
    -
    -
    -

    Porter Features

    -
    -
    - -
    -
    -

    Credentials and Secrets

    -
    -
    -

    - Credentials and secrets are retrieved from industry standard secret stores and securely injected. -

    -
    - -
    -
    -
    -

    Parameterized Bundles

    -
    -
    -

    - Use different configuration for production and staging, toggle feature switches and customize each installation of a bundle with parameters. -

    -
    - -
    -
    -

    Connect Action Inputs and Outputs

    -
    -
    -

    - Wire together tools that were not designed to integrate and seamlessly pass data between them. -

    -
    - -
    -
    -
    - -
    -
    - -
    -

    Contribute a Mixin

    -

    - Porter is a cloud-agnostic tool that can work anywhere and with any tool, but in order to - have great support for these clouds and tools, custom-made mixins are best.

    - -

    Is there a tool that you would like to use in a bundle that doesn't have a Custom Mixin

    - -

    Help us make more mixins! 🙌

    -

    -
    - -
    - -

    Example Bundles

    -
    - -

    Learn what you can do in a bundle

    - - -

    Example Bundles

    -
    - -
    -
    -
    - -
    -
    -
    -

    Join the Community

    -

    More information about the Porter project, and how to contribute.

    - -
    - - -
    - - -
    -
    -
    -

    Work on Porter with us!

    -

    We are actively seeking out new contributors with the - hopes of building up both casual contributors and enticing - some of you into becoming reviewers and maintainers.

    - -

    Learn how to Join Us!

    -
    -
    - -
    -
    - -
    -

    Project Status

    -

    Porter is committed to supporting the CNAB specification. We support the current 1.2.0 specification and all completed sub-specifications.

    -

    Check out our Roadmap!

    -
    -
    - -
    -
    - -
    - -
    -
    - -
    - - - -
    - - - - -
    -
    - - - - - - diff --git a/docs/themes/porter/layouts/partials/author.html b/docs/themes/porter/layouts/partials/author.html deleted file mode 100644 index 2273cf4f1..000000000 --- a/docs/themes/porter/layouts/partials/author.html +++ /dev/null @@ -1,11 +0,0 @@ -
    - - {{ if .Params.authorimage }} - - {{ end}} -
    - {{ .Params.authorname }}
    - {{ .Params.author }} -
    -
    -
    diff --git a/docs/themes/porter/layouts/partials/cookies.html b/docs/themes/porter/layouts/partials/cookies.html deleted file mode 100644 index 2cdde374d..000000000 --- a/docs/themes/porter/layouts/partials/cookies.html +++ /dev/null @@ -1,6 +0,0 @@ - \ No newline at end of file diff --git a/docs/themes/porter/layouts/partials/docs-sidebar.html b/docs/themes/porter/layouts/partials/docs-sidebar.html deleted file mode 100755 index 9ce739393..000000000 --- a/docs/themes/porter/layouts/partials/docs-sidebar.html +++ /dev/null @@ -1,67 +0,0 @@ - diff --git a/docs/themes/porter/layouts/partials/footer-blog.html b/docs/themes/porter/layouts/partials/footer-blog.html deleted file mode 100644 index d2d874f3d..000000000 --- a/docs/themes/porter/layouts/partials/footer-blog.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - -
    -
    - - - - - \ No newline at end of file diff --git a/docs/themes/porter/layouts/partials/footer-home.html b/docs/themes/porter/layouts/partials/footer-home.html deleted file mode 100755 index 49feb4d55..000000000 --- a/docs/themes/porter/layouts/partials/footer-home.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -
    -
    - -{{ partial "js.html" . }} - - - \ No newline at end of file diff --git a/docs/themes/porter/layouts/partials/footer.html b/docs/themes/porter/layouts/partials/footer.html deleted file mode 100755 index 89b60d2f8..000000000 --- a/docs/themes/porter/layouts/partials/footer.html +++ /dev/null @@ -1,9 +0,0 @@ - -
    - - - - - {{ partial "js.html" . }} - - \ No newline at end of file diff --git a/docs/themes/porter/layouts/partials/head.html b/docs/themes/porter/layouts/partials/head.html deleted file mode 100644 index 9a198fa23..000000000 --- a/docs/themes/porter/layouts/partials/head.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - Porter | {{ .Title }} - - - {{ $card := cond (isset .Params "image" ) .Params.image .Site.Params.image }} - - - - - - - - - - - - - - - - - - - - - - - - {{ $style := resources.Get "sass/styles.scss" | resources.ToCSS | resources.Minify }} - - - diff --git a/docs/themes/porter/layouts/partials/header.html b/docs/themes/porter/layouts/partials/header.html deleted file mode 100755 index 31b1a6c9a..000000000 --- a/docs/themes/porter/layouts/partials/header.html +++ /dev/null @@ -1,14 +0,0 @@ - - - -{{ partial "head.html" . }} - - - -
    -
    - - - - - {{ partial "offcanvas.html" . }} diff --git a/docs/themes/porter/layouts/partials/js.html b/docs/themes/porter/layouts/partials/js.html deleted file mode 100755 index f27db697e..000000000 --- a/docs/themes/porter/layouts/partials/js.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/themes/porter/layouts/partials/logo.html b/docs/themes/porter/layouts/partials/logo.html deleted file mode 100644 index 4537223c4..000000000 --- a/docs/themes/porter/layouts/partials/logo.html +++ /dev/null @@ -1 +0,0 @@ -Porter diff --git a/docs/themes/porter/layouts/partials/nav.html b/docs/themes/porter/layouts/partials/nav.html deleted file mode 100644 index 4b2c33a9f..000000000 --- a/docs/themes/porter/layouts/partials/nav.html +++ /dev/null @@ -1,7 +0,0 @@ -
  • Install
  • -
  • QuickStart
  • -
  • Blog
  • -
  • Community
  • -
  • Learning
  • -
  • Docs
  • -
  • Github
  • diff --git a/docs/themes/porter/layouts/partials/offcanvas.html b/docs/themes/porter/layouts/partials/offcanvas.html deleted file mode 100755 index e185ce15a..000000000 --- a/docs/themes/porter/layouts/partials/offcanvas.html +++ /dev/null @@ -1,37 +0,0 @@ - diff --git a/docs/themes/porter/layouts/partials/sidebar.html b/docs/themes/porter/layouts/partials/sidebar.html deleted file mode 100755 index c63370f3d..000000000 --- a/docs/themes/porter/layouts/partials/sidebar.html +++ /dev/null @@ -1,7 +0,0 @@ -
    -

    - - Porter | Back to home - -

    -
    diff --git a/docs/themes/porter/layouts/partials/tags.html b/docs/themes/porter/layouts/partials/tags.html deleted file mode 100644 index 57e96bb1b..000000000 --- a/docs/themes/porter/layouts/partials/tags.html +++ /dev/null @@ -1,9 +0,0 @@ -
    - {{ $taxo := "tags" }} - {{ with .Param $taxo }} - Tags:  - {{ range $index, $tag := . }} - {{- if gt $index 0 }}{{ end -}}{{ with $.Site.GetPage (printf "/%s/%s" $taxo $tag) -}}{{ $tag }}{{- end -}} - {{- end -}} - {{ end }} -
    diff --git a/docs/themes/porter/layouts/partials/topbar.html b/docs/themes/porter/layouts/partials/topbar.html deleted file mode 100755 index 92c3afc3b..000000000 --- a/docs/themes/porter/layouts/partials/topbar.html +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/docs/themes/porter/layouts/rss.xml b/docs/themes/porter/layouts/rss.xml deleted file mode 100755 index d6bd2fb32..000000000 --- a/docs/themes/porter/layouts/rss.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - {{ .Title }} - {{ .Permalink }} - en-us - {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 MST" }} - {{ range first 10 .Data.Pages }} - - {{ .Title }} - {{ .Permalink }} - {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 MST" }} - {{ .Permalink }} - {{ .Content | html }} - - {{ end }} - - diff --git a/docs/themes/porter/layouts/section/single.html b/docs/themes/porter/layouts/section/single.html deleted file mode 100755 index 1edfe9706..000000000 --- a/docs/themes/porter/layouts/section/single.html +++ /dev/null @@ -1,19 +0,0 @@ -{{ partial "header.html" . }} - -
    - {{ partial "docs-sidebar.html" . }} - -
    - {{ partial "topbar.html" . }} - -
    -
     
    -
    -

    {{ .Title }}

    - {{ .Content }} -
    -
     
    -
    -
    - - {{ partial "footer.html" . }} diff --git a/docs/themes/porter/layouts/shortcodes/youtube.html b/docs/themes/porter/layouts/shortcodes/youtube.html deleted file mode 100755 index ce7dd0508..000000000 --- a/docs/themes/porter/layouts/shortcodes/youtube.html +++ /dev/null @@ -1,4 +0,0 @@ -
    - -
    diff --git a/docs/themes/porter/layouts/slides/single.html b/docs/themes/porter/layouts/slides/single.html deleted file mode 100644 index e3ad8d335..000000000 --- a/docs/themes/porter/layouts/slides/single.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - {{ partial "head.html" . }} - - - - - - - - \ No newline at end of file diff --git a/docs/themes/porter/layouts/sources/sources.html b/docs/themes/porter/layouts/sources/sources.html deleted file mode 100755 index 0bbdadd51..000000000 --- a/docs/themes/porter/layouts/sources/sources.html +++ /dev/null @@ -1,18 +0,0 @@ -{{ partial "header.html" . }} - -
    - {{ partial "docs-sidebar.html" . }} - -
    - {{ partial "topbar.html" . }} - -
    -
     
    -
    - {{ .Content }} -
    -
     
    -
    -
    - - {{ partial "footer.html" . }} diff --git a/docs/themes/porter/static/css/custom.css b/docs/themes/porter/static/css/custom.css deleted file mode 100644 index 0a5b42b2b..000000000 --- a/docs/themes/porter/static/css/custom.css +++ /dev/null @@ -1,45 +0,0 @@ -.sidebar ul li a { - text-transform: none; -} - -.main img.mixin-logo { - min-width: 100px; - width: 200px; - max-width: 300px; - float: right; - box-shadow: none; -} - -.main img.mixin-logo:hover { - box-shadow: none; -} - -.main .content-wrapper h2 { - float: none; -} - -#helm.home .content .emoji-list { - list-style: none; -} - -#helm.home .content .emoji-list li:not(:last-child) { - padding-bottom: 1em; -} - -.emoji-list .emoji { - font-size: 2rem; -} - -#doc-version-picker { - display: flex; - align-items: center; - margin: 1em; -} - -#doc-version-picker a { - padding: 0; - color: #2ba0d3; - font-size: 14px; - letter-spacing: 0; - font-family: inherit; -} diff --git a/docs/themes/porter/static/css/prism.css b/docs/themes/porter/static/css/prism.css deleted file mode 100644 index 30d89a1c5..000000000 --- a/docs/themes/porter/static/css/prism.css +++ /dev/null @@ -1,141 +0,0 @@ -/* PrismJS 1.27.0 -https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+bash+docker+go+go-module+powershell+toml+yaml */ -/** - * prism.js default theme for JavaScript, CSS and HTML - * Based on dabblet (http://dabblet.com) - * @author Lea Verou - */ - -code[class*="language-"], -pre[class*="language-"] { - color: black; - background: none; - text-shadow: 0 1px white; - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - font-size: 1em; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, -code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { - text-shadow: none; - background: #b3d4fc; -} - -pre[class*="language-"]::selection, pre[class*="language-"] ::selection, -code[class*="language-"]::selection, code[class*="language-"] ::selection { - text-shadow: none; - background: #b3d4fc; -} - -@media print { - code[class*="language-"], - pre[class*="language-"] { - text-shadow: none; - } -} - -/* Code blocks */ -pre[class*="language-"] { - padding: 1em; - margin: .5em 0; - overflow: auto; -} - -:not(pre) > code[class*="language-"], -pre[class*="language-"] { - background: #f5f2f0; -} - -/* Inline code */ -:not(pre) > code[class*="language-"] { - padding: .1em; - border-radius: .3em; - white-space: normal; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: slategray; -} - -.token.punctuation { - color: #999; -} - -.token.namespace { - opacity: .7; -} - -.token.property, -.token.tag, -.token.boolean, -.token.number, -.token.constant, -.token.symbol, -.token.deleted { - color: #905; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.inserted { - color: #690; -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string { - color: #9a6e3a; -} - -.token.atrule, -.token.attr-value, -.token.keyword { - color: #07a; -} - -.token.function, -.token.class-name { - color: #DD4A68; -} - -.token.regex, -.token.important, -.token.variable { - color: #e90; -} - -.token.important, -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} - diff --git a/docs/themes/porter/static/css/slides.css b/docs/themes/porter/static/css/slides.css deleted file mode 100644 index 64af2f69e..000000000 --- a/docs/themes/porter/static/css/slides.css +++ /dev/null @@ -1,61 +0,0 @@ -.remark-slide-content { - background-image: url(/images/facet.png); - background-size: contain; - background-position: top; -} - -.remark-slide-content ol, -.remark-slide-content ul { - font-size: 1.2rem; -} - -.remark-slide-content li, -.remark-slide-content p { - font-size: 1.2em; - line-height: 1.2em; - color: #666 -} - -.remark-code { - font-size: .8em; - display: block; - overflow-x: auto; -} - -.remark-slide-content pre { - margin-bottom: 1em; -} - -.remark-slide-content p, -.remark-slide-content pre, -.remark-slide-content ol, -.remark-slide-content ul { - max-width: 40em; /* Don't run into the green stuff on the right from the facet theme */ -} - -.remark-slide-content div.center p { - max-width: unset; /* If we are centering, limiting the width shoves stuff off to the left */ -} - -.remark-slide-content .footnote { - color: grey; - font-size: .7em; -} - -.remark-slide-content #introductions { - width: 40em; -} -.remark-slide-content #introductions p { - margin-bottom: unset; - white-space: nowrap; -} - -.remark-slide-content blockquote { - font-weight: bold; - font-size: 1.5rem; - margin-top: 1rem; -} - -.remark-slide-content .nudge { - margin-top: 12rem; -} \ No newline at end of file diff --git a/docs/themes/porter/static/fonts/CBlack.otf b/docs/themes/porter/static/fonts/CBlack.otf deleted file mode 100644 index c62b210c5..000000000 Binary files a/docs/themes/porter/static/fonts/CBlack.otf and /dev/null differ diff --git a/docs/themes/porter/static/fonts/CBold.otf b/docs/themes/porter/static/fonts/CBold.otf deleted file mode 100644 index 9b6139592..000000000 Binary files a/docs/themes/porter/static/fonts/CBold.otf and /dev/null differ diff --git a/docs/themes/porter/static/fonts/CLight.otf b/docs/themes/porter/static/fonts/CLight.otf deleted file mode 100644 index 3a1f1ad82..000000000 Binary files a/docs/themes/porter/static/fonts/CLight.otf and /dev/null differ diff --git a/docs/themes/porter/static/fonts/CMedium.otf b/docs/themes/porter/static/fonts/CMedium.otf deleted file mode 100644 index 7541a5a1f..000000000 Binary files a/docs/themes/porter/static/fonts/CMedium.otf and /dev/null differ diff --git a/docs/themes/porter/static/fonts/FontAwesome.otf b/docs/themes/porter/static/fonts/FontAwesome.otf deleted file mode 100644 index 401ec0f36..000000000 Binary files a/docs/themes/porter/static/fonts/FontAwesome.otf and /dev/null differ diff --git a/docs/themes/porter/static/fonts/fontawesome-webfont.eot b/docs/themes/porter/static/fonts/fontawesome-webfont.eot deleted file mode 100644 index e9f60ca95..000000000 Binary files a/docs/themes/porter/static/fonts/fontawesome-webfont.eot and /dev/null differ diff --git a/docs/themes/porter/static/fonts/fontawesome-webfont.svg b/docs/themes/porter/static/fonts/fontawesome-webfont.svg deleted file mode 100644 index 855c845e5..000000000 --- a/docs/themes/porter/static/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,2671 +0,0 @@ - - - - -Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 - By ,,, -Copyright Dave Gandy 2016. All rights reserved. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/themes/porter/static/fonts/fontawesome-webfont.ttf b/docs/themes/porter/static/fonts/fontawesome-webfont.ttf deleted file mode 100644 index 35acda2fa..000000000 Binary files a/docs/themes/porter/static/fonts/fontawesome-webfont.ttf and /dev/null differ diff --git a/docs/themes/porter/static/fonts/fontawesome-webfont.woff b/docs/themes/porter/static/fonts/fontawesome-webfont.woff deleted file mode 100644 index 400014a4b..000000000 Binary files a/docs/themes/porter/static/fonts/fontawesome-webfont.woff and /dev/null differ diff --git a/docs/themes/porter/static/fonts/fontawesome-webfont.woff2 b/docs/themes/porter/static/fonts/fontawesome-webfont.woff2 deleted file mode 100644 index 4d13fc604..000000000 Binary files a/docs/themes/porter/static/fonts/fontawesome-webfont.woff2 and /dev/null differ diff --git a/docs/themes/porter/static/img/chart-illustration.png b/docs/themes/porter/static/img/chart-illustration.png deleted file mode 100644 index f0406fefd..000000000 Binary files a/docs/themes/porter/static/img/chart-illustration.png and /dev/null differ diff --git a/docs/themes/porter/static/img/cncf-color.png b/docs/themes/porter/static/img/cncf-color.png deleted file mode 100644 index 9c3fd0760..000000000 Binary files a/docs/themes/porter/static/img/cncf-color.png and /dev/null differ diff --git a/docs/themes/porter/static/img/deis-logo-white.png b/docs/themes/porter/static/img/deis-logo-white.png deleted file mode 100644 index c4abd7954..000000000 Binary files a/docs/themes/porter/static/img/deis-logo-white.png and /dev/null differ diff --git a/docs/themes/porter/static/img/favicon.ico b/docs/themes/porter/static/img/favicon.ico deleted file mode 100644 index d3102622b..000000000 Binary files a/docs/themes/porter/static/img/favicon.ico and /dev/null differ diff --git a/docs/themes/porter/static/img/favicon.png b/docs/themes/porter/static/img/favicon.png deleted file mode 100644 index 2672d3793..000000000 Binary files a/docs/themes/porter/static/img/favicon.png and /dev/null differ diff --git a/docs/themes/porter/static/img/favicons/android-chrome-192x192.png b/docs/themes/porter/static/img/favicons/android-chrome-192x192.png deleted file mode 100644 index 5caf388df..000000000 Binary files a/docs/themes/porter/static/img/favicons/android-chrome-192x192.png and /dev/null differ diff --git a/docs/themes/porter/static/img/favicons/android-chrome-384x384.png b/docs/themes/porter/static/img/favicons/android-chrome-384x384.png deleted file mode 100644 index 594c26556..000000000 Binary files a/docs/themes/porter/static/img/favicons/android-chrome-384x384.png and /dev/null differ diff --git a/docs/themes/porter/static/img/favicons/apple-touch-icon.png b/docs/themes/porter/static/img/favicons/apple-touch-icon.png deleted file mode 100644 index e6104c57e..000000000 Binary files a/docs/themes/porter/static/img/favicons/apple-touch-icon.png and /dev/null differ diff --git a/docs/themes/porter/static/img/favicons/browserconfig.xml b/docs/themes/porter/static/img/favicons/browserconfig.xml deleted file mode 100644 index 491d2e501..000000000 --- a/docs/themes/porter/static/img/favicons/browserconfig.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - #ffffff - - - diff --git a/docs/themes/porter/static/img/favicons/favicon-16x16.png b/docs/themes/porter/static/img/favicons/favicon-16x16.png deleted file mode 100644 index c38317a79..000000000 Binary files a/docs/themes/porter/static/img/favicons/favicon-16x16.png and /dev/null differ diff --git a/docs/themes/porter/static/img/favicons/favicon-32x32.png b/docs/themes/porter/static/img/favicons/favicon-32x32.png deleted file mode 100644 index 550d28125..000000000 Binary files a/docs/themes/porter/static/img/favicons/favicon-32x32.png and /dev/null differ diff --git a/docs/themes/porter/static/img/favicons/favicon.ico b/docs/themes/porter/static/img/favicons/favicon.ico deleted file mode 100644 index d51fdee53..000000000 Binary files a/docs/themes/porter/static/img/favicons/favicon.ico and /dev/null differ diff --git a/docs/themes/porter/static/img/favicons/favicon.png b/docs/themes/porter/static/img/favicons/favicon.png deleted file mode 100644 index ffee70e85..000000000 Binary files a/docs/themes/porter/static/img/favicons/favicon.png and /dev/null differ diff --git a/docs/themes/porter/static/img/favicons/mstile-150x150.png b/docs/themes/porter/static/img/favicons/mstile-150x150.png deleted file mode 100644 index 61e961c2d..000000000 Binary files a/docs/themes/porter/static/img/favicons/mstile-150x150.png and /dev/null differ diff --git a/docs/themes/porter/static/img/favicons/site.webmanifest b/docs/themes/porter/static/img/favicons/site.webmanifest deleted file mode 100644 index 885baf23f..000000000 --- a/docs/themes/porter/static/img/favicons/site.webmanifest +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "Your application, and everything you need to deploy, together", - "short_name": "Porter", - "icons": [ - { - "src": "/img/favicons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "/img/favicons/android-chrome-384x384.png", - "sizes": "384x384", - "type": "image/png" - } - - ], - "theme_color": "#ffffff", - "background_color": "#ffffff", - "display": "standalone" -} diff --git a/docs/themes/porter/static/img/feature-icon-1.png b/docs/themes/porter/static/img/feature-icon-1.png deleted file mode 100644 index 651523c90..000000000 Binary files a/docs/themes/porter/static/img/feature-icon-1.png and /dev/null differ diff --git a/docs/themes/porter/static/img/feature-icon-2.png b/docs/themes/porter/static/img/feature-icon-2.png deleted file mode 100644 index 1760a25d8..000000000 Binary files a/docs/themes/porter/static/img/feature-icon-2.png and /dev/null differ diff --git a/docs/themes/porter/static/img/feature-icon-3.png b/docs/themes/porter/static/img/feature-icon-3.png deleted file mode 100644 index 561b6b69f..000000000 Binary files a/docs/themes/porter/static/img/feature-icon-3.png and /dev/null differ diff --git a/docs/themes/porter/static/img/feature-icon-4.png b/docs/themes/porter/static/img/feature-icon-4.png deleted file mode 100644 index fb81c99f1..000000000 Binary files a/docs/themes/porter/static/img/feature-icon-4.png and /dev/null differ diff --git a/docs/themes/porter/static/img/features-bg.png b/docs/themes/porter/static/img/features-bg.png deleted file mode 100644 index 4c4cdf158..000000000 Binary files a/docs/themes/porter/static/img/features-bg.png and /dev/null differ diff --git a/docs/themes/porter/static/img/fish.png b/docs/themes/porter/static/img/fish.png deleted file mode 100644 index daf01fbcb..000000000 Binary files a/docs/themes/porter/static/img/fish.png and /dev/null differ diff --git a/docs/themes/porter/static/img/github.svg b/docs/themes/porter/static/img/github.svg deleted file mode 100644 index 34b2509eb..000000000 --- a/docs/themes/porter/static/img/github.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - Fill 5 - Created with Sketch. - - - - - \ No newline at end of file diff --git a/docs/themes/porter/static/img/helm-blue-vector.svg b/docs/themes/porter/static/img/helm-blue-vector.svg deleted file mode 100644 index b8707ba90..000000000 --- a/docs/themes/porter/static/img/helm-blue-vector.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - logo - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/docs/themes/porter/static/img/helm-charts.png b/docs/themes/porter/static/img/helm-charts.png deleted file mode 100644 index 486734bc3..000000000 Binary files a/docs/themes/porter/static/img/helm-charts.png and /dev/null differ diff --git a/docs/themes/porter/static/img/helm-footer-logo.png b/docs/themes/porter/static/img/helm-footer-logo.png deleted file mode 100644 index 582aca8fb..000000000 Binary files a/docs/themes/porter/static/img/helm-footer-logo.png and /dev/null differ diff --git a/docs/themes/porter/static/img/helm-logo-deis.png b/docs/themes/porter/static/img/helm-logo-deis.png deleted file mode 100644 index 04f722671..000000000 Binary files a/docs/themes/porter/static/img/helm-logo-deis.png and /dev/null differ diff --git a/docs/themes/porter/static/img/helm-logo-microsoft.png b/docs/themes/porter/static/img/helm-logo-microsoft.png deleted file mode 100644 index 5ae834e55..000000000 Binary files a/docs/themes/porter/static/img/helm-logo-microsoft.png and /dev/null differ diff --git a/docs/themes/porter/static/img/helm-logo-microsoft.svg b/docs/themes/porter/static/img/helm-logo-microsoft.svg deleted file mode 100644 index 2ea2487b6..000000000 --- a/docs/themes/porter/static/img/helm-logo-microsoft.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - Group 4 - Created with Sketch. - - - - - - - supported by - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/themes/porter/static/img/helm-logo.svg b/docs/themes/porter/static/img/helm-logo.svg deleted file mode 100644 index 6014e6d04..000000000 --- a/docs/themes/porter/static/img/helm-logo.svg +++ /dev/null @@ -1 +0,0 @@ -helm-logo \ No newline at end of file diff --git a/docs/themes/porter/static/img/helm-white-vector.svg b/docs/themes/porter/static/img/helm-white-vector.svg deleted file mode 100644 index 4b5163d8f..000000000 --- a/docs/themes/porter/static/img/helm-white-vector.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - logo white - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/themes/porter/static/img/logo-with-deis.png b/docs/themes/porter/static/img/logo-with-deis.png deleted file mode 100644 index ff8683652..000000000 Binary files a/docs/themes/porter/static/img/logo-with-deis.png and /dev/null differ diff --git a/docs/themes/porter/static/img/microsoft.png b/docs/themes/porter/static/img/microsoft.png deleted file mode 100644 index 8e833c027..000000000 Binary files a/docs/themes/porter/static/img/microsoft.png and /dev/null differ diff --git a/docs/themes/porter/static/img/microsoft.svg b/docs/themes/porter/static/img/microsoft.svg deleted file mode 100644 index 0247141da..000000000 --- a/docs/themes/porter/static/img/microsoft.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - microsoft - Created with Sketch. - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/themes/porter/static/img/pattern-topo-sm.png b/docs/themes/porter/static/img/pattern-topo-sm.png deleted file mode 100644 index 16cb86d9f..000000000 Binary files a/docs/themes/porter/static/img/pattern-topo-sm.png and /dev/null differ diff --git a/docs/themes/porter/static/img/pattern-topo-white.png b/docs/themes/porter/static/img/pattern-topo-white.png deleted file mode 100644 index 532ca9143..000000000 Binary files a/docs/themes/porter/static/img/pattern-topo-white.png and /dev/null differ diff --git a/docs/themes/porter/static/img/pattern-topo.png b/docs/themes/porter/static/img/pattern-topo.png deleted file mode 100644 index 4d7665416..000000000 Binary files a/docs/themes/porter/static/img/pattern-topo.png and /dev/null differ diff --git a/docs/themes/porter/static/img/porter-docs-header.svg b/docs/themes/porter/static/img/porter-docs-header.svg deleted file mode 100644 index 1e6aea4fd..000000000 --- a/docs/themes/porter/static/img/porter-docs-header.svg +++ /dev/null @@ -1,86 +0,0 @@ - - - - DOCS - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/themes/porter/static/js/app_init.min.js b/docs/themes/porter/static/js/app_init.min.js deleted file mode 100644 index df16495bf..000000000 --- a/docs/themes/porter/static/js/app_init.min.js +++ /dev/null @@ -1 +0,0 @@ -$(document).ready(function(){$(document).foundation();var t=window.location.pathname,a=t.substring(0,t.lastIndexOf("/")),e=a.substring(a.lastIndexOf("/")+1);$(".toctree-l1 > a[href='"+e+"']").addClass("active").attr({state:"open"}),$(".toctree-l1 > a").click(function(){return"open"!=$(this).attr("state")&&("open"!=$(this).attr("state")&&0<$(this).siblings().size()?($(".toctree-l1 > ul").hide(),$(".toctree-l1 > a").attr("state",""),$(this).attr("state","open"),$(this).next().slideDown(function(){}),!1):void 0)})}),$(function(){return $("h1, h2, h3, h4, h5, h6").each(function(t,a){var e,n;if('',n=(e=$(a)).attr("id"))return e.prepend($("").addClass("header-link").attr("href","#"+n).html(''))})}); \ No newline at end of file diff --git a/docs/themes/porter/static/js/custom/app_init.js b/docs/themes/porter/static/js/custom/app_init.js deleted file mode 100755 index a5949ead2..000000000 --- a/docs/themes/porter/static/js/custom/app_init.js +++ /dev/null @@ -1,61 +0,0 @@ -$(document).ready(function() { - $(document).foundation(); - - // custom theme js for sidebar links - var allClosed; - - // close all accordions, besides that of the page that is currently active - var curPage = window.location.pathname+window.location.search+window.location.hash - - // Find nav links even when they don't end in / - var curPage2 = curPage.slice(0, curPage.length-1) - var activeLink = $(".sidebar-nav a[href='" + curPage + "'], .sidebar-nav a[href='" + curPage2 + "']"); - activeLink.addClass('active'); - - // Try to open the parent menus - var parentMenu = activeLink.closest('li.toctree-l2'); - if(parentMenu) { - var parentLink = parentMenu.children('a'); - parentLink.addClass('active').attr({state: "open"}); - } - - var parentMenu = activeLink.closest('li.toctree-l1'); - var parentLink = parentMenu.children('a'); - parentLink.addClass('active').attr({state: "open"}); - - if (allClosed === true) { } - - // if menu is closed when clicked, expand it - $('.toctree-l1 > a').click(function() { - //Make the titles of open accordions dead links - if ($(this).attr('state') == 'open') {return false;} - - //Clicking on a title of a closed accordion - if($(this).attr('state') != 'open' && $(this).siblings().size() > 0) { - $('.toctree-l1 > ul, .toctree-l2 > ul').hide(); - $('.toctree-l1 > a, .toctree-l2 > a').attr('state', ''); - $(this).attr('state', 'open'); - let nestedTrees = this.nextElementSibling.querySelectorAll('ul'); - for (let i = 0; i < nestedTrees.length; i++) { - let tree = nestedTrees[0] - tree.style.display = "block" - } - $(this).next().slideDown(function(){}); - return false; - } - }); -}); // document ready - - -// add permalinks to titles -$(function() { - return $("h1, h2, h3, h4, h5, h6").each(function(i, el) { - var $el, icon, id; - $el = $(el); - id = $el.attr('id'); - icon = ''; - if (id) { - return $el.prepend($("").addClass("header-link").attr("href", "#" + id).html(icon)); - } - }); -}); diff --git a/docs/themes/porter/static/js/custom/copy_code.js b/docs/themes/porter/static/js/custom/copy_code.js deleted file mode 100644 index cbb750e49..000000000 --- a/docs/themes/porter/static/js/custom/copy_code.js +++ /dev/null @@ -1,30 +0,0 @@ -document.querySelectorAll("pre").forEach(preElement => { - var codeElement = preElement.querySelector("code") - - /* There should be code element inside pre element and - code element should not have language-console class */ - if (codeElement != null && !codeElement.classList.contains("language-console")) { - var copyButtonContainer = document.createElement('div') - copyButtonContainer.classList.add("copy-button-container") - var copyButton = document.createElement('button'); - copyButtonContainer.append(copyButton) - - copyButton.className = "copy-button" - copyButton.innerText = 'copy'; - - copyButton.addEventListener('click', () => { - navigator.clipboard.writeText(codeElement.innerText).then(e => { - copyButton.innerText = "copied" - }).catch(e => { - copyButton.innerText = "error" - }) - - // Restore original "copy" text on button after 900 milliseconds - setTimeout(() => innerText = "copy", 900) - }); - - // Insert before pre element so that it can appear in top of code block - preElement.parentElement.insertBefore(copyButtonContainer, preElement) - } -}) - diff --git a/docs/themes/porter/static/js/custom/foundation.accordion.js b/docs/themes/porter/static/js/custom/foundation.accordion.js deleted file mode 100755 index be329ae66..000000000 --- a/docs/themes/porter/static/js/custom/foundation.accordion.js +++ /dev/null @@ -1,125 +0,0 @@ -;(function ($, window, document, undefined) { - 'use strict'; - - Foundation.libs.accordion = { - name : 'accordion', - - version : '5.5.3', - - settings : { - content_class : 'content', - active_class : 'active', - multi_expand : false, - toggleable : true, - callback : function () {} - }, - - init : function (scope, method, options) { - this.bindings(method, options); - }, - - events : function (instance) { - var self = this; - var S = this.S; - self.create(this.S(instance)); - - S(this.scope) - .off('.fndtn.accordion') - .on('click.fndtn.accordion', '[' + this.attr_name() + '] > dd > a, [' + this.attr_name() + '] > li > a', function (e) { - var accordion = S(this).closest('[' + self.attr_name() + ']'), - groupSelector = self.attr_name() + '=' + accordion.attr(self.attr_name()), - settings = accordion.data(self.attr_name(true) + '-init') || self.settings, - target = S('#' + this.href.split('#')[1]), - aunts = $('> dd, > li', accordion), - siblings = aunts.children('.' + settings.content_class), - active_content = siblings.filter('.' + settings.active_class); - - e.preventDefault(); - - if (accordion.attr(self.attr_name())) { - siblings = siblings.add('[' + groupSelector + '] dd > ' + '.' + settings.content_class + ', [' + groupSelector + '] li > ' + '.' + settings.content_class); - aunts = aunts.add('[' + groupSelector + '] dd, [' + groupSelector + '] li'); - } - - if (settings.toggleable && target.is(active_content)) { - target.parent('dd, li').toggleClass(settings.active_class, false); - target.toggleClass(settings.active_class, false); - S(this).attr('aria-expanded', function(i, attr){ - return attr === 'true' ? 'false' : 'true'; - }); - settings.callback(target); - target.triggerHandler('toggled', [accordion]); - accordion.triggerHandler('toggled', [target]); - return; - } - - if (!settings.multi_expand) { - siblings.removeClass(settings.active_class); - aunts.removeClass(settings.active_class); - aunts.children('a').attr('aria-expanded','false'); - } - - target.addClass(settings.active_class).parent().addClass(settings.active_class); - settings.callback(target); - target.triggerHandler('toggled', [accordion]); - accordion.triggerHandler('toggled', [target]); - S(this).attr('aria-expanded','true'); - }); - }, - - create: function($instance) { - var self = this, - accordion = $instance, - aunts = $('> .accordion-navigation', accordion), - settings = accordion.data(self.attr_name(true) + '-init') || self.settings; - - aunts.children('a').attr('aria-expanded','false'); - aunts.has('.' + settings.content_class + '.' + settings.active_class).addClass(settings.active_class).children('a').attr('aria-expanded','true'); - - if (settings.multi_expand) { - $instance.attr('aria-multiselectable','true'); - } - }, - - toggle : function(options) { - var options = typeof options !== 'undefined' ? options : {}; - var selector = typeof options.selector !== 'undefined' ? options.selector : ''; - var toggle_state = typeof options.toggle_state !== 'undefined' ? options.toggle_state : ''; - var $accordion = typeof options.$accordion !== 'undefined' ? options.$accordion : this.S(this.scope).closest('[' + this.attr_name() + ']'); - - var $items = $accordion.find('> dd' + selector + ', > li' + selector); - if ( $items.length < 1 ) { - if ( window.console ) { - console.error('Selection not found.', selector); - } - return false; - } - - var S = this.S; - var active_class = this.settings.active_class; - $items.each(function() { - var $item = S(this); - var is_active = $item.hasClass(active_class); - if ( ( is_active && toggle_state === 'close' ) || ( !is_active && toggle_state === 'open' ) || toggle_state === '' ) { - $item.find('> a').trigger('click.fndtn.accordion'); - } - }); - }, - - open : function(options) { - var options = typeof options !== 'undefined' ? options : {}; - options.toggle_state = 'open'; - this.toggle(options); - }, - - close : function(options) { - var options = typeof options !== 'undefined' ? options : {}; - options.toggle_state = 'close'; - this.toggle(options); - }, - - off : function () {}, - - reflow : function () {} - }; -}(jQuery, window, window.document)); diff --git a/docs/themes/porter/static/js/custom/foundation.dropdown.js b/docs/themes/porter/static/js/custom/foundation.dropdown.js deleted file mode 100755 index 5db3dea6d..000000000 --- a/docs/themes/porter/static/js/custom/foundation.dropdown.js +++ /dev/null @@ -1,468 +0,0 @@ -;(function ($, window, document, undefined) { - 'use strict'; - - Foundation.libs.dropdown = { - name : 'dropdown', - - version : '5.5.3', - - settings : { - active_class : 'open', - disabled_class : 'disabled', - mega_class : 'mega', - align : 'bottom', - is_hover : false, - hover_timeout : 150, - opened : function () {}, - closed : function () {} - }, - - init : function (scope, method, options) { - Foundation.inherit(this, 'throttle'); - - $.extend(true, this.settings, method, options); - this.bindings(method, options); - }, - - events : function (scope) { - var self = this, - S = self.S; - - S(this.scope) - .off('.dropdown') - .on('click.fndtn.dropdown', '[' + this.attr_name() + ']', function (e) { - var settings = S(this).data(self.attr_name(true) + '-init') || self.settings; - if (!settings.is_hover || Modernizr.touch) { - e.preventDefault(); - if (S(this).parent('[data-reveal-id]').length) { - e.stopPropagation(); - } - self.toggle($(this)); - } - }) - .on('mouseenter.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) { - var $this = S(this), - dropdown, - target; - - clearTimeout(self.timeout); - - if ($this.data(self.data_attr())) { - dropdown = S('#' + $this.data(self.data_attr())); - target = $this; - } else { - dropdown = $this; - target = S('[' + self.attr_name() + '="' + dropdown.attr('id') + '"]'); - } - - var settings = target.data(self.attr_name(true) + '-init') || self.settings; - - if (S(e.currentTarget).data(self.data_attr()) && settings.is_hover) { - self.closeall.call(self); - } - - if (settings.is_hover) { - self.open.apply(self, [dropdown, target]); - } - }) - .on('mouseleave.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) { - var $this = S(this); - var settings; - - if ($this.data(self.data_attr())) { - settings = $this.data(self.data_attr(true) + '-init') || self.settings; - } else { - var target = S('[' + self.attr_name() + '="' + S(this).attr('id') + '"]'), - settings = target.data(self.attr_name(true) + '-init') || self.settings; - } - - self.timeout = setTimeout(function () { - if ($this.data(self.data_attr())) { - if (settings.is_hover) { - self.close.call(self, S('#' + $this.data(self.data_attr()))); - } - } else { - if (settings.is_hover) { - self.close.call(self, $this); - } - } - }.bind(this), settings.hover_timeout); - }) - .on('click.fndtn.dropdown', function (e) { - var parent = S(e.target).closest('[' + self.attr_name() + '-content]'); - var links = parent.find('a'); - - if (links.length > 0 && parent.attr('aria-autoclose') !== 'false') { - self.close.call(self, S('[' + self.attr_name() + '-content]')); - } - - if (e.target !== document && !$.contains(document.documentElement, e.target)) { - return; - } - - if (S(e.target).closest('[' + self.attr_name() + ']').length > 0) { - return; - } - - if (!(S(e.target).data('revealId')) && - (parent.length > 0 && (S(e.target).is('[' + self.attr_name() + '-content]') || - $.contains(parent.first()[0], e.target)))) { - e.stopPropagation(); - return; - } - - self.close.call(self, S('[' + self.attr_name() + '-content]')); - }) - .on('opened.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () { - self.settings.opened.call(this); - }) - .on('closed.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () { - self.settings.closed.call(this); - }); - - S(window) - .off('.dropdown') - .on('resize.fndtn.dropdown', self.throttle(function () { - self.resize.call(self); - }, 50)); - - this.resize(); - }, - - close : function (dropdown) { - var self = this; - dropdown.each(function (idx) { - var original_target = $('[' + self.attr_name() + '=' + dropdown[idx].id + ']') || $('aria-controls=' + dropdown[idx].id + ']'); - original_target.attr('aria-expanded', 'false'); - if (self.S(this).hasClass(self.settings.active_class)) { - self.S(this) - .css(Foundation.rtl ? 'right' : 'left', '-99999px') - .attr('aria-hidden', 'true') - .removeClass(self.settings.active_class) - .prev('[' + self.attr_name() + ']') - .removeClass(self.settings.active_class) - .removeData('target'); - - self.S(this).trigger('closed.fndtn.dropdown', [dropdown]); - } - }); - dropdown.removeClass('f-open-' + this.attr_name(true)); - }, - - closeall : function () { - var self = this; - $.each(self.S('.f-open-' + this.attr_name(true)), function () { - self.close.call(self, self.S(this)); - }); - }, - - open : function (dropdown, target) { - this - .css(dropdown - .addClass(this.settings.active_class), target); - dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class); - dropdown.data('target', target.get(0)).trigger('opened.fndtn.dropdown', [dropdown, target]); - dropdown.attr('aria-hidden', 'false'); - target.attr('aria-expanded', 'true'); - dropdown.focus(); - dropdown.addClass('f-open-' + this.attr_name(true)); - }, - - data_attr : function () { - if (this.namespace.length > 0) { - return this.namespace + '-' + this.name; - } - - return this.name; - }, - - toggle : function (target) { - if (target.hasClass(this.settings.disabled_class)) { - return; - } - var dropdown = this.S('#' + target.data(this.data_attr())); - if (dropdown.length === 0) { - // No dropdown found, not continuing - return; - } - - this.close.call(this, this.S('[' + this.attr_name() + '-content]').not(dropdown)); - - if (dropdown.hasClass(this.settings.active_class)) { - this.close.call(this, dropdown); - if (dropdown.data('target') !== target.get(0)) { - this.open.call(this, dropdown, target); - } - } else { - this.open.call(this, dropdown, target); - } - }, - - resize : function () { - var dropdown = this.S('[' + this.attr_name() + '-content].open'); - var target = $(dropdown.data("target")); - - if (dropdown.length && target.length) { - this.css(dropdown, target); - } - }, - - css : function (dropdown, target) { - var left_offset = Math.max((target.width() - dropdown.width()) / 2, 8), - settings = target.data(this.attr_name(true) + '-init') || this.settings, - parentOverflow = dropdown.parent().css('overflow-y') || dropdown.parent().css('overflow'); - - this.clear_idx(); - - - - if (this.small()) { - var p = this.dirs.bottom.call(dropdown, target, settings); - - dropdown.attr('style', '').removeClass('drop-left drop-right drop-top').css({ - position : 'absolute', - width : '95%', - 'max-width' : 'none', - top : p.top - }); - - dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset); - } - // detect if dropdown is in an overflow container - else if (parentOverflow !== 'visible') { - var offset = target[0].offsetTop + target[0].offsetHeight; - - dropdown.attr('style', '').css({ - position : 'absolute', - top : offset - }); - - dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset); - } - else { - - this.style(dropdown, target, settings); - } - - return dropdown; - }, - - style : function (dropdown, target, settings) { - var css = $.extend({position : 'absolute'}, - this.dirs[settings.align].call(dropdown, target, settings)); - - dropdown.attr('style', '').css(css); - }, - - // return CSS property object - // `this` is the dropdown - dirs : { - // Calculate target offset - _base : function (t, s) { - var o_p = this.offsetParent(), - o = o_p.offset(), - p = t.offset(); - - p.top -= o.top; - p.left -= o.left; - - //set some flags on the p object to pass along - p.missRight = false; - p.missTop = false; - p.missLeft = false; - p.leftRightFlag = false; - - //lets see if the panel will be off the screen - //get the actual width of the page and store it - var actualBodyWidth; - var windowWidth = window.innerWidth; - - if (document.getElementsByClassName('row')[0]) { - actualBodyWidth = document.getElementsByClassName('row')[0].clientWidth; - } else { - actualBodyWidth = windowWidth; - } - - var actualMarginWidth = (windowWidth - actualBodyWidth) / 2; - var actualBoundary = actualBodyWidth; - - if (!this.hasClass('mega') && !s.ignore_repositioning) { - var outerWidth = this.outerWidth(); - var o_left = t.offset().left; - - //miss top - if (t.offset().top <= this.outerHeight()) { - p.missTop = true; - actualBoundary = windowWidth - actualMarginWidth; - p.leftRightFlag = true; - } - - //miss right - if (o_left + outerWidth > o_left + actualMarginWidth && o_left - actualMarginWidth > outerWidth) { - p.missRight = true; - p.missLeft = false; - } - - //miss left - if (o_left - outerWidth <= 0) { - p.missLeft = true; - p.missRight = false; - } - } - - return p; - }, - - top : function (t, s) { - var self = Foundation.libs.dropdown, - p = self.dirs._base.call(this, t, s); - - this.addClass('drop-top'); - - if (p.missTop == true) { - p.top = p.top + t.outerHeight() + this.outerHeight(); - this.removeClass('drop-top'); - } - - if (p.missRight == true) { - p.left = p.left - this.outerWidth() + t.outerWidth(); - } - - if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) { - self.adjust_pip(this, t, s, p); - } - - if (Foundation.rtl) { - return {left : p.left - this.outerWidth() + t.outerWidth(), - top : p.top - this.outerHeight()}; - } - - return {left : p.left, top : p.top - this.outerHeight()}; - }, - - bottom : function (t, s) { - var self = Foundation.libs.dropdown, - p = self.dirs._base.call(this, t, s); - - if (p.missRight == true) { - p.left = p.left - this.outerWidth() + t.outerWidth(); - } - - if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) { - self.adjust_pip(this, t, s, p); - } - - if (self.rtl) { - return {left : p.left - this.outerWidth() + t.outerWidth(), top : p.top + t.outerHeight()}; - } - - return {left : p.left, top : p.top + t.outerHeight()}; - }, - - left : function (t, s) { - var p = Foundation.libs.dropdown.dirs._base.call(this, t, s); - - this.addClass('drop-left'); - - if (p.missLeft == true) { - p.left = p.left + this.outerWidth(); - p.top = p.top + t.outerHeight(); - this.removeClass('drop-left'); - } - - return {left : p.left - this.outerWidth(), top : p.top}; - }, - - right : function (t, s) { - var p = Foundation.libs.dropdown.dirs._base.call(this, t, s); - - this.addClass('drop-right'); - - if (p.missRight == true) { - p.left = p.left - this.outerWidth(); - p.top = p.top + t.outerHeight(); - this.removeClass('drop-right'); - } else { - p.triggeredRight = true; - } - - var self = Foundation.libs.dropdown; - - if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) { - self.adjust_pip(this, t, s, p); - } - - return {left : p.left + t.outerWidth(), top : p.top}; - } - }, - - // Insert rule to style psuedo elements - adjust_pip : function (dropdown, target, settings, position) { - var sheet = Foundation.stylesheet, - pip_offset_base = 8; - - if (dropdown.hasClass(settings.mega_class)) { - pip_offset_base = position.left + (target.outerWidth() / 2) - 8; - } else if (this.small()) { - pip_offset_base += position.left - 8; - } - - this.rule_idx = sheet.cssRules.length; - - //default - var sel_before = '.f-dropdown.open:before', - sel_after = '.f-dropdown.open:after', - css_before = 'left: ' + pip_offset_base + 'px;', - css_after = 'left: ' + (pip_offset_base - 1) + 'px;'; - - if (position.missRight == true) { - pip_offset_base = dropdown.outerWidth() - 23; - sel_before = '.f-dropdown.open:before', - sel_after = '.f-dropdown.open:after', - css_before = 'left: ' + pip_offset_base + 'px;', - css_after = 'left: ' + (pip_offset_base - 1) + 'px;'; - } - - //just a case where right is fired, but its not missing right - if (position.triggeredRight == true) { - sel_before = '.f-dropdown.open:before', - sel_after = '.f-dropdown.open:after', - css_before = 'left:-12px;', - css_after = 'left:-14px;'; - } - - if (sheet.insertRule) { - sheet.insertRule([sel_before, '{', css_before, '}'].join(' '), this.rule_idx); - sheet.insertRule([sel_after, '{', css_after, '}'].join(' '), this.rule_idx + 1); - } else { - sheet.addRule(sel_before, css_before, this.rule_idx); - sheet.addRule(sel_after, css_after, this.rule_idx + 1); - } - }, - - // Remove old dropdown rule index - clear_idx : function () { - var sheet = Foundation.stylesheet; - - if (typeof this.rule_idx !== 'undefined') { - sheet.deleteRule(this.rule_idx); - sheet.deleteRule(this.rule_idx); - delete this.rule_idx; - } - }, - - small : function () { - return matchMedia(Foundation.media_queries.small).matches && - !matchMedia(Foundation.media_queries.medium).matches; - }, - - off : function () { - this.S(this.scope).off('.fndtn.dropdown'); - this.S('html, body').off('.fndtn.dropdown'); - this.S(window).off('.fndtn.dropdown'); - this.S('[data-dropdown-content]').off('.fndtn.dropdown'); - }, - - reflow : function () {} - }; -}(jQuery, window, window.document)); diff --git a/docs/themes/porter/static/js/custom/foundation.js b/docs/themes/porter/static/js/custom/foundation.js deleted file mode 100755 index c5a359d3b..000000000 --- a/docs/themes/porter/static/js/custom/foundation.js +++ /dev/null @@ -1,732 +0,0 @@ -/* - * Foundation Responsive Library - * http://foundation.zurb.com - * Copyright 2015, ZURB - * Free to use under the MIT license. - * http://www.opensource.org/licenses/mit-license.php -*/ - -(function ($, window, document, undefined) { - 'use strict'; - - var header_helpers = function (class_array) { - var head = $('head'); - head.prepend($.map(class_array, function (class_name) { - if (head.has('.' + class_name).length === 0) { - return ''; - } - })); - }; - - header_helpers([ - 'foundation-mq-small', - 'foundation-mq-small-only', - 'foundation-mq-medium', - 'foundation-mq-medium-only', - 'foundation-mq-large', - 'foundation-mq-large-only', - 'foundation-mq-xlarge', - 'foundation-mq-xlarge-only', - 'foundation-mq-xxlarge', - 'foundation-data-attribute-namespace']); - - // Enable FastClick if present - - $(function () { - if (typeof FastClick !== 'undefined') { - // Don't attach to body if undefined - if (typeof document.body !== 'undefined') { - FastClick.attach(document.body); - } - } - }); - - // private Fast Selector wrapper, - // returns jQuery object. Only use where - // getElementById is not available. - var S = function (selector, context) { - if (typeof selector === 'string') { - if (context) { - var cont; - if (context.jquery) { - cont = context[0]; - if (!cont) { - return context; - } - } else { - cont = context; - } - return $(cont.querySelectorAll(selector)); - } - - return $(document.querySelectorAll(selector)); - } - - return $(selector, context); - }; - - // Namespace functions. - - var attr_name = function (init) { - var arr = []; - if (!init) { - arr.push('data'); - } - if (this.namespace.length > 0) { - arr.push(this.namespace); - } - arr.push(this.name); - - return arr.join('-'); - }; - - var add_namespace = function (str) { - var parts = str.split('-'), - i = parts.length, - arr = []; - - while (i--) { - if (i !== 0) { - arr.push(parts[i]); - } else { - if (this.namespace.length > 0) { - arr.push(this.namespace, parts[i]); - } else { - arr.push(parts[i]); - } - } - } - - return arr.reverse().join('-'); - }; - - // Event binding and data-options updating. - - var bindings = function (method, options) { - var self = this, - bind = function(){ - var $this = S(this), - should_bind_events = !$this.data(self.attr_name(true) + '-init'); - $this.data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options($this))); - - if (should_bind_events) { - self.events(this); - } - }; - - if (S(this.scope).is('[' + this.attr_name() +']')) { - bind.call(this.scope); - } else { - S('[' + this.attr_name() +']', this.scope).each(bind); - } - // # Patch to fix #5043 to move this *after* the if/else clause in order for Backbone and similar frameworks to have improved control over event binding and data-options updating. - if (typeof method === 'string') { - return this[method].call(this, options); - } - - }; - - var single_image_loaded = function (image, callback) { - function loaded () { - callback(image[0]); - } - - function bindLoad () { - this.one('load', loaded); - - if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { - var src = this.attr( 'src' ), - param = src.match( /\?/ ) ? '&' : '?'; - - param += 'random=' + (new Date()).getTime(); - this.attr('src', src + param); - } - } - - if (!image.attr('src')) { - loaded(); - return; - } - - if (image[0].complete || image[0].readyState === 4) { - loaded(); - } else { - bindLoad.call(image); - } - }; - - /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license */ - - window.matchMedia || (window.matchMedia = function() { - "use strict"; - - // For browsers that support matchMedium api such as IE 9 and webkit - var styleMedia = (window.styleMedia || window.media); - - // For those that don't support matchMedium - if (!styleMedia) { - var style = document.createElement('style'), - script = document.getElementsByTagName('script')[0], - info = null; - - style.type = 'text/css'; - style.id = 'matchmediajs-test'; - - script.parentNode.insertBefore(style, script); - - // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers - info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle; - - styleMedia = { - matchMedium: function(media) { - var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }'; - - // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers - if (style.styleSheet) { - style.styleSheet.cssText = text; - } else { - style.textContent = text; - } - - // Test if media query is true or false - return info.width === '1px'; - } - }; - } - - return function(media) { - return { - matches: styleMedia.matchMedium(media || 'all'), - media: media || 'all' - }; - }; - }()); - - /* - * jquery.requestAnimationFrame - * https://github.com/gnarf37/jquery-requestAnimationFrame - * Requires jQuery 1.8+ - * - * Copyright (c) 2012 Corey Frang - * Licensed under the MIT license. - */ - - (function(jQuery) { - - - // requestAnimationFrame polyfill adapted from Erik Möller - // fixes from Paul Irish and Tino Zijdel - // http://paulirish.com/2011/requestanimationframe-for-smart-animating/ - // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating - - var animating, - lastTime = 0, - vendors = ['webkit', 'moz'], - requestAnimationFrame = window.requestAnimationFrame, - cancelAnimationFrame = window.cancelAnimationFrame, - jqueryFxAvailable = 'undefined' !== typeof jQuery.fx; - - for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) { - requestAnimationFrame = window[ vendors[lastTime] + 'RequestAnimationFrame' ]; - cancelAnimationFrame = cancelAnimationFrame || - window[ vendors[lastTime] + 'CancelAnimationFrame' ] || - window[ vendors[lastTime] + 'CancelRequestAnimationFrame' ]; - } - - function raf() { - if (animating) { - requestAnimationFrame(raf); - - if (jqueryFxAvailable) { - jQuery.fx.tick(); - } - } - } - - if (requestAnimationFrame) { - // use rAF - window.requestAnimationFrame = requestAnimationFrame; - window.cancelAnimationFrame = cancelAnimationFrame; - - if (jqueryFxAvailable) { - jQuery.fx.timer = function (timer) { - if (timer() && jQuery.timers.push(timer) && !animating) { - animating = true; - raf(); - } - }; - - jQuery.fx.stop = function () { - animating = false; - }; - } - } else { - // polyfill - window.requestAnimationFrame = function (callback) { - var currTime = new Date().getTime(), - timeToCall = Math.max(0, 16 - (currTime - lastTime)), - id = window.setTimeout(function () { - callback(currTime + timeToCall); - }, timeToCall); - lastTime = currTime + timeToCall; - return id; - }; - - window.cancelAnimationFrame = function (id) { - clearTimeout(id); - }; - - } - - }( $ )); - - function removeQuotes (string) { - if (typeof string === 'string' || string instanceof String) { - string = string.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g, ''); - } - - return string; - } - - function MediaQuery(selector) { - this.selector = selector; - this.query = ''; - } - - MediaQuery.prototype.toString = function () { - return this.query || (this.query = S(this.selector).css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, '')); - }; - - window.Foundation = { - name : 'Foundation', - - version : '5.5.3', - - media_queries : { - 'small' : new MediaQuery('.foundation-mq-small'), - 'small-only' : new MediaQuery('.foundation-mq-small-only'), - 'medium' : new MediaQuery('.foundation-mq-medium'), - 'medium-only' : new MediaQuery('.foundation-mq-medium-only'), - 'large' : new MediaQuery('.foundation-mq-large'), - 'large-only' : new MediaQuery('.foundation-mq-large-only'), - 'xlarge' : new MediaQuery('.foundation-mq-xlarge'), - 'xlarge-only' : new MediaQuery('.foundation-mq-xlarge-only'), - 'xxlarge' : new MediaQuery('.foundation-mq-xxlarge') - }, - - stylesheet : $('').appendTo('head')[0].sheet, - - global : { - namespace : undefined - }, - - init : function (scope, libraries, method, options, response) { - var args = [scope, method, options, response], - responses = []; - - // check RTL - this.rtl = /rtl/i.test(S('html').attr('dir')); - - // set foundation global scope - this.scope = scope || this.scope; - - this.set_namespace(); - - if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) { - if (this.libs.hasOwnProperty(libraries)) { - responses.push(this.init_lib(libraries, args)); - } - } else { - for (var lib in this.libs) { - responses.push(this.init_lib(lib, libraries)); - } - } - - S(window).load(function () { - S(window) - .trigger('resize.fndtn.clearing') - .trigger('resize.fndtn.dropdown') - .trigger('resize.fndtn.equalizer') - .trigger('resize.fndtn.interchange') - .trigger('resize.fndtn.joyride') - .trigger('resize.fndtn.magellan') - .trigger('resize.fndtn.topbar') - .trigger('resize.fndtn.slider'); - }); - - return scope; - }, - - init_lib : function (lib, args) { - if (this.libs.hasOwnProperty(lib)) { - this.patch(this.libs[lib]); - - if (args && args.hasOwnProperty(lib)) { - if (typeof this.libs[lib].settings !== 'undefined') { - $.extend(true, this.libs[lib].settings, args[lib]); - } else if (typeof this.libs[lib].defaults !== 'undefined') { - $.extend(true, this.libs[lib].defaults, args[lib]); - } - return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]); - } - - args = args instanceof Array ? args : new Array(args); - return this.libs[lib].init.apply(this.libs[lib], args); - } - - return function () {}; - }, - - patch : function (lib) { - lib.scope = this.scope; - lib.namespace = this.global.namespace; - lib.rtl = this.rtl; - lib['data_options'] = this.utils.data_options; - lib['attr_name'] = attr_name; - lib['add_namespace'] = add_namespace; - lib['bindings'] = bindings; - lib['S'] = this.utils.S; - }, - - inherit : function (scope, methods) { - var methods_arr = methods.split(' '), - i = methods_arr.length; - - while (i--) { - if (this.utils.hasOwnProperty(methods_arr[i])) { - scope[methods_arr[i]] = this.utils[methods_arr[i]]; - } - } - }, - - set_namespace : function () { - - // Description: - // Don't bother reading the namespace out of the meta tag - // if the namespace has been set globally in javascript - // - // Example: - // Foundation.global.namespace = 'my-namespace'; - // or make it an empty string: - // Foundation.global.namespace = ''; - // - // - - // If the namespace has not been set (is undefined), try to read it out of the meta element. - // Otherwise use the globally defined namespace, even if it's empty ('') - var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace; - - // Finally, if the namsepace is either undefined or false, set it to an empty string. - // Otherwise use the namespace value. - this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace; - }, - - libs : {}, - - // methods that can be inherited in libraries - utils : { - - // Description: - // Fast Selector wrapper returns jQuery object. Only use where getElementById - // is not available. - // - // Arguments: - // Selector (String): CSS selector describing the element(s) to be - // returned as a jQuery object. - // - // Scope (String): CSS selector describing the area to be searched. Default - // is document. - // - // Returns: - // Element (jQuery Object): jQuery object containing elements matching the - // selector within the scope. - S : S, - - // Description: - // Executes a function a max of once every n milliseconds - // - // Arguments: - // Func (Function): Function to be throttled. - // - // Delay (Integer): Function execution threshold in milliseconds. - // - // Returns: - // Lazy_function (Function): Function with throttling applied. - throttle : function (func, delay) { - var timer = null; - - return function () { - var context = this, args = arguments; - - if (timer == null) { - timer = setTimeout(function () { - func.apply(context, args); - timer = null; - }, delay); - } - }; - }, - - // Description: - // Executes a function when it stops being invoked for n seconds - // Modified version of _.debounce() http://underscorejs.org - // - // Arguments: - // Func (Function): Function to be debounced. - // - // Delay (Integer): Function execution threshold in milliseconds. - // - // Immediate (Bool): Whether the function should be called at the beginning - // of the delay instead of the end. Default is false. - // - // Returns: - // Lazy_function (Function): Function with debouncing applied. - debounce : function (func, delay, immediate) { - var timeout, result; - return function () { - var context = this, args = arguments; - var later = function () { - timeout = null; - if (!immediate) { - result = func.apply(context, args); - } - }; - var callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, delay); - if (callNow) { - result = func.apply(context, args); - } - return result; - }; - }, - - // Description: - // Parses data-options attribute - // - // Arguments: - // El (jQuery Object): Element to be parsed. - // - // Returns: - // Options (Javascript Object): Contents of the element's data-options - // attribute. - data_options : function (el, data_attr_name) { - data_attr_name = data_attr_name || 'options'; - var opts = {}, ii, p, opts_arr, - data_options = function (el) { - var namespace = Foundation.global.namespace; - - if (namespace.length > 0) { - return el.data(namespace + '-' + data_attr_name); - } - - return el.data(data_attr_name); - }; - - var cached_options = data_options(el); - - if (typeof cached_options === 'object') { - return cached_options; - } - - opts_arr = (cached_options || ':').split(';'); - ii = opts_arr.length; - - function isNumber (o) { - return !isNaN (o - 0) && o !== null && o !== '' && o !== false && o !== true; - } - - function trim (str) { - if (typeof str === 'string') { - return $.trim(str); - } - return str; - } - - while (ii--) { - p = opts_arr[ii].split(':'); - p = [p[0], p.slice(1).join(':')]; - - if (/true/i.test(p[1])) { - p[1] = true; - } - if (/false/i.test(p[1])) { - p[1] = false; - } - if (isNumber(p[1])) { - if (p[1].indexOf('.') === -1) { - p[1] = parseInt(p[1], 10); - } else { - p[1] = parseFloat(p[1]); - } - } - - if (p.length === 2 && p[0].length > 0) { - opts[trim(p[0])] = trim(p[1]); - } - } - - return opts; - }, - - // Description: - // Adds JS-recognizable media queries - // - // Arguments: - // Media (String): Key string for the media query to be stored as in - // Foundation.media_queries - // - // Class (String): Class name for the generated tag - register_media : function (media, media_class) { - if (Foundation.media_queries[media] === undefined) { - $('head').append(''); - Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family')); - } - }, - - // Description: - // Add custom CSS within a JS-defined media query - // - // Arguments: - // Rule (String): CSS rule to be appended to the document. - // - // Media (String): Optional media query string for the CSS rule to be - // nested under. - add_custom_rule : function (rule, media) { - if (media === undefined && Foundation.stylesheet) { - Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length); - } else { - var query = Foundation.media_queries[media]; - - if (query !== undefined) { - Foundation.stylesheet.insertRule('@media ' + - Foundation.media_queries[media] + '{ ' + rule + ' }', Foundation.stylesheet.cssRules.length); - } - } - }, - - // Description: - // Performs a callback function when an image is fully loaded - // - // Arguments: - // Image (jQuery Object): Image(s) to check if loaded. - // - // Callback (Function): Function to execute when image is fully loaded. - image_loaded : function (images, callback) { - var self = this, - unloaded = images.length; - - function pictures_has_height(images) { - var pictures_number = images.length; - - for (var i = pictures_number - 1; i >= 0; i--) { - if(images.attr('height') === undefined) { - return false; - }; - }; - - return true; - } - - if (unloaded === 0 || pictures_has_height(images)) { - callback(images); - } - - images.each(function () { - single_image_loaded(self.S(this), function () { - unloaded -= 1; - if (unloaded === 0) { - callback(images); - } - }); - }); - }, - - // Description: - // Returns a random, alphanumeric string - // - // Arguments: - // Length (Integer): Length of string to be generated. Defaults to random - // integer. - // - // Returns: - // Rand (String): Pseudo-random, alphanumeric string. - random_str : function () { - if (!this.fidx) { - this.fidx = 0; - } - this.prefix = this.prefix || [(this.name || 'F'), (+new Date).toString(36)].join('-'); - - return this.prefix + (this.fidx++).toString(36); - }, - - // Description: - // Helper for window.matchMedia - // - // Arguments: - // mq (String): Media query - // - // Returns: - // (Boolean): Whether the media query passes or not - match : function (mq) { - return window.matchMedia(mq).matches; - }, - - // Description: - // Helpers for checking Foundation default media queries with JS - // - // Returns: - // (Boolean): Whether the media query passes or not - - is_small_up : function () { - return this.match(Foundation.media_queries.small); - }, - - is_medium_up : function () { - return this.match(Foundation.media_queries.medium); - }, - - is_large_up : function () { - return this.match(Foundation.media_queries.large); - }, - - is_xlarge_up : function () { - return this.match(Foundation.media_queries.xlarge); - }, - - is_xxlarge_up : function () { - return this.match(Foundation.media_queries.xxlarge); - }, - - is_small_only : function () { - return !this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up(); - }, - - is_medium_only : function () { - return this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up(); - }, - - is_large_only : function () { - return this.is_medium_up() && this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up(); - }, - - is_xlarge_only : function () { - return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && !this.is_xxlarge_up(); - }, - - is_xxlarge_only : function () { - return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && this.is_xxlarge_up(); - } - } - }; - - $.fn.foundation = function () { - var args = Array.prototype.slice.call(arguments, 0); - - return this.each(function () { - Foundation.init.apply(Foundation, [this].concat(args)); - return this; - }); - }; - -}(jQuery, window, window.document)); diff --git a/docs/themes/porter/static/js/custom/foundation.offcanvas.js b/docs/themes/porter/static/js/custom/foundation.offcanvas.js deleted file mode 100755 index 685e9a03a..000000000 --- a/docs/themes/porter/static/js/custom/foundation.offcanvas.js +++ /dev/null @@ -1,225 +0,0 @@ -;(function ($, window, document, undefined) { - 'use strict'; - - Foundation.libs.offcanvas = { - name : 'offcanvas', - - version : '5.5.3', - - settings : { - open_method : 'move', - close_on_click : false - }, - - init : function (scope, method, options) { - this.bindings(method, options); - }, - - events : function () { - var self = this, - S = self.S, - move_class = '', - right_postfix = '', - left_postfix = '', - top_postfix = '', - bottom_postfix = ''; - - if (this.settings.open_method === 'move') { - move_class = 'move-'; - right_postfix = 'right'; - left_postfix = 'left'; - top_postfix = 'top'; - bottom_postfix = 'bottom'; - } else if (this.settings.open_method === 'overlap_single') { - move_class = 'offcanvas-overlap-'; - right_postfix = 'right'; - left_postfix = 'left'; - top_postfix = 'top'; - bottom_postfix = 'bottom'; - } else if (this.settings.open_method === 'overlap') { - move_class = 'offcanvas-overlap'; - } - - S(this.scope).off('.offcanvas') - .on('click.fndtn.offcanvas', '.left-off-canvas-toggle', function (e) { - self.click_toggle_class(e, move_class + right_postfix); - if (self.settings.open_method !== 'overlap') { - S('.left-submenu').removeClass(move_class + right_postfix); - } - $('.left-off-canvas-toggle').attr('aria-expanded', 'true'); - }) - .on('click.fndtn.offcanvas', '.left-off-canvas-menu a', function (e) { - var settings = self.get_settings(e); - var parent = S(this).parent(); - - if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) { - self.hide.call(self, move_class + right_postfix, self.get_wrapper(e)); - parent.parent().removeClass(move_class + right_postfix); - } else if (S(this).parent().hasClass('has-submenu')) { - e.preventDefault(); - S(this).siblings('.left-submenu').toggleClass(move_class + right_postfix); - } else if (parent.hasClass('back')) { - e.preventDefault(); - parent.parent().removeClass(move_class + right_postfix); - } - $('.left-off-canvas-toggle').attr('aria-expanded', 'true'); - }) - //end of left canvas - .on('click.fndtn.offcanvas', '.right-off-canvas-toggle', function (e) { - self.click_toggle_class(e, move_class + left_postfix); - if (self.settings.open_method !== 'overlap') { - S('.right-submenu').removeClass(move_class + left_postfix); - } - $('.right-off-canvas-toggle').attr('aria-expanded', 'true'); - }) - .on('click.fndtn.offcanvas', '.right-off-canvas-menu a', function (e) { - var settings = self.get_settings(e); - var parent = S(this).parent(); - - if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) { - self.hide.call(self, move_class + left_postfix, self.get_wrapper(e)); - parent.parent().removeClass(move_class + left_postfix); - } else if (S(this).parent().hasClass('has-submenu')) { - e.preventDefault(); - S(this).siblings('.right-submenu').toggleClass(move_class + left_postfix); - } else if (parent.hasClass('back')) { - e.preventDefault(); - parent.parent().removeClass(move_class + left_postfix); - } - $('.right-off-canvas-toggle').attr('aria-expanded', 'true'); - }) - //end of right canvas - .on('click.fndtn.offcanvas', '.top-off-canvas-toggle', function (e) { - self.click_toggle_class(e, move_class + bottom_postfix); - if (self.settings.open_method !== 'overlap') { - S('.top-submenu').removeClass(move_class + bottom_postfix); - } - $('.top-off-canvas-toggle').attr('aria-expanded', 'true'); - }) - .on('click.fndtn.offcanvas', '.top-off-canvas-menu a', function (e) { - var settings = self.get_settings(e); - var parent = S(this).parent(); - - if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) { - self.hide.call(self, move_class + bottom_postfix, self.get_wrapper(e)); - parent.parent().removeClass(move_class + bottom_postfix); - } else if (S(this).parent().hasClass('has-submenu')) { - e.preventDefault(); - S(this).siblings('.top-submenu').toggleClass(move_class + bottom_postfix); - } else if (parent.hasClass('back')) { - e.preventDefault(); - parent.parent().removeClass(move_class + bottom_postfix); - } - $('.top-off-canvas-toggle').attr('aria-expanded', 'true'); - }) - //end of top canvas - .on('click.fndtn.offcanvas', '.bottom-off-canvas-toggle', function (e) { - self.click_toggle_class(e, move_class + top_postfix); - if (self.settings.open_method !== 'overlap') { - S('.bottom-submenu').removeClass(move_class + top_postfix); - } - $('.bottom-off-canvas-toggle').attr('aria-expanded', 'true'); - }) - .on('click.fndtn.offcanvas', '.bottom-off-canvas-menu a', function (e) { - var settings = self.get_settings(e); - var parent = S(this).parent(); - - if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) { - self.hide.call(self, move_class + top_postfix, self.get_wrapper(e)); - parent.parent().removeClass(move_class + top_postfix); - } else if (S(this).parent().hasClass('has-submenu')) { - e.preventDefault(); - S(this).siblings('.bottom-submenu').toggleClass(move_class + top_postfix); - } else if (parent.hasClass('back')) { - e.preventDefault(); - parent.parent().removeClass(move_class + top_postfix); - } - $('.bottom-off-canvas-toggle').attr('aria-expanded', 'true'); - }) - //end of bottom - .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) { - self.click_remove_class(e, move_class + left_postfix); - S('.right-submenu').removeClass(move_class + left_postfix); - if (right_postfix) { - self.click_remove_class(e, move_class + right_postfix); - S('.left-submenu').removeClass(move_class + left_postfix); - } - $('.right-off-canvas-toggle').attr('aria-expanded', 'true'); - }) - .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) { - self.click_remove_class(e, move_class + left_postfix); - $('.left-off-canvas-toggle').attr('aria-expanded', 'false'); - if (right_postfix) { - self.click_remove_class(e, move_class + right_postfix); - $('.right-off-canvas-toggle').attr('aria-expanded', 'false'); - } - }) - .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) { - self.click_remove_class(e, move_class + top_postfix); - S('.bottom-submenu').removeClass(move_class + top_postfix); - if (bottom_postfix) { - self.click_remove_class(e, move_class + bottom_postfix); - S('.top-submenu').removeClass(move_class + top_postfix); - } - $('.bottom-off-canvas-toggle').attr('aria-expanded', 'true'); - }) - .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) { - self.click_remove_class(e, move_class + top_postfix); - $('.top-off-canvas-toggle').attr('aria-expanded', 'false'); - if (bottom_postfix) { - self.click_remove_class(e, move_class + bottom_postfix); - $('.bottom-off-canvas-toggle').attr('aria-expanded', 'false'); - } - }); - }, - - toggle : function (class_name, $off_canvas) { - $off_canvas = $off_canvas || this.get_wrapper(); - if ($off_canvas.is('.' + class_name)) { - this.hide(class_name, $off_canvas); - } else { - this.show(class_name, $off_canvas); - } - }, - - show : function (class_name, $off_canvas) { - $off_canvas = $off_canvas || this.get_wrapper(); - $off_canvas.trigger('open.fndtn.offcanvas'); - $off_canvas.addClass(class_name); - }, - - hide : function (class_name, $off_canvas) { - $off_canvas = $off_canvas || this.get_wrapper(); - $off_canvas.trigger('close.fndtn.offcanvas'); - $off_canvas.removeClass(class_name); - }, - - click_toggle_class : function (e, class_name) { - e.preventDefault(); - var $off_canvas = this.get_wrapper(e); - this.toggle(class_name, $off_canvas); - }, - - click_remove_class : function (e, class_name) { - e.preventDefault(); - var $off_canvas = this.get_wrapper(e); - this.hide(class_name, $off_canvas); - }, - - get_settings : function (e) { - var offcanvas = this.S(e.target).closest('[' + this.attr_name() + ']'); - return offcanvas.data(this.attr_name(true) + '-init') || this.settings; - }, - - get_wrapper : function (e) { - var $off_canvas = this.S(e ? e.target : this.scope).closest('.off-canvas-wrap'); - - if ($off_canvas.length === 0) { - $off_canvas = this.S('.off-canvas-wrap'); - } - return $off_canvas; - }, - - reflow : function () {} - }; -}(jQuery, window, window.document)); diff --git a/docs/themes/porter/static/js/custom/foundation.slider.js b/docs/themes/porter/static/js/custom/foundation.slider.js deleted file mode 100755 index 0d71d567f..000000000 --- a/docs/themes/porter/static/js/custom/foundation.slider.js +++ /dev/null @@ -1,296 +0,0 @@ -;(function ($, window, document, undefined) { - 'use strict'; - - Foundation.libs.slider = { - name : 'slider', - - version : '5.5.3', - - settings : { - start : 0, - end : 100, - step : 1, - precision : 2, - initial : null, - display_selector : '', - vertical : false, - trigger_input_change : false, - on_change : function () {} - }, - - cache : {}, - - init : function (scope, method, options) { - Foundation.inherit(this, 'throttle'); - this.bindings(method, options); - this.reflow(); - }, - - events : function () { - var self = this; - $(this.scope) - .off('.slider') - .on('mousedown.fndtn.slider touchstart.fndtn.slider pointerdown.fndtn.slider', - '[' + self.attr_name() + ']:not(.disabled, [disabled]) .range-slider-handle', function (e) { - if (!self.cache.active) { - e.preventDefault(); - self.set_active_slider($(e.target)); - } - }) - .on('mousemove.fndtn.slider touchmove.fndtn.slider pointermove.fndtn.slider', function (e) { - if (!!self.cache.active) { - e.preventDefault(); - if ($.data(self.cache.active[0], 'settings').vertical) { - var scroll_offset = 0; - if (!e.pageY) { - scroll_offset = window.scrollY; - } - self.calculate_position(self.cache.active, self.get_cursor_position(e, 'y') + scroll_offset); - } else { - self.calculate_position(self.cache.active, self.get_cursor_position(e, 'x')); - } - } - }) - .on('mouseup.fndtn.slider touchend.fndtn.slider pointerup.fndtn.slider', function (e) { - if(!self.cache.active) { - // if the user has just clicked into the slider without starting to drag the handle - var slider = $(e.target).attr('role') === 'slider' ? $(e.target) : $(e.target).closest('.range-slider').find("[role='slider']"); - - if (slider.length && (!slider.parent().hasClass('disabled') && !slider.parent().attr('disabled'))) { - self.set_active_slider(slider); - if ($.data(self.cache.active[0], 'settings').vertical) { - var scroll_offset = 0; - if (!e.pageY) { - scroll_offset = window.scrollY; - } - self.calculate_position(self.cache.active, self.get_cursor_position(e, 'y') + scroll_offset); - } else { - self.calculate_position(self.cache.active, self.get_cursor_position(e, 'x')); - } - } - } - self.remove_active_slider(); - }) - .on('change.fndtn.slider', function (e) { - self.settings.on_change(); - }); - - self.S(window) - .on('resize.fndtn.slider', self.throttle(function (e) { - self.reflow(); - }, 300)); - - // update slider value as users change input value - this.S('[' + this.attr_name() + ']').each(function () { - var slider = $(this), - handle = slider.children('.range-slider-handle')[0], - settings = self.initialize_settings(handle); - - if (settings.display_selector != '') { - $(settings.display_selector).each(function(){ - if ($(this).attr('value')) { - $(this).off('change').on('change', function () { - slider.foundation("slider", "set_value", $(this).val()); - }); - } - }); - } - }); - }, - - get_cursor_position : function (e, xy) { - var pageXY = 'page' + xy.toUpperCase(), - clientXY = 'client' + xy.toUpperCase(), - position; - - if (typeof e[pageXY] !== 'undefined') { - position = e[pageXY]; - } else if (typeof e.originalEvent[clientXY] !== 'undefined') { - position = e.originalEvent[clientXY]; - } else if (e.originalEvent.touches && e.originalEvent.touches[0] && typeof e.originalEvent.touches[0][clientXY] !== 'undefined') { - position = e.originalEvent.touches[0][clientXY]; - } else if (e.currentPoint && typeof e.currentPoint[xy] !== 'undefined') { - position = e.currentPoint[xy]; - } - - return position; - }, - - set_active_slider : function ($handle) { - this.cache.active = $handle; - }, - - remove_active_slider : function () { - this.cache.active = null; - }, - - calculate_position : function ($handle, cursor_x) { - var self = this, - settings = $.data($handle[0], 'settings'), - handle_l = $.data($handle[0], 'handle_l'), - handle_o = $.data($handle[0], 'handle_o'), - bar_l = $.data($handle[0], 'bar_l'), - bar_o = $.data($handle[0], 'bar_o'); - - requestAnimationFrame(function () { - var pct; - - if (Foundation.rtl && !settings.vertical) { - pct = self.limit_to(((bar_o + bar_l - cursor_x) / bar_l), 0, 1); - } else { - pct = self.limit_to(((cursor_x - bar_o) / bar_l), 0, 1); - } - - pct = settings.vertical ? 1 - pct : pct; - - var norm = self.normalized_value(pct, settings.start, settings.end, settings.step, settings.precision); - - self.set_ui($handle, norm); - }); - }, - - set_ui : function ($handle, value) { - var settings = $.data($handle[0], 'settings'), - handle_l = $.data($handle[0], 'handle_l'), - bar_l = $.data($handle[0], 'bar_l'), - norm_pct = this.normalized_percentage(value, settings.start, settings.end), - handle_offset = norm_pct * (bar_l - handle_l) - 1, - progress_bar_length = norm_pct * 100, - $handle_parent = $handle.parent(), - $hidden_inputs = $handle.parent().children('input[type=hidden]'); - - if (Foundation.rtl && !settings.vertical) { - handle_offset = -handle_offset; - } - - handle_offset = settings.vertical ? -handle_offset + bar_l - handle_l + 1 : handle_offset; - this.set_translate($handle, handle_offset, settings.vertical); - - if (settings.vertical) { - $handle.siblings('.range-slider-active-segment').css('height', progress_bar_length + '%'); - } else { - $handle.siblings('.range-slider-active-segment').css('width', progress_bar_length + '%'); - } - - $handle_parent.attr(this.attr_name(), value).trigger('change.fndtn.slider'); - - $hidden_inputs.val(value); - if (settings.trigger_input_change) { - $hidden_inputs.trigger('change.fndtn.slider'); - } - - if (!$handle[0].hasAttribute('aria-valuemin')) { - $handle.attr({ - 'aria-valuemin' : settings.start, - 'aria-valuemax' : settings.end - }); - } - $handle.attr('aria-valuenow', value); - - if (settings.display_selector != '') { - $(settings.display_selector).each(function () { - if (this.hasAttribute('value')) { - $(this).val(value); - } else { - $(this).text(value); - } - }); - } - - }, - - normalized_percentage : function (val, start, end) { - return Math.min(1, (val - start) / (end - start)); - }, - - normalized_value : function (val, start, end, step, precision) { - var range = end - start, - point = val * range, - mod = (point - (point % step)) / step, - rem = point % step, - round = ( rem >= step * 0.5 ? step : 0); - return ((mod * step + round) + start).toFixed(precision); - }, - - set_translate : function (ele, offset, vertical) { - if (vertical) { - $(ele) - .css('-webkit-transform', 'translateY(' + offset + 'px)') - .css('-moz-transform', 'translateY(' + offset + 'px)') - .css('-ms-transform', 'translateY(' + offset + 'px)') - .css('-o-transform', 'translateY(' + offset + 'px)') - .css('transform', 'translateY(' + offset + 'px)'); - } else { - $(ele) - .css('-webkit-transform', 'translateX(' + offset + 'px)') - .css('-moz-transform', 'translateX(' + offset + 'px)') - .css('-ms-transform', 'translateX(' + offset + 'px)') - .css('-o-transform', 'translateX(' + offset + 'px)') - .css('transform', 'translateX(' + offset + 'px)'); - } - }, - - limit_to : function (val, min, max) { - return Math.min(Math.max(val, min), max); - }, - - initialize_settings : function (handle) { - var settings = $.extend({}, this.settings, this.data_options($(handle).parent())), - decimal_places_match_result; - - if (settings.precision === null) { - decimal_places_match_result = ('' + settings.step).match(/\.([\d]*)/); - settings.precision = decimal_places_match_result && decimal_places_match_result[1] ? decimal_places_match_result[1].length : 0; - } - - if (settings.vertical) { - $.data(handle, 'bar_o', $(handle).parent().offset().top); - $.data(handle, 'bar_l', $(handle).parent().outerHeight()); - $.data(handle, 'handle_o', $(handle).offset().top); - $.data(handle, 'handle_l', $(handle).outerHeight()); - } else { - $.data(handle, 'bar_o', $(handle).parent().offset().left); - $.data(handle, 'bar_l', $(handle).parent().outerWidth()); - $.data(handle, 'handle_o', $(handle).offset().left); - $.data(handle, 'handle_l', $(handle).outerWidth()); - } - - $.data(handle, 'bar', $(handle).parent()); - return $.data(handle, 'settings', settings); - }, - - set_initial_position : function ($ele) { - var settings = $.data($ele.children('.range-slider-handle')[0], 'settings'), - initial = ((typeof settings.initial == 'number' && !isNaN(settings.initial)) ? settings.initial : Math.floor((settings.end - settings.start) * 0.5 / settings.step) * settings.step + settings.start), - $handle = $ele.children('.range-slider-handle'); - this.set_ui($handle, initial); - }, - - set_value : function (value) { - var self = this; - $('[' + self.attr_name() + ']', this.scope).each(function () { - $(this).attr(self.attr_name(), value); - }); - if (!!$(this.scope).attr(self.attr_name())) { - $(this.scope).attr(self.attr_name(), value); - } - self.reflow(); - }, - - reflow : function () { - var self = this; - self.S('[' + this.attr_name() + ']').each(function () { - var handle = $(this).children('.range-slider-handle')[0], - val = $(this).attr(self.attr_name()); - self.initialize_settings(handle); - - if (val) { - self.set_ui($(handle), parseFloat(val)); - } else { - self.set_initial_position($(this)); - } - }); - } - }; - -}(jQuery, window, window.document)); diff --git a/docs/themes/porter/static/js/custom/foundation.tooltip.js b/docs/themes/porter/static/js/custom/foundation.tooltip.js deleted file mode 100755 index 0690e2514..000000000 --- a/docs/themes/porter/static/js/custom/foundation.tooltip.js +++ /dev/null @@ -1,348 +0,0 @@ -;(function ($, window, document, undefined) { - 'use strict'; - - Foundation.libs.tooltip = { - name : 'tooltip', - - version : '5.5.3', - - settings : { - additional_inheritable_classes : [], - tooltip_class : '.tooltip', - append_to : 'body', - touch_close_text : 'Tap To Close', - disable_for_touch : false, - hover_delay : 200, - fade_in_duration : 150, - fade_out_duration : 150, - show_on : 'all', - tip_template : function (selector, content) { - return '' + content + ''; - } - }, - - cache : {}, - - init : function (scope, method, options) { - Foundation.inherit(this, 'random_str'); - this.bindings(method, options); - }, - - should_show : function (target, tip) { - var settings = $.extend({}, this.settings, this.data_options(target)); - - if (settings.show_on === 'all') { - return true; - } else if (this.small() && settings.show_on === 'small') { - return true; - } else if (this.medium() && settings.show_on === 'medium') { - return true; - } else if (this.large() && settings.show_on === 'large') { - return true; - } - return false; - }, - - medium : function () { - return matchMedia(Foundation.media_queries['medium']).matches; - }, - - large : function () { - return matchMedia(Foundation.media_queries['large']).matches; - }, - - events : function (instance) { - var self = this, - S = self.S; - - self.create(this.S(instance)); - - function _startShow(elt, $this, immediate) { - if (elt.timer) { - return; - } - - if (immediate) { - elt.timer = null; - self.showTip($this); - } else { - elt.timer = setTimeout(function () { - elt.timer = null; - self.showTip($this); - }.bind(elt), self.settings.hover_delay); - } - } - - function _startHide(elt, $this) { - if (elt.timer) { - clearTimeout(elt.timer); - elt.timer = null; - } - - self.hide($this); - } - - $(this.scope) - .off('.tooltip') - .on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', - '[' + this.attr_name() + ']', function (e) { - var $this = S(this), - settings = $.extend({}, self.settings, self.data_options($this)), - is_touch = false; - - if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type) && S(e.target).is('a')) { - return false; - } - - if (/mouse/i.test(e.type) && self.ie_touch(e)) { - return false; - } - - if ($this.hasClass('open')) { - if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) { - e.preventDefault(); - } - self.hide($this); - } else { - if (settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) { - return; - } else if (!settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) { - e.preventDefault(); - S(settings.tooltip_class + '.open').hide(); - is_touch = true; - // close other open tooltips on touch - if ($('.open[' + self.attr_name() + ']').length > 0) { - var prevOpen = S($('.open[' + self.attr_name() + ']')[0]); - self.hide(prevOpen); - } - } - - if (/enter|over/i.test(e.type)) { - _startShow(this, $this); - - } else if (e.type === 'mouseout' || e.type === 'mouseleave') { - _startHide(this, $this); - } else { - _startShow(this, $this, true); - } - } - }) - .on('mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', '[' + this.attr_name() + '].open', function (e) { - if (/mouse/i.test(e.type) && self.ie_touch(e)) { - return false; - } - - if ($(this).data('tooltip-open-event-type') == 'touch' && e.type == 'mouseleave') { - return; - } else if ($(this).data('tooltip-open-event-type') == 'mouse' && /MSPointerDown|touchstart/i.test(e.type)) { - self.convert_to_touch($(this)); - } else { - _startHide(this, $(this)); - } - }) - .on('DOMNodeRemoved DOMAttrModified', '[' + this.attr_name() + ']:not(a)', function (e) { - _startHide(this, S(this)); - }); - }, - - ie_touch : function (e) { - // How do I distinguish between IE11 and Windows Phone 8????? - return false; - }, - - showTip : function ($target) { - var $tip = this.getTip($target); - if (this.should_show($target, $tip)) { - return this.show($target); - } - return; - }, - - getTip : function ($target) { - var selector = this.selector($target), - settings = $.extend({}, this.settings, this.data_options($target)), - tip = null; - - if (selector) { - tip = this.S('span[data-selector="' + selector + '"]' + settings.tooltip_class); - } - - return (typeof tip === 'object') ? tip : false; - }, - - selector : function ($target) { - var dataSelector = $target.attr(this.attr_name()) || $target.attr('data-selector'); - - if (typeof dataSelector != 'string') { - dataSelector = this.random_str(6); - $target - .attr('data-selector', dataSelector) - .attr('aria-describedby', dataSelector); - } - - return dataSelector; - }, - - create : function ($target) { - var self = this, - settings = $.extend({}, this.settings, this.data_options($target)), - tip_template = this.settings.tip_template; - - if (typeof settings.tip_template === 'string' && window.hasOwnProperty(settings.tip_template)) { - tip_template = window[settings.tip_template]; - } - - var $tip = $(tip_template(this.selector($target), $('
    ').html($target.attr('title')).html())), - classes = this.inheritable_classes($target); - - $tip.addClass(classes).appendTo(settings.append_to); - - if (Modernizr.touch) { - $tip.append('' + settings.touch_close_text + ''); - $tip.on('touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', function (e) { - self.hide($target); - }); - } - - $target.removeAttr('title').attr('title', ''); - }, - - reposition : function (target, tip, classes) { - var width, nub, nubHeight, nubWidth, objPos; - - tip.css('visibility', 'hidden').show(); - - width = target.data('width'); - nub = tip.children('.nub'); - nubHeight = nub.outerHeight(); - nubWidth = nub.outerWidth(); - - if (this.small()) { - tip.css({'width' : '100%'}); - } else { - tip.css({'width' : (width) ? width : 'auto'}); - } - - objPos = function (obj, top, right, bottom, left, width) { - return obj.css({ - 'top' : (top) ? top : 'auto', - 'bottom' : (bottom) ? bottom : 'auto', - 'left' : (left) ? left : 'auto', - 'right' : (right) ? right : 'auto' - }).end(); - }; - - var o_top = target.offset().top; - var o_left = target.offset().left; - var outerHeight = target.outerHeight(); - - objPos(tip, (o_top + outerHeight + 10), 'auto', 'auto', o_left); - - if (this.small()) { - objPos(tip, (o_top + outerHeight + 10), 'auto', 'auto', 12.5, $(this.scope).width()); - tip.addClass('tip-override'); - objPos(nub, -nubHeight, 'auto', 'auto', o_left); - } else { - - if (Foundation.rtl) { - nub.addClass('rtl'); - o_left = o_left + target.outerWidth() - tip.outerWidth(); - } - - objPos(tip, (o_top + outerHeight + 10), 'auto', 'auto', o_left); - // reset nub from small styles, if they've been applied - if (nub.attr('style')) { - nub.removeAttr('style'); - } - - tip.removeClass('tip-override'); - - var tip_outerHeight = tip.outerHeight(); - - if (classes && classes.indexOf('tip-top') > -1) { - if (Foundation.rtl) { - nub.addClass('rtl'); - } - objPos(tip, (o_top - tip_outerHeight), 'auto', 'auto', o_left) - .removeClass('tip-override'); - } else if (classes && classes.indexOf('tip-left') > -1) { - objPos(tip, (o_top + (outerHeight / 2) - (tip_outerHeight / 2)), 'auto', 'auto', (o_left - tip.outerWidth() - nubHeight)) - .removeClass('tip-override'); - nub.removeClass('rtl'); - } else if (classes && classes.indexOf('tip-right') > -1) { - objPos(tip, (o_top + (outerHeight / 2) - (tip_outerHeight / 2)), 'auto', 'auto', (o_left + target.outerWidth() + nubHeight)) - .removeClass('tip-override'); - nub.removeClass('rtl'); - } - } - - tip.css('visibility', 'visible').hide(); - }, - - small : function () { - return matchMedia(Foundation.media_queries.small).matches && - !matchMedia(Foundation.media_queries.medium).matches; - }, - - inheritable_classes : function ($target) { - var settings = $.extend({}, this.settings, this.data_options($target)), - inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'radius', 'round'].concat(settings.additional_inheritable_classes), - classes = $target.attr('class'), - filtered = classes ? $.map(classes.split(' '), function (el, i) { - if ($.inArray(el, inheritables) !== -1) { - return el; - } - }).join(' ') : ''; - - return $.trim(filtered); - }, - - convert_to_touch : function ($target) { - var self = this, - $tip = self.getTip($target), - settings = $.extend({}, self.settings, self.data_options($target)); - - if ($tip.find('.tap-to-close').length === 0) { - $tip.append('' + settings.touch_close_text + ''); - $tip.on('click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose', function (e) { - self.hide($target); - }); - } - - $target.data('tooltip-open-event-type', 'touch'); - }, - - show : function ($target) { - var $tip = this.getTip($target); - if ($target.data('tooltip-open-event-type') == 'touch') { - this.convert_to_touch($target); - } - - this.reposition($target, $tip, $target.attr('class')); - $target.addClass('open'); - $tip.fadeIn(this.settings.fade_in_duration); - }, - - hide : function ($target) { - var $tip = this.getTip($target); - - $tip.fadeOut(this.settings.fade_out_duration, function () { - $tip.find('.tap-to-close').remove(); - $tip.off('click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose'); - $target.removeClass('open'); - }); - }, - - off : function () { - var self = this; - this.S(this.scope).off('.fndtn.tooltip'); - this.S(this.settings.tooltip_class).each(function (i) { - $('[' + self.attr_name() + ']').eq(i).attr('title', $(this).text()); - }).remove(); - }, - - reflow : function () {} - }; -}(jQuery, window, window.document)); diff --git a/docs/themes/porter/static/js/custom/foundation.topbar.js b/docs/themes/porter/static/js/custom/foundation.topbar.js deleted file mode 100755 index 23b7c7f1f..000000000 --- a/docs/themes/porter/static/js/custom/foundation.topbar.js +++ /dev/null @@ -1,458 +0,0 @@ -;(function ($, window, document, undefined) { - 'use strict'; - - Foundation.libs.topbar = { - name : 'topbar', - - version : '5.5.3', - - settings : { - index : 0, - start_offset : 0, - sticky_class : 'sticky', - custom_back_text : true, - back_text : 'Back', - mobile_show_parent_link : true, - is_hover : true, - scrolltop : true, // jump to top when sticky nav menu toggle is clicked - sticky_on : 'all', - dropdown_autoclose: true - }, - - init : function (section, method, options) { - Foundation.inherit(this, 'add_custom_rule register_media throttle'); - var self = this; - - self.register_media('topbar', 'foundation-mq-topbar'); - - this.bindings(method, options); - - self.S('[' + this.attr_name() + ']', this.scope).each(function () { - var topbar = $(this), - settings = topbar.data(self.attr_name(true) + '-init'), - section = self.S('section, .top-bar-section', this); - topbar.data('index', 0); - var topbarContainer = topbar.parent(); - if (topbarContainer.hasClass('fixed') || self.is_sticky(topbar, topbarContainer, settings) ) { - self.settings.sticky_class = settings.sticky_class; - self.settings.sticky_topbar = topbar; - topbar.data('height', topbarContainer.outerHeight()); - topbar.data('stickyoffset', topbarContainer.offset().top); - } else { - topbar.data('height', topbar.outerHeight()); - } - - if (!settings.assembled) { - self.assemble(topbar); - } - - if (settings.is_hover) { - self.S('.has-dropdown', topbar).addClass('not-click'); - } else { - self.S('.has-dropdown', topbar).removeClass('not-click'); - } - - // Pad body when sticky (scrolled) or fixed. - self.add_custom_rule('.f-topbar-fixed { padding-top: ' + topbar.data('height') + 'px }'); - - if (topbarContainer.hasClass('fixed')) { - self.S('body').addClass('f-topbar-fixed'); - } - }); - - }, - - is_sticky : function (topbar, topbarContainer, settings) { - var sticky = topbarContainer.hasClass(settings.sticky_class); - var smallMatch = matchMedia(Foundation.media_queries.small).matches; - var medMatch = matchMedia(Foundation.media_queries.medium).matches; - var lrgMatch = matchMedia(Foundation.media_queries.large).matches; - - if (sticky && settings.sticky_on === 'all') { - return true; - } - if (sticky && this.small() && settings.sticky_on.indexOf('small') !== -1) { - if (smallMatch && !medMatch && !lrgMatch) { return true; } - } - if (sticky && this.medium() && settings.sticky_on.indexOf('medium') !== -1) { - if (smallMatch && medMatch && !lrgMatch) { return true; } - } - if (sticky && this.large() && settings.sticky_on.indexOf('large') !== -1) { - if (smallMatch && medMatch && lrgMatch) { return true; } - } - - return false; - }, - - toggle : function (toggleEl) { - var self = this, - topbar; - - if (toggleEl) { - topbar = self.S(toggleEl).closest('[' + this.attr_name() + ']'); - } else { - topbar = self.S('[' + this.attr_name() + ']'); - } - - var settings = topbar.data(this.attr_name(true) + '-init'); - - var section = self.S('section, .top-bar-section', topbar); - - if (self.breakpoint()) { - if (!self.rtl) { - section.css({left : '0%'}); - $('>.name', section).css({left : '100%'}); - } else { - section.css({right : '0%'}); - $('>.name', section).css({right : '100%'}); - } - - self.S('li.moved', section).removeClass('moved'); - topbar.data('index', 0); - - topbar - .toggleClass('expanded') - .css('height', ''); - } - - if (settings.scrolltop) { - if (!topbar.hasClass('expanded')) { - if (topbar.hasClass('fixed')) { - topbar.parent().addClass('fixed'); - topbar.removeClass('fixed'); - self.S('body').addClass('f-topbar-fixed'); - } - } else if (topbar.parent().hasClass('fixed')) { - if (settings.scrolltop) { - topbar.parent().removeClass('fixed'); - topbar.addClass('fixed'); - self.S('body').removeClass('f-topbar-fixed'); - - window.scrollTo(0, 0); - } else { - topbar.parent().removeClass('expanded'); - } - } - } else { - if (self.is_sticky(topbar, topbar.parent(), settings)) { - topbar.parent().addClass('fixed'); - } - - if (topbar.parent().hasClass('fixed')) { - if (!topbar.hasClass('expanded')) { - topbar.removeClass('fixed'); - topbar.parent().removeClass('expanded'); - self.update_sticky_positioning(); - } else { - topbar.addClass('fixed'); - topbar.parent().addClass('expanded'); - self.S('body').addClass('f-topbar-fixed'); - } - } - } - }, - - timer : null, - - events : function (bar) { - var self = this, - S = this.S; - - S(this.scope) - .off('.topbar') - .on('click.fndtn.topbar', '[' + this.attr_name() + '] .toggle-topbar', function (e) { - e.preventDefault(); - self.toggle(this); - }) - .on('click.fndtn.topbar contextmenu.fndtn.topbar', '.top-bar .top-bar-section li a[href^="#"],[' + this.attr_name() + '] .top-bar-section li a[href^="#"]', function (e) { - var li = $(this).closest('li'), - topbar = li.closest('[' + self.attr_name() + ']'), - settings = topbar.data(self.attr_name(true) + '-init'); - - if (settings.dropdown_autoclose && settings.is_hover) { - var hoverLi = $(this).closest('.hover'); - hoverLi.removeClass('hover'); - } - if (self.breakpoint() && !li.hasClass('back') && !li.hasClass('has-dropdown')) { - self.toggle(); - } - - }) - .on('click.fndtn.topbar', '[' + this.attr_name() + '] li.has-dropdown', function (e) { - var li = S(this), - target = S(e.target), - topbar = li.closest('[' + self.attr_name() + ']'), - settings = topbar.data(self.attr_name(true) + '-init'); - - if (target.data('revealId')) { - self.toggle(); - return; - } - - if (self.breakpoint()) { - return; - } - - if (settings.is_hover && !Modernizr.touch) { - return; - } - - e.stopImmediatePropagation(); - - if (li.hasClass('hover')) { - li - .removeClass('hover') - .find('li') - .removeClass('hover'); - - li.parents('li.hover') - .removeClass('hover'); - } else { - li.addClass('hover'); - - $(li).siblings().removeClass('hover'); - - if (target[0].nodeName === 'A' && target.parent().hasClass('has-dropdown')) { - e.preventDefault(); - } - } - }) - .on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown>a', function (e) { - if (self.breakpoint()) { - - e.preventDefault(); - - var $this = S(this), - topbar = $this.closest('[' + self.attr_name() + ']'), - section = topbar.find('section, .top-bar-section'), - dropdownHeight = $this.next('.dropdown').outerHeight(), - $selectedLi = $this.closest('li'); - - topbar.data('index', topbar.data('index') + 1); - $selectedLi.addClass('moved'); - - if (!self.rtl) { - section.css({left : -(100 * topbar.data('index')) + '%'}); - section.find('>.name').css({left : 100 * topbar.data('index') + '%'}); - } else { - section.css({right : -(100 * topbar.data('index')) + '%'}); - section.find('>.name').css({right : 100 * topbar.data('index') + '%'}); - } - - topbar.css('height', $this.siblings('ul').outerHeight(true) + topbar.data('height')); - } - }); - - S(window).off('.topbar').on('resize.fndtn.topbar', self.throttle(function () { - self.resize.call(self); - }, 50)).trigger('resize.fndtn.topbar').load(function () { - // Ensure that the offset is calculated after all of the pages resources have loaded - S(this).trigger('resize.fndtn.topbar'); - }); - - S('body').off('.topbar').on('click.fndtn.topbar', function (e) { - var parent = S(e.target).closest('li').closest('li.hover'); - - if (parent.length > 0) { - return; - } - - S('[' + self.attr_name() + '] li.hover').removeClass('hover'); - }); - - // Go up a level on Click - S(this.scope).on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown .back', function (e) { - e.preventDefault(); - - var $this = S(this), - topbar = $this.closest('[' + self.attr_name() + ']'), - section = topbar.find('section, .top-bar-section'), - settings = topbar.data(self.attr_name(true) + '-init'), - $movedLi = $this.closest('li.moved'), - $previousLevelUl = $movedLi.parent(); - - topbar.data('index', topbar.data('index') - 1); - - if (!self.rtl) { - section.css({left : -(100 * topbar.data('index')) + '%'}); - section.find('>.name').css({left : 100 * topbar.data('index') + '%'}); - } else { - section.css({right : -(100 * topbar.data('index')) + '%'}); - section.find('>.name').css({right : 100 * topbar.data('index') + '%'}); - } - - if (topbar.data('index') === 0) { - topbar.css('height', ''); - } else { - topbar.css('height', $previousLevelUl.outerHeight(true) + topbar.data('height')); - } - - setTimeout(function () { - $movedLi.removeClass('moved'); - }, 300); - }); - - // Show dropdown menus when their items are focused - S(this.scope).find('.dropdown a') - .focus(function () { - $(this).parents('.has-dropdown').addClass('hover'); - }) - .blur(function () { - $(this).parents('.has-dropdown').removeClass('hover'); - }); - }, - - resize : function () { - var self = this; - self.S('[' + this.attr_name() + ']').each(function () { - var topbar = self.S(this), - settings = topbar.data(self.attr_name(true) + '-init'); - - var stickyContainer = topbar.parent('.' + self.settings.sticky_class); - var stickyOffset; - - if (!self.breakpoint()) { - var doToggle = topbar.hasClass('expanded'); - topbar - .css('height', '') - .removeClass('expanded') - .find('li') - .removeClass('hover'); - - if (doToggle) { - self.toggle(topbar); - } - } - - if (self.is_sticky(topbar, stickyContainer, settings)) { - if (stickyContainer.hasClass('fixed')) { - // Remove the fixed to allow for correct calculation of the offset. - stickyContainer.removeClass('fixed'); - - stickyOffset = stickyContainer.offset().top; - if (self.S(document.body).hasClass('f-topbar-fixed')) { - stickyOffset -= topbar.data('height'); - } - - topbar.data('stickyoffset', stickyOffset); - stickyContainer.addClass('fixed'); - } else { - stickyOffset = stickyContainer.offset().top; - topbar.data('stickyoffset', stickyOffset); - } - } - - }); - }, - - breakpoint : function () { - return !matchMedia(Foundation.media_queries['topbar']).matches; - }, - - small : function () { - return matchMedia(Foundation.media_queries['small']).matches; - }, - - medium : function () { - return matchMedia(Foundation.media_queries['medium']).matches; - }, - - large : function () { - return matchMedia(Foundation.media_queries['large']).matches; - }, - - assemble : function (topbar) { - var self = this, - settings = topbar.data(this.attr_name(true) + '-init'), - section = self.S('section, .top-bar-section', topbar); - - // Pull element out of the DOM for manipulation - section.detach(); - - self.S('.has-dropdown>a', section).each(function () { - var $link = self.S(this), - $dropdown = $link.siblings('.dropdown'), - url = $link.attr('href'), - $titleLi; - - if (!$dropdown.find('.title.back').length) { - - if (settings.mobile_show_parent_link == true && url) { - $titleLi = $('
  • '); - } else { - $titleLi = $('
  • '); - } - - // Copy link to subnav - if (settings.custom_back_text == true) { - $('h5>a', $titleLi).html(settings.back_text); - } else { - $('h5>a', $titleLi).html('« ' + $link.html()); - } - $dropdown.prepend($titleLi); - } - }); - - // Put element back in the DOM - section.appendTo(topbar); - - // check for sticky - this.sticky(); - - this.assembled(topbar); - }, - - assembled : function (topbar) { - topbar.data(this.attr_name(true), $.extend({}, topbar.data(this.attr_name(true)), {assembled : true})); - }, - - height : function (ul) { - var total = 0, - self = this; - - $('> li', ul).each(function () { - total += self.S(this).outerHeight(true); - }); - - return total; - }, - - sticky : function () { - var self = this; - - this.S(window).on('scroll', function () { - self.update_sticky_positioning(); - }); - }, - - update_sticky_positioning : function () { - var klass = '.' + this.settings.sticky_class, - $window = this.S(window), - self = this; - - if (self.settings.sticky_topbar && self.is_sticky(this.settings.sticky_topbar,this.settings.sticky_topbar.parent(), this.settings)) { - var distance = this.settings.sticky_topbar.data('stickyoffset') + this.settings.start_offset; - if (!self.S(klass).hasClass('expanded')) { - if ($window.scrollTop() > (distance)) { - if (!self.S(klass).hasClass('fixed')) { - self.S(klass).addClass('fixed'); - self.S('body').addClass('f-topbar-fixed'); - } - } else if ($window.scrollTop() <= distance) { - if (self.S(klass).hasClass('fixed')) { - self.S(klass).removeClass('fixed'); - self.S('body').removeClass('f-topbar-fixed'); - } - } - } - } - }, - - off : function () { - this.S(this.scope).off('.fndtn.topbar'); - this.S(window).off('.fndtn.topbar'); - }, - - reflow : function () {} - }; -}(jQuery, window, window.document)); diff --git a/docs/themes/porter/static/js/custom/headroom.js b/docs/themes/porter/static/js/custom/headroom.js deleted file mode 100755 index 58c4c336e..000000000 --- a/docs/themes/porter/static/js/custom/headroom.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * headroom.js v0.7.0 - Give your page some headroom. Hide your header until you need it - * Copyright (c) 2014 Nick Williams - http://wicky.nillia.ms/headroom.js - * License: MIT - */ -!function(a,b){"use strict";function c(a){this.callback=a,this.ticking=!1}function d(b){return b&&"undefined"!=typeof a&&(b===a||b.nodeType)}function e(a){if(arguments.length<=0)throw new Error("Missing arguments in extend function");var b,c,f=a||{};for(c=1;ca,c=a+this.getViewportHeight()>this.getScrollerHeight();return b||c},toleranceExceeded:function(a,b){return Math.abs(a-this.lastKnownScrollY)>=this.tolerance[b]},shouldUnpin:function(a,b){var c=a>this.lastKnownScrollY,d=a>=this.offset;return c&&d&&b},shouldPin:function(a,b){var c=athis.lastKnownScrollY?"down":"up",c=this.toleranceExceeded(a,b);this.isOutOfBounds(a)||(a<=this.offset?this.top():this.notTop(),this.shouldUnpin(a,c)?this.unpin():this.shouldPin(a,c)&&this.pin(),this.lastKnownScrollY=a)}},g.options={tolerance:{up:0,down:0},offset:0,scroller:a,classes:{pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",initial:"headroom"}},g.cutsTheMustard="undefined"!=typeof h&&h.rAF&&h.bind&&h.classList,a.Headroom=g}(window,document); \ No newline at end of file diff --git a/docs/themes/porter/static/js/custom/headroom.min.js b/docs/themes/porter/static/js/custom/headroom.min.js deleted file mode 100755 index fcf9c18b2..000000000 --- a/docs/themes/porter/static/js/custom/headroom.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * headroom.js v0.7.0 - Give your page some headroom. Hide your header until you need it - * Copyright (c) 2014 Nick Williams - http://wicky.nillia.ms/headroom.js - * License: MIT - */ - -!function(a,b){"use strict";function c(a){this.callback=a,this.ticking=!1}function d(b){return b&&"undefined"!=typeof a&&(b===a||b.nodeType)}function e(a){if(arguments.length<=0)throw new Error("Missing arguments in extend function");var b,c,f=a||{};for(c=1;ca,c=a+this.getViewportHeight()>this.getScrollerHeight();return b||c},toleranceExceeded:function(a,b){return Math.abs(a-this.lastKnownScrollY)>=this.tolerance[b]},shouldUnpin:function(a,b){var c=a>this.lastKnownScrollY,d=a>=this.offset;return c&&d&&b},shouldPin:function(a,b){var c=athis.lastKnownScrollY?"down":"up",c=this.toleranceExceeded(a,b);this.isOutOfBounds(a)||(a<=this.offset?this.top():this.notTop(),this.shouldUnpin(a,c)?this.unpin():this.shouldPin(a,c)&&this.pin(),this.lastKnownScrollY=a)}},g.options={tolerance:{up:0,down:0},offset:0,scroller:a,classes:{pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",initial:"headroom"}},g.cutsTheMustard="undefined"!=typeof h&&h.rAF&&h.bind&&h.classList,a.Headroom=g}(window,document); \ No newline at end of file diff --git a/docs/themes/porter/static/js/custom/jquery.headroom.min.js b/docs/themes/porter/static/js/custom/jquery.headroom.min.js deleted file mode 100755 index fcf9c18b2..000000000 --- a/docs/themes/porter/static/js/custom/jquery.headroom.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * headroom.js v0.7.0 - Give your page some headroom. Hide your header until you need it - * Copyright (c) 2014 Nick Williams - http://wicky.nillia.ms/headroom.js - * License: MIT - */ - -!function(a,b){"use strict";function c(a){this.callback=a,this.ticking=!1}function d(b){return b&&"undefined"!=typeof a&&(b===a||b.nodeType)}function e(a){if(arguments.length<=0)throw new Error("Missing arguments in extend function");var b,c,f=a||{};for(c=1;ca,c=a+this.getViewportHeight()>this.getScrollerHeight();return b||c},toleranceExceeded:function(a,b){return Math.abs(a-this.lastKnownScrollY)>=this.tolerance[b]},shouldUnpin:function(a,b){var c=a>this.lastKnownScrollY,d=a>=this.offset;return c&&d&&b},shouldPin:function(a,b){var c=athis.lastKnownScrollY?"down":"up",c=this.toleranceExceeded(a,b);this.isOutOfBounds(a)||(a<=this.offset?this.top():this.notTop(),this.shouldUnpin(a,c)?this.unpin():this.shouldPin(a,c)&&this.pin(),this.lastKnownScrollY=a)}},g.options={tolerance:{up:0,down:0},offset:0,scroller:a,classes:{pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",initial:"headroom"}},g.cutsTheMustard="undefined"!=typeof h&&h.rAF&&h.bind&&h.classList,a.Headroom=g}(window,document); \ No newline at end of file diff --git a/docs/themes/porter/static/js/custom/jquery.js b/docs/themes/porter/static/js/custom/jquery.js deleted file mode 100755 index 05fb1ec2b..000000000 --- a/docs/themes/porter/static/js/custom/jquery.js +++ /dev/null @@ -1,26 +0,0 @@ -/*! - * jQuery JavaScript Library v2.1.1 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-05-01T17:11Z - */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){function c(a){var b=a.length,c=_.type(a);return"function"===c||_.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}function d(a,b,c){if(_.isFunction(b))return _.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return _.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(hb.test(b))return _.filter(b,a,c);b=_.filter(b,a)}return _.grep(a,function(a){return U.call(b,a)>=0!==c})}function e(a,b){for(;(a=a[b])&&1!==a.nodeType;);return a}function f(a){var b=ob[a]={};return _.each(a.match(nb)||[],function(a,c){b[c]=!0}),b}function g(){Z.removeEventListener("DOMContentLoaded",g,!1),a.removeEventListener("load",g,!1),_.ready()}function h(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=_.expando+Math.random()}function i(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(ub,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:tb.test(c)?_.parseJSON(c):c}catch(e){}sb.set(a,b,c)}else c=void 0;return c}function j(){return!0}function k(){return!1}function l(){try{return Z.activeElement}catch(a){}}function m(a,b){return _.nodeName(a,"table")&&_.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function n(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function o(a){var b=Kb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function p(a,b){for(var c=0,d=a.length;d>c;c++)rb.set(a[c],"globalEval",!b||rb.get(b[c],"globalEval"))}function q(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(rb.hasData(a)&&(f=rb.access(a),g=rb.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)_.event.add(b,e,j[e][c])}sb.hasData(a)&&(h=sb.access(a),i=_.extend({},h),sb.set(b,i))}}function r(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&_.nodeName(a,b)?_.merge([a],c):c}function s(a,b){var c=b.nodeName.toLowerCase();"input"===c&&yb.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}function t(b,c){var d,e=_(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:_.css(e[0],"display");return e.detach(),f}function u(a){var b=Z,c=Ob[a];return c||(c=t(a,b),"none"!==c&&c||(Nb=(Nb||_("