docyard 0.6.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 (177) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -1
  3. data/CHANGELOG.md +34 -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 +82 -50
  8. data/lib/docyard/builder.rb +20 -10
  9. data/lib/docyard/cli.rb +6 -3
  10. data/lib/docyard/components/aliases.rb +29 -0
  11. data/lib/docyard/components/processors/callout_processor.rb +124 -0
  12. data/lib/docyard/components/processors/code_block_diff_preprocessor.rb +106 -0
  13. data/lib/docyard/components/processors/code_block_focus_preprocessor.rb +79 -0
  14. data/lib/docyard/components/processors/code_block_options_preprocessor.rb +78 -0
  15. data/lib/docyard/components/processors/code_block_processor.rb +175 -0
  16. data/lib/docyard/components/processors/code_snippet_import_preprocessor.rb +127 -0
  17. data/lib/docyard/components/processors/heading_anchor_processor.rb +39 -0
  18. data/lib/docyard/components/processors/icon_processor.rb +53 -0
  19. data/lib/docyard/components/processors/table_of_contents_processor.rb +68 -0
  20. data/lib/docyard/components/processors/table_wrapper_processor.rb +22 -0
  21. data/lib/docyard/components/processors/tabs_processor.rb +48 -0
  22. data/lib/docyard/components/support/code_block/feature_extractor.rb +117 -0
  23. data/lib/docyard/components/support/code_block/icon_detector.rb +44 -0
  24. data/lib/docyard/components/support/code_block/line_parser.rb +84 -0
  25. data/lib/docyard/components/support/code_block/line_wrapper.rb +50 -0
  26. data/lib/docyard/components/support/code_block/patterns.rb +55 -0
  27. data/lib/docyard/components/support/code_detector.rb +61 -0
  28. data/lib/docyard/components/support/tabs/icon_detector.rb +62 -0
  29. data/lib/docyard/components/support/tabs/parser.rb +195 -0
  30. data/lib/docyard/components/support/tabs/range_finder.rb +46 -0
  31. data/lib/docyard/config/branding_resolver.rb +183 -0
  32. data/lib/docyard/{constants.rb → config/constants.rb} +7 -4
  33. data/lib/docyard/config/validator.rb +122 -99
  34. data/lib/docyard/config.rb +38 -36
  35. data/lib/docyard/initializer.rb +15 -76
  36. data/lib/docyard/navigation/breadcrumb_builder.rb +133 -0
  37. data/lib/docyard/{prev_next_builder.rb → navigation/prev_next_builder.rb} +6 -3
  38. data/lib/docyard/navigation/sidebar/children_discoverer.rb +51 -0
  39. data/lib/docyard/navigation/sidebar/config_parser.rb +208 -0
  40. data/lib/docyard/navigation/sidebar/file_resolver.rb +78 -0
  41. data/lib/docyard/{sidebar → navigation/sidebar}/file_system_scanner.rb +2 -1
  42. data/lib/docyard/navigation/sidebar/item.rb +96 -0
  43. data/lib/docyard/navigation/sidebar/local_config_loader.rb +51 -0
  44. data/lib/docyard/navigation/sidebar/metadata_extractor.rb +69 -0
  45. data/lib/docyard/navigation/sidebar/metadata_reader.rb +47 -0
  46. data/lib/docyard/navigation/sidebar/path_prefixer.rb +34 -0
  47. data/lib/docyard/navigation/sidebar/renderer.rb +144 -0
  48. data/lib/docyard/navigation/sidebar/sorter.rb +21 -0
  49. data/lib/docyard/navigation/sidebar/tree_builder.rb +139 -0
  50. data/lib/docyard/navigation/sidebar/tree_filter.rb +55 -0
  51. data/lib/docyard/navigation/sidebar_builder.rb +159 -0
  52. data/lib/docyard/rendering/icon_helpers.rb +13 -0
  53. data/lib/docyard/{icons → rendering/icons}/phosphor.rb +26 -1
  54. data/lib/docyard/{markdown.rb → rendering/markdown.rb} +19 -13
  55. data/lib/docyard/rendering/renderer.rb +163 -0
  56. data/lib/docyard/rendering/template_resolver.rb +172 -0
  57. data/lib/docyard/routing/fallback_resolver.rb +92 -0
  58. data/lib/docyard/search/build_indexer.rb +74 -0
  59. data/lib/docyard/search/dev_indexer.rb +155 -0
  60. data/lib/docyard/search/pagefind_support.rb +33 -0
  61. data/lib/docyard/{asset_handler.rb → server/asset_handler.rb} +24 -19
  62. data/lib/docyard/{server.rb → server/dev_server.rb} +32 -9
  63. data/lib/docyard/server/pagefind_handler.rb +63 -0
  64. data/lib/docyard/{preview_server.rb → server/preview_server.rb} +2 -2
  65. data/lib/docyard/server/rack_application.rb +192 -0
  66. data/lib/docyard/server/resolution_result.rb +29 -0
  67. data/lib/docyard/{router.rb → server/router.rb} +4 -4
  68. data/lib/docyard/templates/assets/css/code.css +18 -51
  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/code-block.css +180 -282
  72. data/lib/docyard/templates/assets/css/components/heading-anchor.css +28 -15
  73. data/lib/docyard/templates/assets/css/components/icon.css +0 -1
  74. data/lib/docyard/templates/assets/css/components/logo.css +0 -2
  75. data/lib/docyard/templates/assets/css/components/nav-menu.css +237 -0
  76. data/lib/docyard/templates/assets/css/components/navigation.css +186 -167
  77. data/lib/docyard/templates/assets/css/components/prev-next.css +76 -47
  78. data/lib/docyard/templates/assets/css/components/search.css +561 -0
  79. data/lib/docyard/templates/assets/css/components/tab-bar.css +163 -0
  80. data/lib/docyard/templates/assets/css/components/table-of-contents.css +127 -114
  81. data/lib/docyard/templates/assets/css/components/tabs.css +119 -160
  82. data/lib/docyard/templates/assets/css/components/theme-toggle.css +48 -44
  83. data/lib/docyard/templates/assets/css/landing.css +815 -0
  84. data/lib/docyard/templates/assets/css/layout.css +503 -87
  85. data/lib/docyard/templates/assets/css/main.css +1 -3
  86. data/lib/docyard/templates/assets/css/markdown.css +111 -93
  87. data/lib/docyard/templates/assets/css/reset.css +0 -3
  88. data/lib/docyard/templates/assets/css/typography.css +43 -41
  89. data/lib/docyard/templates/assets/css/variables.css +268 -208
  90. data/lib/docyard/templates/assets/favicon.svg +7 -8
  91. data/lib/docyard/templates/assets/fonts/Inter-Variable.ttf +0 -0
  92. data/lib/docyard/templates/assets/js/components/code-block.js +24 -42
  93. data/lib/docyard/templates/assets/js/components/heading-anchor.js +26 -24
  94. data/lib/docyard/templates/assets/js/components/navigation.js +181 -70
  95. data/lib/docyard/templates/assets/js/components/search.js +610 -0
  96. data/lib/docyard/templates/assets/js/components/sidebar-toggle.js +29 -0
  97. data/lib/docyard/templates/assets/js/components/tab-navigation.js +145 -0
  98. data/lib/docyard/templates/assets/js/components/table-of-contents.js +153 -66
  99. data/lib/docyard/templates/assets/js/components/tabs.js +31 -69
  100. data/lib/docyard/templates/assets/js/theme.js +0 -3
  101. data/lib/docyard/templates/assets/logo-dark.svg +8 -2
  102. data/lib/docyard/templates/assets/logo.svg +7 -4
  103. data/lib/docyard/templates/config/docyard.yml.erb +37 -34
  104. data/lib/docyard/templates/errors/404.html.erb +1 -1
  105. data/lib/docyard/templates/errors/500.html.erb +1 -1
  106. data/lib/docyard/templates/layouts/default.html.erb +19 -56
  107. data/lib/docyard/templates/layouts/splash.html.erb +176 -0
  108. data/lib/docyard/templates/partials/_breadcrumbs.html.erb +24 -0
  109. data/lib/docyard/templates/partials/_code_block.html.erb +6 -4
  110. data/lib/docyard/templates/partials/_doc_footer.html.erb +25 -0
  111. data/lib/docyard/templates/partials/_features.html.erb +15 -0
  112. data/lib/docyard/templates/partials/_footer.html.erb +42 -0
  113. data/lib/docyard/templates/partials/_head.html.erb +22 -0
  114. data/lib/docyard/templates/partials/_header.html.erb +49 -0
  115. data/lib/docyard/templates/partials/_heading_anchor.html.erb +3 -1
  116. data/lib/docyard/templates/partials/_hero.html.erb +27 -0
  117. data/lib/docyard/templates/partials/_nav_group.html.erb +25 -11
  118. data/lib/docyard/templates/partials/_nav_leaf.html.erb +1 -1
  119. data/lib/docyard/templates/partials/_nav_menu.html.erb +42 -0
  120. data/lib/docyard/templates/partials/_nav_nested_section.html.erb +11 -0
  121. data/lib/docyard/templates/partials/_nav_section.html.erb +1 -1
  122. data/lib/docyard/templates/partials/_prev_next.html.erb +9 -3
  123. data/lib/docyard/templates/partials/_scripts.html.erb +7 -0
  124. data/lib/docyard/templates/partials/_search_modal.html.erb +41 -0
  125. data/lib/docyard/templates/partials/_search_trigger.html.erb +18 -0
  126. data/lib/docyard/templates/partials/_sidebar.html.erb +21 -4
  127. data/lib/docyard/templates/partials/_tab_bar.html.erb +25 -0
  128. data/lib/docyard/templates/partials/_table_of_contents.html.erb +12 -12
  129. data/lib/docyard/templates/partials/_table_of_contents_toggle.html.erb +1 -3
  130. data/lib/docyard/templates/partials/_tabs.html.erb +2 -2
  131. data/lib/docyard/templates/partials/_theme_toggle.html.erb +2 -11
  132. data/lib/docyard/utils/html_helpers.rb +14 -0
  133. data/lib/docyard/utils/path_resolver.rb +2 -1
  134. data/lib/docyard/utils/url_helpers.rb +20 -0
  135. data/lib/docyard/version.rb +1 -1
  136. data/lib/docyard.rb +22 -15
  137. metadata +89 -50
  138. data/lib/docyard/components/callout_processor.rb +0 -121
  139. data/lib/docyard/components/code_block_diff_preprocessor.rb +0 -104
  140. data/lib/docyard/components/code_block_feature_extractor.rb +0 -113
  141. data/lib/docyard/components/code_block_focus_preprocessor.rb +0 -77
  142. data/lib/docyard/components/code_block_icon_detector.rb +0 -40
  143. data/lib/docyard/components/code_block_line_wrapper.rb +0 -46
  144. data/lib/docyard/components/code_block_options_preprocessor.rb +0 -76
  145. data/lib/docyard/components/code_block_patterns.rb +0 -51
  146. data/lib/docyard/components/code_block_processor.rb +0 -176
  147. data/lib/docyard/components/code_detector.rb +0 -59
  148. data/lib/docyard/components/code_line_parser.rb +0 -80
  149. data/lib/docyard/components/code_snippet_import_preprocessor.rb +0 -125
  150. data/lib/docyard/components/heading_anchor_processor.rb +0 -34
  151. data/lib/docyard/components/icon_detector.rb +0 -57
  152. data/lib/docyard/components/icon_processor.rb +0 -51
  153. data/lib/docyard/components/table_of_contents_processor.rb +0 -64
  154. data/lib/docyard/components/table_wrapper_processor.rb +0 -18
  155. data/lib/docyard/components/tabs_parser.rb +0 -191
  156. data/lib/docyard/components/tabs_processor.rb +0 -44
  157. data/lib/docyard/components/tabs_range_finder.rb +0 -42
  158. data/lib/docyard/rack_application.rb +0 -172
  159. data/lib/docyard/renderer.rb +0 -120
  160. data/lib/docyard/routing/resolution_result.rb +0 -31
  161. data/lib/docyard/sidebar/config_parser.rb +0 -180
  162. data/lib/docyard/sidebar/item.rb +0 -58
  163. data/lib/docyard/sidebar/renderer.rb +0 -137
  164. data/lib/docyard/sidebar/tree_builder.rb +0 -59
  165. data/lib/docyard/sidebar_builder.rb +0 -102
  166. data/lib/docyard/templates/markdown/getting-started/installation.md.erb +0 -77
  167. data/lib/docyard/templates/markdown/guides/configuration.md.erb +0 -202
  168. data/lib/docyard/templates/markdown/guides/markdown-features.md.erb +0 -247
  169. data/lib/docyard/templates/markdown/index.md.erb +0 -82
  170. /data/lib/docyard/{sidebar → navigation/sidebar}/title_extractor.rb +0 -0
  171. /data/lib/docyard/{icons → rendering/icons}/LICENSE.phosphor +0 -0
  172. /data/lib/docyard/{icons → rendering/icons}/file_types.rb +0 -0
  173. /data/lib/docyard/{icons.rb → rendering/icons.rb} +0 -0
  174. /data/lib/docyard/{language_mapping.rb → rendering/language_mapping.rb} +0 -0
  175. /data/lib/docyard/{file_watcher.rb → server/file_watcher.rb} +0 -0
  176. /data/lib/docyard/{errors.rb → utils/errors.rb} +0 -0
  177. /data/lib/docyard/{logging.rb → utils/logging.rb} +0 -0
@@ -1,32 +1,27 @@
1
- /* Code Block Styles */
2
-
3
- /* Code blocks */
4
1
  .content pre {
5
- margin: var(--space-6) 0;
6
- border-radius: var(--radius-lg);
2
+ margin: var(--spacing-6) 0;
3
+ border-radius: var(--radius-2xl);
7
4
  overflow-x: auto;
8
- border: 1px solid var(--color-border);
9
- box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.03);
5
+ overscroll-behavior-x: contain;
10
6
  }
11
7
 
12
8
  .content pre code {
13
9
  display: block;
14
- padding: var(--space-4);
10
+ padding: var(--spacing-4);
15
11
  font-family: var(--font-mono);
16
- font-size: var(--font-size-sm);
17
- line-height: var(--line-height-relaxed);
18
- background-color: var(--color-code-bg);
19
- color: var(--color-code-text);
12
+ font-size: var(--text-sm);
13
+ line-height: var(--leading-relaxed);
14
+ background-color: oklch(from var(--input) l c h / 30%);
15
+ color: var(--code-foreground);
20
16
  overflow-x: auto;
17
+ overscroll-behavior-x: contain;
21
18
  }
22
19
 
23
- /* Syntax highlighting - GitHub style */
24
20
  .highlight {
25
- margin: var(--space-6) 0;
26
- background-color: var(--color-code-bg);
27
- border-radius: var(--radius-lg);
28
- border: 1px solid var(--color-border);
29
- box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.03);
21
+ margin: var(--spacing-6) 0;
22
+ background-color: oklch(from var(--input) l c h / 30%);
23
+ border-radius: var(--radius-2xl);
24
+ border: 1px solid var(--input);
30
25
  }
31
26
 
32
27
  .highlight pre {
@@ -44,7 +39,7 @@
44
39
 
45
40
  .highlight {
46
41
  color: #24292f;
47
- background-color: #f6f8fa;
42
+ background-color: oklch(from var(--input) l c h / 30%);
48
43
  }
49
44
 
50
45
  .highlight .w {
@@ -52,7 +47,6 @@
52
47
  background-color: transparent;
53
48
  }
54
49
 
55
- /* Keywords */
56
50
  .highlight .k,
57
51
  .highlight .kd,
58
52
  .highlight .kn,
@@ -72,7 +66,6 @@
72
66
  background-color: #ffebe9;
73
67
  }
74
68
 
75
- /* Built-in names */
76
69
  .highlight .nb,
77
70
  .highlight .nc,
78
71
  .highlight .no,
@@ -80,7 +73,6 @@
80
73
  color: #953800;
81
74
  }
82
75
 
83
- /* Strings and regex */
84
76
  .highlight .sr,
85
77
  .highlight .na,
86
78
  .highlight .nt {
@@ -97,7 +89,6 @@
97
89
  font-style: italic;
98
90
  }
99
91
 
100
- /* Constants and literals */
101
92
  .highlight .kc,
102
93
  .highlight .l,
103
94
  .highlight .ld,
@@ -117,7 +108,6 @@
117
108
  color: #0550ae;
118
109
  }
119
110
 
120
- /* Variables */
121
111
  .highlight .nv,
122
112
  .highlight .vc,
123
113
  .highlight .vg,
@@ -126,20 +116,17 @@
126
116
  color: #0550ae;
127
117
  }
128
118
 
129
- /* Operators */
130
119
  .highlight .o,
131
120
  .highlight .ow {
132
121
  color: #0550ae;
133
122
  }
134
123
 
135
- /* Headers and subheaders in diffs */
136
124
  .highlight .gh,
137
125
  .highlight .gu {
138
126
  color: #0550ae;
139
127
  font-weight: bold;
140
128
  }
141
129
 
142
- /* Strings */
143
130
  .highlight .s,
144
131
  .highlight .sa,
145
132
  .highlight .sc,
@@ -154,20 +141,17 @@
154
141
  color: #0a3069;
155
142
  }
156
143
 
157
- /* Decorators and functions */
158
144
  .highlight .nd,
159
145
  .highlight .nf,
160
146
  .highlight .fm {
161
147
  color: #8250df;
162
148
  }
163
149
 
164
- /* Errors */
165
150
  .highlight .err {
166
151
  color: #f6f8fa;
167
152
  background-color: #82071e;
168
153
  }
169
154
 
170
- /* Comments */
171
155
  .highlight .c,
172
156
  .highlight .ch,
173
157
  .highlight .cd,
@@ -181,13 +165,11 @@
181
165
  color: #6e7781;
182
166
  }
183
167
 
184
- /* Name indicators */
185
168
  .highlight .ni,
186
169
  .highlight .si {
187
170
  color: #24292f;
188
171
  }
189
172
 
190
- /* Generic emphasis */
191
173
  .highlight .ge {
192
174
  color: #24292f;
193
175
  font-style: italic;
@@ -198,29 +180,27 @@
198
180
  font-weight: bold;
199
181
  }
200
182
 
201
- /* Code block scrollbar */
202
183
  .content pre::-webkit-scrollbar {
203
184
  height: 0.5rem;
204
185
  }
205
186
 
206
187
  .content pre::-webkit-scrollbar-track {
207
- background: var(--color-bg-secondary);
188
+ background: var(--secondary);
208
189
  border-radius: var(--radius-md);
209
190
  }
210
191
 
211
192
  .content pre::-webkit-scrollbar-thumb {
212
- background: var(--color-border);
193
+ background: var(--border);
213
194
  border-radius: var(--radius-md);
214
195
  }
215
196
 
216
197
  .content pre::-webkit-scrollbar-thumb:hover {
217
- background: var(--color-text-tertiary);
198
+ background: var(--muted-foreground);
218
199
  }
219
200
 
220
- /* Dark Mode Syntax Highlighting - GitHub Dark */
221
201
  .dark .highlight {
222
202
  color: #e6edf3;
223
- background-color: #161b22;
203
+ background-color: oklch(from var(--input) l c h / 30%);
224
204
  }
225
205
 
226
206
  .dark .highlight .w {
@@ -228,7 +208,6 @@
228
208
  background-color: transparent;
229
209
  }
230
210
 
231
- /* Keywords */
232
211
  .dark .highlight .k,
233
212
  .dark .highlight .kd,
234
213
  .dark .highlight .kn,
@@ -248,7 +227,6 @@
248
227
  background-color: #490202;
249
228
  }
250
229
 
251
- /* Built-in names */
252
230
  .dark .highlight .nb,
253
231
  .dark .highlight .nc,
254
232
  .dark .highlight .no,
@@ -256,7 +234,6 @@
256
234
  color: #ffa657;
257
235
  }
258
236
 
259
- /* Strings and regex */
260
237
  .dark .highlight .sr,
261
238
  .dark .highlight .na,
262
239
  .dark .highlight .nt {
@@ -268,7 +245,6 @@
268
245
  background-color: #0f3b17;
269
246
  }
270
247
 
271
- /* Constants and literals */
272
248
  .dark .highlight .kc,
273
249
  .dark .highlight .l,
274
250
  .dark .highlight .ld,
@@ -288,7 +264,6 @@
288
264
  color: #79c0ff;
289
265
  }
290
266
 
291
- /* Variables */
292
267
  .dark .highlight .nv,
293
268
  .dark .highlight .vc,
294
269
  .dark .highlight .vg,
@@ -297,20 +272,17 @@
297
272
  color: #79c0ff;
298
273
  }
299
274
 
300
- /* Operators */
301
275
  .dark .highlight .o,
302
276
  .dark .highlight .ow {
303
277
  color: #79c0ff;
304
278
  }
305
279
 
306
- /* Headers and subheaders in diffs */
307
280
  .dark .highlight .gh,
308
281
  .dark .highlight .gu {
309
282
  color: #79c0ff;
310
283
  font-weight: bold;
311
284
  }
312
285
 
313
- /* Strings */
314
286
  .dark .highlight .s,
315
287
  .dark .highlight .sa,
316
288
  .dark .highlight .sc,
@@ -325,20 +297,17 @@
325
297
  color: #a5d6ff;
326
298
  }
327
299
 
328
- /* Decorators and functions */
329
300
  .dark .highlight .nd,
330
301
  .dark .highlight .nf,
331
302
  .dark .highlight .fm {
332
303
  color: #d2a8ff;
333
304
  }
334
305
 
335
- /* Errors */
336
306
  .dark .highlight .err {
337
307
  color: #161b22;
338
308
  background-color: #ffa198;
339
309
  }
340
310
 
341
- /* Comments */
342
311
  .dark .highlight .c,
343
312
  .dark .highlight .ch,
344
313
  .dark .highlight .cd,
@@ -352,13 +321,11 @@
352
321
  color: #8b949e;
353
322
  }
354
323
 
355
- /* Name indicators */
356
324
  .dark .highlight .ni,
357
325
  .dark .highlight .si {
358
326
  color: #e6edf3;
359
327
  }
360
328
 
361
- /* Generic emphasis */
362
329
  .dark .highlight .ge {
363
330
  color: #e6edf3;
364
331
  font-style: italic;
@@ -0,0 +1,143 @@
1
+ .breadcrumbs {
2
+ display: flex;
3
+ align-items: center;
4
+ gap: var(--spacing-2);
5
+ margin-bottom: var(--spacing-6);
6
+ font-size: var(--text-sm);
7
+ color: var(--muted-foreground);
8
+ }
9
+
10
+ .breadcrumb-toggle {
11
+ display: flex;
12
+ align-items: center;
13
+ justify-content: center;
14
+ width: 1.75rem;
15
+ height: 1.75rem;
16
+ padding: 0;
17
+ background: none;
18
+ border: 1px solid transparent;
19
+ border-radius: var(--radius-md);
20
+ color: var(--muted-foreground);
21
+ cursor: pointer;
22
+ flex-shrink: 0;
23
+ transition:
24
+ background-color 0.15s ease,
25
+ color 0.15s ease,
26
+ border-color 0.15s ease;
27
+ }
28
+
29
+ .breadcrumb-toggle:hover {
30
+ background-color: var(--muted);
31
+ color: var(--foreground);
32
+ }
33
+
34
+ .breadcrumb-toggle:active {
35
+ background-color: var(--muted);
36
+ }
37
+
38
+ .breadcrumb-toggle:focus-visible {
39
+ outline: none;
40
+ box-shadow: 0 0 0 var(--ring-width) oklch(from var(--ring) l c h / 50%);
41
+ }
42
+
43
+ .breadcrumb-toggle .docyard-icon {
44
+ width: 18px;
45
+ height: 18px;
46
+ }
47
+
48
+ .sidebar-collapsed .breadcrumb-toggle {
49
+ background-color: var(--muted);
50
+ border-color: var(--border);
51
+ }
52
+
53
+ .breadcrumb-list,
54
+ .content .breadcrumb-list {
55
+ display: flex;
56
+ align-items: center;
57
+ gap: var(--spacing-1);
58
+ list-style: none;
59
+ margin: 0;
60
+ padding: 0;
61
+ min-width: 0;
62
+ overflow: hidden;
63
+ }
64
+
65
+ .breadcrumb-item {
66
+ display: flex;
67
+ align-items: center;
68
+ min-width: 0;
69
+ }
70
+
71
+ .breadcrumb-link,
72
+ .breadcrumb-text {
73
+ display: block;
74
+ max-width: 200px;
75
+ overflow: hidden;
76
+ text-overflow: ellipsis;
77
+ white-space: nowrap;
78
+ }
79
+
80
+ .breadcrumb-link,
81
+ .content .breadcrumb-link {
82
+ color: var(--muted-foreground);
83
+ text-decoration: none;
84
+ transition: color 0.15s ease;
85
+ border-bottom: none;
86
+ font-weight: var(--font-normal);
87
+ }
88
+
89
+ .breadcrumb-link:hover,
90
+ .content .breadcrumb-link:hover {
91
+ color: var(--foreground);
92
+ text-decoration: none;
93
+ border-bottom: none;
94
+ }
95
+
96
+ .breadcrumb-item--current .breadcrumb-text {
97
+ color: var(--foreground);
98
+ font-weight: var(--font-medium);
99
+ }
100
+
101
+ .breadcrumb-separator {
102
+ color: var(--border);
103
+ flex-shrink: 0;
104
+ user-select: none;
105
+ padding: 0 var(--spacing-0-5);
106
+ }
107
+
108
+ .breadcrumb-ellipsis {
109
+ color: var(--muted-foreground);
110
+ letter-spacing: 0.1em;
111
+ }
112
+
113
+ @media (max-width: 1024px) {
114
+ .breadcrumb-toggle {
115
+ display: none;
116
+ }
117
+
118
+ .breadcrumbs {
119
+ gap: var(--spacing-1);
120
+ margin-bottom: var(--spacing-4);
121
+ }
122
+
123
+ .breadcrumbs--single {
124
+ display: none;
125
+ }
126
+
127
+ .breadcrumb-link,
128
+ .breadcrumb-text {
129
+ max-width: 150px;
130
+ }
131
+ }
132
+
133
+ @media (max-width: 640px) {
134
+ .breadcrumb-link,
135
+ .breadcrumb-text {
136
+ max-width: 120px;
137
+ }
138
+
139
+ .breadcrumbs {
140
+ font-size: var(--text-xs);
141
+ margin-bottom: var(--spacing-3);
142
+ }
143
+ }
@@ -1,18 +1,22 @@
1
- /* Callouts/Admonitions */
2
1
  .docyard-callout {
3
2
  display: flex;
4
- gap: var(--space-3);
5
- padding: var(--space-4);
6
- margin: var(--space-6) 0;
3
+ align-items: flex-start;
4
+ gap: var(--spacing-3);
5
+ padding: var(--spacing-3) var(--spacing-4);
6
+ margin: var(--spacing-6) 0;
7
+ border-radius: var(--radius-2xl);
8
+ text-align: left;
9
+ font-size: var(--text-sm);
10
+ position: relative;
11
+ width: 100%;
12
+ transition: background-color var(--transition-fast), border-color var(--transition-fast);
7
13
  border: 1px solid;
8
- border-radius: var(--radius-lg);
9
- transition: border-color var(--transition-base), background-color var(--transition-base);
10
14
  }
11
15
 
12
16
  .docyard-callout__icon {
13
17
  flex-shrink: 0;
14
- width: 22px;
15
- height: 22px;
18
+ width: 1.25rem;
19
+ height: 1.25rem;
16
20
  display: flex;
17
21
  align-items: center;
18
22
  justify-content: center;
@@ -31,17 +35,21 @@
31
35
  .docyard-callout__content {
32
36
  flex: 1;
33
37
  min-width: 0;
38
+ display: flex;
39
+ flex-direction: column;
40
+ gap: var(--spacing-2);
34
41
  }
35
42
 
36
43
  .docyard-callout__title {
37
- font-weight: var(--font-weight-semibold);
38
- margin: 0 0 var(--space-2) 0;
39
- font-size: var(--font-size-base);
40
- line-height: var(--line-height-tight);
44
+ font-weight: var(--font-semibold);
45
+ font-size: var(--text-sm);
46
+ line-height: var(--leading-tight);
41
47
  }
42
48
 
43
49
  .docyard-callout__body {
44
- line-height: var(--line-height-relaxed);
50
+ line-height: var(--leading-relaxed);
51
+ color: var(--muted-foreground);
52
+ font-size: var(--text-sm);
45
53
  }
46
54
 
47
55
  .docyard-callout__body>*:first-child {
@@ -52,9 +60,23 @@
52
60
  margin-bottom: 0;
53
61
  }
54
62
 
55
- /* Code blocks inside callouts */
63
+ .content .docyard-callout__body ul,
64
+ .content .docyard-callout__body ol {
65
+ padding-left: 0;
66
+ margin: var(--spacing-2) 0;
67
+ }
68
+
69
+ .docyard-callout__body a {
70
+ text-decoration: underline;
71
+ text-underline-offset: 3px;
72
+ }
73
+
74
+ .docyard-callout__body a:hover {
75
+ color: var(--foreground);
76
+ }
77
+
56
78
  .docyard-callout__body .highlight {
57
- margin: var(--space-4) 0;
79
+ margin: var(--spacing-4) 0;
58
80
  border-radius: var(--radius-md);
59
81
  }
60
82
 
@@ -69,99 +91,77 @@
69
91
 
70
92
  .docyard-callout__body pre code {
71
93
  display: block;
72
- padding: var(--space-4);
94
+ padding: var(--spacing-4);
73
95
  overflow-x: auto;
74
- background-color: var(--color-bg-secondary) !important;
96
+ overscroll-behavior-x: contain;
97
+ background-color: transparent;
75
98
  }
76
99
 
77
100
  .docyard-callout__body :not(pre)>code {
78
- background-color: rgba(0, 0, 0, 0.05);
79
- border: 1px solid rgba(0, 0, 0, 0.1);
101
+ background-color: oklch(from var(--input) l c h / 30%);
80
102
  padding: 0.125rem 0.375rem;
81
103
  border-radius: var(--radius-sm);
82
104
  }
83
105
 
84
- .dark .docyard-callout__body :not(pre)>code {
85
- background-color: rgba(255, 255, 255, 0.1);
86
- border: 1px solid rgba(255, 255, 255, 0.15);
87
- }
88
-
89
- /* Callout type: note (blue) */
90
106
  .docyard-callout--note {
91
107
  border-color: var(--callout-note-border);
92
- background-color: var(--callout-note-bg);
108
+ background-color: var(--callout-note-background);
93
109
  }
94
110
 
95
- .docyard-callout--note .docyard-callout__icon {
96
- color: var(--callout-note);
111
+ .docyard-callout--note .docyard-callout__icon,
112
+ .docyard-callout--note .docyard-callout__title,
113
+ .docyard-callout--note .docyard-callout__body {
114
+ color: var(--callout-note-foreground);
97
115
  }
98
116
 
99
- .docyard-callout--note .docyard-callout__title {
100
- color: var(--callout-note-text);
101
- }
102
-
103
- /* Callout type: tip (green) */
104
117
  .docyard-callout--tip {
105
118
  border-color: var(--callout-tip-border);
106
- background-color: var(--callout-tip-bg);
119
+ background-color: var(--callout-tip-background);
107
120
  }
108
121
 
109
- .docyard-callout--tip .docyard-callout__icon {
110
- color: var(--callout-tip);
122
+ .docyard-callout--tip .docyard-callout__icon,
123
+ .docyard-callout--tip .docyard-callout__title,
124
+ .docyard-callout--tip .docyard-callout__body {
125
+ color: var(--callout-tip-foreground);
111
126
  }
112
127
 
113
- .docyard-callout--tip .docyard-callout__title {
114
- color: var(--callout-tip-text);
115
- }
116
-
117
- /* Callout type: important (purple) */
118
128
  .docyard-callout--important {
119
129
  border-color: var(--callout-important-border);
120
- background-color: var(--callout-important-bg);
121
- }
122
-
123
- .docyard-callout--important .docyard-callout__icon {
124
- color: var(--callout-important);
130
+ background-color: var(--callout-important-background);
125
131
  }
126
132
 
127
- .docyard-callout--important .docyard-callout__title {
128
- color: var(--callout-important-text);
133
+ .docyard-callout--important .docyard-callout__icon,
134
+ .docyard-callout--important .docyard-callout__title,
135
+ .docyard-callout--important .docyard-callout__body {
136
+ color: var(--callout-important-foreground);
129
137
  }
130
138
 
131
- /* Callout type: warning (orange/yellow) */
132
139
  .docyard-callout--warning {
133
140
  border-color: var(--callout-warning-border);
134
- background-color: var(--callout-warning-bg);
135
- }
136
-
137
- .docyard-callout--warning .docyard-callout__icon {
138
- color: var(--callout-warning);
141
+ background-color: var(--callout-warning-background);
139
142
  }
140
143
 
141
- .docyard-callout--warning .docyard-callout__title {
142
- color: var(--callout-warning-text);
144
+ .docyard-callout--warning .docyard-callout__icon,
145
+ .docyard-callout--warning .docyard-callout__title,
146
+ .docyard-callout--warning .docyard-callout__body {
147
+ color: var(--callout-warning-foreground);
143
148
  }
144
149
 
145
- /* Callout type: danger (red) */
146
150
  .docyard-callout--danger {
147
151
  border-color: var(--callout-danger-border);
148
- background-color: var(--callout-danger-bg);
149
- }
150
-
151
- .docyard-callout--danger .docyard-callout__icon {
152
- color: var(--callout-danger);
152
+ background-color: var(--callout-danger-background);
153
153
  }
154
154
 
155
- .docyard-callout--danger .docyard-callout__title {
156
- color: var(--callout-danger-text);
155
+ .docyard-callout--danger .docyard-callout__icon,
156
+ .docyard-callout--danger .docyard-callout__title,
157
+ .docyard-callout--danger .docyard-callout__body {
158
+ color: var(--callout-danger-foreground);
157
159
  }
158
160
 
159
- /* Nested callouts */
160
161
  .docyard-callout .docyard-callout {
161
- margin: var(--space-4) 0;
162
+ margin: var(--spacing-4) 0;
162
163
  }
163
164
 
164
- /* Reduced motion support */
165
165
  @media (prefers-reduced-motion: reduce) {
166
166
  .docyard-callout {
167
167
  transition: none;