unaltraweb 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (444) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +20 -0
  3. data/Makefile +412 -0
  4. data/README.md +226 -0
  5. data/_config.yml +842 -0
  6. data/_data/i18n/ca.yml +278 -0
  7. data/_data/i18n/en.yml +278 -0
  8. data/_data/i18n/es.yml +278 -0
  9. data/_includes/audio.liquid +30 -0
  10. data/_includes/bib_search.liquid +5 -0
  11. data/_includes/blog-list.liquid +66 -0
  12. data/_includes/book-citation.liquid +33 -0
  13. data/_includes/citation.liquid +26 -0
  14. data/_includes/custom_head.liquid +3 -0
  15. data/_includes/custom_scripts.liquid +5 -0
  16. data/_includes/cv/list.liquid +5 -0
  17. data/_includes/cv/list_groups.liquid +51 -0
  18. data/_includes/cv/map.liquid +29 -0
  19. data/_includes/cv/nested_list.liquid +16 -0
  20. data/_includes/cv/time_table.liquid +118 -0
  21. data/_includes/cv-download-card.liquid +26 -0
  22. data/_includes/developer-mode-switcher.liquid +24 -0
  23. data/_includes/disqus.liquid +13 -0
  24. data/_includes/distill_scripts.liquid +298 -0
  25. data/_includes/documentation-download-detail.liquid +76 -0
  26. data/_includes/documentation-downloads.liquid +71 -0
  27. data/_includes/documentation-profile-attributes.liquid +4 -0
  28. data/_includes/documentation-section-toc.liquid +9 -0
  29. data/_includes/documentation-sidebar.liquid +112 -0
  30. data/_includes/figure.liquid +87 -0
  31. data/_includes/footer.liquid +66 -0
  32. data/_includes/giscus.liquid +25 -0
  33. data/_includes/head.liquid +220 -0
  34. data/_includes/header.liquid +544 -0
  35. data/_includes/latest_posts.liquid +61 -0
  36. data/_includes/localized-date.liquid +5 -0
  37. data/_includes/manual-bibliography.liquid +2 -0
  38. data/_includes/manual-featured-readings.liquid +12 -0
  39. data/_includes/manual-other-readings.liquid +12 -0
  40. data/_includes/manual-page-toc.liquid +11 -0
  41. data/_includes/manual-sidebar.liquid +58 -0
  42. data/_includes/manual-teachers.liquid +74 -0
  43. data/_includes/metadata.liquid +278 -0
  44. data/_includes/news.liquid +48 -0
  45. data/_includes/newsletter.liquid +68 -0
  46. data/_includes/page-hero.liquid +96 -0
  47. data/_includes/page-link.liquid +8 -0
  48. data/_includes/pagination.liquid +22 -0
  49. data/_includes/post-reading-time.liquid +29 -0
  50. data/_includes/previous-next.liquid +37 -0
  51. data/_includes/profile-card.liquid +49 -0
  52. data/_includes/profile-feature-matrix.liquid +75 -0
  53. data/_includes/profile-highlights.liquid +122 -0
  54. data/_includes/project-grid.liquid +26 -0
  55. data/_includes/project-resource-link.liquid +45 -0
  56. data/_includes/project-resources.liquid +21 -0
  57. data/_includes/projects.liquid +38 -0
  58. data/_includes/projects_horizontal.liquid +37 -0
  59. data/_includes/publications-metrics-summary.liquid +69 -0
  60. data/_includes/publications-summary.liquid +127 -0
  61. data/_includes/reading-biblio-controls.liquid +65 -0
  62. data/_includes/reading-cover-card.liquid +93 -0
  63. data/_includes/reading-rating.liquid +11 -0
  64. data/_includes/recommended-readings.liquid +30 -0
  65. data/_includes/related_posts.liquid +39 -0
  66. data/_includes/repository/repo.liquid +48 -0
  67. data/_includes/repository/repo_trophies.liquid +44 -0
  68. data/_includes/repository/repo_user.liquid +35 -0
  69. data/_includes/resume/awards.liquid +19 -0
  70. data/_includes/resume/basics.liquid +28 -0
  71. data/_includes/resume/certificates.liquid +35 -0
  72. data/_includes/resume/education.liquid +54 -0
  73. data/_includes/resume/interests.liquid +34 -0
  74. data/_includes/resume/languages.liquid +31 -0
  75. data/_includes/resume/projects.liquid +32 -0
  76. data/_includes/resume/publications.liquid +28 -0
  77. data/_includes/resume/references.liquid +31 -0
  78. data/_includes/resume/skills.liquid +33 -0
  79. data/_includes/resume/volunteer.liquid +52 -0
  80. data/_includes/resume/work.liquid +52 -0
  81. data/_includes/scripts.liquid +364 -0
  82. data/_includes/search-data.js.liquid +341 -0
  83. data/_includes/selected_papers.liquid +3 -0
  84. data/_includes/t.liquid +31 -0
  85. data/_includes/team-grid.liquid +172 -0
  86. data/_includes/video.liquid +97 -0
  87. data/_layouts/about.liquid +93 -0
  88. data/_layouts/archive.liquid +45 -0
  89. data/_layouts/bib.liquid +677 -0
  90. data/_layouts/book-review.liquid +225 -0
  91. data/_layouts/book-shelf.liquid +66 -0
  92. data/_layouts/cv.liquid +127 -0
  93. data/_layouts/default.liquid +70 -0
  94. data/_layouts/distill.liquid +132 -0
  95. data/_layouts/documentation-download-detail.liquid +5 -0
  96. data/_layouts/documentation-home.liquid +100 -0
  97. data/_layouts/documentation-page.liquid +45 -0
  98. data/_layouts/manual-bib.liquid +73 -0
  99. data/_layouts/manual-chapter.liquid +99 -0
  100. data/_layouts/manual-featured-bib.liquid +100 -0
  101. data/_layouts/manual-home.liquid +120 -0
  102. data/_layouts/none.liquid +1 -0
  103. data/_layouts/outputs.liquid +29 -0
  104. data/_layouts/page.liquid +52 -0
  105. data/_layouts/post.liquid +95 -0
  106. data/_layouts/profile.liquid +36 -0
  107. data/_layouts/profiles.liquid +36 -0
  108. data/_layouts/project.liquid +7 -0
  109. data/_layouts/repositories.liquid +58 -0
  110. data/_layouts/theses.liquid +126 -0
  111. data/_plugins/bibliography_profiles.rb +164 -0
  112. data/_plugins/callouts.rb +104 -0
  113. data/_plugins/code_blocks.rb +277 -0
  114. data/_plugins/computation_figure_images.rb +266 -0
  115. data/_plugins/computation_sources.rb +42 -0
  116. data/_plugins/content_search_index.rb +210 -0
  117. data/_plugins/details.rb +23 -0
  118. data/_plugins/external-posts.rb +124 -0
  119. data/_plugins/figure_captions.rb +800 -0
  120. data/_plugins/file-exists.rb +22 -0
  121. data/_plugins/google-scholar-citations.rb +86 -0
  122. data/_plugins/hide-custom-bibtex.rb +18 -0
  123. data/_plugins/inspirehep-citations.rb +57 -0
  124. data/_plugins/localized_visual_sources.rb +145 -0
  125. data/_plugins/manual_release_metadata.rb +47 -0
  126. data/_plugins/mermaid_mmd_images.rb +233 -0
  127. data/_plugins/profile-pages.rb +28 -0
  128. data/_plugins/remove-accents.rb +32 -0
  129. data/_plugins/reproducible_build_time.rb +55 -0
  130. data/_plugins/search-data.rb +83 -0
  131. data/_plugins/theme-cache-bust.rb +56 -0
  132. data/_plugins/vega_visual_images.rb +290 -0
  133. data/_plugins/web_capture_images.rb +154 -0
  134. data/_sass/_base.scss +2133 -0
  135. data/_sass/_blog.scss +67 -0
  136. data/_sass/_callouts.scss +100 -0
  137. data/_sass/_custom.scss +437 -0
  138. data/_sass/_cv.scss +274 -0
  139. data/_sass/_developer.scss +97 -0
  140. data/_sass/_distill.scss +185 -0
  141. data/_sass/_documentation.scss +2220 -0
  142. data/_sass/_layout.scss +218 -0
  143. data/_sass/_manual.scss +2691 -0
  144. data/_sass/_profile.scss +323 -0
  145. data/_sass/_projects.scss +163 -0
  146. data/_sass/_reading.scss +465 -0
  147. data/_sass/_site-custom.scss +3 -0
  148. data/_sass/_tabs.scss +48 -0
  149. data/_sass/_team.scss +230 -0
  150. data/_sass/_themes.scss +254 -0
  151. data/_sass/_typograms.scss +132 -0
  152. data/_sass/_variables.scss +52 -0
  153. data/_sass/font-awesome/_animated.scss +152 -0
  154. data/_sass/font-awesome/_bordered-pulled.scss +20 -0
  155. data/_sass/font-awesome/_core.scss +49 -0
  156. data/_sass/font-awesome/_fixed-width.scss +7 -0
  157. data/_sass/font-awesome/_functions.scss +57 -0
  158. data/_sass/font-awesome/_icons.scss +13 -0
  159. data/_sass/font-awesome/_list.scss +18 -0
  160. data/_sass/font-awesome/_mixins.scss +65 -0
  161. data/_sass/font-awesome/_rotated-flipped.scss +31 -0
  162. data/_sass/font-awesome/_screen-reader.scss +14 -0
  163. data/_sass/font-awesome/_shims.scss +1578 -0
  164. data/_sass/font-awesome/_sizing.scss +16 -0
  165. data/_sass/font-awesome/_stacked.scss +32 -0
  166. data/_sass/font-awesome/_variables.scss +5044 -0
  167. data/_sass/font-awesome/brands.scss +30 -0
  168. data/_sass/font-awesome/fontawesome.scss +21 -0
  169. data/_sass/font-awesome/regular.scss +27 -0
  170. data/_sass/font-awesome/solid.scss +27 -0
  171. data/_sass/font-awesome/v4-shims.scss +11 -0
  172. data/_sass/tabler-icons/tabler-icons-filled.scss +1646 -0
  173. data/_sass/tabler-icons/tabler-icons-outline.scss +9859 -0
  174. data/_sass/tabler-icons/tabler-icons.scss +11463 -0
  175. data/_scripts/cronitor-analytics-setup.js +9 -0
  176. data/_scripts/giscus-setup.js +48 -0
  177. data/_scripts/google-analytics-setup.js +9 -0
  178. data/_scripts/open-panel-analytics-setup.js +14 -0
  179. data/_scripts/photoswipe-setup.js +11 -0
  180. data/assets/audio/epicaly-short-113909.mp3 +0 -0
  181. data/assets/bibliography/2018-12-22-distill.bib +7 -0
  182. data/assets/css/academicons.min.css +1 -0
  183. data/assets/css/bootstrap-toc.min.css +4 -0
  184. data/assets/css/bootstrap.min.css +7 -0
  185. data/assets/css/bootstrap.min.css.map +1 -0
  186. data/assets/css/jekyll-pygments-themes-github.css +209 -0
  187. data/assets/css/jekyll-pygments-themes-native.css +232 -0
  188. data/assets/css/jupyter-grade3.css +3758 -0
  189. data/assets/css/jupyter-monokai.css +3758 -0
  190. data/assets/css/jupyter.css +383 -0
  191. data/assets/css/main.scss +36 -0
  192. data/assets/css/mdb.min.css +48 -0
  193. data/assets/css/mdb.min.css.map +1 -0
  194. data/assets/css/scholar-icons.css +386 -0
  195. data/assets/fonts/academicons.ttf +0 -0
  196. data/assets/fonts/academicons.woff +0 -0
  197. data/assets/fonts/scholar-icons.ttf +0 -0
  198. data/assets/fonts/scholar-icons.woff +0 -0
  199. data/assets/fonts/tabler-icons-filled.ttf +0 -0
  200. data/assets/fonts/tabler-icons-filled.woff +0 -0
  201. data/assets/fonts/tabler-icons-filled.woff2 +0 -0
  202. data/assets/fonts/tabler-icons-outline.ttf +0 -0
  203. data/assets/fonts/tabler-icons-outline.woff +0 -0
  204. data/assets/fonts/tabler-icons-outline.woff2 +0 -0
  205. data/assets/fonts/tabler-icons.ttf +0 -0
  206. data/assets/fonts/tabler-icons.woff +0 -0
  207. data/assets/fonts/tabler-icons.woff2 +0 -0
  208. data/assets/html/relativity.html +15 -0
  209. data/assets/img/1.jpg +0 -0
  210. data/assets/img/10.jpg +0 -0
  211. data/assets/img/11.jpg +0 -0
  212. data/assets/img/12.jpg +0 -0
  213. data/assets/img/2.jpg +0 -0
  214. data/assets/img/3.jpg +0 -0
  215. data/assets/img/4.jpg +0 -0
  216. data/assets/img/5.jpg +0 -0
  217. data/assets/img/6.jpg +0 -0
  218. data/assets/img/7.jpg +0 -0
  219. data/assets/img/8.jpg +0 -0
  220. data/assets/img/9.jpg +0 -0
  221. data/assets/img/book_covers/the_godfather.jpg +0 -0
  222. data/assets/img/brand/dosquartsdedocs-logo-cafe.svg +31 -0
  223. data/assets/img/brand/dosquartsdedocs-logo-footer-cafe.svg +31 -0
  224. data/assets/img/brand/dosquartsdedocs-logo-white.svg +31 -0
  225. data/assets/img/brand/dosquartsdedocs-logo.svg +31 -0
  226. data/assets/img/prof_pic.jpg +0 -0
  227. data/assets/img/prof_pic_color.png +0 -0
  228. data/assets/img/profile-placeholder.svg +8 -0
  229. data/assets/img/publication_preview/brownian-motion.gif +0 -0
  230. data/assets/img/publication_preview/goodchild1992-gis-cover.jpg +0 -0
  231. data/assets/img/publication_preview/gutierrez2020-jtrg-preview.jpg +0 -0
  232. data/assets/img/publication_preview/harvey1989-postmodernity-cover.jpg +0 -0
  233. data/assets/img/publication_preview/tobler1970-economic-geography-cover.jpg +0 -0
  234. data/assets/img/publication_preview/tuan1977-space-place-cover.jpg +0 -0
  235. data/assets/img/publication_preview/wave-mechanics.gif +0 -0
  236. data/assets/img/publication_preview/zaragozi2025-rooftop-pv-preview.jpg +0 -0
  237. data/assets/img/rhino.png +0 -0
  238. data/assets/img/team/aaron-gutierrez.png +0 -0
  239. data/assets/img/team/alba-font.png +0 -0
  240. data/assets/img/team/alba-viana.png +0 -0
  241. data/assets/img/team/alejandro-gonzalez.png +0 -0
  242. data/assets/img/team/ana-pastor.png +0 -0
  243. data/assets/img/team/antoni-domenech.png +0 -0
  244. data/assets/img/team/benito-zaragozi.png +0 -0
  245. data/assets/img/team/cinta-sanz.png +0 -0
  246. data/assets/img/team/daniel-miravet.png +0 -0
  247. data/assets/img/team/eugenia-altamirano.png +0 -0
  248. data/assets/img/team/fiammetta-brandajs.png +0 -0
  249. data/assets/img/team/francesc-gonzalez.png +0 -0
  250. data/assets/img/team/isabel-paulino.png +0 -0
  251. data/assets/img/team/joan-borras.png +0 -0
  252. data/assets/img/team/julie-wilson.png +0 -0
  253. data/assets/img/team/liliana-sole.png +0 -0
  254. data/assets/img/team/maria-casado.png +0 -0
  255. data/assets/img/team/maria-medina.png +0 -0
  256. data/assets/img/team/marta-nello.png +0 -0
  257. data/assets/img/team/mogrify +1 -0
  258. data/assets/img/team/oscar-saladie.png +0 -0
  259. data/assets/img/team/paolo-russo.png +0 -0
  260. data/assets/img/team/raquel-santos.png +0 -0
  261. data/assets/img/team/salvador-anton.png +0 -0
  262. data/assets/img/team/sunsi-huertas.png +0 -0
  263. data/assets/img/team/user-placeholder.png +0 -0
  264. data/assets/img/team/wilbert-den-hoed.png +0 -0
  265. data/assets/img/team/xavier-delclos.png +0 -0
  266. data/assets/img/template_error.png +0 -0
  267. data/assets/js/bibsearch.js +70 -0
  268. data/assets/js/bootstrap-toc.min.js +5 -0
  269. data/assets/js/bootstrap.bundle.min.js +7 -0
  270. data/assets/js/bootstrap.bundle.min.js.map +1 -0
  271. data/assets/js/callouts.js +115 -0
  272. data/assets/js/chartjs-setup.js +14 -0
  273. data/assets/js/common.js +117 -0
  274. data/assets/js/content-search-match.js +159 -0
  275. data/assets/js/content-search.js +441 -0
  276. data/assets/js/copy_code.js +60 -0
  277. data/assets/js/custom.js +6 -0
  278. data/assets/js/developer-mode.js +103 -0
  279. data/assets/js/diff2html-setup.js +20 -0
  280. data/assets/js/distillpub/overrides.js +27 -0
  281. data/assets/js/distillpub/template.v2.js +9616 -0
  282. data/assets/js/distillpub/template.v2.js.map +1 -0
  283. data/assets/js/distillpub/transforms.v2.js +14557 -0
  284. data/assets/js/distillpub/transforms.v2.js.map +1 -0
  285. data/assets/js/documentation.js +435 -0
  286. data/assets/js/echarts-setup.js +29 -0
  287. data/assets/js/highlight-search-term.js +110 -0
  288. data/assets/js/jupyter_new_tab.js +18 -0
  289. data/assets/js/leaflet-setup.js +22 -0
  290. data/assets/js/manual.js +308 -0
  291. data/assets/js/masonry.js +12 -0
  292. data/assets/js/mathjax-setup.js +46 -0
  293. data/assets/js/mermaid-setup.js +37 -0
  294. data/assets/js/newsletter.js +105 -0
  295. data/assets/js/no_defer.js +24 -0
  296. data/assets/js/plotly-setup.js +52 -0
  297. data/assets/js/profile-nav.js +92 -0
  298. data/assets/js/progress-bar.js +73 -0
  299. data/assets/js/pseudocode-setup.js +18 -0
  300. data/assets/js/search/base-styles.min.js +286 -0
  301. data/assets/js/search/command-score.min.js +7 -0
  302. data/assets/js/search/hotkeys-js/hotkeys.esm.min.js +18 -0
  303. data/assets/js/search/lit/decorators.min.js +7 -0
  304. data/assets/js/search/lit/directives/class-map.min.js +7 -0
  305. data/assets/js/search/lit/directives/join.min.js +7 -0
  306. data/assets/js/search/lit/directives/live.min.js +7 -0
  307. data/assets/js/search/lit/directives/ref.min.js +7 -0
  308. data/assets/js/search/lit/directives/repeat.min.js +7 -0
  309. data/assets/js/search/lit/directives/unsafe-html.min.js +7 -0
  310. data/assets/js/search/lit/index.min.js +7 -0
  311. data/assets/js/search/lit-element/lit-element.min.js +12 -0
  312. data/assets/js/search/lit-html/directives/class-map.min.js +22 -0
  313. data/assets/js/search/lit-html/directives/join.min.js +12 -0
  314. data/assets/js/search/lit-html/directives/live.min.js +28 -0
  315. data/assets/js/search/lit-html/directives/ref.min.js +32 -0
  316. data/assets/js/search/lit-html/directives/repeat.min.js +27 -0
  317. data/assets/js/search/lit-html/directives/unsafe-html.min.js +22 -0
  318. data/assets/js/search/lit-html/is-server.min.js +12 -0
  319. data/assets/js/search/lit-html/lit-html.min.js +12 -0
  320. data/assets/js/search/ninja-action.min.js +101 -0
  321. data/assets/js/search/ninja-footer.min.js +62 -0
  322. data/assets/js/search/ninja-header.min.js +78 -0
  323. data/assets/js/search/ninja-keys.min.js +39 -0
  324. data/assets/js/search/reactive-element/decorators/custom-element.min.js +12 -0
  325. data/assets/js/search/reactive-element/decorators/event-options.min.js +12 -0
  326. data/assets/js/search/reactive-element/decorators/property.min.js +22 -0
  327. data/assets/js/search/reactive-element/decorators/query-all.min.js +17 -0
  328. data/assets/js/search/reactive-element/decorators/query-assigned-elements.min.js +17 -0
  329. data/assets/js/search/reactive-element/decorators/query-assigned-nodes.min.js +17 -0
  330. data/assets/js/search/reactive-element/decorators/query-async.min.js +17 -0
  331. data/assets/js/search/reactive-element/decorators/query.min.js +17 -0
  332. data/assets/js/search/reactive-element/decorators/state.min.js +27 -0
  333. data/assets/js/search/reactive-element/reactive-element.min.js +17 -0
  334. data/assets/js/search-setup.js +17 -0
  335. data/assets/js/shortcut-key.js +11 -0
  336. data/assets/js/tabs.min.js +5 -0
  337. data/assets/js/theme.js +314 -0
  338. data/assets/js/tooltips-setup.js +3 -0
  339. data/assets/js/typograms.js +1341 -0
  340. data/assets/js/vanilla-back-to-top.min.js +1 -0
  341. data/assets/js/vega-setup.js +24 -0
  342. data/assets/js/venobox-setup.js +5 -0
  343. data/assets/js/wechat.js +14 -0
  344. data/assets/js/zoom.js +15 -0
  345. data/assets/json/resume.json +98 -0
  346. data/assets/json/table_data.json +128 -0
  347. data/assets/jupyter/blog.ipynb +48 -0
  348. data/assets/pdf/example_pdf.pdf +0 -0
  349. data/assets/plotly/demo.html +72 -0
  350. data/assets/video/pexels-engin-akyurt-6069112-960x540-30fps.mp4 +0 -0
  351. data/assets/webfonts/fa-brands-400.ttf +0 -0
  352. data/assets/webfonts/fa-brands-400.woff2 +0 -0
  353. data/assets/webfonts/fa-regular-400.ttf +0 -0
  354. data/assets/webfonts/fa-regular-400.woff2 +0 -0
  355. data/assets/webfonts/fa-solid-900.ttf +0 -0
  356. data/assets/webfonts/fa-solid-900.woff2 +0 -0
  357. data/assets/webfonts/fa-v4compatibility.ttf +0 -0
  358. data/assets/webfonts/fa-v4compatibility.woff2 +0 -0
  359. data/docs/Gemfile +5 -0
  360. data/docs/_config.yml +83 -0
  361. data/docs/_documentation/en/01-quick-start.md +115 -0
  362. data/docs/_documentation/en/02-tools.md +146 -0
  363. data/docs/_documentation/en/03-usage.md +107 -0
  364. data/docs/_documentation/en/04-jekyll-basics.md +51 -0
  365. data/docs/_documentation/en/05-pages-collections.md +68 -0
  366. data/docs/_documentation/en/06-github-web-editing.md +92 -0
  367. data/docs/_documentation/en/10-profiles.md +125 -0
  368. data/docs/_documentation/en/11-unaltreselfie.md +39 -0
  369. data/docs/_documentation/en/12-unaltreprojecte.md +38 -0
  370. data/docs/_documentation/en/13-unaltremanual.md +237 -0
  371. data/docs/_documentation/en/14-unaltredocs.md +92 -0
  372. data/docs/_documentation/en/15-profile-checklist.md +39 -0
  373. data/docs/_documentation/en/20-syntax.md +353 -0
  374. data/docs/_documentation/en/21-themes.md +103 -0
  375. data/docs/_documentation/en/22-feature-reference.md +56 -0
  376. data/docs/_documentation/en/23-front-matter.md +51 -0
  377. data/docs/_documentation/en/24-data-files.md +28 -0
  378. data/docs/_documentation/en/30-customization.md +448 -0
  379. data/docs/_documentation/en/31-template.md +55 -0
  380. data/docs/_documentation/en/32-development.md +108 -0
  381. data/docs/_documentation/en/33-reusable-workflows.md +136 -0
  382. data/docs/_documentation/en/40-distribution.md +164 -0
  383. data/docs/_documentation/en/41-bibliometrics.md +137 -0
  384. data/docs/_documentation/en/42-docker-image.md +185 -0
  385. data/docs/_documentation/en/50-faq.md +33 -0
  386. data/docs/_pages/ca/index.md +35 -0
  387. data/docs/_pages/en/index.md +35 -0
  388. data/docs/_pages/es/index.md +35 -0
  389. data/docs/agents/action-prompts/00-start-site-session.txt +10 -0
  390. data/docs/agents/action-prompts/05-create-new-web.txt +5 -0
  391. data/docs/agents/action-prompts/10-content-update.txt +9 -0
  392. data/docs/agents/action-prompts/15-edit-default-content.txt +8 -0
  393. data/docs/agents/action-prompts/20-manual-teaching-materials.txt +18 -0
  394. data/docs/agents/action-prompts/22-manual-style-audit.txt +14 -0
  395. data/docs/agents/action-prompts/23-manual-structure-audit.txt +17 -0
  396. data/docs/agents/action-prompts/25-translation-prepublish.txt +8 -0
  397. data/docs/agents/action-prompts/30-project-site-update.txt +7 -0
  398. data/docs/agents/action-prompts/40-documentation-update.txt +7 -0
  399. data/docs/agents/action-prompts/50-bibliography-entry.txt +7 -0
  400. data/docs/agents/action-prompts/60-bibliometrics-refresh.txt +7 -0
  401. data/docs/agents/action-prompts/70-build-and-review.txt +12 -0
  402. data/docs/agents/manual-authoring-components.md +255 -0
  403. data/docs/agents/mcp-contract.md +162 -0
  404. data/docs/agents/quarto-computation-adoption.md +102 -0
  405. data/docs/assets/img/unaltraweb-docs-hero.svg +36 -0
  406. data/lib/unaltraweb/version.rb +8 -0
  407. data/lib/unaltraweb.rb +31 -0
  408. data/requirements.txt +5 -0
  409. data/scripts/biblio/fetch_scimago_csv.sh +126 -0
  410. data/scripts/biblio/metrics_common.py +154 -0
  411. data/scripts/biblio/metrics_merge_meta.py +73 -0
  412. data/scripts/biblio/metrics_update.py +826 -0
  413. data/scripts/computations/python/Dockerfile +37 -0
  414. data/scripts/computations/r/Dockerfile +31 -0
  415. data/scripts/computations/render.py +1267 -0
  416. data/scripts/cv/render_pdf_preview.sh +36 -0
  417. data/scripts/deploy/publish_branch.sh +80 -0
  418. data/scripts/generate_logo_variants.py +47 -0
  419. data/scripts/manual/Dockerfile +31 -0
  420. data/scripts/manual/build_pdf.py +1780 -0
  421. data/scripts/manual/filters/bibliography.lua +164 -0
  422. data/scripts/manual/filters/code-blocks.lua +102 -0
  423. data/scripts/manual/filters/figure-captions.lua +35 -0
  424. data/scripts/manual/publish_release.sh +281 -0
  425. data/scripts/manual/templates/manual.tex +494 -0
  426. data/scripts/manual/verify_release_assets.py +650 -0
  427. data/scripts/test_gem_build.py +128 -0
  428. data/scripts/test_reproducible_jekyll_build.py +191 -0
  429. data/scripts/test_wheel_install.py +282 -0
  430. data/scripts/unaltraweb-docker-mount.sh +36 -0
  431. data/scripts/unaltraweb-mcp-bootstrap.sh +105 -0
  432. data/scripts/unaltraweb-mcp-cleanup.sh +73 -0
  433. data/scripts/unaltraweb-mcp-project-id.sh +34 -0
  434. data/scripts/validate_distribution.py +563 -0
  435. data/scripts/validate_workflows.py +1285 -0
  436. data/scripts/web_captures/Dockerfile +31 -0
  437. data/scripts/web_captures/capture.mjs +157 -0
  438. data/scripts/web_captures/package-lock.json +56 -0
  439. data/scripts/web_captures/package.json +9 -0
  440. data/scripts/web_captures/render.py +867 -0
  441. data/src/unaltraweb_mcp/component-contract.json +153 -0
  442. data/src/unaltraweb_mcp/component-contract.schema.json +87 -0
  443. data/src/unaltraweb_mcp/docker_mount.py +19 -0
  444. metadata +861 -0
@@ -0,0 +1,26 @@
1
+ {% assign cv_pdf = include.pdf | default: page.cv_pdf %}
2
+ {% assign cv_preview = include.preview | default: page.cv_preview %}
3
+ {% assign cv_title = include.title | default: page.cv_title | default: page.title %}
4
+ {% assign cv_description = include.description | default: page.cv_description %}
5
+
6
+ {% if cv_pdf or cv_preview %}
7
+ <section class="cv-download-card">
8
+ {% if cv_preview %}
9
+ <a class="cv-download-preview" href="{{ cv_pdf | default: cv_preview | relative_url }}">
10
+ <img src="{{ cv_preview | relative_url }}" alt="{{ cv_title | escape }} preview">
11
+ </a>
12
+ {% endif %}
13
+ <div class="cv-download-body">
14
+ <h2>{{ cv_title }}</h2>
15
+ {% if cv_description %}<p>{{ cv_description }}</p>{% endif %}
16
+ {% if cv_pdf %}
17
+ <a class="cv-download-button" href="{{ cv_pdf | relative_url }}">
18
+ <i class="fa-solid fa-file-pdf" aria-hidden="true"></i>
19
+ <span>{{ include.button | default: 'Download PDF' }}</span>
20
+ </a>
21
+ {% else %}
22
+ <p class="cv-download-note">Add a PDF and generate a preview to enable the download button.</p>
23
+ {% endif %}
24
+ </div>
25
+ </section>
26
+ {% endif %}
@@ -0,0 +1,24 @@
1
+ {% assign current_profile = include.current_profile | default: site.unaltraweb.site_profile | default: 'unaltreprojecte' %}
2
+ {% assign current_lang = page.lang | default: site.default_lang | default: site.lang | default: 'en' %}
3
+ {% assign switcher_baseurl = site.baseurl | default: '' %}
4
+ {% assign profile_targets = 'unaltreselfie|unaltreselfie|4001,unaltreprojecte|unaltreprojecte|4002,unaltremanual|unaltremanual|4003,unaltredocs|unaltredocs|4004' | split: ',' %}
5
+
6
+ <aside class="developer-mode-switcher" data-developer-mode-switcher aria-label="Developer mode">
7
+ <div class="developer-mode-header" data-developer-mode-handle title="Drag to move">
8
+ <strong>Developer mode</strong>
9
+ <span class="developer-mode-current">Explore a build profile</span>
10
+ </div>
11
+ <nav class="developer-profile-switcher" aria-label="Explore a build profile">
12
+ {% for profile_target in profile_targets %}
13
+ {% assign profile_parts = profile_target | split: '|' %}
14
+ {% assign profile_key = profile_parts[0] %}
15
+ {% assign profile_label = profile_parts[1] %}
16
+ {% assign profile_port = profile_parts[2] %}
17
+ {% assign profile_active = false %}
18
+ {% if current_profile == profile_key %}
19
+ {% assign profile_active = true %}
20
+ {% endif %}
21
+ <a class="developer-profile-link{% if profile_active %} active{% endif %}" href="http://localhost:{{ profile_port }}{{ switcher_baseurl }}/{{ current_lang }}/" target="_self" data-developer-profile-link data-profile-port="{{ profile_port }}" data-profile-key="{{ profile_key }}"{% if profile_active %} aria-current="page" data-current-profile="{{ current_profile }}"{% endif %}>{{ profile_label }}</a>
22
+ {% endfor %}
23
+ </nav>
24
+ </aside>
@@ -0,0 +1,13 @@
1
+ <div id="disqus_thread" style="max-width: {{ site.max_width }}; margin: 0 auto;">
2
+ <script type="text/javascript">
3
+ var disqus_shortname = '{{ site.disqus_shortname }}';
4
+ var disqus_identifier = '{{ page.id }}';
5
+ var disqus_title = {{ page.title | jsonify }};
6
+ (function() {
7
+ var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
8
+ dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
9
+ (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
10
+ })();
11
+ </script>
12
+ <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
13
+ </div>
@@ -0,0 +1,298 @@
1
+ <!-- jQuery -->
2
+ <script
3
+ src="{{ site.third_party_libraries.jquery.url.js }}"
4
+ integrity="{{ site.third_party_libraries.jquery.integrity.js }}"
5
+ crossorigin="anonymous"
6
+ ></script>
7
+
8
+ <!-- Bootsrap & MDB scripts -->
9
+ <script src="{{ '/assets/js/bootstrap.bundle.min.js' | relative_url }}"></script>
10
+ <script
11
+ src="{{ site.third_party_libraries.mdb.url.js }}"
12
+ integrity="{{ site.third_party_libraries.mdb.integrity.js }}"
13
+ crossorigin="anonymous"
14
+ ></script>
15
+
16
+ <!-- Custom overrides -->
17
+ <script src="{{ '/assets/js/distillpub/overrides.js' | relative_url }}"></script>
18
+
19
+ {% if page.mermaid and page.mermaid.enabled %}
20
+ <!-- Mermaid and D3 -->
21
+ <script
22
+ defer
23
+ src="{{ site.third_party_libraries.mermaid.url.js }}"
24
+ integrity="{{ site.third_party_libraries.mermaid.integrity.js }}"
25
+ crossorigin="anonymous"
26
+ ></script>
27
+ {% if page.mermaid.zoomable %}
28
+ <script
29
+ defer
30
+ src="{{ site.third_party_libraries.d3.url.js }}"
31
+ integrity="{{ site.third_party_libraries.d3.integrity.js }}"
32
+ crossorigin="anonymous"
33
+ ></script>
34
+ {% endif %}
35
+ <script defer src="{{ '/assets/js/mermaid-setup.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
36
+ {% endif %}
37
+
38
+ {% if page.code_diff %}
39
+ <!-- Diff2HTML -->
40
+ <!-- diff2html doesn't go well with Bootstrap Table -->
41
+ <script
42
+ src="{{ site.third_party_libraries.diff2html.url.js }}"
43
+ integrity="{{ site.third_party_libraries.diff2html.integrity.js }}"
44
+ crossorigin="anonymous"
45
+ ></script>
46
+ <script defer src="{{ '/assets/js/diff2html-setup.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
47
+ {% endif %}
48
+
49
+ {% if page.map %}
50
+ <!-- Leaflet -->
51
+ <script
52
+ src="{{ site.third_party_libraries.leaflet.url.js }}"
53
+ integrity="{{ site.third_party_libraries.leaflet.integrity.js }}"
54
+ crossorigin="anonymous"
55
+ ></script>
56
+ <script defer src="{{ '/assets/js/leaflet-setup.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
57
+ {% endif %}
58
+
59
+ {% if page.chart and page.chart.chartjs %}
60
+ <!-- Chart.js -->
61
+ <script
62
+ defer
63
+ src="{{ site.third_party_libraries.chartjs.url.js }}"
64
+ integrity="{{ site.third_party_libraries.chartjs.integrity.js }}"
65
+ crossorigin="anonymous"
66
+ ></script>
67
+ <script defer src="{{ '/assets/js/chartjs-setup.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
68
+ {% endif %}
69
+
70
+ {% if page.chart and page.chart.echarts %}
71
+ <!-- ECharts -->
72
+ <script
73
+ src="{{ site.third_party_libraries.echarts.url.js.library }}"
74
+ integrity="{{ site.third_party_libraries.echarts.integrity.js.library }}"
75
+ crossorigin="anonymous"
76
+ ></script>
77
+ {% if site.enable_darkmode %}
78
+ <script
79
+ src="{{ site.third_party_libraries.echarts.url.js.dark_theme }}"
80
+ integrity="{{ site.third_party_libraries.echarts.integrity.js.dark_theme }}"
81
+ crossorigin="anonymous"
82
+ ></script>
83
+ {% endif %}
84
+ <script defer src="{{ '/assets/js/echarts-setup.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
85
+ {% endif %}
86
+
87
+ {% if page.chart and page.chart.plotly %}
88
+ <!-- Plotly -->
89
+ <script
90
+ defer
91
+ src="{{ site.third_party_libraries.plotly.url.js }}"
92
+ integrity="{{ site.third_party_libraries.plotly.integrity.js }}"
93
+ crossorigin="anonymous"
94
+ ></script>
95
+ <script defer src="{{ '/assets/js/plotly-setup.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
96
+ {% endif %}
97
+
98
+ {% if page.chart and page.chart.vega_lite %}
99
+ <!-- Vega -->
100
+ <script
101
+ defer
102
+ src="{{ site.third_party_libraries.vega.url.js }}"
103
+ integrity="{{ site.third_party_libraries.vega.integrity.js }}"
104
+ crossorigin="anonymous"
105
+ ></script>
106
+ <script
107
+ defer
108
+ src="{{ site.third_party_libraries.vega-lite.url.js }}"
109
+ integrity="{{ site.third_party_libraries.vega-lite.integrity.js }}"
110
+ crossorigin="anonymous"
111
+ ></script>
112
+ <script
113
+ defer
114
+ src="{{ site.third_party_libraries.vega-embed.url.js }}"
115
+ integrity="{{ site.third_party_libraries.vega-embed.integrity.js }}"
116
+ crossorigin="anonymous"
117
+ ></script>
118
+ <script defer src="{{ '/assets/js/vega-setup.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
119
+ {% endif %}
120
+
121
+ {% if page.tikzjax %}
122
+ <!-- Tikzjax -->
123
+ <script
124
+ defer
125
+ src="https://tikzjax.com/v1/tikzjax.js"
126
+ integrity="sha256-+1qyucCXRZJrCg3lm3KxRt/7WXaYhBid4/1XJRHGB1E="
127
+ crossorigin="anonymous"
128
+ ></script>
129
+ {% endif %}
130
+
131
+ {% if page.typograms %}
132
+ <!-- Typograms -->
133
+ <script src="{{ '/assets/js/typograms.js' | relative_url | bust_file_cache }}"></script>
134
+ {% endif %}
135
+
136
+ {% if site.enable_tooltips %}
137
+ <!-- Tooltips -->
138
+ <script src="{{ '/assets/js/tooltips-setup.js' | relative_url | bust_file_cache }}"></script>
139
+ {% endif %}
140
+
141
+ {% if site.enable_medium_zoom %}
142
+ <!-- Medium Zoom JS -->
143
+ <script
144
+ defer
145
+ src="{{ site.third_party_libraries.medium_zoom.url.js }}"
146
+ integrity="{{ site.third_party_libraries.medium_zoom.integrity.js }}"
147
+ crossorigin="anonymous"
148
+ ></script>
149
+ <script defer src="{{ '/assets/js/zoom.js' | relative_url | bust_file_cache }}"></script>
150
+ {% endif %}
151
+
152
+ {% if page.toc and page.toc.sidebar %}
153
+ <!-- Sidebar Table of Contents -->
154
+ <script defer src="{{ '/assets/js/bootstrap-toc.min.js' | relative_url | bust_file_cache }}"></script>
155
+ {% endif %}
156
+
157
+ {% if page.pretty_table %}
158
+ <!-- Bootstrap Table -->
159
+ <!-- Bootstrap Table doesn't go well with diff2html -->
160
+ <script
161
+ defer
162
+ src="{{ site.third_party_libraries.bootstrap-table.url.js }}"
163
+ integrity="{{ site.third_party_libraries.bootstrap-table.integrity.js }}"
164
+ crossorigin="anonymous"
165
+ ></script>
166
+ {% endif %}
167
+
168
+ <!-- Load Common JS -->
169
+ <script src="{{ '/assets/js/no_defer.js' | relative_url | bust_file_cache }}"></script>
170
+ <script defer src="{{ '/assets/js/common.js' | relative_url | bust_file_cache }}"></script>
171
+ <script defer src="{{ '/assets/js/copy_code.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
172
+ <script defer src="{{ '/assets/js/content-search-match.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
173
+ <script defer src="{{ '/assets/js/content-search.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
174
+
175
+ <!-- Jupyter Open External Links New Tab -->
176
+ <script defer src="{{ '/assets/js/jupyter_new_tab.js' | relative_url | bust_file_cache }}"></script>
177
+
178
+ <!-- Removed Badges -->
179
+
180
+ {% if site.enable_math %}
181
+ <!-- MathJax -->
182
+ <script
183
+ defer
184
+ type="text/javascript"
185
+ id="MathJax-script"
186
+ src="{{ site.third_party_libraries.mathjax.url.js }}"
187
+ integrity="{{ site.third_party_libraries.mathjax.integrity.js }}"
188
+ crossorigin="anonymous"
189
+ ></script>
190
+ <script>window.unaltrawebMathJaxTags = {{ site.unaltraweb.mathjax.tags | default: 'all' | jsonify }};</script>
191
+ <script src="{{ '/assets/js/mathjax-setup.js' | relative_url | bust_file_cache }}"></script>
192
+ <script
193
+ defer
194
+ src="{{ site.third_party_libraries.polyfill.url.js }}"
195
+ crossorigin="anonymous"
196
+ ></script>
197
+ <!-- Removed Pseudocode -->
198
+ {% endif %}
199
+
200
+ {% if site.enable_google_analytics %}
201
+ <!-- Analytics -->
202
+ <!-- Global site tag (gtag.js) - Google Analytics -->
203
+ <script async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}"></script>
204
+ <script defer src="{{ '/assets/js/google-analytics-setup.js' | relative_url }}"></script>
205
+ {% endif %}
206
+
207
+ {% if site.enable_cronitor_analytics %}
208
+ <!-- Cronitor RUM -->
209
+ <script async src="https://rum.cronitor.io/script.js"></script>
210
+ <script defer src="{{ '/assets/js/cronitor-analytics-setup.js' | relative_url }}"></script>
211
+ {% endif %}
212
+ {% if site.enable_pirsch_analytics %}
213
+ <script
214
+ defer
215
+ src="https://api.pirsch.io/pa.js"
216
+ id="pianjs"
217
+ data-code="{{ site.pirsch_analytics }}"
218
+ ></script>
219
+ {% endif %}
220
+ {% if site.enable_openpanel_analytics %}
221
+ <script defer src="{{ '/assets/js/open-panel-analytics-setup.js' | relative_url }}"></script>
222
+ <script async defer src="https://openpanel.dev/op1.js"></script>
223
+ {% endif %}
224
+
225
+ {% if site.enable_progressbar %}
226
+ <!-- Scrolling Progress Bar -->
227
+ <script defer src="{{ '/assets/js/progress-bar.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
228
+ {% endif %}
229
+
230
+ {% if page.images %}
231
+ <!-- Image Layouts -->
232
+ {% if page.images.compare %}
233
+ <script
234
+ defer
235
+ src="{{ site.third_party_libraries.img-comparison-slider.url.js }}"
236
+ integrity="{{ site.third_party_libraries.img-comparison-slider.integrity.js }}"
237
+ crossorigin="anonymous"
238
+ ></script>
239
+ {% endif %}
240
+ {% if page.images.lightbox2 %}
241
+ <script
242
+ defer
243
+ src="{{ site.third_party_libraries.lightbox2.url.js }}"
244
+ integrity="{{ site.third_party_libraries.lightbox2.integrity.js }}"
245
+ crossorigin="anonymous"
246
+ ></script>
247
+ {% endif %}
248
+ {% if page.images.photoswipe %}
249
+ <script defer src="{{ '/assets/js/photoswipe-setup.js' | relative_url }}" type="module"></script>
250
+ {% endif %}
251
+ {% if page.images.slider %}
252
+ <script
253
+ defer
254
+ src="{{ site.third_party_libraries.swiper.url.js }}"
255
+ integrity="{{ site.third_party_libraries.swiper.integrity.js }}"
256
+ crossorigin="anonymous"
257
+ ></script>
258
+ {% endif %}
259
+ {% if page.images.spotlight %}
260
+ <script
261
+ defer
262
+ src="{{ site.third_party_libraries.spotlight.url.js }}"
263
+ crossorigin="anonymous"
264
+ ></script>
265
+ {% endif %}
266
+ {% if page.images.venobox %}
267
+ <script
268
+ defer
269
+ src="{{ site.third_party_libraries.venobox.url.js }}"
270
+ integrity="{{ site.third_party_libraries.venobox.integrity.js }}"
271
+ crossorigin="anonymous"
272
+ ></script>
273
+ <script defer src="{{ '/assets/js/venobox-setup.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
274
+ {% endif %}
275
+ {% endif %}
276
+
277
+ {% if page.tabs %}
278
+ <!-- Jekyll Tabs -->
279
+ <script src="{{ '/assets/js/tabs.min.js' | relative_url | bust_file_cache }}"></script>
280
+ {% endif %}
281
+
282
+ {% if site.back_to_top %}
283
+ <!-- Back to Top -->
284
+ <script src="{{ '/assets/js/vanilla-back-to-top.min.js' | relative_url | bust_file_cache }}"></script>
285
+ <script>
286
+ addBackToTop();
287
+ </script>
288
+ {% endif %}
289
+
290
+ {% if site.search_enabled %}
291
+ <!-- Search -->
292
+ {% capture search_placeholder %}{% include t.liquid key='search.placeholder' default='Type to start searching' %}{% endcapture %}
293
+ <script type="module" src="{{ '/assets/js/search/ninja-keys.min.js' | relative_url | bust_file_cache }}"></script>
294
+ <ninja-keys hideBreadcrumbs noAutoLoadMdIcons placeholder="{{ search_placeholder | strip }}"></ninja-keys>
295
+ <script src="{{ '/assets/js/search-setup.js' | relative_url | bust_file_cache }}"></script>
296
+ <script src="{{ '/assets/js/search-data.js' | relative_url }}"></script>
297
+ <script src="{{ '/assets/js/shortcut-key.js' | relative_url | bust_file_cache }}"></script>
298
+ {% endif %}
@@ -0,0 +1,76 @@
1
+ {% assign download = include.download | default: page.download %}
2
+ {% assign download_url = include.download_url | default: page.download_url | default: download['url'] %}
3
+ {% assign download_icon = include.icon | default: page.download_icon | default: download['icon'] | default: 'ti-download' %}
4
+ {% assign download_kicker = include.kicker | default: page.download_kicker | default: download['kicker'] | default: 'Download' %}
5
+ {% assign download_heading = include.heading | default: page.download_heading | default: download['heading'] | default: download['label'] | default: page.title %}
6
+ {% assign download_summary = include.summary | default: page.download_summary | default: download['summary'] | default: page.description %}
7
+ {% assign download_label = include.label | default: page.download_label | default: download['download_label'] | default: 'Download' %}
8
+ {% assign download_platform = include.platform | default: page.download_platform | default: download['platform'] %}
9
+ {% assign download_version = include.version | default: page.download_version | default: download['version'] %}
10
+ {% assign download_format = include.format | default: page.download_format | default: download['format'] %}
11
+ {% assign download_asset = include.asset | default: page.download_asset | default: download['asset'] %}
12
+ {% assign download_note = include.note | default: page.download_note | default: download['note'] %}
13
+ {% assign archive_url = include.archive_url | default: page.archive_url | default: download['archive_url'] | default: site.unaltraweb.downloads.release_url %}
14
+ {% assign archive_label = include.archive_label | default: page.archive_label | default: download['archive_label'] | default: site.unaltraweb.downloads.release_label | default: 'Release archive' %}
15
+
16
+ <section class="documentation-download-detail" aria-labelledby="documentation-download-detail-title">
17
+ <div class="documentation-download-detail-card">
18
+ <span class="documentation-download-detail-icon" aria-hidden="true"><i class="ti {{ download_icon }}"></i></span>
19
+ <div class="documentation-download-detail-copy">
20
+ <p class="documentation-kicker">{{ download_kicker }}</p>
21
+ <h2 id="documentation-download-detail-title">{{ download_heading }}</h2>
22
+ {% if download_summary %}<p class="documentation-download-detail-summary">{{ download_summary }}</p>{% endif %}
23
+
24
+ {% if download_platform or download_version or download_format or download_asset %}
25
+ <dl class="documentation-download-detail-meta" aria-label="Package details">
26
+ {% if download_platform %}
27
+ <div>
28
+ <dt>Platform</dt>
29
+ <dd>{{ download_platform }}</dd>
30
+ </div>
31
+ {% endif %}
32
+ {% if download_version %}
33
+ <div>
34
+ <dt>Version</dt>
35
+ <dd>{{ download_version }}</dd>
36
+ </div>
37
+ {% endif %}
38
+ {% if download_format %}
39
+ <div>
40
+ <dt>Format</dt>
41
+ <dd>{{ download_format }}</dd>
42
+ </div>
43
+ {% endif %}
44
+ {% if download_asset %}
45
+ <div>
46
+ <dt>Package</dt>
47
+ <dd>{{ download_asset }}</dd>
48
+ </div>
49
+ {% endif %}
50
+ </dl>
51
+ {% endif %}
52
+
53
+ {% if download_note %}<p class="documentation-download-detail-note">{{ download_note }}</p>{% endif %}
54
+ </div>
55
+
56
+ <div class="documentation-download-detail-actions">
57
+ {% if download_url %}
58
+ <a class="documentation-download-detail-button" href="{% if download_url contains '://' %}{{ download_url }}{% else %}{{ download_url | relative_url }}{% endif %}">
59
+ <i class="ti ti-download" aria-hidden="true"></i>
60
+ {{ download_label }}
61
+ </a>
62
+ {% else %}
63
+ <span class="documentation-download-detail-button documentation-download-detail-button--disabled" aria-disabled="true">
64
+ <i class="ti ti-clock" aria-hidden="true"></i>
65
+ Download pending
66
+ </span>
67
+ {% endif %}
68
+ {% if archive_url %}
69
+ <a class="documentation-download-detail-secondary" href="{% if archive_url contains '://' %}{{ archive_url }}{% else %}{{ archive_url | relative_url }}{% endif %}">
70
+ {{ archive_label }}
71
+ <i class="ti ti-external-link" aria-hidden="true"></i>
72
+ </a>
73
+ {% endif %}
74
+ </div>
75
+ </div>
76
+ </section>
@@ -0,0 +1,71 @@
1
+ {% assign downloads_config = include.downloads | default: page.downloads | default: site.unaltraweb.downloads %}
2
+ {% assign downloads_disabled = false %}
3
+ {% if downloads_config.enabled == false %}
4
+ {% assign downloads_disabled = true %}
5
+ {% endif %}
6
+ {% if include.context == 'home' and downloads_config.home == false %}
7
+ {% assign downloads_disabled = true %}
8
+ {% endif %}
9
+
10
+ {% if downloads_config and downloads_disabled == false and downloads_config.items %}
11
+ {% assign downloads_heading = include.heading | default: downloads_config.heading | default: 'h2' %}
12
+ {% assign downloads_title = include.title | default: downloads_config.title | default: 'Downloads' %}
13
+ {% assign downloads_description = include.description | default: downloads_config.description %}
14
+ {% assign downloads_kicker = include.kicker | default: downloads_config.kicker | default: 'Installers' %}
15
+ {% assign downloads_release_label = include.release_label | default: downloads_config.release_label %}
16
+ {% assign downloads_release_url = include.release_url | default: downloads_config.release_url %}
17
+ {% assign downloads_note = include.note | default: downloads_config.note %}
18
+
19
+ <section class="documentation-downloads{% if include.compact %} documentation-downloads--compact{% endif %}" aria-labelledby="documentation-downloads-title">
20
+ <div class="documentation-downloads-header">
21
+ <p class="documentation-kicker">{{ downloads_kicker }}</p>
22
+ <{{ downloads_heading }} id="documentation-downloads-title">{{ downloads_title }}</{{ downloads_heading }}>
23
+ {% if downloads_description %}<p>{{ downloads_description }}</p>{% endif %}
24
+ </div>
25
+
26
+ <div class="documentation-downloads-grid">
27
+ {% for item in downloads_config.items %}
28
+ {% assign item_details_url = item['details_url'] %}
29
+ {% assign item_url = item_details_url | default: item['url'] %}
30
+ {% assign item_icon = item['icon'] | default: 'ti-download' %}
31
+ {% if item_details_url %}
32
+ {% assign item_action_icon = item['action_icon'] | default: 'ti-arrow-right' %}
33
+ {% else %}
34
+ {% assign item_action_icon = item['action_icon'] | default: 'ti-download' %}
35
+ {% endif %}
36
+ {% capture download_card_content %}
37
+ <span class="documentation-downloads-icon" aria-hidden="true"><i class="ti {{ item_icon }}"></i></span>
38
+ <span class="documentation-downloads-copy">
39
+ <strong>{{ item.label | default: item.platform }}</strong>
40
+ {% if item.platform or item.format %}
41
+ <span>{{ item.platform }}{% if item.platform and item.format %} · {% endif %}{{ item.format }}</span>
42
+ {% endif %}
43
+ {% if item.version %}<em>{{ item.version }}</em>{% endif %}
44
+ </span>
45
+ <span class="documentation-downloads-action" aria-hidden="true"><i class="ti {{ item_action_icon }}"></i></span>
46
+ {% endcapture %}
47
+ {% if item_url %}
48
+ <a class="documentation-download-card" href="{% if item_url contains '://' %}{{ item_url }}{% else %}{{ item_url | relative_url }}{% endif %}">
49
+ {{ download_card_content }}
50
+ </a>
51
+ {% else %}
52
+ <span class="documentation-download-card documentation-download-card--disabled">
53
+ {{ download_card_content }}
54
+ </span>
55
+ {% endif %}
56
+ {% endfor %}
57
+ </div>
58
+
59
+ {% if downloads_release_url or downloads_note %}
60
+ <div class="documentation-downloads-footer">
61
+ {% if downloads_note %}<p>{{ downloads_note }}</p>{% endif %}
62
+ {% if downloads_release_url %}
63
+ <a class="documentation-downloads-release" href="{% if downloads_release_url contains '://' %}{{ downloads_release_url }}{% else %}{{ downloads_release_url | relative_url }}{% endif %}">
64
+ {{ downloads_release_label | default: 'All releases' }}
65
+ <i class="ti ti-external-link" aria-hidden="true"></i>
66
+ </a>
67
+ {% endif %}
68
+ </div>
69
+ {% endif %}
70
+ </section>
71
+ {% endif %}
@@ -0,0 +1,4 @@
1
+ {% assign documentation_profile_doc = include.doc %}
2
+ {% assign documentation_profile_values = documentation_profile_doc.documentation_profiles %}
3
+ {% unless include.item == false %} data-documentation-profile-item{% endunless %}
4
+ data-documentation-profiles="{% if documentation_profile_values %}{% for value in documentation_profile_values %}{{ value | slugify }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endif %}"
@@ -0,0 +1,9 @@
1
+ {% capture docs_page_toc_text %}{% include t.liquid key='documentation.on_this_page' default='On this page' %}{% endcapture %}
2
+ <aside class="documentation-section-toc" data-documentation-page-toc-container hidden aria-label="{{ docs_page_toc_text | strip | escape }}">
3
+ <div class="documentation-section-toc-inner">
4
+ <p class="documentation-section-toc-heading">{{ docs_page_toc_text | strip }}</p>
5
+ <nav class="documentation-section-toc-nav" aria-label="{{ docs_page_toc_text | strip | escape }}">
6
+ <ol class="documentation-section-toc-list" data-documentation-page-toc></ol>
7
+ </nav>
8
+ </div>
9
+ </aside>
@@ -0,0 +1,112 @@
1
+ {% assign current_lang = page.lang | default: site.default_lang | default: site.lang %}
2
+ {% assign current_profile = site.unaltraweb.site_profile | default: 'unaltreprojecte' | slugify %}
3
+ {% assign documentation_config = site.unaltraweb.documentation %}
4
+ {% assign documentation_toc_logo = documentation_config.toc_logo %}
5
+ {% assign documentation_toc_logo_inverse = documentation_config.toc_logo_inverse | default: documentation_toc_logo %}
6
+ {% assign documentation_toc_logo_cafe = documentation_config.toc_logo_cafe | default: documentation_config.toc_logo_sepia | default: documentation_toc_logo %}
7
+ {% assign docs_profile_options = documentation_config['profiles'] %}
8
+ {% assign docs_has_profile_options = false %}
9
+ {% if docs_profile_options and docs_profile_options.size > 0 %}
10
+ {% assign docs_has_profile_options = true %}
11
+ {% endif %}
12
+ {% assign docs = include.docs %}
13
+ {% assign home_candidates = site.pages | where: 'ref', 'home' | where: 'lang', current_lang %}
14
+ {% assign docs_home = home_candidates | where_exp: 'candidate', 'candidate.profiles contains current_profile' | first %}
15
+ {% if docs_home == nil %}
16
+ {% assign docs_home = home_candidates | where_exp: 'candidate', 'candidate.profiles == nil' | first %}
17
+ {% endif %}
18
+ {% capture docs_contents_text %}{% include t.liquid key='documentation.contents' default='Table of contents' %}{% endcapture %}
19
+ {% capture docs_toggle_contents_text %}{% include t.liquid key='documentation.toggle_contents' default='Show or hide table of contents' %}{% endcapture %}
20
+ {% capture docs_profile_text %}{% include t.liquid key='documentation.profile' default='Documentation profile' %}{% endcapture %}
21
+ {% capture docs_profile_all_text %}{% include t.liquid key='documentation.profile_all' default='All documentation' %}{% endcapture %}
22
+
23
+ <aside class="documentation-sidebar" aria-label="{{ docs_contents_text | strip }}">
24
+ <button class="documentation-tool-button documentation-toc-toggle" type="button" data-documentation-sidebar-toggle aria-controls="documentation-nav" aria-expanded="true" title="{{ docs_toggle_contents_text | strip }}">
25
+ <i class="ti ti-chevrons-left" aria-hidden="true"></i>
26
+ <span class="documentation-tool-label">{{ docs_contents_text | strip }}</span>
27
+ <span class="sr-only">{{ docs_toggle_contents_text | strip }}</span>
28
+ </button>
29
+
30
+ <div class="documentation-sidebar-inner">
31
+
32
+ <nav id="documentation-nav" class="documentation-nav{% if documentation_toc_logo and docs_has_profile_options == false %} has-sidebar-logo{% endif %}{% if docs_has_profile_options %} has-profile-selector{% endif %}" aria-label="{{ docs_contents_text | strip }}">
33
+ {% if documentation_toc_logo and docs_has_profile_options == false %}
34
+ <div class="documentation-sidebar-brand" aria-hidden="true">
35
+ <span class="documentation-sidebar-logo-stack">
36
+ <img class="documentation-sidebar-logo documentation-sidebar-logo-light" src="{{ documentation_toc_logo | relative_url }}" alt="">
37
+ <img class="documentation-sidebar-logo documentation-sidebar-logo-dark" src="{{ documentation_toc_logo_inverse | relative_url }}" alt="">
38
+ <img class="documentation-sidebar-logo documentation-sidebar-logo-cafe" src="{{ documentation_toc_logo_cafe | relative_url }}" alt="">
39
+ </span>
40
+ </div>
41
+ {% endif %}
42
+
43
+ {% if docs_has_profile_options %}
44
+ <div class="documentation-nav-block documentation-profile-switcher" data-documentation-profile-switcher>
45
+ <label class="documentation-profile-label" for="documentation-profile-select">{{ docs_profile_text | strip }}</label>
46
+ <div class="documentation-profile-control">
47
+ <span class="documentation-profile-icon" aria-hidden="true"><i class="ti ti-users"></i></span>
48
+ <select id="documentation-profile-select" class="documentation-profile-select" data-documentation-profile-select>
49
+ <option value="">{{ docs_profile_all_text | strip }}</option>
50
+ {% for profile_option in docs_profile_options %}
51
+ {% assign docs_profile_id = profile_option['id'] | default: profile_option['profile'] | default: profile_option['label'] | slugify %}
52
+ {% assign docs_profile_label = profile_option['label'] | default: docs_profile_id %}
53
+ <option value="{{ docs_profile_id }}">{{ docs_profile_label }}</option>
54
+ {% endfor %}
55
+ </select>
56
+ </div>
57
+ </div>
58
+ {% endif %}
59
+
60
+ <div class="documentation-nav-block documentation-toc-heading-block">
61
+ <p class="documentation-nav-block-title">{{ docs_contents_text | strip }}</p>
62
+ </div>
63
+
64
+ <div class="documentation-nav-scroll">
65
+ <div class="documentation-overview-section">
66
+ <a class="documentation-overview-link{% if page.url == docs_home.url %} active{% endif %}" href="{{ docs_home.url | default: '/' | relative_url }}"{% if page.url == docs_home.url %} aria-current="page"{% endif %}>
67
+ <span class="documentation-overview-icon" aria-hidden="true"><i class="ti ti-home"></i></span>
68
+ {{ docs_home.nav_title | default: docs_home.title | default: 'Overview' }}
69
+ </a>
70
+ </div>
71
+
72
+ <div class="documentation-accordion documentation-docs-block" data-documentation-tree>
73
+ {% assign doc_sections = docs | map: 'section' | uniq %}
74
+ {% for doc_section in doc_sections %}
75
+ {% assign section_docs = docs | where: 'section', doc_section %}
76
+ {% assign doc_section = doc_section | default: docs_contents_text | strip %}
77
+ {% assign section_open = false %}
78
+ {% if page.section == doc_section %}
79
+ {% assign section_open = true %}
80
+ {% endif %}
81
+ <details class="documentation-accordion-section" data-documentation-tree-id="section-{{ doc_section | slugify }}"{% if section_open %} data-documentation-active-section="true" open{% endif %}>
82
+ <summary class="documentation-accordion-summary{% if page.section == doc_section %} active{% endif %}">
83
+ <span class="documentation-accordion-mark" aria-hidden="true"></span>
84
+ <span class="documentation-accordion-title">{{ doc_section }}</span>
85
+ <span class="documentation-accordion-caret" aria-hidden="true"><i class="ti ti-chevron-down"></i></span>
86
+ </summary>
87
+ <div class="documentation-accordion-items">
88
+ {% assign current_subsection = '' %}
89
+ {% for doc in section_docs %}
90
+ {% assign doc_subsection = doc.subsection | default: '' %}
91
+ {% if doc_subsection != '' %}
92
+ {% if doc_subsection != current_subsection %}
93
+ {% assign current_subsection = doc_subsection %}
94
+ <a class="documentation-nav-link documentation-subsection-link level-2{% if page.section == doc_section and page.subsection == doc_subsection %} active{% endif %}" href="{{ doc.url | relative_url }}"{% if page.section == doc_section and page.subsection == doc_subsection %} aria-current="location"{% endif %}{% include documentation-profile-attributes.liquid doc=doc %}>
95
+ {{ doc_subsection }}
96
+ </a>
97
+ {% endif %}
98
+ {% else %}
99
+ {% assign current_subsection = '' %}
100
+ <a class="documentation-nav-link documentation-accordion-link level-2{% if page.url == doc.url %} active{% endif %}" href="{{ doc.url | relative_url }}"{% if page.url == doc.url %} aria-current="page"{% endif %}{% include documentation-profile-attributes.liquid doc=doc %}>
101
+ {{ doc.nav_title | default: doc.title }}
102
+ </a>
103
+ {% endif %}
104
+ {% endfor %}
105
+ </div>
106
+ </details>
107
+ {% endfor %}
108
+ </div>
109
+ </div>
110
+ </nav>
111
+ </div>
112
+ </aside>