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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8d0d2d52540ddd0bc4f734b24076c53ad9e68005db52c4842fd48c085cf598a9
4
- data.tar.gz: 5bbd56dcba755da1884d0342f7b0362679e42f14fd2fa21eddd0bdad8258f4e8
3
+ metadata.gz: 64b99b877b27e499613f86eb450b90ce4aae6ed4c2e2b642d1d833bcc55bb36e
4
+ data.tar.gz: b37ab500062b1ac43f76cc0564f29dfbddfcfdc2722983498d692f803c283ae7
5
5
  SHA512:
6
- metadata.gz: ad5b45c3c0328902ddbc3f525474efbbcea4005ea4cc38d67a653fe6bdf96a7c8224a6553cd5d452240cf27b6574449ac80c3266338e44ad5d060422e070977b
7
- data.tar.gz: cd0beb748c32d545fafb6d463491d55080b45d5c28def720b80e3947c32640ac3ee3db4339f98be07cf3b2d5f8fd39b570ea3b66a95947261684bc8f6d7b3c7e
6
+ metadata.gz: '09d4c106d92a85cefbb0448022df7007d73c0d8aaa1d385f2e36deebe9db3116f9ae85c20162e018fa0497f323b965cb761b269e466ee716248a9cdbb04280a6'
7
+ data.tar.gz: 82db65e365fedc536ab3bc8990bfe63063bf150b07e76720b31045930e57baa70454b9d27400922db5265627dc9afb1fd8f8d3e5749f53d859e9d7427f5f1257
@@ -0,0 +1,18 @@
1
+ {%- if include.code.size > 0 -%}
2
+ {%- include component-css.html name="annotations" -%}
3
+ {%- assign language = include.language | default: "text" -%}
4
+ {%- assign id_prefix = include.id_prefix | default: "sl-annotation" -%}
5
+ <figure class="sl-annotations">
6
+ {%- if include.caption %}
7
+ <figcaption>{{ include.caption }}</figcaption>
8
+ {%- endif %}
9
+ <pre dir="ltr"><code class="language-{{ language }}">{{ include.code | escape }}</code></pre>
10
+ {%- if include.notes.size > 0 %}
11
+ <ol class="sl-annotations-notes">
12
+ {%- for note in include.notes %}
13
+ <li id="{{ id_prefix }}-{{ forloop.index }}">{%- assign note_text = note.text | default: note -%}{{ note_text }}</li>
14
+ {%- endfor %}
15
+ </ol>
16
+ {%- endif %}
17
+ </figure>
18
+ {%- endif -%}
@@ -0,0 +1,22 @@
1
+ {%- if include.src -%}
2
+ {%- include component-css.html name="audio" -%}
3
+ <figure class="sl-audio">
4
+ <audio controls preload="metadata" src="{{ include.src | relative_url | escape }}"></audio>
5
+ {%- if include.chapters %}
6
+ <ol class="sl-audio-chapters">
7
+ {%- for chapter in include.chapters %}
8
+ <li><time>{{ chapter.time | escape }}</time> {{ chapter.title | escape }}</li>
9
+ {%- endfor %}
10
+ </ol>
11
+ {%- endif %}
12
+ {%- if include.transcript and include.transcript_label %}
13
+ <details class="sl-audio-transcript">
14
+ <summary>{{ include.transcript_label | escape }}</summary>
15
+ {{ include.transcript | markdownify }}
16
+ </details>
17
+ {%- endif %}
18
+ {%- if include.title %}
19
+ <figcaption>{{ include.title | escape }}</figcaption>
20
+ {%- endif %}
21
+ </figure>
22
+ {%- endif -%}
@@ -0,0 +1,2 @@
1
+ {%- assign status = include.status | default: "stable" -%}
2
+ <span class="sl-badge sl-badge-{{ status }}">{{ include.label }}</span>
@@ -0,0 +1,32 @@
1
+ {%- include component-css.html name="chart" -%}
2
+ {%- if include.data and include.data.size > 0 -%}
3
+ {%- assign _sl_max = include.max | default: 0 | plus: 0.0 -%}
4
+ {%- if _sl_max <= 0 -%}
5
+ {%- for row in include.data -%}
6
+ {%- assign _sl_value = row.value | default: 0 | plus: 0.0 -%}
7
+ {%- if _sl_value > _sl_max -%}{%- assign _sl_max = _sl_value -%}{%- endif -%}
8
+ {%- endfor -%}
9
+ {%- endif -%}
10
+ <figure class="sl-chart">
11
+ {%- if include.caption -%}
12
+ <figcaption>{{ include.caption | escape }}</figcaption>
13
+ {%- endif -%}
14
+ <table class="sl-chart-table">
15
+ <tbody>
16
+ {%- for row in include.data -%}
17
+ {%- assign _sl_percent = 0 -%}
18
+ {%- if _sl_max > 0 -%}
19
+ {%- assign _sl_value = row.value | default: 0 | plus: 0.0 -%}
20
+ {%- assign _sl_percent = _sl_value | times: 100.0 | divided_by: _sl_max | round: 1 -%}
21
+ {%- if _sl_percent > 100 -%}{%- assign _sl_percent = 100 -%}{%- endif -%}
22
+ {%- if _sl_percent < 0 -%}{%- assign _sl_percent = 0 -%}{%- endif -%}
23
+ {%- endif -%}
24
+ <tr>
25
+ <th scope="row">{{ row.label | escape }}</th>
26
+ <td>{{ row.value }}<span class="sl-chart-bar" style="--sl-chart-value: {{ _sl_percent }}%"></span></td>
27
+ </tr>
28
+ {%- endfor -%}
29
+ </tbody>
30
+ </table>
31
+ </figure>
32
+ {%- endif -%}
@@ -0,0 +1,12 @@
1
+ {%- if include.references -%}
2
+ {%- include component-css.html name="citation" -%}
3
+ <ol class="sl-citation-list" id="{{ include.id | default: 'references' }}">
4
+ {%- for reference in include.references -%}
5
+ {%- assign reference_id = reference.id | default: forloop.index -%}
6
+ <li id="ref-{{ reference_id }}">{{ reference.text }}{% if reference.url %} <a href="{{ reference.url }}" dir="ltr">{{ reference.url }}</a>{% endif %}</li>
7
+ {%- endfor -%}
8
+ </ol>
9
+ {%- endif -%}
10
+ {%- if include.ref -%}
11
+ <span class="sl-citation"><a href="#ref-{{ include.ref }}">[{{ include.text | default: include.ref }}]</a></span>
12
+ {%- endif -%}
@@ -0,0 +1,10 @@
1
+ {%- include component-css.html name="code-group" -%}
2
+ {%- assign group_id = include.id | default: "code-group" -%}
3
+ <div class="sl-code-group" role="radiogroup" aria-labelledby="{{ group_id }}-label">
4
+ <span class="sl-code-group-label" id="{{ group_id }}-label">{{ include.label | default: "Code examples" | escape }}</span>
5
+ {%- for item in include.items -%}
6
+ <input class="sl-code-group-input" type="radio" name="{{ group_id }}" id="{{ group_id }}-{{ forloop.index }}"{% if forloop.first %} checked{% endif %}>
7
+ <label class="sl-code-group-tab" for="{{ group_id }}-{{ forloop.index }}">{{ item.label | escape }}</label>
8
+ <pre class="sl-code-group-panel" dir="ltr"><code class="language-{{ item.language | escape }}">{{ item.code | escape }}</code></pre>
9
+ {%- endfor -%}
10
+ </div>
@@ -0,0 +1,64 @@
1
+ {%- if include.pros or include.cons -%}
2
+ <div class="sl-compare sl-compare-pros-cons">
3
+ {%- if include.pros -%}
4
+ <div class="sl-compare-pros">
5
+ <ul>
6
+ {%- for pro in include.pros -%}
7
+ <li>
8
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="sl-icon" viewBox="0 0 16 16"><path d="M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.267.267 0 0 1 .02-.022z"/></svg>
9
+ <span>{{ pro }}</span>
10
+ </li>
11
+ {%- endfor -%}
12
+ </ul>
13
+ </div>
14
+ {%- endif -%}
15
+ {%- if include.cons -%}
16
+ <div class="sl-compare-cons">
17
+ <ul>
18
+ {%- for con in include.cons -%}
19
+ <li>
20
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="sl-icon" viewBox="0 0 16 16"><path d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"/></svg>
21
+ <span>{{ con }}</span>
22
+ </li>
23
+ {%- endfor -%}
24
+ </ul>
25
+ </div>
26
+ {%- endif -%}
27
+ </div>
28
+ {%- elsif include.features and include.headers -%}
29
+ <div class="sl-compare sl-compare-matrix">
30
+ <div class="sl-compare-table-wrapper">
31
+ <table>
32
+ <thead>
33
+ <tr>
34
+ <td></td>
35
+ {%- for header in include.headers -%}
36
+ <th scope="col">{{ header }}</th>
37
+ {%- endfor -%}
38
+ </tr>
39
+ </thead>
40
+ <tbody>
41
+ {%- for feature in include.features -%}
42
+ <tr>
43
+ <th scope="row">{{ feature.label }}</th>
44
+ {%- for val in feature.values -%}
45
+ <td class="sl-compare-cell-{{ val }}">
46
+ {%- if val == "yes" -%}
47
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="sl-icon" viewBox="0 0 16 16"><path d="M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.267.267 0 0 1 .02-.022z"/></svg>
48
+ <span class="sl-sr-only">{% include i18n-builtin.html key="yes" %}</span>
49
+ {%- elsif val == "no" -%}
50
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="sl-icon" viewBox="0 0 16 16"><path d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"/></svg>
51
+ <span class="sl-sr-only">{% include i18n-builtin.html key="no" %}</span>
52
+ {%- elsif val == "partial" -%}
53
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="sl-icon" viewBox="0 0 16 16"><path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/></svg>
54
+ <span class="sl-sr-only">{% include i18n-builtin.html key="partial" %}</span>
55
+ {%- endif -%}
56
+ </td>
57
+ {%- endfor -%}
58
+ </tr>
59
+ {%- endfor -%}
60
+ </tbody>
61
+ </table>
62
+ </div>
63
+ </div>
64
+ {%- endif -%}
@@ -0,0 +1,31 @@
1
+ {%- include component-css.html name="diff" -%}
2
+ {%- assign removed = include.removed | default: "" -%}
3
+ {%- assign added = include.added | default: "" -%}
4
+ {%- assign language = include.language | default: "plaintext" -%}
5
+ {%- assign nl = "
6
+ " -%}
7
+ <figure class="sl-diff">
8
+ {%- if include.caption -%}
9
+ <figcaption>{{ include.caption | escape }}</figcaption>
10
+ {%- endif -%}
11
+ {%- if removed != "" -%}
12
+ {%- assign removed_lines = removed | escape | split: nl -%}
13
+ <div class="sl-diff-side sl-diff-removed">
14
+ <pre dir="ltr"><code class="language-{{ language }}">
15
+ {%- for line in removed_lines -%}
16
+ <span class="sl-diff-line"><span class="sl-diff-sign" aria-hidden="true">−</span>{{ line }}</span>
17
+ {%- endfor -%}
18
+ </code></pre>
19
+ </div>
20
+ {%- endif -%}
21
+ {%- if added != "" -%}
22
+ {%- assign added_lines = added | escape | split: nl -%}
23
+ <div class="sl-diff-side sl-diff-added">
24
+ <pre dir="ltr"><code class="language-{{ language }}">
25
+ {%- for line in added_lines -%}
26
+ <span class="sl-diff-line"><span class="sl-diff-sign" aria-hidden="true">+</span>{{ line }}</span>
27
+ {%- endfor -%}
28
+ </code></pre>
29
+ </div>
30
+ {%- endif -%}
31
+ </figure>
@@ -0,0 +1,28 @@
1
+ {%- if include.url -%}
2
+ {%- include component-css.html name="download" -%}
3
+ {%- assign has_meta = false -%}
4
+ {%- if include.name and include.name_label -%}{%- assign has_meta = true -%}{%- endif -%}
5
+ {%- if include.size and include.size_label -%}{%- assign has_meta = true -%}{%- endif -%}
6
+ {%- if include.checksum and include.checksum_label -%}{%- assign has_meta = true -%}{%- endif -%}
7
+ <div class="sl-download">
8
+ {%- if include.label -%}
9
+ <a class="sl-download-button" href="{{ include.url | relative_url }}" download>{{ include.label | escape }}</a>
10
+ {%- endif -%}
11
+ {%- if has_meta -%}
12
+ <dl class="sl-download-meta">
13
+ {%- if include.name and include.name_label -%}
14
+ <dt>{{ include.name_label | escape }}</dt>
15
+ <dd>{{ include.name | escape }}</dd>
16
+ {%- endif -%}
17
+ {%- if include.size and include.size_label -%}
18
+ <dt>{{ include.size_label | escape }}</dt>
19
+ <dd>{{ include.size | escape }}</dd>
20
+ {%- endif -%}
21
+ {%- if include.checksum and include.checksum_label -%}
22
+ <dt>{{ include.checksum_label | escape }}</dt>
23
+ <dd class="sl-download-checksum"><code dir="ltr">{{ include.checksum | escape }}</code></dd>
24
+ {%- endif -%}
25
+ </dl>
26
+ {%- endif -%}
27
+ </div>
28
+ {%- endif -%}
@@ -0,0 +1,50 @@
1
+ {%- include component-css.html name="endpoint" -%}
2
+ {%- assign method = include.method | upcase | default: "GET" -%}
3
+ <div class="sl-endpoint">
4
+ <div class="sl-endpoint-header" dir="ltr">
5
+ <span class="sl-endpoint-method sl-endpoint-method-{{ method | downcase }}">{{ method }}</span>
6
+ <code class="sl-endpoint-path">{{ include.path }}</code>
7
+ </div>
8
+ {%- if include.parameters -%}
9
+ <div class="sl-endpoint-parameters">
10
+ <h2>{% include i18n-builtin.html key="parameters" %}</h2>
11
+ <div class="sl-endpoint-table-wrapper">
12
+ <table>
13
+ <thead>
14
+ <tr>
15
+ <th scope="col">{% include i18n-builtin.html key="name" %}</th>
16
+ <th scope="col">{% include i18n-builtin.html key="type" %}</th>
17
+ <th scope="col">{% include i18n-builtin.html key="description" %}</th>
18
+ </tr>
19
+ </thead>
20
+ <tbody>
21
+ {%- for param in include.parameters -%}
22
+ <tr>
23
+ <td class="sl-endpoint-param-name">
24
+ <code>{{ param.name }}</code>
25
+ {%- if param.required -%}
26
+ <span class="sl-endpoint-param-required">{% include i18n-builtin.html key="required" %}</span>
27
+ {%- endif -%}
28
+ </td>
29
+ <td class="sl-endpoint-param-type"><code>{{ param.type }}</code></td>
30
+ <td class="sl-endpoint-param-description">{{ param.description | markdownify }}</td>
31
+ </tr>
32
+ {%- endfor -%}
33
+ </tbody>
34
+ </table>
35
+ </div>
36
+ </div>
37
+ {%- endif -%}
38
+ {%- if include.request -%}
39
+ <div class="sl-endpoint-request">
40
+ <h2>{% include i18n-builtin.html key="example_request" %}</h2>
41
+ <pre><code>{{ include.request | escape }}</code></pre>
42
+ </div>
43
+ {%- endif -%}
44
+ {%- if include.response -%}
45
+ <div class="sl-endpoint-response">
46
+ <h2>{% include i18n-builtin.html key="example_response" %}</h2>
47
+ <pre><code>{{ include.response | escape }}</code></pre>
48
+ </div>
49
+ {%- endif -%}
50
+ </div>
@@ -0,0 +1,52 @@
1
+ <div class="sl-file-tree">
2
+ {%- if include.list -%}
3
+ {{ include.list | markdownify }}
4
+ {%- elsif include.items -%}
5
+ <ul>
6
+ {%- for item1 in include.items -%}
7
+ <li>
8
+ <span class="sl-file-name">{{ item1.name }}</span>
9
+ {%- if item1.note -%}
10
+ <span class="sl-file-note">{{ item1.note }}</span>
11
+ {%- endif -%}
12
+ {%- if item1.children -%}
13
+ <ul>
14
+ {%- for item2 in item1.children -%}
15
+ <li>
16
+ <span class="sl-file-name">{{ item2.name }}</span>
17
+ {%- if item2.note -%}
18
+ <span class="sl-file-note">{{ item2.note }}</span>
19
+ {%- endif -%}
20
+ {%- if item2.children -%}
21
+ <ul>
22
+ {%- for item3 in item2.children -%}
23
+ <li>
24
+ <span class="sl-file-name">{{ item3.name }}</span>
25
+ {%- if item3.note -%}
26
+ <span class="sl-file-note">{{ item3.note }}</span>
27
+ {%- endif -%}
28
+ {%- if item3.children -%}
29
+ <ul>
30
+ {%- for item4 in item3.children -%}
31
+ <li>
32
+ <span class="sl-file-name">{{ item4.name }}</span>
33
+ {%- if item4.note -%}
34
+ <span class="sl-file-note">{{ item4.note }}</span>
35
+ {%- endif -%}
36
+ </li>
37
+ {%- endfor -%}
38
+ </ul>
39
+ {%- endif -%}
40
+ </li>
41
+ {%- endfor -%}
42
+ </ul>
43
+ {%- endif -%}
44
+ </li>
45
+ {%- endfor -%}
46
+ </ul>
47
+ {%- endif -%}
48
+ </li>
49
+ {%- endfor -%}
50
+ </ul>
51
+ {%- endif -%}
52
+ </div>
@@ -0,0 +1,18 @@
1
+ {%- include component-css.html name="gallery" -%}
2
+ <div class="sl-gallery">
3
+ {%- for image in include.images %}
4
+ <figure class="sl-gallery-item">
5
+ <img src="{{ image.src | relative_url | escape }}" alt="{{ image.alt | escape }}"{% if image.srcset %} srcset="{{ image.srcset | escape }}"{% endif %}{% if image.width %} width="{{ image.width }}"{% endif %}{% if image.height %} height="{{ image.height }}"{% endif %}{% if image.lazy %} loading="lazy"{% endif %}>
6
+ {%- if image.caption or image.credit %}
7
+ <figcaption>
8
+ {%- if image.caption %}
9
+ <span class="sl-gallery-caption">{{ image.caption | escape }}</span>
10
+ {%- endif %}
11
+ {%- if image.credit %}
12
+ <span class="sl-gallery-credit">{{ image.credit | escape }}</span>
13
+ {%- endif %}
14
+ </figcaption>
15
+ {%- endif %}
16
+ </figure>
17
+ {%- endfor %}
18
+ </div>
@@ -0,0 +1,30 @@
1
+ {%- include component-css.html name="hero" -%}
2
+ <section class="sl-hero"{% if include.id %} id="{{ include.id | escape }}"{% endif %}{% if include.id and include.title %} aria-labelledby="{{ include.id | escape }}-title"{% endif %}>
3
+ <div class="sl-hero-body">
4
+ {%- if include.title %}
5
+ <h2 class="sl-hero-title"{% if include.id %} id="{{ include.id | escape }}-title"{% endif %}>{{ include.title }}</h2>
6
+ {%- endif %}
7
+ {%- if include.lead %}
8
+ <p class="sl-hero-lead">{{ include.lead }}</p>
9
+ {%- endif %}
10
+ {%- assign show_primary = false -%}
11
+ {%- if include.primary_url and include.primary_label -%}{%- assign show_primary = true -%}{%- endif -%}
12
+ {%- assign show_secondary = false -%}
13
+ {%- if include.secondary_url and include.secondary_label -%}{%- assign show_secondary = true -%}{%- endif -%}
14
+ {%- if show_primary or show_secondary %}
15
+ <div class="sl-hero-actions">
16
+ {%- if show_primary %}
17
+ <a class="sl-hero-action sl-hero-action-primary" href="{{ include.primary_url | relative_url }}">{{ include.primary_label }}</a>
18
+ {%- endif %}
19
+ {%- if show_secondary %}
20
+ <a class="sl-hero-action sl-hero-action-secondary" href="{{ include.secondary_url | relative_url }}">{{ include.secondary_label }}</a>
21
+ {%- endif %}
22
+ </div>
23
+ {%- endif %}
24
+ </div>
25
+ {%- if include.image %}
26
+ <div class="sl-hero-media">
27
+ <img src="{{ include.image | relative_url | escape }}" alt="{{ include.image_alt | escape }}"{% if include.image_width and include.image_height %} width="{{ include.image_width }}" height="{{ include.image_height }}"{% endif %}>
28
+ </div>
29
+ {%- endif %}
30
+ </section>
@@ -0,0 +1,27 @@
1
+ <kbd class="sl-kbd" data-mac="{{ include.mac | escape }}" data-other="{{ include.other | escape }}">
2
+ <span class="sl-kbd-mac">{{ include.mac }}</span>
3
+ <span class="sl-kbd-sep">/</span>
4
+ <span class="sl-kbd-other">{{ include.other }}</span>
5
+ </kbd>
6
+ <script>
7
+ (function() {
8
+ var scripts = document.getElementsByTagName('script');
9
+ var script = scripts[scripts.length - 1];
10
+ var kbd = script.previousElementSibling;
11
+ if (!kbd || kbd.tagName !== 'KBD' || !kbd.classList.contains('sl-kbd')) return;
12
+
13
+ var isMac = /Mac|iPod|iPhone|iPad/.test(navigator.platform) || /Mac|iPod|iPhone|iPad/.test(navigator.userAgent);
14
+
15
+ var macSpan = kbd.querySelector('.sl-kbd-mac');
16
+ var sepSpan = kbd.querySelector('.sl-kbd-sep');
17
+ var otherSpan = kbd.querySelector('.sl-kbd-other');
18
+
19
+ if (isMac) {
20
+ if (otherSpan) otherSpan.hidden = true;
21
+ if (sepSpan) sepSpan.hidden = true;
22
+ } else {
23
+ if (macSpan) macSpan.hidden = true;
24
+ if (sepSpan) sepSpan.hidden = true;
25
+ }
26
+ })();
27
+ </script>
@@ -0,0 +1,21 @@
1
+ {%- if include.logos -%}
2
+ {%- include component-css.html name="logos" -%}
3
+ <div class="sl-logos">
4
+ {%- if include.title -%}
5
+ <p class="sl-logos-title">{{ include.title | escape }}</p>
6
+ {%- endif -%}
7
+ <ul>
8
+ {%- for logo in include.logos -%}
9
+ <li>
10
+ {%- if logo.url -%}
11
+ <a href="{{ logo.url | relative_url }}">
12
+ {%- endif -%}
13
+ <img src="{{ logo.image | relative_url }}" alt="{{ logo.alt | default: logo.name | escape }}"{% if logo.width and logo.height %} width="{{ logo.width }}" height="{{ logo.height }}"{% endif %} loading="lazy">
14
+ {%- if logo.url -%}
15
+ </a>
16
+ {%- endif -%}
17
+ </li>
18
+ {%- endfor -%}
19
+ </ul>
20
+ </div>
21
+ {%- endif -%}
@@ -0,0 +1,47 @@
1
+ {%- comment -%} A grid of people from include.people: a list of { name, role, avatar, avatar_alt, url, links }, or a map shaped like _data/authors.yml { name, bio, avatar, links[].title }. include.id sets the list id. {%- endcomment -%}
2
+ {%- include component-css.html name="people" -%}
3
+ {%- if include.people -%}
4
+ <ul class="sl-people"{% if include.id %} id="{{ include.id | escape }}"{% endif %}>
5
+ {%- for sl_person in include.people -%}
6
+ {%- assign sl_p = sl_person -%}
7
+ {%- if sl_person[1].name -%}{%- assign sl_p = sl_person[1] -%}{%- endif -%}
8
+ {%- if sl_p.name -%}
9
+ <li class="sl-person">
10
+ {%- if sl_p.avatar -%}
11
+ {%- assign sl_avatar = sl_p.avatar -%}
12
+ {%- unless sl_avatar contains '://' -%}{%- assign sl_avatar = sl_avatar | relative_url -%}{%- endunless -%}
13
+ {%- assign sl_alt = sl_p.avatar_alt | default: sl_p.name -%}
14
+ <img class="sl-person-avatar" src="{{ sl_avatar | escape }}" alt="{{ sl_alt | escape }}" width="64" height="64" loading="lazy">
15
+ {%- endif -%}
16
+ <div class="sl-person-body">
17
+ <span class="sl-person-name">
18
+ {%- if sl_p.url -%}
19
+ {%- assign sl_url = sl_p.url -%}
20
+ {%- unless sl_url contains '://' -%}{%- assign sl_url = sl_url | relative_url -%}{%- endunless -%}
21
+ <a href="{{ sl_url | escape }}">{{ sl_p.name | escape }}</a>
22
+ {%- else -%}
23
+ {{ sl_p.name | escape }}
24
+ {%- endif -%}
25
+ </span>
26
+ {%- assign sl_role = sl_p.role | default: sl_p.bio -%}
27
+ {%- if sl_role -%}
28
+ <span class="sl-person-role">{{ sl_role | escape }}</span>
29
+ {%- endif -%}
30
+ {%- if sl_p.links.size > 0 -%}
31
+ <ul class="sl-person-links">
32
+ {%- for sl_link in sl_p.links -%}
33
+ {%- if sl_link.url -%}
34
+ {%- assign sl_href = sl_link.url -%}
35
+ {%- unless sl_href contains '://' -%}{%- assign sl_href = sl_href | relative_url -%}{%- endunless -%}
36
+ {%- assign sl_label = sl_link.label | default: sl_link.title -%}
37
+ <li><a href="{{ sl_href | escape }}">{{ sl_label | escape }}</a></li>
38
+ {%- endif -%}
39
+ {%- endfor -%}
40
+ </ul>
41
+ {%- endif -%}
42
+ </div>
43
+ </li>
44
+ {%- endif -%}
45
+ {%- endfor -%}
46
+ </ul>
47
+ {%- endif -%}
@@ -0,0 +1,28 @@
1
+ {%- include component-css.html name="pricing" -%}
2
+ <ul class="sl-pricing"{% if include.id %} id="{{ include.id | escape }}"{% endif %}>
3
+ {%- for plan in include.plans -%}
4
+ <li class="sl-pricing-plan{% if plan.highlighted %} sl-pricing-featured{% endif %}">
5
+ {%- if plan.highlighted and plan.highlight_label -%}
6
+ <p class="sl-pricing-badge">{{ plan.highlight_label }}</p>
7
+ {%- endif -%}
8
+ <h3 class="sl-pricing-name">{{ plan.name }}</h3>
9
+ <p class="sl-pricing-price">
10
+ <span class="sl-pricing-amount">{{ plan.price }}</span>
11
+ {%- if plan.period %} <span class="sl-pricing-period">{{ plan.period }}</span>{% endif -%}
12
+ </p>
13
+ {%- if plan.description -%}
14
+ <p class="sl-pricing-description">{{ plan.description }}</p>
15
+ {%- endif -%}
16
+ {%- if plan.features -%}
17
+ <ul class="sl-pricing-features">
18
+ {%- for feature in plan.features -%}
19
+ <li>{{ feature }}</li>
20
+ {%- endfor -%}
21
+ </ul>
22
+ {%- endif -%}
23
+ {%- if plan.cta_label and plan.cta_url -%}
24
+ <a class="sl-button sl-pricing-cta" href="{{ plan.cta_url | relative_url }}">{{ plan.cta_label }}</a>
25
+ {%- endif -%}
26
+ </li>
27
+ {%- endfor -%}
28
+ </ul>
@@ -0,0 +1,22 @@
1
+ <figure class="sl-pull-quote">
2
+ <blockquote>
3
+ <p>{{ include.text }}</p>
4
+ </blockquote>
5
+ {%- if include.author or include.source -%}
6
+ <figcaption>
7
+ {%- if include.author -%}
8
+ <span class="sl-pull-quote-author">{{ include.author }}</span>
9
+ {%- endif -%}
10
+ {%- if include.source -%}
11
+ {%- if include.author -%}<span class="sl-pull-quote-sep">, </span>{%- endif -%}
12
+ <cite>
13
+ {%- if include.url -%}
14
+ <a href="{{ include.url }}">{{ include.source }}</a>
15
+ {%- else -%}
16
+ {{ include.source }}
17
+ {%- endif -%}
18
+ </cite>
19
+ {%- endif -%}
20
+ </figcaption>
21
+ {%- endif -%}
22
+ </figure>
@@ -0,0 +1,14 @@
1
+ <div class="sl-stats">
2
+ {%- for item in include.items -%}
3
+ <div class="sl-stat">
4
+ <div>
5
+ <span class="sl-stat-value">{%- include num.html value=item.value -%}</span>
6
+ {%- if item.unit -%}<span class="sl-stat-unit">{{ item.unit }}</span>{%- endif -%}
7
+ </div>
8
+ <div class="sl-stat-footer">
9
+ <span class="sl-stat-label">{{ item.label }}</span>
10
+ {%- if item.trend -%}<span class="sl-stat-trend">{%- include num.html value=item.trend -%}</span>{%- endif -%}
11
+ </div>
12
+ </div>
13
+ {%- endfor -%}
14
+ </div>
@@ -0,0 +1,24 @@
1
+ <div class="sl-steps">
2
+ {%- if include.steps -%}
3
+ <ol>
4
+ {%- for step in include.steps -%}
5
+ <li>
6
+ <div class="sl-steps-content">
7
+ {%- if step.title -%}
8
+ <span class="sl-steps-title">
9
+ {%- if step.url -%}
10
+ <a href="{{ step.url | relative_url }}">{{ step.title }}</a>
11
+ {%- else -%}
12
+ {{ step.title }}
13
+ {%- endif -%}
14
+ </span>
15
+ {%- endif -%}
16
+ {%- if step.description -%}
17
+ <div class="sl-steps-description">{{ step.description | markdownify }}</div>
18
+ {%- endif -%}
19
+ </div>
20
+ </li>
21
+ {%- endfor -%}
22
+ </ol>
23
+ {%- endif -%}
24
+ </div>
@@ -0,0 +1,14 @@
1
+ {%- include component-css.html name="terminal" -%}
2
+ {%- assign nl = "
3
+ " -%}
4
+ {%- assign prompt = include.prompt | default: "$" -%}
5
+ {%- assign cmds = include.commands | split: nl -%}
6
+ <div class="sl-terminal" dir="ltr">
7
+ <pre><code class="sl-commands">
8
+ {%- for cmd in cmds -%}
9
+ <span class="sl-terminal-prompt" data-prompt="{{ prompt }}"></span>{{ cmd }}
10
+ {% endfor -%}
11
+ </code>{% if include.output %}
12
+ <code class="sl-terminal-output">{{ include.output }}</code>
13
+ {%- endif %}</pre>
14
+ </div>
@@ -0,0 +1,23 @@
1
+ {%- assign sl_testimonial_quote = include.quote | strip -%}
2
+ {%- if sl_testimonial_quote != "" -%}
3
+ {%- include component-css.html name="testimonial" -%}
4
+ <figure class="sl-testimonial">
5
+ <blockquote><p>{{ sl_testimonial_quote }}</p></blockquote>
6
+ {%- if include.avatar or include.name or include.role or include.source_url -%}
7
+ <figcaption class="sl-testimonial-credit">
8
+ {%- if include.avatar -%}
9
+ <img class="sl-testimonial-avatar" src="{{ include.avatar | relative_url | escape }}" alt="{{ include.avatar_alt | escape }}" width="48" height="48" loading="lazy">
10
+ {%- endif -%}
11
+ {%- if include.name or include.role -%}
12
+ <span class="sl-testimonial-person">
13
+ {%- if include.name -%}<cite class="sl-testimonial-name">{{ include.name }}</cite>{%- endif -%}
14
+ {%- if include.role -%}<span class="sl-testimonial-role">{{ include.role }}</span>{%- endif -%}
15
+ </span>
16
+ {%- endif -%}
17
+ {%- if include.source_url -%}
18
+ <a class="sl-testimonial-source" href="{{ include.source_url | escape }}">{{ include.source_label | default: include.source_url }}</a>
19
+ {%- endif -%}
20
+ </figcaption>
21
+ {%- endif -%}
22
+ </figure>
23
+ {%- endif -%}