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,68 @@
1
- /* Table of Contents - Desktop & Mobile */
2
-
3
1
  .docyard-toc {
4
- width: var(--toc-width);
5
- position: fixed;
6
- top: var(--header-height);
7
- right: 0;
8
- height: calc(100vh - var(--header-height));
9
- padding: var(--space-3) var(--space-6) var(--space-3) var(--space-8);
10
- overflow-y: auto;
2
+ min-height: 0;
3
+ background-color: var(--background);
4
+ display: flex;
5
+ flex-direction: column;
6
+ position: relative;
7
+ }
8
+
9
+ .doc-aside.has-overflow .docyard-toc {
10
+ flex: 1;
11
+ }
12
+
13
+ .docyard-toc__scroll {
11
14
  overflow-x: hidden;
12
- border-left: 1px solid var(--color-border);
13
- background-color: var(--color-bg);
15
+ overscroll-behavior: contain;
16
+ padding: var(--spacing-3) var(--spacing-4);
17
+ }
18
+
19
+ .doc-aside.has-overflow .docyard-toc__scroll {
20
+ flex: 1;
21
+ overflow-y: auto;
22
+ }
23
+
24
+ .docyard-toc::before,
25
+ .docyard-toc::after {
26
+ content: '';
27
+ position: absolute;
28
+ left: 0;
29
+ right: 0;
30
+ height: 2rem;
31
+ pointer-events: none;
32
+ z-index: 1;
33
+ opacity: 0;
34
+ transition: opacity 0.2s ease;
35
+ }
36
+
37
+ .docyard-toc::before {
38
+ top: 0;
39
+ background: linear-gradient(to bottom, var(--background) 0%, transparent 100%);
40
+ }
41
+
42
+ .docyard-toc::after {
43
+ bottom: 0;
44
+ background: linear-gradient(to top, var(--background) 0%, transparent 100%);
45
+ }
46
+
47
+ .docyard-toc.can-scroll-top::before {
48
+ opacity: 1;
49
+ }
50
+
51
+ .docyard-toc.can-scroll-bottom::after {
52
+ opacity: 1;
14
53
  }
15
54
 
16
- /* TOC Header */
17
55
  .docyard-toc__header {
18
- margin-bottom: var(--space-4);
56
+ margin-bottom: var(--spacing-4);
19
57
  }
20
58
 
21
59
  .docyard-toc__title {
22
60
  display: flex;
23
61
  align-items: center;
24
62
  gap: 0.375rem;
25
- font-size: 0.6875rem;
26
- font-weight: var(--font-weight-semibold);
27
- color: var(--color-text-tertiary);
28
- text-transform: uppercase;
29
- letter-spacing: 0.1em;
63
+ font-size: var(--text-sm);
64
+ font-weight: var(--font-medium);
65
+ color: var(--muted-foreground);
30
66
  margin-bottom: 0;
31
67
  }
32
68
 
@@ -34,37 +70,41 @@
34
70
  flex-shrink: 0;
35
71
  }
36
72
 
37
- /* Secondary Header TOC Toggle (tablet & mobile) */
38
73
  .secondary-header-toc-toggle {
39
74
  display: none;
40
75
  }
41
76
 
42
- /* Tablet & Mobile TOC Toggle */
43
77
  @media (max-width: 1280px) {
44
78
  .secondary-header-toc-toggle {
45
79
  display: flex;
46
80
  align-items: center;
47
- gap: var(--space-2);
48
- padding: var(--space-2) var(--space-3);
81
+ gap: var(--spacing-2);
82
+ padding: var(--spacing-2);
49
83
  background: transparent;
50
84
  border: none;
51
- color: var(--color-text);
52
- font-size: var(--font-size-sm);
53
- font-weight: var(--font-weight-medium);
85
+ color: var(--foreground);
86
+ font-size: var(--text-sm);
87
+ font-weight: var(--font-medium);
54
88
  font-family: var(--font-sans);
55
89
  cursor: pointer;
56
- transition: color var(--transition-fast);
90
+ transition: background-color 0.2s ease;
57
91
  outline: none;
92
+ border-radius: var(--radius-md);
93
+ margin-right: calc(-1 * var(--spacing-2));
58
94
  }
59
95
 
60
96
  .secondary-header-toc-toggle:hover {
61
- color: var(--color-text-secondary);
97
+ background-color: var(--muted);
98
+ }
99
+
100
+ .secondary-header-toc-toggle:active {
101
+ background-color: var(--muted);
62
102
  }
63
103
 
64
104
  .secondary-header-toc-toggle:focus-visible {
65
- outline: 2px solid var(--color-primary);
66
- outline-offset: 2px;
67
- border-radius: var(--radius-sm);
105
+ outline: none;
106
+ border-radius: var(--radius-lg);
107
+ box-shadow: 0 0 0 var(--ring-width) oklch(from var(--ring) l c h / 50%);
68
108
  }
69
109
 
70
110
  .secondary-header-toc-toggle svg {
@@ -77,105 +117,88 @@
77
117
  }
78
118
  }
79
119
 
80
- /* TOC Navigation */
81
120
  .docyard-toc__nav {
82
121
  display: block;
122
+ position: relative;
83
123
  }
84
124
 
85
- /* TOC List */
86
125
  .docyard-toc__list {
87
126
  list-style: none;
88
127
  padding: 0;
89
128
  margin: 0;
129
+ position: relative;
130
+ border-left: 1px solid var(--border);
131
+ }
132
+
133
+ .docyard-toc__indicator {
134
+ position: absolute;
135
+ left: -1px;
136
+ width: 2px;
137
+ background-color: var(--primary);
138
+ pointer-events: none;
139
+ transition:
140
+ top 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
141
+ height 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);
142
+ z-index: 1;
90
143
  }
91
144
 
92
145
  .docyard-toc__list .docyard-toc__list {
93
- margin-top: var(--space-1);
94
- margin-left: var(--space-4);
95
- border-left: 1px solid var(--color-border);
96
- padding-left: var(--space-3);
146
+ margin-top: var(--spacing-1);
147
+ margin-left: var(--spacing-3);
148
+ padding-left: var(--spacing-3);
149
+ border-left: none;
97
150
  }
98
151
 
99
- /* TOC Items */
100
152
  .docyard-toc__item {
101
- margin-bottom: 0.375rem;
153
+ margin-bottom: 0;
102
154
  }
103
155
 
104
- /* TOC Links */
105
156
  .docyard-toc__link {
106
157
  display: block;
107
- padding: 0.25rem var(--space-2);
108
- color: var(--color-text-secondary);
158
+ padding: 0.25rem 0;
159
+ padding-left: var(--spacing-4);
160
+ color: var(--muted-foreground);
109
161
  text-decoration: none;
110
- font-size: var(--font-size-sm);
111
- line-height: var(--line-height-tight);
112
- border-radius: var(--radius-sm);
162
+ font-size: var(--text-sm);
163
+ line-height: var(--leading-normal);
164
+ border-radius: var(--radius-lg);
113
165
  transition: color var(--transition-fast);
114
- font-weight: var(--font-weight-medium);
166
+ font-weight: var(--font-normal);
115
167
  overflow: hidden;
116
168
  text-overflow: ellipsis;
117
169
  white-space: nowrap;
118
170
  }
119
171
 
120
172
  .docyard-toc__link:hover {
121
- color: var(--color-text);
173
+ color: var(--foreground);
122
174
  text-decoration: none;
123
175
  }
124
176
 
125
177
  .docyard-toc__link:focus-visible {
126
- outline: 2px solid var(--color-primary);
127
- outline-offset: 2px;
128
- color: var(--color-text);
178
+ outline: none;
179
+ box-shadow: 0 0 0 var(--ring-width) oklch(from var(--ring) l c h / 50%);
180
+ color: var(--foreground);
129
181
  text-decoration: none;
130
182
  }
131
183
 
132
- /* Active link */
133
184
  .docyard-toc__link.is-active {
134
- color: var(--color-primary);
135
- font-weight: var(--font-weight-semibold);
136
- }
137
-
138
- /* Level-specific styling */
139
- .docyard-toc__item--level-2>.docyard-toc__link {
140
- font-weight: var(--font-weight-medium);
141
- }
142
-
143
- .docyard-toc__item--level-3>.docyard-toc__link {
144
- font-size: 0.8125rem;
185
+ color: var(--primary);
186
+ font-weight: var(--font-medium);
145
187
  }
146
188
 
147
- .docyard-toc__item--level-4>.docyard-toc__link {
148
- font-size: 0.8125rem;
149
- color: var(--color-text-tertiary);
189
+ .docyard-toc__item--level-2 > .docyard-toc__link {
190
+ font-weight: var(--font-normal);
150
191
  }
151
192
 
152
- /* TOC Scrollbar */
153
- .docyard-toc::-webkit-scrollbar {
154
- width: 0.5rem;
193
+ .docyard-toc__item--level-4 > .docyard-toc__link {
194
+ color: var(--muted-foreground);
155
195
  }
156
196
 
157
- .docyard-toc::-webkit-scrollbar-track {
158
- background: transparent;
197
+ .docyard-toc__scroll {
198
+ scrollbar-width: thin;
199
+ scrollbar-color: var(--border) transparent;
159
200
  }
160
201
 
161
- .docyard-toc::-webkit-scrollbar-thumb {
162
- background: rgba(208, 215, 222, 0.5);
163
- border-radius: 0.25rem;
164
- }
165
-
166
- .docyard-toc::-webkit-scrollbar-thumb:hover {
167
- background: rgba(208, 215, 222, 0.7);
168
- }
169
-
170
- .dark .docyard-toc::-webkit-scrollbar-thumb {
171
- background: rgba(110, 118, 129, 0.4);
172
- }
173
-
174
- .dark .docyard-toc::-webkit-scrollbar-thumb:hover {
175
- background: rgba(110, 118, 129, 0.6);
176
- }
177
-
178
- /* Tablet & Mobile Layout - TOC in secondary header */
179
202
  @media (max-width: 1280px) {
180
203
  .docyard-toc {
181
204
  display: block;
@@ -197,13 +220,11 @@
197
220
  position: fixed;
198
221
  overflow-y: auto;
199
222
  overscroll-behavior: contain;
200
- padding: var(--space-5);
201
- background: var(--color-bg);
202
- border: 1px solid var(--color-border);
203
- border-radius: var(--radius-lg);
204
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1),
205
- 0 2px 4px -1px rgba(0, 0, 0, 0.06),
206
- 0 0 0 1px rgba(0, 0, 0, 0.05);
223
+ padding: var(--spacing-5);
224
+ background: var(--background);
225
+ border: 1px solid var(--border);
226
+ border-radius: var(--radius-xl);
227
+ box-shadow: var(--shadow-lg);
207
228
  z-index: 9999;
208
229
  transition: top 0.3s cubic-bezier(0.4, 0, 0.2, 1),
209
230
  opacity 0.2s ease,
@@ -213,12 +234,6 @@
213
234
  pointer-events: none;
214
235
  }
215
236
 
216
- .dark .docyard-toc__nav {
217
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.3),
218
- 0 2px 4px -1px rgba(0, 0, 0, 0.2),
219
- 0 0 0 1px rgba(255, 255, 255, 0.1);
220
- }
221
-
222
237
  .docyard-toc__nav.is-expanded {
223
238
  display: block;
224
239
  opacity: 1;
@@ -227,39 +242,37 @@
227
242
  }
228
243
  }
229
244
 
230
- /* Tablet-specific: floating dropdown on right */
231
245
  @media (max-width: 1280px) and (min-width: 1025px) {
232
246
  .docyard-toc__nav {
233
- top: calc(var(--header-height) + 3rem + var(--space-2));
234
- right: var(--space-6);
247
+ top: calc(var(--header-height) + 3rem + var(--spacing-2));
248
+ right: var(--spacing-6);
235
249
  width: 280px;
236
- max-height: calc(100vh - var(--header-height) - 3rem - var(--space-8));
250
+ max-height: calc(100vh - var(--header-height) - 3rem - var(--spacing-8));
237
251
  }
238
252
  }
239
253
 
240
- /* Mobile Layout (< 1024px) */
241
254
  @media (max-width: 1024px) {
242
255
  .docyard-toc__nav {
243
256
  top: calc(var(--header-height) + 3rem - 2px);
244
- left: var(--space-4);
245
- right: var(--space-4);
246
- max-height: calc(100vh - var(--header-height) - 3rem - var(--space-2));
257
+ left: var(--spacing-4);
258
+ right: var(--spacing-4);
259
+ max-height: calc(100vh - var(--header-height) - 3rem - var(--spacing-2));
247
260
  }
248
261
 
249
- .secondary-header.shift-up~.layout .docyard-toc__nav {
262
+ .secondary-header.shift-up ~ .layout .docyard-toc__nav {
250
263
  top: calc(3rem - 2px);
251
- max-height: calc(100vh - 3rem - var(--space-2));
264
+ max-height: calc(100vh - 3rem - var(--spacing-2));
252
265
  }
253
266
 
254
267
  .docyard-toc__list .docyard-toc__list {
255
- margin-left: var(--space-3);
256
- padding-left: var(--space-2);
268
+ margin-left: var(--spacing-3);
269
+ padding-left: var(--spacing-2);
257
270
  }
258
271
  }
259
272
 
260
- /* Reduced Motion */
261
273
  @media (prefers-reduced-motion: reduce) {
262
- .docyard-toc__link {
274
+ .docyard-toc__link,
275
+ .docyard-toc__indicator {
263
276
  transition: none;
264
277
  }
265
278