docyard 0.8.0 → 0.9.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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -1
  3. data/lib/docyard/components/aliases.rb +12 -0
  4. data/lib/docyard/components/processors/abbreviation_processor.rb +72 -0
  5. data/lib/docyard/components/processors/accordion_processor.rb +81 -0
  6. data/lib/docyard/components/processors/badge_processor.rb +72 -0
  7. data/lib/docyard/components/processors/callout_processor.rb +8 -2
  8. data/lib/docyard/components/processors/cards_processor.rb +100 -0
  9. data/lib/docyard/components/processors/code_block_options_preprocessor.rb +23 -2
  10. data/lib/docyard/components/processors/code_block_processor.rb +6 -0
  11. data/lib/docyard/components/processors/code_group_processor.rb +198 -0
  12. data/lib/docyard/components/processors/code_snippet_import_preprocessor.rb +6 -1
  13. data/lib/docyard/components/processors/custom_anchor_processor.rb +42 -0
  14. data/lib/docyard/components/processors/file_tree_processor.rb +151 -0
  15. data/lib/docyard/components/processors/image_caption_processor.rb +96 -0
  16. data/lib/docyard/components/processors/include_processor.rb +86 -0
  17. data/lib/docyard/components/processors/steps_processor.rb +89 -0
  18. data/lib/docyard/components/processors/tabs_processor.rb +9 -1
  19. data/lib/docyard/components/processors/tooltip_processor.rb +57 -0
  20. data/lib/docyard/components/processors/video_embed_processor.rb +196 -0
  21. data/lib/docyard/components/support/code_group/html_builder.rb +122 -0
  22. data/lib/docyard/components/support/markdown_code_block_helper.rb +56 -0
  23. data/lib/docyard/config/branding_resolver.rb +30 -35
  24. data/lib/docyard/config/logo_detector.rb +39 -0
  25. data/lib/docyard/config.rb +6 -1
  26. data/lib/docyard/navigation/sidebar/file_resolver.rb +16 -4
  27. data/lib/docyard/navigation/sidebar/item.rb +6 -1
  28. data/lib/docyard/navigation/sidebar/metadata_extractor.rb +4 -2
  29. data/lib/docyard/navigation/sidebar/metadata_reader.rb +8 -4
  30. data/lib/docyard/navigation/sidebar/renderer.rb +6 -2
  31. data/lib/docyard/navigation/sidebar/tree_builder.rb +2 -1
  32. data/lib/docyard/rendering/icons/phosphor.rb +3 -0
  33. data/lib/docyard/rendering/markdown.rb +24 -1
  34. data/lib/docyard/rendering/renderer.rb +2 -1
  35. data/lib/docyard/server/asset_handler.rb +1 -0
  36. data/lib/docyard/templates/assets/css/components/abbreviation.css +86 -0
  37. data/lib/docyard/templates/assets/css/components/accordion.css +138 -0
  38. data/lib/docyard/templates/assets/css/components/badges.css +47 -0
  39. data/lib/docyard/templates/assets/css/components/banner.css +202 -0
  40. data/lib/docyard/templates/assets/css/components/cards.css +100 -0
  41. data/lib/docyard/templates/assets/css/components/code-block.css +10 -0
  42. data/lib/docyard/templates/assets/css/components/code-group.css +281 -0
  43. data/lib/docyard/templates/assets/css/components/figure.css +22 -0
  44. data/lib/docyard/templates/assets/css/components/file-tree.css +124 -0
  45. data/lib/docyard/templates/assets/css/components/heading-anchor.css +21 -13
  46. data/lib/docyard/templates/assets/css/components/lightbox.css +65 -0
  47. data/lib/docyard/templates/assets/css/components/navigation.css +7 -0
  48. data/lib/docyard/templates/assets/css/components/prev-next.css +9 -18
  49. data/lib/docyard/templates/assets/css/components/steps.css +122 -0
  50. data/lib/docyard/templates/assets/css/components/tabs.css +1 -1
  51. data/lib/docyard/templates/assets/css/components/tooltip.css +113 -0
  52. data/lib/docyard/templates/assets/css/components/video.css +41 -0
  53. data/lib/docyard/templates/assets/css/markdown.css +5 -3
  54. data/lib/docyard/templates/assets/js/components/abbreviation.js +85 -0
  55. data/lib/docyard/templates/assets/js/components/banner.js +81 -0
  56. data/lib/docyard/templates/assets/js/components/code-group.js +283 -0
  57. data/lib/docyard/templates/assets/js/components/file-tree.js +39 -0
  58. data/lib/docyard/templates/assets/js/components/lightbox.js +72 -0
  59. data/lib/docyard/templates/assets/js/components/tooltip.js +118 -0
  60. data/lib/docyard/templates/layouts/default.html.erb +1 -0
  61. data/lib/docyard/templates/layouts/splash.html.erb +1 -0
  62. data/lib/docyard/templates/partials/_accordion.html.erb +9 -0
  63. data/lib/docyard/templates/partials/_banner.html.erb +27 -0
  64. data/lib/docyard/templates/partials/_card.html.erb +23 -0
  65. data/lib/docyard/templates/partials/_nav_group.html.erb +6 -0
  66. data/lib/docyard/templates/partials/_nav_leaf.html.erb +3 -0
  67. data/lib/docyard/templates/partials/_step.html.erb +14 -0
  68. data/lib/docyard/version.rb +1 -1
  69. metadata +38 -1
@@ -0,0 +1,100 @@
1
+ .docyard-cards {
2
+ display: grid;
3
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
4
+ gap: var(--spacing-4);
5
+ margin: var(--spacing-6) 0;
6
+ }
7
+
8
+ .docyard-card {
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: var(--spacing-3);
12
+ padding: var(--spacing-5);
13
+ border: 1px solid var(--border);
14
+ border-radius: var(--radius-xl);
15
+ background-color: var(--card);
16
+ text-decoration: none;
17
+ color: inherit;
18
+ transition:
19
+ border-color var(--transition-fast),
20
+ box-shadow var(--transition-fast),
21
+ transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
22
+ }
23
+
24
+ a.docyard-card:hover {
25
+ border-color: var(--primary);
26
+ box-shadow: 0 4px 12px oklch(from var(--primary) l c h / 0.1);
27
+ }
28
+
29
+ a.docyard-card:active {
30
+ transform: scale(0.98);
31
+ transition: transform 0.1s cubic-bezier(0.4, 0, 1, 1);
32
+ }
33
+
34
+ .docyard-card__icon {
35
+ display: flex;
36
+ align-items: center;
37
+ justify-content: center;
38
+ width: 2.5rem;
39
+ height: 2.5rem;
40
+ border-radius: var(--radius-lg);
41
+ background-color: oklch(from var(--primary) l c h / 0.1);
42
+ color: var(--primary);
43
+ }
44
+
45
+ .docyard-card__icon svg {
46
+ width: 1.25rem;
47
+ height: 1.25rem;
48
+ }
49
+
50
+ .docyard-card__content {
51
+ display: flex;
52
+ flex-direction: column;
53
+ gap: var(--spacing-2);
54
+ }
55
+
56
+ .docyard-card__title {
57
+ margin: 0;
58
+ font-size: var(--text-base);
59
+ font-weight: var(--font-semibold);
60
+ color: var(--foreground);
61
+ line-height: var(--leading-tight);
62
+ }
63
+
64
+ .docyard-card__body {
65
+ font-size: var(--text-sm);
66
+ color: var(--muted-foreground);
67
+ line-height: var(--leading-relaxed);
68
+ }
69
+
70
+ .docyard-card__body > *:first-child {
71
+ margin-top: 0;
72
+ }
73
+
74
+ .docyard-card__body > *:last-child {
75
+ margin-bottom: 0;
76
+ }
77
+
78
+ .docyard-card__body p {
79
+ margin: 0;
80
+ }
81
+
82
+ @media (max-width: 640px) {
83
+ .docyard-cards {
84
+ grid-template-columns: 1fr;
85
+ }
86
+
87
+ .docyard-card {
88
+ padding: var(--spacing-4);
89
+ }
90
+ }
91
+
92
+ @media (prefers-reduced-motion: reduce) {
93
+ .docyard-card {
94
+ transition: border-color var(--transition-fast);
95
+ }
96
+
97
+ a.docyard-card:active {
98
+ transform: none;
99
+ }
100
+ }
@@ -121,6 +121,16 @@
121
121
  overscroll-behavior-x: contain;
122
122
  }
123
123
 
124
+ .docyard-code-block__scroll-spacer {
125
+ display: inline;
126
+ padding-right: 5rem;
127
+ }
128
+
129
+ .docyard-code-block:not(.docyard-code-block--titled) .docyard-code-block__copy {
130
+ backdrop-filter: blur(8px);
131
+ -webkit-backdrop-filter: blur(8px);
132
+ }
133
+
124
134
  .docyard-code-line {
125
135
  display: block;
126
136
  }
@@ -0,0 +1,281 @@
1
+ .docyard-code-group {
2
+ margin: var(--spacing-4) 0;
3
+ border: 1px solid var(--code-block-border);
4
+ border-radius: var(--radius-2xl);
5
+ overflow: hidden;
6
+ background-color: var(--code-block-bg);
7
+ }
8
+
9
+ .docyard-code-group__tabs-wrapper {
10
+ display: flex;
11
+ align-items: center;
12
+ gap: var(--spacing-2);
13
+ padding: var(--spacing-2) var(--spacing-4) 0;
14
+ background: var(--code-block-header-bg);
15
+ border-bottom: 1px solid var(--code-block-header-border);
16
+ font-size: var(--text-xs);
17
+ font-weight: var(--font-medium);
18
+ color: var(--muted-foreground);
19
+ }
20
+
21
+ .docyard-code-group__tabs-scroll-container {
22
+ position: relative;
23
+ flex: 1;
24
+ min-width: 0;
25
+ }
26
+
27
+ .docyard-code-group__tabs {
28
+ display: flex;
29
+ align-items: center;
30
+ gap: 0;
31
+ position: relative;
32
+ overflow-x: auto;
33
+ overscroll-behavior-x: contain;
34
+ -webkit-overflow-scrolling: touch;
35
+ scrollbar-width: none;
36
+ margin: 0;
37
+ padding: 0 0 var(--spacing-2);
38
+ }
39
+
40
+ .docyard-code-group__tabs::-webkit-scrollbar {
41
+ display: none;
42
+ }
43
+
44
+ .docyard-code-group__tab {
45
+ display: inline-flex;
46
+ align-items: center;
47
+ justify-content: center;
48
+ gap: var(--spacing-1-5);
49
+ padding: var(--spacing-2) var(--spacing-2-5);
50
+ background: transparent;
51
+ border: none;
52
+ font-size: var(--text-sm);
53
+ font-weight: inherit;
54
+ font-family: var(--font-sans);
55
+ color: inherit;
56
+ cursor: pointer;
57
+ transition: color 0.15s ease;
58
+ position: relative;
59
+ white-space: nowrap;
60
+ flex-shrink: 0;
61
+ line-height: 1.5;
62
+ outline: none;
63
+ max-width: 12rem;
64
+ overflow: hidden;
65
+ text-overflow: ellipsis;
66
+ }
67
+
68
+ .docyard-code-group__tab:hover {
69
+ color: var(--foreground);
70
+ }
71
+
72
+ .docyard-code-group__tab[aria-selected="true"] {
73
+ color: var(--foreground);
74
+ }
75
+
76
+ .docyard-code-group__tab:focus-visible {
77
+ outline: 2px solid var(--ring);
78
+ outline-offset: -2px;
79
+ border-radius: var(--radius-sm);
80
+ }
81
+
82
+ .docyard-code-group__tab .docyard-icon {
83
+ width: 1rem;
84
+ height: 1rem;
85
+ display: inline-flex;
86
+ flex-shrink: 0;
87
+ }
88
+
89
+ .docyard-code-group__tab .docyard-icon svg {
90
+ width: 100%;
91
+ height: 100%;
92
+ }
93
+
94
+ .docyard-code-group__indicator {
95
+ position: absolute;
96
+ bottom: 0;
97
+ left: 0;
98
+ height: 2px;
99
+ background: var(--primary);
100
+ border-radius: 1px;
101
+ pointer-events: none;
102
+ z-index: 1;
103
+ transition:
104
+ transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1),
105
+ width 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
106
+ will-change: transform, width;
107
+ }
108
+
109
+ .docyard-code-group__tabs-scroll-container.can-scroll-left .docyard-code-group__tabs {
110
+ mask-image: linear-gradient(to right, transparent, black 2rem);
111
+ -webkit-mask-image: linear-gradient(to right, transparent, black 2rem);
112
+ }
113
+
114
+ .docyard-code-group__tabs-scroll-container.can-scroll-right .docyard-code-group__tabs {
115
+ mask-image: linear-gradient(to left, transparent, black 2rem);
116
+ -webkit-mask-image: linear-gradient(to left, transparent, black 2rem);
117
+ }
118
+
119
+ .docyard-code-group__tabs-scroll-container.can-scroll-left.can-scroll-right .docyard-code-group__tabs {
120
+ mask-image: linear-gradient(to right, transparent, black 2rem, black calc(100% - 2rem), transparent);
121
+ -webkit-mask-image: linear-gradient(to right, transparent, black 2rem, black calc(100% - 2rem), transparent);
122
+ }
123
+
124
+ .docyard-code-group__copy {
125
+ display: inline-flex;
126
+ align-items: center;
127
+ justify-content: center;
128
+ gap: var(--spacing-1-5);
129
+ height: 1.75rem;
130
+ padding: 0 var(--spacing-2-5);
131
+ margin-bottom: var(--spacing-2);
132
+ border: none;
133
+ border-radius: 9999px;
134
+ background-color: var(--code-block-copy-bg);
135
+ color: var(--muted-foreground);
136
+ cursor: pointer;
137
+ flex-shrink: 0;
138
+ transition:
139
+ transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1),
140
+ background-color 0.2s ease,
141
+ color 0.2s ease,
142
+ box-shadow 0.2s ease;
143
+ box-shadow: var(--code-block-copy-shadow);
144
+ }
145
+
146
+ .docyard-code-group__copy:hover {
147
+ background-color: var(--code-block-copy-bg-hover);
148
+ color: var(--foreground);
149
+ box-shadow: var(--code-block-copy-shadow-hover);
150
+ }
151
+
152
+ .docyard-code-group__copy:active {
153
+ transform: scale(0.92);
154
+ transition:
155
+ transform 0.1s cubic-bezier(0.4, 0, 1, 1),
156
+ background-color 0.1s ease,
157
+ box-shadow 0.1s ease;
158
+ box-shadow: var(--code-block-copy-shadow-active);
159
+ }
160
+
161
+ .docyard-code-group__copy:focus-visible {
162
+ outline: none;
163
+ box-shadow:
164
+ 0 1px 2px oklch(from var(--foreground) l c h / 5%),
165
+ 0 0 0 2px var(--background),
166
+ 0 0 0 4px var(--ring);
167
+ }
168
+
169
+ .docyard-code-group__copy.is-success {
170
+ background-color: var(--primary);
171
+ color: white;
172
+ box-shadow:
173
+ 0 1px 2px oklch(from var(--primary) l c h / 20%),
174
+ 0 0 0 1px oklch(from var(--primary) l c h / 30%);
175
+ }
176
+
177
+ .docyard-code-group__copy.is-success:hover {
178
+ background-color: oklch(from var(--primary) calc(l - 0.03) c h);
179
+ color: white;
180
+ box-shadow:
181
+ 0 2px 4px oklch(from var(--primary) l c h / 25%),
182
+ 0 0 0 1px oklch(from var(--primary) l c h / 35%);
183
+ }
184
+
185
+ .docyard-code-group__copy-icon {
186
+ display: inline-flex;
187
+ align-items: center;
188
+ justify-content: center;
189
+ flex-shrink: 0;
190
+ }
191
+
192
+ .docyard-code-group__copy-icon svg {
193
+ width: 0.875rem;
194
+ height: 0.875rem;
195
+ }
196
+
197
+ .docyard-code-group__copy-text {
198
+ font-size: var(--text-xs);
199
+ font-weight: var(--font-medium);
200
+ font-family: var(--font-sans);
201
+ line-height: 1;
202
+ }
203
+
204
+ .docyard-code-group__panels {
205
+ position: relative;
206
+ }
207
+
208
+ .docyard-code-group__panel {
209
+ display: none;
210
+ outline: none;
211
+ }
212
+
213
+ .docyard-code-group__panel[aria-hidden="false"] {
214
+ display: block;
215
+ }
216
+
217
+ .docyard-code-group__panel .docyard-code-block {
218
+ margin: 0;
219
+ border: none;
220
+ border-radius: 0;
221
+ background-color: transparent;
222
+ }
223
+
224
+ .docyard-code-group__panel .docyard-code-block__header {
225
+ display: none;
226
+ }
227
+
228
+ .docyard-code-group__panel .docyard-code-block__copy {
229
+ display: none;
230
+ }
231
+
232
+ .docyard-code-group__panel .docyard-code-block__content {
233
+ border-radius: 0;
234
+ }
235
+
236
+ .docyard-code-group__panel .docyard-code-block pre {
237
+ border-radius: 0;
238
+ }
239
+
240
+ @media (max-width: 640px) {
241
+ .docyard-code-group {
242
+ border-radius: var(--radius-xl);
243
+ }
244
+
245
+ .docyard-code-group__tabs-wrapper {
246
+ padding: var(--spacing-2) var(--spacing-3) 0;
247
+ gap: var(--spacing-2);
248
+ }
249
+
250
+ .docyard-code-group__tab {
251
+ padding: var(--spacing-1-5) var(--spacing-2);
252
+ gap: var(--spacing-1);
253
+ }
254
+
255
+ .docyard-code-group__tab .docyard-icon {
256
+ width: 0.875rem;
257
+ height: 0.875rem;
258
+ }
259
+
260
+ .docyard-code-group__copy {
261
+ height: 1.5rem;
262
+ padding: 0 var(--spacing-2);
263
+ gap: var(--spacing-1);
264
+ }
265
+
266
+ .docyard-code-group__copy-icon svg {
267
+ width: 0.75rem;
268
+ height: 0.75rem;
269
+ }
270
+
271
+ .docyard-code-group__copy-text {
272
+ font-size: 0.625rem;
273
+ }
274
+ }
275
+
276
+ @media (prefers-reduced-motion: reduce) {
277
+ .docyard-code-group__tab,
278
+ .docyard-code-group__indicator {
279
+ transition: none;
280
+ }
281
+ }
@@ -0,0 +1,22 @@
1
+ .docyard-figure {
2
+ margin: var(--spacing-6) 0;
3
+ padding: 0;
4
+ text-align: center;
5
+ }
6
+
7
+ .docyard-figure img {
8
+ display: inline-block;
9
+ max-width: 100%;
10
+ height: auto;
11
+ border-radius: var(--radius-xl);
12
+ border: 1px solid var(--border);
13
+ cursor: zoom-in;
14
+ }
15
+
16
+ .docyard-figure figcaption {
17
+ margin-top: var(--spacing-3);
18
+ font-size: var(--text-sm);
19
+ color: var(--muted-foreground);
20
+ text-align: center;
21
+ font-style: italic;
22
+ }
@@ -0,0 +1,124 @@
1
+ .docyard-filetree {
2
+ font-family: var(--font-mono);
3
+ font-size: var(--text-base);
4
+ line-height: 1.6;
5
+ margin: var(--spacing-4) 0;
6
+ }
7
+
8
+ .docyard-filetree__list {
9
+ list-style: none !important;
10
+ margin: 0 !important;
11
+ padding: 0 !important;
12
+ }
13
+
14
+ .docyard-filetree__list .docyard-filetree__list {
15
+ margin-left: var(--spacing-1) !important;
16
+ padding-left: var(--spacing-4) !important;
17
+ border-left: 1px solid var(--border);
18
+ overflow: hidden;
19
+ }
20
+
21
+ .docyard-filetree__item {
22
+ list-style: none !important;
23
+ margin: 0 !important;
24
+ padding: 0 !important;
25
+ }
26
+
27
+ .docyard-filetree__entry {
28
+ display: flex;
29
+ align-items: center;
30
+ gap: var(--spacing-2);
31
+ padding: var(--spacing-1) var(--spacing-2);
32
+ margin: 0 calc(-1 * var(--spacing-2));
33
+ border-radius: var(--radius-md);
34
+ cursor: default;
35
+ white-space: nowrap;
36
+ transition: background-color 0.15s ease;
37
+ }
38
+
39
+ .docyard-filetree__item--folder.docyard-filetree__item--has-children > .docyard-filetree__entry {
40
+ cursor: pointer;
41
+ user-select: none;
42
+ }
43
+
44
+ .docyard-filetree__item--folder.docyard-filetree__item--has-children > .docyard-filetree__entry:hover {
45
+ background-color: var(--muted);
46
+ }
47
+
48
+ .docyard-filetree__item--folder.docyard-filetree__item--has-children > .docyard-filetree__entry:active {
49
+ background-color: oklch(from var(--muted) calc(l - 0.05) c h);
50
+ transform: scale(0.995);
51
+ transition: transform 0.1s cubic-bezier(0.4, 0, 1, 1), background-color 0.1s ease;
52
+ }
53
+
54
+ .docyard-filetree__entry .docyard-icon {
55
+ flex-shrink: 0;
56
+ display: inline-flex;
57
+ align-items: center;
58
+ justify-content: center;
59
+ width: 1.125rem;
60
+ height: 1.125rem;
61
+ transition: transform 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);
62
+ }
63
+
64
+ .docyard-filetree__entry .docyard-icon svg {
65
+ width: 100%;
66
+ height: 100%;
67
+ }
68
+
69
+ .docyard-filetree__entry .docyard-icon-folder-open,
70
+ .docyard-filetree__entry .docyard-icon-folder {
71
+ color: var(--muted-foreground);
72
+ }
73
+
74
+ .docyard-filetree__entry .docyard-icon-file-text {
75
+ color: var(--muted-foreground);
76
+ opacity: 0.6;
77
+ }
78
+
79
+ .docyard-filetree__name {
80
+ color: var(--foreground);
81
+ transition: color 0.15s ease;
82
+ }
83
+
84
+ .docyard-filetree__item--folder > .docyard-filetree__entry .docyard-filetree__name {
85
+ font-weight: var(--font-medium);
86
+ }
87
+
88
+ .docyard-filetree__item--folder.docyard-filetree__item--has-children > .docyard-filetree__entry:hover .docyard-filetree__name {
89
+ color: var(--foreground);
90
+ }
91
+
92
+ .docyard-filetree__comment {
93
+ color: var(--muted-foreground);
94
+ font-style: italic;
95
+ margin-left: var(--spacing-2);
96
+ opacity: 0.7;
97
+ font-size: var(--text-sm);
98
+ }
99
+
100
+ .docyard-filetree__item--highlighted > .docyard-filetree__entry {
101
+ background-color: oklch(from var(--primary) l c h / 10%);
102
+ }
103
+
104
+ .docyard-filetree__item--highlighted > .docyard-filetree__entry .docyard-filetree__name {
105
+ color: var(--primary);
106
+ }
107
+
108
+ .docyard-filetree__item--highlighted > .docyard-filetree__entry:hover {
109
+ background-color: oklch(from var(--primary) l c h / 15%);
110
+ }
111
+
112
+ .docyard-filetree__item--collapsed > .docyard-filetree__list {
113
+ display: none;
114
+ }
115
+
116
+ @media (max-width: 640px) {
117
+ .docyard-filetree {
118
+ font-size: var(--text-sm);
119
+ }
120
+
121
+ .docyard-filetree__list .docyard-filetree__list {
122
+ padding-left: var(--spacing-3) !important;
123
+ }
124
+ }
@@ -5,8 +5,6 @@
5
5
  .content h6[id] {
6
6
  position: relative;
7
7
  scroll-margin-top: calc(var(--header-height) + var(--spacing-6));
8
- display: flex;
9
- align-items: center;
10
8
  }
11
9
 
12
10
  .has-tabs .content h2[id],
@@ -18,6 +16,7 @@
18
16
  }
19
17
 
20
18
  @media (max-width: 1280px) and (min-width: 1025px) {
19
+
21
20
  .content h2[id],
22
21
  .content h3[id],
23
22
  .content h4[id],
@@ -28,10 +27,11 @@
28
27
  }
29
28
 
30
29
  .heading-anchor {
31
- order: -1;
32
- font-size: 1.5rem;
33
- margin-right: 0.5rem;
34
- margin-left: -1.625rem;
30
+ position: absolute;
31
+ left: -1.75rem;
32
+ top: 50%;
33
+ transform: translateY(-50%);
34
+ font-size: 1.25rem;
35
35
  font-weight: var(--font-normal);
36
36
  color: var(--primary);
37
37
  text-decoration: none !important;
@@ -39,8 +39,6 @@
39
39
  transition: opacity var(--transition-fast);
40
40
  cursor: pointer;
41
41
  user-select: none;
42
- display: flex;
43
- align-items: center;
44
42
  }
45
43
 
46
44
  .heading-anchor:hover,
@@ -69,12 +67,22 @@
69
67
  }
70
68
 
71
69
  @media (max-width: 1024px) {
70
+ .content h2[id],
71
+ .content h3[id],
72
+ .content h4[id],
73
+ .content h5[id],
74
+ .content h6[id] {
75
+ display: flex;
76
+ align-items: center;
77
+ flex-wrap: wrap;
78
+ }
79
+
72
80
  .heading-anchor {
73
- order: 1;
74
- margin-left: var(--spacing-3);
75
- font-size: 1.3rem;
76
- margin-right: 0;
77
- opacity: 0.6;
81
+ position: static;
82
+ margin-left: var(--spacing-2);
83
+ font-size: 1.1rem;
84
+ opacity: 0.4;
85
+ transform: none;
78
86
  }
79
87
 
80
88
  .heading-anchor:hover,
@@ -0,0 +1,65 @@
1
+ .docyard-lightbox {
2
+ position: fixed;
3
+ inset: 0;
4
+ z-index: 9999;
5
+ display: flex;
6
+ align-items: center;
7
+ justify-content: center;
8
+ background: oklch(from var(--background) l c h / 75%);
9
+ backdrop-filter: blur(16px);
10
+ opacity: 0;
11
+ visibility: hidden;
12
+ transition: opacity 0.2s ease, visibility 0.2s ease;
13
+ cursor: zoom-out;
14
+ }
15
+
16
+ .docyard-lightbox.active {
17
+ opacity: 1;
18
+ visibility: visible;
19
+ }
20
+
21
+ .docyard-lightbox img {
22
+ max-width: 90vw;
23
+ max-height: 90vh;
24
+ object-fit: contain;
25
+ border-radius: var(--radius-xl);
26
+ border: 1px solid var(--border);
27
+ transform: scale(0.95);
28
+ transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
29
+ cursor: default;
30
+ }
31
+
32
+ .docyard-lightbox.active img {
33
+ transform: scale(1);
34
+ }
35
+
36
+ .docyard-lightbox-close {
37
+ position: absolute;
38
+ top: var(--spacing-6);
39
+ right: var(--spacing-6);
40
+ width: 2.25rem;
41
+ height: 2.25rem;
42
+ display: flex;
43
+ align-items: center;
44
+ justify-content: center;
45
+ background: transparent;
46
+ border: none;
47
+ border-radius: var(--radius-4xl);
48
+ color: var(--muted-foreground);
49
+ cursor: pointer;
50
+ transition: background-color var(--transition-fast), color var(--transition-fast);
51
+ }
52
+
53
+ .docyard-lightbox-close:hover {
54
+ color: var(--foreground);
55
+ background-color: var(--muted);
56
+ }
57
+
58
+ .dark .docyard-lightbox-close:hover {
59
+ background-color: oklch(from var(--muted) l c h / 50%);
60
+ }
61
+
62
+ .docyard-lightbox-close svg {
63
+ width: 18px;
64
+ height: 18px;
65
+ }
@@ -336,3 +336,10 @@
336
336
  transform: none;
337
337
  }
338
338
  }
339
+
340
+ .sidebar .docyard-badge {
341
+ margin-left: auto;
342
+ flex-shrink: 0;
343
+ padding: 0.0625rem 0.375rem;
344
+ font-size: 0.625rem;
345
+ }