@trimble-oss/modus-docs-hugo-theme 1.0.0-alpha1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +43 -0
  3. package/assets/js/auto-complete.min.js +1 -0
  4. package/assets/js/loglevel-plugin-remote.min.js +1 -0
  5. package/assets/js/loglevel.min.js +2 -0
  6. package/assets/js/lunr.min.js +7 -0
  7. package/assets/js/scroll-to-top.js +33 -0
  8. package/assets/js/search.min.js +1 -0
  9. package/assets/js/tdcafLogger.min.js +1 -0
  10. package/assets/js/theme-toggle.js +48 -0
  11. package/assets/js/was-this-page-helpful.js +15 -0
  12. package/assets/styles/_article.scss +110 -0
  13. package/assets/styles/_autocomplete.scss +63 -0
  14. package/assets/styles/_cards.scss +25 -0
  15. package/assets/styles/_codefences-dark.scss +16 -0
  16. package/assets/styles/_codefences.scss +243 -0
  17. package/assets/styles/_col-sidebar.scss +3 -0
  18. package/assets/styles/_font-open-sans.scss +69 -0
  19. package/assets/styles/_footer.scss +4 -0
  20. package/assets/styles/_javascript-disabled.scss +21 -0
  21. package/assets/styles/_list-js.scss +27 -0
  22. package/assets/styles/_menu-right.scss +55 -0
  23. package/assets/styles/_mobile.scss +52 -0
  24. package/assets/styles/_navbar-search.scss +53 -0
  25. package/assets/styles/_navbar.scss +5 -0
  26. package/assets/styles/_news.scss +6 -0
  27. package/assets/styles/_onetrust-cookie-banner.scss +166 -0
  28. package/assets/styles/_posts.scss +17 -0
  29. package/assets/styles/_print.scss +5 -0
  30. package/assets/styles/_scroll-to-top-btn.scss +17 -0
  31. package/assets/styles/_sidebar.scss +65 -0
  32. package/assets/styles/_skippy.scss +15 -0
  33. package/assets/styles/_tables.scss +5 -0
  34. package/assets/styles/_theme-dark.scss +10 -0
  35. package/assets/styles/_theme-light.scss +5 -0
  36. package/assets/styles/_theme-toggle.scss +83 -0
  37. package/assets/styles/_utilities.scss +9 -0
  38. package/assets/styles/_was-this-page-helpful.scss +28 -0
  39. package/assets/styles/_xxl.scss +18 -0
  40. package/assets/styles/styles.scss +66 -0
  41. package/data/menu.yml +19 -0
  42. package/data/navbar_apps.yml +15 -0
  43. package/layouts/_default/_markup/render-heading.html +23 -0
  44. package/layouts/_default/_markup/render-image.html +4 -0
  45. package/layouts/_default/_markup/render-link.html +4 -0
  46. package/layouts/_default/baseof.html +65 -0
  47. package/layouts/_default/home.html +31 -0
  48. package/layouts/_default/list.html +41 -0
  49. package/layouts/_default/redirect.html +19 -0
  50. package/layouts/_default/single.html +113 -0
  51. package/layouts/index.json +18 -0
  52. package/layouts/index.rss.xml +49 -0
  53. package/layouts/partials/analytics.html +9 -0
  54. package/layouts/partials/blog-brief.html +34 -0
  55. package/layouts/partials/blog-share.html +58 -0
  56. package/layouts/partials/btn-theme-toggle.html +20 -0
  57. package/layouts/partials/card-component.html +29 -0
  58. package/layouts/partials/col-sidebar-menu.html +74 -0
  59. package/layouts/partials/col-sidebar.html +25 -0
  60. package/layouts/partials/custom-footer.html +1 -0
  61. package/layouts/partials/custom-header.html +1 -0
  62. package/layouts/partials/footer.html +13 -0
  63. package/layouts/partials/header.html +14 -0
  64. package/layouts/partials/icons/brands/codepen.svg +2 -0
  65. package/layouts/partials/icons/brands/facebook-square.svg +2 -0
  66. package/layouts/partials/icons/brands/github-alt.svg +1 -0
  67. package/layouts/partials/icons/brands/github.svg +2 -0
  68. package/layouts/partials/icons/brands/linkedin.svg +1 -0
  69. package/layouts/partials/icons/brands/square-x-twitter.svg +2 -0
  70. package/layouts/partials/icons/brands/vimeo-square.svg +2 -0
  71. package/layouts/partials/icons/modus-outlined/accessibility-circle.svg +3 -0
  72. package/layouts/partials/icons/modus-outlined/arrow-up.svg +3 -0
  73. package/layouts/partials/icons/modus-outlined/bar-graph-square.svg +3 -0
  74. package/layouts/partials/icons/modus-outlined/launch.svg +3 -0
  75. package/layouts/partials/icons/modus-outlined/menu.svg +3 -0
  76. package/layouts/partials/icons/modus-outlined/more-vertical.svg +3 -0
  77. package/layouts/partials/icons/modus-outlined/person-account.svg +3 -0
  78. package/layouts/partials/icons/modus-outlined/search.svg +3 -0
  79. package/layouts/partials/icons/modus-outlined/sync.svg +3 -0
  80. package/layouts/partials/icons/modus-outlined/thumbs-down.svg +3 -0
  81. package/layouts/partials/icons/modus-outlined/thumbs-up.svg +3 -0
  82. package/layouts/partials/icons/modus-outlined/web.svg +3 -0
  83. package/layouts/partials/icons/modus-solid/email.svg +3 -0
  84. package/layouts/partials/icons/modus-solid/palette.svg +3 -0
  85. package/layouts/partials/icons/navbar-toggler-icon.svg +1 -0
  86. package/layouts/partials/icons/transportation/truck.svg +3 -0
  87. package/layouts/partials/icons/trimble-logo.svg +1 -0
  88. package/layouts/partials/index/list-blog-brief.html +17 -0
  89. package/layouts/partials/logos/trimble.svg +1 -0
  90. package/layouts/partials/menu-right.html +24 -0
  91. package/layouts/partials/meta.html +81 -0
  92. package/layouts/partials/navbar-dropdown.html +21 -0
  93. package/layouts/partials/navbar-search.html +19 -0
  94. package/layouts/partials/navbar.html +31 -0
  95. package/layouts/partials/related-content.html +50 -0
  96. package/layouts/partials/skippy.html +11 -0
  97. package/layouts/partials/trimble-logo.html +47 -0
  98. package/layouts/partials/was-this-page-helpful.html +19 -0
  99. package/layouts/shortcodes/alert.html +18 -0
  100. package/layouts/shortcodes/blocks/cover.html +50 -0
  101. package/layouts/shortcodes/blocks/feature.html +17 -0
  102. package/layouts/shortcodes/blocks/link-down.html +7 -0
  103. package/layouts/shortcodes/blocks/section.html +13 -0
  104. package/layouts/shortcodes/checklist.html +7 -0
  105. package/layouts/shortcodes/cloakemail.html +38 -0
  106. package/layouts/shortcodes/date-today.html +1 -0
  107. package/layouts/shortcodes/example.html +50 -0
  108. package/layouts/shortcodes/iframe.html +24 -0
  109. package/layouts/shortcodes/img.html +10 -0
  110. package/layouts/shortcodes/markdown.html +1 -0
  111. package/layouts/shortcodes/message.html +7 -0
  112. package/layouts/shortcodes/partial.html +1 -0
  113. package/layouts/shortcodes/tab.html +55 -0
  114. package/layouts/shortcodes/table.html +9 -0
  115. package/layouts/shortcodes/tabpane.html +172 -0
  116. package/layouts/sitemap.xml +8 -0
  117. package/package.json +47 -0
  118. package/static/favicon.ico +0 -0
  119. package/static/favicon.svg +1 -0
  120. package/static/fonts/open-sans-v27-latin-300.woff +0 -0
  121. package/static/fonts/open-sans-v27-latin-300.woff2 +0 -0
  122. package/static/fonts/open-sans-v27-latin-300italic.woff +0 -0
  123. package/static/fonts/open-sans-v27-latin-300italic.woff2 +0 -0
  124. package/static/fonts/open-sans-v27-latin-600.woff +0 -0
  125. package/static/fonts/open-sans-v27-latin-600.woff2 +0 -0
  126. package/static/fonts/open-sans-v27-latin-700.woff +0 -0
  127. package/static/fonts/open-sans-v27-latin-700.woff2 +0 -0
  128. package/static/fonts/open-sans-v27-latin-800.woff +0 -0
  129. package/static/fonts/open-sans-v27-latin-800.woff2 +0 -0
  130. package/static/fonts/open-sans-v27-latin-italic.woff +0 -0
  131. package/static/fonts/open-sans-v27-latin-italic.woff2 +0 -0
  132. package/static/fonts/open-sans-v27-latin-regular.woff +0 -0
  133. package/static/fonts/open-sans-v27-latin-regular.woff2 +0 -0
  134. package/static/img/trimble-logo.svg +1 -0
  135. package/static/js/instant-page.min.js +2 -0
  136. package/static/js/theme-toggle.js +48 -0
  137. package/static/staticwebapp.config.json +24 -0
@@ -0,0 +1,55 @@
1
+ {{- /* Make sure that we are enclosed within a tabpane shortcode block */ -}}
2
+
3
+ {{ with $.Parent -}}
4
+ {{ if ne $.Parent.Name "tabpane" -}}
5
+ {{ errorf "Found shortcode %q enclosed inside a %q block, must be enclosed inside a %q block. Error position: %s" $.Name $.Parent.Name "tabpane" $.Position -}}
6
+ {{- end -}}
7
+ {{- else -}}
8
+ {{ errorf "shortcode %q must be enclosed inside a %q block, but no parent block was found. Error position: %s" $.Name "tabpane" $.Position -}}
9
+ {{- end -}}
10
+
11
+ {{ $header := "Tab" -}}
12
+ {{ if and (not .IsNamedParams) (.Get 0) -}}
13
+ {{ $header = (.Get 0) -}}
14
+ {{ else -}}
15
+ {{/* Prefill header if not given as named or unnamed parameter */ -}}
16
+ {{ $header = .Get "header" | default (printf "Tab %v" .Ordinal) -}}
17
+ {{ end -}}
18
+
19
+ {{/* store all tab info in dict tab */ -}}
20
+ {{ $tab := dict "header" $header -}}
21
+ {{ with $.Get "lang" -}}
22
+ {{ $tab = merge $tab (dict "language" ($.Get "lang")) -}}
23
+ {{ end -}}
24
+ {{ with $.Get "highlight" -}}
25
+ {{ $tab = merge $tab (dict "highlight" ($.Get "highlight")) -}}
26
+ {{ end -}}
27
+ {{ with $.Get "text" -}}
28
+ {{ if ne ( printf "%T" . ) "bool" -}}
29
+ {{ errorf "Shortcode %q: boolean value expected for parameter %q, but got %s. Error position: %s" $.Name "text" (printf "%T" .) $.Position -}}
30
+ {{ end -}}
31
+ {{ $tab = merge $tab (dict "text" ($.Get "text")) -}}
32
+ {{- end -}}
33
+ {{ with $.Get "right" -}}
34
+ {{ if ne ( printf "%T" . ) "bool" -}}
35
+ {{ errorf "Shortcode %q: boolean value expected for parameter %q, but got %s. Error position: %s" $.Name "right" (printf "%T" .) $.Position -}}
36
+ {{ end -}}
37
+ {{ $tab = merge $tab (dict "rightpush" ($.Get "right")) -}}
38
+ {{- end -}}
39
+ {{ with $.Get "disabled" -}}
40
+ {{ if ne ( printf "%T" . ) "bool" -}}
41
+ {{ errorf "Shortcode %q: boolean value expected for parameter %q, but got %s. Error position: %s" $.Name "disabled" (printf "%T" .) $.Position -}}
42
+ {{- end -}}
43
+ {{ $tab = merge $tab (dict "disabled" ($.Get "disabled")) -}}
44
+ {{- end -}}
45
+
46
+ {{- with $.Inner -}}
47
+ {{/* Trim any leading and trailing newlines from .Inner, this avoids
48
+ spurious lines during syntax highlighting */ -}}
49
+ {{- $tab = merge $tab (dict "content" $.Inner) -}}
50
+ {{- end -}}
51
+
52
+ {{/* add dict tab to parent's scratchpad */ -}}
53
+ {{ with .Parent -}}
54
+ {{ $.Parent.Scratch.SetInMap "tabs" (printf "%02v" $.Ordinal) $tab -}}
55
+ {{- end -}}
@@ -0,0 +1,9 @@
1
+ {{- /*
2
+ Usage: `table "class class-foo"`, where class can be any string
3
+ */ -}}
4
+
5
+ {{- $css_class := .Get 0 | default "table" -}}
6
+ {{- $html_table := .Inner | markdownify -}}
7
+ {{- $html_table = replace $html_table "<table>" (printf `<div class="table-responsive"><table class="%s">` $css_class) -}}
8
+ {{- $html_table = replace $html_table "</table>" "</table></div>" -}}
9
+ {{- $html_table | safeHTML -}}
@@ -0,0 +1,172 @@
1
+ {{/* Check parameter types */ -}}
2
+
3
+ {{ $tpPersistAttrName := "data-td-tp-persist" -}}
4
+
5
+ {{ with .Get "langEqualsHeader" -}}
6
+ {{ if ne ( printf "%T" . ) "bool" -}}
7
+ {{ errorf "Shortcode %q: boolean value expected for parameter %q, but got %s. Error position: %s" $.Name "langEqualsHeader" (printf "%T" .) $.Position -}}
8
+ {{ end -}}
9
+ {{ end -}}
10
+
11
+ {{ with .Get "text" -}}
12
+ {{ if ne ( printf "%T" . ) "bool" -}}
13
+ {{ errorf "Shortcode %q: boolean value expected for parameter %q, but got %s. Error position: %s" $.Name "text" (printf "%T" .) $.Position -}}
14
+ {{ end -}}
15
+ {{ end -}}
16
+
17
+ {{ $_persistLang := .Get "persistLang" -}}
18
+ {{ if and (ne $_persistLang nil) (ne $_persistLang "") -}}
19
+ {{ if ne ( printf "%T" $_persistLang ) "bool" -}}
20
+ {{ errorf "Shortcode %q: boolean value expected for parameter %q, but got %s. Error position: %s" $.Name "persistLang" (printf "%T" $_persistLang) $.Position -}}
21
+ {{ else -}}
22
+ {{ warnf "Shortcode %q parameter `persistLang` is deprecated, use `persist` instead: %s" $.Name $.Position -}}
23
+ {{ end -}}
24
+ {{ end -}}
25
+
26
+ {{ $_persist := .Get "persist" -}}
27
+ {{ with $_persist -}}
28
+ {{ $matched := findRE "^(header|lang|none)$" . -}}
29
+ {{ if not $matched -}}
30
+ {{ errorf "Shortcode %q: parameter %q should be one of 'header', 'lang', or 'none'; but got %s. Error position: %s" $.Name "persist" $_persist $.Position -}}
31
+ {{ end -}}
32
+ {{ end -}}
33
+
34
+ {{ with .Get "right" -}}
35
+ {{ if ne ( printf "%T" . ) "bool" -}}
36
+ {{ errorf "Shortcode %q: boolean value expected for parameter %q, but got %s. Error position: %s" $.Name "right" (printf "%T" .) $.Position -}}
37
+ {{ end -}}
38
+ {{ end -}}
39
+
40
+ {{/* Set values given defined within tabpane */ -}}
41
+ {{ $langPane := default "" ($.Get "lang") -}}
42
+ {{ $hloptionsPane := default "" ($.Get "highlight") -}}
43
+ {{ $textPane := default false ($.Get "text") -}}
44
+ {{ $langEqualsHeader := default false ($.Get "langEqualsHeader") -}}
45
+ {{ $deprecatedPersistLang := $_persistLang | default true -}}
46
+ {{ $persistKeyKind := $_persist | default (cond (eq $langPane "") "lang" "header") -}}
47
+ {{ $persistTab := and $deprecatedPersistLang (ne $persistKeyKind "none") -}}
48
+ {{ $rightPane := default false ($.Get "right") -}}
49
+ {{ $activeSet := false -}}
50
+ {{/* Scratchpad gets populated through call to .Inner */ -}}
51
+ {{ .Inner -}}
52
+
53
+ {{ $duplicate := false -}}
54
+ {{ $duplicateKey := "" -}}
55
+ {{ $persistKeyList := slice -}}
56
+ {{ $tabPaneOrdinal := .Ordinal -}}
57
+
58
+ {{/* Nav tabs */ -}}
59
+ <ul class="nav nav-tabs{{ if $rightPane }} justify-content-end{{- end -}}" id="tabs-{{- $tabPaneOrdinal -}}"
60
+ role="tablist">
61
+ {{ range $index, $element := $.Scratch.Get "tabs" -}}
62
+
63
+ {{ $disabled := false -}}
64
+ {{ with $element.disabled -}}
65
+ {{ $disabled = . -}}
66
+ {{ end -}}
67
+
68
+ {{ $lang := $langPane -}}
69
+ {{ if $langEqualsHeader -}}
70
+ {{ $lang = $element.header -}}
71
+ {{ end -}}
72
+ {{ with $element.language -}}
73
+ {{ $lang = . -}}
74
+ {{ end -}}
75
+
76
+ {{ $persistKey := "" -}}
77
+ {{ if eq $persistKeyKind "lang" -}}
78
+ {{ $persistKey = $lang -}}
79
+ {{ else if eq $persistKeyKind "header" -}}
80
+ {{ $persistKey = $element.header -}}
81
+ {{ end -}}
82
+ {{ $persistKey = $persistKey | lower -}}
83
+
84
+ {{/* Check for duplicate tab-persistence keys */ -}}
85
+ {{ if and $persistTab $persistKey -}}
86
+ {{ if in $persistKey $persistKeyList -}}
87
+ {{ $duplicate = true -}}
88
+ {{ $duplicateKey = $persistKey -}}
89
+ {{ $persistTab = false -}}
90
+ {{ else -}}
91
+ {{ $persistKeyList = $persistKeyList | append $persistKey -}}
92
+ {{ end -}}
93
+ {{ end -}}
94
+
95
+ {{ $rightpush := false -}}
96
+ {{ with $element.rightpush -}}
97
+ {{ $rightpush = . -}}
98
+ {{ end -}}
99
+
100
+ <li class="nav-item{{ if $rightpush }} ms-auto{{ end -}}">
101
+ {{/* Generate the IDs for the <a> and the <div> elements */ -}}
102
+ {{ $tabid := printf "tabs-%02v-%v-tab" $tabPaneOrdinal $index | anchorize -}}
103
+ {{ $entryid := printf "tabs-%02v-%v" $tabPaneOrdinal $index | anchorize -}}
104
+
105
+ <button class="nav-link
106
+ {{- if and ( not $activeSet ) ( not $disabled ) }} active{{ end -}}
107
+ {{ if $disabled }} disabled{{ end -}}" id="{{ $tabid }}" data-bs-toggle="tab" data-bs-target="#{{ $entryid }}"
108
+ role="tab" {{ if and $persistTab $persistKey -}} onclick="tdPersistActiveTab({{ $persistKey }});" {{/* */ -}}
109
+ {{ printf "%s=%q " $tpPersistAttrName $persistKey | safeHTMLAttr -}} {{ end -}} aria-controls="{{- $entryid -}}"
110
+ aria-selected="{{- cond ( and ( not $activeSet ) ( not $disabled ) ) "true" "false" -}}">
111
+ {{- index . "header" | markdownify }}
112
+ </button>
113
+ </li>
114
+
115
+ {{- if not $disabled -}}
116
+ {{ $activeSet = true -}}
117
+ {{ end -}}
118
+
119
+ {{ end }}
120
+ </ul>
121
+
122
+ {{ if $duplicate -}}
123
+ {{ warnf "Shortcode %q: duplicate tab-persistence key %q detected, disabling persistance to avoid multiple tab display. Position: %s" $.Name $duplicateKey $.Position -}}
124
+ {{ end -}}
125
+
126
+ {{ $activeSet = false -}}
127
+
128
+ {{/* Tab panes */ -}}
129
+ <div class="tab-content p-3 bg-secondary bg-opacity-10" id="tabs-{{ $tabPaneOrdinal }}-content">
130
+ {{- range $index, $element := $.Scratch.Get "tabs" -}}
131
+
132
+ {{ $lang := $langPane -}}
133
+ {{ if $langEqualsHeader -}}
134
+ {{ $lang = $element.header -}}
135
+ {{ end -}}
136
+ {{ with $element.language -}}
137
+ {{ $lang = . -}}
138
+ {{ end -}}
139
+
140
+ {{ $disabled := false -}}
141
+ {{ with $element.disabled -}}
142
+ {{ $disabled = . -}}
143
+ {{ end -}}
144
+
145
+ {{ $hloptions := $hloptionsPane -}}
146
+ {{ with $element.highlight -}}
147
+ {{ $hloptions = . -}}
148
+ {{ end -}}
149
+
150
+ {{ $text := $textPane -}}
151
+ {{ with $element.text -}}
152
+ {{ $text = . }}
153
+ {{ end -}}
154
+
155
+ {{ $tabid := printf "tabs-%02v-%v-tab" $tabPaneOrdinal $index | anchorize -}}
156
+ {{ $entryid := printf "tabs-%02v-%v" $tabPaneOrdinal $index | anchorize }}
157
+ <div
158
+ class="{{ if $text }}tab-body {{end}}tab-pane fade{{ if and ( not $activeSet ) ( not $disabled ) }} show active{{- end -}}"
159
+ id="{{ $entryid }}" role="tabpanel" aria-labelled-by="{{ $tabid }}" tabindex="{{ $tabPaneOrdinal }}">
160
+ {{ if $text -}}
161
+ {{ index . "content" -}}
162
+ {{ else -}}
163
+ {{ highlight (trim (index . "content") "\r\n") $lang $hloptions -}}
164
+ {{ end }}
165
+ </div>
166
+
167
+ {{- if not $disabled -}}
168
+ {{ $activeSet = true -}}
169
+ {{ end -}}
170
+
171
+ {{ end }}
172
+ </div>
@@ -0,0 +1,8 @@
1
+ {{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>" | safeHTML }}
2
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
3
+ {{- range .Data.Pages -}}{{ if ne .Params.sitemap_exclude true }}
4
+ <url><loc>{{ .Permalink }}</loc>{{ if not .Lastmod.IsZero }}
5
+ <lastmod>{{ safeHTML (.Lastmod.Format "2006-01-02T15:04:05-07:00") }}</lastmod>{{ end }}
6
+ </url>{{- end -}}
7
+ {{- end -}}
8
+ </urlset>
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@trimble-oss/modus-docs-hugo-theme",
3
+ "version": "1.0.0-alpha1",
4
+ "description": "A Documentation heme for Hugo built by Trimble",
5
+ "homepage": "https://github.com/trimble-oss/modus-docs-hugo-theme",
6
+ "bugs": {
7
+ "url": "https://github.com/trimble-oss/modus-docs-hugo-theme/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/trimble-oss/modus-docs-hugo-theme"
12
+ },
13
+ "license": "private",
14
+ "author": "Trimble",
15
+ "scripts": {
16
+ "build": "npx hugo",
17
+ "lint": "npm run lint-css && npm run lint-html",
18
+ "lint-css": "stylelint \"assets/styles/*.*\" --fix",
19
+ "lint-html": "htmlhint \"build/**/index.html\"",
20
+ "lint-spellcheck": "npx cspell \"content/**/*.md\" --no-progress",
21
+ "prettier": "prettier --write \"**/*.{json,js,md,svg}\"",
22
+ "serve": "hugo serve --port 4000 --disableFastRender --navigateToChanged",
23
+ "test": "npm run lint-css && npm run lint-html"
24
+ },
25
+ "dependencies": {
26
+ "@trimble-oss/modus-icons": "1.4.0"
27
+ },
28
+ "devDependencies": {
29
+ "autoprefixer": "10.4.15",
30
+ "htmlhint": "1.1.4",
31
+ "hugo-bin": "0.113.0",
32
+ "postcss": "8.4.28",
33
+ "postcss-cli": "10.1.0",
34
+ "prettier": "3.0.2",
35
+ "stylelint": "15.10.2",
36
+ "stylelint-config-standard-scss": "10.0.0"
37
+ },
38
+ "hugo-bin": {
39
+ "buildTags": "extended"
40
+ },
41
+ "files": [
42
+ "assets",
43
+ "data",
44
+ "layouts",
45
+ "static"
46
+ ]
47
+ }
Binary file
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 732 789"><style>path{fill:#0063a3}@media (prefers-color-scheme:dark){path{fill:#fff}}</style><path d="M543.59 674.86a54.34 54.34 0 0154.9-54.9c30.76 0 54.43 23.9 54.43 54.67 0 73.17-109.33 73.15-109.33.23zm99.86 0c0-60.79-90.16-61.1-90.16-.23s90.16 61.53 90.16.23zm-66.26-31.23c22 0 45-3.33 45 18.46 0 9.7-4.73 14.67-11.83 17l13 24.62h-12.57l-12.07-23h-9.46v23h-12.07zm33.13 19.17c0-10-10.71-8.52-21.06-8.52v17.27c10.51 0 21.06 1.68 21.06-8.75zM48.86 602.72v186.13l161.81-93.42a308.1 308.1 0 01-161.81-92.71zM209.49 92.58L48.86 0v185a310.2 310.2 0 01160.63-92.42zM732 394.43L570.25 301a309.33 309.33 0 01-.48 187.08zM155.4 141.39c23.23-5.16 71.39-.27 96.87 7 20.38-16.21 51.17-25.6 81.82-27.15-70.46-12.72-135.64 2.05-178.69 20.15zM463.74 479.92a416.8 416.8 0 00-25.28-103.53c-55.43 25-124 8.88-169.86-30.79-33.41 34.15-65.75 76.68-90.16 114.49 77.71 63.35 205.56 79.99 285.3 19.83zM135.94 466.1C67.43 396 43.55 293.61 65.49 215a276 276 0 0016.16 374.43c11.21-42.43 31.97-85.72 54.29-123.33zM425.64 346.65a372.77 372.77 0 00-55.49-85.1 635.36 635.36 0 00-78.09 61.34c41.29 34.45 95.61 41.21 133.58 23.76zM374.48 218.63c17.78-12.93 42.42-26.76 60.09-33.32-43.84-44.38-114.38-43.2-145-23.94a293.6 293.6 0 0184.91 57.26z"/><path d="M160.91 488.67c-34.09 58.94-46.53 102.19-51.06 125.2a276 276 0 00340.58-6.21c10.24-24.74 15.47-55.53 15.45-89.38-93.99 55.94-223.99 34.43-304.97-29.61zM452.81 327c30.17-31.7 24.12-85.56 1.17-116.62-14.14 4.78-43.57 21.94-56.26 33A413.64 413.64 0 01452.81 327zM505 259.11c4.65 40.7-10.79 75.93-38.17 99.35A448.73 448.73 0 01493 451.19c41.36-53.81 40.1-130.56 12-192.08zM269.45 299a672.54 672.54 0 0177.22-61.49 262 262 0 00-85.35-52C236.05 220 243.94 264.52 269.45 299zM497.94 494.52c1.4 23.09-.72 49.29-3.42 70 47.34-60.32 63.34-135 57.75-193.22-5.67 49.03-23.62 90.05-54.33 123.22zM229.55 175.76c-34.94-8.54-75.63-8.91-109.67.72-54.33 77-29.1 189.94 34.2 260.64C178.13 400.5 213 354.9 246 321.75c-32.23-39.94-45-101.75-16.45-145.99z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 445 100"><path d="M115.85,87.13v-62H93V11.21h62.57v14h-23v62Z" fill="#0063a3"/><path d="M141.9,87.13V32.74h16.52v8.84h.1c3-4.62,8.21-10.26,18.47-10.26h.51V46c-.61-.11-3.49-.31-4.51-.31a18.27,18.27,0,0,0-14.57,7.49v34Z" fill="#0063a3"/><path d="M182.72,25V11.72h16.62V25Zm.11,62.17V32.44h16.41V87.13Z" fill="#0063a3"/><path d="M205.7,87.13V32.44h16.51v8.62c3.29-4.31,9.34-9.74,18-9.74,9.13,0,13.44,3.79,15,9.74,3.28-4.2,9.44-9.74,18-9.74,11.08,0,16,7,16,16.72V87.13H272.69V52.45c0-4.92-1.13-7.49-5.95-7.49-4.1,0-7.39,2.26-11,5.44V87.13H239.25V52.45c0-4.92-1.13-7.49-6-7.49-4.1,0-7.38,2.26-11.08,5.44V87.13Z" fill="#0063a3"/><path d="M312,80.66v6.47H295.45V11.21H312V40.86c3.59-5,8.72-9.54,16.82-9.54,12.42,0,21,9.54,21,28.41S341.11,88,328.59,88C321.2,88,316.07,85.28,312,80.66Zm21.34-20.82c0-9.13-3.18-14.88-10.57-14.88-4.21,0-8,2.57-10.77,5.34V70.51c3.59,3.38,6.56,5,11,5C329.82,75.53,333.31,69.79,333.31,59.84Z" fill="#0063a3"/><path d="M354.94,87.13V11.21h16.41V87.13Z" fill="#0063a3"/><path d="M376.47,59.84c0-21.24,16.21-28.52,27.49-28.52S429.1,37,429.1,61.79v2.46H392.88c.83,9,5.85,12.51,12.73,12.51a25.16,25.16,0,0,0,16.21-6.56l6.36,9.85c-6.36,5.44-14.26,8.21-23.8,8.21C390.11,88.26,376.47,81,376.47,59.84Zm37.86-5.34c-.82-7.69-4.31-11.39-10.47-11.39-5.13,0-9.54,3.39-10.77,11.39Z" fill="#0063a3"/><path d="M432.22,81a6.19,6.19,0,0,1,6.26-6.26A6.26,6.26,0,1,1,432.22,81Zm11.38,0a5.14,5.14,0,1,0-5.12,5.23A5.12,5.12,0,0,0,443.6,81Zm-7.55-3.56h2.56c1.62,0,2.56.7,2.56,2.1a1.84,1.84,0,0,1-1.34,1.94l1.48,2.81h-1.43l-1.38-2.62h-1.08v2.62h-1.37Zm2.48,3.18c.84,0,1.3-.27,1.3-1s-.46-1-1.33-1h-1.08v2Z" fill="#0063a3"/><path d="M6.19,76.41V100L26.71,88.16A39.1,39.1,0,0,1,6.19,76.41Z" fill="#0063a3"/><path d="M26.56,11.74,6.19,0V23.45A39.33,39.33,0,0,1,26.56,11.74Z" fill="#0063a3"/><path d="M92.8,50,72.29,38.16a39.27,39.27,0,0,1-.06,23.72Z" fill="#0063a3"/><path d="M19.7,17.92c2.94-.65,9.05,0,12.28.89a18.68,18.68,0,0,1,10.37-3.45A41.12,41.12,0,0,0,19.7,17.92Z" fill="#0063a3"/><path d="M58.79,60.84a53.07,53.07,0,0,0-3.21-13.13c-7,3.18-15.72,1.13-21.53-3.9A95.93,95.93,0,0,0,22.62,58.32C32.47,66.35,48.67,68.46,58.79,60.84Z" fill="#0063a3"/><path d="M17.23,59.09C8.55,50.19,5.52,37.22,8.3,27.25a35,35,0,0,0,2,47.47A63.4,63.4,0,0,1,17.23,59.09Z" fill="#0063a3"/><path d="M54,43.94a47.18,47.18,0,0,0-7-10.78A80.73,80.73,0,0,0,37,40.93C42.26,45.3,49.14,46.16,54,43.94Z" fill="#0063a3"/><path d="M47.47,27.72a36.33,36.33,0,0,1,7.62-4.23c-5.56-5.62-14.5-5.47-18.39-3A37.17,37.17,0,0,1,47.47,27.72Z" fill="#0063a3"/><path d="M20.4,62c-4.32,7.47-5.9,13-6.48,15.87A35,35,0,0,0,57.1,77a30,30,0,0,0,2-11.33C47.14,72.79,30.66,70.07,20.4,62Z" fill="#0063a3"/><path d="M57.4,41.45c3.83-4,3.06-10.84.15-14.78a29.6,29.6,0,0,0-7.13,4.18A52.73,52.73,0,0,1,57.4,41.45Z" fill="#0063a3"/><path d="M64,32.85a14.1,14.1,0,0,1-4.84,12.59A57.37,57.37,0,0,1,62.49,57.2C67.74,50.38,67.58,40.64,64,32.85Z" fill="#0063a3"/><path d="M34.16,37.9A83.13,83.13,0,0,1,44,30.11a33.17,33.17,0,0,0-10.82-6.59C29.92,27.89,30.92,33.53,34.16,37.9Z" fill="#0063a3"/><path d="M63.12,62.69a49.42,49.42,0,0,1-.43,8.88A35.37,35.37,0,0,0,70,47.07,26.82,26.82,0,0,1,63.12,62.69Z" fill="#0063a3"/><path d="M29.1,22.28a28.42,28.42,0,0,0-13.9.09c-6.89,9.77-3.69,24.08,4.33,33A100.8,100.8,0,0,1,31.18,40.79C27.1,35.72,25.48,27.89,29.1,22.28Z" fill="#0063a3"/></svg>
@@ -0,0 +1,2 @@
1
+ /*! instant.page v5.2.0 - (C) 2023 Alexandre Dieulote */
2
+ let t,e,n,o,i,a=null,s=65,c=new Set;const r=1111;function d(t){o=performance.now();const e=t.target.closest("a");m(e)&&p(e.href,"high")}function u(t){if(performance.now()-o<r)return;if(!("closest"in t.target))return;const e=t.target.closest("a");m(e)&&(e.addEventListener("mouseout",f,{passive:!0}),i=setTimeout(()=>{p(e.href,"high"),i=void 0},s))}function l(t){const e=t.target.closest("a");m(e)&&p(e.href,"high")}function f(t){t.relatedTarget&&t.target.closest("a")==t.relatedTarget.closest("a")||i&&(clearTimeout(i),i=void 0)}function h(t){if(performance.now()-o<r)return;const e=t.target.closest("a");if(t.which>1||t.metaKey||t.ctrlKey)return;if(!e)return;e.addEventListener("click",function(t){1337!=t.detail&&t.preventDefault()},{capture:!0,passive:!1,once:!0});const n=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1,detail:1337});e.dispatchEvent(n)}function m(o){if(o&&o.href&&(!n||"instant"in o.dataset)){if(o.origin!=location.origin){if(!(e||"instant"in o.dataset)||!a)return}if(["http:","https:"].includes(o.protocol)&&("http:"!=o.protocol||"https:"!=location.protocol)&&(t||!o.search||"instant"in o.dataset)&&!(o.hash&&o.pathname+o.search==location.pathname+location.search||"noInstant"in o.dataset))return!0}}function p(t,e="auto"){if(c.has(t))return;const n=document.createElement("link");n.rel="prefetch",n.href=t,n.fetchPriority=e,n.as="document",document.head.appendChild(n),c.add(t)}!function(){if(!document.createElement("link").relList.supports("prefetch"))return;const o="instantVaryAccept"in document.body.dataset||"Shopify"in window,i=navigator.userAgent.indexOf("Chrome/");i>-1&&(a=parseInt(navigator.userAgent.substring(i+"Chrome/".length)));if(o&&a&&a<110)return;const c="instantMousedownShortcut"in document.body.dataset;t="instantAllowQueryString"in document.body.dataset,e="instantAllowExternalLinks"in document.body.dataset,n="instantWhitelist"in document.body.dataset;const r={capture:!0,passive:!0};let f=!1,v=!1,g=!1;if("instantIntensity"in document.body.dataset){const t=document.body.dataset.instantIntensity;if(t.startsWith("mousedown"))f=!0,"mousedown-only"==t&&(v=!0);else if(t.startsWith("viewport")){const e=navigator.connection&&navigator.connection.saveData,n=navigator.connection&&navigator.connection.effectiveType&&navigator.connection.effectiveType.includes("2g");e||n||("viewport"==t?document.documentElement.clientWidth*document.documentElement.clientHeight<45e4&&(g=!0):"viewport-all"==t&&(g=!0))}else{const e=parseInt(t);isNaN(e)||(s=e)}}v||document.addEventListener("touchstart",d,r);f?c||document.addEventListener("mousedown",l,r):document.addEventListener("mouseover",u,r);c&&document.addEventListener("mousedown",h,r);if(g){let t=window.requestIdleCallback;t||(t=(t=>{t()})),t(function(){const t=new IntersectionObserver(e=>{e.forEach(e=>{if(e.isIntersecting){const n=e.target;t.unobserve(n),p(n.href)}})});document.querySelectorAll("a").forEach(e=>{m(e)&&t.observe(e)})},{timeout:1500})}}();
@@ -0,0 +1,48 @@
1
+ // script adapted from Adam Argyle's tutorial: https://web.dev/building-a-theme-switch-component/
2
+
3
+ const storageKey = 'theme-preference';
4
+
5
+ const onClick = () => {
6
+ theme.value = theme.value === 'light' ? 'dark' : 'light';
7
+
8
+ setPreference();
9
+ };
10
+
11
+ const getColorPreference = () => {
12
+ if (localStorage.getItem(storageKey)) return localStorage.getItem(storageKey);
13
+ else
14
+ return window.matchMedia('(prefers-color-scheme: dark)').matches
15
+ ? 'dark'
16
+ : 'light';
17
+ };
18
+
19
+ const setPreference = () => {
20
+ localStorage.setItem(storageKey, theme.value);
21
+ reflectPreference();
22
+ };
23
+
24
+ const reflectPreference = () => {
25
+ document.firstElementChild.setAttribute('data-bs-theme', theme.value);
26
+
27
+ document
28
+ .querySelector('#theme-toggle')
29
+ ?.setAttribute('aria-label', theme.value);
30
+ };
31
+
32
+ const theme = {
33
+ value: getColorPreference(),
34
+ };
35
+
36
+ reflectPreference();
37
+
38
+ window.onload = () => {
39
+ reflectPreference();
40
+ document.querySelector('#theme-toggle').addEventListener('click', onClick);
41
+ };
42
+
43
+ window
44
+ .matchMedia('(prefers-color-scheme: dark)')
45
+ .addEventListener('change', ({ matches: isDark }) => {
46
+ theme.value = isDark ? 'dark' : 'light';
47
+ setPreference();
48
+ });
@@ -0,0 +1,24 @@
1
+ {
2
+ "globalHeaders": {
3
+ "Content-Security-Policy": "upgrade-insecure-requests",
4
+ "Permissions-Policy": "autoplay=()",
5
+ "Referrer-Policy": "no-referrer-when-downgrade",
6
+ "X-Content-Type-Options": "nosniff",
7
+ "X-Frame-Options": "SAMEORIGIN",
8
+ "X-XSS-Protection": "0"
9
+ },
10
+ "responseOverrides": {
11
+ "404": {
12
+ "rewrite": "/404/",
13
+ "statusCode": 404
14
+ }
15
+ },
16
+ "routes": [
17
+ {
18
+ "route": "/favicon.*",
19
+ "headers": {
20
+ "cache-control": "public, max-age=15770000"
21
+ }
22
+ }
23
+ ]
24
+ }