jekyll-theme-modootoday 1.0.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 (352) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +182 -0
  3. data/LICENSE +21 -0
  4. data/README.ko.md +115 -0
  5. data/README.md +112 -0
  6. data/RULES.md +120 -0
  7. data/_includes/footer-custom.html +5 -0
  8. data/_includes/head-custom.html +1 -0
  9. data/_includes/modootoday/actions.html +17 -0
  10. data/_includes/modootoday/archive-years.html +30 -0
  11. data/_includes/modootoday/archive.html +44 -0
  12. data/_includes/modootoday/blog/card.html +23 -0
  13. data/_includes/modootoday/blog/config.html +17 -0
  14. data/_includes/modootoday/blog/list.html +13 -0
  15. data/_includes/modootoday/blog/pager.html +15 -0
  16. data/_includes/modootoday/blog/reading-time.html +10 -0
  17. data/_includes/modootoday/blog/select.html +18 -0
  18. data/_includes/modootoday/brand/icon.html +39 -0
  19. data/_includes/modootoday/brand/logo.html +7 -0
  20. data/_includes/modootoday/breadcrumb.html +22 -0
  21. data/_includes/modootoday/config.html +41 -0
  22. data/_includes/modootoday/detail/cover.html +5 -0
  23. data/_includes/modootoday/detail/cta.html +13 -0
  24. data/_includes/modootoday/detail/facts.html +31 -0
  25. data/_includes/modootoday/detail/jsonld.html +34 -0
  26. data/_includes/modootoday/directory/date-tile.html +2 -0
  27. data/_includes/modootoday/directory/filter.html +7 -0
  28. data/_includes/modootoday/directory/ics.html +17 -0
  29. data/_includes/modootoday/directory/item.html +18 -0
  30. data/_includes/modootoday/directory/items.html +4 -0
  31. data/_includes/modootoday/directory/jsonld.html +5 -0
  32. data/_includes/modootoday/directory/list.html +16 -0
  33. data/_includes/modootoday/directory/values.html +6 -0
  34. data/_includes/modootoday/doc/page-actions.html +15 -0
  35. data/_includes/modootoday/doc/pagination.html +24 -0
  36. data/_includes/modootoday/doc/sidebar-item.html +11 -0
  37. data/_includes/modootoday/doc/sidebar.html +28 -0
  38. data/_includes/modootoday/doc/twin.html +8 -0
  39. data/_includes/modootoday/docs-extra/head.html +7 -0
  40. data/_includes/modootoday/docs-extra/jsonld.html +19 -0
  41. data/_includes/modootoday/head-meta.html +90 -0
  42. data/_includes/modootoday/home-url.html +4 -0
  43. data/_includes/modootoday/i18n/ar.html +2 -0
  44. data/_includes/modootoday/i18n/de.html +2 -0
  45. data/_includes/modootoday/i18n/el.html +2 -0
  46. data/_includes/modootoday/i18n/es.html +2 -0
  47. data/_includes/modootoday/i18n/fa.html +2 -0
  48. data/_includes/modootoday/i18n/fr.html +2 -0
  49. data/_includes/modootoday/i18n/id.html +2 -0
  50. data/_includes/modootoday/i18n/it.html +2 -0
  51. data/_includes/modootoday/i18n/ja.html +2 -0
  52. data/_includes/modootoday/i18n/ko.html +2 -0
  53. data/_includes/modootoday/i18n/ml.html +2 -0
  54. data/_includes/modootoday/i18n/name.html +2 -0
  55. data/_includes/modootoday/i18n/pl.html +2 -0
  56. data/_includes/modootoday/i18n/pt-BR.html +2 -0
  57. data/_includes/modootoday/i18n/ro.html +2 -0
  58. data/_includes/modootoday/i18n/ru.html +2 -0
  59. data/_includes/modootoday/i18n/th.html +2 -0
  60. data/_includes/modootoday/i18n/tr.html +2 -0
  61. data/_includes/modootoday/i18n/uk.html +2 -0
  62. data/_includes/modootoday/i18n/ur-Latn.html +2 -0
  63. data/_includes/modootoday/i18n/vi.html +2 -0
  64. data/_includes/modootoday/i18n/zh-CN.html +2 -0
  65. data/_includes/modootoday/i18n/zh-TW.html +2 -0
  66. data/_includes/modootoday/i18n.html +163 -0
  67. data/_includes/modootoday/jsonld/article.html +15 -0
  68. data/_includes/modootoday/jsonld/author.html +8 -0
  69. data/_includes/modootoday/jsonld/breadcrumb.html +17 -0
  70. data/_includes/modootoday/jsonld/entity.html +16 -0
  71. data/_includes/modootoday/jsonld/graph.html +24 -0
  72. data/_includes/modootoday/jsonld/profile.html +20 -0
  73. data/_includes/modootoday/jsonld/props.html +13 -0
  74. data/_includes/modootoday/jsonld/publisher.html +11 -0
  75. data/_includes/modootoday/jsonld/type.html +29 -0
  76. data/_includes/modootoday/jsonld/webpage.html +17 -0
  77. data/_includes/modootoday/jsonld/website.html +9 -0
  78. data/_includes/modootoday/lang-switch.html +31 -0
  79. data/_includes/modootoday/link.html +3 -0
  80. data/_includes/modootoday/links/attrs.html +9 -0
  81. data/_includes/modootoday/links/content.html +16 -0
  82. data/_includes/modootoday/markdown/c/details.html +6 -0
  83. data/_includes/modootoday/markdown/c/faq.html +2 -0
  84. data/_includes/modootoday/markdown/c/filetree.html +3 -0
  85. data/_includes/modootoday/markdown/c/gallery.html +5 -0
  86. data/_includes/modootoday/markdown/c/linkcards.html +2 -0
  87. data/_includes/modootoday/markdown/c/params.html +3 -0
  88. data/_includes/modootoday/markdown/c/pricing.html +10 -0
  89. data/_includes/modootoday/markdown/c/quote.html +6 -0
  90. data/_includes/modootoday/markdown/c/subscribe.html +6 -0
  91. data/_includes/modootoday/markdown/components.html +114 -0
  92. data/_includes/modootoday/markdown/inline.html +46 -0
  93. data/_includes/modootoday/markdown/llms-pages.html +14 -0
  94. data/_includes/modootoday/markdown/raw-body.html +6 -0
  95. data/_includes/modootoday/markdown/sections.html +43 -0
  96. data/_includes/modootoday/marketing/head.html +6 -0
  97. data/_includes/modootoday/meta/byline.html +24 -0
  98. data/_includes/modootoday/meta/post-nav.html +16 -0
  99. data/_includes/modootoday/meta/related.html +20 -0
  100. data/_includes/modootoday/meta/series.html +11 -0
  101. data/_includes/modootoday/meta/share.html +4 -0
  102. data/_includes/modootoday/nav.html +19 -0
  103. data/_includes/modootoday/news/badge.html +4 -0
  104. data/_includes/modootoday/news/front.html +30 -0
  105. data/_includes/modootoday/news/notes.html +10 -0
  106. data/_includes/modootoday/page-meta.html +16 -0
  107. data/_includes/modootoday/pages/error.html +13 -0
  108. data/_includes/modootoday/pages/hero/scene.html +27 -0
  109. data/_includes/modootoday/pages/hero/sparks.html +6 -0
  110. data/_includes/modootoday/pages/hero.html +11 -0
  111. data/_includes/modootoday/pages/search-form.html +14 -0
  112. data/_includes/modootoday/search.json +11 -0
  113. data/_includes/modootoday/stylesheets.html +36 -0
  114. data/_includes/modootoday/t.html +7 -0
  115. data/_includes/modootoday/theme-color.html +19 -0
  116. data/_includes/modootoday/toc.html +17 -0
  117. data/_includes/modootoday/tokens.html +11 -0
  118. data/_includes/sections/showcase.html +18 -0
  119. data/_layouts/archive.html +6 -0
  120. data/_layouts/author.html +19 -0
  121. data/_layouts/blog.html +28 -0
  122. data/_layouts/book.html +21 -0
  123. data/_layouts/brand.html +21 -0
  124. data/_layouts/case-study.html +5 -0
  125. data/_layouts/changelog.html +24 -0
  126. data/_layouts/contact.html +27 -0
  127. data/_layouts/course.html +21 -0
  128. data/_layouts/default.html +87 -0
  129. data/_layouts/detail.html +31 -0
  130. data/_layouts/directory.html +12 -0
  131. data/_layouts/doc.html +27 -0
  132. data/_layouts/download.html +21 -0
  133. data/_layouts/episode.html +5 -0
  134. data/_layouts/error.html +7 -0
  135. data/_layouts/event.html +5 -0
  136. data/_layouts/events.html +6 -0
  137. data/_layouts/feature.html +18 -0
  138. data/_layouts/feed.html +35 -0
  139. data/_layouts/glossary.html +24 -0
  140. data/_layouts/home.html +7 -0
  141. data/_layouts/hub.html +16 -0
  142. data/_layouts/integrations.html +7 -0
  143. data/_layouts/job.html +5 -0
  144. data/_layouts/jobs.html +7 -0
  145. data/_layouts/legal.html +21 -0
  146. data/_layouts/links.html +18 -0
  147. data/_layouts/llms-full.html +8 -0
  148. data/_layouts/llms.html +32 -0
  149. data/_layouts/minimal.html +8 -0
  150. data/_layouts/news-article.html +6 -0
  151. data/_layouts/news.html +22 -0
  152. data/_layouts/portfolio.html +7 -0
  153. data/_layouts/post.html +54 -0
  154. data/_layouts/pricing.html +32 -0
  155. data/_layouts/project.html +5 -0
  156. data/_layouts/redirect.html +21 -0
  157. data/_layouts/reference.html +24 -0
  158. data/_layouts/resume.html +50 -0
  159. data/_layouts/roadmap.html +22 -0
  160. data/_layouts/search.html +8 -0
  161. data/_layouts/sponsors.html +7 -0
  162. data/_layouts/team.html +7 -0
  163. data/_layouts/twin.html +2 -0
  164. data/_layouts/wide.html +7 -0
  165. data/_sass/modootoday/_access.scss +12 -0
  166. data/_sass/modootoday/_core.scss +18 -0
  167. data/_sass/modootoday/_settings.scss +5 -0
  168. data/_sass/modootoday/_sheet.scss +6 -0
  169. data/_sass/modootoday/base/_bidi.scss +8 -0
  170. data/_sass/modootoday/base/_code.scss +18 -0
  171. data/_sass/modootoday/base/_interaction.scss +6 -0
  172. data/_sass/modootoday/base/_prose.scss +32 -0
  173. data/_sass/modootoday/base/_reset.scss +14 -0
  174. data/_sass/modootoday/base/_table.scss +8 -0
  175. data/_sass/modootoday/blog/_article.scss +27 -0
  176. data/_sass/modootoday/blog/_cards.scss +36 -0
  177. data/_sass/modootoday/blog/_index.scss +10 -0
  178. data/_sass/modootoday/blog/_news.scss +26 -0
  179. data/_sass/modootoday/blog/_post.scss +9 -0
  180. data/_sass/modootoday/components/core/chrome/_banner.scss +7 -0
  181. data/_sass/modootoday/components/core/chrome/_breadcrumb.scss +10 -0
  182. data/_sass/modootoday/components/core/chrome/_nav.scss +39 -0
  183. data/_sass/modootoday/components/core/chrome/_pagination.scss +10 -0
  184. data/_sass/modootoday/components/core/chrome/_theme-toggle.scss +16 -0
  185. data/_sass/modootoday/components/core/inline/_badge.scss +15 -0
  186. data/_sass/modootoday/components/core/inline/_callout.scss +14 -0
  187. data/_sass/modootoday/components/core/inline/_code-copy.scss +11 -0
  188. data/_sass/modootoday/components/core/inline/_code.scss +11 -0
  189. data/_sass/modootoday/components/core/inline/_cta.scss +11 -0
  190. data/_sass/modootoday/components/core/inline/_embed.scss +6 -0
  191. data/_sass/modootoday/components/core/inline/_figure.scss +9 -0
  192. data/_sass/modootoday/components/core/inline/_footnotes.scss +6 -0
  193. data/_sass/modootoday/components/core/inline/_hero.scss +8 -0
  194. data/_sass/modootoday/components/core/inline/_kbd.scss +6 -0
  195. data/_sass/modootoday/components/core/inline/_progress.scss +8 -0
  196. data/_sass/modootoday/components/doc/_page-actions.scss +10 -0
  197. data/_sass/modootoday/components/doc/_sidebar.scss +31 -0
  198. data/_sass/modootoday/components/doc/_toc.scss +19 -0
  199. data/_sass/modootoday/components/loading/_loading.scss +33 -0
  200. data/_sass/modootoday/components/search/_search.scss +36 -0
  201. data/_sass/modootoday/components/section/showcase/_card.scss +15 -0
  202. data/_sass/modootoday/components/section/showcase/_cta.scss +7 -0
  203. data/_sass/modootoday/components/section/showcase/_gallery.scss +15 -0
  204. data/_sass/modootoday/components/section/showcase/_linkcards.scss +12 -0
  205. data/_sass/modootoday/components/section/showcase/_pricing.scss +12 -0
  206. data/_sass/modootoday/components/section/showcase/_quote.scss +7 -0
  207. data/_sass/modootoday/components/section/showcase/_subscribe.scss +9 -0
  208. data/_sass/modootoday/components/section/structure/_accordion.scss +15 -0
  209. data/_sass/modootoday/components/section/structure/_details.scss +15 -0
  210. data/_sass/modootoday/components/section/structure/_faq.scss +5 -0
  211. data/_sass/modootoday/components/section/structure/_filetree.scss +13 -0
  212. data/_sass/modootoday/components/section/structure/_params.scss +8 -0
  213. data/_sass/modootoday/components/section/structure/_steps.scss +13 -0
  214. data/_sass/modootoday/components/section/structure/_tabs.scss +21 -0
  215. data/_sass/modootoday/components/section/structure/_timeline.scss +10 -0
  216. data/_sass/modootoday/detail/_index.scss +8 -0
  217. data/_sass/modootoday/detail/_page.scss +25 -0
  218. data/_sass/modootoday/directory/_filter.scss +12 -0
  219. data/_sass/modootoday/directory/_grid.scss +18 -0
  220. data/_sass/modootoday/directory/_index.scss +11 -0
  221. data/_sass/modootoday/directory/_presets.scss +16 -0
  222. data/_sass/modootoday/docs-extra/_index.scss +7 -0
  223. data/_sass/modootoday/docs-extra/_page.scss +37 -0
  224. data/_sass/modootoday/hero/_index.scss +6 -0
  225. data/_sass/modootoday/hero/_layout.scss +28 -0
  226. data/_sass/modootoday/hero/_scene.scss +20 -0
  227. data/_sass/modootoday/kit/_button.scss +8 -0
  228. data/_sass/modootoday/layout/_page-meta.scss +9 -0
  229. data/_sass/modootoday/layout/_safe-area.scss +9 -0
  230. data/_sass/modootoday/layout/_shell.scss +56 -0
  231. data/_sass/modootoday/marketing/_forms.scss +11 -0
  232. data/_sass/modootoday/marketing/_index.scss +10 -0
  233. data/_sass/modootoday/marketing/_page.scss +31 -0
  234. data/_sass/modootoday/marketing/_pricing.scss +15 -0
  235. data/_sass/modootoday/pages/_actions.scss +11 -0
  236. data/_sass/modootoday/pages/_error.scss +7 -0
  237. data/_sass/modootoday/pages/_index.scss +11 -0
  238. data/_sass/modootoday/pages/_legal.scss +17 -0
  239. data/_sass/modootoday/pages/_search.scss +9 -0
  240. data/_sass/modootoday/pages/_shells.scss +11 -0
  241. data/_sass/modootoday/resume/_index.scss +5 -0
  242. data/_sass/modootoday/resume/_page.scss +27 -0
  243. data/_sass/modootoday/tokens/_emit.scss +15 -0
  244. data/_sass/modootoday/tokens/_primitive.scss +18 -0
  245. data/_sass/modootoday/tokens/_semantic.scss +37 -0
  246. data/_sass/modootoday/tools/_functions.scss +2 -0
  247. data/_sass/modootoday/tools/_img-dark.scss +12 -0
  248. data/_sass/modootoday/tools/_mixins.scss +8 -0
  249. data/_sass/modootoday.scss +40 -0
  250. data/assets/css/modootoday/doc.scss +10 -0
  251. data/assets/css/modootoday/loading.scss +8 -0
  252. data/assets/css/modootoday/search.scss +8 -0
  253. data/assets/css/modootoday/showcase/card.scss +7 -0
  254. data/assets/css/modootoday/showcase/cta.scss +7 -0
  255. data/assets/css/modootoday/showcase/gallery.scss +7 -0
  256. data/assets/css/modootoday/showcase/linkcards.scss +7 -0
  257. data/assets/css/modootoday/showcase/pricing.scss +7 -0
  258. data/assets/css/modootoday/showcase/quote.scss +7 -0
  259. data/assets/css/modootoday/showcase/subscribe.scss +7 -0
  260. data/assets/css/modootoday/structure/accordion.scss +7 -0
  261. data/assets/css/modootoday/structure/details.scss +7 -0
  262. data/assets/css/modootoday/structure/faq.scss +7 -0
  263. data/assets/css/modootoday/structure/filetree.scss +7 -0
  264. data/assets/css/modootoday/structure/params.scss +7 -0
  265. data/assets/css/modootoday/structure/steps.scss +7 -0
  266. data/assets/css/modootoday/structure/tabs.scss +7 -0
  267. data/assets/css/modootoday/structure/timeline.scss +7 -0
  268. data/assets/css/modootoday-blog.scss +7 -0
  269. data/assets/css/modootoday-detail.scss +7 -0
  270. data/assets/css/modootoday-directory.scss +7 -0
  271. data/assets/css/modootoday-docs-extra.scss +7 -0
  272. data/assets/css/modootoday-hero.scss +7 -0
  273. data/assets/css/modootoday-marketing.scss +7 -0
  274. data/assets/css/modootoday-pages.scss +7 -0
  275. data/assets/css/modootoday-resume.scss +7 -0
  276. data/assets/css/modootoday.scss +17 -0
  277. data/assets/js/modootoday/accordion.js +13 -0
  278. data/assets/js/modootoday/code-copy.js +29 -0
  279. data/assets/js/modootoday/menu.js +19 -0
  280. data/assets/js/modootoday/scroll-region.js +14 -0
  281. data/assets/js/modootoday/search-keys.js +18 -0
  282. data/assets/js/modootoday/search.js +31 -0
  283. data/assets/js/modootoday/share.js +16 -0
  284. data/assets/js/modootoday/tabs.js +26 -0
  285. data/assets/js/modootoday/theme-init.js +2 -0
  286. data/assets/js/modootoday/theme-toggle.js +17 -0
  287. data/assets/modootoday/apple-touch-icon.png +0 -0
  288. data/assets/modootoday/favicon-32.png +0 -0
  289. data/assets/modootoday/favicon.svg +1 -0
  290. data/assets/modootoday/hero/dawn-1280.webp +0 -0
  291. data/assets/modootoday/hero/dawn-640.webp +0 -0
  292. data/assets/modootoday/hero/dawn-960.webp +0 -0
  293. data/exe/modootoday-check +7 -0
  294. data/i18n/ar.yml +130 -0
  295. data/i18n/de.yml +130 -0
  296. data/i18n/el.yml +130 -0
  297. data/i18n/en.yml +131 -0
  298. data/i18n/es.yml +130 -0
  299. data/i18n/fa.yml +130 -0
  300. data/i18n/fr.yml +130 -0
  301. data/i18n/glossary.yml +61 -0
  302. data/i18n/id.yml +130 -0
  303. data/i18n/it.yml +130 -0
  304. data/i18n/ja.yml +130 -0
  305. data/i18n/ko.yml +130 -0
  306. data/i18n/languages.yml +25 -0
  307. data/i18n/ml.yml +130 -0
  308. data/i18n/pl.yml +130 -0
  309. data/i18n/pt-BR.yml +130 -0
  310. data/i18n/ro.yml +130 -0
  311. data/i18n/ru.yml +130 -0
  312. data/i18n/th.yml +130 -0
  313. data/i18n/tr.yml +130 -0
  314. data/i18n/uk.yml +130 -0
  315. data/i18n/ur-Latn.yml +130 -0
  316. data/i18n/vi.yml +130 -0
  317. data/i18n/zh-CN.yml +130 -0
  318. data/i18n/zh-TW.yml +130 -0
  319. data/lib/jekyll-theme-modootoday.rb +59 -0
  320. data/lib/modootoday/check/a11y/content.rb +57 -0
  321. data/lib/modootoday/check/a11y/new_window.rb +64 -0
  322. data/lib/modootoday/check/blog.rb +72 -0
  323. data/lib/modootoday/check/build_output.rb +39 -0
  324. data/lib/modootoday/check/built_parts.rb +40 -0
  325. data/lib/modootoday/check/cli.rb +61 -0
  326. data/lib/modootoday/check/component_rules.rb +54 -0
  327. data/lib/modootoday/check/context.rb +41 -0
  328. data/lib/modootoday/check/gh_render.rb +21 -0
  329. data/lib/modootoday/check/github_pages.rb +23 -0
  330. data/lib/modootoday/check/i18n.rb +92 -0
  331. data/lib/modootoday/check/layouts/detail.rb +52 -0
  332. data/lib/modootoday/check/layouts/directory.rb +36 -0
  333. data/lib/modootoday/check/layouts/docs_extra.rb +84 -0
  334. data/lib/modootoday/check/layouts/marketing.rb +64 -0
  335. data/lib/modootoday/check/layouts/shape.rb +38 -0
  336. data/lib/modootoday/check/layouts/shells.rb +47 -0
  337. data/lib/modootoday/check/layouts.rb +37 -0
  338. data/lib/modootoday/check/markdown.rb +39 -0
  339. data/lib/modootoday/check/page_sections.rb +72 -0
  340. data/lib/modootoday/check/page_syntax.rb +104 -0
  341. data/lib/modootoday/check/page_values.rb +30 -0
  342. data/lib/modootoday/check/pages.rb +31 -0
  343. data/lib/modootoday/check/registry.rb +69 -0
  344. data/lib/modootoday/check/site_config.rb +74 -0
  345. data/lib/modootoday/check/slots.rb +50 -0
  346. data/lib/modootoday/check/structured_data.rb +97 -0
  347. data/lib/modootoday/check/stylesheets.rb +28 -0
  348. data/lib/modootoday/check/twins.rb +69 -0
  349. data/lib/modootoday/check.rb +22 -0
  350. data/lib/modootoday/schema/rules.rb +49 -0
  351. data/lib/modootoday/schema/vocab.txt +2478 -0
  352. metadata +420 -0
@@ -0,0 +1,87 @@
1
+ <!doctype html>
2
+ {%- comment -%}md-components v1 — jekyll-theme-modootoday base layout. Liquid only (GitHub Pages safe).{%- endcomment -%}
3
+ {%- assign _lang = page.lang | default: site.lang | default: "en" -%}
4
+ {%- include modootoday/config.html -%}
5
+ {%- include modootoday/i18n.html lang=_lang -%}
6
+ {%- comment -%}mt_home: this language's home (/<lang>/ when that page exists), else the site root; used by the brand link and footers.{%- endcomment -%}
7
+ {%- assign mt_home = "/" -%}{%- assign _def_lang = site.lang | default: "en" -%}
8
+ {%- if _lang != _def_lang -%}{%- assign _lh = "/" | append: _lang | append: "/" -%}{%- assign _lhp = site.pages | where: "url", _lh | first -%}{%- if _lhp -%}{%- assign mt_home = _lh -%}{%- endif -%}{%- endif -%}
9
+ {%- assign _rtl = "ar fa he ur yi ps sd ug dv ckb" | split: " " -%}
10
+ {%- assign _base = _lang | split: "-" | first -%}
11
+ {%- if _rtl contains _base %}{% assign _dir = "rtl" %}{% else %}{% assign _dir = nil %}{% endif -%}
12
+ {%- assign _dir = page.direction | default: mt_t_direction | default: _dir -%}
13
+ <html lang="{{ _lang }}"{% if _dir %} dir="{{ _dir }}"{% endif %}{% if mt_theme_start %} data-theme="{{ mt_theme_start }}"{% endif %} data-mt-copy="{{ mt_t_code_copy }}" data-mt-copied="{{ mt_t_code_copied }}" data-mt-code="{{ mt_t_code_label }}" data-mt-table="{{ mt_t_table_label }}">
14
+ <head>
15
+ <meta charset="utf-8">
16
+ <meta name="viewport" content="width=device-width, initial-scale=1{% unless site.modootoday.viewport_fit == "auto" %}, viewport-fit=cover{% endunless %}">
17
+ <title>{% if page.title %}{{ page.title }}{% if site.title %} · {{ site.title }}{% endif %}{% else %}{{ site.title }}{% endif %}</title>
18
+ {%- if page.description or site.description %}
19
+ <meta name="description" content="{{ page.description | default: site.description | strip_html | normalize_whitespace | escape }}">
20
+ {%- endif %}
21
+ {%- if page.noindex or layout.mt_noindex %}
22
+ <meta name="robots" content="noindex">
23
+ {%- endif %}
24
+ <meta name="color-scheme" content="{% if mt_color_scheme == "auto" or mt_color_scheme == "auto-light" %}light dark{% elsif mt_color_scheme == "auto-dark" %}dark light{% else %}{{ mt_color_scheme }}{% endif %}">
25
+ {%- include modootoday/theme-color.html %}
26
+ {%- include modootoday/head-meta.html %}
27
+ {%- include modootoday/stylesheets.html %}
28
+ {%- include modootoday/tokens.html %}
29
+ {%- include modootoday/doc/twin.html -%}
30
+ {%- if mt_twin %}
31
+ <link rel="alternate" type="text/markdown" href="{{ mt_twin | relative_url }}">
32
+ {%- endif -%}
33
+ {%- assign _ll = "/" | append: _lang | append: "/llms.txt" -%}
34
+ {%- assign _llp = site.pages | where: "url", _ll | first -%}
35
+ {%- unless _llp -%}{%- assign _ll = "/llms.txt" -%}{%- assign _llp = site.pages | where: "url", _ll | first -%}{%- endunless -%}
36
+ {%- if _llp %}
37
+ <link rel="describedby" type="text/plain" href="{{ _ll | relative_url }}">
38
+ {%- endif %}
39
+ {%- include head-custom.html %}
40
+ </head>
41
+ <body class="mt-body"{% unless site.modootoday.external_links.icon == false %} data-mt-nw-icon{% endunless %}>
42
+ <a class="mt-skip" href="#mt-main">{{ mt_t_skip }}</a>
43
+ {%- assign _bn = site.modootoday.banner -%}{%- if mt_components contains "banner" and _bn.text %}
44
+ <div class="mt-banner" role="region" aria-label="{{ mt_t_banner_label }}"><p>{{ _bn.text }}{% if _bn.url %} <a href="{% include modootoday/link.html url=_bn.url %}"{% include modootoday/links/attrs.html on=_bn.new_window target=_bn.target url=_bn.url %}>{{ _bn.link | default: _bn.url }}</a>{% endif %}</p></div>
45
+ {%- endif %}
46
+ {%- assign _chrome = true -%}{%- if layout.mt_chrome == false or page.chrome == false -%}{%- assign _chrome = false -%}{%- endif -%}
47
+ {%- if site.title and _chrome %}
48
+ <header class="mt-header"><div class="mt-header-inner"><a class="mt-site-title{% if site.modootoday.logo %} mt-has-logo{% endif %}" href="{{ mt_home | relative_url }}">{% include modootoday/brand/logo.html %}{{ site.title }}</a>{% include modootoday/nav.html %}{% if mt_components contains "search" and mt_search_index %}<div class="mt-search" role="search" data-index="{{ '/search.json' | relative_url }}" data-lang="{{ site.lang | default: 'en' }}" hidden>{% include modootoday/brand/icon.html name="search" size=16 %}<input type="search" aria-keyshortcuts="/ Control+K Meta+K" aria-controls="mt-search-results" aria-label="{{ mt_t_search_label }}" placeholder="{{ mt_t_search_label }}"><ul class="mt-search-results" id="mt-search-results" aria-live="polite"></ul></div>{% endif %}{% if site.modootoday.language_switcher == "header" %}{% include modootoday/lang-switch.html style="menu" %}{% endif %}{% if mt_components contains "theme-toggle" and mt_theme_toggle %}<button class="mt-theme-toggle" type="button" aria-pressed="false" aria-label="{{ mt_t_theme_toggle }}" title="{{ mt_t_theme_toggle }}" hidden>{% include modootoday/brand/icon.html name="moon" %}{% include modootoday/brand/icon.html name="sun" %}</button>{% endif %}</div></header>
49
+ {%- endif %}
50
+ <main id="mt-main" tabindex="-1" class="mt-main{% if page.full_width %} mt-main-full{% endif %}{% if layout.mt_main %} {{ layout.mt_main }}{% endif %}">
51
+ {% include modootoday/links/content.html html=content %}
52
+ {%- if _chrome %}
53
+ {%- include modootoday/page-meta.html %}
54
+ {%- include modootoday/doc/pagination.html %}
55
+ {%- if mt_components contains "banner" and site.modootoday.back_to_top %}
56
+ <p><a class="mt-back-to-top" href="#top">{{ mt_t_nav_back_to_top }}</a></p>
57
+ {%- endif %}
58
+ {%- endif %}
59
+ </main>
60
+ {%- include footer-custom.html %}
61
+ <span id="mt-new-window-hint" hidden>{{ mt_t_new_window_hint }}</span>
62
+ {%- if mt_components contains "tabs" and mt_page_c contains "|tabs|" %}
63
+ <script src="{{ '/assets/js/modootoday/tabs.js' | relative_url }}" defer></script>
64
+ {%- endif -%}
65
+ {%- if site.title and _chrome %}
66
+ <script src="{{ '/assets/js/modootoday/menu.js' | relative_url }}" defer></script>
67
+ {%- endif %}
68
+ <script src="{{ '/assets/js/modootoday/scroll-region.js' | relative_url }}" defer></script>
69
+ {%- assign _cc = false -%}{%- if mt_components contains "page-actions" and mt_twin -%}{%- assign _cc = true -%}{%- endif -%}
70
+ {%- if mt_components contains "code-copy" or _cc %}
71
+ <script src="{{ '/assets/js/modootoday/code-copy.js' | relative_url }}" defer></script>
72
+ {%- endif %}
73
+ {%- if mt_components contains "theme-toggle" and mt_theme_toggle %}
74
+ <script src="{{ '/assets/js/modootoday/theme-toggle.js' | relative_url }}" defer></script>
75
+ {%- endif -%}
76
+ {%- if mt_components contains "accordion" and mt_page_c contains "|accordion|" %}
77
+ <script src="{{ '/assets/js/modootoday/accordion.js' | relative_url }}" defer></script>
78
+ {%- endif %}
79
+ {%- if mt_blog_css and site.modootoday.blog.share != false %}
80
+ <script src="{{ '/assets/js/modootoday/share.js' | relative_url }}" defer></script>
81
+ {%- endif %}
82
+ {%- if mt_components contains "search" and mt_search_index %}
83
+ <script src="{{ '/assets/js/modootoday/search.js' | relative_url }}" defer></script>
84
+ <script src="{{ '/assets/js/modootoday/search-keys.js' | relative_url }}" defer></script>
85
+ {%- endif %}
86
+ </body>
87
+ </html>
@@ -0,0 +1,31 @@
1
+ ---
2
+ layout: default
3
+ mt_bundle: detail
4
+ mt_main: mt-detail
5
+ ---
6
+ {%- include modootoday/i18n.html -%}
7
+ {%- comment -%}detail: one item page (project, case study, job, event, episode). Header (kicker, title, lead), an optional cover image (detail/cover.html), a facts list
8
+ from front matter (modootoday/detail/facts.html, per layout.mt_kind), the body, then one call to action. No JavaScript.{%- endcomment -%}
9
+ {%- assign _k = layout.mt_kind | default: "item" -%}
10
+ <article class="mt-detail-page mt-detail-{{ _k }}" aria-labelledby="mt-detail-title">
11
+ <header class="mt-detail-head">
12
+ {%- assign _kick = page.kicker -%}
13
+ {%- if _k == "episode" and page.episode -%}{%- assign _kick = mt_t_layouts_episode | replace: "[n]", page.episode -%}{%- if page.season %}{%- assign _kick = mt_t_layouts_season | append: " " | append: page.season | append: " · " | append: _kick -%}{%- endif -%}{%- endif -%}
14
+ {%- if _kick %}
15
+ <p class="mt-detail-kicker">{{ _kick }}</p>
16
+ {%- endif %}
17
+ <h1 id="mt-detail-title">{{ page.title }}</h1>
18
+ {%- if page.description %}
19
+ <p class="mt-detail-lead">{{ page.description }}</p>
20
+ {%- endif %}
21
+ </header>
22
+ {%- include modootoday/detail/cover.html %}
23
+ {%- include modootoday/detail/facts.html kind=_k %}
24
+ {%- if _k == "episode" and page.audio %}
25
+ <figure class="mt-detail-media"><audio controls preload="none" src="{{ page.audio | relative_url }}" aria-label="{{ mt_t_layouts_listen }}: {{ page.title | escape }}"></audio>{% if page.transcript %}<figcaption><a href="{{ page.transcript | relative_url }}">{{ mt_t_layouts_transcript }}</a></figcaption>{% endif %}</figure>
26
+ {%- endif %}
27
+ <div class="mt-detail-body">
28
+ {{ content }}
29
+ </div>
30
+ {%- include modootoday/detail/cta.html kind=_k %}
31
+ </article>
@@ -0,0 +1,12 @@
1
+ ---
2
+ layout: wide
3
+ mt_bundle: directory
4
+ mt_main: mt-shell-wide mt-dir-page
5
+ ---
6
+ {%- comment -%}directory: the page body, then a card grid from items: (or data: <file in _data>), preset: and filter: <field>.
7
+ The portfolio, team, jobs, events, sponsors and integrations layouts set the preset and its default filter.{%- endcomment -%}
8
+ {{ content }}
9
+ {%- include modootoday/directory/items.html page=page -%}
10
+ {%- assign _pre = page.preset | default: layout.mt_preset | default: "cards" -%}
11
+ {%- assign _flt = page.filter | default: layout.mt_filter -%}{%- if page.filter == false -%}{%- assign _flt = nil -%}{%- endif -%}
12
+ {%- include modootoday/directory/list.html items=mt_items preset=_pre filter=_flt -%}
data/_layouts/doc.html ADDED
@@ -0,0 +1,27 @@
1
+ ---
2
+ mt_sheets: [doc]
3
+ layout: default
4
+ ---
5
+ {%- comment -%}md-components v1 — doc layout: alerts/badges, then optional sections.{%- endcomment -%}
6
+ {%- include modootoday/config.html -%}
7
+ {%- assign _badges = mt_badges -%}{%- if page.badges == false -%}{%- assign _badges = false -%}{%- endif -%}{%- unless mt_components contains "badge" -%}{%- assign _badges = false -%}{%- endunless -%}
8
+ {%- assign _fig = false -%}{%- if mt_components contains "figure" -%}{%- assign _fig = true -%}{%- endif -%}
9
+ {%- assign _kbd = false -%}{%- if mt_components contains "kbd" -%}{%- assign _kbd = true -%}{%- endif -%}
10
+ {%- capture html %}{% include modootoday/markdown/components.html content=content lang=page.lang badges=_badges figure=_fig kbd=_kbd %}{% endcapture -%}
11
+ {%- capture _toc %}{% include modootoday/toc.html html=html %}{% endcapture -%}
12
+ {%- assign _toc = _toc | strip -%}
13
+ <div class="mt-doc-layout{% if _toc != "" %} mt-has-toc{% endif %}{% if mt_sidebar %} mt-has-sidebar{% endif %}">
14
+ {%- include modootoday/doc/sidebar.html part="aside" %}
15
+ <div class="mt-doc-main">
16
+ {%- include modootoday/doc/sidebar.html part="mobile" -%}
17
+ {%- include modootoday/breadcrumb.html -%}
18
+ {%- if _toc != "" %}{{ _toc | replace: '<nav class="mt-toc" aria-labelledby="mt-toc-title">', '<details class="mt-toc-mobile"><summary>' | replace: '<p class="mt-toc-title" id="mt-toc-title">', '' | replace: '</p><ol>', '</summary><ol>' | replace: '</nav>', '</details>' }}{% endif %}
19
+ {%- include modootoday/doc/page-actions.html %}
20
+ <article class="mt-doc">
21
+ {% include modootoday/markdown/sections.html content=html sections=page.sections hero=page.hero lang=page.lang %}
22
+ </article>
23
+ </div>
24
+ {%- if _toc != "" %}
25
+ <aside class="mt-doc-aside">{{ _toc }}</aside>
26
+ {%- endif %}
27
+ </div>
@@ -0,0 +1,21 @@
1
+ ---
2
+ layout: default
3
+ mt_bundle: marketing
4
+ mt_main: mt-mk mt-mk-download
5
+ ---
6
+ {%- include modootoday/i18n.html -%}
7
+ {%- comment -%}download: version and date, then downloads: [{label, url, size, checksum}] as a table, then the body (install notes).{%- endcomment -%}
8
+ {%- assign _df = mt_t_post_date_format | default: "%Y-%m-%d" -%}
9
+ <article aria-labelledby="mt-mk-title">
10
+ {%- include modootoday/marketing/head.html %}
11
+ {%- if page.version %}<p class="mt-mk-meta">{{ mt_t_layouts_version }} <strong>{{ page.version }}</strong>{% if page.date %} · <time datetime="{{ page.date | date: '%Y-%m-%d' }}">{{ page.date | date: _df }}</time>{% endif %}</p>{% endif %}
12
+ {%- if page.downloads %}
13
+ <div class="mt-mk-table"><table>
14
+ <caption class="mt-sr-only">{{ mt_t_layouts_download }}</caption>
15
+ <tbody>{% for d in page.downloads %}<tr><th scope="row">{{ d.label }}</th><td>{{ d.size }}</td><td>{% if d.checksum %}<code>{{ d.checksum | truncate: 24 }}</code>{% endif %}</td><td><a class="mt-mk-btn" href="{% include modootoday/link.html url=d.url %}"{% include modootoday/links/attrs.html on=d.new_window target=d.target url=d.url %} download>{{ mt_t_layouts_download }}<span class="mt-sr-only">: {{ d.label }}</span></a></td></tr>{% endfor %}</tbody>
16
+ </table></div>
17
+ {%- endif %}
18
+ <div class="mt-mk-body">
19
+ {{ content }}
20
+ </div>
21
+ </article>
@@ -0,0 +1,5 @@
1
+ ---
2
+ layout: detail
3
+ mt_kind: episode
4
+ ---
5
+ {{ content }}
@@ -0,0 +1,7 @@
1
+ ---
2
+ layout: minimal
3
+ mt_main: mt-shell-minimal mt-error
4
+ ---
5
+ {%- comment -%}error: status page for 404, 410 or 500 (front matter status:, default 404). Title and text come from the
6
+ i18n catalog unless the page sets title or a body. Keep sitemap: false on these pages.{%- endcomment -%}
7
+ {%- include modootoday/pages/error.html status=page.status -%}
@@ -0,0 +1,5 @@
1
+ ---
2
+ layout: detail
3
+ mt_kind: event
4
+ ---
5
+ {{ content }}
@@ -0,0 +1,6 @@
1
+ ---
2
+ layout: directory
3
+ mt_preset: events
4
+ ---
5
+ {%- comment -%}events: directory preset (see directory.html).{%- endcomment -%}
6
+ {{ content }}
@@ -0,0 +1,18 @@
1
+ ---
2
+ layout: default
3
+ mt_bundle: marketing
4
+ mt_main: mt-mk mt-mk-feature
5
+ ---
6
+ {%- comment -%}feature: a product feature page. Header with actions, features: [{title, text}] as a grid, the body, then cta: {label, url}.{%- endcomment -%}
7
+ <article aria-labelledby="mt-mk-title">
8
+ {%- include modootoday/marketing/head.html %}
9
+ {%- if page.features %}
10
+ <ul class="mt-mk-grid" role="list">{% for f in page.features %}<li><h2>{{ f.title }}</h2>{% if f.text %}<p>{{ f.text }}</p>{% endif %}</li>{% endfor %}</ul>
11
+ {%- endif %}
12
+ <div class="mt-mk-body">
13
+ {{ content }}
14
+ </div>
15
+ {%- if page.cta.url %}
16
+ <p class="mt-mk-actions mt-mk-end"><a class="mt-mk-btn" href="{{ page.cta.url | relative_url }}">{{ page.cta.label }}</a></p>
17
+ {%- endif %}
18
+ </article>
@@ -0,0 +1,35 @@
1
+ {%- comment -%}mt Atom feed (Liquid only; use instead of jekyll-feed, or for per-language feeds). Create feed.xml:
2
+ ---
3
+ layout: feed
4
+ ---
5
+ Front matter: feed_lang (default page.lang or site.lang; "all" mixes), limit (default 20), category / tag (filtered feed).
6
+ Content is the post's excerpt unless feed_content: full.{%- endcomment -%}
7
+ {%- assign _fl = page.feed_lang | default: page.lang | default: site.lang | default: "en" -%}
8
+ {%- include modootoday/blog/select.html lang=_fl category=page.category tag=page.tag -%}
9
+ {%- assign _flim = page.limit | default: 20 -%}
10
+ <?xml version="1.0" encoding="utf-8"?>
11
+ <feed xmlns="http://www.w3.org/2005/Atom"{% unless _fl == "all" %} xml:lang="{{ _fl }}"{% endunless %}>
12
+ <title>{{ page.feed_title | default: site.title | xml_escape }}</title>
13
+ {%- if site.description %}<subtitle>{{ site.description | xml_escape }}</subtitle>{% endif %}
14
+ <link href="{{ page.url | absolute_url }}" rel="self" type="application/atom+xml"/>
15
+ <link href="{{ page.home | default: '/' | absolute_url }}" rel="alternate" type="text/html"/>
16
+ <id>{{ page.url | absolute_url | xml_escape }}</id>
17
+ <updated>{% if mt_posts.size > 0 %}{{ mt_posts.first.last_modified_at | default: mt_posts.first.date | date_to_xmlschema }}{% else %}{{ site.time | date_to_xmlschema }}{% endif %}</updated>
18
+ <generator uri="https://github.com/modootoday/jekyll-theme-modootoday">jekyll-theme-modootoday</generator>
19
+ {%- for _p in mt_posts limit: _flim %}
20
+ <entry>
21
+ <title type="html">{{ _p.title | strip_html | xml_escape }}</title>
22
+ <link href="{{ _p.url | absolute_url }}" rel="alternate" type="text/html"/>
23
+ <id>{{ _p.url | absolute_url | xml_escape }}</id>
24
+ <published>{{ _p.date | date_to_xmlschema }}</published>
25
+ <updated>{{ _p.last_modified_at | default: _p.updated | default: _p.date | date_to_xmlschema }}</updated>
26
+ {%- assign _fa = _p.authors | default: _p.author -%}{%- if _fa and _fa.first == nil -%}{%- assign _fa = _fa | split: "," -%}{%- endif -%}
27
+ {%- for _id in _fa %}{% assign _id = _id | strip %}<author><name>{{ site.data.authors[_id].name | default: _id | xml_escape }}</name></author>{% endfor -%}
28
+ {%- for _c in _p.categories %}<category term="{{ _c | xml_escape }}"/>{% endfor -%}{%- for _t in _p.tags %}<category term="{{ _t | xml_escape }}"/>{% endfor %}
29
+ <summary type="html">{{ _p.description | default: _p.excerpt | strip_html | normalize_whitespace | xml_escape }}</summary>
30
+ {%- if page.feed_content == "full" %}
31
+ <content type="html">{{ _p.content | xml_escape }}</content>
32
+ {%- endif %}
33
+ </entry>
34
+ {%- endfor %}
35
+ </feed>
@@ -0,0 +1,24 @@
1
+ ---
2
+ layout: default
3
+ mt_bundle: docs-extra
4
+ mt_main: mt-dx mt-dx-glossary
5
+ ---
6
+ {%- comment -%}glossary: terms: [{term, text, id}] sorted by term, grouped by first letter with a letter index; a dl with a dt
7
+ (id) per term. Structured data: DefinedTermSet with one DefinedTerm per entry.{%- endcomment -%}
8
+ {%- assign _terms = page.terms | sort_natural: "term" -%}
9
+ {%- assign _letters = "" -%}{%- for t in _terms -%}{%- assign _c = t.term | slice: 0 | upcase -%}{%- unless _letters contains _c -%}{%- assign _letters = _letters | append: _c | append: " " -%}{%- endunless -%}{%- endfor -%}
10
+ {%- assign _letters = _letters | split: " " -%}
11
+ <article aria-labelledby="mt-dx-title">
12
+ {%- include modootoday/docs-extra/head.html %}
13
+ <div class="mt-dx-body">
14
+ {{ content }}
15
+ </div>
16
+ {%- if _letters.size > 1 %}
17
+ <nav class="mt-dx-letters" aria-label="{{ mt_t_layouts_letters }}"><ul>{% for l in _letters %}<li><a href="#mt-dx-l-{{ forloop.index }}">{{ l }}</a></li>{% endfor %}</ul></nav>
18
+ {%- endif %}
19
+ {%- for l in _letters %}
20
+ <section aria-labelledby="mt-dx-l-{{ forloop.index }}"><h2 class="mt-dx-letter" id="mt-dx-l-{{ forloop.index }}">{{ l }}</h2>
21
+ <dl class="mt-dx-terms">{% for t in _terms %}{% assign _c = t.term | slice: 0 | upcase %}{% if _c == l %}<dt id="{{ t.id | default: t.term | slugify }}">{{ t.term }}</dt><dd>{{ t.text | markdownify | remove: "<p>" | remove: "</p>" | strip }}</dd>{% endif %}{% endfor %}</dl>
22
+ </section>
23
+ {%- endfor %}
24
+ </article>
@@ -0,0 +1,7 @@
1
+ ---
2
+ layout: wide
3
+ mt_main: mt-shell-wide mt-home
4
+ ---
5
+ {%- comment -%}home: optional hero from front matter (hero.title, hero.text, hero.actions[label,url]), then the page body (the WebSite node is in every page's JSON-LD graph).{%- endcomment -%}
6
+ {%- include modootoday/pages/hero.html hero=page.hero -%}
7
+ {{ content }}
data/_layouts/hub.html ADDED
@@ -0,0 +1,16 @@
1
+ ---
2
+ layout: default
3
+ mt_bundle: docs-extra
4
+ mt_main: mt-dx mt-dx-hub
5
+ ---
6
+ {%- comment -%}hub: a section landing page. cards: [{title, text, url}] as a grid of linked cards after the header, then the body.
7
+ Structured data: CollectionPage whose hasPart lists the linked pages.{%- endcomment -%}
8
+ <article aria-labelledby="mt-dx-title">
9
+ {%- include modootoday/docs-extra/head.html %}
10
+ {%- if page.cards %}
11
+ <ul class="mt-dx-cards" role="list">{% for c in page.cards %}<li><h2><a href="{% include modootoday/link.html url=c.url %}"{% include modootoday/links/attrs.html on=c.new_window target=c.target url=c.url %}>{{ c.title }}</a></h2>{% if c.text %}<p>{{ c.text }}</p>{% endif %}</li>{% endfor %}</ul>
12
+ {%- endif %}
13
+ <div class="mt-dx-body">
14
+ {{ content }}
15
+ </div>
16
+ </article>
@@ -0,0 +1,7 @@
1
+ ---
2
+ layout: directory
3
+ mt_preset: integrations
4
+ mt_filter: category
5
+ ---
6
+ {%- comment -%}integrations: directory preset (see directory.html).{%- endcomment -%}
7
+ {{ content }}
data/_layouts/job.html ADDED
@@ -0,0 +1,5 @@
1
+ ---
2
+ layout: detail
3
+ mt_kind: job
4
+ ---
5
+ {{ content }}
@@ -0,0 +1,7 @@
1
+ ---
2
+ layout: directory
3
+ mt_preset: jobs
4
+ mt_filter: department
5
+ ---
6
+ {%- comment -%}jobs: directory preset (see directory.html).{%- endcomment -%}
7
+ {{ content }}
@@ -0,0 +1,21 @@
1
+ ---
2
+ layout: default
3
+ mt_bundle: pages
4
+ mt_main: mt-legal
5
+ ---
6
+ {%- include modootoday/config.html -%}{%- include modootoday/i18n.html -%}
7
+ {%- comment -%}legal: terms, privacy or other policy pages. effective (date, required), updated and version under the title, a
8
+ contents list built from the body's ## and ### headings (toc: false hides it), then the body; prints cleanly (the pages bundle hides chrome on paper).
9
+ Structured data: WebPage with datePublished = effective and dateModified = updated.{%- endcomment -%}
10
+ {%- assign _df = mt_t_post_date_format | default: "%Y-%m-%d" -%}
11
+ <article aria-labelledby="mt-legal-title">
12
+ <header class="mt-legal-head">
13
+ <h1 id="mt-legal-title">{{ page.title }}</h1>
14
+ <p class="mt-legal-meta">{% if page.effective %}{{ mt_t_layouts_effective }}: <time datetime="{{ page.effective | date: '%Y-%m-%d' }}">{{ page.effective | date: _df }}</time>{% endif %}{% if page.updated %} · {{ mt_t_page_updated }}: <time datetime="{{ page.updated | date: '%Y-%m-%d' }}">{{ page.updated | date: _df }}</time>{% endif %}{% if page.version %} · {{ mt_t_layouts_version }} {{ page.version }}{% endif %}</p>
15
+ {%- if page.description %}<p class="mt-legal-lead">{{ page.description }}</p>{% endif %}
16
+ </header>
17
+ {%- include modootoday/toc.html html=content %}
18
+ <div class="mt-legal-body">
19
+ {{ content }}
20
+ </div>
21
+ </article>
@@ -0,0 +1,18 @@
1
+ ---
2
+ layout: default
3
+ mt_bundle: marketing
4
+ mt_chrome: false
5
+ mt_main: mt-mk mt-mk-links
6
+ ---
7
+ {%- comment -%}links: a link page (no site header): image, title, description, links: [{label, url}] as large buttons, then the body.
8
+ Structured data: ProfilePage with a Person or Organization (profile: person | organization) whose sameAs lists the links.{%- endcomment -%}
9
+ <article aria-labelledby="mt-mk-title">
10
+ {%- if page.image %}<img class="mt-mk-avatar" src="{{ page.image | relative_url }}" alt="" width="96" height="96" decoding="async">{% endif %}
11
+ {%- include modootoday/marketing/head.html %}
12
+ {%- if page.links %}
13
+ <ul class="mt-mk-linklist" role="list">{% for l in page.links %}<li><a href="{% include modootoday/link.html url=l.url %}"{% include modootoday/links/attrs.html on=l.new_window target=l.target url=l.url %}>{{ l.label }}</a></li>{% endfor %}</ul>
14
+ {%- endif %}
15
+ <div class="mt-mk-body">
16
+ {{ content }}
17
+ </div>
18
+ </article>
@@ -0,0 +1,8 @@
1
+ {%- comment -%}md-components v1 llms-full.txt: the source body of every page of this language under this directory, byte-for-byte, separated by a blank line. Use from a stub: front matter `layout: llms-full` only.{%- endcomment -%}
2
+ {%- include modootoday/markdown/llms-pages.html -%}
3
+ {%- for _p in _llms_pages -%}
4
+ {%- assign _rel = _p.path | remove_first: _llms_dir -%}
5
+ {%- unless forloop.first %}
6
+ {% endunless -%}
7
+ {%- include modootoday/markdown/raw-body.html file=_rel -%}
8
+ {%- endfor -%}
@@ -0,0 +1,32 @@
1
+ {%- comment -%}md-components v1 llms.txt (https://llmstxt.org): H1, summary, a Docs H2 link list of this language's pages (twin URLs) and, at the root, a Translations H2. Use from a stub whose front matter is only `layout: llms` (title/description optional; else _data/i18n/<lang>.yml title/description, else site).{%- endcomment -%}
2
+ {%- include modootoday/markdown/llms-pages.html -%}
3
+ {%- assign _t = site.data.i18n[_llms_lang] -%}
4
+ # {{ page.title | default: _t.title | default: site.title }}
5
+
6
+ > {{ page.description | default: _t.description | default: site.description | strip_newlines }}
7
+
8
+ ## Docs
9
+
10
+ {% for _p in _llms_pages -%}
11
+ {%- assign _tw = _p.url | append: "index.md" -%}{%- if _p.url contains ".html" -%}{%- assign _tw = _p.url | replace: ".html", ".md" -%}{%- endif -%}
12
+ {%- assign _sp = "/" | append: _p.path -%}{%- assign _sf = site.static_files | where: "path", _sp | first -%}{%- if _sf -%}{%- assign _tw = _sp -%}{%- endif -%}
13
+ {%- if site.url -%}{%- assign _href = _tw | absolute_url -%}{%- else -%}{%- assign _href = _tw | relative_url -%}{%- endif -%}
14
+ - [{{ _p.title | default: _p.name }}]({{ _href }}){% if _p.description %}: {{ _p.description | strip_newlines }}{% endif %}
15
+ {% endfor -%}
16
+ {%- if _llms_dir == "" -%}
17
+ {%- assign _tr = "" -%}
18
+ {%- for _l in site.data.i18n -%}
19
+ {%- assign _code = _l[0] -%}
20
+ {%- assign _lurl = "/" | append: _code | append: "/llms.txt" -%}
21
+ {%- assign _lp = site.pages | where: "url", _lurl | first -%}
22
+ {%- if _lp and _code != _llms_lang -%}
23
+ {%- if site.url -%}{%- assign _href = _lurl | absolute_url -%}{%- else -%}{%- assign _href = _lurl | relative_url -%}{%- endif -%}
24
+ {%- capture _tr %}{{ _tr }}- [{{ _l[1].language | default: _code }}]({{ _href }}): {{ _code }} pages
25
+ {% endcapture -%}
26
+ {%- endif -%}
27
+ {%- endfor -%}
28
+ {%- if _tr != "" %}
29
+ ## Translations
30
+
31
+ {{ _tr }}{% endif -%}
32
+ {%- endif -%}
@@ -0,0 +1,8 @@
1
+ ---
2
+ layout: default
3
+ mt_bundle: pages
4
+ mt_chrome: false
5
+ mt_main: mt-shell-minimal
6
+ ---
7
+ {%- comment -%}minimal: no header, page meta or pagination; a narrow centred column (sign-in notes, link pages, standalone notices).{%- endcomment -%}
8
+ {{ content }}
@@ -0,0 +1,6 @@
1
+ ---
2
+ layout: post
3
+ ---
4
+ {%- comment -%}mt news article: the post layout as a NewsArticle (JSON-LD), with a deck (front matter deck: or description), dateline,
5
+ breaking/live badge, correction note, sources and credits, and "Related coverage". Every post part applies.{%- endcomment -%}
6
+ {{ content }}
@@ -0,0 +1,22 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+ {%- comment -%}mt news front page: page body (masthead or intro), then lead story, secondary grid, latest list and category sections.
5
+ Front matter: news_sections (category names; default modootoday.news.sections), secondary (default 4), latest (default 6),
6
+ category (a section page: only that category, as a blog-style list), lang ("all" mixes languages).{%- endcomment -%}
7
+ {%- assign _lang = page.lang | default: site.lang | default: "en" -%}
8
+ {%- include modootoday/i18n.html lang=_lang -%}
9
+ {%- include modootoday/blog/config.html -%}
10
+ <div class="mt-news">
11
+ {%- if content != "" %}
12
+ <header class="mt-news-masthead mt-doc">{{ content }}</header>
13
+ {%- endif -%}
14
+ {%- include modootoday/blog/select.html lang=page.posts_lang category=page.category -%}
15
+ {%- if mt_posts.size == 0 %}
16
+ <p class="mt-archive-empty">{{ mt_t_archive_empty }}</p>
17
+ {%- elsif page.category %}
18
+ {% include modootoday/blog/list.html posts=mt_posts limit=mt_blog_per_page variant="list" featured=true %}
19
+ {%- else %}
20
+ {% include modootoday/news/front.html posts=mt_posts sections=page.news_sections secondary=page.secondary latest=page.latest %}
21
+ {%- endif %}
22
+ </div>
@@ -0,0 +1,7 @@
1
+ ---
2
+ layout: directory
3
+ mt_preset: portfolio
4
+ mt_filter: tags
5
+ ---
6
+ {%- comment -%}portfolio: directory preset (see directory.html).{%- endcomment -%}
7
+ {{ content }}
@@ -0,0 +1,54 @@
1
+ ---
2
+ layout: doc
3
+ ---
4
+ {%- comment -%}mt post layout: header (badges, deck, byline with authors, dates and reading time, cover with alt/caption), series box,
5
+ the doc pipeline, news notes (correction, sources, credits), tag/category footer, share, previous/next post, related posts, JSON-LD.
6
+ Links point at the archive pages set in _config.yml: modootoday.archive: {tags: /tags/, categories: /categories/}.
7
+ For a post whose lang is not site.lang the URL is prefixed with /<lang> (/ko/tags/). Without the setting there is no footer.{%- endcomment -%}
8
+ {%- assign _lang = page.lang | default: site.lang | default: "en" -%}
9
+ {%- include modootoday/i18n.html lang=_lang -%}
10
+ {%- assign _fmt = mt_t_post_date_format -%}
11
+ {%- assign _site_lang = site.lang | default: "en" -%}
12
+ {%- assign _pre = "" -%}{%- if _lang != _site_lang -%}{%- assign _pre = _lang | prepend: "/" -%}{%- endif -%}
13
+ {%- assign _tu = site.modootoday.archive.tags -%}{%- if _tu -%}{%- assign _tu = _tu | prepend: _pre | relative_url -%}{%- endif -%}
14
+ {%- assign _cu = site.modootoday.archive.categories -%}{%- if _cu -%}{%- assign _cu = _cu | prepend: _pre | relative_url -%}{%- endif -%}
15
+ {%- include modootoday/blog/config.html -%}
16
+ {%- assign _news = false -%}{%- if page.layout == "news-article" or page.kind == "news" -%}{%- assign _news = true -%}{%- endif -%}
17
+ {%- capture _hdr -%}<header class="mt-post-header" data-part="header"{% if _news %} data-kind="news"{% endif %}>
18
+ {%- if page.breaking or page.live %}<p class="mt-post-flags">{% if page.breaking %}{% include modootoday/news/badge.html kind="breaking" %}{% else %}{% include modootoday/news/badge.html kind="live" %}{% endif %}</p>{% endif -%}
19
+ {%- assign _deck = page.deck | default: page.subtitle -%}{%- if _news -%}{%- assign _deck = _deck | default: page.description -%}{%- endif -%}
20
+ {%- if _deck %}<p class="mt-post-deck" data-part="deck">{{ _deck }}</p>{% endif %}
21
+ {% include modootoday/meta/byline.html %}
22
+ {%- unless _tu or _cu %}{% if page.tags.size > 0 %}<p class="mt-post-meta" data-part="terms">{% for t in page.tags %}<span class="mt-badge mt-badge-tag" data-variant="tag">{{ t }}</span>{% endfor %}</p>{% endif %}{% endunless %}
23
+ {%- assign _cov = page.image.path | default: page.image -%}
24
+ {%- if _cov and page.cover != false %}
25
+ <figure class="mt-post-cover" data-part="cover"><img src="{{ _cov | relative_url }}" alt="{{ page.image.alt | default: page.image_alt | escape }}"{% if page.image.width %} width="{{ page.image.width }}" height="{{ page.image.height }}"{% endif %} decoding="async" fetchpriority="high">
26
+ {%- assign _cap = page.image.caption | default: page.image_caption -%}{%- if _cap %}<figcaption>{{ _cap }}</figcaption>{% endif %}</figure>
27
+ {%- endif %}
28
+ </header>
29
+ {% include modootoday/meta/series.html %}
30
+ {%- endcapture -%}
31
+ {%- if content contains "</h1>" -%}
32
+ {%- assign _h1 = content | split: "</h1>" | first | append: "</h1>" -%}
33
+ {{ _h1 }}
34
+ {{ _hdr }}
35
+ {{ content | remove_first: _h1 }}
36
+ {%- else %}
37
+ <h1 class="mt-post-title" data-part="title">{{ page.title | escape }}</h1>
38
+ {{ _hdr }}
39
+ {{ content }}
40
+ {%- endif %}
41
+ {%- if _tu or _cu -%}{%- if page.tags.size > 0 or page.categories.size > 0 %}
42
+ <footer class="mt-post-terms">
43
+ {%- if _cu and page.categories.size > 0 %}
44
+ <p><span class="mt-post-terms-label">{{ mt_t_archive_categories }}</span>{% for c in page.categories %} <a href="{{ _cu }}#categories-{{ c | slugify }}">{{ c }}</a>{% endfor %}</p>
45
+ {%- endif -%}
46
+ {%- if _tu and page.tags.size > 0 %}
47
+ <p><span class="mt-post-terms-label">{{ mt_t_archive_tags }}</span>{% for t in page.tags %} <a class="mt-badge mt-badge-tag" data-variant="tag" href="{{ _tu }}#tags-{{ t | slugify }}">{{ t }}</a>{% endfor %}</p>
48
+ {%- endif %}
49
+ </footer>
50
+ {%- endif -%}{%- endif -%}
51
+ {%- if _news %}{% include modootoday/news/notes.html %}{% endif %}
52
+ {% include modootoday/meta/share.html %}
53
+ {% include modootoday/meta/post-nav.html %}
54
+ {%- if _news %}{% include modootoday/meta/related.html %}{% else %}{% include modootoday/meta/related.html %}{% endif %}
@@ -0,0 +1,32 @@
1
+ ---
2
+ layout: default
3
+ mt_bundle: marketing
4
+ mt_css: [pricing]
5
+ mt_main: mt-mk mt-mk-pricing
6
+ ---
7
+ {%- include modootoday/i18n.html -%}
8
+ {%- comment -%}pricing: plans: [{name, monthly, yearly, text, features: [...], cta: {label, url}, recommended: true}] and currency.
9
+ Plan cards reuse the pricing component sheet. With yearly prices a Monthly/Yearly radio pair switches them with CSS only
10
+ (no JavaScript); both prices stay in the HTML, the hidden one with display:none.{%- endcomment -%}
11
+ {%- assign _y = page.plans | where_exp: "p", "p.yearly" | size -%}
12
+ {%- assign _cur = page.currency | default: "" -%}
13
+ <article aria-labelledby="mt-mk-title">
14
+ {%- include modootoday/marketing/head.html %}
15
+ <div class="mt-mk-pricing-box">
16
+ {%- if _y > 0 %}
17
+ <input class="mt-sr-only mt-bill-m" type="radio" name="mt-billing" id="mt-bill-m" checked><input class="mt-sr-only mt-bill-y" type="radio" name="mt-billing" id="mt-bill-y">
18
+ <div class="mt-mk-billing" role="group" aria-label="{{ mt_t_layouts_billing }}"><label for="mt-bill-m">{{ mt_t_layouts_monthly }}</label><label for="mt-bill-y">{{ mt_t_layouts_yearly }}</label></div>
19
+ {%- endif %}
20
+ <div class="mt-plans">{% for p in page.plans %}
21
+ <div class="mt-plan{% if p.recommended %} mt-plan-recommended{% endif %}">{% if p.recommended %}<p class="mt-plan-flag">{{ mt_t_layouts_popular }}</p>{% endif %}<h2>{{ p.name }}</h2>
22
+ <p class="mt-mk-price"><span class="mt-price-m"><strong>{{ _cur }}{{ p.monthly }}</strong>{% if p.yearly %} / {{ mt_t_layouts_monthly | downcase }}{% endif %}</span>{% if p.yearly %}<span class="mt-price-y"><strong>{{ _cur }}{{ p.yearly }}</strong> / {{ mt_t_layouts_yearly | downcase }}</span>{% endif %}</p>
23
+ {%- if p.text %}<p>{{ p.text }}</p>{% endif %}
24
+ {%- if p.features %}<ul>{% for f in p.features %}<li>{{ f }}</li>{% endfor %}</ul>{% endif %}
25
+ {%- if p.cta.url %}<p class="mt-actions"><a href="{% include modootoday/link.html url=p.cta.url %}"{% include modootoday/links/attrs.html on=p.cta.new_window target=p.cta.target url=p.cta.url %}>{{ p.cta.label }}<span class="mt-sr-only">: {{ p.name }}</span></a></p>{% endif %}
26
+ </div>{% endfor %}
27
+ </div>
28
+ </div>
29
+ <div class="mt-mk-body">
30
+ {{ content }}
31
+ </div>
32
+ </article>
@@ -0,0 +1,5 @@
1
+ ---
2
+ layout: detail
3
+ mt_kind: project
4
+ ---
5
+ {{ content }}
@@ -0,0 +1,21 @@
1
+ {%- comment -%}redirect: standalone page that sends visitors to page.redirect_to (meta refresh, no script, so it
2
+ works under a strict CSP), with a canonical link for search engines and a visible link for everyone else.{%- endcomment -%}
3
+ {%- assign _lang = page.lang | default: site.lang | default: "en" -%}
4
+ {%- include modootoday/i18n.html lang=_lang -%}
5
+ {%- assign _rtl = "ar fa he ur yi ps sd ug dv ckb" | split: " " -%}{%- assign _b = _lang | split: "-" | first -%}
6
+ {%- if _rtl contains _b %}{% assign _dir = "rtl" %}{% else %}{% assign _dir = nil %}{% endif %}{%- assign _dir = mt_t_direction | default: _dir -%}
7
+ {%- assign _to = page.redirect_to -%}{%- unless _to contains "://" -%}{%- assign _to = _to | relative_url -%}{%- endunless -%}
8
+ <!doctype html>
9
+ <html lang="{{ _lang }}"{% if _dir %} dir="{{ _dir }}"{% endif %}>
10
+ <head>
11
+ <meta charset="utf-8">
12
+ <meta name="viewport" content="width=device-width, initial-scale=1">
13
+ <title>{{ mt_t_pages_moved }}</title>
14
+ <meta name="robots" content="noindex">
15
+ <link rel="canonical" href="{% if page.redirect_to contains '://' %}{{ _to }}{% else %}{{ page.redirect_to | absolute_url }}{% endif %}">
16
+ <meta http-equiv="refresh" content="0; url={{ _to }}">
17
+ </head>
18
+ <body>
19
+ <p>{{ mt_t_pages_moved }} <a href="{{ _to }}">{{ mt_t_pages_moved_link }}</a></p>
20
+ </body>
21
+ </html>