From dc54c121d41643c77b11d9af09ecea1ba14b363b Mon Sep 17 00:00:00 2001 From: Yannic Meyer Date: Tue, 14 Jul 2026 11:45:40 +0200 Subject: [PATCH 1/2] Make themes part of the repo instead of submodules (release-4.8 backport) Co-Authored-By: Claude Sonnet 5 --- .gitmodules | 9 - themes/hugo-darktable-docs-epub-theme | 1 - .../hugo-darktable-docs-epub-theme/.gitignore | 2 + themes/hugo-darktable-docs-epub-theme/LICENSE | 20 ++ .../assets/sass/main.scss | 13 ++ .../assets/sass/modules/body-page.scss | 61 ++++++ .../assets/sass/modules/bookmarks.scss | 42 ++++ .../assets/sass/modules/cover-back.scss | 40 ++++ .../assets/sass/modules/cover-front.scss | 55 +++++ .../assets/sass/modules/fonts.scss | 7 + .../assets/sass/modules/images.scss | 39 ++++ .../assets/sass/modules/numbering.scss | 45 ++++ .../assets/sass/modules/page.scss | 9 + .../assets/sass/modules/toc.scss | 24 +++ .../assets/sass/modules/typography.scss | 138 ++++++++++++ .../i18n/en.yaml | 8 + .../i18n/pt_br.yaml | 8 + .../_default/_markup/render-heading.html | 1 + .../_default/_markup/render-image.html | 10 + .../layouts/_default/_markup/render-link.html | 20 ++ .../layouts/_default/baseof.html | 17 ++ .../layouts/_default/index.html | 15 ++ .../layouts/_default/index.ncx | 34 +++ .../layouts/_default/index.opf | 51 +++++ .../layouts/_default/index.xhtml | 21 ++ .../layouts/_default/list.html | 23 ++ .../layouts/_default/single.html | 15 ++ .../layouts/mimetype | 1 + .../layouts/partials/content_gen.html | 20 ++ .../layouts/partials/content_recursive.html | 14 ++ .../layouts/partials/cover-back.html | 8 + .../layouts/partials/cover-front.html | 5 + .../layouts/partials/css.html | 5 + .../layouts/partials/head-meta.xhtml | 3 + .../layouts/partials/manifest.opf | 14 ++ .../layouts/partials/nav.ncx | 34 +++ .../layouts/partials/nav.xhtml | 21 ++ .../layouts/partials/spine.opf | 14 ++ .../layouts/partials/toc.html | 8 + .../layouts/partials/toc_gen.html | 17 ++ .../layouts/partials/toc_recursive.html | 11 + .../static/META-INF/container.xml | 8 + .../static/OEBPS/front-cover.html | 7 + .../static/OEBPS/front-cover.png | Bin 0 -> 38419 bytes .../static/mimetype | 1 + .../hugo-darktable-docs-epub-theme/theme.toml | 15 ++ themes/hugo-darktable-docs-pdf-theme | 1 - themes/hugo-darktable-docs-pdf-theme/LICENSE | 20 ++ .../assets/sass/main.scss | 13 ++ .../assets/sass/modules/body-page.scss | 61 ++++++ .../assets/sass/modules/bookmarks.scss | 42 ++++ .../assets/sass/modules/cover-back.scss | 40 ++++ .../assets/sass/modules/cover-front.scss | 55 +++++ .../assets/sass/modules/fonts.scss | 7 + .../assets/sass/modules/images.scss | 39 ++++ .../assets/sass/modules/numbering.scss | 45 ++++ .../assets/sass/modules/page.scss | 9 + .../assets/sass/modules/toc.scss | 24 +++ .../assets/sass/modules/typography.scss | 139 ++++++++++++ .../i18n/en.yaml | 8 + .../i18n/pt_br.yaml | 8 + .../_default/_markup/render-heading.html | 1 + .../_default/_markup/render-image.html | 17 ++ .../layouts/_default/_markup/render-link.html | 17 ++ .../layouts/_default/baseof.html | 19 ++ .../layouts/_default/list.html | 23 ++ .../layouts/_default/single.html | 25 +++ .../layouts/index.html | 15 ++ .../layouts/partials/content_gen.html | 20 ++ .../layouts/partials/content_recursive.html | 14 ++ .../layouts/partials/cover-back.html | 8 + .../layouts/partials/cover-front.html | 5 + .../layouts/partials/css.html | 5 + .../layouts/partials/head-meta.html | 3 + .../layouts/partials/toc.html | 8 + .../layouts/partials/toc_gen.html | 17 ++ .../layouts/partials/toc_recursive.html | 11 + .../hugo-darktable-docs-pdf-theme/theme.toml | 15 ++ themes/hugo-darktable-docs-theme | 1 - themes/hugo-darktable-docs-theme/.gitignore | 2 + themes/hugo-darktable-docs-theme/LICENSE | 20 ++ themes/hugo-darktable-docs-theme/README.md | 28 +++ .../archetypes/default.md | 2 + .../assets/js/app.js | 204 ++++++++++++++++++ .../assets/package.json | 20 ++ .../assets/sass/main.scss | 17 ++ .../assets/sass/modules/body.scss | 100 +++++++++ .../assets/sass/modules/images.scss | 37 ++++ .../assets/sass/modules/nav.scss | 36 ++++ .../assets/sass/modules/print.scss | 67 ++++++ .../assets/sass/modules/typography.scss | 148 +++++++++++++ .../assets/sass/modules/variables.scss | 18 ++ .../assets/yarn.lock | 28 +++ .../hugo-darktable-docs-theme/i18n/en-us.yaml | 20 ++ .../hugo-darktable-docs-theme/i18n/pt-br.yaml | 20 ++ .../layouts/404.html | 0 .../_default/_markup/render-heading.html | 1 + .../_default/_markup/render-image.html | 17 ++ .../layouts/_default/_markup/render-link.html | 20 ++ .../layouts/_default/baseof.html | 36 ++++ .../layouts/_default/index.json | 5 + .../layouts/_default/list.html | 30 +++ .../layouts/_default/single.html | 38 ++++ .../layouts/index.html | 22 ++ .../layouts/partials/analytics.html | 16 ++ .../layouts/partials/breadcrumbs.html | 15 ++ .../layouts/partials/css.html | 10 + .../layouts/partials/head-meta.html | 15 ++ .../layouts/partials/javascript.html | 31 +++ .../layouts/partials/nav.html | 29 +++ .../layouts/partials/navjs.html | 53 +++++ .../layouts/partials/page-footer.html | 5 + .../partials/page-header-navbar-large.html | 38 ++++ .../layouts/partials/prev-next.html | 42 ++++ .../layouts/partials/table-of-contents.html | 8 + .../layouts/partials/tags.html | 9 + .../static/css/.gitkeep | 1 + .../static/favicon.ico | Bin 0 -> 1150 bytes .../static/js/.gitkeep | 1 + .../icon20x24px-exported-transparent.png | Bin 0 -> 799 bytes themes/hugo-darktable-docs-theme/theme.toml | 15 ++ 121 files changed, 2881 insertions(+), 12 deletions(-) delete mode 100644 .gitmodules delete mode 160000 themes/hugo-darktable-docs-epub-theme create mode 100644 themes/hugo-darktable-docs-epub-theme/.gitignore create mode 100644 themes/hugo-darktable-docs-epub-theme/LICENSE create mode 100644 themes/hugo-darktable-docs-epub-theme/assets/sass/main.scss create mode 100644 themes/hugo-darktable-docs-epub-theme/assets/sass/modules/body-page.scss create mode 100644 themes/hugo-darktable-docs-epub-theme/assets/sass/modules/bookmarks.scss create mode 100644 themes/hugo-darktable-docs-epub-theme/assets/sass/modules/cover-back.scss create mode 100644 themes/hugo-darktable-docs-epub-theme/assets/sass/modules/cover-front.scss create mode 100644 themes/hugo-darktable-docs-epub-theme/assets/sass/modules/fonts.scss create mode 100644 themes/hugo-darktable-docs-epub-theme/assets/sass/modules/images.scss create mode 100644 themes/hugo-darktable-docs-epub-theme/assets/sass/modules/numbering.scss create mode 100644 themes/hugo-darktable-docs-epub-theme/assets/sass/modules/page.scss create mode 100644 themes/hugo-darktable-docs-epub-theme/assets/sass/modules/toc.scss create mode 100644 themes/hugo-darktable-docs-epub-theme/assets/sass/modules/typography.scss create mode 100644 themes/hugo-darktable-docs-epub-theme/i18n/en.yaml create mode 100644 themes/hugo-darktable-docs-epub-theme/i18n/pt_br.yaml create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/_default/_markup/render-heading.html create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/_default/_markup/render-image.html create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/_default/_markup/render-link.html create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/_default/baseof.html create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/_default/index.html create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/_default/index.ncx create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/_default/index.opf create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/_default/index.xhtml create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/_default/list.html create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/_default/single.html create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/mimetype create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/partials/content_gen.html create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/partials/content_recursive.html create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/partials/cover-back.html create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/partials/cover-front.html create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/partials/css.html create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/partials/head-meta.xhtml create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/partials/manifest.opf create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/partials/nav.ncx create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/partials/nav.xhtml create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/partials/spine.opf create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/partials/toc.html create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/partials/toc_gen.html create mode 100644 themes/hugo-darktable-docs-epub-theme/layouts/partials/toc_recursive.html create mode 100644 themes/hugo-darktable-docs-epub-theme/static/META-INF/container.xml create mode 100644 themes/hugo-darktable-docs-epub-theme/static/OEBPS/front-cover.html create mode 100644 themes/hugo-darktable-docs-epub-theme/static/OEBPS/front-cover.png create mode 100644 themes/hugo-darktable-docs-epub-theme/static/mimetype create mode 100644 themes/hugo-darktable-docs-epub-theme/theme.toml delete mode 160000 themes/hugo-darktable-docs-pdf-theme create mode 100644 themes/hugo-darktable-docs-pdf-theme/LICENSE create mode 100644 themes/hugo-darktable-docs-pdf-theme/assets/sass/main.scss create mode 100644 themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/body-page.scss create mode 100644 themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/bookmarks.scss create mode 100644 themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/cover-back.scss create mode 100644 themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/cover-front.scss create mode 100644 themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/fonts.scss create mode 100644 themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/images.scss create mode 100644 themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/numbering.scss create mode 100644 themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/page.scss create mode 100644 themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/toc.scss create mode 100644 themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/typography.scss create mode 100644 themes/hugo-darktable-docs-pdf-theme/i18n/en.yaml create mode 100644 themes/hugo-darktable-docs-pdf-theme/i18n/pt_br.yaml create mode 100644 themes/hugo-darktable-docs-pdf-theme/layouts/_default/_markup/render-heading.html create mode 100644 themes/hugo-darktable-docs-pdf-theme/layouts/_default/_markup/render-image.html create mode 100644 themes/hugo-darktable-docs-pdf-theme/layouts/_default/_markup/render-link.html create mode 100644 themes/hugo-darktable-docs-pdf-theme/layouts/_default/baseof.html create mode 100644 themes/hugo-darktable-docs-pdf-theme/layouts/_default/list.html create mode 100644 themes/hugo-darktable-docs-pdf-theme/layouts/_default/single.html create mode 100644 themes/hugo-darktable-docs-pdf-theme/layouts/index.html create mode 100644 themes/hugo-darktable-docs-pdf-theme/layouts/partials/content_gen.html create mode 100644 themes/hugo-darktable-docs-pdf-theme/layouts/partials/content_recursive.html create mode 100644 themes/hugo-darktable-docs-pdf-theme/layouts/partials/cover-back.html create mode 100644 themes/hugo-darktable-docs-pdf-theme/layouts/partials/cover-front.html create mode 100644 themes/hugo-darktable-docs-pdf-theme/layouts/partials/css.html create mode 100644 themes/hugo-darktable-docs-pdf-theme/layouts/partials/head-meta.html create mode 100644 themes/hugo-darktable-docs-pdf-theme/layouts/partials/toc.html create mode 100644 themes/hugo-darktable-docs-pdf-theme/layouts/partials/toc_gen.html create mode 100644 themes/hugo-darktable-docs-pdf-theme/layouts/partials/toc_recursive.html create mode 100644 themes/hugo-darktable-docs-pdf-theme/theme.toml delete mode 160000 themes/hugo-darktable-docs-theme create mode 100644 themes/hugo-darktable-docs-theme/.gitignore create mode 100644 themes/hugo-darktable-docs-theme/LICENSE create mode 100644 themes/hugo-darktable-docs-theme/README.md create mode 100644 themes/hugo-darktable-docs-theme/archetypes/default.md create mode 100644 themes/hugo-darktable-docs-theme/assets/js/app.js create mode 100644 themes/hugo-darktable-docs-theme/assets/package.json create mode 100644 themes/hugo-darktable-docs-theme/assets/sass/main.scss create mode 100644 themes/hugo-darktable-docs-theme/assets/sass/modules/body.scss create mode 100644 themes/hugo-darktable-docs-theme/assets/sass/modules/images.scss create mode 100644 themes/hugo-darktable-docs-theme/assets/sass/modules/nav.scss create mode 100644 themes/hugo-darktable-docs-theme/assets/sass/modules/print.scss create mode 100644 themes/hugo-darktable-docs-theme/assets/sass/modules/typography.scss create mode 100644 themes/hugo-darktable-docs-theme/assets/sass/modules/variables.scss create mode 100644 themes/hugo-darktable-docs-theme/assets/yarn.lock create mode 100644 themes/hugo-darktable-docs-theme/i18n/en-us.yaml create mode 100644 themes/hugo-darktable-docs-theme/i18n/pt-br.yaml create mode 100644 themes/hugo-darktable-docs-theme/layouts/404.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/_default/_markup/render-heading.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/_default/_markup/render-image.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/_default/_markup/render-link.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/_default/baseof.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/_default/index.json create mode 100644 themes/hugo-darktable-docs-theme/layouts/_default/list.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/_default/single.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/index.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/partials/analytics.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/partials/breadcrumbs.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/partials/css.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/partials/head-meta.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/partials/javascript.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/partials/nav.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/partials/navjs.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/partials/page-footer.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/partials/page-header-navbar-large.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/partials/prev-next.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/partials/table-of-contents.html create mode 100644 themes/hugo-darktable-docs-theme/layouts/partials/tags.html create mode 100644 themes/hugo-darktable-docs-theme/static/css/.gitkeep create mode 100644 themes/hugo-darktable-docs-theme/static/favicon.ico create mode 100644 themes/hugo-darktable-docs-theme/static/js/.gitkeep create mode 100755 themes/hugo-darktable-docs-theme/static/language-icons/icon20x24px-exported-transparent.png create mode 100644 themes/hugo-darktable-docs-theme/theme.toml diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 3b3f60d885..0000000000 --- a/.gitmodules +++ /dev/null @@ -1,9 +0,0 @@ -[submodule "themes/hugo-darktable-docs-theme"] - path = themes/hugo-darktable-docs-theme - url = https://github.com/pixlsus/hugo-darktable-docs-theme.git -[submodule "themes/hugo-darktable-docs-pdf-theme"] - path = themes/hugo-darktable-docs-pdf-theme - url = https://github.com/pixlsus/hugo-darktable-docs-pdf-theme.git -[submodule "themes/hugo-darktable-docs-epub-theme"] - path = themes/hugo-darktable-docs-epub-theme - url = https://github.com/pixlsus/hugo-darktable-docs-epub-theme.git diff --git a/themes/hugo-darktable-docs-epub-theme b/themes/hugo-darktable-docs-epub-theme deleted file mode 160000 index e378baf97e..0000000000 --- a/themes/hugo-darktable-docs-epub-theme +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e378baf97e67d4a9569f67e72093e80d91d20238 diff --git a/themes/hugo-darktable-docs-epub-theme/.gitignore b/themes/hugo-darktable-docs-epub-theme/.gitignore new file mode 100644 index 0000000000..c2022ca816 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/.gitignore @@ -0,0 +1,2 @@ +.directory +*/node_modules/* \ No newline at end of file diff --git a/themes/hugo-darktable-docs-epub-theme/LICENSE b/themes/hugo-darktable-docs-epub-theme/LICENSE new file mode 100644 index 0000000000..faff36ecad --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2020 YOUR_NAME_HERE + +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/hugo-darktable-docs-epub-theme/assets/sass/main.scss b/themes/hugo-darktable-docs-epub-theme/assets/sass/main.scss new file mode 100644 index 0000000000..91b2720202 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/assets/sass/main.scss @@ -0,0 +1,13 @@ +/* Override any bootstrap variables here before importing bootstrap itself */ +@import 'modules/fonts'; +@import 'modules/typography'; +@import 'modules/page'; +@import 'modules/cover-front'; +@import 'modules/cover-back'; +@import 'modules/body-page'; +@import 'modules/toc'; +@import 'modules/bookmarks'; +@import 'modules/numbering'; + +/* Theme customizations */ +@import 'modules/images'; diff --git a/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/body-page.scss b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/body-page.scss new file mode 100644 index 0000000000..fc65b99272 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/body-page.scss @@ -0,0 +1,61 @@ +#body > .section { + page: body; +} + +#cover-front > .title { + string-set: front-cover-title content(); +} + +#body > .section > .head1.title { + string-set: chapter content(); +} + +#body > .section > .section > .head1.title { + string-set: section content(); +} + +@mixin border-top { + border-top: 1px solid gray; +} + +@mixin border-bottom { + border-bottom: 1px solid gray; +} + +@page body { + @include border-top; + @include border-bottom; + padding-top: 6px; + padding-bottom: 6px; + @top-left-corner { + content: ""; + } + @top-left { + content: string(chapter); + } + @top-center { + content: ""; + } + @top-right { + content: string(section); + } + @top-right-corner { + content: ""; + } + + @bottom-left-corner { + content: ""; + } + @bottom-left { + content: string(front-cover-title); + } + @bottom-center { + content: ""; + } + @bottom-right { + content: counter(page); + } + @bottom-right-corner { + content: ""; + } +} diff --git a/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/bookmarks.scss b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/bookmarks.scss new file mode 100644 index 0000000000..226f77a277 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/bookmarks.scss @@ -0,0 +1,42 @@ +.section { + .title { + bookmark-level: 1; + } + .content { + .head1, + .head2, + .head3 { + bookmark-level: none; + } + } +} + +.section > .section { + .title { + bookmark-level: 2; + } +} + +.section > .section > .section { + .title { + bookmark-level: 3; + } +} + +.section > .section > .section > .section { + .title { + bookmark-level: 4; + } +} + +.section > .section > .section > .section > .section { + .title { + bookmark-level: 5; + } +} + +.section > .section > .section > .section > .section > .section { + .title { + bookmark-level: 6; + } +} diff --git a/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/cover-back.scss b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/cover-back.scss new file mode 100644 index 0000000000..166c50a0c4 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/cover-back.scss @@ -0,0 +1,40 @@ +#cover-back { + page: cover-back; + break-before: always; + text-align: center; + margin-top: 95%; +} + +@page cover-front { + @top-left-corner { + content: none; + } + @top-left { + content: none; + } + @top-center { + content: none; + } + @top-right { + content: none; + } + @top-right-corner { + content: none; + } + + @bottom-left-corner { + content: none; + } + @bottom-left { + content: none; + } + @bottom-center { + content: none; + } + @bottom-right { + content: none; + } + @bottom-right-corner { + content: none; + } +} diff --git a/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/cover-front.scss b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/cover-front.scss new file mode 100644 index 0000000000..202ef61426 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/cover-front.scss @@ -0,0 +1,55 @@ +#cover-front { + page: cover-front; + break-after: always; + padding-top: 35%; + height: 11in; + width: 8.5in; + .title { + text-align: center; + font-size: 48px; + line-height: 52px; + } + .title::before { + content: url(darktable-logo.svg); + display: block; + transform: scale(0.5); + margin: 0px auto; + margin-bottom: -10rem; + } +} + +@page cover-front { + margin: 0; + padding: 0; + @top-left-corner { + content: none; + } + @top-left { + content: none; + } + @top-center { + content: none; + } + @top-right { + content: none; + } + @top-right-corner { + content: none; + } + + @bottom-left-corner { + content: none; + } + @bottom-left { + content: none; + } + @bottom-center { + content: none; + } + @bottom-right { + content: none; + } + @bottom-right-corner { + content: none; + } +} diff --git a/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/fonts.scss b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/fonts.scss new file mode 100644 index 0000000000..b1272d9c44 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/fonts.scss @@ -0,0 +1,7 @@ +* { + font-family: sans-serif; +} + +pre, code { + font-family: monospace; +} diff --git a/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/images.scss b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/images.scss new file mode 100644 index 0000000000..51b3110397 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/images.scss @@ -0,0 +1,39 @@ +img { + display: block; + max-width: 100%; +} + +.icon { + width: 25px; + display: inline-block; + vertical-align: middle; +} + +.inline { + display: inline; + vertical-align: middle; +} + +.w25 { + width: 24%; +} + +.w33 { + width: 33%; +} + +.w50 { + width: 48%; +} + +.w66 { + width: 66%; +} + +.w75 { + width: 72%; +} + +.w100 { + width: 100%; +} diff --git a/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/numbering.scss b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/numbering.scss new file mode 100644 index 0000000000..fd48aede3f --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/numbering.scss @@ -0,0 +1,45 @@ +// The counters for the sections and ToC are presented together to keep the numbering consistent. + +// Section 1 +#body > .section, +#toc-body > ul > li { + counter-increment: section-1; +} + +#body > .section > .title:before, +#toc-body > ul > li > a:before { + content: counter(section-1) ". "; +} + +// Section 2 +#body > .section > .section, +#toc-body > ul > li > ul > li { + counter-increment: section-2; +} + +#body > .section > .section > .title:before, +#toc-body > ul > li > ul > li > a:before { + content: counter(section-1) "." counter(section-2) ". "; +} + +// Section 3 +#body > .section > .section > .section, +#toc-body > ul > li > ul > li > ul > li { + counter-increment: section-3; +} + +#body > .section > .section > .section > .title:before, +#toc-body > ul > li > ul > li > ul > li > a:before { + content: counter(section-1) "." counter(section-2) "." counter(section-3) ". "; +} + +// Section 4 +#body > .section > .section > .section > .section, +#toc-body > ul > li > ul > li > ul > li > ul > li { + counter-increment: section-4; +} + +#body > .section > .section > .section > .section > .title:before, +#toc-body > ul > li > ul > li > ul > li > ul > li > a:before { + content: counter(section-1) "." counter(section-2) "." counter(section-3) "." counter(section-4) ". "; +} diff --git a/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/page.scss b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/page.scss new file mode 100644 index 0000000000..b7dc04cb93 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/page.scss @@ -0,0 +1,9 @@ +// Basic page definition + +@page { + size: letter portrait; + margin-top: 0.5in; + margin-bottom: 0.5in; + margin-right: 0.25in; + margin-left: 0.25in; +} diff --git a/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/toc.scss b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/toc.scss new file mode 100644 index 0000000000..26a9fef70a --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/toc.scss @@ -0,0 +1,24 @@ +#toc { + break-after: always; + .title { + font-size: 2.323em; + } + #toc-body { + columns: 2; + ul { + list-style-type: none; + padding-left: 15px; + li { + padding-top: 1px; + padding-bottom: 2px; + a { + color: black; + text-decoration: none; + } + a:after { + content: " " target-counter(attr(href), page); + } + } + } + } +} diff --git a/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/typography.scss b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/typography.scss new file mode 100644 index 0000000000..ac985f4d3f --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/assets/sass/modules/typography.scss @@ -0,0 +1,138 @@ +// Major Second typographical rhythm from https://type-scale.com/ + +html { + font-size: 100%; /*16px*/ +} + +body { + background-color: white; + font-family: 'Fira Sans', sans-serif; + font-weight: 400; + line-height: 1.65; + color: #333; +} + +pre, code, kbd { + font-family: 'Fira Mono', monospace; + font-size: 0.9em; + color: navy; +} + +p { + margin-bottom: 1rem; + margin-top: 1rem; + margin-left: 0; + margin-right: 0; + text-indent: 0; +} + +.head1, .head2, .head3, .head4, .head5 { + margin-top: 0.5em; + margin-bottom: 1em; + font-family: 'Fira Sans', sans-serif; + font-weight: 400; + line-height: 1.15; +} + +.head1 { + font-size: 1.7em; + margin: 0; +} + +.head1.title.depth-1 { + margin-top: 0.5em; + margin-bottom: 1.2em; + font-size: 3em; +} + +.head1.title.depth-2 { + margin-top: 0.5em; + margin-bottom: 1.2em; + font-size: 2.6em; +} + +.head1.title.depth-3, +.head1.title.depth-4, +.head1.title.depth-5 { + margin-top: 0.5em; + margin-bottom: 1.2em; + font-size: 2.2em; +} + +.head1+.head2 { + margin-top: 0; +} + +.head2 { + font-size: 1.4em; +} + +.head2+.head3 { + margin-top: 0; +} + +.head3 { + + font-size: 1.2em; + font-style: italic; +} + +.head4, +.head5, +.head6 { + color: red; + :before { + content: "We only allow H1, H2, or H3 headings in body content." + } +} + +small, .text_small { + font-size: 0.889em; +} + +dd, pre { + margin-left: 20px; +} + +dt { + margin-top: 1rem; + font-weight: bold; +} + +ul { + margin-top: 0; + margin-bottom: 0; +} + +article ul li, +article ul li p, +dd p { + margin-top: 0.7rem; + margin-bottom: 0.7rem; +} + +nav ol, +nav ol li, +nav ol li ol +{ + list-style-type: none; + padding-left: 1em; + margin-left: 0; + text-indent: 0; +} + +nav ol +{ + padding-left: 0em; +} + +.webonly +{ + display: none; +} + +hr +{ + margin-top: 1em; + margin-bottom: 1em; +} diff --git a/themes/hugo-darktable-docs-epub-theme/i18n/en.yaml b/themes/hugo-darktable-docs-epub-theme/i18n/en.yaml new file mode 100644 index 0000000000..435bd3b903 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/i18n/en.yaml @@ -0,0 +1,8 @@ +- id: toc + translation: "Table of Contents" + +- id: copyright + translation: "Copyright" + +- id: copyrightEntity + translation: "Someone or something" diff --git a/themes/hugo-darktable-docs-epub-theme/i18n/pt_br.yaml b/themes/hugo-darktable-docs-epub-theme/i18n/pt_br.yaml new file mode 100644 index 0000000000..d66fc0fb88 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/i18n/pt_br.yaml @@ -0,0 +1,8 @@ +- id: toc + translation: "Índice" + +- id: copyright + translation: "Copyright" + +- id: copyrightEntity + translation: "Alguém ou alguma coisa" diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/_default/_markup/render-heading.html b/themes/hugo-darktable-docs-epub-theme/layouts/_default/_markup/render-heading.html new file mode 100644 index 0000000000..db98045960 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/_default/_markup/render-heading.html @@ -0,0 +1 @@ +

{{ .Text | safeHTML }}

diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/_default/_markup/render-image.html b/themes/hugo-darktable-docs-epub-theme/layouts/_default/_markup/render-image.html new file mode 100644 index 0000000000..a3996f88e7 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/_default/_markup/render-image.html @@ -0,0 +1,10 @@ +{{ $link := string .Destination }} +{{ $imgBase := path.Base .Destination }} + +{{ $classSplit := split $imgBase "#" }} + +{{ if hasPrefix $link "http" }} +{{ .Text }} +{{ else }} +{{ .Text }} +{{ end }} diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/_default/_markup/render-link.html b/themes/hugo-darktable-docs-epub-theme/layouts/_default/_markup/render-link.html new file mode 100644 index 0000000000..d3386785b6 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/_default/_markup/render-link.html @@ -0,0 +1,20 @@ +{{ $link := strings.Replace .Destination "_index.md" "" }} +{{- /* This comment removes newlines. */ -}} +{{ $isRemote := strings.HasPrefix $link "http" }} +{{- /* This comment removes newlines. */ -}} +{{- if not $isRemote -}} +{{- /* This comment removes newlines. */ -}} +{{ $url := urls.Parse $link }} +{{- /* This comment removes newlines. */ -}} +{{- if $url.Path -}} +{{- /* This comment removes newlines. */ -}} +{{ $fragment := "" }} +{{- /* This comment removes newlines. */ -}} +{{- with $url.Fragment }}{{ $fragment = printf "#%s" . }}{{ end -}} +{{- /* This comment removes newlines. */ -}} +{{- with .Page.GetPage $url.Path }}{{ $link = printf "%s%s" .RelPermalink $fragment }}{{ end }}{{ end -}} +{{- /* This comment removes newlines. */ -}} +{{- end -}} +{{- /* This comment removes newlines. */ -}} +{{ .Text | safeHTML }} +{{- /* This comment removes newlines. */ -}} diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/_default/baseof.html b/themes/hugo-darktable-docs-epub-theme/layouts/_default/baseof.html new file mode 100644 index 0000000000..0aaca3358e --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/_default/baseof.html @@ -0,0 +1,17 @@ +{{- printf "" | safeHTML }} +{{- .Scratch.Set "depth" ( strings.Count "/" .Permalink ) -}} + + + {{ partial "css.html" . }} + + +
+ {{ block "main" .}} + + {{ end }} +
+ + + diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/_default/index.html b/themes/hugo-darktable-docs-epub-theme/layouts/_default/index.html new file mode 100644 index 0000000000..a470a5263a --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/_default/index.html @@ -0,0 +1,15 @@ +{{ define "title" }}{{ .Title | markdownify }} | {{ .Site.Title }}{{ end }} +{{ define "main" }} +{{ $dateFormat := default "Mon Jan 2, 2006" (index .Site.Params "date_format") }} + +
+ +

+ {{ .Site.Title | markdownify }} +

+ + {{ .Content }} + +
+ +{{ end }} diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/_default/index.ncx b/themes/hugo-darktable-docs-epub-theme/layouts/_default/index.ncx new file mode 100644 index 0000000000..e3fe5deefc --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/_default/index.ncx @@ -0,0 +1,34 @@ +{{- printf "" | safeHTML }} + + + + + + + + {{ .Site.Params.title }} + {{ .Site.Params.creator }} + + + + + + darktable user manual + + + + + + + darktable user manual + + + + + {{ partial "nav.ncx" . }} + + + diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/_default/index.opf b/themes/hugo-darktable-docs-epub-theme/layouts/_default/index.opf new file mode 100644 index 0000000000..879869d373 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/_default/index.opf @@ -0,0 +1,51 @@ +{{- printf "" | safeHTML }} + + + + {{ .Site.Params.bookid | default now.Unix }} + {{ .Lang }} + {{ .Site.Title }} + {{ .Site.Params.description }} + {{ .Site.Params.creator }} + {{ .Site.Params.creator }} + aut + {{ now.Format "2006-01-02T15:04:05Z" }} + {{ now.Format "2006-01-02T15:04:05 MST" }} + {{ .Site.Params.publisher }} + application/epub+zip + Text + {{ range .Site.Params.subject -}} + {{ . }} + {{ end -}} + {{ .Site.Params.audience }} + scrolled-doc + + + + + + + + + + + + + {{ partial "manifest.opf" . }} + + + + + + + + {{ partial "spine.opf" . }} + + + diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/_default/index.xhtml b/themes/hugo-darktable-docs-epub-theme/layouts/_default/index.xhtml new file mode 100644 index 0000000000..328064956f --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/_default/index.xhtml @@ -0,0 +1,21 @@ + + + + Darktable User Manual + {{ partial "css.html" . }} + + + +

Table of Contents

+ + + diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/_default/list.html b/themes/hugo-darktable-docs-epub-theme/layouts/_default/list.html new file mode 100644 index 0000000000..2e7add47ae --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/_default/list.html @@ -0,0 +1,23 @@ +{{ define "main" }} + +
+

{{ .Title }}

+ +
+ +{{ end }} diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/_default/single.html b/themes/hugo-darktable-docs-epub-theme/layouts/_default/single.html new file mode 100644 index 0000000000..beec1b4881 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/_default/single.html @@ -0,0 +1,15 @@ +{{ define "title" }}{{ .Title | markdownify }} | {{ .Site.Title }}{{ end }} +{{ define "main" }} +{{ $dateFormat := default "Mon Jan 2, 2006" (index .Site.Params "date_format") }} + +
+ +

+ {{ .Title | markdownify }} +

+ + {{ .Content }} + +
+ +{{ end }} diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/mimetype b/themes/hugo-darktable-docs-epub-theme/layouts/mimetype new file mode 100644 index 0000000000..57ef03f24a --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/mimetype @@ -0,0 +1 @@ +application/epub+zip \ No newline at end of file diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/partials/content_gen.html b/themes/hugo-darktable-docs-epub-theme/layouts/partials/content_gen.html new file mode 100644 index 0000000000..314fb6d0d8 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/partials/content_gen.html @@ -0,0 +1,20 @@ +
+ {{ with .Site.GetPage "/" }} + {{ range .Sections.ByWeight }} + {{/* We don't want a menu item for specific pages listed here */}} + {{ if (and (ne .Title "Posts") (ne .Title "Test Page")) }} +
+

+ {{ .Title }} +

+ {{ if gt (countwords .Content) 1 }} +
+ {{- .Content -}} +
+ {{ end }} + {{ partial "content_recursive.html" . }} +
+ {{ end }} + {{ end }} + {{ end }} +
diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/partials/content_recursive.html b/themes/hugo-darktable-docs-epub-theme/layouts/partials/content_recursive.html new file mode 100644 index 0000000000..828bacb6c5 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/partials/content_recursive.html @@ -0,0 +1,14 @@ +{{ $child_pages := union .Sections .Pages }} +{{ range $child_pages.ByWeight }} +
+

+ {{ .Title }} +

+ {{ if gt (countwords .Content) 1 }} +
+ {{- .Content -}} +
+ {{ end }} + {{ partial "content_recursive.html" . }} +
+{{ end }} diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/partials/cover-back.html b/themes/hugo-darktable-docs-epub-theme/layouts/partials/cover-back.html new file mode 100644 index 0000000000..3924ebb71f --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/partials/cover-back.html @@ -0,0 +1,8 @@ +
+
+ {{ .Site.Title }} +
+
+ {{ now.Format "January 2, 2006" }} +
+
diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/partials/cover-front.html b/themes/hugo-darktable-docs-epub-theme/layouts/partials/cover-front.html new file mode 100644 index 0000000000..d2bf43ea5b --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/partials/cover-front.html @@ -0,0 +1,5 @@ +
+
+ {{ .Site.Title }} +
+
diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/partials/css.html b/themes/hugo-darktable-docs-epub-theme/layouts/partials/css.html new file mode 100644 index 0000000000..383cd754cf --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/partials/css.html @@ -0,0 +1,5 @@ + + +{{ $options := (dict "targetPath" "style.css" "enableSourceMap" true) }} +{{ $style := resources.Get "sass/main.scss" | resources.ToCSS $options }} + diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/partials/head-meta.xhtml b/themes/hugo-darktable-docs-epub-theme/layouts/partials/head-meta.xhtml new file mode 100644 index 0000000000..eeb88a15d9 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/partials/head-meta.xhtml @@ -0,0 +1,3 @@ + +{{ block "title" . }}{{ .Site.Title }}{{ if .Title }} - {{ .Title }}{{ end }}{{ end }} + diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/partials/manifest.opf b/themes/hugo-darktable-docs-epub-theme/layouts/partials/manifest.opf new file mode 100644 index 0000000000..9a6544527a --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/partials/manifest.opf @@ -0,0 +1,14 @@ +{{- with .Site.GetPage "/" -}} +{{- template "manifest-children" (dict "Section" . "CurrentPage" .) -}} +{{- end -}} + +{{- define "manifest-children" -}}{{- /* (dict "Section" .Section "CurrentPage" .CurrentPage) */ -}} + {{- range .Section.Pages -}} + {{ if .IsSection }} + + {{ template "manifest-children" (dict "Section" . "CurrentPage" $.CurrentPage) }} + {{ else if and .IsPage .Content }} + + {{ end }} + {{- end -}} +{{- end -}} diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/partials/nav.ncx b/themes/hugo-darktable-docs-epub-theme/layouts/partials/nav.ncx new file mode 100644 index 0000000000..8ac7873082 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/partials/nav.ncx @@ -0,0 +1,34 @@ +{{- .Scratch.Set "i" 2 -}} +{{- with .Site.GetPage "/" -}} +{{- template "nav-children" (dict "Section" . "CurrentPage" .) -}} +{{- end -}} + +{{- define "nav-children" -}}{{- /* (dict "Section" .Section "CurrentPage" .CurrentPage) */ -}} + {{- range .Section.Pages -}} + {{ $i := ( $.CurrentPage.Scratch.Get "i" ) -}} + {{ if .IsSection }} + + + {{ .Title }} + + + {{ $i := ( $.CurrentPage.Scratch.Get "i" ) -}} + {{ $i = add $i 1 -}} + {{- $.CurrentPage.Scratch.Set "i" $i -}} + {{ template "nav-children" (dict "Section" . "CurrentPage" $.CurrentPage) }} + + {{ else if and .IsPage .Content }} + + + {{ .Title }} + + + + {{ $i := ( $.CurrentPage.Scratch.Get "i" ) -}} + {{ $i = add $i 1 -}} + {{- $.CurrentPage.Scratch.Set "i" $i -}} + {{ end }} + {{- end -}} +{{- end -}} diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/partials/nav.xhtml b/themes/hugo-darktable-docs-epub-theme/layouts/partials/nav.xhtml new file mode 100644 index 0000000000..c4139abf13 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/partials/nav.xhtml @@ -0,0 +1,21 @@ +{{- .Scratch.Set "i" 1 -}} +{{- with .Site.GetPage "/" -}} +{{- template "nav-nav-children" (dict "Section" . "CurrentPage" .) -}} +{{- end -}} + +{{- define "nav-nav-children" -}}{{- /* (dict "Section" .Section "CurrentPage" .CurrentPage) */ -}} + {{- range .Section.Pages -}} + {{ $i := ( $.CurrentPage.Scratch.Get "i" ) -}} + {{ if .IsSection }} +
  • + {{ .Title }} + {{ $i := ( $.CurrentPage.Scratch.Get "i" ) -}} +
      + {{ template "nav-nav-children" (dict "Section" . "CurrentPage" $.CurrentPage) }} +
    +
  • + {{ else if and .IsPage .Content }} +
  • {{ .Title }}
  • + {{ end }} + {{- end -}} +{{- end -}} diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/partials/spine.opf b/themes/hugo-darktable-docs-epub-theme/layouts/partials/spine.opf new file mode 100644 index 0000000000..bc77520177 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/partials/spine.opf @@ -0,0 +1,14 @@ +{{- with .Site.GetPage "/" -}} +{{- template "spine-children" (dict "Section" . "CurrentPage" .) -}} +{{- end -}} + +{{- define "spine-children" -}}{{- /* (dict "Section" .Section "CurrentPage" .CurrentPage) */ -}} + {{- range .Section.Pages -}} + {{ if .IsSection }} + + {{ template "spine-children" (dict "Section" . "CurrentPage" $.CurrentPage) }} + {{ else if and .IsPage .Content }} + + {{ end }} + {{- end -}} +{{- end -}} diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/partials/toc.html b/themes/hugo-darktable-docs-epub-theme/layouts/partials/toc.html new file mode 100644 index 0000000000..a8bc084738 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/partials/toc.html @@ -0,0 +1,8 @@ +
    +

    + {{ i18n "toc" }} +

    +
    + {{ partial "toc_gen.html" . }} +
    +
    diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/partials/toc_gen.html b/themes/hugo-darktable-docs-epub-theme/layouts/partials/toc_gen.html new file mode 100644 index 0000000000..5861990b55 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/partials/toc_gen.html @@ -0,0 +1,17 @@ +
      + {{ with .Site.GetPage "/" }} + {{ range .Sections.ByWeight }} + {{/* We don't want a menu item for specific pages listed here */}} + {{ if (and (ne .Title "Posts") (ne .Title "Test Page")) }} +
    • + + {{ .Title }} + + + {{ partial "toc_recursive.html" . }} +
    • + {{ end }} + {{ end }} + {{ end }} +
    diff --git a/themes/hugo-darktable-docs-epub-theme/layouts/partials/toc_recursive.html b/themes/hugo-darktable-docs-epub-theme/layouts/partials/toc_recursive.html new file mode 100644 index 0000000000..6092358b9d --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/layouts/partials/toc_recursive.html @@ -0,0 +1,11 @@ + {{ $child_pages := union .Sections .Pages }} +
      + {{ range $child_pages.ByWeight }} +
    • + + {{ .Title }} + + {{ partial "toc_recursive.html" . }} +
    • + {{ end }} +
    diff --git a/themes/hugo-darktable-docs-epub-theme/static/META-INF/container.xml b/themes/hugo-darktable-docs-epub-theme/static/META-INF/container.xml new file mode 100644 index 0000000000..6e11836876 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/static/META-INF/container.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/themes/hugo-darktable-docs-epub-theme/static/OEBPS/front-cover.html b/themes/hugo-darktable-docs-epub-theme/static/OEBPS/front-cover.html new file mode 100644 index 0000000000..37efd4a4d9 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/static/OEBPS/front-cover.html @@ -0,0 +1,7 @@ + + +
    + + diff --git a/themes/hugo-darktable-docs-epub-theme/static/OEBPS/front-cover.png b/themes/hugo-darktable-docs-epub-theme/static/OEBPS/front-cover.png new file mode 100644 index 0000000000000000000000000000000000000000..b54457a03999ede444f501f9a24d228e3a472648 GIT binary patch literal 38419 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 RO$YG@qM@RLsE0p@{67L1(l!79 literal 0 HcmV?d00001 diff --git a/themes/hugo-darktable-docs-epub-theme/static/mimetype b/themes/hugo-darktable-docs-epub-theme/static/mimetype new file mode 100644 index 0000000000..57ef03f24a --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/static/mimetype @@ -0,0 +1 @@ +application/epub+zip \ No newline at end of file diff --git a/themes/hugo-darktable-docs-epub-theme/theme.toml b/themes/hugo-darktable-docs-epub-theme/theme.toml new file mode 100644 index 0000000000..3dfbada0d6 --- /dev/null +++ b/themes/hugo-darktable-docs-epub-theme/theme.toml @@ -0,0 +1,15 @@ +# theme.toml template for a Hugo theme +# See https://github.com/gohugoio/hugoThemes#themetoml for an example + +name = "Hugo Darktable Docs Pdf Theme" +license = "MIT" +licenselink = "https://gitlab.com/pixlsus/hugo-darktable-docs-pdf-theme/blob/master/LICENSE" +description = "" +homepage = "https://gitlab.com/pixlsus/hugo-darktable-docs-pdf-theme" +tags = [] +features = [] +min_version = "0.41.0" + +[author] + name = "Mica Semrick" + homepage = "https://silentumbrella.com" diff --git a/themes/hugo-darktable-docs-pdf-theme b/themes/hugo-darktable-docs-pdf-theme deleted file mode 160000 index 1ca027b0bc..0000000000 --- a/themes/hugo-darktable-docs-pdf-theme +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1ca027b0bc73051ec1128dbbcba54691bae36828 diff --git a/themes/hugo-darktable-docs-pdf-theme/LICENSE b/themes/hugo-darktable-docs-pdf-theme/LICENSE new file mode 100644 index 0000000000..faff36ecad --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2020 YOUR_NAME_HERE + +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/hugo-darktable-docs-pdf-theme/assets/sass/main.scss b/themes/hugo-darktable-docs-pdf-theme/assets/sass/main.scss new file mode 100644 index 0000000000..91b2720202 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/assets/sass/main.scss @@ -0,0 +1,13 @@ +/* Override any bootstrap variables here before importing bootstrap itself */ +@import 'modules/fonts'; +@import 'modules/typography'; +@import 'modules/page'; +@import 'modules/cover-front'; +@import 'modules/cover-back'; +@import 'modules/body-page'; +@import 'modules/toc'; +@import 'modules/bookmarks'; +@import 'modules/numbering'; + +/* Theme customizations */ +@import 'modules/images'; diff --git a/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/body-page.scss b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/body-page.scss new file mode 100644 index 0000000000..fc28af21f5 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/body-page.scss @@ -0,0 +1,61 @@ +#body > .section { + page: body; +} + +#cover-front > .title { + string-set: front-cover-title content(); +} + +#body > .section > h1.title { + string-set: chapter content(); +} + +#body > .section > .section > h1.title { + string-set: section content(); +} + +@mixin border-top { + border-top: 1px solid gray; +} + +@mixin border-bottom { + border-bottom: 1px solid gray; +} + +@page body { + @include border-top; + @include border-bottom; + padding-top: 6px; + padding-bottom: 6px; + @top-left-corner { + content: ""; + } + @top-left { + content: string(chapter); + } + @top-center { + content: ""; + } + @top-right { + content: string(section); + } + @top-right-corner { + content: ""; + } + + @bottom-left-corner { + content: ""; + } + @bottom-left { + content: string(front-cover-title); + } + @bottom-center { + content: ""; + } + @bottom-right { + content: counter(page); + } + @bottom-right-corner { + content: ""; + } +} diff --git a/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/bookmarks.scss b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/bookmarks.scss new file mode 100644 index 0000000000..1fa501ff59 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/bookmarks.scss @@ -0,0 +1,42 @@ +.section { + .title { + bookmark-level: 1; + } + .content { + h1, + h2, + h3 { + bookmark-level: none; + } + } +} + +.section > .section { + .title { + bookmark-level: 2; + } +} + +.section > .section > .section { + .title { + bookmark-level: 3; + } +} + +.section > .section > .section > .section { + .title { + bookmark-level: 4; + } +} + +.section > .section > .section > .section > .section { + .title { + bookmark-level: 5; + } +} + +.section > .section > .section > .section > .section > .section { + .title { + bookmark-level: 6; + } +} diff --git a/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/cover-back.scss b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/cover-back.scss new file mode 100644 index 0000000000..166c50a0c4 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/cover-back.scss @@ -0,0 +1,40 @@ +#cover-back { + page: cover-back; + break-before: always; + text-align: center; + margin-top: 95%; +} + +@page cover-front { + @top-left-corner { + content: none; + } + @top-left { + content: none; + } + @top-center { + content: none; + } + @top-right { + content: none; + } + @top-right-corner { + content: none; + } + + @bottom-left-corner { + content: none; + } + @bottom-left { + content: none; + } + @bottom-center { + content: none; + } + @bottom-right { + content: none; + } + @bottom-right-corner { + content: none; + } +} diff --git a/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/cover-front.scss b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/cover-front.scss new file mode 100644 index 0000000000..202ef61426 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/cover-front.scss @@ -0,0 +1,55 @@ +#cover-front { + page: cover-front; + break-after: always; + padding-top: 35%; + height: 11in; + width: 8.5in; + .title { + text-align: center; + font-size: 48px; + line-height: 52px; + } + .title::before { + content: url(darktable-logo.svg); + display: block; + transform: scale(0.5); + margin: 0px auto; + margin-bottom: -10rem; + } +} + +@page cover-front { + margin: 0; + padding: 0; + @top-left-corner { + content: none; + } + @top-left { + content: none; + } + @top-center { + content: none; + } + @top-right { + content: none; + } + @top-right-corner { + content: none; + } + + @bottom-left-corner { + content: none; + } + @bottom-left { + content: none; + } + @bottom-center { + content: none; + } + @bottom-right { + content: none; + } + @bottom-right-corner { + content: none; + } +} diff --git a/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/fonts.scss b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/fonts.scss new file mode 100644 index 0000000000..b1272d9c44 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/fonts.scss @@ -0,0 +1,7 @@ +* { + font-family: sans-serif; +} + +pre, code { + font-family: monospace; +} diff --git a/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/images.scss b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/images.scss new file mode 100644 index 0000000000..ee110db79b --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/images.scss @@ -0,0 +1,39 @@ +img { + display: block; + max-width: 100%; +} + +.icon { + width: 25px !important; + display: inline; + vertical-align: middle; +} + +.inline { + display: inline; + vertical-align: middle; +} + +.w25 { + width: 24%; +} + +.w33 { + width: 33%; +} + +.w50 { + width: 48%; +} + +.w66 { + width: 66%; +} + +.w75 { + width: 72%; +} + +.w100 { + width: 100%; +} diff --git a/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/numbering.scss b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/numbering.scss new file mode 100644 index 0000000000..fd48aede3f --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/numbering.scss @@ -0,0 +1,45 @@ +// The counters for the sections and ToC are presented together to keep the numbering consistent. + +// Section 1 +#body > .section, +#toc-body > ul > li { + counter-increment: section-1; +} + +#body > .section > .title:before, +#toc-body > ul > li > a:before { + content: counter(section-1) ". "; +} + +// Section 2 +#body > .section > .section, +#toc-body > ul > li > ul > li { + counter-increment: section-2; +} + +#body > .section > .section > .title:before, +#toc-body > ul > li > ul > li > a:before { + content: counter(section-1) "." counter(section-2) ". "; +} + +// Section 3 +#body > .section > .section > .section, +#toc-body > ul > li > ul > li > ul > li { + counter-increment: section-3; +} + +#body > .section > .section > .section > .title:before, +#toc-body > ul > li > ul > li > ul > li > a:before { + content: counter(section-1) "." counter(section-2) "." counter(section-3) ". "; +} + +// Section 4 +#body > .section > .section > .section > .section, +#toc-body > ul > li > ul > li > ul > li > ul > li { + counter-increment: section-4; +} + +#body > .section > .section > .section > .section > .title:before, +#toc-body > ul > li > ul > li > ul > li > ul > li > a:before { + content: counter(section-1) "." counter(section-2) "." counter(section-3) "." counter(section-4) ". "; +} diff --git a/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/page.scss b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/page.scss new file mode 100644 index 0000000000..b7dc04cb93 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/page.scss @@ -0,0 +1,9 @@ +// Basic page definition + +@page { + size: letter portrait; + margin-top: 0.5in; + margin-bottom: 0.5in; + margin-right: 0.25in; + margin-left: 0.25in; +} diff --git a/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/toc.scss b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/toc.scss new file mode 100644 index 0000000000..b175c23783 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/toc.scss @@ -0,0 +1,24 @@ +#toc { + break-after: always; + .title { + font-size: 2.323em; + } + #toc-body { + columns: 2; + ul { + list-style-type: none; + padding-left: 15px !important; + li { + padding-top: 1px; + padding-bottom: 2px; + a { + color: black; + text-decoration: none; + } + a:after { + content: " " target-counter(attr(href), page); + } + } + } + } +} diff --git a/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/typography.scss b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/typography.scss new file mode 100644 index 0000000000..ab17fd32ba --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/assets/sass/modules/typography.scss @@ -0,0 +1,139 @@ +* { + widows: 5; + orphans: 5; + font-size: 12px; + line-height: 1.2em; +} + +#body { + + // The heading sizes for nested sections + + // Nesting level 1 + .section { + break-after: always; + .title { + font-size: 2.323em; + } + .content{ + h1, + h2, + h3, + h4, + h5, + h6 { + color: red; + } + } + } // End section 1 + + // Nesting level 2 + .section > .section { + break-after: auto; + .title { + font-size: 2.178em; + font-weight: normal; + break-after: avoid; + } + .content{ + h1, h2, h3 { + color: black; + font-weight: normal; + } + h1 { + font-size: 2.041em; + } + h2 { + font-size: 1.913em; + } + h3 { + font-size: 1.793em; + } + } + } // End Nesting level 2 + + // Nesting level 3 + .section > .section > .section { + break-after: auto; + .title { + font-size: 1.68em; + font-weight: normal; + break-after: avoid; + } + .content{ + h1, h2, h3 { + color: black; + font-weight: normal; + } + h1 { + font-size: 1.575em; + } + h2 { + font-size: 1.476em; + } + h3 { + font-size: 1.383em; + } + } + } // End section 3 + + + // Nesting level 4 + .section > .section > .section > .section { + break-after: auto; + .title { + font-size: 1.2961em; + font-weight: normal; + break-after: avoid; + + } + .content{ + h1, h2, h3 { + color: black; + font-weight: normal; + } + h1 { + font-size: 1.215em; + } + h2 { + font-size: 1.138em; + } + h3 { + font-size: 1.067em; + } + } + } // End section 4 + + + dt { + font-weight: bold; + break-after: avoid; + margin-top: 2px; + margin-bottom: 3px; + } + + dd { + margin-left: 10px; + margin-top: 2px; + margin-bottom: 3px; + } + + img { + max-width: 100%; + max-height: 100%; + } + + p, li { + break-before: avoid; + } + + h1, h2, h3, h4, h5, h6 { + break-after: avoid; + } + +} // End #body + +.webonly +{ + display: none; +} diff --git a/themes/hugo-darktable-docs-pdf-theme/i18n/en.yaml b/themes/hugo-darktable-docs-pdf-theme/i18n/en.yaml new file mode 100644 index 0000000000..435bd3b903 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/i18n/en.yaml @@ -0,0 +1,8 @@ +- id: toc + translation: "Table of Contents" + +- id: copyright + translation: "Copyright" + +- id: copyrightEntity + translation: "Someone or something" diff --git a/themes/hugo-darktable-docs-pdf-theme/i18n/pt_br.yaml b/themes/hugo-darktable-docs-pdf-theme/i18n/pt_br.yaml new file mode 100644 index 0000000000..d66fc0fb88 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/i18n/pt_br.yaml @@ -0,0 +1,8 @@ +- id: toc + translation: "Índice" + +- id: copyright + translation: "Copyright" + +- id: copyrightEntity + translation: "Alguém ou alguma coisa" diff --git a/themes/hugo-darktable-docs-pdf-theme/layouts/_default/_markup/render-heading.html b/themes/hugo-darktable-docs-pdf-theme/layouts/_default/_markup/render-heading.html new file mode 100644 index 0000000000..02af2f905f --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/layouts/_default/_markup/render-heading.html @@ -0,0 +1 @@ +{{ .Text | safeHTML }} diff --git a/themes/hugo-darktable-docs-pdf-theme/layouts/_default/_markup/render-image.html b/themes/hugo-darktable-docs-pdf-theme/layouts/_default/_markup/render-image.html new file mode 100644 index 0000000000..4c3f02ce83 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/layouts/_default/_markup/render-image.html @@ -0,0 +1,17 @@ +{{ $link := string .Destination }} +{{ $imgBase := path.Base .Destination }} +{{ $Scratch := newScratch }} +{{ $Scratch.Set "enLink" .Page.RelPermalink }} + +{{ $classSplit := split $imgBase "#" }} + +{{ if hasPrefix $link "http" }} + {{ .Text }} +{{ else }} + {{ range .Page.Translations }} + {{ if eq .Language.LanguageName "English" }} + {{ $Scratch.Set "enLink" .RelPermalink }} + {{ end }} + {{ end }} + {{ .Text }} +{{ end }} diff --git a/themes/hugo-darktable-docs-pdf-theme/layouts/_default/_markup/render-link.html b/themes/hugo-darktable-docs-pdf-theme/layouts/_default/_markup/render-link.html new file mode 100644 index 0000000000..c20c7ef38e --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/layouts/_default/_markup/render-link.html @@ -0,0 +1,17 @@ +{{ $link := strings.Replace .Destination "_index.md" "" }} +{{ $isRemote := strings.HasPrefix $link "http" }} +{{ $isAnchored := strings.HasPrefix $link "#" }} +{{- if not $isRemote -}} +{{ $url := urls.Parse $link }} +{{- if $url.Path -}} +{{ $fragment := "" }} +{{- with $url.Fragment }}{{ $fragment = printf "#%s" . }}{{ end -}} +{{- with .Page.GetPage $url.Path }}{{ $link = printf "%s%s" .Page.File.UniqueID $fragment }}{{ end }}{{ end -}} +{{- end -}} +{{ if $isRemote }} + {{ .Text | safeHTML }} +{{ else if $isAnchored }} + {{ .Text | safeHTML }} +{{ else }} +{{ .Text | safeHTML }} +{{ end }} diff --git a/themes/hugo-darktable-docs-pdf-theme/layouts/_default/baseof.html b/themes/hugo-darktable-docs-pdf-theme/layouts/_default/baseof.html new file mode 100644 index 0000000000..eb31991d7b --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/layouts/_default/baseof.html @@ -0,0 +1,19 @@ + + + + {{ partial "head-meta.html" . }} + {{ partial "css.html" . }} + + + {{ partial "cover-front.html" . }} + + {{ partial "toc.html" . }} + + {{ block "main" .}} + + {{ end }} + + {{ partial "cover-back.html" . }} + + + diff --git a/themes/hugo-darktable-docs-pdf-theme/layouts/_default/list.html b/themes/hugo-darktable-docs-pdf-theme/layouts/_default/list.html new file mode 100644 index 0000000000..35c8157c31 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/layouts/_default/list.html @@ -0,0 +1,23 @@ +{{ define "main" }} + +
    +

    {{ .Title }}

    + +
    + +{{ end }} diff --git a/themes/hugo-darktable-docs-pdf-theme/layouts/_default/single.html b/themes/hugo-darktable-docs-pdf-theme/layouts/_default/single.html new file mode 100644 index 0000000000..6a981534e2 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/layouts/_default/single.html @@ -0,0 +1,25 @@ +{{ define "title" }}{{ .Title | markdownify }} | {{ .Site.Title }}{{ end }} +{{ define "main" }} +{{ $dateFormat := default "Mon Jan 2, 2006" (index .Site.Params "date_format") }} + + + + +{{ end }} diff --git a/themes/hugo-darktable-docs-pdf-theme/layouts/index.html b/themes/hugo-darktable-docs-pdf-theme/layouts/index.html new file mode 100644 index 0000000000..f557eab79b --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/layouts/index.html @@ -0,0 +1,15 @@ +{{ define "title" }}{{ .Title | markdownify }} | {{ .Site.Title }}{{ end }} +{{ define "main" }} +{{ $dateFormat := default "Mon Jan 2, 2006" (index .Site.Params "date_format") }} + + + + +{{ .Content }} + +{{ partial "content_gen.html" . }} + + + + +{{ end }} diff --git a/themes/hugo-darktable-docs-pdf-theme/layouts/partials/content_gen.html b/themes/hugo-darktable-docs-pdf-theme/layouts/partials/content_gen.html new file mode 100644 index 0000000000..314fb6d0d8 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/layouts/partials/content_gen.html @@ -0,0 +1,20 @@ +
    + {{ with .Site.GetPage "/" }} + {{ range .Sections.ByWeight }} + {{/* We don't want a menu item for specific pages listed here */}} + {{ if (and (ne .Title "Posts") (ne .Title "Test Page")) }} +
    +

    + {{ .Title }} +

    + {{ if gt (countwords .Content) 1 }} +
    + {{- .Content -}} +
    + {{ end }} + {{ partial "content_recursive.html" . }} +
    + {{ end }} + {{ end }} + {{ end }} +
    diff --git a/themes/hugo-darktable-docs-pdf-theme/layouts/partials/content_recursive.html b/themes/hugo-darktable-docs-pdf-theme/layouts/partials/content_recursive.html new file mode 100644 index 0000000000..828bacb6c5 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/layouts/partials/content_recursive.html @@ -0,0 +1,14 @@ +{{ $child_pages := union .Sections .Pages }} +{{ range $child_pages.ByWeight }} +
    +

    + {{ .Title }} +

    + {{ if gt (countwords .Content) 1 }} +
    + {{- .Content -}} +
    + {{ end }} + {{ partial "content_recursive.html" . }} +
    +{{ end }} diff --git a/themes/hugo-darktable-docs-pdf-theme/layouts/partials/cover-back.html b/themes/hugo-darktable-docs-pdf-theme/layouts/partials/cover-back.html new file mode 100644 index 0000000000..3924ebb71f --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/layouts/partials/cover-back.html @@ -0,0 +1,8 @@ +
    +
    + {{ .Site.Title }} +
    +
    + {{ now.Format "January 2, 2006" }} +
    +
    diff --git a/themes/hugo-darktable-docs-pdf-theme/layouts/partials/cover-front.html b/themes/hugo-darktable-docs-pdf-theme/layouts/partials/cover-front.html new file mode 100644 index 0000000000..d2bf43ea5b --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/layouts/partials/cover-front.html @@ -0,0 +1,5 @@ +
    +
    + {{ .Site.Title }} +
    +
    diff --git a/themes/hugo-darktable-docs-pdf-theme/layouts/partials/css.html b/themes/hugo-darktable-docs-pdf-theme/layouts/partials/css.html new file mode 100644 index 0000000000..961c878925 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/layouts/partials/css.html @@ -0,0 +1,5 @@ + + +{{ $options := (dict "targetPath" "style.css" "enableSourceMap" true) }} +{{ $style := resources.Get "sass/main.scss" | resources.ToCSS $options | minify | fingerprint }} + diff --git a/themes/hugo-darktable-docs-pdf-theme/layouts/partials/head-meta.html b/themes/hugo-darktable-docs-pdf-theme/layouts/partials/head-meta.html new file mode 100644 index 0000000000..eeb88a15d9 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/layouts/partials/head-meta.html @@ -0,0 +1,3 @@ + +{{ block "title" . }}{{ .Site.Title }}{{ if .Title }} - {{ .Title }}{{ end }}{{ end }} + diff --git a/themes/hugo-darktable-docs-pdf-theme/layouts/partials/toc.html b/themes/hugo-darktable-docs-pdf-theme/layouts/partials/toc.html new file mode 100644 index 0000000000..a8bc084738 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/layouts/partials/toc.html @@ -0,0 +1,8 @@ +
    +

    + {{ i18n "toc" }} +

    +
    + {{ partial "toc_gen.html" . }} +
    +
    diff --git a/themes/hugo-darktable-docs-pdf-theme/layouts/partials/toc_gen.html b/themes/hugo-darktable-docs-pdf-theme/layouts/partials/toc_gen.html new file mode 100644 index 0000000000..5861990b55 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/layouts/partials/toc_gen.html @@ -0,0 +1,17 @@ +
      + {{ with .Site.GetPage "/" }} + {{ range .Sections.ByWeight }} + {{/* We don't want a menu item for specific pages listed here */}} + {{ if (and (ne .Title "Posts") (ne .Title "Test Page")) }} +
    • + + {{ .Title }} + + + {{ partial "toc_recursive.html" . }} +
    • + {{ end }} + {{ end }} + {{ end }} +
    diff --git a/themes/hugo-darktable-docs-pdf-theme/layouts/partials/toc_recursive.html b/themes/hugo-darktable-docs-pdf-theme/layouts/partials/toc_recursive.html new file mode 100644 index 0000000000..6092358b9d --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/layouts/partials/toc_recursive.html @@ -0,0 +1,11 @@ + {{ $child_pages := union .Sections .Pages }} +
      + {{ range $child_pages.ByWeight }} +
    • + + {{ .Title }} + + {{ partial "toc_recursive.html" . }} +
    • + {{ end }} +
    diff --git a/themes/hugo-darktable-docs-pdf-theme/theme.toml b/themes/hugo-darktable-docs-pdf-theme/theme.toml new file mode 100644 index 0000000000..3dfbada0d6 --- /dev/null +++ b/themes/hugo-darktable-docs-pdf-theme/theme.toml @@ -0,0 +1,15 @@ +# theme.toml template for a Hugo theme +# See https://github.com/gohugoio/hugoThemes#themetoml for an example + +name = "Hugo Darktable Docs Pdf Theme" +license = "MIT" +licenselink = "https://gitlab.com/pixlsus/hugo-darktable-docs-pdf-theme/blob/master/LICENSE" +description = "" +homepage = "https://gitlab.com/pixlsus/hugo-darktable-docs-pdf-theme" +tags = [] +features = [] +min_version = "0.41.0" + +[author] + name = "Mica Semrick" + homepage = "https://silentumbrella.com" diff --git a/themes/hugo-darktable-docs-theme b/themes/hugo-darktable-docs-theme deleted file mode 160000 index 4677c7d8b2..0000000000 --- a/themes/hugo-darktable-docs-theme +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4677c7d8b25cd0a164d596401a049b03d635f7e5 diff --git a/themes/hugo-darktable-docs-theme/.gitignore b/themes/hugo-darktable-docs-theme/.gitignore new file mode 100644 index 0000000000..c2022ca816 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/.gitignore @@ -0,0 +1,2 @@ +.directory +*/node_modules/* \ No newline at end of file diff --git a/themes/hugo-darktable-docs-theme/LICENSE b/themes/hugo-darktable-docs-theme/LICENSE new file mode 100644 index 0000000000..faff36ecad --- /dev/null +++ b/themes/hugo-darktable-docs-theme/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2020 YOUR_NAME_HERE + +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/hugo-darktable-docs-theme/README.md b/themes/hugo-darktable-docs-theme/README.md new file mode 100644 index 0000000000..ba78c599d1 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/README.md @@ -0,0 +1,28 @@ +# hugo-darktable-docs-theme + +A bootstrap v4 theme for darktable's documentation. + +This theme was designed to run using only `hugo` and `yarn`. Javascript and SCSS are compiled using hugo's pipeline feature. + +## Fetching assests + +To fetch the assests: + +``` +cd assets +yarn install +``` + +## Site Search + +`lunr.js` in the bundle to provide search functionality. In the `/content` folder you need to add a search page: + +``` +--- +title: 'Search' +layout: 'search' +menu: 'main' +--- +``` + +The important bit is `layout: 'search'`, which calls the search template. diff --git a/themes/hugo-darktable-docs-theme/archetypes/default.md b/themes/hugo-darktable-docs-theme/archetypes/default.md new file mode 100644 index 0000000000..ac36e06227 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/archetypes/default.md @@ -0,0 +1,2 @@ ++++ ++++ diff --git a/themes/hugo-darktable-docs-theme/assets/js/app.js b/themes/hugo-darktable-docs-theme/assets/js/app.js new file mode 100644 index 0000000000..0e2d2304c3 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/assets/js/app.js @@ -0,0 +1,204 @@ +var lunrIndex; +var pagesIndex; +var pagesMap = {}; +var SEARCH_RESULT_LIMIT = 20; +var SEARCH_RESULT_EXCERPT_LENGTH = 160; + +function sanitizeRegex(src) { + return src.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); +} + +// Initialize lunrjs using our generated index file +function initLunr() { + var request = new XMLHttpRequest(); + request.open('GET', indexURL, true); + + request.onload = function () { + if (request.status >= 200 && request.status < 400) { + pagesIndex = JSON.parse(request.responseText); + console.log('index:', pagesIndex); + + pagesIndex.forEach(function (page) { + pagesMap[page.href] = page; + }); + + // Set up lunrjs by declaring the fields we use + // Also provide their boost level for the ranking + lunrIndex = lunr(function () { + this.pipeline.remove(lunr.stemmer); + this.searchPipeline.remove(lunr.stemmer); + + this.field('title', { boost: 5 }); + this.field('content', { boost: 2 }); + this.field('tags', { boost: 1 }); + + // ref is the result item identifier (I chose the page URL) + this.ref('href'); + this.add({ field: 'test', text: 'hello' }); + for (var i = 0; i < pagesIndex.length; ++i) { + this.add(pagesIndex[i]); + } + }); + } else { + var err = textStatus + ', ' + error; + console.error('Error getting Hugo index flie:', err); + } + }; + + request.send(); +} + +function search(queryString, limit) { + var queryTerms = lunr.tokenizer(queryString); + var searchResults = lunrIndex.query(function (query) { + queryTerms.forEach(function (queryTerm) { + // look for an exact match and apply a large positive boost + query.term(queryTerm, { + usePipeline: true, + boost: 100, + }); + + // look for terms that start or end with queryTerm and apply a medium boost + query.term(queryTerm, { + usePipeline: false, + boost: 5, + wildcard: + lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING, + }); + + // look for terms that match with an edit distance of 1 and apply a small boost + query.term(queryTerm, { + usePipeline: false, + editDistance: 1, + boost: 1, + }); + }); + }); + + // Sort results by relevance + searchResults.sort((a, b) => b.score - a.score); + + searchResults = searchResults.slice(0, limit); + + return searchResults; +} + +function highlightKeyword(sourceText, keyword, tag) { + if (!tag) tag = 'mark'; + + return sourceText.replace(new RegExp(keyword, 'ig'), function (match) { + return '<' + tag + '>' + match + ''; + }); +} + +function getTextExcerpt(text, keyword, length) { + if (!length) length = 80; + + var index = text.search(new RegExp(keyword, 'ig')); + var excerpt = text; + + if (index === -1) excerpt = text.substring(0, length) + '...'; + + var halfLength = Math.round(length / 2); + var excerpt = text.substring( + Math.max(0, index - halfLength), + Math.min(text.length, index + halfLength) + ); + + if (index - halfLength > 0) excerpt = '...' + excerpt; + if (index + halfLength < text.length) excerpt = excerpt + '...'; + + return excerpt; +} + +function renderResults(results) { + var searchResults = document.getElementById('search-results'); + var $searchResults = $(searchResults); + + if (!results.length) { + $searchResults.hide(); + return; + } + + var resultsFragment = document.createDocumentFragment(); + // Only show the first twenty results + results.forEach(function (result) { + var page = pagesMap[result.ref]; + var matchedTerms = Object.keys(result.matchData.metadata) + .map(sanitizeRegex) + .join('|'); + var link = document.createElement('a'); + var title = document.createElement('b'); + var content = document.createElement('small'); + + link.className = 'search-results__item'; + title.className = 'search-results__title'; + content.className = 'search-results__content'; + + link.href = page.href; + title.innerHTML = highlightKeyword(page.title, matchedTerms); + content.innerHTML = highlightKeyword( + getTextExcerpt( + page.content, + matchedTerms, + SEARCH_RESULT_EXCERPT_LENGTH + ), + matchedTerms + ); + + link.appendChild(title); + link.appendChild(content); + + resultsFragment.appendChild(link); + }); + searchResults.appendChild(resultsFragment); + + var header = document.querySelector('header.navbar'); + $searchResults.css('top', header.clientHeight); + $searchResults.css('height', window.innerHeight - header.clientHeight); + $searchResults.show(); +} + +function handleSearchInput() { + var $searchInput = $('#search-input'); + var $searchResults = $('#search-results'); + var query = $searchInput.val(); + + //trigger a search if a search term longer than two characters has been entered + $searchResults.empty().hide(); + + if (query.length < 2) { + return; + } + + renderResults(search(query, SEARCH_RESULT_LIMIT)); +} + +$(document).ready(function () { + var $searchInput = $('#search-input'); + var $searchResults = $('#search-results'); + + $searchResults.hide(); + $searchInput.focus(function () { + //load index file if it's not already been loaded + if (!lunrIndex) { + initLunr(); + } + }); + + $searchInput.keydown(function (e) { + if (e.keyCode === 27) { + $searchResults.hide(); + $searchInput.val(''); + } + + if (e.keyCode === 13) { + //enter key pressed - go to first search result if it exists + e.preventDefault(); + + $('#search-results a').first().get(0).click(); + } + }); + + $searchInput.on('input', handleSearchInput); +}); diff --git a/themes/hugo-darktable-docs-theme/assets/package.json b/themes/hugo-darktable-docs-theme/assets/package.json new file mode 100644 index 0000000000..688b31a1bf --- /dev/null +++ b/themes/hugo-darktable-docs-theme/assets/package.json @@ -0,0 +1,20 @@ +{ + "name": "hugo-bootstrap-bare", + "version": "1.0.0", + "description": "A minimal bootstrap theme for hugo.", + "repository": { + "type": "git", + "url": "https://gitlab.com/patdavid/hugo-bootstrap-bare" + }, + "keywords": "hugo bootstrap", + "author": "PIXLS.US community", + "license": "MIT", + "private": true, + "dependencies": { + "bootstrap": "^4.3.1", + "fork-awesome": "^1.1.7", + "jquery": "^3.4.1", + "lunr": "^2.3.9", + "popper.js": "^1.15.0" + } +} diff --git a/themes/hugo-darktable-docs-theme/assets/sass/main.scss b/themes/hugo-darktable-docs-theme/assets/sass/main.scss new file mode 100644 index 0000000000..cd146000db --- /dev/null +++ b/themes/hugo-darktable-docs-theme/assets/sass/main.scss @@ -0,0 +1,17 @@ +/* Override any bootstrap variables here before importing bootstrap itself */ + +@import 'modules/variables'; + +/* Import bootstrap's sass */ +@import 'bootstrap'; + +/* Import fork-awesome */ +@import 'fork-awesome'; + +/* Custom SASS imports */ + +@import 'modules/typography'; +@import 'modules/nav'; +@import 'modules/body'; +@import 'modules/images'; +@import 'modules/print'; diff --git a/themes/hugo-darktable-docs-theme/assets/sass/modules/body.scss b/themes/hugo-darktable-docs-theme/assets/sass/modules/body.scss new file mode 100644 index 0000000000..4016778695 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/assets/sass/modules/body.scss @@ -0,0 +1,100 @@ +body, .card { + background-color: #CECECE; +} + +.content { + padding-left: 13%; + padding-right: 13%; + padding-top: 1rem; + a { + text-decoration: underline; + background-color: transparent; + } +} + +@include media-breakpoint-up(md) { + .content { + top: 4rem; + display: block; + position: sticky; + max-height: calc(100vh - 4em); + overflow-y: auto; + z-index: 1000; + } +} + +.next, .prev { + display: block; +} + +.next { + text-align: left; +} + +.prev { + text-align: right; +} + +.crumbs { + margin-bottom: 0.5rem; + text-align: center; + .crumb { + display: inline; + } +} + +a { + color: #444; +} + +section,article { + margin-top: 2.5rem; + margin-bottom: 2.5rem; +} + +.search-results { + position: absolute; + right: 0; + bottom: 0; + min-width: 20%; + background-color: white; + z-index: 1001; + display: none; + max-width: 100%; + width: 450px; + overflow-y: scroll; + + @extend .list-group; + @extend .shadow; + + &__item { + @extend .list-group-item; + @extend .list-group-item-action; + + position: relative; + display: block; + cursor: pointer; + line-height: 1.4rem; + + &:hover { + text-decoration: none + } + } + + &__title { + display: block; + @extend .mb-1; + } + + &__content { + @extend .mb-1; + + padding: 0; + margin: 0; + } + + mark { + padding: 0; + border-bottom: 2px solid red; + } +} diff --git a/themes/hugo-darktable-docs-theme/assets/sass/modules/images.scss b/themes/hugo-darktable-docs-theme/assets/sass/modules/images.scss new file mode 100644 index 0000000000..a712ea488a --- /dev/null +++ b/themes/hugo-darktable-docs-theme/assets/sass/modules/images.scss @@ -0,0 +1,37 @@ +img { + display: block; + max-width: 100%; +} + +.icon { + width: 30px !important; + display: inline; +} + +.inline { + display: inline; +} + +.w25 { + width: 24%; +} + +.w33 { + width: 33%; +} + +.w50 { + width: 48%; +} + +.w66 { + width: 66%; +} + +.w75 { + width: 72%; +} + +.w100 { + width: 100%; +} diff --git a/themes/hugo-darktable-docs-theme/assets/sass/modules/nav.scss b/themes/hugo-darktable-docs-theme/assets/sass/modules/nav.scss new file mode 100644 index 0000000000..355899a1f7 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/assets/sass/modules/nav.scss @@ -0,0 +1,36 @@ +.translation-icon { + display: inline !important; +} + +.navigation { + padding-top: 1rem; + + ul { + padding-left: 0px; + list-style-type: none; + ul { + padding-left: 20px; + + } + } + +} + +.toggle, .no-toggle { + width: 1rem; +} + +@include media-breakpoint-up(md) { + .navigation { + top: 4rem; + display: block; + position: sticky; + max-height: calc(100vh - 4em); + overflow-y: auto; + z-index: 1000; + } +} + +.active { + font-weight: bold; +} diff --git a/themes/hugo-darktable-docs-theme/assets/sass/modules/print.scss b/themes/hugo-darktable-docs-theme/assets/sass/modules/print.scss new file mode 100644 index 0000000000..adbc5b5b80 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/assets/sass/modules/print.scss @@ -0,0 +1,67 @@ +@media print { + + @page { margin: 0.25in } + + body { + background-color: #fff; + color: #000; + } + + .content { + width: 100%; + max-width: 100%; + flex: 0 0 100%; + margin-left: 0px; + margin-right: 0px; + } + + .navigation, .crumbs, .prev-next { + display: none; + } + + pre, code { + padding: 10px; + border-radius: 10px; + } + + a { + page-break-inside:avoid + } + blockquote { + page-break-inside: avoid; + } + h1, h2, h3, h4, h5, h6 { + page-break-after:avoid; + page-break-inside:avoid + } + img { + page-break-inside:avoid; + page-break-after:avoid; + } + table, pre { + page-break-inside:avoid; + } + ul, ol, dl { + page-break-before:avoid; + } + + a { + page-break-inside:avoid; + } + + a[href^=http]:after { + content:" <" attr(href) "> "; + } + + a:after > img { + content: ""; + } + + a[href^="#"]:after { + content: ""; + } + + a:not(:local-link):after { + content:" <" attr(href) "> "; + } +} diff --git a/themes/hugo-darktable-docs-theme/assets/sass/modules/typography.scss b/themes/hugo-darktable-docs-theme/assets/sass/modules/typography.scss new file mode 100644 index 0000000000..030638dc76 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/assets/sass/modules/typography.scss @@ -0,0 +1,148 @@ +// Major Second typographical rhythm from https://type-scale.com/ + +html { + font-size: 100%; /*16px*/ +} + +body { + background-color: white; + font-family: 'Fira Sans', sans-serif; + font-weight: 400; + line-height: 1.65; + color: #333; +} + +pre, code, kbd { + font-family: 'Fira Mono', monospace; + font-size: 0.9em; + color: navy; +} + +p { + margin-bottom: 1rem; + margin-top: 1rem; +} + +h1, h2, h3, h4, h5 { + margin: 2.0rem 0 1.0rem; + font-family: 'Fira Sans', sans-serif; + font-weight: 400; + line-height: 1.15; + text-indent: -2.5rem; +} + +h1.title { + margin-top: 0; + margin-left: 2.5rem; + margin-bottom: 2rem; + font-size: 2.8em; +} + +h1 { + font-size: 2.2em; +} + +h1+h2 { + margin-top: 0; +} + +h2 { + font-size: 1.66em; +} + +h2+h3 { + margin-top: 0; +} + +h3 { + + font-size: 1.333em; +} + +h4, +h5, +h6 { + color: $red; + :before { + content: "We only allow H1, H2, or H3 headings in body content." + } +} + +small, .text_small { + font-size: 0.889em; +} + +dd, pre { + margin-left: 20px; +} + +dt { + margin-top: 1rem; +} + +ul { + margin-top: 0; + margin-bottom: 0; +} + +article ul li, +article ul li p, +dd p { + margin-top: 0.7rem; + margin-bottom: 0.7rem; +} + +h1 a:link, +h2 a:link, +h3 a:link { + opacity: 0; + font-size: 1.33rem; + color: dimgrey; + text-decoration: none; + width: 2.5rem; + display: inline-block; + vertical-align: middle; + text-indent: 0; +} + +h1:hover a, +h2:hover a, +h3:hover a +{ + opacity: 1; +} + +.toc ul +{ + list-style: none; + padding-left: 0; + margin-left: 0; +} + +.toc li +{ + margin-top: 0; + margin-bottom: 0; + padding-left: 2em; + margin-left: 0; +} + +h3.translations_head +{ + border-top: 1px solid black; + padding-top: 1em; + margin-top: 2em; + margin-left: 2.5rem; +} + +.translations li +{ + line-height: 1.1rem; + font-style: italic; +} + +.translations +{ + margin: 0; + padding-left: 1.5rem; +} diff --git a/themes/hugo-darktable-docs-theme/assets/sass/modules/variables.scss b/themes/hugo-darktable-docs-theme/assets/sass/modules/variables.scss new file mode 100644 index 0000000000..d390be5ad0 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/assets/sass/modules/variables.scss @@ -0,0 +1,18 @@ +// Variables are taken from bootstrap's _variables.scss file + +// Color system + +$white: #fff !default; +$gray-100: #f8f9fa !default; +$gray-200: #e9ecef !default; +$gray-300: #dee2e6 !default; +$gray-400: #ced4da !default; +$gray-500: #adb5bd !default; +$gray-600: #6c757d !default; +$gray-700: #495057 !default; +$gray-800: #343a40 !default; +$gray-900: #212529 !default; +$black: #000 !default; + + +$code-color: $black; diff --git a/themes/hugo-darktable-docs-theme/assets/yarn.lock b/themes/hugo-darktable-docs-theme/assets/yarn.lock new file mode 100644 index 0000000000..b1958a2f9f --- /dev/null +++ b/themes/hugo-darktable-docs-theme/assets/yarn.lock @@ -0,0 +1,28 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +bootstrap@^4.3.1: + version "4.5.3" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.5.3.tgz#c6a72b355aaf323920be800246a6e4ef30997fe6" + integrity sha512-o9ppKQioXGqhw8Z7mah6KdTYpNQY//tipnkxppWhPbiSWdD+1raYsnhwEZjkTHYbGee4cVQ0Rx65EhOY/HNLcQ== + +fork-awesome@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/fork-awesome/-/fork-awesome-1.1.7.tgz#1427da1cac3d1713046ee88427e5fcecb9501d21" + integrity sha512-IHI7XCSXrKfUIWslse8c/PaaVDT1oBaYge+ju40ihL2ooiQeBpTr4wvIXhgTd2NuhntlvX+M5jYHAPTzNlmv0g== + +jquery@^3.4.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.1.tgz#d7b4d08e1bfdb86ad2f1a3d039ea17304717abb5" + integrity sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg== + +lunr@^2.3.9: + version "2.3.9" + resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" + integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== + +popper.js@^1.15.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" + integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== diff --git a/themes/hugo-darktable-docs-theme/i18n/en-us.yaml b/themes/hugo-darktable-docs-theme/i18n/en-us.yaml new file mode 100644 index 0000000000..702ff2e9f8 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/i18n/en-us.yaml @@ -0,0 +1,20 @@ +- id: translations + translation: "Translations" + +- id: copyright + translation: "Copyright" + +- id: copyrightEntity + translation: "Someone or something" + +- id: search + translation: "Search" + +- id: results + translation: "Results" + +- id: current + translation: "(Current)" + +- id: table-of-contents + translation: "Table of Contents" diff --git a/themes/hugo-darktable-docs-theme/i18n/pt-br.yaml b/themes/hugo-darktable-docs-theme/i18n/pt-br.yaml new file mode 100644 index 0000000000..457fd9c0c5 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/i18n/pt-br.yaml @@ -0,0 +1,20 @@ +- id: translations + translation: "Traduções" + +- id: copyright + translation: "Copyright" + +- id: copyrightEntity + translation: "Alguém ou alguma coisa" + +- id: search + translation: "Pesquisar" + +- id: results + translation: "Resultados" + +- id: current + translation: "(Atual)" + +- id: table-of-contents + translation: "Índice" diff --git a/themes/hugo-darktable-docs-theme/layouts/404.html b/themes/hugo-darktable-docs-theme/layouts/404.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/themes/hugo-darktable-docs-theme/layouts/_default/_markup/render-heading.html b/themes/hugo-darktable-docs-theme/layouts/_default/_markup/render-heading.html new file mode 100644 index 0000000000..5d9a744015 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/_default/_markup/render-heading.html @@ -0,0 +1 @@ +🔗{{ .Text | safeHTML }} diff --git a/themes/hugo-darktable-docs-theme/layouts/_default/_markup/render-image.html b/themes/hugo-darktable-docs-theme/layouts/_default/_markup/render-image.html new file mode 100644 index 0000000000..5034d4bc9e --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/_default/_markup/render-image.html @@ -0,0 +1,17 @@ +{{ $link := string .Destination }} +{{ $imgBase := path.Base .Destination }} +{{ $Scratch := newScratch }} +{{ $Scratch.Set "enLink" .Page.RelPermalink }} + +{{ $classSplit := split $imgBase "#" }} + +{{ if hasPrefix $link "http" }} +{{ .Text }} +{{ else }} +{{ range .Page.Translations }} + {{ if eq .Language.LanguageName "English" }} + {{ $Scratch.Set "enLink" .RelPermalink }} + {{ end }} +{{ end }} +{{ .Text }} +{{ end }} diff --git a/themes/hugo-darktable-docs-theme/layouts/_default/_markup/render-link.html b/themes/hugo-darktable-docs-theme/layouts/_default/_markup/render-link.html new file mode 100644 index 0000000000..d3386785b6 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/_default/_markup/render-link.html @@ -0,0 +1,20 @@ +{{ $link := strings.Replace .Destination "_index.md" "" }} +{{- /* This comment removes newlines. */ -}} +{{ $isRemote := strings.HasPrefix $link "http" }} +{{- /* This comment removes newlines. */ -}} +{{- if not $isRemote -}} +{{- /* This comment removes newlines. */ -}} +{{ $url := urls.Parse $link }} +{{- /* This comment removes newlines. */ -}} +{{- if $url.Path -}} +{{- /* This comment removes newlines. */ -}} +{{ $fragment := "" }} +{{- /* This comment removes newlines. */ -}} +{{- with $url.Fragment }}{{ $fragment = printf "#%s" . }}{{ end -}} +{{- /* This comment removes newlines. */ -}} +{{- with .Page.GetPage $url.Path }}{{ $link = printf "%s%s" .RelPermalink $fragment }}{{ end }}{{ end -}} +{{- /* This comment removes newlines. */ -}} +{{- end -}} +{{- /* This comment removes newlines. */ -}} +{{ .Text | safeHTML }} +{{- /* This comment removes newlines. */ -}} diff --git a/themes/hugo-darktable-docs-theme/layouts/_default/baseof.html b/themes/hugo-darktable-docs-theme/layouts/_default/baseof.html new file mode 100644 index 0000000000..e2d8b9b4e9 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/_default/baseof.html @@ -0,0 +1,36 @@ + + + + {{ partial "head-meta.html" . }} + {{ partial "css.html" . }} + {{ partial "javascript.html" . }} + + + + + {{ partial "page-header-navbar-large.html" . }} + +
    +
    +
    + {{ block "main" .}} + + {{ end }} +
    + +
    + + + +
    + + + + + +{{ partial "navjs.html" . }} +{{ partial "analytics.html" . }} diff --git a/themes/hugo-darktable-docs-theme/layouts/_default/index.json b/themes/hugo-darktable-docs-theme/layouts/_default/index.json new file mode 100644 index 0000000000..bfd33dbf3a --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/_default/index.json @@ -0,0 +1,5 @@ +{{- $.Scratch.Add "index" slice -}} +{{- range .Site.RegularPages -}} + {{- $.Scratch.Add "index" (dict "title" .Title "tags" .Params.tags "categories" .Params.categories "content" .Plain "href" .RelPermalink "date" .Date) -}} +{{- end -}} +{{- $.Scratch.Get "index" | jsonify -}} diff --git a/themes/hugo-darktable-docs-theme/layouts/_default/list.html b/themes/hugo-darktable-docs-theme/layouts/_default/list.html new file mode 100644 index 0000000000..fd2906c318 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/_default/list.html @@ -0,0 +1,30 @@ +{{ define "main" }} + +{{ partial "breadcrumbs.html" . }} + +{{ partial "prev-next.html" . }} + +
    + +

    {{ .Title }}

    + +
    + +{{ partial "prev-next.html" . }} + +{{ end }} diff --git a/themes/hugo-darktable-docs-theme/layouts/_default/single.html b/themes/hugo-darktable-docs-theme/layouts/_default/single.html new file mode 100644 index 0000000000..45255322d7 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/_default/single.html @@ -0,0 +1,38 @@ +{{ define "title" }}{{ .Title | markdownify }} | {{ .Site.Title }}{{ end }} +{{ define "main" }} +{{ $dateFormat := default "Mon Jan 2, 2006" (index .Site.Params "date_format") }} + + +{{ partial "breadcrumbs.html" . }} + +{{ partial "prev-next.html" . }} + + + +{{ partial "prev-next.html" . }} + +{{ end }} diff --git a/themes/hugo-darktable-docs-theme/layouts/index.html b/themes/hugo-darktable-docs-theme/layouts/index.html new file mode 100644 index 0000000000..417590d37d --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/index.html @@ -0,0 +1,22 @@ +{{ define "title" }}{{ .Title | markdownify }} | {{ .Site.Title }}{{ end }} +{{ define "main" }} +{{ $dateFormat := default "Mon Jan 2, 2006" (index .Site.Params "date_format") }} + + + + +{{ end }} diff --git a/themes/hugo-darktable-docs-theme/layouts/partials/analytics.html b/themes/hugo-darktable-docs-theme/layouts/partials/analytics.html new file mode 100644 index 0000000000..19e5e70b17 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/partials/analytics.html @@ -0,0 +1,16 @@ + + + + diff --git a/themes/hugo-darktable-docs-theme/layouts/partials/breadcrumbs.html b/themes/hugo-darktable-docs-theme/layouts/partials/breadcrumbs.html new file mode 100644 index 0000000000..56612664ca --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/partials/breadcrumbs.html @@ -0,0 +1,15 @@ +
    + + {{ template "breadcrumb" dict "page" . "value" .Title }} + +
    + +{{- define "breadcrumb" -}} +{{- $parent := .page.Parent -}} +{{- if $parent -}} +{{ $value := (printf "%s / %s" $parent.RelPermalink $parent.Title .value) }} +{{ template "breadcrumb" dict "page" $parent "value" $value }} +{{- else -}} +{{.value|safeHTML}} +{{- end -}} +{{- end -}} diff --git a/themes/hugo-darktable-docs-theme/layouts/partials/css.html b/themes/hugo-darktable-docs-theme/layouts/partials/css.html new file mode 100644 index 0000000000..071bbfc91f --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/partials/css.html @@ -0,0 +1,10 @@ + +{{- if .Site.IsServer -}} +{{- $options := (dict "targetPath" "css/style.css" "outputStyle" "expanded" "enableSourceMap" true "includePaths" (slice "themes/hugo-darktable-docs-theme/assets/node_modules/bootstrap/scss" "themes/hugo-darktable-docs-theme/assets/node_modules/fork-awesome/scss")) -}} +{{- $style := resources.Get "sass/main.scss" | resources.ToCSS $options | fingerprint -}} + +{{- else -}} +{{- $options := (dict "targetPath" "css/style.css" "outputStyle" "compressed" "enableSourceMap" true "includePaths" (slice "themes/hugo-darktable-docs-theme/assets/node_modules/bootstrap/scss" "themes/hugo-darktable-docs-theme/assets/node_modules/fork-awesome/scss")) -}} +{{- $style := resources.Get "sass/main.scss" | resources.ToCSS $options | minify | fingerprint -}} + +{{- end -}} diff --git a/themes/hugo-darktable-docs-theme/layouts/partials/head-meta.html b/themes/hugo-darktable-docs-theme/layouts/partials/head-meta.html new file mode 100644 index 0000000000..29f976ac5a --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/partials/head-meta.html @@ -0,0 +1,15 @@ + + +{{ block "title" . }}{{ .Site.Title }}{{ if .Title }} - {{ .Title }}{{ end }}{{ end }} + + + + + + + + + +{{ with .OutputFormats.Get "rss" -}} + +{{ end -}} diff --git a/themes/hugo-darktable-docs-theme/layouts/partials/javascript.html b/themes/hugo-darktable-docs-theme/layouts/partials/javascript.html new file mode 100644 index 0000000000..6a3c70857a --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/partials/javascript.html @@ -0,0 +1,31 @@ + + + + +{{- /**/ -}} +{{- $jquery := resources.Get "/node_modules/jquery/dist/jquery.min.js" -}} + +{{ $javascript := slice $jquery | resources.Concat "/js/jquery.js" }} + + +{{- $popper := resources.Get "/node_modules/popper.js/dist/popper.js" -}} + +{{ $javascript := slice $popper | resources.Concat "/js/popper.js" }} + + +{{- $bootstrap := resources.Get "/node_modules/bootstrap/dist/js/bootstrap.js" -}} + +{{ $javascript := slice $bootstrap | resources.Concat "/js/bootstrap.js" }} + + +{{- $lunr := resources.Get "/node_modules/lunr/lunr.js" -}} + +{{ $javascript := slice $lunr | resources.Concat "/js/lunr.js" }} + + +{{- /**/ -}} +{{- $app := resources.Get "/js/app.js" | resources.ExecuteAsTemplate "/js/app.js" . -}} + +{{ $javascript := slice $app | resources.Concat "/js/app.js" }} + + diff --git a/themes/hugo-darktable-docs-theme/layouts/partials/nav.html b/themes/hugo-darktable-docs-theme/layouts/partials/nav.html new file mode 100644 index 0000000000..3b0e7c0fc0 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/partials/nav.html @@ -0,0 +1,29 @@ +{{- with .Site.GetPage "/" -}} +{{- template "nav-children" (dict "Section" . "CurrentPage" $) -}} +{{- end -}} + +{{- define "nav-children" -}}{{- /* (dict "Section" .Section "CurrentPage" .CurrentPage) */ -}} +
      + {{- range .Section.Pages -}} + {{ if .IsSection }} +
    • + + {{ template "nav-link" (dict "Page" . "CurrentPage" $.CurrentPage) }} + {{ template "nav-children" (dict "Section" . "CurrentPage" $.CurrentPage) }} +
    • + {{ else if and .IsPage .Content }} +
    • + + {{ template "nav-link" (dict "Page" . "CurrentPage" $.CurrentPage) }} +
    • + {{ end }} + {{- end -}} +
    +{{- end -}} + +{{ define "nav-link" }}{{/* (dict "Page" .Page "CurrentPage" .CurrentPage) */}} +{{ $current := eq .CurrentPage .Page }} + + {{ .Page.Title }} + +{{ end }} diff --git a/themes/hugo-darktable-docs-theme/layouts/partials/navjs.html b/themes/hugo-darktable-docs-theme/layouts/partials/navjs.html new file mode 100644 index 0000000000..28674e31e3 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/partials/navjs.html @@ -0,0 +1,53 @@ + diff --git a/themes/hugo-darktable-docs-theme/layouts/partials/page-footer.html b/themes/hugo-darktable-docs-theme/layouts/partials/page-footer.html new file mode 100644 index 0000000000..46e02c1d66 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/partials/page-footer.html @@ -0,0 +1,5 @@ +
    +

    + © {{ i18n "copyright" }} {{ now.Format "2006" }} {{ i18n "copyrightEntity" }} +

    +
    diff --git a/themes/hugo-darktable-docs-theme/layouts/partials/page-header-navbar-large.html b/themes/hugo-darktable-docs-theme/layouts/partials/page-header-navbar-large.html new file mode 100644 index 0000000000..c1f9cedf72 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/partials/page-header-navbar-large.html @@ -0,0 +1,38 @@ + + +
    +
    diff --git a/themes/hugo-darktable-docs-theme/layouts/partials/prev-next.html b/themes/hugo-darktable-docs-theme/layouts/partials/prev-next.html new file mode 100644 index 0000000000..bb2212586e --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/partials/prev-next.html @@ -0,0 +1,42 @@ +{{- .Scratch.Set "pcurrpagefound" 0 -}} +{{- with .Site.GetPage "/" -}} +{{- template "pn-children" (dict "Section" . "CurrentPage" $) -}} +{{- end -}} + +{{- define "pn-children" -}}{{- /* (dict "Section" .Section "CurrentPage" .CurrentPage) */ -}} + {{- range .Section.Pages -}} + {{- if .IsSection -}} + {{- template "pn-link" (dict "Page" . "CurrentPage" $.CurrentPage) -}} + {{- template "pn-children" (dict "Section" . "CurrentPage" $.CurrentPage) -}} + {{- else if and .IsPage .Content -}} + {{- template "pn-link" (dict "Page" . "CurrentPage" $.CurrentPage) -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{- define "pn-link" -}}{{- /* (dict "Page" .Page "CurrentPage" .CurrentPage) */ -}} + {{- if (eq ( .CurrentPage.Scratch.Get "pcurrpagefound" ) 1) -}} + {{- .CurrentPage.Scratch.Set "pnextlink" .Page.RelPermalink -}} + {{- .CurrentPage.Scratch.Set "pnexttitle" .Page.Title -}} + {{- .CurrentPage.Scratch.Set "pcurrpagefound" 2 -}} + {{- else if eq .CurrentPage .Page -}} + {{- .CurrentPage.Scratch.Set "pcurrpagefound" 1 -}} + {{ else if (eq ( .CurrentPage.Scratch.Get "pcurrpagefound" ) 0) }} + {{- .CurrentPage.Scratch.Set "pprevlink" .Page.RelPermalink -}} + {{- .CurrentPage.Scratch.Set "pprevtitle" .Page.Title -}} + {{- end -}} +{{- end -}} + + +
    +
    + {{ if .Scratch.Get "pprevlink" }} + + {{ end }} +
    +
    + {{ if .Scratch.Get "pnextlink" }} + + {{ end }} +
    +
    diff --git a/themes/hugo-darktable-docs-theme/layouts/partials/table-of-contents.html b/themes/hugo-darktable-docs-theme/layouts/partials/table-of-contents.html new file mode 100644 index 0000000000..191e36252a --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/partials/table-of-contents.html @@ -0,0 +1,8 @@ + +
    +
    + {{ .TableOfContents }} +
    +
    diff --git a/themes/hugo-darktable-docs-theme/layouts/partials/tags.html b/themes/hugo-darktable-docs-theme/layouts/partials/tags.html new file mode 100644 index 0000000000..f4b02bb0cf --- /dev/null +++ b/themes/hugo-darktable-docs-theme/layouts/partials/tags.html @@ -0,0 +1,9 @@ +{{ if .Params.tags }} +{{ range $index, $tag := .Params.tags }} +{{ if gt $index 0 }}, +{{ end }} + + {{ . }} + +{{ end }} +{{ end }} diff --git a/themes/hugo-darktable-docs-theme/static/css/.gitkeep b/themes/hugo-darktable-docs-theme/static/css/.gitkeep new file mode 100644 index 0000000000..8d1c8b69c3 --- /dev/null +++ b/themes/hugo-darktable-docs-theme/static/css/.gitkeep @@ -0,0 +1 @@ + diff --git a/themes/hugo-darktable-docs-theme/static/favicon.ico b/themes/hugo-darktable-docs-theme/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c58fbbe881d968064ee9f18c3ea877f227fa4b77 GIT binary patch literal 1150 zcmb7@duS6`6vk&_Ys{KSGLv~WF`4Eu#wfVf*NW7xS`@bXKtzmn#S(2=qpn@+qjcT1 zDo9P&6%-+&psrR*Yj;u7LamRgTZ<2{gc{LEDb_c1Rdhl0kIy@mND&wG4By<#neTVb zox==8(d4q(C~{Y+@+^uHDT)dZkrc_i%ai4EVz|LzFf+5QdA1+y3(SRf( zQ@E0Sh0ber`O0H)nl#|4^uhD952IGNQ}&RsjMOlOLd8@@nVJ<}nv^5o=Cq$!=tIk5 z4T(@LzH*CjtyiJd1fXpW!262^2UJwwTD57?bgkuY3oGo=Axh4nS2Sqq{y5Kvi zK`NEOFIfj~(+xNdUg;(5NE2;x#)R0LTDcZgLKVumGR$Y^!zcNmD9WIuRWhXC6bRoH zBe(rF#+>Per!|eN=+?2-boJZ=&I8!5?nhjWW3RdwRa_MmSwSL^7?d(zfjD(KT$j=a zc0WY$+I?tU{V*LmU9^MVQPk*cM1$IZdbJ*VggwwiGG{q}WHLD@nViFM^#+3Xo?~p^ zQv}lk&{9ueYCJb5LPy56=CqBiCYA(^%zFmo8hxIL*!?`R`fTdrQMLiDTt+M@MV3lmEA|y zyz}LR%|te5359c+zX;n()JD_}#k!sJ-32ky3n|(UY4szB75~B<>F*?MnGCG2G;J_D zjLpaW>;=Mh5_Q4NoPv-$8}^ltA+3D|q4GbNS3EjpDEw0y$`08Z`C;|TTwnZ?@>-MR z9eN(21Eb|AO&y(z-fR4LWoa7i0@ZdS5HZj&~@EK8?YJ*zy*MJ{eJ&`e}DhmXf#^J zam=c!Km#r6^?GkQozC@gxy14DF{G66JP)R6Hvd$2*z5IZSr$)DPIz~BN0Qv!+>#yl@BrqTB7h?{>R?rIZZAkag98b+~QYzX1r6!1ng`vYKt3+JGI^o0DzPdrfK5r?5u2;DjZHGlX4B~Iyg9ZYC6nH zDbDBf<|(g}>$;03pp^3Y#9C?S1X{`}e54;s6`~ z*R62Zbr(sJ@bdEV&(6-yFWa_1VpR@IwwC}0z*_)u4GO*%l7nurdOM470Eh~F^^R4t zMgU|B&;; Date: Tue, 14 Jul 2026 11:45:58 +0200 Subject: [PATCH 2/2] removed analytics.html Co-Authored-By: Claude Sonnet 5 --- .../layouts/_default/baseof.html | 1 - .../layouts/partials/analytics.html | 16 ---------------- 2 files changed, 17 deletions(-) delete mode 100644 themes/hugo-darktable-docs-theme/layouts/partials/analytics.html diff --git a/themes/hugo-darktable-docs-theme/layouts/_default/baseof.html b/themes/hugo-darktable-docs-theme/layouts/_default/baseof.html index e2d8b9b4e9..95097d1f83 100644 --- a/themes/hugo-darktable-docs-theme/layouts/_default/baseof.html +++ b/themes/hugo-darktable-docs-theme/layouts/_default/baseof.html @@ -33,4 +33,3 @@ {{ partial "navjs.html" . }} -{{ partial "analytics.html" . }} diff --git a/themes/hugo-darktable-docs-theme/layouts/partials/analytics.html b/themes/hugo-darktable-docs-theme/layouts/partials/analytics.html deleted file mode 100644 index 19e5e70b17..0000000000 --- a/themes/hugo-darktable-docs-theme/layouts/partials/analytics.html +++ /dev/null @@ -1,16 +0,0 @@ - - - -