diff --git a/.gitignore b/.gitignore index c138f46..a857b65 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -.history/ \ No newline at end of file +.history/ +public/ +resources/ \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..7102933 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "themes/docport"] + path = themes/docport + url = https://github.com/vjeantet/hugo-theme-docport.git diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 56bc836..b259bd8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,7 +14,7 @@ Suggested changes may be re-phrased for clarity, but we will verify intent with ## Adding your signature -If you agree that this is MinimumCD, please create a [pull request](https://help.github.com/articles/creating-a-pull-request-from-a-fork/) to add your signature. We are determined to be good custodians of the core principles and promise that any changes to the practices will receive much scrutiny. +If you agree that this is MinimumCD, please create a [pull request](https://help.github.com/articles/creating-a-pull-request-from-a-fork/) to add your signature to the [signature file](content/MinimumCD/signatures.md). We are determined to be good custodians of the core principles and promise that any changes to the practices will receive much scrutiny. ## Removing your signature diff --git a/README.md b/README.md index b0d6cd0..51b32e5 100644 --- a/README.md +++ b/README.md @@ -1,156 +1,15 @@ # Minimum Viable Continuous Delivery -> "Continuous delivery improves both delivery performance and quality, and also helps improve culture and reduce burnout and deployment pain." +This is a community project to define the minimum set of practices that give the expected improvements to outcomes, quality of life, and organizational structure that come with continuous delivery. --- Accelerate +## Contributing -We, [the undersigned](#signatories), believe that a minimal definition of continuous delivery (CD) is required to improve the flow of delivery. While our contexts may be different, there are universal practices. By defining them we can: +Please see the [contribution](CONTRIBUTING.md) page for adding signatures or suggesting improvements. -- Introduce new practitioners in a consistent way -- Discuss engineering practices that comprise CD -- Help each other improve current capabilities +If you'd like to submit a translation, please see the suggestions [here](TRANSLATING.md). -Only by implementing core practices do we begin to see the benefits of continuous delivery. +## Tool info -The practices below are the minimum, a starting point. Continuous improvement of the speed, quality, and safety of the delivery pipeline is the expected outcome. +Built with Hugo ---- - -## Continuous Delivery - -CD is the engineering discipline of delivering all changes in a standard way safely. It covers a broad spectrum of activities depending on what is being delivered. However, there are behaviors and abilities that must be met in every context to qualify as "continuous delivery" - -The minimum activities required for CD are: - -- [Continuous integration](#continuous-integration) -- The [application - pipeline](https://www.informit.com/articles/article.aspx?p=1621865&seqNum=2#:~:text=%EE%94%80Buy-,What%20Is%20a%20Deployment%20Pipeline%3F,-At%20an%20abstract) - is the only path to deploy to production. -- The pipeline decides the releasability of changes, its verdict is [definitive](./faq.md#why-should-the-pipeline-be-definitive-for-deploy) -- Artifacts created by the pipeline always meet the organization's [definition of deployable](./faq.md#what-do-we-mean-by-definition-of-deployable) -- [Immutable artifact](./faq#what-is-an-immutable-artifact). No human changes after commit. -- All feature work stops when the pipeline is red -- Production-like test environment -- Rollback on-demand -- [Application configuration](./faq.md#what-is-application-configuration) deploys with artifact - -## Continuous Integration - -CI is the activity of very frequently integrating work to the trunk of version control and verifying that the work is, to the best of our knowledge, releasable. - -The minimum activities required for CI are: - -- [Trunk-based development](https://trunkbaseddevelopment.com/) -- Work integrates to the trunk at a minimum daily -- Work has automated testing before merge to trunk -- Work is tested with other work automatically on merge -- All feature work stops when the build is red -- New work does not break delivered work - -## Trunk-based Development - -[Trunk-based development](https://trunkbaseddevelopment.com/) is the branching pattern required to meet the definition -of CI. It prevents lost work, the risk of corruption that comes from merge conflict resolution, and also reduces movement -waste that increases batch size. - -- The minimum activities required for TBD are: - - All changes integrate into the trunk - - If branches from the trunk are used: - - They originate from the trunk - - They re-integrate to the trunk - - They are short-lived and removed after the merge - -## Beyond the Minimums - -Minimum CD is not the first step in a maturity model. However, it is still the bare minimum upon which many more practices should be built as appropriate to your context. To aid your journey in going beyond Minimum CD, we maintain a list of resources that focus on Continuous Delivery which we have found very useful in our own journeys. - -These contain the basics, but also the knowledge needed to become an "Elite" CD organization. They are specific to solving the problem of "why can't we go to production today?" - -[Read the list](./references.md). - -## Why did we build this? - -For more background on Minimum CD and answers to other common questions, please [read the FAQs](./faq.md). - -## Translations - -- [Finnish](./fi/README.md) -- [French](./fr/README.md) -- [Italian](./it/README.md) -- [Spanish](./es/README.md) - -## Want to Contribute or become a signatory? - -Read our [contribution guidelines](./CONTRIBUTING.md). - -## Signatories - -| Name | Contact | -|--------------------|-------------------------------------------------------------| -| Dave Farley | | -| Bryan Finster | | -| Ferrix Hovi | | -| Justin Abrahms | | -| Joe Arrowood | | -| Jerreck McWilliams | | -| Istvan Bathazi | | -| Sara Gramling | | -| Tracy Bannon | | -| Dana Finster | | -| Patrick S. Kelso | | -| Ben Link | | -| Chris Kernaghan | | -| Chris Gossett | | -| Joshua Barton | | -| Marc Boudreau | | -| Courtney Kissler | | -| Andrea Laforgia | | -| Michael Nygard | | -| Aurel Estoup | | -| Emiliano Sutil | | -| Jason Walker | | -| Thomas J. Sweet | | -| Kelly Brownsberger | | -| Andrew Marshall | | -| Vilas Veeraraghavan| | -| Javier Lopez | | -| Javier Magana | | -| Faraz Syed | | -| James Simon | | -| Nathen Harvey | | -| Jesse Getzie | | -| Christophe Chaudier| | -| Rosalind Radcliffe | | -| Austin Abro | | -| Ron Forrester | | -| David Hawes-Johnson| | -| Paul Moore | | -| Shawn Button | | -| Jesse Lin | | -| Markus Mikkolainen | | -| Alessandro Fardin | | -| James Moverley | | -| Michael Kingery | | -| Isaac Perez Moncho | | -| Igor Gassmann | | -| Wayne Gaskill | | -| Chris Gallivan | | -| Alexander Birk | | -| Kaine Bent | | -| Andrew Ochsner | | -| Stephen Magill | | -| Jordan Schwartz | | -| Jean-François Lépine| | -| Markus Arikan | | -| Jeff Dunn | | -| Bob Winter | | -| Azlam Abdulsalam | | -| Jos Hendriks | | -| Nathan Nicholson | | -| William H. Kirk | | -| John Boyes | | -| Patrice Corbard | | -| Dirk Lehmann | | -| Niko Kivelä | | -| Vu Ha | | -| Srđan Đukić | | +[Theme](https://docport.netlify.app/docport-theme/) documentation diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 9da9a02..0000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-dinky \ No newline at end of file diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..00e77bd --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..bc17045 --- /dev/null +++ b/config.toml @@ -0,0 +1,64 @@ +baseURL = 'https://minimumcd.org/' +title = 'MinimumCD.org' +languageCode = "en-US" +defaultContentLanguage = "en" + +theme = "docport" + +pygmentsCodeFences = true +pygmentsStyle = "monokai" + +defaultContentLanguageInSubdir= false +enableMissingTranslationPlaceholders = false + +# googleanalytics = "UA-123-45" + +disableKinds = ["taxonomy", "taxonomyTerm", "category", "RSS"] + +# Keep this as is +[outputs] +home = [ "HTML", "RSS", "JSON"] + +# Site params +[params] +ordersectionsby = "weight" # ordersectionsby = "title" +color_main = "#477bbf" +color_second = "#b30000" +disableSearch = false # default is false +disableNavChevron = false # set true to hide next/prev chevron, default is false +menushortcutsnewtab = false # set true to open shortcuts links to a new tab/window + +editURL = "https://github.com/Minimum-CD/cd-manifesto/content/" +enableGitInfo = true + +[mediaTypes] + [mediaTypes."application/netlifyconfig"] + suffixes = ["yml"] + +[outputFormats] +[outputFormats.netlifyyaml] +mediaType = "application/netlifyconfig" +isPlainText = true +isHTML = false +notAlternative = true + +[markup.goldmark.renderer] +unsafe = true + +# Code highlight configuration +[markup.highlight] +codeFences = true +guessSyntax = true +hl_Lines = "" +lineNoStart = 1 +lineNos = false +lineNumbersInTable = true +noClasses = true +style = "monokai" +tabWidth = 2 + +[[menu.shortcuts]] +name = "Github" +identifier = "ds" +url = "https://github.com/Minimum-CD/cd-manifesto" +weight = 10 \ No newline at end of file diff --git a/content/Change Log/_index.md b/content/Change Log/_index.md new file mode 100644 index 0000000..d242776 --- /dev/null +++ b/content/Change Log/_index.md @@ -0,0 +1,12 @@ +--- +title: Change Log +description: "" +weight: 3 +--- + +## Changes to the core practices + +| Date | Change | +|------------|-----------------------------------------------------------------------------------------------------------------------------| +| 2021-10-12 | [v1.0.0](https://github.com/Minimum-CD/cd-manifesto/tree/6e9d68c442c0e9c9a4bfd9a4edae347fe4a7ce4f) Dave Farley signature | +| 2021-10-08 | [Initial Commit](https://github.com/Minimum-CD/cd-manifesto/tree/7c4e098ee19d5fbe1b7d80b2726e8e04e6fff186) | \ No newline at end of file diff --git a/faq.md b/content/FAQ/_index.md similarity index 98% rename from faq.md rename to content/FAQ/_index.md index ef0195b..0e35fe3 100644 --- a/faq.md +++ b/content/FAQ/_index.md @@ -1,4 +1,8 @@ -# Frequently Asked Questions +--- +title: Frequent Questions +description: FAQ +weight: 2 +--- ## Why does this exist? diff --git a/content/MinimumCD/_index.md b/content/MinimumCD/_index.md new file mode 100644 index 0000000..3ede809 --- /dev/null +++ b/content/MinimumCD/_index.md @@ -0,0 +1,79 @@ +--- +title: Minimum Viable CD +description: "" +weight: 1 +--- + +{{% notice %}} +"Continuous delivery improves both delivery performance and quality, and also helps improve culture and reduce burnout and deployment pain." + +-- Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations +{{% /notice %}} + +We, [the undersigned](#signatories), believe that a minimal definition of continuous delivery (CD) is required to improve the flow of delivery and achieve the outcomes above. While our contexts may be different, there are universal practices common in all. By defining them we can: + +- Introduce new practitioners in a consistent way +- Discuss engineering practices that comprise CD +- Help each other improve current capabilities + +Only by implementing core practices do we begin to see the benefits of continuous delivery. + +The practices below are the minimum, a starting point. Continuous improvement of the speed, quality, and safety of the delivery pipeline is the expected outcome. + +--- + +## Continuous Delivery + +CD is the engineering discipline of delivering all changes in a standard way safely. It covers a broad spectrum of activities depending on what is being delivered. However, there are behaviors and abilities that must be met in every context to qualify as "continuous delivery" + +The minimum activities required for CD are: + +- Use [Continuous integration](#continuous-integration) +- The [application + pipeline](https://www.informit.com/articles/article.aspx?p=1621865&seqNum=2#:~:text=%EE%94%80Buy-,What%20Is%20a%20Deployment%20Pipeline%3F,-At%20an%20abstract) + is the only path to deploy to production. +- The pipeline decides the releasability of changes, its verdict is [definitive](./faq.md#why-should-the-pipeline-be-definitive-for-deploy) +- Artifacts created by the pipeline always meet the organization's [definition of deployable](./faq.md#what-do-we-mean-by-definition-of-deployable) +- [Immutable artifact](./faq#what-is-an-immutable-artifact). No human changes after commit. +- All feature work stops when the pipeline is red +- Production-like test environment +- Rollback on-demand +- [Application configuration](./faq.md#what-is-application-configuration) deploys with artifact + +## Continuous Integration + +CI is the activity of very frequently integrating work to the trunk of version control and verifying that the work is, to the best of our knowledge, releasable. + +The minimum activities required for CI are: + +- [Trunk-based development](https://trunkbaseddevelopment.com/) +- Work integrates to the trunk at a minimum daily +- Work has automated testing before merge to trunk +- Work is tested with other work automatically on merge +- All feature work stops when the build is red +- New work does not break delivered work + +## Trunk-based Development + +[Trunk-based development](https://trunkbaseddevelopment.com/) is the branching pattern required to meet the definition +of CI. It prevents lost work, the risk of corruption that comes from merge conflict resolution, and also reduces movement +waste that increases batch size. + +- The minimum activities required for TBD are: + - All changes integrate into the trunk + - If branches from the trunk are used: + - They originate from the trunk + - They re-integrate to the trunk + - They are short-lived and removed after the merge + +## Why did we build this? + +For background on Minimum CD and answers to other common questions, please [read the FAQs](../faq). + +## Want to Contribute? + +Read our [contribution guidelines](https://github.com/Minimum-CD/cd-manifesto/blob/master/CONTRIBUTING.md). + +## Signatories + +{{%excerpt-include filename="MinimumCD/signatures.md" panel="" /%}} \ No newline at end of file diff --git a/content/MinimumCD/signatures.md b/content/MinimumCD/signatures.md new file mode 100644 index 0000000..e35b762 --- /dev/null +++ b/content/MinimumCD/signatures.md @@ -0,0 +1,80 @@ +--- +title: Signatories +description: We, the undersigned, agree +weight: 2 +--- + +Do you want to become a signatory? Read our [contribution guidelines](https://github.com/Minimum-CD/cd-manifesto/blob/master/CONTRIBUTING.md). + +{{%excerpt%}} +| Name | Contact | +|--------------------|-------------------------------------------------------------| +| Dave Farley | | +| Bryan Finster | | +| Ferrix Hovi | | +| Justin Abrahms | | +| Joe Arrowood | | +| Jerreck McWilliams | | +| Istvan Bathazi | | +| Sara Gramling | | +| Tracy Bannon | | +| Dana Finster | | +| Patrick S. Kelso | | +| Ben Link | | +| Chris Kernaghan | | +| Chris Gossett | | +| Joshua Barton | | +| Marc Boudreau | | +| Courtney Kissler | | +| Andrea Laforgia | | +| Michael Nygard | | +| Aurel Estoup | | +| Emiliano Sutil | | +| Jason Walker | | +| Thomas J. Sweet | | +| Kelly Brownsberger | | +| Andrew Marshall | | +| Vilas Veeraraghavan| | +| Javier Lopez | | +| Javier Magana | | +| Faraz Syed | | +| James Simon | | +| Nathen Harvey | | +| Jesse Getzie | | +| Christophe Chaudier| | +| Rosalind Radcliffe | | +| Austin Abro | | +| Ron Forrester | | +| David Hawes-Johnson| | +| Paul Moore | | +| Shawn Button | | +| Jesse Lin | | +| Markus Mikkolainen | | +| Alessandro Fardin | | +| James Moverley | | +| Michael Kingery | | +| Isaac Perez Moncho | | +| Igor Gassmann | | +| Wayne Gaskill | | +| Chris Gallivan | | +| Alexander Birk | | +| Kaine Bent | | +| Andrew Ochsner | | +| Stephen Magill | | +| Jordan Schwartz | | +| Jean-François Lépine| | +| Markus Arikan | | +| Jeff Dunn | | +| Bob Winter | | +| Azlam Abdulsalam | | +| Jos Hendriks | | +| Nathan Nicholson | | +| William H. Kirk | | +| John Boyes | | +| Patrice Corbard | | +| Dirk Lehmann | | +| Niko Kivelä | | +| Vu Ha | | +| Srđan Đukić | | + +{{% /excerpt%}} diff --git a/references.md b/content/References/_index.md similarity index 82% rename from references.md rename to content/References/_index.md index 8540c84..07b03c2 100644 --- a/references.md +++ b/content/References/_index.md @@ -1,4 +1,12 @@ -# Recommended Resources +--- +title: Beyond the Minimums +description: Recommended Resources +weight: 2 +--- + +Minimum CD is not the first step in a maturity model. However, it is still the bare minimum upon which many more practices should be built as appropriate to your context. To aid your journey in going beyond Minimum CD, we maintain a list of resources that focus on Continuous Delivery which we have found very useful in our own journeys. + +These contain the basics for getting started, but also the knowledge needed to become an "Elite" CD organization. They are specific to solving the problem of "why can't we go to production today?" | Reference | Type | Source | |-----------------------------------------------------------------------------------------------------------------------------------------------------|---------|-----------------------------------------| diff --git a/fi/README.md b/content/Translations/Finnish/_index.md similarity index 97% rename from fi/README.md rename to content/Translations/Finnish/_index.md index b9fd1f8..3835562 100644 --- a/fi/README.md +++ b/content/Translations/Finnish/_index.md @@ -1,4 +1,10 @@ -# Vähäisin toimiva jatkuva toimittaminen +--- +title: Suomi +description: "Vähäisin toimiva jatkuva toimittaminen" +weight: 3 +--- + +## Vähäisin toimiva jatkuva toimittaminen > "Continuous delivery improves both delivery performance and quality, and also helps improve culture and reduce burnout and deployment pain." diff --git a/fr/README.md b/content/Translations/French/_index.md similarity index 98% rename from fr/README.md rename to content/Translations/French/_index.md index c617428..2eed231 100644 --- a/fr/README.md +++ b/content/Translations/French/_index.md @@ -1,3 +1,9 @@ +--- +title: Francais +description: "Le minimum vital pour de la Livraison Continue" +weight: 3 +--- + # Le minimum vital pour de la Livraison Continue > "La livraison continue améliore à la fois les performances de livraison et la qualité, et participe également à améliorer la culture et à réduire l'épuisement et la difficulté des déploiements." diff --git a/it/README.md b/content/Translations/Italian/_index.md similarity index 98% rename from it/README.md rename to content/Translations/Italian/_index.md index 3a6f3f2..85b6e50 100644 --- a/it/README.md +++ b/content/Translations/Italian/_index.md @@ -1,3 +1,9 @@ +--- +title: Italiano +description: "Implementazione minima della Continuous Delivery" +weight: 3 +--- + # Implementazione minima della Continuous Delivery > "La Continuous Delivery migliora sia la velocità di rilascio che la qualità del software ed aiuta a migliorare la cultura, riduce i burnout e gli sforzi tipici legati al rilascio del software in produzione". diff --git a/es/README.md b/content/Translations/Spanish/_index.md similarity index 97% rename from es/README.md rename to content/Translations/Spanish/_index.md index dc44a09..c262d76 100644 --- a/es/README.md +++ b/content/Translations/Spanish/_index.md @@ -1,4 +1,10 @@ -# Mínima Entrega Continua Viable +--- +title: Espanol +description: "Mínima Entrega Continua Viable" +weight: 3 +--- + +## Mínima Entrega Continua Viable > "La entrega continua mejora el rendimiento de entrega y la calidad también ayda a mejorar la cultura, reduce el agotamiento y el dolor de la implementación." diff --git a/content/Translations/_index.md b/content/Translations/_index.md new file mode 100644 index 0000000..9a36623 --- /dev/null +++ b/content/Translations/_index.md @@ -0,0 +1,8 @@ +--- +title: Translations +description: "" +weight: 1 +--- + +{{% children style="h2" depth="1" description="true" %}} + diff --git a/resources/_gen/assets/scss/book.scss_50fc8c04e12a2f59027287995557ceff.content b/resources/_gen/assets/scss/book.scss_50fc8c04e12a2f59027287995557ceff.content new file mode 100644 index 0000000..23817e3 --- /dev/null +++ b/resources/_gen/assets/scss/book.scss_50fc8c04e12a2f59027287995557ceff.content @@ -0,0 +1 @@ +@charset "UTF-8";:root{--gray-100:#f8f9fa;--gray-200:#e9ecef;--gray-500:#adb5bd;--color-link:#0055bb;--color-visited-link:#8440f1;--body-background:white;--body-font-color:black;--icon-filter:none;--hint-color-info:#6bf;--hint-color-warning:#fd6;--hint-color-danger:#f66}/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.flex{display:flex}.flex-auto{flex:auto}.flex-even{flex:1 1}.flex-wrap{flex-wrap:wrap}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.align-center{align-items:center}.mx-auto{margin:0 auto}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.hidden{display:none}input.toggle{height:0;width:0;overflow:hidden;opacity:0;position:absolute}.clearfix::after{content:"";display:table;clear:both}html{font-size:16px;scroll-behavior:smooth;touch-action:manipulation}body{min-width:20rem;color:var(--body-font-color);background:var(--body-background);letter-spacing:.33px;font-weight:400;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box}body *{box-sizing:inherit}h1,h2,h3,h4,h5{font-weight:400}a{text-decoration:none;color:var(--color-link)}img{vertical-align:baseline}:focus{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}aside nav ul{padding:0;margin:0;list-style:none}aside nav ul li{margin:1em 0;position:relative}aside nav ul a{display:block}aside nav ul a:hover{opacity:.5}aside nav ul ul{padding-inline-start:1rem}ul.pagination{display:flex;justify-content:center;list-style-type:none}ul.pagination .page-item a{padding:1rem}.container{max-width:80rem;margin:0 auto}.book-icon{filter:var(--icon-filter)}.book-brand{margin-top:0;margin-bottom:1rem}.book-brand img{height:1.5em;width:1.5em;margin-inline-end:.5rem}.book-menu{flex:0 0 16rem;font-size:.875rem}.book-menu .book-menu-content{width:16rem;padding:1rem;background:var(--body-background);position:fixed;top:0;bottom:0;overflow-x:hidden;overflow-y:auto}.book-menu a,.book-menu label{color:inherit;cursor:pointer;word-wrap:break-word}.book-menu a.active{color:var(--color-link)}.book-menu input.toggle+label+ul{display:none}.book-menu input.toggle:checked+label+ul{display:block}.book-menu input.toggle+label::after{content:"▸"}.book-menu input.toggle:checked+label::after{content:"▾"}body[dir=rtl] .book-menu input.toggle+label::after{content:"◂"}body[dir=rtl] .book-menu input.toggle:checked+label::after{content:"▾"}.book-section-flat{margin:2rem 0}.book-section-flat>a,.book-section-flat>span,.book-section-flat>label{font-weight:bolder}.book-section-flat>ul{padding-inline-start:0}.book-page{min-width:20rem;flex-grow:1;padding:1rem}.book-post{margin-bottom:3rem}.book-header{display:none;margin-bottom:1rem}.book-header label{line-height:0}.book-header img.book-icon{height:1.5em;width:1.5em}.book-search{position:relative;margin:1rem 0;border-bottom:1px solid transparent}.book-search input{width:100%;padding:.5rem;border:0;border-radius:.25rem;background:var(--gray-100);color:var(--body-font-color)}.book-search input:required+.book-search-spinner{display:block}.book-search .book-search-spinner{position:absolute;top:0;margin:.5rem;margin-inline-start:calc(100% - 1.5rem);width:1rem;height:1rem;border:1px solid transparent;border-top-color:var(--body-font-color);border-radius:50%;animation:spin 1s ease infinite}@keyframes spin{100%{transform:rotate(360deg)}}.book-search small{opacity:.5}.book-toc{flex:0 0 16rem;font-size:.75rem}.book-toc .book-toc-content{width:16rem;padding:1rem;position:fixed;top:0;bottom:0;overflow-x:hidden;overflow-y:auto}.book-toc img{height:1em;width:1em}.book-toc nav>ul>li:first-child{margin-top:0}.book-footer{padding-top:1rem;font-size:.875rem}.book-footer img{height:1em;width:1em;margin-inline-end:.5rem}.book-comments{margin-top:1rem}.book-languages{margin-block-end:2rem}.book-languages .book-icon{height:1em;width:1em;margin-inline-end:.5em}.book-languages ul{padding-inline-start:1.5em}.book-menu-content,.book-toc-content,.book-page,.book-header aside,.markdown{transition:.2s ease-in-out;transition-property:transform,margin,opacity,visibility;will-change:transform,margin,opacity}@media screen and (max-width:56rem){#menu-control,#toc-control{display:inline}.book-menu{visibility:hidden;margin-inline-start:-16rem;font-size:16px;z-index:1}.book-toc{display:none}.book-header{display:block}#menu-control:focus~main label[for=menu-control]{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}#menu-control:checked~main .book-menu{visibility:initial}#menu-control:checked~main .book-menu .book-menu-content{transform:translateX(16rem);box-shadow:0 0 .5rem rgba(0,0,0,.1)}#menu-control:checked~main .book-page{opacity:.25}#menu-control:checked~main .book-menu-overlay{display:block;position:absolute;top:0;bottom:0;left:0;right:0}#toc-control:focus~main label[for=toc-control]{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}#toc-control:checked~main .book-header aside{display:block}body[dir=rtl] #menu-control:checked~main .book-menu .book-menu-content{transform:translateX(-16rem)}}@media screen and (min-width:80rem){.book-page,.book-menu .book-menu-content,.book-toc .book-toc-content{padding:2rem 1rem}}@font-face{font-family:roboto;font-style:normal;font-weight:400;font-display:swap;src:local(""),url(fonts/roboto-v27-latin-regular.woff2)format("woff2"),url(fonts/roboto-v27-latin-regular.woff)format("woff")}@font-face{font-family:roboto;font-style:normal;font-weight:700;font-display:swap;src:local(""),url(fonts/roboto-v27-latin-700.woff2)format("woff2"),url(fonts/roboto-v27-latin-700.woff)format("woff")}@font-face{font-family:roboto mono;font-style:normal;font-weight:400;font-display:swap;src:local(""),url(fonts/roboto-mono-v13-latin-regular.woff2)format("woff2"),url(fonts/roboto-mono-v13-latin-regular.woff)format("woff")}body{font-family:roboto,sans-serif}code{font-family:roboto mono,monospace}@media print{.book-menu,.book-footer,.book-toc{display:none}.book-header,.book-header aside{display:block}main{display:block!important}}.markdown{line-height:1.6}.markdown>:first-child{margin-top:0}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{font-weight:400;line-height:1;margin-top:1.5em;margin-bottom:1rem}.markdown h1 a.anchor,.markdown h2 a.anchor,.markdown h3 a.anchor,.markdown h4 a.anchor,.markdown h5 a.anchor,.markdown h6 a.anchor{opacity:0;font-size:.75em;vertical-align:middle;text-decoration:none}.markdown h1:hover a.anchor,.markdown h1 a.anchor:focus,.markdown h2:hover a.anchor,.markdown h2 a.anchor:focus,.markdown h3:hover a.anchor,.markdown h3 a.anchor:focus,.markdown h4:hover a.anchor,.markdown h4 a.anchor:focus,.markdown h5:hover a.anchor,.markdown h5 a.anchor:focus,.markdown h6:hover a.anchor,.markdown h6 a.anchor:focus{opacity:initial}.markdown h4,.markdown h5,.markdown h6{font-weight:bolder}.markdown h5{font-size:.875em}.markdown h6{font-size:.75em}.markdown b,.markdown optgroup,.markdown strong{font-weight:bolder}.markdown a{text-decoration:none}.markdown a:hover{text-decoration:underline}.markdown a:visited{color:var(--color-visited-link)}.markdown img{max-width:100%;height:auto}.markdown code{padding:0 .25rem;background:var(--gray-200);border-radius:.25rem;font-size:.875em}.markdown pre{padding:1rem;background:var(--gray-100);border-radius:.25rem;overflow-x:auto}.markdown pre code{padding:0;background:0 0}.markdown blockquote{margin:1rem 0;padding:.5rem 1rem .5rem .75rem;border-inline-start:.25rem solid var(--gray-200);border-radius:.25rem}.markdown blockquote :first-child{margin-top:0}.markdown blockquote :last-child{margin-bottom:0}.markdown table{overflow:auto;display:block;border-spacing:0;border-collapse:collapse;margin-top:1rem;margin-bottom:1rem}.markdown table tr th,.markdown table tr td{padding:.5rem 1rem;border:1px solid var(--gray-200)}.markdown table tr:nth-child(2n){background:var(--gray-100)}.markdown hr{height:1px;border:none;background:var(--gray-200)}.markdown ul,.markdown ol{padding-inline-start:2rem}.markdown dl dt{font-weight:bolder;margin-top:1rem}.markdown dl dd{margin-inline-start:0;margin-bottom:1rem}.markdown .highlight table tr td:nth-child(1) pre{margin:0;padding-inline-end:0}.markdown .highlight table tr td:nth-child(2) pre{margin:0;padding-inline-start:0}.markdown details{padding:1rem;border:1px solid var(--gray-200);border-radius:.25rem}.markdown details summary{line-height:1;padding:1rem;margin:-1rem;cursor:pointer}.markdown details[open] summary{margin-bottom:0}.markdown figure{margin:1rem 0}.markdown figure figcaption p{margin-top:0}.markdown-inner>:first-child{margin-top:0}.markdown-inner>:last-child{margin-bottom:0}.markdown .book-expand{margin-top:1rem;margin-bottom:1rem;border:1px solid var(--gray-200);border-radius:.25rem;overflow:hidden}.markdown .book-expand .book-expand-head{background:var(--gray-100);padding:.5rem 1rem;cursor:pointer}.markdown .book-expand .book-expand-content{display:none;padding:1rem}.markdown .book-expand input[type=checkbox]:checked+.book-expand-content{display:block}.markdown .book-tabs{margin-top:1rem;margin-bottom:1rem;border:1px solid var(--gray-200);border-radius:.25rem;overflow:hidden;display:flex;flex-wrap:wrap}.markdown .book-tabs label{display:inline-block;padding:.5rem 1rem;border-bottom:1px transparent;cursor:pointer}.markdown .book-tabs .book-tabs-content{order:999;width:100%;border-top:1px solid var(--gray-100);padding:1rem;display:none}.markdown .book-tabs input[type=radio]:checked+label{border-bottom:1px solid var(--color-link)}.markdown .book-tabs input[type=radio]:checked+label+.book-tabs-content{display:block}.markdown .book-tabs input[type=radio]:focus+label{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}.markdown .book-columns{margin-left:-1rem;margin-right:-1rem}.markdown .book-columns>div{margin:1rem 0;min-width:10rem;padding:0 1rem}.markdown a.book-btn{display:inline-block;font-size:.875rem;color:var(--color-link);line-height:2rem;padding:0 1rem;border:1px solid var(--color-link);border-radius:.25rem;cursor:pointer}.markdown a.book-btn:hover{text-decoration:none}.markdown .book-hint.info{border-color:#6bf;background-color:rgba(102,187,255,.1)}.markdown .book-hint.warning{border-color:#fd6;background-color:rgba(255,221,102,.1)}.markdown .book-hint.danger{border-color:#f66;background-color:rgba(255,102,102,.1)} \ No newline at end of file diff --git a/resources/_gen/assets/scss/book.scss_50fc8c04e12a2f59027287995557ceff.json b/resources/_gen/assets/scss/book.scss_50fc8c04e12a2f59027287995557ceff.json new file mode 100644 index 0000000..f54f243 --- /dev/null +++ b/resources/_gen/assets/scss/book.scss_50fc8c04e12a2f59027287995557ceff.json @@ -0,0 +1 @@ +{"Target":"book.min.46181bc93375ba932026e753b37c40e6ff8bb16a9ef770c78bcc663e4577b1ba.css","MediaType":"text/css","Data":{"Integrity":"sha256-RhgbyTN1upMgJudTs3xA5v+LsWqe93DHi8xmPkV3sbo="}} \ No newline at end of file diff --git a/resources/_gen/assets/scss/sass/layout.scss_f300667da4f5b5f84e1a9e0702b2fdde.content b/resources/_gen/assets/scss/sass/layout.scss_f300667da4f5b5f84e1a9e0702b2fdde.content new file mode 100644 index 0000000..299f7f7 --- /dev/null +++ b/resources/_gen/assets/scss/sass/layout.scss_f300667da4f5b5f84e1a9e0702b2fdde.content @@ -0,0 +1,151 @@ +* { + box-sizing: border-box; } + +a, abbr, acronym, address, applet, article, aside, audio, b, big, blockquote, body, canvas, caption, center, cite, code, dd, del, details, dfn, div, dl, dt, em, embed, fieldset, figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, html, i, iframe, img, ins, kbd, label, legend, li, mark, menu, nav, object, ol, output, p, pre, q, ruby, s, samp, section, small, span, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, time, tr, tt, u, ul, var, video { + border: 0; + vertical-align: baseline; } + +body { + margin: 0px 0px; + display: -webkit-box; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + flex-direction: column; + min-height: 100vh; + text-rendering: optimizeLegibility; } + body header { + flex-shrink: 0; + min-height: 45px; + max-height: 45px; + padding: 8px 0; + position: fixed; + width: 100%; + z-index: 9999; + -webkit-transform: translateZ(0); + transform: translateZ(0); } + body header > * { + max-width: 1400px; + width: 100%; + padding: 0 20px; + margin: 0 auto; } + body header div.burger { + display: none; } + body article { + -webkit-box-flex: 1; + flex-grow: 1; + display: -webkit-box; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + flex-direction: column; + min-height: calc(100vh - 45px); + left: 0; + min-height: 100%; + padding-top: 100px; + position: relative; + z-index: 99; + -webkit-box-flex: 1; + flex-grow: 1; + display: -webkit-box; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + flex-flow: row nowrap; + padding-top: 45px; + margin: 0 auto; + width: 100%; + max-width: 1400px; } + body article > * { + margin: 0 24px; } + body article aside { + transition: max-height .2s ease-out; + -webkit-box-flex: 0; + flex: 0 0 20em; + margin-left: 0; + -webkit-box-flex: 0; + flex: 0 0 20em; + height: calc(100vh - 45px); + position: -webkit-sticky; + position: sticky; + overflow-y: auto; + top: 45px; } + body article section.page { + -webkit-box-flex: 1; + flex: 1 auto; + max-width: 100%; + min-width: 0; } + body article section.page .jump-to-section { + display: none; + margin-top: 0.5em; + margin-left: 0.2em; } + body article section.page .jump-to-section ul { + padding-left: 10px; } + body article section.page .jump-to-section nav { + display: none; + position: absolute; + z-index: 5; + border: 1px solid; + padding: 1em 30px; + border-radius: 3px; + min-width: 25%; + max-width: 50%; + box-shadow: 0 5px 8px rgba(0, 0, 0, 0.25); } + body article section.right-menu { + margin-right: 0; + align-self: flex-start; + display: block; + -webkit-box-flex: 0; + flex: 0 0 240px; + max-height: calc(100vh - 45px); + overflow-y: auto; + position: -webkit-sticky; + position: sticky; + top: 45px; + margin-bottom: 40px; } + body footer > * { + max-width: 1400px; + width: 100%; + padding: 0 20px; + margin: 0 auto; } + +/* hideheader hidenav hidebreadcrumb hidetoc hidefooter */ +body.hideheader article { + padding-top: 0px; } + body.hideheader article aside { + top: 0px; + height: calc(100vh); } + body.hideheader article section.right-menu { + top: 0px; + max-height: calc(100vh); } + +@media (max-width: 1160px) { + body header div.burger { + display: none; } + body article { + padding-left: 0px; + padding-right: 0px; } + body article aside { + margin-right: 0px; } + body article aside.responsive { + display: block; } + body article section.page .jump-to-section { + display: block; } + body article section.right-menu { + display: none; } } + +@media (max-width: 936px) { + body header div.burger { + display: block; } + body article { + padding-left: 0px; + padding-right: 0px; } + body article aside { + display: none; + flex: 0 0 100%; } + body article aside.responsive { + display: block; } + body article section.page .jump-to-section { + display: block; } + body article section.right-menu { + display: none; } } diff --git a/resources/_gen/assets/scss/sass/layout.scss_f300667da4f5b5f84e1a9e0702b2fdde.json b/resources/_gen/assets/scss/sass/layout.scss_f300667da4f5b5f84e1a9e0702b2fdde.json new file mode 100644 index 0000000..451406d --- /dev/null +++ b/resources/_gen/assets/scss/sass/layout.scss_f300667da4f5b5f84e1a9e0702b2fdde.json @@ -0,0 +1 @@ +{"Target":"sass/layout.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/resources/_gen/assets/scss/sass/main.scss_97a9b8e6852415b29a37632934745b8b.content b/resources/_gen/assets/scss/sass/main.scss_97a9b8e6852415b29a37632934745b8b.content new file mode 100644 index 0000000..ff458cb --- /dev/null +++ b/resources/_gen/assets/scss/sass/main.scss_97a9b8e6852415b29a37632934745b8b.content @@ -0,0 +1,319 @@ +@charset "UTF-8"; +body { + font-family: "Montserrat",sans-serif; + font-weight: 400; + line-height: 1.5; + color: black; } + body a { + color: black; + text-decoration: none; + background-color: transparent; } + body a:hover { + color: initial; + text-decoration: none; } + body header { + background-color: #333333; + border-bottom: 2px solid gray; + box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.1), 0 0.2rem 0.4rem rgba(0, 0, 0, 0.2); + justify-content: space-between; + align-items: stretch; + color: #e6e6e6; } + body header a, body header a:hover { + color: #cccccc; } + body header > div { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-content: space-between; + align-items: stretch; + white-space: nowrap; } + body header > div img { + height: 32px; + margin-right: 0.5rem; } + body header > div .burger { + margin-right: 1rem; } + body header nav.shortcuts { + margin-left: auto; + position: relative; + display: flex; + justify-content: flex-start; + list-style-type: none; + flex-direction: row; + flex-wrap: nowrap; } + body header nav.shortcuts li { + margin: 0px; } + body header nav.shortcuts li .fa { + margin-right: 0.5rem; } + body header nav.shortcuts li a { + color: #d6d6d6; + padding: 0 1rem; + font-weight: bold; + font-size: 90%; } + body article { + background-color: white; } + body article aside #close_menu { + display: none; + float: right; + margin-right: 2rem; } + body article aside.responsive #close_menu { + display: block; } + body article section.right-menu { + padding: 3.5rem 0 3.5rem 0; + font-size: 14px; + line-height: 20px; + padding-left: 2px; } + body article section.right-menu > div { + margin-bottom: 2em; } + body article section.right-menu > div > * { + margin-left: 5px; } + body article section.right-menu > div label { + font-weight: 700; + letter-spacing: -1px; + display: block; + margin-bottom: 14px; + border-bottom: 1px dotted #999999; + color: #333333; + font-variant: small-caps; } + body article section.right-menu > div nav > ul { + padding: 0px 0px 0px 0px; + margin: 0px 0px 0px 0px; } + body article section.right-menu > div nav > ul ul { + padding: 0px 0px 0px 14px; + margin: 0px 0px 0px 0px; + border-left: 1px solid #e6e6e6; } + body article section.right-menu > div nav > ul ul li { + font-size: 90%; } + body article section.right-menu > div ul { + list-style-type: none; } + body article section.right-menu > div li { + padding: 8px 0px 8px 0px; + font-weight: 300; + border-bottom: 1px solid transparent; } + body article section.right-menu > div li.active { + border-bottom: 1px dashed #999999; } + body article section.right-menu > div li a { + /*padding-left: 2px;*/ } + body article section.right-menu .Actions { + font-size: 75%; } + body footer { + background-color: #333333; + color: #cccccc; + padding: 3rem; } + body footer a { + color: #cccccc; } + +article section.page { + background-color: inherit; } + article section.page #ariane { + display: block; + font-size: 1rem; + line-height: 1.5; + letter-spacing: -.01em; + font-weight: 500; } + article section.page #ariane ol { + margin-top: 1em !important; + padding: 0px; + display: flex; + flex-wrap: wrap; + list-style: none; } + article section.page #ariane ol li { + display: list-item; } + article section.page #ariane ol li:after { + display: inline-block; + padding-right: .5rem; + padding-left: .5rem; + color: black; + content: "⊸"; } + article section.page #ariane ol li a { + color: black; + border-bottom: 1px dotted #737373; + padding-bottom: 4px; + padding-right: 0px; } + article section.page #ariane ol li.active:after { + display: inline-block; + padding-left: .75rem; + content: ""; } + article section.page nav.subpages { + flex-wrap: wrap; + display: flex; + margin-right: -1.5rem; + margin-left: -1.5rem; + padding-left: 1.5em; + position: -webkit-sticky; + position: sticky; + overflow-y: auto; + top: 45px; + background-color: inherit; + opacity: 0.85; + justify-content: flex-start; + list-style-type: none; } + article section.page nav.subpages li { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin: 0px; + padding-right: .4rem; + min-width: 50px; } + article section.page nav.subpages li a { + font-size: 90%; + color: #ad3a3a; } + article section.page nav.subpages li:not(:first-child):before { + display: inline-block; + margin-left: 0.4em; + padding-right: .4rem; + color: #965151; + content: "|"; } + article section.page nav.subpages li.active { + font-weight: bold; } + article section.page nav.subpages li:first-child:before { + content: "└ "; + color: #965151; } + article section.page div.jump-to-section { + font-size: smaller; + color: #333333; } + article section.page div.jump-to-section ul { + padding-left-left: 0px; + list-style-type: none; } + article section.page div.jump-to-section ul li a { + color: #a14545; } + article section.page div.jump-to-section nav { + background-color: white; + opacity: 0.95; } + article section.page div.chevrons { + margin-top: 3rem; + border-top: 1px solid #e6e6e6; + border-bottom: 1px solid #e6e6e6; + padding: 1rem 0rem; + display: flex; + flex-direction: row; + align-items: stretch; + -webkit-box-pack: end !important; + justify-content: flex-end !important; } + article section.page div.chevrons a { + display: flex; + align-items: center !important; + -webkit-box-align: center !important; + justify-content: flex-end !important; + max-width: 70%; + padding: 24px; } + article section.page div.chevrons a.prev { + display: none; } + article section.page div.chevrons a.next div { + text-align: right; + justify-content: flex-end; + padding: 20px; } + article section.page div.chevrons a label { + font-size: 24px; + font-weight: 700; + cursor: pointer; } + article section.page div.chevrons a p { + font-size: 15px; + padding: 0px; + margin: 0px; + text-align: left; } + +article section.page { + line-height: 24px; } + article section.page h1:first-of-type { + font-size: 2.6rem; + margin-top: 1.5rem !important; + color: #333333; + margin-bottom: 0px; + line-height: 1.05; + letter-spacing: -.05em; + font-weight: 800; } + article section.page h1:first-of-type span { + font-size: 90%; + font-weight: 500; } + article section.page h1:first-of-type span:before { + padding-left: .75rem; + padding-right: .75rem; + color: #333333; + content: "⊷"; } + +article section.page div.content { + margin-top: 2.5rem; } + article section.page div.content a.anchor { + display: block; + position: relative; + top: -7rem; + visibility: hidden; } + article section.page div.content a { + color: #db0c0c; + font-weight: 500; + text-decoration: underline; } + article section.page div.content p { + margin-top: 1rem; + margin-bottom: 1rem; } + article section.page div.content h1 { + color: #4d4d4d; + font-variant-ligatures: none; + font-weight: 800; + letter-spacing: -0.75px; + line-height: 32px; } + article section.page div.content h2 { + margin-top: 0.5em; + font-weight: 700; + letter-spacing: -0.95px; } + article section.page div.content h3, article section.page div.content h4 { + margin-top: 0.5em; } + article section.page div.content table { + width: 100%; + margin-bottom: 2em; + border-collapse: collapse; + border-spacing: 0; + border: 1px solid #e6e6e6; } + article section.page div.content table th, + article section.page div.content table td { + padding: .25rem .75rem; } + article section.page div.content table th { + padding: 0.5rem; + text-transform: uppercase; + vertical-align: middle; + text-align: center; + font-weight: 800; + background: #f6f6f6; + color: black; + border-bottom: 2px solid #e5e5e5; } + article section.page div.content table td { + padding: 0.5rem; + vertical-align: middle; + border-bottom: 1px solid #e5e5e5; + border: 1px solid #e6e6e6; + color: #323232; } + article section.page div.content table td:first-child code { + background-color: transparent; + padding: 0; } + article section.page div.content img { + border: 0; + max-width: 100%; + margin: 1.5rem auto; + display: block; + text-align: center; } + article section.page div.content img.border { + border: 2px solid #e6e6e6 !important; + padding: 2px; } + article section.page div.content img.shadow { + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); } + article section.page div.content img.inline { + display: inline !important; + vertical-align: bottom; } + article section.page div.content img.inline { + display: inline !important; + vertical-align: bottom; } + article section.page div.content div.highlight pre { + display: block; + white-space: pre-wrap; + overflow: inherit !important; } + article section.page div.content div.highlight pre code { + color: inherit !important; + font-size: 95%; + display: block; + line-height: 1.2em; + padding: 10px; + border: 0px; + font-weight: inherit; + background-color: inherit; } + article section.page div.content > div.highlight pre code { + margin-left: -1.5rem; + margin-right: -1.5rem; } diff --git a/resources/_gen/assets/scss/sass/main.scss_97a9b8e6852415b29a37632934745b8b.json b/resources/_gen/assets/scss/sass/main.scss_97a9b8e6852415b29a37632934745b8b.json new file mode 100644 index 0000000..fe27468 --- /dev/null +++ b/resources/_gen/assets/scss/sass/main.scss_97a9b8e6852415b29a37632934745b8b.json @@ -0,0 +1 @@ +{"Target":"css/style.main.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/resources/_gen/assets/scss/sass/menu.scss_52bd05c6f98c426f8139faf6457390a2.content b/resources/_gen/assets/scss/sass/menu.scss_52bd05c6f98c426f8139faf6457390a2.content new file mode 100644 index 0000000..ba899fb --- /dev/null +++ b/resources/_gen/assets/scss/sass/menu.scss_52bd05c6f98c426f8139faf6457390a2.content @@ -0,0 +1,86 @@ +.autocomplete-suggestions { + background-color: #f3f3f3 !important; + height: 100vh; } + +article > aside { + /*background-color: $c_light3;*/ + background-color: rgba(115, 115, 115, 0.1); + background-color: #f3f3f3; + padding: 2rem 0rem 1rem 0rem; } + article > aside div.search { + position: absolute; + left: 0px; + top: 0px; + width: calc(100%); } + article > aside div.search input { + padding: 3px 25px; + width: 100%; + height: 2rem; + border: 0px; + background-color: rgba(115, 115, 115, 0.1); + border-bottom: 1px solid rgba(115, 115, 115, 0.2); } + article > aside .menu { + list-style-type: none; + line-height: 2rem; + margin-top: 2rem; } + article > aside .menu ul { + display: none; } + article > aside .menu .ddexp { + cursor: pointer; } + article > aside .menu > .dd-item { + margin-top: 24px; } + article > aside .menu > .dd-item > a { + font-weight: 700; + font-size: 16px; } + article > aside .menu > .dd-item > i { + color: #646464; + position: absolute; + left: 21px; + font-size: 1em; + font-size: 20px; + line-height: inherit; } + article > aside .menu .dd-item { + padding: 10px 0px 10px 16px; + list-style: none; } + article > aside .menu .dd-item a { + text-decoration: none; } + article > aside .menu .dd-item > a { + line-height: 20px; + font-size: 14px; + /*color: rgb(110, 119, 122);*/ + /*color:$color_main;*/ + color: #646464; } + article > aside .menu .dd-item > i { + color: #646464; } + article > aside .menu .dd-item ul { + padding-inline-start: 0px; } + article > aside .menu .dd-item li { + /*border-left: 1px solid #eee;*/ } + article > aside .menu .dd-item.haschildren.parent > a { + font-weight: 600; } + article > aside .menu .dd-item.parent > ul { + display: block; } + article > aside .menu .dd-item.active { + background-color: rgba(115, 115, 115, 0.1); } + article > aside .menu .dd-item.active.haschildren { + /*background-color: transparent;*/ } + article > aside .menu .dd-item.active.haschildren > a { + font-weight: 700; } + article > aside .menu .dd-item.active > a { + color: #4d4d4d; } + article > aside .menu .dd-item.active > ul { + display: block; } + article > aside .menu .dd-item.active > div { + background-color: #4d4d4d; } + article > aside .menu .dd-item.active > div * { + font-weight: bold; + border-bottom: dotted 1px red; } + article > aside .menu .dd-item.alwaysopen > ul { + display: block; } + article > aside .menu .dd-item.parent > ul { + display: block; } + article > aside section { + margin: 2rem 0rem; } + +body a { + text-decoration: none; } diff --git a/resources/_gen/assets/scss/sass/menu.scss_52bd05c6f98c426f8139faf6457390a2.json b/resources/_gen/assets/scss/sass/menu.scss_52bd05c6f98c426f8139faf6457390a2.json new file mode 100644 index 0000000..e7b20fc --- /dev/null +++ b/resources/_gen/assets/scss/sass/menu.scss_52bd05c6f98c426f8139faf6457390a2.json @@ -0,0 +1 @@ +{"Target":"css/style.menu.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/resources/_gen/assets/scss/sass/shortcodes/alert.scss_f300667da4f5b5f84e1a9e0702b2fdde.content b/resources/_gen/assets/scss/sass/shortcodes/alert.scss_f300667da4f5b5f84e1a9e0702b2fdde.content new file mode 100644 index 0000000..8b2a934 --- /dev/null +++ b/resources/_gen/assets/scss/sass/shortcodes/alert.scss_f300667da4f5b5f84e1a9e0702b2fdde.content @@ -0,0 +1,43 @@ +div.alert { + padding: .75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: .25rem; } + div.alert a { + color: inherit !important; } + div.alert.primary { + color: white; + background-color: #007bff; + border-color: #007bff; } + div.alert.info { + color: white; + background-color: #17a2b8; + border-color: #17a2b8; } + div.alert.success { + color: white; + background-color: #28a745; + border-color: #28a745; } + div.alert.warning { + color: black; + background-color: #ffc107; + border-color: #ffc107; } + div.alert.danger { + color: white; + background-color: #dc3545; + border-color: #dc3545; } + div.alert.danger { + color: white; + background-color: #dc3545; + border-color: #dc3545; } + div.alert.secondary { + color: white; + background-color: #6c757d; + border-color: #6c757d; } + div.alert.light { + color: black; + background-color: #f8f9fa; + border-color: #f8f9fa; } + div.alert.dark { + color: white; + background-color: #343a40; + border-color: #343a40; } diff --git a/resources/_gen/assets/scss/sass/shortcodes/alert.scss_f300667da4f5b5f84e1a9e0702b2fdde.json b/resources/_gen/assets/scss/sass/shortcodes/alert.scss_f300667da4f5b5f84e1a9e0702b2fdde.json new file mode 100644 index 0000000..4a5b045 --- /dev/null +++ b/resources/_gen/assets/scss/sass/shortcodes/alert.scss_f300667da4f5b5f84e1a9e0702b2fdde.json @@ -0,0 +1 @@ +{"Target":"sass/shortcodes/alert.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/resources/_gen/assets/scss/sass/shortcodes/attachments.scss_f300667da4f5b5f84e1a9e0702b2fdde.content b/resources/_gen/assets/scss/sass/shortcodes/attachments.scss_f300667da4f5b5f84e1a9e0702b2fdde.content new file mode 100644 index 0000000..babd66b --- /dev/null +++ b/resources/_gen/assets/scss/sass/shortcodes/attachments.scss_f300667da4f5b5f84e1a9e0702b2fdde.content @@ -0,0 +1,9 @@ +section.attachments a { + border-bottom: 1px dotted white; } + +section.attachments a:hover { + border-bottom: 1px solid white; } + +section.attachments > label { + font-weight: 600; + font-variant: small-caps; } diff --git a/resources/_gen/assets/scss/sass/shortcodes/attachments.scss_f300667da4f5b5f84e1a9e0702b2fdde.json b/resources/_gen/assets/scss/sass/shortcodes/attachments.scss_f300667da4f5b5f84e1a9e0702b2fdde.json new file mode 100644 index 0000000..8f5aff2 --- /dev/null +++ b/resources/_gen/assets/scss/sass/shortcodes/attachments.scss_f300667da4f5b5f84e1a9e0702b2fdde.json @@ -0,0 +1 @@ +{"Target":"sass/shortcodes/attachments.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/resources/_gen/assets/scss/sass/shortcodes/children.scss_f300667da4f5b5f84e1a9e0702b2fdde.content b/resources/_gen/assets/scss/sass/shortcodes/children.scss_f300667da4f5b5f84e1a9e0702b2fdde.content new file mode 100644 index 0000000..2719ff7 --- /dev/null +++ b/resources/_gen/assets/scss/sass/shortcodes/children.scss_f300667da4f5b5f84e1a9e0702b2fdde.content @@ -0,0 +1,27 @@ +article ul.children.children-card { + flex-wrap: wrap; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; } + article ul.children.children-card > span { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + min-width: 0; + min-height: 0; + width: 40%; + min-width: 250px; + margin: 1rem 1rem; + border: 0.1rem solid #ccc; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); } + article ul.children.children-card > span card { + margin: 0px 0px; + display: block; + padding: 1rem; + background-color: #eee; + font-size: 200%; } + article ul.children.children-card > span p { + padding: 0rem 1rem; } diff --git a/resources/_gen/assets/scss/sass/shortcodes/children.scss_f300667da4f5b5f84e1a9e0702b2fdde.json b/resources/_gen/assets/scss/sass/shortcodes/children.scss_f300667da4f5b5f84e1a9e0702b2fdde.json new file mode 100644 index 0000000..c5976b5 --- /dev/null +++ b/resources/_gen/assets/scss/sass/shortcodes/children.scss_f300667da4f5b5f84e1a9e0702b2fdde.json @@ -0,0 +1 @@ +{"Target":"sass/shortcodes/children.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/resources/_gen/assets/scss/sass/shortcodes/columns.scss_f300667da4f5b5f84e1a9e0702b2fdde.content b/resources/_gen/assets/scss/sass/shortcodes/columns.scss_f300667da4f5b5f84e1a9e0702b2fdde.content new file mode 100644 index 0000000..98fb8b5 --- /dev/null +++ b/resources/_gen/assets/scss/sass/shortcodes/columns.scss_f300667da4f5b5f84e1a9e0702b2fdde.content @@ -0,0 +1,10 @@ +div.columns { + flex-wrap: wrap; + display: flex; } + div.columns div.column { + flex: 1 1; + margin: 0 1em; } + div.columns :first-child { + margin-left: 0px !important; } + div.columns :last-child { + margin-right: 0px !important; } diff --git a/resources/_gen/assets/scss/sass/shortcodes/columns.scss_f300667da4f5b5f84e1a9e0702b2fdde.json b/resources/_gen/assets/scss/sass/shortcodes/columns.scss_f300667da4f5b5f84e1a9e0702b2fdde.json new file mode 100644 index 0000000..eae510e --- /dev/null +++ b/resources/_gen/assets/scss/sass/shortcodes/columns.scss_f300667da4f5b5f84e1a9e0702b2fdde.json @@ -0,0 +1 @@ +{"Target":"sass/shortcodes/columns.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/resources/_gen/assets/scss/sass/shortcodes/notice.scss_f300667da4f5b5f84e1a9e0702b2fdde.content b/resources/_gen/assets/scss/sass/shortcodes/notice.scss_f300667da4f5b5f84e1a9e0702b2fdde.content new file mode 100644 index 0000000..c818bbb --- /dev/null +++ b/resources/_gen/assets/scss/sass/shortcodes/notice.scss_f300667da4f5b5f84e1a9e0702b2fdde.content @@ -0,0 +1,89 @@ +div.notices { + margin-top: 1rem; + margin-bottom: 1rem; } + div.notices > :not(label) { + background: white; + margin-top: 0px !important; + margin-bottom: 0px !important; + box-sizing: border-box; + box-shadow: inset 4px 0 0 black; + background-color: #e6e6e6; + font-size: smaller; } + div.notices > :not(label):not(ul) { + /*box-shadow: inset 4px 0 0 black;*/ + /*border-radius: .2rem;*/ + padding: .5rem 1rem .5rem 1rem; } + div.notices > label { + font-size: 0.5em; + position: absolute; + margin-left: 0em; + margin-top: -1.8em; + font-weight: bold; + font-variant: small-caps; + letter-spacing: 0.6em; } + div.notices.note p { + box-shadow: inset 4px 0 0 #007bff; + background: rgba(0, 123, 255, 0.05); + color: #004a99 !important; } + div.notices.note label { + color: #007bff; } + div.notices.primary > *:not(label) { + box-shadow: inset 4px 0 0 #007bff; + background: rgba(0, 123, 255, 0.05); + color: #004a99 !important; } + div.notices.primary label { + color: #007bff; } + div.notices.secondary p { + box-shadow: inset 4px 0 0 #6c757d; + background: rgba(108, 117, 125, 0.05); + color: #3d4246 !important; } + div.notices.secondary label { + color: #6c757d; } + div.notices.success > *:not(label), div.notices.tip > *:not(label) { + box-shadow: inset 4px 0 0 #28a745; + background: rgba(40, 167, 69, 0.05); + color: #145523 !important; } + div.notices.success label, div.notices.tip label { + color: #28a745; } + div.notices.danger > *:not(label) { + box-shadow: inset 4px 0 0 #dc3545; + background: rgba(220, 53, 69, 0.05); + color: #921925 !important; } + div.notices.danger label { + color: #dc3545; } + div.notices.warning > *:not(label) { + box-shadow: inset 4px 0 0 #ffc107; + background: rgba(255, 193, 7, 0.05); + color: #a07800 !important; } + div.notices.warning label { + color: #ffc107; } + div.notices.info > *:not(label) { + box-shadow: inset 4px 0 0 #17a2b8; + background: rgba(23, 162, 184, 0.05); + color: #0c525d !important; } + div.notices.info label { + color: #17a2b8; } + div.notices.light > *:not(label) { + box-shadow: inset 4px 0 0 #f8f9fa; + background: rgba(248, 249, 250, 0.05); + color: #bdc6d0 !important; } + div.notices.light label { + color: #f8f9fa; } + div.notices.dark > *:not(label) { + box-shadow: inset 4px 0 0 #343a40; + background: rgba(52, 58, 64, 0.05); + color: #060708 !important; } + div.notices.dark label { + color: #343a40; } + div.notices.white > *:not(label) { + box-shadow: inset 4px 0 0 #fff; + background: rgba(255, 255, 255, 0.05); + color: whiteen(#fff, 20%) !important; } + div.notices.white label { + color: #fff; } + div.notices.transparent > *:not(label) { + box-shadow: inset 4px 0 0 transparent; + background: rgba(0, 0, 0, 0); + color: transparenten(transparent, 20%) !important; } + div.notices.transparent label { + color: transparent; } diff --git a/resources/_gen/assets/scss/sass/shortcodes/notice.scss_f300667da4f5b5f84e1a9e0702b2fdde.json b/resources/_gen/assets/scss/sass/shortcodes/notice.scss_f300667da4f5b5f84e1a9e0702b2fdde.json new file mode 100644 index 0000000..914b566 --- /dev/null +++ b/resources/_gen/assets/scss/sass/shortcodes/notice.scss_f300667da4f5b5f84e1a9e0702b2fdde.json @@ -0,0 +1 @@ +{"Target":"sass/shortcodes/notice.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/resources/_gen/assets/scss/sass/shortcodes/panel.scss_f300667da4f5b5f84e1a9e0702b2fdde.content b/resources/_gen/assets/scss/sass/shortcodes/panel.scss_f300667da4f5b5f84e1a9e0702b2fdde.content new file mode 100644 index 0000000..caee3c4 --- /dev/null +++ b/resources/_gen/assets/scss/sass/shortcodes/panel.scss_f300667da4f5b5f84e1a9e0702b2fdde.content @@ -0,0 +1,76 @@ +div.card { + margin-top: 1rem; + margin-bottom: 1rem; + box-sizing: border-box; + overflow-wrap: break-word; + width: 100%; + border-radius: 4px 4px 4px 4px; + border: 1px solid rgba(0, 0, 0, 0.125); + font-size: 14px; } + +/*div.card*/ +.card-header { + box-sizing: border-box; + overflow-wrap: break-word; + background-color: #f8f9fa; + border-bottom: 1px solid rgba(0, 0, 0, 0.125); + border-left: 0px none #212529; + border-radius: 3px 3px 0 0; + padding: 12px 20px; } + .card-header.info { + color: white; + background-color: #17a2b8; + border-color: #17a2b8; } + .card-header.info a { + color: white; } + .card-header.primary { + color: white; + background-color: #007bff; + border-color: #007bff; } + .card-header.primary a { + color: white; } + .card-header.success { + color: white; + background-color: #28a745; + border-color: #28a745; } + .card-header.success a { + color: white; } + .card-header.warning { + color: black; + background-color: #ffc107; + border-color: #ffc107; } + .card-header.warning a { + color: black; } + .card-header.danger { + color: white; + background-color: #dc3545; + border-color: #dc3545; } + .card-header.danger a { + color: white; } + +/*.card-header*/ +.card-body { + box-sizing: border-box; + overflow-wrap: break-word; + padding: 20px; } + +/*.card-body*/ +.card-text { + box-sizing: border-box; + overflow-wrap: break-word; + margin: 0px; } + +/*.card-text*/ +.card-footer { + box-sizing: border-box; + color: #6c757d; + overflow-wrap: break-word; + background: rgba(0, 0, 0, 0.03) none repeat scroll 0% 0%/auto padding-box border-box; + border-top: 1px solid rgba(0, 0, 0, 0.125); + border-right: 0px none #6c757d; + border-bottom: 0px none #6c757d; + border-left: 0px none #6c757d; + border-radius: 0 0 3px 3px; + padding: 12px 20px; } + +/*.card-footer*/ diff --git a/resources/_gen/assets/scss/sass/shortcodes/panel.scss_f300667da4f5b5f84e1a9e0702b2fdde.json b/resources/_gen/assets/scss/sass/shortcodes/panel.scss_f300667da4f5b5f84e1a9e0702b2fdde.json new file mode 100644 index 0000000..ab55512 --- /dev/null +++ b/resources/_gen/assets/scss/sass/shortcodes/panel.scss_f300667da4f5b5f84e1a9e0702b2fdde.json @@ -0,0 +1 @@ +{"Target":"sass/shortcodes/panel.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/resources/_gen/assets/scss/sass/shortcodes/tabs.scss_f300667da4f5b5f84e1a9e0702b2fdde.content b/resources/_gen/assets/scss/sass/shortcodes/tabs.scss_f300667da4f5b5f84e1a9e0702b2fdde.content new file mode 100644 index 0000000..7519def --- /dev/null +++ b/resources/_gen/assets/scss/sass/shortcodes/tabs.scss_f300667da4f5b5f84e1a9e0702b2fdde.content @@ -0,0 +1,27 @@ +.tabs { + border: 1px solid #e9ecef; + border-radius: .25rem; + overflow: hidden; + display: flex; + flex-wrap: wrap; } + .tabs label { + display: inline-block; + padding: 0.3em 1em; + border-bottom: 2px transparent; + cursor: pointer; } + .tabs > input[type=radio] { + height: 0; + width: 0; + overflow: hidden; + opacity: 0; + position: absolute; } + .tabs > input[type=radio]:checked + label { + border-bottom: 2px solid #05b; } + .tabs > input[type=radio]:checked + label + .tab { + display: block; } + .tabs > div.tab { + display: none; + order: 999; + width: 100%; + border-top: 1px solid #f8f9fa; + padding: 1em 1em; } diff --git a/resources/_gen/assets/scss/sass/shortcodes/tabs.scss_f300667da4f5b5f84e1a9e0702b2fdde.json b/resources/_gen/assets/scss/sass/shortcodes/tabs.scss_f300667da4f5b5f84e1a9e0702b2fdde.json new file mode 100644 index 0000000..3e64ae0 --- /dev/null +++ b/resources/_gen/assets/scss/sass/shortcodes/tabs.scss_f300667da4f5b5f84e1a9e0702b2fdde.json @@ -0,0 +1 @@ +{"Target":"sass/shortcodes/tabs.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/themes/docport/.gitignore b/themes/docport/.gitignore new file mode 100644 index 0000000..1d3dc76 --- /dev/null +++ b/themes/docport/.gitignore @@ -0,0 +1,7 @@ +.DS_Store +/exampleSite/public/ +/hugo-0* +/notes.md +/hugoBasicExample/ +/.idea/ +/docdock/ diff --git a/themes/docport/LICENSE b/themes/docport/LICENSE new file mode 100644 index 0000000..f78cc00 --- /dev/null +++ b/themes/docport/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Valere JEANTET + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/themes/docport/LICENSE.md b/themes/docport/LICENSE.md new file mode 100644 index 0000000..bdb02db --- /dev/null +++ b/themes/docport/LICENSE.md @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2020 Valere JEANTET + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/themes/docport/README.md b/themes/docport/README.md new file mode 100644 index 0000000..710d459 --- /dev/null +++ b/themes/docport/README.md @@ -0,0 +1,41 @@ +# Hugo docPort Theme + +DocPort, a professional documentation theme built for [Hugo](https://gohugo.io/). +it provides a simple navigation, automatic search engine, a high level of configuration and a bunch of [shortcodes](https://docport.netlify.app/shortcodes/) crafted for documentation (attachment, presentations, child pages, notice, alerts, diagrams...). + +This project is actively being maintained, and integrate easily with netlify CMS for static content authoring without leaving the browser. + +![Overview](https://github.com/vjeantet/hugo-theme-docport/raw/master/images/tn2.png) + +# Demo + +Visit the [theme documentation](http://docport.netlify.com/) to see what is going on. It is actually built with this theme. + +# Quick Start +- Add the repository into your Hugo Project repository as a submodule, `git submodule add https://github.com/vjeantet/hugo-theme-docport.git themes/hugo-theme-docport.` +- Configure your `config.toml`. You may the prepared one for this theme. The `config.toml` inside the exampleSite is also a good reference. +- Build your site with `hugo server` and see the result at http://localhost:1313/. + +More on instalation methods exist, see more information in the [live demo website](https://docport.netlify.app/getting-start/installation/) + +# Documentation +DocPort has its own user guide https://docport.netlify.app + +# License +DocPort is licensed under the MIT license, see the LICENSE.md file for details. + +# Maintenance +This theme is maintained by its author Valère JEANTET with the help from these awesome [contributors](https://docport.netlify.app/docport-theme/credits/). + +# Credits +Many thanks to +* @matcornic for its inspiration and OpenSource spirit ! . See his great theme [Hugo Learn Theme](https://github.com/matcornic/hugo-theme-learn) +* all [docdock theme](https://github.com/vjeantet/hugo-theme-docdock) contributors and forkers. + +This theme is mainly based on their work ! + + +## See Also +- [Visit the documentation](https://docport.netlify.app/) +- [Hugo docs](https://gohugo.io/getting-started/configuration/) +- [Git submodules](https://git-scm.com/docs/git-submodule) diff --git a/themes/docport/archetypes/default.md b/themes/docport/archetypes/default.md new file mode 100644 index 0000000..fdf72a6 --- /dev/null +++ b/themes/docport/archetypes/default.md @@ -0,0 +1,18 @@ +--- +title: "{{ replace .TranslationBaseName "-" " " | title }}" +date: {{ .Date }} +description: "" +draft: true + +subpage: false + +hide: +- header +- nav +- breadcrumb +- footer +- nextpage +--- + +Lorem Ipsum. +Notice `draft` is set to true. diff --git a/themes/docport/archetypes/slide.md b/themes/docport/archetypes/slide.md new file mode 100644 index 0000000..e40a913 --- /dev/null +++ b/themes/docport/archetypes/slide.md @@ -0,0 +1,46 @@ ++++ +title = "Slide title" +type="slide" + +theme = "league" +[revealOptions] +transition= 'concave' +controls= true +progress= true +history= true +center= true ++++ + +# Slide 1 + +___ + +## Slide 1.1 + +- Turn off alarm +- Get out of bed + +___ + +## Slide 1.2 + +- Eat eggs +- Drink coffee + +--- + +# Slide 2 + +___ + +## Slide 2.1 + +- Eat spaghetti +- Drink wine + +___ + +## Slide 2.2 + +- Get in bed +- Count sheep \ No newline at end of file diff --git a/themes/docport/assets/sass/checklist.scss b/themes/docport/assets/sass/checklist.scss new file mode 100644 index 0000000..10089d1 --- /dev/null +++ b/themes/docport/assets/sass/checklist.scss @@ -0,0 +1,95 @@ +body { + article section.page div.content { + div.checklist-header { + .form-control-file { + position: relative; + width: 100%; + height: 100%; + min-height: 6em; + outline: none; + visibility: hidden; + cursor: pointer; + background-color: #c61c23; + box-shadow: 0 0 5px solid currentColor; + + &:before { + content: attr(data-title); + position: absolute; + top: 0.5em; + left: 0; + width: 100%; + min-height: 4em; + line-height: 0.5em; + padding-top: 1.5em; + opacity: 1; + visibility: visible; + text-align: center; + border: 0.25em dashed currentColor; + transition: all 0.3s cubic-bezier(.25, .8, .25, 1); + overflow: hidden; + } + + &:hover { + &:before { + border-style: solid; + box-shadow: inset 0px 0px 0px 0.25em currentColor; + } + } + } + } + + h2 a { + //float: left; + + margin-left: 0.2em; + //font-size: 70%; + text-decoration: none; + } + + + div.checklist-footer { + margin-top: 2em; + margin-bottom: 2em; + text-align: center; + } + + .zone{ + + } + } + + + + #TableOfContents > ul li { + input { + margin-right: 0.3em; + display: none; + } + + i{ + margin-right: 0.3em; + color: #e6e6e6; + &.fa-check-circle{ + color: green; + } + &.fa-dot-circle{ + color: #999999; + } + + } + + &:not(.cl-ready):not(.cl-done):not(.cl-doing) { + input{ + visibility: hidden; + } + } + + &.cl-ready,&.cl-doing,&.cl-done { + input { + visibility: visible; + } + } + + } + +} \ No newline at end of file diff --git a/themes/docport/assets/sass/layout.scss b/themes/docport/assets/sass/layout.scss new file mode 100644 index 0000000..f8feb55 --- /dev/null +++ b/themes/docport/assets/sass/layout.scss @@ -0,0 +1,225 @@ +* { + box-sizing: border-box; +} +a, abbr, acronym, address, applet, article, aside, audio, b, big, blockquote, body, canvas, caption, center, cite, code, dd, del, details, dfn, div, dl, dt, em, embed, fieldset, figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, html, i, iframe, img, ins, kbd, label, legend, li, mark, menu, nav, object, ol, output, p, pre, q, ruby, s, samp, section, small, span, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, time, tr, tt, u, ul, var, video { + border: 0; + vertical-align: baseline; +} + +body { + margin: 0px 0px ; + display: -webkit-box; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + flex-direction: column; + + min-height: 100vh; + text-rendering: optimizeLegibility; + + header { + flex-shrink: 0; + min-height: 45px; + max-height: 45px; + padding: 8px 0; + position: fixed; + width: 100%; + z-index: 9999; + -webkit-transform: translateZ(0); + transform: translateZ(0); + + > * { + max-width: 1400px; + width: 100%; + padding: 0 20px; + margin: 0 auto; + } + + div.burger { + display: none; + } + } + + article { + + -webkit-box-flex: 1; + flex-grow: 1; + display: -webkit-box; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + flex-direction: column; + min-height: calc(100vh - 45px); + + left: 0; + min-height: 100%; + padding-top: 100px; + position: relative; + z-index: 99; + + + + + + -webkit-box-flex: 1; + flex-grow: 1; + display: -webkit-box; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + flex-flow: row nowrap; + + + padding-top: 45px; + margin: 0 auto; + width: 100%; + max-width: 1400px; + + > * { + margin: 0 24px; + } + + aside { + transition: max-height .2s ease-out; + + -webkit-box-flex: 0; + flex: 0 0 20em; + margin-left: 0; + + -webkit-box-flex: 0; + flex: 0 0 20em; + height: calc(100vh - 45px); + position: -webkit-sticky; + position: sticky; + overflow-y: auto; + top: 45px; + } + + section.page{ + + -webkit-box-flex: 1; + flex: 1 auto; + max-width: 100%; + min-width: 0; + + + .jump-to-section{ + display:none; + margin-top: 0.5em; + margin-left: 0.2em; + ul{ + padding-left: 10px; + } + + nav{ + display: none; + position: absolute; + z-index: 5; + border: 1px solid ; + padding: 1em 30px; + border-radius: 3px; + min-width: 25%; + max-width: 50%; + box-shadow: 0 5px 8px rgba(0,0,0,.25); + } + } + } + + section.right-menu{ + margin-right: 0; + align-self: flex-start; + display: block; + -webkit-box-flex: 0; + flex: 0 0 240px; + max-height: calc(100vh - 45px); + overflow-y: auto; + position: -webkit-sticky; + position: sticky; + top: 45px; + margin-bottom: 40px; + } + } + footer { + > * { + max-width: 1400px; + width: 100%; + padding: 0 20px; + margin: 0 auto; + } + } +} + +/* hideheader hidenav hidebreadcrumb hidetoc hidefooter */ +body { + &.hideheader{ + article{ + padding-top: 0px ; + aside{ + top:0px; + height: calc(100vh); + } + section.right-menu{ + top:0px; + max-height: calc(100vh); + } + } + } +} + +@media(max-width:1160px) { + body{ + header{ + div.burger{ + display: none; + } + } + article { + padding-left: 0px ; + padding-right: 0px; + aside{ + margin-right: 0px; + } + aside.responsive{ + display: block; + } + section.page{ + .jump-to-section{display: block;} + } + section.right-menu{ + display: none; + } + + } + } +} + +@media(max-width:936px) { + body{ + header{ + div.burger{ + display: block; + } + } + article { + padding-left: 0px; + padding-right: 0px; + aside{ + display: none; + flex: 0 0 100%; + } + aside.responsive{ + display: block; + } + section.page{ + .jump-to-section{display: block;} + } + section.right-menu{ + display: none; + } + + } + } +} + + + diff --git a/themes/docport/assets/sass/main.scss b/themes/docport/assets/sass/main.scss new file mode 100644 index 0000000..ce5d111 --- /dev/null +++ b/themes/docport/assets/sass/main.scss @@ -0,0 +1,538 @@ +{{if .Site.Params.color_main}} +$color_main : {{ .Site.Params.color_main }} ; +{{else}} +$color_main : hsl(random(360)-1, random(100)-1%, random(100)-1%); +{{end}} + +{{if .Site.Params.color_second}} +$color_second : {{ .Site.Params.color_second }} ; +{{else}} +$color_second : saturate($color_main, 0%); +{{end}} + +$c_light1 : lighten($color_main, 15%); +$c_light2 : lighten($color_main, 45%); +$c_light3 : lighten($color_main, 50%); +$c_light4 : lighten($color_main, 80%); + + +$c_dark1 : darken($color_main, 15%); +$c_dark2 : darken($color_main, 25%); +$c_dark3 : darken($color_main, 45%); +$c_dark4 : darken($color_main, 50%); + + + +$c_saturate1 : $color_second; +$c_saturate2 : saturate($color_second, 30%); +$c_saturate3 : saturate($color_second, 40%); +$c_saturate4 : saturate($color_second, 50%); +$c_saturate5 : saturate($color_second, 60%); +$c_saturate6 : saturate($color_second, 75%); +$c_saturate7 : saturate($color_second, 90%); + + + + + + + +body{ + font-family: "Montserrat",sans-serif; + + font-weight: 400; + line-height: 1.5; + color: $c_dark3; + + a{ + color: $c_dark4; + text-decoration: none; + background-color: transparent; + &:hover{ + color: initial; + text-decoration: none; + }; + } + + + header { + background-color: $c_dark2; + + border-bottom: 2px solid gray ; + box-shadow: 0 0 0.2rem rgba(0,0,0,.1), 0 0.2rem 0.4rem rgba(0,0,0,.2); + + justify-content: space-between; + align-items: stretch ; + + color:($c_light2); + a, a:hover { + color:invert($c_dark2); + } + > div { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-content: space-between; + align-items: stretch ; + + white-space: nowrap; + + + img { + height: 32px; + margin-right: 0.5rem; + } + .burger { + margin-right: 1rem; + } + + } + + + + + nav.shortcuts { + margin-left: auto; + position: relative; + + display: flex; + justify-content: flex-start; + list-style-type: none; + flex-direction: row; + flex-wrap: nowrap; + + li { + + margin: 0px; + .fa { + margin-right: 0.5rem + } + + a { + color:lighten(invert($c_dark2),4%); + padding: 0 1rem; + font-weight: bold; + font-size: 90%; + } + } + } + + + } + + + article { + background-color: $c_light4 ; + aside { + #close_menu{ + display: none; + float:right; + margin-right: 2rem; + } + + &.responsive{ + #close_menu{ + display: block; + } + } + } + + section.right-menu { + padding: 3.5rem 0 3.5rem 0; + font-size:14px; + line-height:20px; + padding-left:2px; + + > div { + margin-bottom: 2em; + > *{ + margin-left:5px; + } + label{ + font-weight:700; + letter-spacing: -1px; + display: block; + margin-bottom: 14px; + border-bottom: 1px dotted $c_light1; + color:$c_dark2; + font-variant: small-caps; + } + nav>ul{ + padding: 0px 0px 0px 0px; + margin: 0px 0px 0px 0px; + ul{ + padding: 0px 0px 0px 14px; + margin: 0px 0px 0px 0px; + border-left: 1px solid $c_light2; + li{ + font-size: 90%; + } + } + } + + ul{ + list-style-type: none; + } + li{ + padding: 8px 0px 8px 0px; + font-weight:300; + border-bottom: 1px solid transparent; + &.active{ + border-bottom: 1px dashed #999999; + } + a { + /*padding-left: 2px;*/ + } + + } + } + + .Actions{ + font-size: 75%; + } + + } + } + + footer { + background-color: $c_dark2; + color:invert($c_dark2); + a{ + color:invert($c_dark2); + } + padding: 3rem; + } + +} + + +article section.page { + background-color: inherit; + #ariane{ + display: block; + font-size: 1rem; + line-height: 1.5; + letter-spacing: -.01em; + font-weight: 500; + + ol{ + margin-top: 1em!important; + padding: 0px; + display: flex; + flex-wrap: wrap; + list-style: none; + li{ + display: list-item; + &:after{ + display: inline-block; + padding-right: .5rem; + padding-left: .5rem; + color: $c_dark3; + content: "⊸"; + } + a { + color: $c_dark3; + border-bottom: 1px dotted $c_saturate1; + padding-bottom: 4px; + padding-right: 0px; + } + + &.active{ + &:after{ + display: inline-block; + padding-left: .75rem; + content: ""; + } + } + } + + } + + } + + nav.subpages{ + + flex-wrap: wrap; + display: flex; + + margin-right: -1.5rem; + margin-left: -1.5rem; + padding-left: 1.5em; + + position: -webkit-sticky; + position: sticky; + overflow-y: auto; + top: 45px; + background-color: inherit; + opacity: 0.85; + + + justify-content: flex-start; + list-style-type: none; + li { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin: 0px; + padding-right: .4rem; + min-width: 50px; + + a { + font-size: 90%; + color: $c_saturate4; + } + &:not(:first-child):before{ + display: inline-block; + margin-left: 0.4em; + padding-right: .4rem; + color: $c_saturate2; + content: "|"; + } + &.active{ + font-weight: bold; + } + } + li:first-child:before{ + content : "└ "; + color: $c_saturate2; + } + } + + + div.jump-to-section{ + font-size: smaller; + color:$c_dark2; + ul{ + padding-left-left: 0px; + list-style-type: none; + li a{ + color:$c_saturate3; + } + } + + nav{ + background-color: white; + opacity: 0.95; + } + } + + + + + div.chevrons { + margin-top: 3rem; + border-top: 1px solid $c_light2; + border-bottom: 1px solid $c_light2; + padding: 1rem 0rem; + display: flex; + flex-direction: row; + align-items: stretch; + -webkit-box-pack: end!important; + justify-content: flex-end!important; + + a{ + display: flex; + align-items: center!important; + -webkit-box-align: center!important; + justify-content: flex-end!important; + + max-width: 70%; + + padding: 24px; + + &.prev{ + display: none + } + &.next div{ + text-align: right; + justify-content: flex-end; + padding: 20px; + } + + label{ + font-size: 24px; + font-weight: 700; + cursor: pointer; + } + p{ + font-size: 15px; + padding: 0px; + margin: 0px; + text-align: left; + } + + } + + + } +} +article section.page { + line-height:24px; + + h1:first-of-type { + font-size: 2.6rem; + margin-top: 1.5rem!important; + color:$c_dark2; + margin-bottom: 0px; + line-height: 1.05; + letter-spacing: -.05em; + font-weight: 800; + span{ + font-size: 90%; + font-weight: 500; + &:before{ + padding-left: .75rem; + padding-right: .75rem; + color: $c_dark2; + content: "⊷"; + } + ; + } + } +} +article section.page div.content{ + margin-top: 2.5rem; + + a.anchor { + display: block; + position: relative; + top: -7rem; + visibility: hidden; + } + + a{ + color:$c_saturate7; + font-weight: 500; + text-decoration: underline; + } + + p { + margin-top: 1rem; + margin-bottom: 1rem; + } + + h1 { + color:$c_dark1; + + font-variant-ligatures:none; + font-weight:800; + + letter-spacing:-0.75px; + line-height:32px; + } + + h2 { + margin-top: 0.5em; + font-weight:700; + letter-spacing:-0.95px; + + } + + h3,h4 { + margin-top: 0.5em; + } + + // TABLE + table { + width: 100%; + margin-bottom: 2em; + + border-collapse: collapse; + border-spacing: 0; + border: 1px solid #e6e6e6; + + + + th, + td { + padding: .25rem .75rem + } + + th { + padding: 0.5rem; + text-transform: uppercase; + vertical-align: middle; + text-align: center; + font-weight: 800; + background: #f6f6f6; + color: black; + border-bottom: 2px solid #e5e5e5; + } + + td { + padding: 0.5rem; + vertical-align: middle; + border-bottom: 1px solid #e5e5e5; + border: 1px solid #e6e6e6; + color: #323232; + } + + td:first-child { + code { + background-color: transparent; + padding: 0 + } + } + } + // IMAGES + img { + border: 0; + max-width: 100%; + margin: 1.5rem auto; + display: block; + text-align: center; + + + + &.border { + border: 2px solid #e6e6e6 !important; + padding: 2px; + } + + &.shadow { + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); + } + + &.inline { + display: inline !important; + + vertical-align: bottom; + } + + &.inline { + display: inline !important; + + vertical-align: bottom; + } + } + + div.highlight{ + pre{ + display:block; + white-space: pre-wrap; + overflow: inherit!important; + code{ + color:inherit!important; + font-size: 95%; + display: block; + line-height: 1.2em; + padding: 10px; + border:0px; + font-weight: inherit; + background-color: inherit; + } + } + } + + >div.highlight{ + pre code{ + margin-left:-1.5rem; + margin-right:-1.5rem; + } + } +} + + + + + diff --git a/themes/docport/assets/sass/menu.scss b/themes/docport/assets/sass/menu.scss new file mode 100644 index 0000000..50f157b --- /dev/null +++ b/themes/docport/assets/sass/menu.scss @@ -0,0 +1,164 @@ +{{if .Site.Params.color_main}} +$color_main : {{ .Site.Params.color_main }} ; +{{else}} +$color_main : hsl(random(360)-1, random(100)-1%, 45%); +{{end}} + + + +$c_dark1 : darken($color_main, 15%); + + +.autocomplete-suggestions{ + background-color: lighten($color_main, 50%)!important; + height: 100vh; +} +article>aside { + /*background-color: $c_light3;*/ + background-color: transparentize($color_main,0.9); + background-color: lighten($color_main,50%); + padding: 2rem 0rem 1rem 0rem; + + + div.search{ + position: absolute; + left: 0px; + top: 0px; + width: calc(100%); + input { + padding: 3px 25px; + width: 100%; + height: 2rem; + border: 0px; + background-color: transparentize($color_main,0.9); + border-bottom: 1px solid transparentize($color_main,0.8); + } + } + + + .menu { + list-style-type: none; + line-height: 2rem; + margin-top: 2rem; + ul { + display: none; + } + .ddexp{ + cursor: pointer; + } + // first menu level + >.dd-item { + margin-top: 24px; + >a{ + font-weight: 700; + font-size: 16px; + } + > i { + color:darken($color_main,6); + position: absolute; + left:21px; + font-size: 1em; + font-size: 20px; + line-height: inherit; + + } + } + + // menu items + .dd-item { + padding: 10px 0px 10px 16px; + + list-style: none; + a { + text-decoration: none; + } + >a{ + line-height: 20px; + font-size: 14px; + /*color: rgb(110, 119, 122);*/ + /*color:$color_main;*/ + + color: darken($color_main,6); + + + } + > i { + color:darken($color_main,6); + } + ul { + padding-inline-start: 0px; + } + li { + /*border-left: 1px solid #eee;*/ + } + + &.haschildren{ + &.parent{ + >a { + font-weight: 600 + } + } + } + + &.parent{ + >a { + + } + >ul { + display: block; + } + } + + + &.active { + background-color: transparentize($color_main,0.9); + + &.haschildren { + /*background-color: transparent;*/ + + > a { + font-weight: 700 + } + } + + >a{ + color:$c_dark1; + } + + >ul { + display: block; + } + >div { + background-color: $c_dark1; + * { + font-weight: bold; + border-bottom: dotted 1px red; + } + } + } + + + &.alwaysopen>ul { + display: block + } + + &.parent>ul { + display: block + } + + + + } + } + + section { + margin: 2rem 0rem; + } +} + +body{ + a{ + text-decoration: none; + } +} + diff --git a/themes/docport/assets/sass/shortcodes/alert.scss b/themes/docport/assets/sass/shortcodes/alert.scss new file mode 100644 index 0000000..cbbb2f3 --- /dev/null +++ b/themes/docport/assets/sass/shortcodes/alert.scss @@ -0,0 +1,67 @@ +$color_primary : #007bff ; +$color_secondary : #6c757d ; +$color_success : #28a745 ; +$color_danger : #dc3545 ; +$color_warning : #ffc107 ; +$color_info : #17a2b8 ; +$color_light : #f8f9fa ; +$color_dark : #343a40 ; +$color_white : #fff ; +$color_transparent : transparent ; + +div.alert{ + padding: .75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: .25rem; + + a{color:inherit!important;} + + &.primary{ + color: white; + background-color: $color_primary; + border-color: $color_primary; + } + &.info{ + color: white; + background-color: $color_info; + border-color: $color_info; + } + &.success{ + color: white; + background-color: $color_success; + border-color: $color_success; + } + &.warning{ + color: black; + background-color: $color_warning; + border-color: $color_warning; + } + &.danger{ + color: white; + background-color: $color_danger; + border-color: $color_danger; + } + &.danger{ + color: white; + background-color: $color_danger; + border-color: $color_danger; + } + &.secondary{ + color: white; + background-color: $color_secondary; + border-color: $color_secondary; + } + &.light{ + color: black; + background-color: $color_light; + border-color: $color_light; + } + &.dark{ + color: white; + background-color: $color_dark; + border-color: $color_dark; + } + + +} diff --git a/themes/docport/assets/sass/shortcodes/attachments.scss b/themes/docport/assets/sass/shortcodes/attachments.scss new file mode 100644 index 0000000..98740a6 --- /dev/null +++ b/themes/docport/assets/sass/shortcodes/attachments.scss @@ -0,0 +1,12 @@ +section.attachments{ + a{ + border-bottom: 1px dotted white ; + } + a:hover{ + border-bottom: 1px solid white ; + } + >label{ + font-weight: 600; + font-variant: small-caps; + } +} \ No newline at end of file diff --git a/themes/docport/assets/sass/shortcodes/children.scss b/themes/docport/assets/sass/shortcodes/children.scss new file mode 100644 index 0000000..9a4eb86 --- /dev/null +++ b/themes/docport/assets/sass/shortcodes/children.scss @@ -0,0 +1,36 @@ +article { +ul.children.children-card { + flex-wrap: wrap; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + + >span { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + min-width: 0; + min-height: 0; + width: 40%; + min-width: 250px; + margin: 1rem 1rem ; + border: 0.1rem solid #ccc; + +box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); + card{ + margin: 0px 0px; + display: block; + padding: 1rem; + background-color: #eee; + font-size: 200%; + } + + p{ + padding: 0rem 1rem; + } + } +} +} diff --git a/themes/docport/assets/sass/shortcodes/columns.scss b/themes/docport/assets/sass/shortcodes/columns.scss new file mode 100644 index 0000000..4aea2e8 --- /dev/null +++ b/themes/docport/assets/sass/shortcodes/columns.scss @@ -0,0 +1,16 @@ +div.columns{ + flex-wrap: wrap; + display: flex; + + div.column{ + flex: 1 1; + margin: 0 1em; + } + :first-child{ + margin-left: 0px!important; + } + :last-child{ + margin-right: 0px!important; + } +} + diff --git a/themes/docport/assets/sass/shortcodes/notice.scss b/themes/docport/assets/sass/shortcodes/notice.scss new file mode 100644 index 0000000..f85d47c --- /dev/null +++ b/themes/docport/assets/sass/shortcodes/notice.scss @@ -0,0 +1,146 @@ +$color_primary : #007bff ; +$color_secondary : #6c757d ; +$color_success : #28a745 ; +$color_danger : #dc3545 ; +$color_warning : #ffc107 ; +$color_info : #17a2b8 ; +$color_light : #f8f9fa ; +$color_dark : #343a40 ; +$color_white : #fff ; +$color_transparent : transparent ; + + +div.notices { + margin-top: 1rem; + margin-bottom: 1rem; + + > :not(label) { + background: white; + margin-top: 0px!important; + margin-bottom: 0px!important; + box-sizing: border-box; + box-shadow: inset 4px 0 0 black; + background-color: lighten(black,90%); + font-size: smaller; + &:not(ul) { + /*box-shadow: inset 4px 0 0 black;*/ + /*border-radius: .2rem;*/ + padding: .5rem 1rem .5rem 1rem; + } + } + + ul {} + > label{ + font-size: 0.5em; + position: absolute; + margin-left: 0em; + margin-top: -1.8em; + font-weight: bold; + font-variant: small-caps; + letter-spacing: 0.6em; + } + + &.note{ + p { + box-shadow: inset 4px 0 0 $color_primary; + background: transparentize($color_primary, 0.95); + color: darken($color_primary,20%) !important; + } + label{color: $color_primary;} + } + &.primary { + > *:not(label) { + box-shadow: inset 4px 0 0 $color_primary; + background: transparentize($color_primary, 0.95); + color: darken($color_primary,20%) !important; + } + label{color: $color_primary;} + } + + &.secondary { + p { + box-shadow: inset 4px 0 0 $color_secondary; + background: transparentize($color_secondary, 0.95); + color: darken($color_secondary,20%) !important; + } + label{color: $color_secondary;} + } + + &.success, &.tip { + > *:not(label) { + box-shadow: inset 4px 0 0 $color_success; + background: transparentize($color_success, 0.95); + color: darken($color_success,20%) !important; + } + label{color: $color_success;} + } + + &.danger { + > *:not(label) { + box-shadow: inset 4px 0 0 $color_danger; + background: transparentize($color_danger, 0.95); + color: darken($color_danger,20%) !important; + } + label{color: $color_danger;} + } + + &.warning { + > *:not(label) { + box-shadow: inset 4px 0 0 $color_warning; + background: transparentize($color_warning, 0.95); + color: darken($color_warning,20%) !important; + } + label{color: $color_warning;} + } + + &.info { + > *:not(label) { + box-shadow: inset 4px 0 0 $color_info; + background: transparentize($color_info, 0.95); + color: darken($color_info,20%) !important; + } + label{color: $color_info;} + } + + &.light { + > *:not(label) { + box-shadow: inset 4px 0 0 $color_light; + background: transparentize($color_light, 0.95); + color: darken($color_light,20%) !important; + } + label{color: $color_light;} + } + &.dark { + > *:not(label) { + box-shadow: inset 4px 0 0 $color_dark; + background: transparentize($color_dark, 0.95); + color: darken($color_dark,20%) !important; + } + label{color: $color_dark;} + } + &.white { + > *:not(label) { + box-shadow: inset 4px 0 0 $color_white; + background: transparentize($color_white, 0.95); + color: whiteen($color_white,20%) !important; + } + label{color: $color_white;} + } + &.transparent { + > *:not(label) { + box-shadow: inset 4px 0 0 $color_transparent; + background: transparentize($color_transparent, 0.95); + color: transparenten($color_transparent,20%) !important; + } + label{color: $color_transparent;} + } +} + + + + + + + + + \ No newline at end of file diff --git a/themes/docport/assets/sass/shortcodes/panel.scss b/themes/docport/assets/sass/shortcodes/panel.scss new file mode 100644 index 0000000..8093ef7 --- /dev/null +++ b/themes/docport/assets/sass/shortcodes/panel.scss @@ -0,0 +1,89 @@ +$color_primary : #007bff ; +$color_secondary : #6c757d ; +$color_success : #28a745 ; +$color_danger : #dc3545 ; +$color_warning : #ffc107 ; +$color_info : #17a2b8 ; +$color_light : #f8f9fa ; +$color_dark : #343a40 ; +$color_white : #fff ; +$color_transparent : transparent ; + +div.card { + margin-top: 1rem; + margin-bottom: 1rem; + box-sizing: border-box; + overflow-wrap: break-word; + width: 100%; + border-radius: 4px 4px 4px 4px; + border: 1px solid rgba(0, 0, 0, 0.125); + font-size: 14px; +}/*div.card*/ + +.card-header { + box-sizing: border-box; + + overflow-wrap: break-word; + background-color: $color_light ; + border-bottom: 1px solid rgba(0, 0, 0, 0.125); + border-left: 0px none rgb(33, 37, 41); + border-radius: 3px 3px 0 0; + + padding: 12px 20px; + &.info{ + color: white; + a{color: white; } + background-color: $color_info; + border-color: $color_info; + } + &.primary{ + color: white; + a{color: white; } + background-color: $color_primary; + border-color: $color_primary; + } + &.success{ + color: white; + a{color: white; } + background-color: $color_success; + border-color: $color_success; + } + &.warning{ + color: black; + a{color: black; } + background-color: $color_warning; + border-color: $color_warning; + } + &.danger{ + color: white; + a{color: white; } + background-color: $color_danger; + border-color: $color_danger; + } +}/*.card-header*/ + + +.card-body { + box-sizing: border-box; + overflow-wrap: break-word; + padding: 20px; +}/*.card-body*/ + +.card-text { + box-sizing: border-box; + overflow-wrap: break-word; + margin: 0px; +}/*.card-text*/ + + .card-footer { + box-sizing: border-box; + color: rgb(108, 117, 125); + overflow-wrap: break-word; + background: rgba(0, 0, 0, 0.03) none repeat scroll 0% 0% / auto padding-box border-box; + border-top: 1px solid rgba(0, 0, 0, 0.125); + border-right: 0px none rgb(108, 117, 125); + border-bottom: 0px none rgb(108, 117, 125); + border-left: 0px none rgb(108, 117, 125); + border-radius: 0 0 3px 3px; + padding: 12px 20px; +}/*.card-footer*/ diff --git a/themes/docport/assets/sass/shortcodes/tabs.scss b/themes/docport/assets/sass/shortcodes/tabs.scss new file mode 100644 index 0000000..3978a4b --- /dev/null +++ b/themes/docport/assets/sass/shortcodes/tabs.scss @@ -0,0 +1,40 @@ +.tabs { + border: 1px solid #e9ecef; + border-radius: .25rem; + overflow: hidden; + display: flex; + flex-wrap: wrap; + + label { + display: inline-block; + padding: 0.3em 1em; + border-bottom: 2px transparent; + cursor: pointer; + } + + + >input[type=radio] { + height: 0; + width: 0; + overflow: hidden; + opacity: 0; + position: absolute; + + &:checked+label { + border-bottom: 2px solid #05b; + + +.tab { + display: block; + } + } + } + + + >div.tab { + display: none; + order: 999; + width: 100%; + border-top: 1px solid #f8f9fa; + padding: 1em 1em; + } +} \ No newline at end of file diff --git a/themes/docport/exampleSite/config-template.toml b/themes/docport/exampleSite/config-template.toml new file mode 100644 index 0000000..2be94fb --- /dev/null +++ b/themes/docport/exampleSite/config-template.toml @@ -0,0 +1,86 @@ +title = "DocPort Documentation" + +theme = "hugo-theme-docport" + +baseURL = "https://example.com" + +languageCode = "en-us" +DefaultContentLanguage = "en" +pygmentsCodeFences = true +pygmentsStyle = "monokai" + +defaultContentLanguageInSubdir= false +enableMissingTranslationPlaceholders = false + +# googleanalytics = "UA-123-45" + +disableKinds = ["taxonomy", "taxonomyTerm", "category", "RSS"] + +# Keep this as is +[outputs] +home = [ "HTML", "RSS", "JSON"] + +# Site params +[params] +ordersectionsby = "weight" # ordersectionsby = "title" +#color_main = "#737373" +#color_second = "#b30000" +disableSearch = false # default is false +disableNavChevron = false # set true to hide next/prev chevron, default is false +menushortcutsnewtab = false # set true to open shortcuts links to a new tab/window + +#editURL = "https://github.com/vjeantet/hugo-theme-docport/edit/master/exampleSite/content/" +enableGitInfo = true + + + +[mediaTypes] + [mediaTypes."application/netlifyconfig"] + suffixes = ["yml"] + +[outputFormats] +[outputFormats.netlifyyaml] +mediaType = "application/netlifyconfig" +isPlainText = true +isHTML = false +notAlternative = true + +[markup.goldmark.renderer] +unsafe = true + +# Code highlight configuration +[markup.highlight] +codeFences = true +guessSyntax = true +hl_Lines = "" +lineNoStart = 1 +lineNos = false +lineNumbersInTable = true +noClasses = true +style = "monokai" +tabWidth = 2 + +# +# top menu shotcuts +# +[[menu.shortcuts]] +name = "Github" +identifier = "ds" +url = "https://github.com/vjeantet/hugo-theme-docport" +weight = 10 + +[[menu.shortcuts]] +name = "Download" +url = "https://github.com/vjeantet/hugo-theme-docport/archive/master.zip" +weight = 11 + +[[menu.shortcuts]] +name = "Hugo Documentation" +identifier = "hugodoc" +url = "https://gohugo.io/" +weight = 20 + +[[menu.shortcuts]] +name = "Credits" +url = "/docport-theme/credits/" +weight = 30 \ No newline at end of file diff --git a/themes/docport/exampleSite/config.toml b/themes/docport/exampleSite/config.toml new file mode 100644 index 0000000..730a95e --- /dev/null +++ b/themes/docport/exampleSite/config.toml @@ -0,0 +1,95 @@ +baseURL = "https://example.com" + +languageCode = "en-us" +DefaultContentLanguage = "en" +title = "DocPort Documentation" +theme = "hugo-theme-docport" +themesdir = "../.." +pygmentsCodeFences = true +pygmentsStyle = "monokai" + + +defaultContentLanguageInSubdir= false +enableMissingTranslationPlaceholders = false + + +# [Languages] +# [Languages.en] +# title = "Documentation for Hugo docport" +# weight = 1 +# languageName = "English" +# +# [Languages.fr] +# title = "Documentation du thème docport" +# weight = 2 +# languageName = "Français" + + + +disableKinds = ["taxonomy", "taxonomyTerm", "category", "RSS"] + +[params] +ordersectionsby = "weight" # ordersectionsby = "title" +color_main = "#737373" +#color_second = "#b30000" +disableSearch = false # default is false +disableNavChevron = false # set true to hide next/prev chevron, default is false +menushortcutsnewtab = false # set true to open shortcuts links to a new tab/window + +#editURL = "https://github.com/vjeantet/hugo-theme-docport/edit/master/exampleSite/content/" +editWithNetlifyCMSURL = "admin/#/collections/pages/entries/" +enableGitInfo = true + +[mediaTypes] + [mediaTypes."application/netlifyconfig"] + suffixes = ["yml"] + +[outputFormats] +[outputFormats.netlifyyaml] +mediaType = "application/netlifyconfig" +isPlainText = true +isHTML = false +notAlternative = true + +[outputs] +home = [ "HTML", "RSS", "JSON"] + +[markup.goldmark.renderer] +unsafe = true + +# Code highlight configuration +[markup.highlight] +codeFences = true +guessSyntax = true +hl_Lines = "" +lineNoStart = 1 +lineNos = false +lineNumbersInTable = true +noClasses = true +style = "monokai" +tabWidth = 2 + +# +# top menu shotcuts +# +[[menu.shortcuts]] +name = "Github" +identifier = "ds" +url = "https://github.com/vjeantet/hugo-theme-docport" +weight = 10 + +[[menu.shortcuts]] +name = "Download" +url = "https://github.com/vjeantet/hugo-theme-docport/archive/master.zip" +weight = 11 + +[[menu.shortcuts]] +name = "Hugo Documentation" +identifier = "hugodoc" +url = "https://gohugo.io/" +weight = 20 + +[[menu.shortcuts]] +name = "Credits" +url = "/docport-theme/credits/" +weight = 30 \ No newline at end of file diff --git a/themes/docport/exampleSite/content/404.md b/themes/docport/exampleSite/content/404.md new file mode 100644 index 0000000..96c9229 --- /dev/null +++ b/themes/docport/exampleSite/content/404.md @@ -0,0 +1,20 @@ +--- +date: "2020-09-08T20:40:23.389Z" +description: This is a 404 page +hidden: true +hide: + - toc + - nav + - breadcrumb + - nextpage +layout: page +title: Whoops! Page not found +url: 404.html +--- +That page can't be found. + +Our latest content is [on the homepage](/). + +![404](images/404.jpg?sheight=800px&classes=shadow) + +
Photo by Aron Visuals on Unsplash
\ No newline at end of file diff --git a/themes/docport/exampleSite/content/_layout/article-sidebar-after/_index.md b/themes/docport/exampleSite/content/_layout/article-sidebar-after/_index.md new file mode 100644 index 0000000..ec380ec --- /dev/null +++ b/themes/docport/exampleSite/content/_layout/article-sidebar-after/_index.md @@ -0,0 +1,3 @@ +--- +--- + diff --git a/themes/docport/exampleSite/content/_layout/footer/_index.md b/themes/docport/exampleSite/content/_layout/footer/_index.md new file mode 100644 index 0000000..600271f --- /dev/null +++ b/themes/docport/exampleSite/content/_layout/footer/_index.md @@ -0,0 +1,377 @@ +--- +date: "2020-08-20T15:41:15.543Z" +description: Footer +title: Footer +--- + + + \ No newline at end of file diff --git a/themes/docport/exampleSite/content/_layout/netlifycms/_index.md b/themes/docport/exampleSite/content/_layout/netlifycms/_index.md new file mode 100644 index 0000000..b8e2a14 --- /dev/null +++ b/themes/docport/exampleSite/content/_layout/netlifycms/_index.md @@ -0,0 +1,4 @@ +--- +{} +--- +fake \ No newline at end of file diff --git a/themes/docport/exampleSite/content/_layout/netlifycms/config.md b/themes/docport/exampleSite/content/_layout/netlifycms/config.md new file mode 100644 index 0000000..f7b6c1e --- /dev/null +++ b/themes/docport/exampleSite/content/_layout/netlifycms/config.md @@ -0,0 +1,15 @@ +--- +netlifycms_content_folder: "exampleSite/content" +outputs: +- netlifyyaml +url: /admin/config.yml +--- +backend: + name: "github" + repo: "vjeantet/hugo-theme-docport" + branch: "master" + open_authoring: true + +media_folder: "static/images/uploads" # Media files will be stored in the repo under images/uploads +public_folder: "/images/uploads" # The src attribute for uploaded media will begin with /images/uploads +publish_mode: editorial_workflow \ No newline at end of file diff --git a/themes/docport/exampleSite/content/_layout/netlifycms/root.md b/themes/docport/exampleSite/content/_layout/netlifycms/root.md new file mode 100644 index 0000000..5acb501 --- /dev/null +++ b/themes/docport/exampleSite/content/_layout/netlifycms/root.md @@ -0,0 +1,19 @@ +--- +type: raw +title: Content Manager +url: /admin/index.html +--- + + + + + + + + + + + + + + diff --git a/themes/docport/exampleSite/content/_layout/sidebar-after/_index.md b/themes/docport/exampleSite/content/_layout/sidebar-after/_index.md new file mode 100644 index 0000000..ca527f7 --- /dev/null +++ b/themes/docport/exampleSite/content/_layout/sidebar-after/_index.md @@ -0,0 +1,16 @@ +--- +date: "2020-08-20T11:07:48.092Z" +description: Sidebar after +title: Sidebar after +--- + +
+ +Download + +Star + +Fork +
+ + \ No newline at end of file diff --git a/themes/docport/exampleSite/content/_layout/sidebar-before/_index.md b/themes/docport/exampleSite/content/_layout/sidebar-before/_index.md new file mode 100644 index 0000000..c3223ae --- /dev/null +++ b/themes/docport/exampleSite/content/_layout/sidebar-before/_index.md @@ -0,0 +1,7 @@ +--- +date: "2020-08-20T11:08:17.209Z" +description: Sidebar before +title: Sidebar before +--- +[//]: # (This a comment) + diff --git a/themes/docport/exampleSite/content/content-and-customization/00-adding-content/_index.md b/themes/docport/exampleSite/content/content-and-customization/00-adding-content/_index.md new file mode 100644 index 0000000..92cee4a --- /dev/null +++ b/themes/docport/exampleSite/content/content-and-customization/00-adding-content/_index.md @@ -0,0 +1,98 @@ +--- +creatordisplayname: Valere JEANTET +creatoremail: valere.jeantet@gmail.com +date: "2020-09-08T22:49:36.481Z" +description: This page tells you how to use the theme to add and structure your site + content. +head: "" +hidden: false +lastmodifierdisplayname: Valere JEANTET +lastmodifieremail: valere.jeantet@gmail.com +layout: "" +pre: "" +tags: +- tag1 +- tag2 +title: Adding content +weight: 1 +--- +{{% notice %}}This page tells you how to use the theme to add and structure your site content.{{% /notice %}} + +## Content root directory + +You add content for your site under the `content` root directory of your Hugo site project. +The files in your content root directory are typically grouped in subdirectories corresponding to your site’s sections. + +We’ll look at in the following chapter. + +## Content sections + +With docport, **Each content page composes the site and navigation structure**, they shape the structure of your website. + +Create a folder for each section and their sub sections, and a `_index.md` in each folder which will act as the section's content. +{{%notice%}}You can add any other page.md in section folder, they will be treated as "[subpages]({{< ref "#subpages" >}})"{{%/notice%}} + +To link pages to each other, place them in a folders hierarchy. + +```text + content + └── section-one/ + ├── _index.md + └── section-one-two/ + ├── _index.md + ├── section-one-two-three-A/ + │ ├── _index.md + └── section-one-two-three-B/ + ├── _index.md <-- section's page + ├── pageA.md <-- "subpages" + └── pageB.md <-- "subpages" +``` + +## Subpages + +Subpages are contents which belong to the section, and are displayed bellow section's title in the page. \ +Subpages are not displayed in left menu. + +If you look at the current page title, you will see 3 links which reference its 3 subpages. +![](subpages.png?height=60px&classes=border,shadow) + +## Page frontmatter + +Each page file in a Hugo site has metadata frontmatter that tells Hugo about the page. You specify page frontmatter in TOML, YAML, or JSON. \ +Use the frontmatter to specify the page title, description, creation date, link title, template, menu weighting, and even any resources such as images used by the page. You can see a complete list of possible page frontmatter in [Front Matter](https://gohugo.io/content-management/front-matter/). + +On top of the [existing ones](https://gohugo.io/content-management/front-matter/), DocPort comes with additional params to control what and how to display your content, their entry in left menu or behaviour. + +```yaml +--- +title: "Adding content" + +# order sections +weight: 10 + +# Hide some page components +hide: +- header +- nav +- breadcrumb +- toc +- nextpage +- footer + +# subpage +subpage: false # usefull when you want to force a sub section to be considered as a subpage + +# Redirect to another content +# Set a full URL or a .md path +# examples : +# redirect = "https://github.com/vjeantet" +# redirect = "folder" +# redirect = "folder/_index.md" +redirect: "folder/_index.md" + +# Do not include this page in search results +nosearch: true +--- +``` + +{{%alert success%}}More frontmatter params exists to control how to display you content in the navigation, see [Navigation & Search]({{%relref "02-navigation-search" %}}) in the left menu.{{%/alert%}} \ No newline at end of file diff --git a/themes/docport/exampleSite/content/content-and-customization/00-adding-content/myslide/index.md b/themes/docport/exampleSite/content/content-and-customization/00-adding-content/myslide/index.md new file mode 100644 index 0000000..08f1544 --- /dev/null +++ b/themes/docport/exampleSite/content/content-and-customization/00-adding-content/myslide/index.md @@ -0,0 +1,47 @@ +--- +date: "2017-04-24T18:36:24+02:00" +hidden: true +revealOptions: + center: true + controls: true + history: false + progress: true + transition: concave +theme: league +title: My Slide ! fullscreen +type: slide +--- + +# In the morning + +___ + +## Getting up + +- Turn off alarm +- Get out of bed + +___ + +## Breakfast + +- Eat eggs +- Drink coffee + +--- + +# In the evening + +___ + +## Dinner + +- Eat spaghetti +- Drink wine + +___ + +## Going to sleep + +- Get in bed +- Count sheep \ No newline at end of file diff --git a/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-images/_index.md b/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-images/_index.md new file mode 100644 index 0000000..0b6eacc --- /dev/null +++ b/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-images/_index.md @@ -0,0 +1,31 @@ +--- +date: "2017-04-24T18:36:24+02:00" +hidden: false +subpage: true +title: images +weight: 10 +--- + +Images have a similar syntax to markdown links but include a preceding exclamation point. +``` + ![myImage](image.jpeg) +``` +![myImage](image.jpeg) + +## Resizing image + +Add HTTP parameters `width` and/or `height` to the link image to resize the image. Values are CSS values (default is `auto`). + +``` + ![myImage](image.jpeg?height=80px) +``` +![myImage](image.jpeg?height=80px) + + +## Add CSS classes + +Add a HTTP `classes` parameter to the link image to add CSS classes. `shadow` and `border` are available but you could define other ones. +``` + ![myImage](image.jpeg?classes=border,shadow) +``` +![myImage](image.jpeg?classes=border,shadow) diff --git a/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-images/image.jpeg b/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-images/image.jpeg new file mode 100644 index 0000000..08f2e1d Binary files /dev/null and b/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-images/image.jpeg differ diff --git a/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-skwad/_index.md b/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-skwad/_index.md new file mode 100644 index 0000000..f8fd798 --- /dev/null +++ b/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-skwad/_index.md @@ -0,0 +1,42 @@ +--- +hidden: true +date: "2017-04-24T18:36:24+02:00" +description: "" +title: As a Skwad +weight: 190 +post: " beta" +--- + +A basic .md file can be rendered as a form/checklist/questionnaire. + +{{% notice %}} +**A page rendered as a Skwad** is a page with a special rendered TOC, and a LOAD/DOWNLAOD form results buttons. +\ +[{{%icon aspect_ratio%}} click here to view an example]({{%ref "ex-checklist/_index.md"%}}) + +{{%/notice%}} + +To tell Hugo to consider a page as a skwad, just add `skwad` options in the frontmatter of your page. + +```yaml +--- +skwad: + clientside: true # Display Load From File and Save To File buttons + mode: form # set "form" for standard form submission or "api" to use Skwad API + url: https://localhost:5555/ # Form Action URL (mode=form) or Skwad base API (mode=api) + spaceName: appsec # spaceName for Api +--- +``` + +## Dedicated shortcodes +* c/text - a line or box input type +* c/choices - a radiogroup or a checkboxgroup +* c/list - a select or a multiselect +* c/check - a checkbox +* c/switch - a switch +* c/show - display a part with a condition using user inputs +* c/hidden - set a hidden value + +## Examples & Demos + +{{%children style="li" description="true" showhidden="true"%}} diff --git a/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-skwad/ex-checklist/__article-sidebar-after.md b/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-skwad/ex-checklist/__article-sidebar-after.md new file mode 100644 index 0000000..a8d29df --- /dev/null +++ b/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-skwad/ex-checklist/__article-sidebar-after.md @@ -0,0 +1,13 @@ +--- +--- + + + +{{%notice info%}} +This checklist was made from the VSAQ Vendor Security Assessment Questionnaire, licensed with Apache License 2.0 -- More info here : https://github.com/google/vsaq +{{%/notice %}} + diff --git a/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-skwad/ex-checklist/_index.md b/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-skwad/ex-checklist/_index.md new file mode 100644 index 0000000..411e59b --- /dev/null +++ b/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-skwad/ex-checklist/_index.md @@ -0,0 +1,270 @@ +--- +description: Very long and Complex example, with file save/load on client side +hidden: true +hide: +- nextpage +- nav +- breadcrumb + +title: WebApp Security Assessment +weight: 99 + +skwad: + clientside: true +--- + +{{%notice success%}} +This is a demo of a [skwad page]({{%ref "content-and-customization/00-adding-content/page-skwad"%}}) +{{%/notice %}} + +## Application Metadata +{{%include "webappsec/01_appmetadata.md"%}} + + +## Vulnerability Reporting and Management +{{%include "webappsec/02_vulnerabilityreporting.md"%}} + + +## HTTPS and Mixed-Content Risks +{{%include "webappsec/03_https.md"%}} + + +## Authentication and Authorization +{{%include "webappsec/04_authz.md"%}} + + +## Common Web Vulnerabilities +{{%include "webappsec/05_commonvuln.md"%}} + + +## Testing, QA, and Monitoring +{{%include "webappsec/06_testing.md"%}} + +## Additional Notes +Provide any additional information about the security of your application: +{{}} + +## Security Contacts +List the email addresses of people we should contact about any security issues in the application: +{{}} + +## Feedback +Congratulations! You've made it to the end of this questionnaire. If you can spare another minute, please let us know how we can improve it. Your feedback is highly appreciated. +{{}} + +--- + +{{%notice info%}} +**Licence Info :** this checklist was made from the VSAQ Vendor Security Assessment Questionnaire, licensed with Apache License 2.0 -- More info here : https://github.com/google/vsaq +{{%/notice %}} + +{{}} +## Show +{{}} +* (aa) Show a block. +* (no) Another block +* (foo) No Block +* (two) Show the two blocks +{{}} + +### show 1 + +{{}} +{{%notice%}} +Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, +quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo +consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse +cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non +proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +{{%/notice%}} +{{}} + +{{}} +{{%alert%}}No Alert selected !{{%/alert%}} +{{}} + + + +## text + +Quel est le code du projet ? + + + +{{}} +**Simple** +{{}} +<---> +**Multiple** +{{}} +Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua. +{{}} +{{}} + +## Choices + +Les enjeux de sécurité ont été identifiés par la SSI ? + +{{}} +**Simple** + +{{}} + * (yes) Yes, we have a published security email contact, or we provide another way for users to report security issues. Incoming reports are timely reviewed and triaged. + * (no) No, we do not currently offer a way to report security vulnerabilities for priority handling + * i don't know +{{}} + +<---> + +**Multiple** + + +{{}} + * (yes) Yes, we have a published security email contact, or we provide another way for users to report security issues. Incoming reports are timely reviewed and triaged. + * (no) No, we do not currently offer a way to report security vulnerabilities for priority handling + * i don't know +{{}} +{{}} + +{{}} +{{%alert danger%}}OK !{{%/alert%}} +{{}} + + +## List +{{}} +**Simple** +{{}} + * (czero) C0 + * (cun) C1 + * (cdeux) C2 +{{}} + +<---> + +**Multiple** +{{}} + * All + * (czero) C0 + * (cun) C1 + * (cdeux) C2 +{{}} +{{}} + +## Checkbox + +{{%c/check mycheck %}}J'ai tout compris 1{{%/c/check %}} + +## switch + +{{%c/switch myswitch %}}Activer le truc{{%/c/switch %}} + + + + + + +## Code +{{%expand%}} +Change on any element form +```js + var form = document.querySelector('form'); + form.addEventListener('change', function(e,v) { + console.log("element changed", e.target,v) + }); + +```` + +Get all data +```js + $("form[name=myform]").serializeArray() +``` + +Download file : +* date +* ref +* url +* data +* hash or signature +```js +function downloadFile() { + var obj = {a: 123, b: "4 5 6"}; + var filename = "download.json"; + var blob = new Blob([JSON.stringify(obj)], {type: 'text/plain'}); + if (window.navigator && window.navigator.msSaveOrOpenBlob) { + window.navigator.msSaveOrOpenBlob(blob, filename); + } else{ + var e = document.createEvent('MouseEvents'), + a = document.createElement('a'); + a.download = filename; + a.href = window.URL.createObjectURL(blob); + a.dataset.downloadurl = ['text/plain', a.download, a.href].join(':'); + e.initEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); + a.dispatchEvent(e); + } +} +```` + +load file 1 : +```js +input.addEventListener('change', () => { + let files = input.files; + + if (files.length == 0) return; + + /* If any further modifications have to be made on the + Extracted text. The text can be accessed using the + file variable. But since this is const, it is a read + only variable, hence immutable. To make any changes, + changing const to var, here and In the reader.onload + function would be advisible */ + const file = files[0]; + + let reader = new FileReader(); + + reader.onload = (e) => { + const file = e.target.result; + + // This is a regular expression to identify carriage + // Returns and line breaks + const lines = file.split(/\r\n|\n/); + textarea.value = lines.join('\n'); + + }; + + reader.onerror = (e) => alert(e.target.error.name); + + reader.readAsText(file); +}); +```` + +load file 2 : +```js +function onFileLoad(elementId, event) { + document.getElementById(elementId).innerText = event.target.result; +} + +function onChooseFile(event, onLoadFileHandler) { + if (typeof window.FileReader !== 'function') + throw ("The file API isn't supported on this browser."); + let input = event.target; + if (!input) + throw ("The browser does not properly implement the event object"); + if (!input.files) + throw ("This browser does not support the `files` property of the file input."); + if (!input.files[0]) + return undefined; + let file = input.files[0]; + let fr = new FileReader(); + fr.onload = onLoadFileHandler; + fr.readAsText(file); +} +``` +```html + +

+``` +{{%/expand%}} +{{
}} diff --git a/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-skwad/ex-checklist/confirm.md b/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-skwad/ex-checklist/confirm.md new file mode 100644 index 0000000..12b9670 --- /dev/null +++ b/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-skwad/ex-checklist/confirm.md @@ -0,0 +1,11 @@ +--- +hide: +- nextpage + +title: Thank You +weight: 99 +hidden: true + +--- + +Thank You ! \ No newline at end of file diff --git a/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-skwad/ex-checklist/test.md b/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-skwad/ex-checklist/test.md new file mode 100644 index 0000000..5014b1c --- /dev/null +++ b/themes/docport/exampleSite/content/content-and-customization/00-adding-content/page-skwad/ex-checklist/test.md @@ -0,0 +1,46 @@ +--- +hide: +- nextpage + +title: Test Form +weight: 99 + +checklist: true +--- + +{{