slipway-theme 0.1.0 → 0.2.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 (129) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/blocks/annotations.html +18 -0
  3. data/_includes/blocks/audio.html +22 -0
  4. data/_includes/blocks/badge.html +2 -0
  5. data/_includes/blocks/chart.html +32 -0
  6. data/_includes/blocks/citation.html +12 -0
  7. data/_includes/blocks/code-group.html +10 -0
  8. data/_includes/blocks/compare.html +64 -0
  9. data/_includes/blocks/diff.html +31 -0
  10. data/_includes/blocks/download.html +28 -0
  11. data/_includes/blocks/endpoint.html +50 -0
  12. data/_includes/blocks/file-tree.html +52 -0
  13. data/_includes/blocks/gallery.html +18 -0
  14. data/_includes/blocks/hero.html +30 -0
  15. data/_includes/blocks/kbd.html +27 -0
  16. data/_includes/blocks/logos.html +21 -0
  17. data/_includes/blocks/people.html +47 -0
  18. data/_includes/blocks/pricing.html +28 -0
  19. data/_includes/blocks/pull-quote.html +22 -0
  20. data/_includes/blocks/stats.html +14 -0
  21. data/_includes/blocks/steps.html +24 -0
  22. data/_includes/blocks/terminal.html +14 -0
  23. data/_includes/blocks/testimonial.html +23 -0
  24. data/_includes/blocks/timeline.html +23 -0
  25. data/_includes/breadcrumbs.html +16 -0
  26. data/_includes/changelog-version.html +6 -0
  27. data/_includes/comments.html +19 -0
  28. data/_includes/edit-sources.html +11 -2
  29. data/_includes/head.html +5 -0
  30. data/_includes/i18n/ar.html +35 -0
  31. data/_includes/i18n/az.html +78 -0
  32. data/_includes/i18n/bn.html +78 -0
  33. data/_includes/i18n/ckb.html +78 -0
  34. data/_includes/i18n/cs.html +78 -0
  35. data/_includes/i18n/da.html +78 -0
  36. data/_includes/i18n/de.html +35 -0
  37. data/_includes/i18n/dv.html +78 -0
  38. data/_includes/i18n/el.html +78 -0
  39. data/_includes/i18n/en.html +35 -0
  40. data/_includes/i18n/es.html +35 -0
  41. data/_includes/i18n/fa.html +35 -0
  42. data/_includes/i18n/fi.html +78 -0
  43. data/_includes/i18n/fr.html +35 -0
  44. data/_includes/i18n/he.html +36 -0
  45. data/_includes/i18n/hi.html +78 -0
  46. data/_includes/i18n/hu.html +78 -0
  47. data/_includes/i18n/id.html +78 -0
  48. data/_includes/i18n/it.html +35 -0
  49. data/_includes/i18n/ja.html +35 -0
  50. data/_includes/i18n/ko.html +78 -0
  51. data/_includes/i18n/ms.html +78 -0
  52. data/_includes/i18n/nb.html +78 -0
  53. data/_includes/i18n/nl.html +35 -0
  54. data/_includes/i18n/pl.html +78 -0
  55. data/_includes/i18n/ps.html +78 -0
  56. data/_includes/i18n/pt.html +35 -0
  57. data/_includes/i18n/ro.html +78 -0
  58. data/_includes/i18n/ru.html +35 -0
  59. data/_includes/i18n/sd.html +78 -0
  60. data/_includes/i18n/sv.html +78 -0
  61. data/_includes/i18n/sw.html +78 -0
  62. data/_includes/i18n/ta.html +78 -0
  63. data/_includes/i18n/th.html +78 -0
  64. data/_includes/i18n/tr.html +35 -0
  65. data/_includes/i18n/ug.html +78 -0
  66. data/_includes/i18n/uk.html +78 -0
  67. data/_includes/i18n/ur.html +78 -0
  68. data/_includes/i18n/vi.html +78 -0
  69. data/_includes/i18n/yi.html +78 -0
  70. data/_includes/i18n/zh.html +35 -0
  71. data/_includes/i18n-builtin.html +1 -1
  72. data/_includes/jsonld.html +5 -3
  73. data/_includes/last-updated.html +12 -0
  74. data/_includes/page-status.html +19 -0
  75. data/_includes/schema-table.html +122 -0
  76. data/_includes/seo.html +23 -3
  77. data/_includes/snippet.html +20 -0
  78. data/_layouts/adr-index.html +32 -0
  79. data/_layouts/adr.html +45 -0
  80. data/_layouts/changelog-feed.html +28 -0
  81. data/_layouts/changelog.html +40 -0
  82. data/_layouts/doc.html +28 -6
  83. data/_layouts/feed.html +2 -2
  84. data/_layouts/links.html +31 -0
  85. data/_layouts/not-found.html +8 -0
  86. data/_layouts/page.html +7 -2
  87. data/_layouts/post.html +33 -0
  88. data/_layouts/search-index.html +32 -2
  89. data/_layouts/sitemap.html +1 -1
  90. data/assets/css/components/adr.css +11 -0
  91. data/assets/css/components/annotations.css +6 -0
  92. data/assets/css/components/audio.css +8 -0
  93. data/assets/css/components/badge.css +13 -0
  94. data/assets/css/components/changelog.css +11 -0
  95. data/assets/css/components/chart.css +7 -0
  96. data/assets/css/components/citation.css +5 -0
  97. data/assets/css/components/code-group.css +9 -0
  98. data/assets/css/components/compare.css +8 -0
  99. data/assets/css/components/diff.css +9 -0
  100. data/assets/css/components/download.css +7 -0
  101. data/assets/css/components/endpoint.css +1 -0
  102. data/assets/css/components/file-tree.css +12 -0
  103. data/assets/css/components/gallery.css +6 -0
  104. data/assets/css/components/hero.css +11 -0
  105. data/assets/css/components/kbd.css +4 -0
  106. data/assets/css/components/logos.css +8 -0
  107. data/assets/css/components/mirror.css +1 -0
  108. data/assets/css/components/page-status.css +5 -0
  109. data/assets/css/components/people.css +7 -0
  110. data/assets/css/components/pricing.css +9 -0
  111. data/assets/css/components/pull-quote.css +6 -0
  112. data/assets/css/components/schema-table.css +13 -0
  113. data/assets/css/components/stats.css +1 -0
  114. data/assets/css/components/steps.css +10 -0
  115. data/assets/css/components/terminal.css +17 -0
  116. data/assets/css/components/testimonial.css +8 -0
  117. data/assets/css/components/timeline.css +11 -0
  118. data/assets/css/lang/ckb.css +6 -0
  119. data/assets/css/lang/dv.css +6 -0
  120. data/assets/css/lang/ps.css +3 -0
  121. data/assets/css/lang/sd.css +10 -0
  122. data/assets/css/lang/ug.css +3 -0
  123. data/assets/css/lang/ur.css +10 -0
  124. data/assets/css/lang/yi.css +5 -0
  125. data/assets/css/slipway.css +54 -1
  126. data/assets/js/copy-code.js +1 -1
  127. data/assets/js/search.js +12 -10
  128. data/assets/og/template.svg +39 -0
  129. metadata +99 -2
@@ -0,0 +1,78 @@
1
+ {%- case include.key -%}
2
+ {%- when 'about_author' -%}Về tác giả
3
+ {%- when 'accepted' -%}Đã chấp nhận
4
+ {%- when 'adr_date' -%}Ngày
5
+ {%- when 'adr_deciders' -%}Người quyết định
6
+ {%- when 'adr_status' -%}Trạng thái
7
+ {%- when 'adr_superseded_by' -%}Được thay thế bởi
8
+ {%- when 'adr_supersedes' -%}Thay thế
9
+ {%- when 'and' -%}và
10
+ {%- when 'breadcrumbs' -%}Đường dẫn điều hướng
11
+ {%- when 'by' -%}Bởi
12
+ {%- when 'categories' -%}Danh mục
13
+ {%- when 'comma' -%},
14
+ {%- when 'comments' -%}Bình luận
15
+ {%- when 'copied' -%}Đã sao chép
16
+ {%- when 'copy' -%}Sao chép
17
+ {%- when 'copy_failed' -%}Nhấn Ctrl+C
18
+ {%- when 'copy_page_md' -%}Sao chép trang dưới dạng Markdown
19
+ {%- when 'default' -%}Default
20
+ {%- when 'deprecated' -%}Không dùng nữa
21
+ {%- when 'description' -%}Mô tả
22
+ {%- when 'docs_nav' -%}Tài liệu
23
+ {%- when 'edit_label' -%}Chỉnh sửa với trợ lý của bạn
24
+ {%- when 'edit_prompt' -%}Chỉnh sửa {source}. Văn bản hiện tại: "{text}". Thay đổi:
25
+ {%- when 'edited_on' -%}được chỉnh sửa vào
26
+ {%- when 'example_request' -%}Yêu cầu mẫu
27
+ {%- when 'example_response' -%}Phản hồi mẫu
28
+ {%- when 'go_home' -%}Về trang chủ
29
+ {%- when 'home' -%}Trang chủ
30
+ {%- when 'language' -%}Ngôn ngữ
31
+ {%- when 'last_updated' -%}Cập nhật lần cuối
32
+ {%- when 'latest_posts' -%}Bài viết mới nhất
33
+ {%- when 'links' -%}Liên kết
34
+ {%- when 'main_nav' -%}Điều hướng chính
35
+ {%- when 'min_read' -%}phút đọc
36
+ {%- when 'mode_auto' -%}Tự động
37
+ {%- when 'mode_dark' -%}Tối
38
+ {%- when 'mode_light' -%}Sáng
39
+ {%- when 'name' -%}Tên
40
+ {%- when 'next' -%}Tiếp theo
41
+ {%- when 'no' -%}Không
42
+ {%- when 'not_found_text' -%}Địa chỉ này không tồn tại hoặc đã được di chuyển. Hãy dùng ô tìm kiếm hoặc về trang chủ.
43
+ {%- when 'not_found_title' -%}Không tìm thấy trang
44
+ {%- when 'on_this_page' -%}Trên trang này
45
+ {%- when 'pager' -%}Trước và tiếp theo
46
+ {%- when 'parameters' -%}Tham số
47
+ {%- when 'partial' -%}Một phần
48
+ {%- when 'post_pager' -%}Bài viết trước và tiếp theo
49
+ {%- when 'posts' -%}Bài viết
50
+ {%- when 'previous' -%}Trước
51
+ {%- when 'proposed' -%}Đề xuất
52
+ {%- when 'rejected' -%}Bị từ chối
53
+ {%- when 'related_posts' -%}Bài viết liên quan
54
+ {%- when 'releases' -%}Bản phát hành
55
+ {%- when 'required' -%}Bắt buộc
56
+ {%- when 'scheduled' -%}Đã lên lịch
57
+ {%- when 'search' -%}Tìm kiếm
58
+ {%- when 'search_count' -%}{n} kết quả
59
+ {%- when 'search_none' -%}Không có kết quả
60
+ {%- when 'series' -%}Loạt bài
61
+ {%- when 'series_pager' -%}Trước và tiếp theo trong loạt bài này
62
+ {%- when 'series_part' -%}Phần {n} trong tổng số {total}
63
+ {%- when 'skip' -%}Chuyển đến nội dung
64
+ {%- when 'social_links' -%}Liên kết mạng xã hội
65
+ {%- when 'status_beta' -%}Bản thử nghiệm
66
+ {%- when 'status_deprecated' -%}Không dùng nữa
67
+ {%- when 'status_experimental' -%}Thử nghiệm
68
+ {%- when 'status_replaced_by' -%}Được thay thế bởi
69
+ {%- when 'status_since' -%}Từ
70
+ {%- when 'superseded' -%}Đã bị thay thế
71
+ {%- when 'tags' -%}Thẻ
72
+ {%- when 'theme' -%}Giao diện
73
+ {%- when 'translation_key' -%}Khóa dịch
74
+ {%- when 'translation_missing' -%}Trang này chưa được dịch. Đọc bằng:
75
+ {%- when 'type' -%}Loại
76
+ {%- when 'versions' -%}Phiên bản
77
+ {%- when 'yes' -%}Có
78
+ {%- endcase -%}
@@ -0,0 +1,78 @@
1
+ {%- case include.key -%}
2
+ {%- when 'about_author' -%}וועגן דעם מחבר
3
+ {%- when 'accepted' -%}Accepted
4
+ {%- when 'adr_date' -%}Date
5
+ {%- when 'adr_deciders' -%}Deciders
6
+ {%- when 'adr_status' -%}Status
7
+ {%- when 'adr_superseded_by' -%}Superseded by
8
+ {%- when 'adr_supersedes' -%}Supersedes
9
+ {%- when 'and' -%}און
10
+ {%- when 'breadcrumbs' -%}ברעקלעך
11
+ {%- when 'by' -%}דורך
12
+ {%- when 'categories' -%}קאַטעגאָריעס
13
+ {%- when 'comma' -%},
14
+ {%- when 'comments' -%}קאָמענטאַרן
15
+ {%- when 'copied' -%}קאָפּירט
16
+ {%- when 'copy' -%}קאָפּירן
17
+ {%- when 'copy_failed' -%}דריקט Ctrl+C
18
+ {%- when 'copy_page_md' -%}קאָפּירן בלאַט ווי Markdown
19
+ {%- when 'default' -%}Default
20
+ {%- when 'deprecated' -%}Deprecated
21
+ {%- when 'description' -%}Description
22
+ {%- when 'docs_nav' -%}דאָקומענטאַציע
23
+ {%- when 'edit_label' -%}רעדאַקטירן מיט דיין אַגענט
24
+ {%- when 'edit_prompt' -%}רעדאַקטירן {source}. קראַנט טעקסט: "{text}". טוישן:
25
+ {%- when 'edited_on' -%}רעדאַקטירט אום
26
+ {%- when 'example_request' -%}Example request
27
+ {%- when 'example_response' -%}Example response
28
+ {%- when 'go_home' -%}גיין צום הויפּט בלאַט
29
+ {%- when 'home' -%}הויפּט בלאַט
30
+ {%- when 'language' -%}שפּראַך
31
+ {%- when 'last_updated' -%}לעצט דערהיינטיקט
32
+ {%- when 'latest_posts' -%}לעצטע אַרטיקלען
33
+ {%- when 'links' -%}Links
34
+ {%- when 'main_nav' -%}הויפּט מעניו
35
+ {%- when 'min_read' -%}מין לייענען
36
+ {%- when 'mode_auto' -%}אויטאָמאַטיש
37
+ {%- when 'mode_dark' -%}טונקל
38
+ {%- when 'mode_light' -%}ליכטיק
39
+ {%- when 'name' -%}Name
40
+ {%- when 'next' -%}ווייטערדיק
41
+ {%- when 'no' -%}No
42
+ {%- when 'not_found_text' -%}דער אַדרעס עקזיסטירט נישט אָדער איז אריבערגעפירט געוואָרן. ניצט דעם זוכן פעלד אָדער גייט צום הויפּט בלאַט.
43
+ {%- when 'not_found_title' -%}בלאַט נישט געפונען
44
+ {%- when 'on_this_page' -%}אויף דעם בלאַט
45
+ {%- when 'pager' -%}פֿריִערדיקער און ווייטערדיקער
46
+ {%- when 'parameters' -%}Parameters
47
+ {%- when 'partial' -%}Partial
48
+ {%- when 'post_pager' -%}פֿריִערדיקער און ווייטערדיקער אַרטיקל
49
+ {%- when 'posts' -%}אַרטיקלען
50
+ {%- when 'previous' -%}פֿריִערדיקער
51
+ {%- when 'proposed' -%}Proposed
52
+ {%- when 'rejected' -%}Rejected
53
+ {%- when 'related_posts' -%}פֿאַרבונדענע אַרטיקלען
54
+ {%- when 'releases' -%}Releases
55
+ {%- when 'required' -%}Required
56
+ {%- when 'scheduled' -%}פארגעפלאנט
57
+ {%- when 'search' -%}זוכן
58
+ {%- when 'search_count' -%}{n} רעזולטאַטן
59
+ {%- when 'search_none' -%}קיין רעזולטאַטן
60
+ {%- when 'series' -%}סעריע
61
+ {%- when 'series_pager' -%}פֿריִערדיקער און ווייטערדיקער אין דער סעריע
62
+ {%- when 'series_part' -%}טייל {n} פֿון {total}
63
+ {%- when 'skip' -%}איבערהיפּערן צום אינהאַלט
64
+ {%- when 'social_links' -%}Social links
65
+ {%- when 'status_beta' -%}Beta
66
+ {%- when 'status_deprecated' -%}Deprecated
67
+ {%- when 'status_experimental' -%}Experimental
68
+ {%- when 'status_replaced_by' -%}Replaced by
69
+ {%- when 'status_since' -%}Since
70
+ {%- when 'superseded' -%}Superseded
71
+ {%- when 'tags' -%}טאַגס
72
+ {%- when 'theme' -%}טעמע
73
+ {%- when 'translation_key' -%}איבערזעצונג שליסל
74
+ {%- when 'translation_missing' -%}This page hasn't been translated yet. Read it in:
75
+ {%- when 'type' -%}Type
76
+ {%- when 'versions' -%}Versions
77
+ {%- when 'yes' -%}Yes
78
+ {%- endcase -%}
@@ -1,35 +1,59 @@
1
1
  {%- case include.key -%}
2
2
  {%- when 'about_author' -%}关于作者
3
+ {%- when 'accepted' -%}Accepted
4
+ {%- when 'adr_date' -%}Date
5
+ {%- when 'adr_deciders' -%}Deciders
6
+ {%- when 'adr_status' -%}Status
7
+ {%- when 'adr_superseded_by' -%}Superseded by
8
+ {%- when 'adr_supersedes' -%}Supersedes
3
9
  {%- when 'and' -%}和
4
10
  {%- when 'breadcrumbs' -%}面包屑导航
5
11
  {%- when 'by' -%}作者
6
12
  {%- when 'categories' -%}分类
7
13
  {%- when 'comma' -%},
14
+ {%- when 'comments' -%}评论
8
15
  {%- when 'copied' -%}已复制
9
16
  {%- when 'copy' -%}复制
10
17
  {%- when 'copy_failed' -%}按Ctrl+C
11
18
  {%- when 'copy_page_md' -%}复制页面为Markdown
19
+ {%- when 'default' -%}Default
20
+ {%- when 'deprecated' -%}Deprecated
21
+ {%- when 'description' -%}Description
12
22
  {%- when 'docs_nav' -%}文档
13
23
  {%- when 'edit_label' -%}与您的助手一起编辑
14
24
  {%- when 'edit_prompt' -%}编辑 {source}。当前文本:"{text}"。更改:
25
+ {%- when 'edited_on' -%}编辑于
26
+ {%- when 'example_request' -%}Example request
27
+ {%- when 'example_response' -%}Example response
15
28
  {%- when 'go_home' -%}返回主页
16
29
  {%- when 'home' -%}首页
17
30
  {%- when 'language' -%}语言
31
+ {%- when 'last_updated' -%}最后更新
18
32
  {%- when 'latest_posts' -%}最新文章
33
+ {%- when 'links' -%}Links
19
34
  {%- when 'main_nav' -%}主导航
20
35
  {%- when 'min_read' -%}分钟阅读
21
36
  {%- when 'mode_auto' -%}自动
22
37
  {%- when 'mode_dark' -%}深色
23
38
  {%- when 'mode_light' -%}浅色
39
+ {%- when 'name' -%}Name
24
40
  {%- when 'next' -%}下一个
41
+ {%- when 'no' -%}No
25
42
  {%- when 'not_found_text' -%}此地址不存在或已移动。请使用搜索框或返回主页。
26
43
  {%- when 'not_found_title' -%}未找到页面
27
44
  {%- when 'on_this_page' -%}本页内容
28
45
  {%- when 'pager' -%}上一页和下一页
46
+ {%- when 'parameters' -%}Parameters
47
+ {%- when 'partial' -%}Partial
29
48
  {%- when 'post_pager' -%}上一篇和下一篇文章
30
49
  {%- when 'posts' -%}文章
31
50
  {%- when 'previous' -%}上一个
51
+ {%- when 'proposed' -%}Proposed
52
+ {%- when 'rejected' -%}Rejected
32
53
  {%- when 'related_posts' -%}相关文章
54
+ {%- when 'releases' -%}Releases
55
+ {%- when 'required' -%}Required
56
+ {%- when 'scheduled' -%}定时发布
33
57
  {%- when 'search' -%}搜索
34
58
  {%- when 'search_count' -%}{n} 个结果
35
59
  {%- when 'search_none' -%}无结果
@@ -37,7 +61,18 @@
37
61
  {%- when 'series_pager' -%}本系列的上一个和下一个
38
62
  {%- when 'series_part' -%}第 {n} 部分,共 {total} 部分
39
63
  {%- when 'skip' -%}跳至内容
64
+ {%- when 'social_links' -%}Social links
65
+ {%- when 'status_beta' -%}Beta
66
+ {%- when 'status_deprecated' -%}Deprecated
67
+ {%- when 'status_experimental' -%}Experimental
68
+ {%- when 'status_replaced_by' -%}Replaced by
69
+ {%- when 'status_since' -%}Since
70
+ {%- when 'superseded' -%}Superseded
40
71
  {%- when 'tags' -%}标签
41
72
  {%- when 'theme' -%}主题
42
73
  {%- when 'translation_key' -%}翻译键
74
+ {%- when 'translation_missing' -%}This page hasn't been translated yet. Read it in:
75
+ {%- when 'type' -%}Type
76
+ {%- when 'versions' -%}Versions
77
+ {%- when 'yes' -%}Yes
43
78
  {%- endcase -%}
@@ -1,6 +1,6 @@
1
1
  {%- comment -%} Built-in UI strings. A site overrides or adds languages in _data/i18n/<lang>.yml. {%- endcomment -%}
2
2
  {%- assign sl_builtin_lang = include.lang -%}
3
- {%- assign sl_supported = 'fa,ar,he,es,fr,pt,de,it,ru,tr,nl,ja,zh,en' | split: ',' -%}
3
+ {%- assign sl_supported = 'el,fa,ar,he,ur,ckb,dv,ps,sd,yi,ug,es,fr,pt,de,it,ru,tr,nl,ja,zh,az,hu,nb,th,ta,uk,ro,sw,hi,id,ko,ms,bn,vi,cs,da,pl,fi,sv,en' | split: ',' -%}
4
4
  {%- unless sl_supported contains sl_builtin_lang -%}
5
5
  {%- assign sl_builtin_lang = 'en' -%}
6
6
  {%- endunless -%}
@@ -16,20 +16,22 @@
16
16
  {%- assign sl_ld_lang = page.lang | default: site.lang | default: 'en' -%}
17
17
  {%- assign sl_ld_title = page.title | default: site.title -%}
18
18
  {%- assign sl_ld_author = site.author.name | default: site.author -%}
19
+ {%- assign sl_ld_url = page.canonical_url | default: page.url | absolute_url -%}
19
20
  {%- capture sl_ld_site -%}{"@type":"WebSite","name":{{ site.title | default: sl_ld_title | jsonify }},"url":{{ '/' | absolute_url | jsonify }}}{%- endcapture -%}
20
21
  {%- capture sl_ld -%}
21
22
  {"@context":"https://schema.org","@type":"{{ sl_ld_type }}"
22
23
  {%- if sl_ld_type == 'WebSite' -%}
23
24
  ,"name":{{ site.title | default: sl_ld_title | jsonify }}
24
25
  {%- elsif sl_ld_type == 'BlogPosting' or sl_ld_type == 'TechArticle' -%}
25
- ,"headline":{{ sl_ld_title | jsonify }},"mainEntityOfPage":{{ page.url | absolute_url | jsonify }},"isPartOf":{{ sl_ld_site }}
26
+ ,"headline":{{ sl_ld_title | jsonify }},"mainEntityOfPage":{{ sl_ld_url | jsonify }},"isPartOf":{{ sl_ld_site }}
26
27
  {%- else -%}
27
28
  ,"name":{{ sl_ld_title | jsonify }},"isPartOf":{{ sl_ld_site }}
28
29
  {%- endif -%}
29
- ,"url":{{ page.url | absolute_url | jsonify }},"inLanguage":{{ sl_ld_lang | jsonify }}
30
+ ,"url":{{ sl_ld_url | jsonify }},"inLanguage":{{ sl_ld_lang | jsonify }}
30
31
  {%- if sl_desc and sl_desc != '' -%},"description":{{ sl_desc | jsonify }}{%- endif -%}
31
32
  {%- if sl_ld_type == 'BlogPosting' and page.date -%}
32
- ,"datePublished":{{ page.date | date_to_xmlschema | jsonify }},"dateModified":{{ page.date | date_to_xmlschema | jsonify }}
33
+ {%- assign sl_ld_modified = page.updated | default: page.last_modified_at | default: page.date -%}
34
+ ,"datePublished":{{ page.date | date_to_xmlschema | jsonify }},"dateModified":{{ sl_ld_modified | date_to_xmlschema | jsonify }}
33
35
  {%- endif -%}
34
36
  {%- if sl_ld_type == 'BlogPosting' or sl_ld_type == 'TechArticle' -%}
35
37
  {%- if sl_ld_author -%},"author":{"@type":"Person","name":{{ sl_ld_author | jsonify }}}{%- endif -%}
@@ -0,0 +1,12 @@
1
+ {%- comment -%}
2
+ "Last updated" for a doc page: page.last_modified_at from front matter, or, in Actions mode, from
3
+ the page's last git commit (_plugins/slipway_last_modified.rb). A page without a date shows nothing,
4
+ so classic Pages keeps working without the plugin. The date is localized by date.html; the
5
+ datetime attribute stays the machine-readable ISO 8601 value. Plain HTML, so it reads without
6
+ JavaScript and follows the text direction.
7
+ {%- endcomment -%}
8
+ {%- assign sl_lu_date = page.last_modified_at -%}
9
+ {%- if sl_lu_date -%}
10
+ {%- capture sl_lu_text -%}{% include date.html date=sl_lu_date %}{%- endcapture -%}
11
+ <p class="sl-last-updated">{% include t.html key='last_updated' %} <time datetime="{{ sl_lu_date | date_to_xmlschema }}">{{ sl_lu_text | strip }}</time></p>
12
+ {%- endif -%}
@@ -0,0 +1,19 @@
1
+ {%- if page.status -%}
2
+ {%- include component-css.html name="page-status" -%}
3
+ <div class="sl-page-status sl-page-status-{{ page.status }}">
4
+ {%- capture sl_status_text -%}
5
+ {%- case page.status -%}
6
+ {%- when 'experimental' -%}{%- include t.html key="status_experimental" -%}
7
+ {%- when 'beta' -%}{%- include t.html key="status_beta" -%}
8
+ {%- when 'deprecated' -%}{%- include t.html key="status_deprecated" -%}
9
+ {%- endcase -%}
10
+ {%- endcapture -%}
11
+ <strong>{{ sl_status_text }}</strong>
12
+ {%- if page.status == 'deprecated' and page.since -%}
13
+ <span> {% include t.html key="status_since" %} {{ page.since }}.</span>
14
+ {%- endif -%}
15
+ {%- if page.status == 'deprecated' and page.replaced_by -%}
16
+ <span> {% include t.html key="status_replaced_by" %} <a href="{{ page.replaced_by | relative_url }}">{{ page.replaced_by }}</a>.</span>
17
+ {%- endif -%}
18
+ </div>
19
+ {%- endif -%}
@@ -0,0 +1,122 @@
1
+ {%- comment -%}
2
+ Renders a JSON Schema (usually from _data) as a property table: name, type,
3
+ required, default, and description. Nested object properties render as a
4
+ sub-table one level deep; enum and oneOf show in the type cell.
5
+
6
+ {% include schema-table.html schema=site.data.widget_schema %}
7
+ {%- endcomment -%}
8
+ {%- if include.schema.properties and include.schema.properties.size > 0 -%}
9
+ {%- include component-css.html name="schema-table" -%}
10
+ <div class="sl-schema-table-wrapper">
11
+ <table class="sl-schema-table">
12
+ <thead>
13
+ <tr>
14
+ <th scope="col">{% include i18n-builtin.html key="name" %}</th>
15
+ <th scope="col">{% include i18n-builtin.html key="type" %}</th>
16
+ <th scope="col">{% include i18n-builtin.html key="required" %}</th>
17
+ <th scope="col">{% include i18n-builtin.html key="default" %}</th>
18
+ <th scope="col">{% include i18n-builtin.html key="description" %}</th>
19
+ </tr>
20
+ </thead>
21
+ <tbody>
22
+ {%- for sl_property in include.schema.properties -%}
23
+ {%- assign sl_name = sl_property[0] -%}
24
+ {%- assign sl_prop = sl_property[1] -%}
25
+ <tr class="sl-schema-row">
26
+ <th scope="row" class="sl-schema-name"><code>{{ sl_name }}</code></th>
27
+ <td class="sl-schema-type">
28
+ {%- if sl_prop.type -%}
29
+ <code>{{ sl_prop.type | join: " | " }}</code>
30
+ {%- elsif sl_prop.oneOf -%}
31
+ <code>{{ sl_prop.oneOf | map: "type" | join: " | " }}</code>
32
+ {%- elsif sl_prop.properties -%}
33
+ <code>object</code>
34
+ {%- elsif sl_prop.items -%}
35
+ <code>array</code>
36
+ {%- endif -%}
37
+ {%- if sl_prop.enum -%}
38
+ <ul class="sl-schema-values">
39
+ {%- for sl_value in sl_prop.enum -%}
40
+ <li><code>{{ sl_value }}</code></li>
41
+ {%- endfor -%}
42
+ </ul>
43
+ {%- endif -%}
44
+ </td>
45
+ <td class="sl-schema-required">
46
+ {%- if include.schema.required contains sl_name -%}
47
+ {% include i18n-builtin.html key="yes" %}
48
+ {%- else -%}
49
+ {% include i18n-builtin.html key="no" %}
50
+ {%- endif -%}
51
+ </td>
52
+ <td class="sl-schema-default">
53
+ {%- if sl_prop.default != nil -%}<code>{{ sl_prop.default | jsonify }}</code>{%- endif -%}
54
+ </td>
55
+ <td class="sl-schema-description">{%- if sl_prop.description %} {{ sl_prop.description | markdownify | strip }}{%- endif -%}</td>
56
+ </tr>
57
+ {%- assign sl_children = sl_prop.properties -%}
58
+ {%- assign sl_children_required = sl_prop.required -%}
59
+ {%- unless sl_children -%}
60
+ {%- assign sl_children = sl_prop.items.properties -%}
61
+ {%- assign sl_children_required = sl_prop.items.required -%}
62
+ {%- endunless -%}
63
+ {%- if sl_children and sl_children.size > 0 -%}
64
+ <tr class="sl-schema-children">
65
+ <td colspan="5">
66
+ <table class="sl-schema-table sl-schema-table-nested">
67
+ <thead>
68
+ <tr>
69
+ <th scope="col">{% include i18n-builtin.html key="name" %}</th>
70
+ <th scope="col">{% include i18n-builtin.html key="type" %}</th>
71
+ <th scope="col">{% include i18n-builtin.html key="required" %}</th>
72
+ <th scope="col">{% include i18n-builtin.html key="default" %}</th>
73
+ <th scope="col">{% include i18n-builtin.html key="description" %}</th>
74
+ </tr>
75
+ </thead>
76
+ <tbody>
77
+ {%- for sl_child in sl_children -%}
78
+ {%- assign sl_child_name = sl_child[0] -%}
79
+ {%- assign sl_child_prop = sl_child[1] -%}
80
+ <tr class="sl-schema-row sl-schema-row-child">
81
+ <th scope="row" class="sl-schema-name"><code>{{ sl_child_name }}</code></th>
82
+ <td class="sl-schema-type">
83
+ {%- if sl_child_prop.type -%}
84
+ <code>{{ sl_child_prop.type | join: " | " }}</code>
85
+ {%- elsif sl_child_prop.oneOf -%}
86
+ <code>{{ sl_child_prop.oneOf | map: "type" | join: " | " }}</code>
87
+ {%- elsif sl_child_prop.properties -%}
88
+ <code>object</code>
89
+ {%- elsif sl_child_prop.items -%}
90
+ <code>array</code>
91
+ {%- endif -%}
92
+ {%- if sl_child_prop.enum -%}
93
+ <ul class="sl-schema-values">
94
+ {%- for sl_value in sl_child_prop.enum -%}
95
+ <li><code>{{ sl_value }}</code></li>
96
+ {%- endfor -%}
97
+ </ul>
98
+ {%- endif -%}
99
+ </td>
100
+ <td class="sl-schema-required">
101
+ {%- if sl_children_required contains sl_child_name -%}
102
+ {% include i18n-builtin.html key="yes" %}
103
+ {%- else -%}
104
+ {% include i18n-builtin.html key="no" %}
105
+ {%- endif -%}
106
+ </td>
107
+ <td class="sl-schema-default">
108
+ {%- if sl_child_prop.default != nil -%}<code>{{ sl_child_prop.default | jsonify }}</code>{%- endif -%}
109
+ </td>
110
+ <td class="sl-schema-description">{%- if sl_child_prop.description %} {{ sl_child_prop.description | markdownify | strip }}{%- endif -%}</td>
111
+ </tr>
112
+ {%- endfor -%}
113
+ </tbody>
114
+ </table>
115
+ </td>
116
+ </tr>
117
+ {%- endif -%}
118
+ {%- endfor -%}
119
+ </tbody>
120
+ </table>
121
+ </div>
122
+ {%- endif -%}
data/_includes/seo.html CHANGED
@@ -1,6 +1,6 @@
1
1
  {%- comment %} Canonical, Open Graph, Twitter card, and hreflang alternates. Plain Liquid, so classic Pages needs no jekyll-seo-tag. Expects sl_desc from head.html. {% endcomment %}
2
2
  {%- assign sl_seo_lang = page.lang | default: site.lang | default: 'en' %}
3
- {%- assign sl_seo_url = page.url | absolute_url %}
3
+ {%- assign sl_seo_url = page.canonical_url | default: page.url | absolute_url %}
4
4
  {%- assign sl_seo_title = page.title | default: site.title %}
5
5
  <link rel="canonical" href="{{ sl_seo_url }}">
6
6
  <meta property="og:type" content="{% if page.collection == 'posts' %}article{% else %}website{% endif %}">
@@ -14,9 +14,29 @@
14
14
  {%- if sl_desc != '' %}
15
15
  <meta property="og:description" content="{{ sl_desc | escape }}">
16
16
  {%- endif %}
17
- <meta property="og:image" content="{{ '/assets/images/social.png' | absolute_url }}">
17
+ {%- comment %} The social image: the page's `image` first, then the one the Actions plugin generated from the title (page.slipway_og, _plugins/slipway_og.rb), then the shared asset a site may replace (docs/overrides.md). Only the shared and generated pictures are known to be 1200 by 630. {% endcomment %}
18
+ {%- assign sl_og_image = page.image %}
19
+ {%- if sl_og_image %}
20
+ {%- assign sl_og_card = 'summary_large_image' %}
21
+ {%- else %}
22
+ {%- assign sl_og_image = page.slipway_og %}
23
+ {%- if sl_og_image %}
24
+ {%- assign sl_og_sized = true %}
25
+ {%- assign sl_og_card = 'summary_large_image' %}
26
+ {%- else %}
27
+ {%- assign sl_og_image = '/assets/images/social.png' %}
28
+ {%- assign sl_og_sized = true %}
29
+ {%- assign sl_og_card = 'summary' %}
30
+ {%- endif %}
31
+ {%- endif %}
32
+ <meta property="og:image" content="{{ sl_og_image | absolute_url }}">
33
+ {%- if sl_seo_title %}
34
+ <meta property="og:image:alt" content="{{ sl_seo_title | escape }}">
35
+ {%- endif %}
36
+ {%- if sl_og_sized %}
18
37
  <meta property="og:image:width" content="1200">
19
38
  <meta property="og:image:height" content="630">
39
+ {%- endif %}
20
40
  <meta property="og:locale" content="{{ sl_seo_lang | replace: '-', '_' }}">
21
41
  {%- if page.collection == 'posts' and page.date %}
22
42
  <meta property="article:published_time" content="{{ page.date | date_to_xmlschema }}">
@@ -24,7 +44,7 @@
24
44
  <meta property="article:tag" content="{{ tag | escape }}">
25
45
  {%- endfor %}
26
46
  {%- endif %}
27
- <meta name="twitter:card" content="summary">
47
+ <meta name="twitter:card" content="{{ sl_og_card }}">
28
48
  {%- if page.translation_key %}
29
49
  {%- assign sl_seo_alts = site.pages | concat: site.documents | where: 'translation_key', page.translation_key %}
30
50
  {%- if sl_seo_alts.size > 1 %}
@@ -0,0 +1,20 @@
1
+ {%- comment -%}
2
+ A region of a repository file, copied into _data/snippets.json by tools/snippets/sync.mjs.
3
+ Usage: {% include snippet.html file="src/app.ts" region="setup" %}
4
+ {%- endcomment -%}
5
+ {%- assign snippet_key = include.file | downcase | replace: '/', '-' | replace: '.', '-' | replace: '_', '-' | replace: ' ', '-' -%}
6
+ {%- assign snippet_key = snippet_key | append: '--' | append: include.region | downcase | replace: ' ', '-' -%}
7
+ {%- assign snippet = site.data.snippets[snippet_key] -%}
8
+ {%- assign snippet_repo = site.github.repository_url | default: site.repository_url -%}
9
+ {%- if snippet -%}
10
+ <figure class="sl-snippet">
11
+ <pre><code class="language-{{ snippet.lang | escape }}">{{ snippet.text | escape }}</code></pre>
12
+ <figcaption>
13
+ {%- if snippet_repo -%}
14
+ <a href="{{ snippet_repo }}/blob/HEAD/{{ snippet.file }}#L{{ snippet.line }}">{{ snippet.file }}:{{ snippet.line }}</a>
15
+ {%- else -%}
16
+ {{ snippet.file }}:{{ snippet.line }}
17
+ {%- endif -%}
18
+ </figcaption>
19
+ </figure>
20
+ {%- endif -%}
@@ -0,0 +1,32 @@
1
+ ---
2
+ layout: base
3
+ ---
4
+ {%- include component-css.html name="adr" -%}
5
+ {%- assign sl_adr_docs = site.documents | concat: site.pages | where: 'layout', 'adr' | sort: 'title' -%}
6
+ <div class="sl-adr-index">
7
+ <header class="sl-page-header">
8
+ <h1>{{ page.title | escape }}</h1>
9
+ {%- if page.description %}
10
+ <p class="sl-page-lead">{{ page.description }}</p>
11
+ {%- endif %}
12
+ </header>
13
+
14
+ {% assign statuses = "proposed,accepted,rejected,superseded,deprecated" | split: "," %}
15
+
16
+ {% for status in statuses %}
17
+ {% assign docs = sl_adr_docs | where: "status", status %}
18
+ {% if docs.size > 0 %}
19
+ <section class="sl-adr-group">
20
+ <h2>{% include t.html key=status %}</h2>
21
+ <ul>
22
+ {% for doc in docs %}
23
+ <li>
24
+ <a href="{{ doc.url | relative_url }}">{{ doc.title | escape }}</a>
25
+ {% if doc.date %}<time datetime="{{ doc.date | date_to_xmlschema }}">{% include date.html date=doc.date %}</time>{% endif %}
26
+ </li>
27
+ {% endfor %}
28
+ </ul>
29
+ </section>
30
+ {% endif %}
31
+ {% endfor %}
32
+ </div>
data/_layouts/adr.html ADDED
@@ -0,0 +1,45 @@
1
+ ---
2
+ layout: base
3
+ ---
4
+ {%- include component-css.html name="adr" -%}
5
+ {%- assign sl_adr_docs = site.documents | concat: site.pages | where: 'layout', 'adr' -%}
6
+ <article class="sl-adr">
7
+ <header class="sl-adr-header">
8
+ <h1>{{ page.title | escape }}</h1>
9
+ <dl class="sl-adr-meta">
10
+ <dt>{% include t.html key='adr_status' %}</dt>
11
+ <dd class="sl-adr-status sl-adr-status-{{ page.status | escape }}">{% include t.html key=page.status %}</dd>
12
+ {% if page.date %}
13
+ <dt>{% include t.html key='adr_date' %}</dt>
14
+ <dd><time datetime="{{ page.date | date_to_xmlschema }}">{% include date.html date=page.date %}</time></dd>
15
+ {% endif %}
16
+ {% if page.deciders and page.deciders.size > 0 %}
17
+ <dt>{% include t.html key='adr_deciders' %}</dt>
18
+ <dd>{{ page.deciders | join: ', ' | escape }}</dd>
19
+ {% endif %}
20
+ {% if page.supersedes %}
21
+ <dt>{% include t.html key='adr_supersedes' %}</dt>
22
+ <dd>
23
+ {% assign superseded_docs = sl_adr_docs | where: "title", page.supersedes %}
24
+ {% if superseded_docs.size > 0 %}
25
+ <a href="{{ superseded_docs.first.url | relative_url }}">{{ page.supersedes | escape }}</a>
26
+ {% else %}
27
+ {{ page.supersedes | escape }}
28
+ {% endif %}
29
+ </dd>
30
+ {% endif %}
31
+ {% if page.superseded_by %}
32
+ <dt>{% include t.html key='adr_superseded_by' %}</dt>
33
+ <dd>
34
+ {% assign superseding_docs = sl_adr_docs | where: "title", page.superseded_by %}
35
+ {% if superseding_docs.size > 0 %}
36
+ <a href="{{ superseding_docs.first.url | relative_url }}">{{ page.superseded_by | escape }}</a>
37
+ {% else %}
38
+ {{ page.superseded_by | escape }}
39
+ {% endif %}
40
+ </dd>
41
+ {% endif %}
42
+ </dl>
43
+ </header>
44
+ {{ content }}
45
+ </article>
@@ -0,0 +1,28 @@
1
+ ---
2
+ ---
3
+ <?xml version="1.0" encoding="UTF-8"?>
4
+ {%- assign sl_source = site.pages | where: 'url', page.changelog | first -%}
5
+ {%- assign sl_source_html = sl_source.content | markdownify -%}
6
+ {%- assign sl_sections = sl_source_html | split: '<h2 id="' -%}
7
+ <feed xmlns="http://www.w3.org/2005/Atom">
8
+ <id>{{ page.url | absolute_url | xml_escape }}</id>
9
+ <title>{{ sl_source.title | default: page.title | xml_escape }}</title>
10
+ <updated>{{ site.time | date_to_xmlschema }}</updated>
11
+ <link href="{{ page.url | absolute_url | xml_escape }}" rel="self" type="application/atom+xml"/>
12
+ <link href="{{ sl_source.url | absolute_url | xml_escape }}"/>
13
+ {%- for sl_section in sl_sections offset: 1 -%}
14
+ {%- include changelog-version.html section=sl_section -%}
15
+ {%- assign sl_unreleased = sl_release_version | downcase -%}
16
+ {%- if sl_unreleased == 'unreleased' -%}{%- continue -%}{%- endif -%}
17
+ {%- assign sl_release_body = sl_section | split: '</h2>' | last -%}
18
+ {%- assign sl_release_url = sl_source.url | absolute_url | append: '#' | append: sl_release_id -%}
19
+ <entry>
20
+ <id>{{ sl_release_url | xml_escape }}</id>
21
+ <title>{{ sl_release_version | xml_escape }}</title>
22
+ <link href="{{ sl_release_url | xml_escape }}"/>
23
+ <updated>{{ sl_release_date | date_to_xmlschema }}</updated>
24
+ <author><name>{{ site.author | default: site.title | default: 'Slipway' | xml_escape }}</name></author>
25
+ <content type="html">{{ sl_release_body | xml_escape }}</content>
26
+ </entry>
27
+ {%- endfor %}
28
+ </feed>
@@ -0,0 +1,40 @@
1
+ ---
2
+ layout: base
3
+ ---
4
+ {% include component-css.html name="changelog" %}
5
+ <article class="sl-page sl-changelog">
6
+ <header class="sl-page-header">
7
+ {% include breadcrumbs.html %}
8
+ <h1>{{ page.title | escape }}</h1>{% include copy-page.html %}
9
+ {%- if page.description %}
10
+ <p class="sl-page-lead">{{ page.description | escape }}</p>
11
+ {%- endif %}
12
+ </header>
13
+ {%- assign sl_sections = content | split: '<h2 id="' %}
14
+ <div class="sl-changelog-layout">
15
+ <div class="sl-changelog-main">
16
+ {{ sl_sections.first }}
17
+ {%- for sl_section in sl_sections offset: 1 %}
18
+ {%- include changelog-version.html section=sl_section %}
19
+ {%- assign sl_old_id = sl_section | split: '"' | first %}
20
+ {%- assign sl_old_attr = 'id="' | append: sl_old_id | append: '"' %}
21
+ {%- assign sl_new_attr = 'id="' | append: sl_release_id | append: '"' %}
22
+ {%- assign sl_section_html = '<h2 id="' | append: sl_section %}
23
+ {{ sl_section_html | replace_first: sl_old_attr, sl_new_attr }}
24
+ {%- endfor %}
25
+ </div>
26
+ <aside class="sl-changelog-sidebar">
27
+ <nav aria-label="{% include t.html key='versions' %}">
28
+ <ul class="sl-changelog-toc">
29
+ {%- for sl_section in sl_sections offset: 1 %}
30
+ {%- include changelog-version.html section=sl_section %}
31
+ <li><a href="#{{ sl_release_id }}">{{ sl_release_version | escape }}</a></li>
32
+ {%- endfor %}
33
+ </ul>
34
+ {%- if page.feed_url %}
35
+ <a href="{{ page.feed_url | relative_url }}" class="sl-changelog-feed" type="application/atom+xml">{% include t.html key='releases' %}</a>
36
+ {%- endif %}
37
+ </nav>
38
+ </aside>
39
+ </div>
40
+ </article>