docyard 0.4.0 → 0.6.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +29 -3
- data/README.md +37 -12
- data/lib/docyard/build/static_generator.rb +1 -1
- data/lib/docyard/components/base_processor.rb +6 -0
- data/lib/docyard/components/code_block_diff_preprocessor.rb +104 -0
- data/lib/docyard/components/code_block_feature_extractor.rb +113 -0
- data/lib/docyard/components/code_block_focus_preprocessor.rb +77 -0
- data/lib/docyard/components/code_block_icon_detector.rb +40 -0
- data/lib/docyard/components/code_block_line_wrapper.rb +46 -0
- data/lib/docyard/components/code_block_options_preprocessor.rb +76 -0
- data/lib/docyard/components/code_block_patterns.rb +51 -0
- data/lib/docyard/components/code_block_processor.rb +135 -14
- data/lib/docyard/components/code_line_parser.rb +80 -0
- data/lib/docyard/components/code_snippet_import_preprocessor.rb +125 -0
- data/lib/docyard/components/heading_anchor_processor.rb +34 -0
- data/lib/docyard/components/registry.rb +4 -4
- data/lib/docyard/components/table_of_contents_processor.rb +64 -0
- data/lib/docyard/components/tabs_parser.rb +135 -4
- data/lib/docyard/components/tabs_range_finder.rb +42 -0
- data/lib/docyard/config/validator.rb +8 -0
- data/lib/docyard/config.rb +18 -0
- data/lib/docyard/icons/file_types.rb +0 -13
- data/lib/docyard/icons/phosphor.rb +2 -1
- data/lib/docyard/markdown.rb +18 -4
- data/lib/docyard/prev_next_builder.rb +159 -0
- data/lib/docyard/rack_application.rb +25 -3
- data/lib/docyard/renderer.rb +20 -8
- data/lib/docyard/templates/assets/css/code.css +12 -4
- data/lib/docyard/templates/assets/css/components/code-block.css +427 -24
- data/lib/docyard/templates/assets/css/components/heading-anchor.css +77 -0
- data/lib/docyard/templates/assets/css/components/navigation.css +12 -9
- data/lib/docyard/templates/assets/css/components/prev-next.css +114 -0
- data/lib/docyard/templates/assets/css/components/table-of-contents.css +269 -0
- data/lib/docyard/templates/assets/css/components/tabs.css +50 -44
- data/lib/docyard/templates/assets/css/layout.css +58 -1
- data/lib/docyard/templates/assets/css/variables.css +45 -0
- data/lib/docyard/templates/assets/js/components/heading-anchor.js +90 -0
- data/lib/docyard/templates/assets/js/components/navigation.js +6 -2
- data/lib/docyard/templates/assets/js/components/table-of-contents.js +301 -0
- data/lib/docyard/templates/layouts/default.html.erb +9 -1
- data/lib/docyard/templates/partials/_code_block.html.erb +50 -2
- data/lib/docyard/templates/partials/_heading_anchor.html.erb +1 -0
- data/lib/docyard/templates/partials/_prev_next.html.erb +23 -0
- data/lib/docyard/templates/partials/_table_of_contents.html.erb +45 -0
- data/lib/docyard/templates/partials/_table_of_contents_toggle.html.erb +8 -0
- data/lib/docyard/version.rb +1 -1
- metadata +23 -1
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/* Table of Contents - Desktop & Mobile */
|
|
2
|
+
|
|
3
|
+
.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;
|
|
11
|
+
overflow-x: hidden;
|
|
12
|
+
border-left: 1px solid var(--color-border);
|
|
13
|
+
background-color: var(--color-bg);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* TOC Header */
|
|
17
|
+
.docyard-toc__header {
|
|
18
|
+
margin-bottom: var(--space-4);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.docyard-toc__title {
|
|
22
|
+
display: flex;
|
|
23
|
+
align-items: center;
|
|
24
|
+
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;
|
|
30
|
+
margin-bottom: 0;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.docyard-toc__title svg {
|
|
34
|
+
flex-shrink: 0;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* Secondary Header TOC Toggle (tablet & mobile) */
|
|
38
|
+
.secondary-header-toc-toggle {
|
|
39
|
+
display: none;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Tablet & Mobile TOC Toggle */
|
|
43
|
+
@media (max-width: 1280px) {
|
|
44
|
+
.secondary-header-toc-toggle {
|
|
45
|
+
display: flex;
|
|
46
|
+
align-items: center;
|
|
47
|
+
gap: var(--space-2);
|
|
48
|
+
padding: var(--space-2) var(--space-3);
|
|
49
|
+
background: transparent;
|
|
50
|
+
border: none;
|
|
51
|
+
color: var(--color-text);
|
|
52
|
+
font-size: var(--font-size-sm);
|
|
53
|
+
font-weight: var(--font-weight-medium);
|
|
54
|
+
font-family: var(--font-sans);
|
|
55
|
+
cursor: pointer;
|
|
56
|
+
transition: color var(--transition-fast);
|
|
57
|
+
outline: none;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.secondary-header-toc-toggle:hover {
|
|
61
|
+
color: var(--color-text-secondary);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.secondary-header-toc-toggle:focus-visible {
|
|
65
|
+
outline: 2px solid var(--color-primary);
|
|
66
|
+
outline-offset: 2px;
|
|
67
|
+
border-radius: var(--radius-sm);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.secondary-header-toc-toggle svg {
|
|
71
|
+
transform: rotate(-90deg);
|
|
72
|
+
transition: transform var(--transition-base);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.secondary-header-toc-toggle[aria-expanded="true"] svg {
|
|
76
|
+
transform: rotate(0deg);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/* TOC Navigation */
|
|
81
|
+
.docyard-toc__nav {
|
|
82
|
+
display: block;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* TOC List */
|
|
86
|
+
.docyard-toc__list {
|
|
87
|
+
list-style: none;
|
|
88
|
+
padding: 0;
|
|
89
|
+
margin: 0;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.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);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* TOC Items */
|
|
100
|
+
.docyard-toc__item {
|
|
101
|
+
margin-bottom: 0.375rem;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* TOC Links */
|
|
105
|
+
.docyard-toc__link {
|
|
106
|
+
display: block;
|
|
107
|
+
padding: 0.25rem var(--space-2);
|
|
108
|
+
color: var(--color-text-secondary);
|
|
109
|
+
text-decoration: none;
|
|
110
|
+
font-size: var(--font-size-sm);
|
|
111
|
+
line-height: var(--line-height-tight);
|
|
112
|
+
border-radius: var(--radius-sm);
|
|
113
|
+
transition: color var(--transition-fast);
|
|
114
|
+
font-weight: var(--font-weight-medium);
|
|
115
|
+
overflow: hidden;
|
|
116
|
+
text-overflow: ellipsis;
|
|
117
|
+
white-space: nowrap;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.docyard-toc__link:hover {
|
|
121
|
+
color: var(--color-text);
|
|
122
|
+
text-decoration: none;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.docyard-toc__link:focus-visible {
|
|
126
|
+
outline: 2px solid var(--color-primary);
|
|
127
|
+
outline-offset: 2px;
|
|
128
|
+
color: var(--color-text);
|
|
129
|
+
text-decoration: none;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/* Active link */
|
|
133
|
+
.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;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.docyard-toc__item--level-4>.docyard-toc__link {
|
|
148
|
+
font-size: 0.8125rem;
|
|
149
|
+
color: var(--color-text-tertiary);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/* TOC Scrollbar */
|
|
153
|
+
.docyard-toc::-webkit-scrollbar {
|
|
154
|
+
width: 0.5rem;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.docyard-toc::-webkit-scrollbar-track {
|
|
158
|
+
background: transparent;
|
|
159
|
+
}
|
|
160
|
+
|
|
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
|
+
@media (max-width: 1280px) {
|
|
180
|
+
.docyard-toc {
|
|
181
|
+
display: block;
|
|
182
|
+
position: static;
|
|
183
|
+
width: 0;
|
|
184
|
+
height: 0;
|
|
185
|
+
padding: 0;
|
|
186
|
+
margin: 0;
|
|
187
|
+
border: none;
|
|
188
|
+
overflow: visible;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.docyard-toc__header {
|
|
192
|
+
display: none;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.docyard-toc__nav {
|
|
196
|
+
display: none;
|
|
197
|
+
position: fixed;
|
|
198
|
+
overflow-y: auto;
|
|
199
|
+
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);
|
|
207
|
+
z-index: 9999;
|
|
208
|
+
transition: top 0.3s cubic-bezier(0.4, 0, 0.2, 1),
|
|
209
|
+
opacity 0.2s ease,
|
|
210
|
+
transform 0.2s ease;
|
|
211
|
+
transform: translateY(-8px);
|
|
212
|
+
opacity: 0;
|
|
213
|
+
pointer-events: none;
|
|
214
|
+
}
|
|
215
|
+
|
|
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
|
+
.docyard-toc__nav.is-expanded {
|
|
223
|
+
display: block;
|
|
224
|
+
opacity: 1;
|
|
225
|
+
transform: translateY(0);
|
|
226
|
+
pointer-events: auto;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/* Tablet-specific: floating dropdown on right */
|
|
231
|
+
@media (max-width: 1280px) and (min-width: 1025px) {
|
|
232
|
+
.docyard-toc__nav {
|
|
233
|
+
top: calc(var(--header-height) + 3rem + var(--space-2));
|
|
234
|
+
right: var(--space-6);
|
|
235
|
+
width: 280px;
|
|
236
|
+
max-height: calc(100vh - var(--header-height) - 3rem - var(--space-8));
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/* Mobile Layout (< 1024px) */
|
|
241
|
+
@media (max-width: 1024px) {
|
|
242
|
+
.docyard-toc__nav {
|
|
243
|
+
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));
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.secondary-header.shift-up~.layout .docyard-toc__nav {
|
|
250
|
+
top: calc(3rem - 2px);
|
|
251
|
+
max-height: calc(100vh - 3rem - var(--space-2));
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.docyard-toc__list .docyard-toc__list {
|
|
255
|
+
margin-left: var(--space-3);
|
|
256
|
+
padding-left: var(--space-2);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/* Reduced Motion */
|
|
261
|
+
@media (prefers-reduced-motion: reduce) {
|
|
262
|
+
.docyard-toc__link {
|
|
263
|
+
transition: none;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.secondary-header-toc-toggle svg {
|
|
267
|
+
transition: none;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Tabs Component
|
|
1
|
+
/* Tabs Component */
|
|
2
2
|
|
|
3
3
|
.docyard-tabs {
|
|
4
4
|
margin: var(--space-6) 0;
|
|
@@ -13,12 +13,16 @@
|
|
|
13
13
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
/* Tab List Wrapper
|
|
16
|
+
/* Tab List Wrapper */
|
|
17
17
|
.docyard-tabs__list-wrapper {
|
|
18
18
|
position: relative;
|
|
19
19
|
background: var(--color-bg-secondary);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
.dark .docyard-tabs__list-wrapper {
|
|
23
|
+
background: rgba(255, 255, 255, 0.03);
|
|
24
|
+
}
|
|
25
|
+
|
|
22
26
|
/* Tab List Container */
|
|
23
27
|
.docyard-tabs__list {
|
|
24
28
|
display: flex;
|
|
@@ -36,7 +40,7 @@
|
|
|
36
40
|
display: none;
|
|
37
41
|
}
|
|
38
42
|
|
|
39
|
-
/* Bottom border line
|
|
43
|
+
/* Bottom border line */
|
|
40
44
|
.docyard-tabs__list::after {
|
|
41
45
|
content: '';
|
|
42
46
|
position: absolute;
|
|
@@ -81,7 +85,7 @@
|
|
|
81
85
|
|
|
82
86
|
.docyard-tabs__tab[aria-selected="true"] {
|
|
83
87
|
color: var(--color-primary);
|
|
84
|
-
background: var(--color-bg);
|
|
88
|
+
background: var(--color-code-bg);
|
|
85
89
|
}
|
|
86
90
|
|
|
87
91
|
/* Cover the border-bottom for active tab */
|
|
@@ -92,11 +96,11 @@
|
|
|
92
96
|
left: 0;
|
|
93
97
|
right: 0;
|
|
94
98
|
height: 2px;
|
|
95
|
-
background: var(--color-bg);
|
|
99
|
+
background: var(--color-code-bg);
|
|
96
100
|
z-index: 2;
|
|
97
101
|
}
|
|
98
102
|
|
|
99
|
-
/* Focus
|
|
103
|
+
/* Focus state */
|
|
100
104
|
.docyard-tabs__tab:focus-visible {
|
|
101
105
|
outline: 2px solid var(--color-primary);
|
|
102
106
|
outline-offset: 2px;
|
|
@@ -121,7 +125,7 @@
|
|
|
121
125
|
height: 100%;
|
|
122
126
|
}
|
|
123
127
|
|
|
124
|
-
/* Scroll Indicators
|
|
128
|
+
/* Scroll Indicators */
|
|
125
129
|
.docyard-tabs__scroll-indicator {
|
|
126
130
|
position: absolute;
|
|
127
131
|
top: 0;
|
|
@@ -151,7 +155,7 @@
|
|
|
151
155
|
opacity: 1;
|
|
152
156
|
}
|
|
153
157
|
|
|
154
|
-
/* Slide
|
|
158
|
+
/* Slide Indicator */
|
|
155
159
|
.docyard-tabs__indicator {
|
|
156
160
|
position: absolute;
|
|
157
161
|
top: 0;
|
|
@@ -173,11 +177,7 @@
|
|
|
173
177
|
background: var(--color-bg);
|
|
174
178
|
}
|
|
175
179
|
|
|
176
|
-
/*
|
|
177
|
-
.docyard-tabs__panel:not(:has(> [class*="language-"]:only-child)) {
|
|
178
|
-
padding: var(--space-6);
|
|
179
|
-
}
|
|
180
|
-
|
|
180
|
+
/* Panel base styles */
|
|
181
181
|
.docyard-tabs__panel p {
|
|
182
182
|
margin-bottom: 0;
|
|
183
183
|
}
|
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
display: block;
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
/*
|
|
189
|
+
/* Panel content spacing */
|
|
190
190
|
.docyard-tabs__panel>*:first-child {
|
|
191
191
|
margin-top: 0;
|
|
192
192
|
}
|
|
@@ -195,43 +195,49 @@
|
|
|
195
195
|
margin-bottom: 0;
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
-
/* Code blocks inside tabs
|
|
199
|
-
.docyard-tabs__panel .
|
|
200
|
-
.docyard-tabs__panel pre {
|
|
198
|
+
/* Code blocks inside tabs */
|
|
199
|
+
.docyard-tabs__panel .docyard-code-block {
|
|
201
200
|
margin: 0;
|
|
202
|
-
border-radius: 0;
|
|
203
|
-
border: none;
|
|
204
|
-
padding: 0 !important;
|
|
205
|
-
background-color: var(--color-bg) !important;
|
|
206
|
-
box-shadow: none !important;
|
|
207
201
|
}
|
|
208
202
|
|
|
209
|
-
/*
|
|
210
|
-
.docyard-tabs__panel
|
|
211
|
-
|
|
203
|
+
/* Reset code block styling in tabs */
|
|
204
|
+
.docyard-tabs__panel .docyard-code-block .highlight {
|
|
205
|
+
border: none;
|
|
206
|
+
border-radius: 0;
|
|
207
|
+
box-shadow: none;
|
|
208
|
+
background: transparent;
|
|
212
209
|
}
|
|
213
210
|
|
|
214
|
-
/*
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
211
|
+
/* Panel styles with :has() support */
|
|
212
|
+
@supports selector(:has(*)) {
|
|
213
|
+
.docyard-tabs__panel:not(:has(> [class*="language-"]:only-child)) {
|
|
214
|
+
padding: var(--space-6);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.docyard-tabs__panel:has(> [class*="language-"]:only-child) {
|
|
218
|
+
background: var(--color-code-bg);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.docyard-tabs__panel:has(> [class*="language-"]:only-child) .highlight pre {
|
|
222
|
+
padding: var(--space-6);
|
|
223
|
+
background: transparent;
|
|
224
|
+
}
|
|
221
225
|
}
|
|
222
226
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
border-radius: 0;
|
|
229
|
-
border: none !important;
|
|
230
|
-
box-shadow: none !important;
|
|
227
|
+
/* Fallback for browsers without :has() */
|
|
228
|
+
@supports not selector(:has(*)) {
|
|
229
|
+
.docyard-tabs__panel {
|
|
230
|
+
padding: var(--space-6);
|
|
231
|
+
}
|
|
231
232
|
}
|
|
232
233
|
|
|
233
|
-
|
|
234
|
-
|
|
234
|
+
/* Code blocks with siblings */
|
|
235
|
+
.docyard-tabs__panel .docyard-code-block:not(:only-child) .highlight {
|
|
236
|
+
border: 1px solid var(--color-border);
|
|
237
|
+
border-radius: var(--radius-lg);
|
|
238
|
+
box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.03);
|
|
239
|
+
margin: var(--space-4) 0;
|
|
240
|
+
background: var(--color-code-bg);
|
|
235
241
|
}
|
|
236
242
|
|
|
237
243
|
/* Inline code inside tabs */
|
|
@@ -242,7 +248,7 @@
|
|
|
242
248
|
font-size: 0.9em;
|
|
243
249
|
}
|
|
244
250
|
|
|
245
|
-
/* Mobile responsive
|
|
251
|
+
/* Mobile responsive */
|
|
246
252
|
@media (max-width: 640px) {
|
|
247
253
|
.docyard-tabs {
|
|
248
254
|
margin: var(--space-4) 0;
|
|
@@ -256,7 +262,7 @@
|
|
|
256
262
|
.docyard-tabs__tab {
|
|
257
263
|
padding: var(--space-3) var(--space-3);
|
|
258
264
|
font-size: var(--font-size-sm);
|
|
259
|
-
gap: var(--space-
|
|
265
|
+
gap: var(--space-2);
|
|
260
266
|
}
|
|
261
267
|
|
|
262
268
|
.docyard-tabs__icon .docyard-icon {
|
|
@@ -65,11 +65,45 @@
|
|
|
65
65
|
border-radius: var(--radius-sm);
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
/* Secondary Header (Mobile Navigation Bar) */
|
|
68
|
+
/* Secondary Header (Tablet & Mobile Navigation Bar) */
|
|
69
69
|
.secondary-header {
|
|
70
70
|
display: none;
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
+
/* Tablet: Show secondary header with TOC toggle only */
|
|
74
|
+
@media (max-width: 1280px) and (min-width: 1025px) {
|
|
75
|
+
.secondary-header {
|
|
76
|
+
display: flex;
|
|
77
|
+
align-items: center;
|
|
78
|
+
justify-content: flex-end;
|
|
79
|
+
position: fixed;
|
|
80
|
+
top: var(--header-height);
|
|
81
|
+
left: var(--sidebar-width);
|
|
82
|
+
right: 0;
|
|
83
|
+
height: 3rem;
|
|
84
|
+
min-height: 3rem;
|
|
85
|
+
background: var(--color-bg);
|
|
86
|
+
border-bottom: 1px solid var(--color-border);
|
|
87
|
+
padding: 0 var(--space-6);
|
|
88
|
+
z-index: var(--z-secondary-header);
|
|
89
|
+
transition: top 0.3s cubic-bezier(0.4, 0, 0.2, 1), left 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
90
|
+
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.02);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.secondary-header.shift-up {
|
|
94
|
+
top: 0;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.secondary-header-menu {
|
|
98
|
+
display: none;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.layout {
|
|
102
|
+
padding-top: calc(var(--header-height) + 3rem);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/* Mobile: Show menu button + TOC toggle */
|
|
73
107
|
@media (max-width: 1024px) {
|
|
74
108
|
.secondary-header {
|
|
75
109
|
display: flex;
|
|
@@ -80,6 +114,7 @@
|
|
|
80
114
|
left: 0;
|
|
81
115
|
right: 0;
|
|
82
116
|
height: 3rem;
|
|
117
|
+
min-height: 3rem;
|
|
83
118
|
background: var(--color-bg);
|
|
84
119
|
border-bottom: 1px solid var(--color-border);
|
|
85
120
|
padding: 0 var(--space-6);
|
|
@@ -107,6 +142,7 @@
|
|
|
107
142
|
transition: background-color 0.2s ease;
|
|
108
143
|
font-family: var(--font-sans);
|
|
109
144
|
margin-left: calc(-1 * var(--space-2));
|
|
145
|
+
outline: none;
|
|
110
146
|
}
|
|
111
147
|
|
|
112
148
|
.secondary-header-menu:hover {
|
|
@@ -117,6 +153,12 @@
|
|
|
117
153
|
background-color: var(--color-border);
|
|
118
154
|
}
|
|
119
155
|
|
|
156
|
+
.secondary-header-menu:focus-visible {
|
|
157
|
+
outline: 2px solid var(--color-primary);
|
|
158
|
+
outline-offset: 2px;
|
|
159
|
+
border-radius: var(--radius-sm);
|
|
160
|
+
}
|
|
161
|
+
|
|
120
162
|
.secondary-header-menu .icon {
|
|
121
163
|
flex-shrink: 0;
|
|
122
164
|
}
|
|
@@ -176,11 +218,19 @@
|
|
|
176
218
|
.layout-main {
|
|
177
219
|
flex: 1;
|
|
178
220
|
margin-left: var(--sidebar-width);
|
|
221
|
+
margin-right: var(--toc-width, 0);
|
|
179
222
|
display: flex;
|
|
180
223
|
flex-direction: column;
|
|
181
224
|
min-width: 0;
|
|
182
225
|
}
|
|
183
226
|
|
|
227
|
+
/* Tablet Layout (1024px - 1280px) */
|
|
228
|
+
@media (max-width: 1280px) and (min-width: 1025px) {
|
|
229
|
+
.layout-main {
|
|
230
|
+
margin-right: 0;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
184
234
|
/* Content wrapper */
|
|
185
235
|
main.content {
|
|
186
236
|
flex: 1;
|
|
@@ -200,6 +250,7 @@ main.content {
|
|
|
200
250
|
|
|
201
251
|
.layout {
|
|
202
252
|
padding-top: calc(var(--header-height) + 3rem);
|
|
253
|
+
flex-direction: column;
|
|
203
254
|
}
|
|
204
255
|
|
|
205
256
|
.sidebar {
|
|
@@ -223,8 +274,14 @@ main.content {
|
|
|
223
274
|
box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15);
|
|
224
275
|
}
|
|
225
276
|
|
|
277
|
+
.docyard-toc {
|
|
278
|
+
order: 1;
|
|
279
|
+
}
|
|
280
|
+
|
|
226
281
|
.layout-main {
|
|
227
282
|
margin-left: 0;
|
|
283
|
+
margin-right: 0;
|
|
284
|
+
order: 2;
|
|
228
285
|
}
|
|
229
286
|
|
|
230
287
|
main.content {
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
--color-border: #e4e7eb;
|
|
13
13
|
--color-border-secondary: #f3f4f6;
|
|
14
14
|
--color-primary: #2563eb;
|
|
15
|
+
--color-primary-rgb: 37, 99, 235;
|
|
15
16
|
--color-primary-hover: #1d4ed8;
|
|
16
17
|
--color-primary-light: #eff6ff;
|
|
17
18
|
--color-link: #0969da;
|
|
@@ -32,6 +33,27 @@
|
|
|
32
33
|
--color-info: #0969da;
|
|
33
34
|
--color-info-bg: #ddf4ff;
|
|
34
35
|
|
|
36
|
+
/* Diff colors - Light Theme */
|
|
37
|
+
--color-diff-add-bg: rgba(34, 197, 94, 0.15);
|
|
38
|
+
--color-diff-add-border: #22c55e;
|
|
39
|
+
--color-diff-add-gutter-bg: rgba(34, 197, 94, 0.2);
|
|
40
|
+
--color-diff-add-indicator: #166534;
|
|
41
|
+
|
|
42
|
+
--color-diff-remove-bg: rgba(239, 68, 68, 0.15);
|
|
43
|
+
--color-diff-remove-border: #ef4444;
|
|
44
|
+
--color-diff-remove-gutter-bg: rgba(239, 68, 68, 0.2);
|
|
45
|
+
--color-diff-remove-indicator: #991b1b;
|
|
46
|
+
|
|
47
|
+
/* Code error/warning colors - Light Theme */
|
|
48
|
+
--color-code-error-bg: rgba(239, 68, 68, 0.15);
|
|
49
|
+
--color-code-error-border: #ef4444;
|
|
50
|
+
--color-code-error-gutter-bg: rgba(239, 68, 68, 0.2);
|
|
51
|
+
--color-code-error-indicator: #991b1b;
|
|
52
|
+
--color-code-warning-bg: rgba(245, 158, 11, 0.15);
|
|
53
|
+
--color-code-warning-border: #f59e0b;
|
|
54
|
+
--color-code-warning-gutter-bg: rgba(245, 158, 11, 0.2);
|
|
55
|
+
--color-code-warning-indicator: #78350f;
|
|
56
|
+
|
|
35
57
|
/* Callout colors - shadcn inspired */
|
|
36
58
|
--callout-note: #0ea5e9;
|
|
37
59
|
--callout-note-text: #0c4a6e;
|
|
@@ -98,6 +120,7 @@
|
|
|
98
120
|
|
|
99
121
|
/* Layout */
|
|
100
122
|
--sidebar-width: 288px;
|
|
123
|
+
--toc-width: 280px;
|
|
101
124
|
--header-height: 64px;
|
|
102
125
|
--content-max-width: 800px;
|
|
103
126
|
--layout-max-width: 1440px;
|
|
@@ -142,6 +165,7 @@
|
|
|
142
165
|
--color-border: #30363d;
|
|
143
166
|
--color-border-secondary: #21262d;
|
|
144
167
|
--color-primary: #3b82f6;
|
|
168
|
+
--color-primary-rgb: 59, 130, 246;
|
|
145
169
|
--color-primary-hover: #60a5fa;
|
|
146
170
|
--color-primary-light: #1e3a8a;
|
|
147
171
|
--color-link: #58a6ff;
|
|
@@ -162,6 +186,27 @@
|
|
|
162
186
|
--color-info: #58a6ff;
|
|
163
187
|
--color-info-bg: #1e3a5f;
|
|
164
188
|
|
|
189
|
+
/* Diff colors - Dark Theme */
|
|
190
|
+
--color-diff-add-bg: rgba(34, 197, 94, 0.1);
|
|
191
|
+
--color-diff-add-border: #22c55e;
|
|
192
|
+
--color-diff-add-gutter-bg: rgba(34, 197, 94, 0.15);
|
|
193
|
+
--color-diff-add-indicator: #4ade80;
|
|
194
|
+
|
|
195
|
+
--color-diff-remove-bg: rgba(239, 68, 68, 0.1);
|
|
196
|
+
--color-diff-remove-border: #ef4444;
|
|
197
|
+
--color-diff-remove-gutter-bg: rgba(239, 68, 68, 0.15);
|
|
198
|
+
--color-diff-remove-indicator: #f87171;
|
|
199
|
+
|
|
200
|
+
/* Code error/warning colors - Dark Theme */
|
|
201
|
+
--color-code-error-bg: rgba(239, 68, 68, 0.1);
|
|
202
|
+
--color-code-error-border: #ef4444;
|
|
203
|
+
--color-code-error-gutter-bg: rgba(239, 68, 68, 0.15);
|
|
204
|
+
--color-code-error-indicator: #f87171;
|
|
205
|
+
--color-code-warning-bg: rgba(245, 158, 11, 0.1);
|
|
206
|
+
--color-code-warning-border: #f59e0b;
|
|
207
|
+
--color-code-warning-gutter-bg: rgba(245, 158, 11, 0.15);
|
|
208
|
+
--color-code-warning-indicator: #fbbf24;
|
|
209
|
+
|
|
165
210
|
/* Callout colors - Dark mode shadcn inspired */
|
|
166
211
|
--callout-note: #38bdf8;
|
|
167
212
|
--callout-note-text: #7dd3fc;
|