docyard 0.7.0 → 0.9.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 (155) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -1
  3. data/CHANGELOG.md +43 -1
  4. data/lib/docyard/build/asset_bundler.rb +22 -7
  5. data/lib/docyard/build/file_copier.rb +49 -27
  6. data/lib/docyard/build/sitemap_generator.rb +6 -6
  7. data/lib/docyard/build/static_generator.rb +85 -12
  8. data/lib/docyard/builder.rb +6 -6
  9. data/lib/docyard/components/aliases.rb +12 -0
  10. data/lib/docyard/components/processors/abbreviation_processor.rb +72 -0
  11. data/lib/docyard/components/processors/accordion_processor.rb +81 -0
  12. data/lib/docyard/components/processors/badge_processor.rb +72 -0
  13. data/lib/docyard/components/processors/callout_processor.rb +8 -2
  14. data/lib/docyard/components/processors/cards_processor.rb +100 -0
  15. data/lib/docyard/components/processors/code_block_options_preprocessor.rb +23 -2
  16. data/lib/docyard/components/processors/code_block_processor.rb +6 -0
  17. data/lib/docyard/components/processors/code_group_processor.rb +198 -0
  18. data/lib/docyard/components/processors/code_snippet_import_preprocessor.rb +6 -1
  19. data/lib/docyard/components/processors/custom_anchor_processor.rb +42 -0
  20. data/lib/docyard/components/processors/file_tree_processor.rb +151 -0
  21. data/lib/docyard/components/processors/image_caption_processor.rb +96 -0
  22. data/lib/docyard/components/processors/include_processor.rb +86 -0
  23. data/lib/docyard/components/processors/steps_processor.rb +89 -0
  24. data/lib/docyard/components/processors/tabs_processor.rb +9 -1
  25. data/lib/docyard/components/processors/tooltip_processor.rb +57 -0
  26. data/lib/docyard/components/processors/video_embed_processor.rb +196 -0
  27. data/lib/docyard/components/support/code_group/html_builder.rb +122 -0
  28. data/lib/docyard/components/support/markdown_code_block_helper.rb +56 -0
  29. data/lib/docyard/config/branding_resolver.rb +121 -17
  30. data/lib/docyard/config/constants.rb +6 -4
  31. data/lib/docyard/config/logo_detector.rb +39 -0
  32. data/lib/docyard/config/validator.rb +122 -99
  33. data/lib/docyard/config.rb +40 -42
  34. data/lib/docyard/initializer.rb +15 -76
  35. data/lib/docyard/navigation/breadcrumb_builder.rb +133 -0
  36. data/lib/docyard/navigation/prev_next_builder.rb +4 -1
  37. data/lib/docyard/navigation/sidebar/children_discoverer.rb +51 -0
  38. data/lib/docyard/navigation/sidebar/config_parser.rb +136 -108
  39. data/lib/docyard/navigation/sidebar/file_resolver.rb +90 -0
  40. data/lib/docyard/navigation/sidebar/file_system_scanner.rb +2 -1
  41. data/lib/docyard/navigation/sidebar/item.rb +50 -7
  42. data/lib/docyard/navigation/sidebar/local_config_loader.rb +51 -0
  43. data/lib/docyard/navigation/sidebar/metadata_extractor.rb +71 -0
  44. data/lib/docyard/navigation/sidebar/metadata_reader.rb +51 -0
  45. data/lib/docyard/navigation/sidebar/path_prefixer.rb +34 -0
  46. data/lib/docyard/navigation/sidebar/renderer.rb +60 -38
  47. data/lib/docyard/navigation/sidebar/sorter.rb +21 -0
  48. data/lib/docyard/navigation/sidebar/tree_builder.rb +100 -26
  49. data/lib/docyard/navigation/sidebar/tree_filter.rb +55 -0
  50. data/lib/docyard/navigation/sidebar_builder.rb +105 -36
  51. data/lib/docyard/rendering/icon_helpers.rb +13 -0
  52. data/lib/docyard/rendering/icons/phosphor.rb +26 -1
  53. data/lib/docyard/rendering/markdown.rb +29 -1
  54. data/lib/docyard/rendering/renderer.rb +75 -34
  55. data/lib/docyard/rendering/template_resolver.rb +172 -0
  56. data/lib/docyard/routing/fallback_resolver.rb +92 -0
  57. data/lib/docyard/search/build_indexer.rb +1 -1
  58. data/lib/docyard/search/dev_indexer.rb +51 -6
  59. data/lib/docyard/search/pagefind_support.rb +2 -0
  60. data/lib/docyard/server/asset_handler.rb +25 -19
  61. data/lib/docyard/server/pagefind_handler.rb +63 -0
  62. data/lib/docyard/server/preview_server.rb +1 -1
  63. data/lib/docyard/server/rack_application.rb +81 -64
  64. data/lib/docyard/templates/assets/css/code.css +18 -51
  65. data/lib/docyard/templates/assets/css/components/abbreviation.css +86 -0
  66. data/lib/docyard/templates/assets/css/components/accordion.css +138 -0
  67. data/lib/docyard/templates/assets/css/components/badges.css +47 -0
  68. data/lib/docyard/templates/assets/css/components/banner.css +202 -0
  69. data/lib/docyard/templates/assets/css/components/breadcrumbs.css +143 -0
  70. data/lib/docyard/templates/assets/css/components/callout.css +67 -67
  71. data/lib/docyard/templates/assets/css/components/cards.css +100 -0
  72. data/lib/docyard/templates/assets/css/components/code-block.css +190 -282
  73. data/lib/docyard/templates/assets/css/components/code-group.css +281 -0
  74. data/lib/docyard/templates/assets/css/components/figure.css +22 -0
  75. data/lib/docyard/templates/assets/css/components/file-tree.css +124 -0
  76. data/lib/docyard/templates/assets/css/components/heading-anchor.css +36 -15
  77. data/lib/docyard/templates/assets/css/components/icon.css +0 -1
  78. data/lib/docyard/templates/assets/css/components/lightbox.css +65 -0
  79. data/lib/docyard/templates/assets/css/components/logo.css +0 -2
  80. data/lib/docyard/templates/assets/css/components/nav-menu.css +237 -0
  81. data/lib/docyard/templates/assets/css/components/navigation.css +193 -167
  82. data/lib/docyard/templates/assets/css/components/prev-next.css +68 -48
  83. data/lib/docyard/templates/assets/css/components/search.css +186 -174
  84. data/lib/docyard/templates/assets/css/components/steps.css +122 -0
  85. data/lib/docyard/templates/assets/css/components/tab-bar.css +163 -0
  86. data/lib/docyard/templates/assets/css/components/table-of-contents.css +127 -114
  87. data/lib/docyard/templates/assets/css/components/tabs.css +119 -160
  88. data/lib/docyard/templates/assets/css/components/theme-toggle.css +48 -44
  89. data/lib/docyard/templates/assets/css/components/tooltip.css +113 -0
  90. data/lib/docyard/templates/assets/css/components/video.css +41 -0
  91. data/lib/docyard/templates/assets/css/landing.css +815 -0
  92. data/lib/docyard/templates/assets/css/layout.css +489 -87
  93. data/lib/docyard/templates/assets/css/main.css +1 -3
  94. data/lib/docyard/templates/assets/css/markdown.css +113 -93
  95. data/lib/docyard/templates/assets/css/reset.css +0 -3
  96. data/lib/docyard/templates/assets/css/typography.css +43 -41
  97. data/lib/docyard/templates/assets/css/variables.css +268 -208
  98. data/lib/docyard/templates/assets/favicon.svg +7 -8
  99. data/lib/docyard/templates/assets/fonts/Inter-Variable.ttf +0 -0
  100. data/lib/docyard/templates/assets/js/components/abbreviation.js +85 -0
  101. data/lib/docyard/templates/assets/js/components/banner.js +81 -0
  102. data/lib/docyard/templates/assets/js/components/code-block.js +24 -42
  103. data/lib/docyard/templates/assets/js/components/code-group.js +283 -0
  104. data/lib/docyard/templates/assets/js/components/file-tree.js +39 -0
  105. data/lib/docyard/templates/assets/js/components/heading-anchor.js +26 -24
  106. data/lib/docyard/templates/assets/js/components/lightbox.js +72 -0
  107. data/lib/docyard/templates/assets/js/components/navigation.js +181 -70
  108. data/lib/docyard/templates/assets/js/components/search.js +0 -75
  109. data/lib/docyard/templates/assets/js/components/sidebar-toggle.js +29 -0
  110. data/lib/docyard/templates/assets/js/components/tab-navigation.js +145 -0
  111. data/lib/docyard/templates/assets/js/components/table-of-contents.js +153 -66
  112. data/lib/docyard/templates/assets/js/components/tabs.js +31 -69
  113. data/lib/docyard/templates/assets/js/components/tooltip.js +118 -0
  114. data/lib/docyard/templates/assets/js/theme.js +0 -3
  115. data/lib/docyard/templates/assets/logo-dark.svg +8 -2
  116. data/lib/docyard/templates/assets/logo.svg +7 -4
  117. data/lib/docyard/templates/config/docyard.yml.erb +37 -34
  118. data/lib/docyard/templates/errors/404.html.erb +1 -1
  119. data/lib/docyard/templates/errors/500.html.erb +1 -1
  120. data/lib/docyard/templates/layouts/default.html.erb +19 -67
  121. data/lib/docyard/templates/layouts/splash.html.erb +177 -0
  122. data/lib/docyard/templates/partials/_accordion.html.erb +9 -0
  123. data/lib/docyard/templates/partials/_banner.html.erb +27 -0
  124. data/lib/docyard/templates/partials/_breadcrumbs.html.erb +24 -0
  125. data/lib/docyard/templates/partials/_card.html.erb +23 -0
  126. data/lib/docyard/templates/partials/_code_block.html.erb +5 -3
  127. data/lib/docyard/templates/partials/_doc_footer.html.erb +25 -0
  128. data/lib/docyard/templates/partials/_features.html.erb +15 -0
  129. data/lib/docyard/templates/partials/_footer.html.erb +42 -0
  130. data/lib/docyard/templates/partials/_head.html.erb +22 -0
  131. data/lib/docyard/templates/partials/_header.html.erb +49 -0
  132. data/lib/docyard/templates/partials/_heading_anchor.html.erb +3 -1
  133. data/lib/docyard/templates/partials/_hero.html.erb +27 -0
  134. data/lib/docyard/templates/partials/_nav_group.html.erb +31 -11
  135. data/lib/docyard/templates/partials/_nav_leaf.html.erb +4 -1
  136. data/lib/docyard/templates/partials/_nav_menu.html.erb +42 -0
  137. data/lib/docyard/templates/partials/_nav_nested_section.html.erb +11 -0
  138. data/lib/docyard/templates/partials/_nav_section.html.erb +1 -1
  139. data/lib/docyard/templates/partials/_prev_next.html.erb +8 -2
  140. data/lib/docyard/templates/partials/_scripts.html.erb +7 -0
  141. data/lib/docyard/templates/partials/_search_modal.html.erb +2 -6
  142. data/lib/docyard/templates/partials/_search_trigger.html.erb +2 -6
  143. data/lib/docyard/templates/partials/_sidebar.html.erb +21 -4
  144. data/lib/docyard/templates/partials/_step.html.erb +14 -0
  145. data/lib/docyard/templates/partials/_tab_bar.html.erb +25 -0
  146. data/lib/docyard/templates/partials/_table_of_contents.html.erb +12 -12
  147. data/lib/docyard/templates/partials/_table_of_contents_toggle.html.erb +1 -3
  148. data/lib/docyard/templates/partials/_tabs.html.erb +2 -2
  149. data/lib/docyard/templates/partials/_theme_toggle.html.erb +2 -11
  150. data/lib/docyard/version.rb +1 -1
  151. metadata +70 -5
  152. data/lib/docyard/templates/markdown/getting-started/installation.md.erb +0 -77
  153. data/lib/docyard/templates/markdown/guides/configuration.md.erb +0 -202
  154. data/lib/docyard/templates/markdown/guides/markdown-features.md.erb +0 -247
  155. data/lib/docyard/templates/markdown/index.md.erb +0 -82
@@ -2,9 +2,7 @@
2
2
  <div class="search-modal-backdrop" data-search-backdrop></div>
3
3
  <div class="search-modal-container">
4
4
  <div class="search-modal-header">
5
- <svg class="search-modal-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor" aria-hidden="true">
6
- <path d="M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z"></path>
7
- </svg>
5
+ <span class="search-modal-icon"><%= icon(:magnifying_glass) %></span>
8
6
  <input
9
7
  type="text"
10
8
  class="search-modal-input"
@@ -26,9 +24,7 @@
26
24
  </div>
27
25
 
28
26
  <div class="search-modal-empty" data-search-empty hidden>
29
- <svg class="search-empty-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor">
30
- <path d="M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z"></path>
31
- </svg>
27
+ <span class="search-empty-icon"><%= icon(:magnifying_glass) %></span>
32
28
  <span class="search-empty-title">No results found</span>
33
29
  <span class="search-empty-hint">Try different keywords or check your spelling</span>
34
30
  </div>
@@ -6,16 +6,12 @@
6
6
  data-search-trigger
7
7
  >
8
8
  <span class="search-trigger-icon" aria-hidden="true">
9
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor">
10
- <path d="M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z"></path>
11
- </svg>
9
+ <%= icon(:magnifying_glass) %>
12
10
  </span>
13
11
  <span class="search-trigger-text">Search...</span>
14
12
  <kbd class="search-trigger-shortcut" data-search-shortcut>
15
13
  <span class="search-trigger-shortcut-icon" aria-hidden="true">
16
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor">
17
- <path d="M180,144H160V112h20a36,36,0,1,0-36-36V96H112V76a36,36,0,1,0-36,36H96v32H76a36,36,0,1,0,36,36V160h32v20a36,36,0,1,0,36-36ZM160,76a20,20,0,1,1,20,20H160ZM56,76a20,20,0,0,1,40,0V96H76A20,20,0,0,1,56,76ZM96,180a20,20,0,1,1-20-20H96Zm16-68h32v32H112Zm68,88a20,20,0,0,1-20-20V160h20a20,20,0,0,1,0,40Z"></path>
18
- </svg>
14
+ <%= icon(:command) %>
19
15
  </span>
20
16
  <span class="search-trigger-shortcut-text">K</span>
21
17
  </kbd>
@@ -1,6 +1,23 @@
1
1
  <aside class="sidebar" role="navigation" aria-label="Documentation navigation">
2
- <nav>
3
- <%= @nav_content %>
4
- </nav>
5
- <%= @footer_html %>
2
+ <% if @header_ctas&.any? %>
3
+ <div class="sidebar-ctas">
4
+ <% @header_ctas.sort_by { |cta| cta[:variant] == 'secondary' ? 0 : 1 }.each do |cta| %>
5
+ <a href="<%= cta[:external] ? cta[:href] : link_path(cta[:href]) %>"
6
+ class="sidebar-cta sidebar-cta--<%= cta[:variant] || 'primary' %>"
7
+ <%= 'target="_blank" rel="noopener noreferrer"' if cta[:external] %>>
8
+ <%= cta[:text] %>
9
+ <% if cta[:variant] != 'secondary' %>
10
+ <svg class="sidebar-cta-arrow" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
11
+ <path d="M9 5l7 7-7 7"/>
12
+ </svg>
13
+ <% end %>
14
+ </a>
15
+ <% end %>
16
+ </div>
17
+ <% end %>
18
+ <div class="sidebar-scroll">
19
+ <nav>
20
+ <%= @nav_content %>
21
+ </nav>
22
+ </div>
6
23
  </aside>
@@ -0,0 +1,14 @@
1
+ <div class="docyard-step<%= ' docyard-step--last' if @is_last %>">
2
+ <div class="docyard-step__indicator">
3
+ <span class="docyard-step__number"><%= @number %></span>
4
+ <% unless @is_last %><div class="docyard-step__connector"></div><% end %>
5
+ </div>
6
+ <div class="docyard-step__content">
7
+ <h3 class="docyard-step__title"><%= @title %></h3>
8
+ <% unless @content_html.empty? %>
9
+ <div class="docyard-step__body">
10
+ <%= @content_html %>
11
+ </div>
12
+ <% end %>
13
+ </div>
14
+ </div>
@@ -0,0 +1,25 @@
1
+ <% if @has_tabs && @tabs&.any? %>
2
+ <nav class="tab-bar" aria-label="Main navigation">
3
+ <div class="tab-bar-content">
4
+ <% @tabs.each do |tab| %>
5
+ <a href="<%= tab[:external] ? tab[:href] : link_path(tab[:href]) %>"
6
+ class="tab-item<%= ' is-active' if tab[:active] %>"
7
+ <%= 'target="_blank" rel="noopener noreferrer"' if tab[:external] %>
8
+ data-tab-href="<%= tab[:href] %>">
9
+ <% if tab[:icon] %>
10
+ <span class="tab-icon"><%= icon(tab[:icon]) %></span>
11
+ <% end %>
12
+ <span><%= tab[:text] %></span>
13
+ <% if tab[:external] %>
14
+ <svg class="tab-external-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
15
+ <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path>
16
+ <polyline points="15 3 21 3 21 9"></polyline>
17
+ <line x1="10" y1="14" x2="21" y2="3"></line>
18
+ </svg>
19
+ <% end %>
20
+ </a>
21
+ <% end %>
22
+ <div class="tab-indicator" id="tabIndicator"></div>
23
+ </div>
24
+ </nav>
25
+ <% end %>
@@ -1,14 +1,13 @@
1
1
  <% unless @toc.empty? %>
2
- <aside class="docyard-toc" aria-label="Table of contents">
3
- <div class="docyard-toc__header">
4
- <h2 class="docyard-toc__title">
5
- <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="currentColor" viewBox="0 0 256 256" aria-hidden="true">
6
- <path d="M88,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H96A8,8,0,0,1,88,64Zm128,56H96a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Zm0,64H96a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16ZM56,56H40a8,8,0,0,0,0,16H56a8,8,0,0,0,0-16Zm0,64H40a8,8,0,0,0,0,16H56a8,8,0,0,0,0-16Zm0,64H40a8,8,0,0,0,0,16H56a8,8,0,0,0,0-16Z"/>
7
- </svg>
8
- On this page
9
- </h2>
10
- </div>
11
- <nav id="toc-content" class="docyard-toc__nav">
2
+ <div class="docyard-toc" role="complementary" aria-label="Table of contents">
3
+ <div class="docyard-toc__scroll">
4
+ <div class="docyard-toc__header">
5
+ <h2 class="docyard-toc__title">
6
+ <%= icon(:table) %>
7
+ On this page
8
+ </h2>
9
+ </div>
10
+ <nav id="toc-content" class="docyard-toc__nav">
12
11
  <ul class="docyard-toc__list">
13
12
  <% @toc.each do |heading| %>
14
13
  <li class="docyard-toc__item docyard-toc__item--level-<%= heading[:level] %>">
@@ -40,6 +39,7 @@
40
39
  </li>
41
40
  <% end %>
42
41
  </ul>
43
- </nav>
44
- </aside>
42
+ </nav>
43
+ </div>
44
+ </div>
45
45
  <% end %>
@@ -1,8 +1,6 @@
1
1
  <% unless @toc.empty? %>
2
2
  <button class="secondary-header-toc-toggle" aria-expanded="false" aria-controls="toc-content" aria-label="Toggle table of contents">
3
3
  <span>On this page</span>
4
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 256 256" fill="currentColor" aria-hidden="true">
5
- <path d="M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z"/>
6
- </svg>
4
+ <%= icon(:caret_down) %>
7
5
  </button>
8
6
  <% end %>
@@ -13,9 +13,9 @@
13
13
  <% if tab[:icon] %>
14
14
  <span class="docyard-tabs__icon">
15
15
  <% if tab[:icon_source] == "file-extension" %>
16
- <%= Docyard::Icons.render_file_extension(tab[:icon]) %>
16
+ <%= icon_file_extension(tab[:icon]) %>
17
17
  <% elsif tab[:icon_source] == "phosphor" %>
18
- <%= Docyard::Icons.render(tab[:icon]) %>
18
+ <%= icon(tab[:icon]) %>
19
19
  <% end %>
20
20
  </span>
21
21
  <% end %>
@@ -1,13 +1,4 @@
1
1
  <button class="theme-toggle" aria-label="Toggle theme" title="Toggle theme">
2
- <span class="theme-toggle-track">
3
- <!-- Sun icon -->
4
- <svg class="theme-toggle-icon theme-toggle-sun-icon" xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 256 256" fill="currentColor">
5
- <path d="M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm72,88a64,64,0,1,1-64-64A64.07,64.07,0,0,1,192,128Zm-16,0a48,48,0,1,0-48,48A48.05,48.05,0,0,0,176,128ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z"></path>
6
- </svg>
7
- <!-- Moon stars icon -->
8
- <svg class="theme-toggle-icon theme-toggle-moon-icon" xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 256 256" fill="currentColor">
9
- <path d="M240,96a8,8,0,0,1-8,8H216v16a8,8,0,0,1-16,0V104H184a8,8,0,0,1,0-16h16V72a8,8,0,0,1,16,0V88h16A8,8,0,0,1,240,96ZM144,56h8v8a8,8,0,0,0,16,0V56h8a8,8,0,0,0,0-16h-8V32a8,8,0,0,0-16,0v8h-8a8,8,0,0,0,0,16Zm72.77,97a8,8,0,0,1,1.43,8A96,96,0,1,1,95.07,37.8a8,8,0,0,1,10.6,9.06A88.07,88.07,0,0,0,209.14,150.33,8,8,0,0,1,216.77,153Zm-19.39,14.88c-1.79.09-3.59.14-5.38.14A104.11,104.11,0,0,1,88,64c0-1.79,0-3.59.14-5.38A80,80,0,1,0,197.38,167.86Z"></path>
10
- </svg>
11
- <span class="theme-toggle-thumb"></span>
12
- </span>
2
+ <span class="theme-toggle-sun"><%= icon(:sun) %></span>
3
+ <span class="theme-toggle-moon"><%= icon(:moon_stars) %></span>
13
4
  </button>
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Docyard
4
- VERSION = "0.7.0"
4
+ VERSION = "0.9.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docyard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sanif Himani
@@ -191,17 +191,29 @@ files:
191
191
  - lib/docyard/cli.rb
192
192
  - lib/docyard/components/aliases.rb
193
193
  - lib/docyard/components/base_processor.rb
194
+ - lib/docyard/components/processors/abbreviation_processor.rb
195
+ - lib/docyard/components/processors/accordion_processor.rb
196
+ - lib/docyard/components/processors/badge_processor.rb
194
197
  - lib/docyard/components/processors/callout_processor.rb
198
+ - lib/docyard/components/processors/cards_processor.rb
195
199
  - lib/docyard/components/processors/code_block_diff_preprocessor.rb
196
200
  - lib/docyard/components/processors/code_block_focus_preprocessor.rb
197
201
  - lib/docyard/components/processors/code_block_options_preprocessor.rb
198
202
  - lib/docyard/components/processors/code_block_processor.rb
203
+ - lib/docyard/components/processors/code_group_processor.rb
199
204
  - lib/docyard/components/processors/code_snippet_import_preprocessor.rb
205
+ - lib/docyard/components/processors/custom_anchor_processor.rb
206
+ - lib/docyard/components/processors/file_tree_processor.rb
200
207
  - lib/docyard/components/processors/heading_anchor_processor.rb
201
208
  - lib/docyard/components/processors/icon_processor.rb
209
+ - lib/docyard/components/processors/image_caption_processor.rb
210
+ - lib/docyard/components/processors/include_processor.rb
211
+ - lib/docyard/components/processors/steps_processor.rb
202
212
  - lib/docyard/components/processors/table_of_contents_processor.rb
203
213
  - lib/docyard/components/processors/table_wrapper_processor.rb
204
214
  - lib/docyard/components/processors/tabs_processor.rb
215
+ - lib/docyard/components/processors/tooltip_processor.rb
216
+ - lib/docyard/components/processors/video_embed_processor.rb
205
217
  - lib/docyard/components/registry.rb
206
218
  - lib/docyard/components/support/code_block/feature_extractor.rb
207
219
  - lib/docyard/components/support/code_block/icon_detector.rb
@@ -209,22 +221,35 @@ files:
209
221
  - lib/docyard/components/support/code_block/line_wrapper.rb
210
222
  - lib/docyard/components/support/code_block/patterns.rb
211
223
  - lib/docyard/components/support/code_detector.rb
224
+ - lib/docyard/components/support/code_group/html_builder.rb
225
+ - lib/docyard/components/support/markdown_code_block_helper.rb
212
226
  - lib/docyard/components/support/tabs/icon_detector.rb
213
227
  - lib/docyard/components/support/tabs/parser.rb
214
228
  - lib/docyard/components/support/tabs/range_finder.rb
215
229
  - lib/docyard/config.rb
216
230
  - lib/docyard/config/branding_resolver.rb
217
231
  - lib/docyard/config/constants.rb
232
+ - lib/docyard/config/logo_detector.rb
218
233
  - lib/docyard/config/validator.rb
219
234
  - lib/docyard/initializer.rb
235
+ - lib/docyard/navigation/breadcrumb_builder.rb
220
236
  - lib/docyard/navigation/prev_next_builder.rb
237
+ - lib/docyard/navigation/sidebar/children_discoverer.rb
221
238
  - lib/docyard/navigation/sidebar/config_parser.rb
239
+ - lib/docyard/navigation/sidebar/file_resolver.rb
222
240
  - lib/docyard/navigation/sidebar/file_system_scanner.rb
223
241
  - lib/docyard/navigation/sidebar/item.rb
242
+ - lib/docyard/navigation/sidebar/local_config_loader.rb
243
+ - lib/docyard/navigation/sidebar/metadata_extractor.rb
244
+ - lib/docyard/navigation/sidebar/metadata_reader.rb
245
+ - lib/docyard/navigation/sidebar/path_prefixer.rb
224
246
  - lib/docyard/navigation/sidebar/renderer.rb
247
+ - lib/docyard/navigation/sidebar/sorter.rb
225
248
  - lib/docyard/navigation/sidebar/title_extractor.rb
226
249
  - lib/docyard/navigation/sidebar/tree_builder.rb
250
+ - lib/docyard/navigation/sidebar/tree_filter.rb
227
251
  - lib/docyard/navigation/sidebar_builder.rb
252
+ - lib/docyard/rendering/icon_helpers.rb
228
253
  - lib/docyard/rendering/icons.rb
229
254
  - lib/docyard/rendering/icons/LICENSE.phosphor
230
255
  - lib/docyard/rendering/icons/file_types.rb
@@ -232,28 +257,47 @@ files:
232
257
  - lib/docyard/rendering/language_mapping.rb
233
258
  - lib/docyard/rendering/markdown.rb
234
259
  - lib/docyard/rendering/renderer.rb
260
+ - lib/docyard/rendering/template_resolver.rb
261
+ - lib/docyard/routing/fallback_resolver.rb
235
262
  - lib/docyard/search/build_indexer.rb
236
263
  - lib/docyard/search/dev_indexer.rb
237
264
  - lib/docyard/search/pagefind_support.rb
238
265
  - lib/docyard/server/asset_handler.rb
239
266
  - lib/docyard/server/dev_server.rb
240
267
  - lib/docyard/server/file_watcher.rb
268
+ - lib/docyard/server/pagefind_handler.rb
241
269
  - lib/docyard/server/preview_server.rb
242
270
  - lib/docyard/server/rack_application.rb
243
271
  - lib/docyard/server/resolution_result.rb
244
272
  - lib/docyard/server/router.rb
245
273
  - lib/docyard/templates/assets/css/code.css
274
+ - lib/docyard/templates/assets/css/components/abbreviation.css
275
+ - lib/docyard/templates/assets/css/components/accordion.css
276
+ - lib/docyard/templates/assets/css/components/badges.css
277
+ - lib/docyard/templates/assets/css/components/banner.css
278
+ - lib/docyard/templates/assets/css/components/breadcrumbs.css
246
279
  - lib/docyard/templates/assets/css/components/callout.css
280
+ - lib/docyard/templates/assets/css/components/cards.css
247
281
  - lib/docyard/templates/assets/css/components/code-block.css
282
+ - lib/docyard/templates/assets/css/components/code-group.css
283
+ - lib/docyard/templates/assets/css/components/figure.css
284
+ - lib/docyard/templates/assets/css/components/file-tree.css
248
285
  - lib/docyard/templates/assets/css/components/heading-anchor.css
249
286
  - lib/docyard/templates/assets/css/components/icon.css
287
+ - lib/docyard/templates/assets/css/components/lightbox.css
250
288
  - lib/docyard/templates/assets/css/components/logo.css
289
+ - lib/docyard/templates/assets/css/components/nav-menu.css
251
290
  - lib/docyard/templates/assets/css/components/navigation.css
252
291
  - lib/docyard/templates/assets/css/components/prev-next.css
253
292
  - lib/docyard/templates/assets/css/components/search.css
293
+ - lib/docyard/templates/assets/css/components/steps.css
294
+ - lib/docyard/templates/assets/css/components/tab-bar.css
254
295
  - lib/docyard/templates/assets/css/components/table-of-contents.css
255
296
  - lib/docyard/templates/assets/css/components/tabs.css
256
297
  - lib/docyard/templates/assets/css/components/theme-toggle.css
298
+ - lib/docyard/templates/assets/css/components/tooltip.css
299
+ - lib/docyard/templates/assets/css/components/video.css
300
+ - lib/docyard/templates/assets/css/landing.css
257
301
  - lib/docyard/templates/assets/css/layout.css
258
302
  - lib/docyard/templates/assets/css/main.css
259
303
  - lib/docyard/templates/assets/css/markdown.css
@@ -261,12 +305,21 @@ files:
261
305
  - lib/docyard/templates/assets/css/typography.css
262
306
  - lib/docyard/templates/assets/css/variables.css
263
307
  - lib/docyard/templates/assets/favicon.svg
308
+ - lib/docyard/templates/assets/fonts/Inter-Variable.ttf
309
+ - lib/docyard/templates/assets/js/components/abbreviation.js
310
+ - lib/docyard/templates/assets/js/components/banner.js
264
311
  - lib/docyard/templates/assets/js/components/code-block.js
312
+ - lib/docyard/templates/assets/js/components/code-group.js
313
+ - lib/docyard/templates/assets/js/components/file-tree.js
265
314
  - lib/docyard/templates/assets/js/components/heading-anchor.js
315
+ - lib/docyard/templates/assets/js/components/lightbox.js
266
316
  - lib/docyard/templates/assets/js/components/navigation.js
267
317
  - lib/docyard/templates/assets/js/components/search.js
318
+ - lib/docyard/templates/assets/js/components/sidebar-toggle.js
319
+ - lib/docyard/templates/assets/js/components/tab-navigation.js
268
320
  - lib/docyard/templates/assets/js/components/table-of-contents.js
269
321
  - lib/docyard/templates/assets/js/components/tabs.js
322
+ - lib/docyard/templates/assets/js/components/tooltip.js
270
323
  - lib/docyard/templates/assets/js/reload.js
271
324
  - lib/docyard/templates/assets/js/theme.js
272
325
  - lib/docyard/templates/assets/logo-dark.svg
@@ -275,25 +328,37 @@ files:
275
328
  - lib/docyard/templates/errors/404.html.erb
276
329
  - lib/docyard/templates/errors/500.html.erb
277
330
  - lib/docyard/templates/layouts/default.html.erb
278
- - lib/docyard/templates/markdown/getting-started/installation.md.erb
279
- - lib/docyard/templates/markdown/guides/configuration.md.erb
280
- - lib/docyard/templates/markdown/guides/markdown-features.md.erb
281
- - lib/docyard/templates/markdown/index.md.erb
331
+ - lib/docyard/templates/layouts/splash.html.erb
332
+ - lib/docyard/templates/partials/_accordion.html.erb
333
+ - lib/docyard/templates/partials/_banner.html.erb
334
+ - lib/docyard/templates/partials/_breadcrumbs.html.erb
282
335
  - lib/docyard/templates/partials/_callout.html.erb
336
+ - lib/docyard/templates/partials/_card.html.erb
283
337
  - lib/docyard/templates/partials/_code_block.html.erb
338
+ - lib/docyard/templates/partials/_doc_footer.html.erb
339
+ - lib/docyard/templates/partials/_features.html.erb
340
+ - lib/docyard/templates/partials/_footer.html.erb
341
+ - lib/docyard/templates/partials/_head.html.erb
342
+ - lib/docyard/templates/partials/_header.html.erb
284
343
  - lib/docyard/templates/partials/_heading_anchor.html.erb
344
+ - lib/docyard/templates/partials/_hero.html.erb
285
345
  - lib/docyard/templates/partials/_icon.html.erb
286
346
  - lib/docyard/templates/partials/_icon_file_extension.html.erb
287
347
  - lib/docyard/templates/partials/_nav_group.html.erb
288
348
  - lib/docyard/templates/partials/_nav_item.html.erb
289
349
  - lib/docyard/templates/partials/_nav_leaf.html.erb
290
350
  - lib/docyard/templates/partials/_nav_list.html.erb
351
+ - lib/docyard/templates/partials/_nav_menu.html.erb
352
+ - lib/docyard/templates/partials/_nav_nested_section.html.erb
291
353
  - lib/docyard/templates/partials/_nav_section.html.erb
292
354
  - lib/docyard/templates/partials/_prev_next.html.erb
355
+ - lib/docyard/templates/partials/_scripts.html.erb
293
356
  - lib/docyard/templates/partials/_search_modal.html.erb
294
357
  - lib/docyard/templates/partials/_search_trigger.html.erb
295
358
  - lib/docyard/templates/partials/_sidebar.html.erb
296
359
  - lib/docyard/templates/partials/_sidebar_footer.html.erb
360
+ - lib/docyard/templates/partials/_step.html.erb
361
+ - lib/docyard/templates/partials/_tab_bar.html.erb
297
362
  - lib/docyard/templates/partials/_table_of_contents.html.erb
298
363
  - lib/docyard/templates/partials/_table_of_contents_toggle.html.erb
299
364
  - lib/docyard/templates/partials/_tabs.html.erb
@@ -1,77 +0,0 @@
1
- # Installation
2
-
3
- Get your documentation site up and running in minutes.
4
-
5
- ## Prerequisites
6
-
7
- ::: note Requirements
8
- - Ruby 3.0 or higher
9
- - Bundler (optional, for Gemfile-based projects)
10
- :::
11
-
12
- Check your Ruby version:
13
-
14
- ```bash
15
- ruby --version
16
- ```
17
-
18
- ## Install Docyard
19
-
20
- :::tabs
21
- == Gem Install
22
- ```bash
23
- gem install docyard
24
- ```
25
-
26
- == Bundler
27
- Add to your `Gemfile`:
28
-
29
- ```ruby
30
- gem 'docyard'
31
- ```
32
-
33
- Then install:
34
-
35
- ```bash
36
- bundle install
37
- ```
38
- :::
39
-
40
- ## Verify Installation
41
-
42
- Check that Docyard was installed successfully:
43
-
44
- ```bash
45
- docyard version
46
- ```
47
-
48
- ## Quick Start
49
-
50
- Initialize a new documentation project:
51
-
52
- ```bash
53
- # Create new project
54
- docyard init
55
-
56
- # Start development server
57
- docyard serve
58
- ```
59
-
60
- Visit [http://localhost:4200](http://localhost:4200) to see your documentation.
61
-
62
- ## Available Commands
63
-
64
- | Command | Description |
65
- |---------|-------------|
66
- | `docyard init` | Initialize a new documentation project |
67
- | `docyard serve` | Start development server with hot reload |
68
- | `docyard build` | Build static site for production |
69
- | `docyard preview` | Preview production build locally |
70
-
71
- ## Next Steps
72
-
73
- ::: tip What's Next?
74
- - Explore [Markdown Features](../guides/markdown-features) to see what you can do
75
- - Learn about [Configuration](../guides/configuration) options
76
- - Start writing your documentation!
77
- :::
@@ -1,202 +0,0 @@
1
- # Configuration
2
-
3
- Customize your documentation site with `docyard.yml`.
4
-
5
- ## Getting Started
6
-
7
- Docyard works without any configuration, but you can customize it by creating a `docyard.yml` file in your project root.
8
-
9
- ::: tip
10
- The `docyard init` command creates a `docyard.yml` file with helpful examples.
11
- :::
12
-
13
- ## Basic Configuration
14
-
15
- ```yaml
16
- site:
17
- title: "My Documentation"
18
- description: "Documentation for my project"
19
- ```
20
-
21
- ## Branding
22
-
23
- ### Custom Logo
24
-
25
- Add your own logo:
26
-
27
- ```yaml
28
- branding:
29
- logo: "assets/logo.svg" # Light mode logo
30
- logo_dark: "assets/logo-dark.svg" # Dark mode logo (optional)
31
- favicon: "assets/favicon.svg" # Browser tab icon
32
- ```
33
-
34
- ::: note File Paths
35
- - Paths are relative to the `docs/` directory
36
- - Or use full URLs: `https://cdn.example.com/logo.svg`
37
- - Supported formats: SVG, PNG, JPG
38
- :::
39
-
40
- ### Logo Visibility
41
-
42
- Control what appears in the header:
43
-
44
- ```yaml
45
- branding:
46
- appearance:
47
- logo: true # Show/hide logo
48
- title: true # Show/hide site title
49
- ```
50
-
51
- ## Sidebar Navigation
52
-
53
- Customize the sidebar structure and order:
54
-
55
- ```yaml
56
- sidebar:
57
- items:
58
- # Simple page reference
59
- - installation
60
-
61
- # Page with custom text
62
- - quick-start:
63
- text: "Quick Start Guide"
64
-
65
- # Page with icon
66
- - configuration:
67
- text: "Configuration"
68
- icon: "gear"
69
-
70
- # Nested group
71
- - guides:
72
- text: "User Guides"
73
- icon: "book-open"
74
- items:
75
- - markdown-features
76
- - customization
77
-
78
- # External link
79
- - text: "GitHub"
80
- link: "https://github.com/yourusername/yourproject"
81
- icon: "github-logo"
82
- target: "_blank"
83
- ```
84
-
85
- ::: tip Icons
86
- Browse available icons at [phosphoricons.com](https://phosphoricons.com). Just use the icon name (e.g., `rocket-launch`, `book-open`).
87
- :::
88
-
89
- ### Collapsible Groups
90
-
91
- Control whether groups start expanded or collapsed:
92
-
93
- ```yaml
94
- sidebar:
95
- items:
96
- - api:
97
- text: "API Reference"
98
- collapsed: true # Start collapsed
99
- items:
100
- - authentication
101
- - endpoints
102
- - errors
103
- ```
104
-
105
- ## Build Configuration
106
-
107
- Configure the build output:
108
-
109
- ```yaml
110
- build:
111
- output_dir: "dist" # Output directory for built site
112
- base_url: "/" # Base URL for deployment
113
- clean: true # Clean output directory before building
114
- ```
115
-
116
- ### Base URL
117
-
118
- Set the base URL for subdirectory deployments:
119
-
120
- ```yaml
121
- build:
122
- base_url: "/docs/" # For example.com/docs/
123
- ```
124
-
125
- ::: warning Base URL
126
- If deploying to a subdirectory, make sure base_url matches your deployment path. Otherwise assets won't load correctly.
127
- :::
128
-
129
- ## Complete Example
130
-
131
- Here's a full configuration file:
132
-
133
- ```yaml
134
- site:
135
- title: "Acme API Documentation"
136
- description: "Official API documentation for Acme"
137
-
138
- branding:
139
- logo: "assets/logo.svg"
140
- logo_dark: "assets/logo-dark.svg"
141
- favicon: "assets/favicon.svg"
142
- appearance:
143
- logo: true
144
- title: true
145
-
146
- sidebar:
147
- items:
148
- - index
149
-
150
- - getting-started:
151
- text: "Getting Started"
152
- icon: "rocket-launch"
153
- items:
154
- - installation
155
- - authentication
156
- - quick-start
157
-
158
- - guides:
159
- text: "Guides"
160
- icon: "book-open"
161
- items:
162
- - making-requests
163
- - error-handling
164
- - rate-limiting
165
-
166
- - api:
167
- text: "API Reference"
168
- icon: "code"
169
- collapsed: false
170
- items:
171
- - users
172
- - products
173
- - orders
174
-
175
- - text: "GitHub"
176
- link: "https://github.com/acme/api"
177
- icon: "github-logo"
178
- target: "_blank"
179
-
180
- build:
181
- output_dir: "dist"
182
- base_url: "/api/"
183
- clean: true
184
- ```
185
-
186
- ## Configuration Tips
187
-
188
- ::: tip Best Practices
189
- 1. **Start simple** - Add configuration as you need it
190
- 2. **Use icons consistently** - Pick a set and stick with it
191
- 3. **Organize logically** - Group related pages together
192
- 4. **Test base_url** - Preview with `docyard preview` before deploying
193
- 5. **Keep it maintainable** - Don't over-configure
194
- :::
195
-
196
- ## Next Steps
197
-
198
- ::: note
199
- - Learn about [markdown features](markdown-features)
200
- - Check the [installation guide](../getting-started/installation)
201
- - Start customizing your site!
202
- :::