docyard 0.7.0 → 0.8.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 (112) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -1
  3. data/CHANGELOG.md +20 -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/config/branding_resolver.rb +126 -17
  10. data/lib/docyard/config/constants.rb +6 -4
  11. data/lib/docyard/config/validator.rb +122 -99
  12. data/lib/docyard/config.rb +36 -43
  13. data/lib/docyard/initializer.rb +15 -76
  14. data/lib/docyard/navigation/breadcrumb_builder.rb +133 -0
  15. data/lib/docyard/navigation/prev_next_builder.rb +4 -1
  16. data/lib/docyard/navigation/sidebar/children_discoverer.rb +51 -0
  17. data/lib/docyard/navigation/sidebar/config_parser.rb +136 -108
  18. data/lib/docyard/navigation/sidebar/file_resolver.rb +78 -0
  19. data/lib/docyard/navigation/sidebar/file_system_scanner.rb +2 -1
  20. data/lib/docyard/navigation/sidebar/item.rb +45 -7
  21. data/lib/docyard/navigation/sidebar/local_config_loader.rb +51 -0
  22. data/lib/docyard/navigation/sidebar/metadata_extractor.rb +69 -0
  23. data/lib/docyard/navigation/sidebar/metadata_reader.rb +47 -0
  24. data/lib/docyard/navigation/sidebar/path_prefixer.rb +34 -0
  25. data/lib/docyard/navigation/sidebar/renderer.rb +55 -37
  26. data/lib/docyard/navigation/sidebar/sorter.rb +21 -0
  27. data/lib/docyard/navigation/sidebar/tree_builder.rb +99 -26
  28. data/lib/docyard/navigation/sidebar/tree_filter.rb +55 -0
  29. data/lib/docyard/navigation/sidebar_builder.rb +105 -36
  30. data/lib/docyard/rendering/icon_helpers.rb +13 -0
  31. data/lib/docyard/rendering/icons/phosphor.rb +23 -1
  32. data/lib/docyard/rendering/markdown.rb +5 -0
  33. data/lib/docyard/rendering/renderer.rb +74 -34
  34. data/lib/docyard/rendering/template_resolver.rb +172 -0
  35. data/lib/docyard/routing/fallback_resolver.rb +92 -0
  36. data/lib/docyard/search/build_indexer.rb +1 -1
  37. data/lib/docyard/search/dev_indexer.rb +51 -6
  38. data/lib/docyard/search/pagefind_support.rb +2 -0
  39. data/lib/docyard/server/asset_handler.rb +24 -19
  40. data/lib/docyard/server/pagefind_handler.rb +63 -0
  41. data/lib/docyard/server/preview_server.rb +1 -1
  42. data/lib/docyard/server/rack_application.rb +81 -64
  43. data/lib/docyard/templates/assets/css/code.css +18 -51
  44. data/lib/docyard/templates/assets/css/components/breadcrumbs.css +143 -0
  45. data/lib/docyard/templates/assets/css/components/callout.css +67 -67
  46. data/lib/docyard/templates/assets/css/components/code-block.css +180 -282
  47. data/lib/docyard/templates/assets/css/components/heading-anchor.css +28 -15
  48. data/lib/docyard/templates/assets/css/components/icon.css +0 -1
  49. data/lib/docyard/templates/assets/css/components/logo.css +0 -2
  50. data/lib/docyard/templates/assets/css/components/nav-menu.css +237 -0
  51. data/lib/docyard/templates/assets/css/components/navigation.css +186 -167
  52. data/lib/docyard/templates/assets/css/components/prev-next.css +76 -47
  53. data/lib/docyard/templates/assets/css/components/search.css +186 -174
  54. data/lib/docyard/templates/assets/css/components/tab-bar.css +163 -0
  55. data/lib/docyard/templates/assets/css/components/table-of-contents.css +127 -114
  56. data/lib/docyard/templates/assets/css/components/tabs.css +119 -160
  57. data/lib/docyard/templates/assets/css/components/theme-toggle.css +48 -44
  58. data/lib/docyard/templates/assets/css/landing.css +815 -0
  59. data/lib/docyard/templates/assets/css/layout.css +489 -87
  60. data/lib/docyard/templates/assets/css/main.css +1 -3
  61. data/lib/docyard/templates/assets/css/markdown.css +111 -93
  62. data/lib/docyard/templates/assets/css/reset.css +0 -3
  63. data/lib/docyard/templates/assets/css/typography.css +43 -41
  64. data/lib/docyard/templates/assets/css/variables.css +268 -208
  65. data/lib/docyard/templates/assets/favicon.svg +7 -8
  66. data/lib/docyard/templates/assets/fonts/Inter-Variable.ttf +0 -0
  67. data/lib/docyard/templates/assets/js/components/code-block.js +24 -42
  68. data/lib/docyard/templates/assets/js/components/heading-anchor.js +26 -24
  69. data/lib/docyard/templates/assets/js/components/navigation.js +181 -70
  70. data/lib/docyard/templates/assets/js/components/search.js +0 -75
  71. data/lib/docyard/templates/assets/js/components/sidebar-toggle.js +29 -0
  72. data/lib/docyard/templates/assets/js/components/tab-navigation.js +145 -0
  73. data/lib/docyard/templates/assets/js/components/table-of-contents.js +153 -66
  74. data/lib/docyard/templates/assets/js/components/tabs.js +31 -69
  75. data/lib/docyard/templates/assets/js/theme.js +0 -3
  76. data/lib/docyard/templates/assets/logo-dark.svg +8 -2
  77. data/lib/docyard/templates/assets/logo.svg +7 -4
  78. data/lib/docyard/templates/config/docyard.yml.erb +37 -34
  79. data/lib/docyard/templates/errors/404.html.erb +1 -1
  80. data/lib/docyard/templates/errors/500.html.erb +1 -1
  81. data/lib/docyard/templates/layouts/default.html.erb +18 -67
  82. data/lib/docyard/templates/layouts/splash.html.erb +176 -0
  83. data/lib/docyard/templates/partials/_breadcrumbs.html.erb +24 -0
  84. data/lib/docyard/templates/partials/_code_block.html.erb +5 -3
  85. data/lib/docyard/templates/partials/_doc_footer.html.erb +25 -0
  86. data/lib/docyard/templates/partials/_features.html.erb +15 -0
  87. data/lib/docyard/templates/partials/_footer.html.erb +42 -0
  88. data/lib/docyard/templates/partials/_head.html.erb +22 -0
  89. data/lib/docyard/templates/partials/_header.html.erb +49 -0
  90. data/lib/docyard/templates/partials/_heading_anchor.html.erb +3 -1
  91. data/lib/docyard/templates/partials/_hero.html.erb +27 -0
  92. data/lib/docyard/templates/partials/_nav_group.html.erb +25 -11
  93. data/lib/docyard/templates/partials/_nav_leaf.html.erb +1 -1
  94. data/lib/docyard/templates/partials/_nav_menu.html.erb +42 -0
  95. data/lib/docyard/templates/partials/_nav_nested_section.html.erb +11 -0
  96. data/lib/docyard/templates/partials/_nav_section.html.erb +1 -1
  97. data/lib/docyard/templates/partials/_prev_next.html.erb +8 -2
  98. data/lib/docyard/templates/partials/_scripts.html.erb +7 -0
  99. data/lib/docyard/templates/partials/_search_modal.html.erb +2 -6
  100. data/lib/docyard/templates/partials/_search_trigger.html.erb +2 -6
  101. data/lib/docyard/templates/partials/_sidebar.html.erb +21 -4
  102. data/lib/docyard/templates/partials/_tab_bar.html.erb +25 -0
  103. data/lib/docyard/templates/partials/_table_of_contents.html.erb +12 -12
  104. data/lib/docyard/templates/partials/_table_of_contents_toggle.html.erb +1 -3
  105. data/lib/docyard/templates/partials/_tabs.html.erb +2 -2
  106. data/lib/docyard/templates/partials/_theme_toggle.html.erb +2 -11
  107. data/lib/docyard/version.rb +1 -1
  108. metadata +33 -5
  109. data/lib/docyard/templates/markdown/getting-started/installation.md.erb +0 -77
  110. data/lib/docyard/templates/markdown/guides/configuration.md.erb +0 -202
  111. data/lib/docyard/templates/markdown/guides/markdown-features.md.erb +0 -247
  112. data/lib/docyard/templates/markdown/index.md.erb +0 -82
@@ -1,13 +1,27 @@
1
1
  <% collapsed = @collapsed || false %>
2
- <button class="nav-group-toggle" aria-expanded="<%= collapsed ? 'false' : 'true' %>" type="button">
3
- <span class="nav-group-title">
4
- <% if @icon %>
5
- <span class="nav-item-icon"><%= icon(@icon) %></span>
6
- <% end %>
7
- <span class="nav-item-text"><%= @title %></span>
8
- </span>
9
- <span class="nav-group-icon"><%= icon(:caret_right) %></span>
10
- </button>
11
- <div class="nav-group-children<%= ' collapsed' if collapsed %>">
12
- <%= @children_html %>
2
+ <div class="nav-group" data-default-collapsed="<%= collapsed %>">
3
+ <% if @has_index && @path %>
4
+ <a href="<%= link_path(@path) %>" class="nav-group-header nav-group-header--link<%= ' active' if @active %>" data-nav-toggle aria-expanded="<%= collapsed ? 'false' : 'true' %>">
5
+ <span class="nav-group-title">
6
+ <% if @icon %>
7
+ <span class="nav-item-icon"><%= icon(@icon) %></span>
8
+ <% end %>
9
+ <span class="nav-item-text"><%= @title %></span>
10
+ </span>
11
+ <span class="nav-group-icon"><%= icon(:caret_right) %></span>
12
+ </a>
13
+ <% else %>
14
+ <button class="nav-group-header nav-group-header--button" type="button" data-nav-toggle aria-expanded="<%= collapsed ? 'false' : 'true' %>" aria-label="Toggle <%= @title %>">
15
+ <span class="nav-group-title">
16
+ <% if @icon %>
17
+ <span class="nav-item-icon"><%= icon(@icon) %></span>
18
+ <% end %>
19
+ <span class="nav-item-text"><%= @title %></span>
20
+ </span>
21
+ <span class="nav-group-icon"><%= icon(:caret_right) %></span>
22
+ </button>
23
+ <% end %>
24
+ <div class="nav-group-children<%= ' collapsed' if collapsed %>">
25
+ <%= @children_html %>
26
+ </div>
13
27
  </div>
@@ -1,4 +1,4 @@
1
- <a href="<%= link_path(@path) %>"<%= ' class="active"' if @active %><%= " target=\"#{@target}\" rel=\"noopener noreferrer\"" if @target && @target != "_self" %>>
1
+ <a href="<%= link_path(@path) %>"<%= ' class="active"' if @active %> title="<%= @title %>"<%= " target=\"#{@target}\" rel=\"noopener noreferrer\"" if @target && @target != "_self" %>>
2
2
  <% if @icon %>
3
3
  <span class="nav-item-icon"><%= icon(@icon) %></span>
4
4
  <% end %>
@@ -0,0 +1,42 @@
1
+ <% if @has_tabs %>
2
+ <div class="nav-menu-overlay" id="navMenuOverlay" aria-hidden="true"></div>
3
+ <div class="nav-menu-dropdown" id="navMenuDropdown" role="dialog" aria-label="Navigation menu">
4
+ <div class="nav-menu-content">
5
+ <% @tabs.each do |tab| %>
6
+ <a href="<%= tab[:external] ? tab[:href] : link_path(tab[:href]) %>"
7
+ class="nav-menu-item<%= ' is-active' if tab[:active] %>"
8
+ <%= 'target="_blank" rel="noopener noreferrer"' if tab[:external] %>>
9
+ <% if tab[:icon] %>
10
+ <span class="nav-menu-item-icon"><%= icon(tab[:icon].to_sym) %></span>
11
+ <% end %>
12
+ <span class="nav-menu-item-text"><%= tab[:text] %></span>
13
+ <% if tab[:external] %>
14
+ <svg class="nav-menu-item-external" width="16" height="16" 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
+
23
+ <% if @header_ctas&.any? %>
24
+ <div class="nav-menu-divider"></div>
25
+ <div class="nav-menu-ctas">
26
+ <% @header_ctas.sort_by { |cta| cta[:variant] == 'secondary' ? 0 : 1 }.each do |cta| %>
27
+ <a href="<%= cta[:external] ? cta[:href] : link_path(cta[:href]) %>"
28
+ class="nav-menu-cta nav-menu-cta--<%= cta[:variant] || 'primary' %>"
29
+ <%= 'target="_blank" rel="noopener noreferrer"' if cta[:external] %>>
30
+ <%= cta[:text] %>
31
+ <% if cta[:variant] != 'secondary' %>
32
+ <svg class="nav-menu-cta-arrow" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
33
+ <path d="M9 5l7 7-7 7"/>
34
+ </svg>
35
+ <% end %>
36
+ </a>
37
+ <% end %>
38
+ </div>
39
+ <% end %>
40
+ </div>
41
+ </div>
42
+ <% end %>
@@ -0,0 +1,11 @@
1
+ <div class="nav-nested-section">
2
+ <h6 class="nav-nested-section-title">
3
+ <% if @icon %>
4
+ <span class="nav-item-icon"><%= icon(@icon) %></span>
5
+ <% end %>
6
+ <span class="nav-item-text"><%= @title %></span>
7
+ </h6>
8
+ <div class="nav-nested-section-children">
9
+ <%= @children_html %>
10
+ </div>
11
+ </div>
@@ -1,6 +1,6 @@
1
1
  <div class="nav-section">
2
2
  <% if @section_name %>
3
- <div class="nav-section-title"><%= @section_name %></div>
3
+ <h5 class="nav-section-title"><% if @section_icon %><span class="nav-section-icon"><%= icon(@section_icon) %></span> <% end %><%= @section_name %></h5>
4
4
  <% end %>
5
5
  <%= @section_content %>
6
6
  </div>
@@ -5,7 +5,10 @@
5
5
 
6
6
  <% if @prev %>
7
7
  <a href="<%= link_path(@prev[:path]) %>" class="pager-link prev" title="<%= @prev[:title] %>">
8
- <span class="pager-label"><%= @prev_text %></span>
8
+ <span class="pager-label">
9
+ <%= icon("arrow-left") %>
10
+ <%= @prev_text %>
11
+ </span>
9
12
  <span class="pager-title"><%= @prev[:title] %></span>
10
13
  </a>
11
14
  <% else %>
@@ -14,7 +17,10 @@
14
17
 
15
18
  <% if @next %>
16
19
  <a href="<%= link_path(@next[:path]) %>" class="pager-link next" title="<%= @next[:title] %>">
17
- <span class="pager-label"><%= @next_text %></span>
20
+ <span class="pager-label">
21
+ <%= @next_text %>
22
+ <%= icon("arrow-right") %>
23
+ </span>
18
24
  <span class="pager-title"><%= @next[:title] %></span>
19
25
  </a>
20
26
  <% end %>
@@ -0,0 +1,7 @@
1
+ <% if @search_enabled %>
2
+ <%= render_partial('_search_modal') %>
3
+ <% end %>
4
+
5
+ <script src="/_docyard/js/theme.js"></script>
6
+ <script src="/_docyard/js/components.js"></script>
7
+ <script src="/_docyard/js/reload.js"></script>
@@ -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,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.8.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.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sanif Himani
@@ -217,14 +217,24 @@ files:
217
217
  - lib/docyard/config/constants.rb
218
218
  - lib/docyard/config/validator.rb
219
219
  - lib/docyard/initializer.rb
220
+ - lib/docyard/navigation/breadcrumb_builder.rb
220
221
  - lib/docyard/navigation/prev_next_builder.rb
222
+ - lib/docyard/navigation/sidebar/children_discoverer.rb
221
223
  - lib/docyard/navigation/sidebar/config_parser.rb
224
+ - lib/docyard/navigation/sidebar/file_resolver.rb
222
225
  - lib/docyard/navigation/sidebar/file_system_scanner.rb
223
226
  - lib/docyard/navigation/sidebar/item.rb
227
+ - lib/docyard/navigation/sidebar/local_config_loader.rb
228
+ - lib/docyard/navigation/sidebar/metadata_extractor.rb
229
+ - lib/docyard/navigation/sidebar/metadata_reader.rb
230
+ - lib/docyard/navigation/sidebar/path_prefixer.rb
224
231
  - lib/docyard/navigation/sidebar/renderer.rb
232
+ - lib/docyard/navigation/sidebar/sorter.rb
225
233
  - lib/docyard/navigation/sidebar/title_extractor.rb
226
234
  - lib/docyard/navigation/sidebar/tree_builder.rb
235
+ - lib/docyard/navigation/sidebar/tree_filter.rb
227
236
  - lib/docyard/navigation/sidebar_builder.rb
237
+ - lib/docyard/rendering/icon_helpers.rb
228
238
  - lib/docyard/rendering/icons.rb
229
239
  - lib/docyard/rendering/icons/LICENSE.phosphor
230
240
  - lib/docyard/rendering/icons/file_types.rb
@@ -232,28 +242,35 @@ files:
232
242
  - lib/docyard/rendering/language_mapping.rb
233
243
  - lib/docyard/rendering/markdown.rb
234
244
  - lib/docyard/rendering/renderer.rb
245
+ - lib/docyard/rendering/template_resolver.rb
246
+ - lib/docyard/routing/fallback_resolver.rb
235
247
  - lib/docyard/search/build_indexer.rb
236
248
  - lib/docyard/search/dev_indexer.rb
237
249
  - lib/docyard/search/pagefind_support.rb
238
250
  - lib/docyard/server/asset_handler.rb
239
251
  - lib/docyard/server/dev_server.rb
240
252
  - lib/docyard/server/file_watcher.rb
253
+ - lib/docyard/server/pagefind_handler.rb
241
254
  - lib/docyard/server/preview_server.rb
242
255
  - lib/docyard/server/rack_application.rb
243
256
  - lib/docyard/server/resolution_result.rb
244
257
  - lib/docyard/server/router.rb
245
258
  - lib/docyard/templates/assets/css/code.css
259
+ - lib/docyard/templates/assets/css/components/breadcrumbs.css
246
260
  - lib/docyard/templates/assets/css/components/callout.css
247
261
  - lib/docyard/templates/assets/css/components/code-block.css
248
262
  - lib/docyard/templates/assets/css/components/heading-anchor.css
249
263
  - lib/docyard/templates/assets/css/components/icon.css
250
264
  - lib/docyard/templates/assets/css/components/logo.css
265
+ - lib/docyard/templates/assets/css/components/nav-menu.css
251
266
  - lib/docyard/templates/assets/css/components/navigation.css
252
267
  - lib/docyard/templates/assets/css/components/prev-next.css
253
268
  - lib/docyard/templates/assets/css/components/search.css
269
+ - lib/docyard/templates/assets/css/components/tab-bar.css
254
270
  - lib/docyard/templates/assets/css/components/table-of-contents.css
255
271
  - lib/docyard/templates/assets/css/components/tabs.css
256
272
  - lib/docyard/templates/assets/css/components/theme-toggle.css
273
+ - lib/docyard/templates/assets/css/landing.css
257
274
  - lib/docyard/templates/assets/css/layout.css
258
275
  - lib/docyard/templates/assets/css/main.css
259
276
  - lib/docyard/templates/assets/css/markdown.css
@@ -261,10 +278,13 @@ files:
261
278
  - lib/docyard/templates/assets/css/typography.css
262
279
  - lib/docyard/templates/assets/css/variables.css
263
280
  - lib/docyard/templates/assets/favicon.svg
281
+ - lib/docyard/templates/assets/fonts/Inter-Variable.ttf
264
282
  - lib/docyard/templates/assets/js/components/code-block.js
265
283
  - lib/docyard/templates/assets/js/components/heading-anchor.js
266
284
  - lib/docyard/templates/assets/js/components/navigation.js
267
285
  - lib/docyard/templates/assets/js/components/search.js
286
+ - lib/docyard/templates/assets/js/components/sidebar-toggle.js
287
+ - lib/docyard/templates/assets/js/components/tab-navigation.js
268
288
  - lib/docyard/templates/assets/js/components/table-of-contents.js
269
289
  - lib/docyard/templates/assets/js/components/tabs.js
270
290
  - lib/docyard/templates/assets/js/reload.js
@@ -275,25 +295,33 @@ files:
275
295
  - lib/docyard/templates/errors/404.html.erb
276
296
  - lib/docyard/templates/errors/500.html.erb
277
297
  - 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
298
+ - lib/docyard/templates/layouts/splash.html.erb
299
+ - lib/docyard/templates/partials/_breadcrumbs.html.erb
282
300
  - lib/docyard/templates/partials/_callout.html.erb
283
301
  - lib/docyard/templates/partials/_code_block.html.erb
302
+ - lib/docyard/templates/partials/_doc_footer.html.erb
303
+ - lib/docyard/templates/partials/_features.html.erb
304
+ - lib/docyard/templates/partials/_footer.html.erb
305
+ - lib/docyard/templates/partials/_head.html.erb
306
+ - lib/docyard/templates/partials/_header.html.erb
284
307
  - lib/docyard/templates/partials/_heading_anchor.html.erb
308
+ - lib/docyard/templates/partials/_hero.html.erb
285
309
  - lib/docyard/templates/partials/_icon.html.erb
286
310
  - lib/docyard/templates/partials/_icon_file_extension.html.erb
287
311
  - lib/docyard/templates/partials/_nav_group.html.erb
288
312
  - lib/docyard/templates/partials/_nav_item.html.erb
289
313
  - lib/docyard/templates/partials/_nav_leaf.html.erb
290
314
  - lib/docyard/templates/partials/_nav_list.html.erb
315
+ - lib/docyard/templates/partials/_nav_menu.html.erb
316
+ - lib/docyard/templates/partials/_nav_nested_section.html.erb
291
317
  - lib/docyard/templates/partials/_nav_section.html.erb
292
318
  - lib/docyard/templates/partials/_prev_next.html.erb
319
+ - lib/docyard/templates/partials/_scripts.html.erb
293
320
  - lib/docyard/templates/partials/_search_modal.html.erb
294
321
  - lib/docyard/templates/partials/_search_trigger.html.erb
295
322
  - lib/docyard/templates/partials/_sidebar.html.erb
296
323
  - lib/docyard/templates/partials/_sidebar_footer.html.erb
324
+ - lib/docyard/templates/partials/_tab_bar.html.erb
297
325
  - lib/docyard/templates/partials/_table_of_contents.html.erb
298
326
  - lib/docyard/templates/partials/_table_of_contents_toggle.html.erb
299
327
  - 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
- :::