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,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
- :::
@@ -1,247 +0,0 @@
1
- # Markdown Features
2
-
3
- Docyard supports GitHub Flavored Markdown (GFM) plus powerful custom components.
4
-
5
- ## Basic Formatting
6
-
7
- Use standard markdown syntax for formatting:
8
-
9
- **Bold text** with `**bold**` or `__bold__`
10
-
11
- *Italic text* with `*italic*` or `_italic_`
12
-
13
- `Inline code` with \`backticks\`
14
-
15
- ~~Strikethrough~~ with `~~text~~`
16
-
17
- ## Headings
18
-
19
- ```markdown
20
- # H1 Heading
21
- ## H2 Heading
22
- ### H3 Heading
23
- #### H4 Heading
24
- ```
25
-
26
- ## Lists
27
-
28
- Unordered lists:
29
-
30
- - Item one
31
- - Item two
32
- - Nested item
33
- - Another nested item
34
- - Item three
35
-
36
- Ordered lists:
37
-
38
- 1. First step
39
- 2. Second step
40
- 3. Third step
41
-
42
- Task lists:
43
-
44
- - [x] Completed task
45
- - [ ] Pending task
46
- - [ ] Another pending task
47
-
48
- ## Code Blocks
49
-
50
- Syntax highlighting for 100+ languages powered by Rouge:
51
-
52
- ```javascript
53
- function greet(name) {
54
- return `Hello, ${name}!`;
55
- }
56
-
57
- console.log(greet('World'));
58
- ```
59
-
60
- ```python
61
- def greet(name):
62
- return f"Hello, {name}!"
63
-
64
- print(greet('World'))
65
- ```
66
-
67
- ```ruby
68
- def greet(name)
69
- "Hello, #{name}!"
70
- end
71
-
72
- puts greet('World')
73
- ```
74
-
75
- Each code block includes a copy button for easy copying.
76
-
77
- ## Tables
78
-
79
- Create responsive tables with GFM syntax:
80
-
81
- | Feature | Supported | Notes |
82
- |---------|-----------|-------|
83
- | Syntax highlighting | ✓ | 100+ languages |
84
- | Hot reload | ✓ | Instant updates |
85
- | Dark mode | ✓ | Auto-switching |
86
- | Mobile responsive | ✓ | Works everywhere |
87
-
88
- Tables automatically wrap on mobile devices.
89
-
90
- ## Blockquotes
91
-
92
- > Standard blockquote for citations or highlights.
93
- >
94
- > Supports multiple paragraphs.
95
-
96
- ## Links
97
-
98
- [Link to a page](../getting-started/installation)
99
-
100
- [External link](https://github.com)
101
-
102
- ## Callouts
103
-
104
- Use callouts to highlight important information:
105
-
106
- ::: note
107
- Informational content that provides additional context.
108
- :::
109
-
110
- ::: tip Best Practice
111
- Helpful advice or recommendations for users.
112
- :::
113
-
114
- ::: important
115
- Critical information that requires special attention.
116
- :::
117
-
118
- ::: warning
119
- Caution about potential issues or things to watch out for.
120
- :::
121
-
122
- ::: danger
123
- Severe warnings about dangerous operations or critical issues.
124
- :::
125
-
126
- ### Custom Titles
127
-
128
- ::: tip Performance Optimization
129
- You can customize the title of any callout type.
130
- :::
131
-
132
- ### Rich Content
133
-
134
- ::: important Key Requirements
135
- Callouts support all markdown features:
136
-
137
- - **Lists** and formatting
138
- - `Code snippets`
139
- - [Links](/)
140
- - Code blocks with syntax highlighting
141
-
142
- ```ruby
143
- def example
144
- puts "Code works inside callouts!"
145
- end
146
- ```
147
- :::
148
-
149
- ## Tabs
150
-
151
- Display multiple code examples or options in tabs:
152
-
153
- :::tabs
154
- == JavaScript
155
- ```javascript
156
- const config = {
157
- apiUrl: 'https://api.example.com',
158
- timeout: 5000
159
- };
160
- ```
161
-
162
- == TypeScript
163
- ```typescript
164
- interface Config {
165
- apiUrl: string;
166
- timeout: number;
167
- }
168
-
169
- const config: Config = {
170
- apiUrl: 'https://api.example.com',
171
- timeout: 5000
172
- };
173
- ```
174
-
175
- == Ruby
176
- ```ruby
177
- config = {
178
- api_url: 'https://api.example.com',
179
- timeout: 5000
180
- }
181
- ```
182
- :::
183
-
184
- ### Package Manager Tabs
185
-
186
- Perfect for installation instructions:
187
-
188
- :::tabs
189
- == npm
190
- ```bash
191
- npm install your-package
192
- ```
193
-
194
- == yarn
195
- ```bash
196
- yarn add your-package
197
- ```
198
-
199
- == pnpm
200
- ```bash
201
- pnpm add your-package
202
- ```
203
-
204
- == bun
205
- ```bash
206
- bun add your-package
207
- ```
208
- :::
209
-
210
- Tabs automatically detect package managers and display appropriate icons.
211
-
212
- ## Icons
213
-
214
- Use inline icons from [Phosphor Icons](https://phosphoricons.com):
215
-
216
- :rocket-launch: :check: :warning: :heart: :star: :code: :book-open: :gear:
217
-
218
- Just wrap the icon name in colons:
219
-
220
- ```markdown
221
- :rocket-launch: :check: :warning:
222
- ```
223
-
224
- Browse all available icons at [phosphoricons.com](https://phosphoricons.com).
225
-
226
- ## Horizontal Rules
227
-
228
- Use three or more dashes, asterisks, or underscores:
229
-
230
- ---
231
-
232
- ## Best Practices
233
-
234
- ::: tip Writing Great Documentation
235
- 1. **Use headings hierarchically** - Don't skip levels (H1 → H3)
236
- 2. **Add code examples** - Show, don't just tell
237
- 3. **Use callouts sparingly** - Highlight only important information
238
- 4. **Keep it concise** - Respect your readers' time
239
- 5. **Link related pages** - Help users navigate your docs
240
- :::
241
-
242
- ## Next Steps
243
-
244
- ::: note
245
- - Learn how to [customize your site](configuration)
246
- - Explore the [installation guide](../getting-started/installation)
247
- :::
@@ -1,82 +0,0 @@
1
- # Welcome to Your Documentation
2
-
3
- This is your documentation homepage. Docyard transforms your Markdown files into beautiful, searchable documentation.
4
-
5
- ## Quick Example
6
-
7
- Here's what you can do with Docyard:
8
-
9
- ### Code Blocks with Syntax Highlighting
10
-
11
- ```ruby
12
- class User
13
- attr_reader :name, :email
14
-
15
- def initialize(name, email)
16
- @name = name
17
- @email = email
18
- end
19
-
20
- def greet
21
- "Hello, #{name}!"
22
- end
23
- end
24
- ```
25
-
26
- ### Callouts for Important Information
27
-
28
- ::: tip Pro Tip
29
- Use callouts to highlight important information. Available types: `note`, `tip`, `important`, `warning`, and `danger`.
30
- :::
31
-
32
- ::: warning
33
- Make sure to read the [Configuration Guide](guides/configuration) before deploying to production.
34
- :::
35
-
36
- ### Tabs for Multiple Options
37
-
38
- Show installation instructions for different package managers:
39
-
40
- :::tabs
41
- == npm
42
- ```bash
43
- npm install your-package
44
- ```
45
-
46
- == yarn
47
- ```bash
48
- yarn add your-package
49
- ```
50
-
51
- == pnpm
52
- ```bash
53
- pnpm add your-package
54
- ```
55
- :::
56
-
57
- ### Icons
58
-
59
- Use inline icons from [Phosphor Icons](https://phosphoricons.com): :rocket-launch: :check: :warning: :heart:
60
-
61
- ## Getting Started
62
-
63
- ::: note Next Steps
64
- 1. Edit the files in `docs/` to create your documentation
65
- 2. Run `docyard serve` to preview changes in real-time
66
- 3. Customize `docyard.yml` to configure branding and navigation
67
- 4. Run `docyard build` when ready to deploy
68
- :::
69
-
70
- ## Documentation Structure
71
-
72
- | Section | Description |
73
- |---------|-------------|
74
- | [Installation](getting-started/installation) | Get up and running quickly |
75
- | [Markdown Features](guides/markdown-features) | Learn about all supported features |
76
- | [Configuration](guides/configuration) | Customize appearance and navigation |
77
-
78
- ## Need Help?
79
-
80
- - Check out the [Markdown Features](guides/markdown-features) guide
81
- - Learn about [customization options](guides/configuration)
82
- - Explore the sidebar to see all available pages