docyard 0.7.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 (155) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -1
  3. data/CHANGELOG.md +43 -1
  4. data/lib/docyard/build/asset_bundler.rb +22 -7
  5. data/lib/docyard/build/file_copier.rb +49 -27
  6. data/lib/docyard/build/sitemap_generator.rb +6 -6
  7. data/lib/docyard/build/static_generator.rb +85 -12
  8. data/lib/docyard/builder.rb +6 -6
  9. data/lib/docyard/components/aliases.rb +12 -0
  10. data/lib/docyard/components/processors/abbreviation_processor.rb +72 -0
  11. data/lib/docyard/components/processors/accordion_processor.rb +81 -0
  12. data/lib/docyard/components/processors/badge_processor.rb +72 -0
  13. data/lib/docyard/components/processors/callout_processor.rb +8 -2
  14. data/lib/docyard/components/processors/cards_processor.rb +100 -0
  15. data/lib/docyard/components/processors/code_block_options_preprocessor.rb +23 -2
  16. data/lib/docyard/components/processors/code_block_processor.rb +6 -0
  17. data/lib/docyard/components/processors/code_group_processor.rb +198 -0
  18. data/lib/docyard/components/processors/code_snippet_import_preprocessor.rb +6 -1
  19. data/lib/docyard/components/processors/custom_anchor_processor.rb +42 -0
  20. data/lib/docyard/components/processors/file_tree_processor.rb +151 -0
  21. data/lib/docyard/components/processors/image_caption_processor.rb +96 -0
  22. data/lib/docyard/components/processors/include_processor.rb +86 -0
  23. data/lib/docyard/components/processors/steps_processor.rb +89 -0
  24. data/lib/docyard/components/processors/tabs_processor.rb +9 -1
  25. data/lib/docyard/components/processors/tooltip_processor.rb +57 -0
  26. data/lib/docyard/components/processors/video_embed_processor.rb +196 -0
  27. data/lib/docyard/components/support/code_group/html_builder.rb +122 -0
  28. data/lib/docyard/components/support/markdown_code_block_helper.rb +56 -0
  29. data/lib/docyard/config/branding_resolver.rb +121 -17
  30. data/lib/docyard/config/constants.rb +6 -4
  31. data/lib/docyard/config/logo_detector.rb +39 -0
  32. data/lib/docyard/config/validator.rb +122 -99
  33. data/lib/docyard/config.rb +40 -42
  34. data/lib/docyard/initializer.rb +15 -76
  35. data/lib/docyard/navigation/breadcrumb_builder.rb +133 -0
  36. data/lib/docyard/navigation/prev_next_builder.rb +4 -1
  37. data/lib/docyard/navigation/sidebar/children_discoverer.rb +51 -0
  38. data/lib/docyard/navigation/sidebar/config_parser.rb +136 -108
  39. data/lib/docyard/navigation/sidebar/file_resolver.rb +90 -0
  40. data/lib/docyard/navigation/sidebar/file_system_scanner.rb +2 -1
  41. data/lib/docyard/navigation/sidebar/item.rb +50 -7
  42. data/lib/docyard/navigation/sidebar/local_config_loader.rb +51 -0
  43. data/lib/docyard/navigation/sidebar/metadata_extractor.rb +71 -0
  44. data/lib/docyard/navigation/sidebar/metadata_reader.rb +51 -0
  45. data/lib/docyard/navigation/sidebar/path_prefixer.rb +34 -0
  46. data/lib/docyard/navigation/sidebar/renderer.rb +60 -38
  47. data/lib/docyard/navigation/sidebar/sorter.rb +21 -0
  48. data/lib/docyard/navigation/sidebar/tree_builder.rb +100 -26
  49. data/lib/docyard/navigation/sidebar/tree_filter.rb +55 -0
  50. data/lib/docyard/navigation/sidebar_builder.rb +105 -36
  51. data/lib/docyard/rendering/icon_helpers.rb +13 -0
  52. data/lib/docyard/rendering/icons/phosphor.rb +26 -1
  53. data/lib/docyard/rendering/markdown.rb +29 -1
  54. data/lib/docyard/rendering/renderer.rb +75 -34
  55. data/lib/docyard/rendering/template_resolver.rb +172 -0
  56. data/lib/docyard/routing/fallback_resolver.rb +92 -0
  57. data/lib/docyard/search/build_indexer.rb +1 -1
  58. data/lib/docyard/search/dev_indexer.rb +51 -6
  59. data/lib/docyard/search/pagefind_support.rb +2 -0
  60. data/lib/docyard/server/asset_handler.rb +25 -19
  61. data/lib/docyard/server/pagefind_handler.rb +63 -0
  62. data/lib/docyard/server/preview_server.rb +1 -1
  63. data/lib/docyard/server/rack_application.rb +81 -64
  64. data/lib/docyard/templates/assets/css/code.css +18 -51
  65. data/lib/docyard/templates/assets/css/components/abbreviation.css +86 -0
  66. data/lib/docyard/templates/assets/css/components/accordion.css +138 -0
  67. data/lib/docyard/templates/assets/css/components/badges.css +47 -0
  68. data/lib/docyard/templates/assets/css/components/banner.css +202 -0
  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/cards.css +100 -0
  72. data/lib/docyard/templates/assets/css/components/code-block.css +190 -282
  73. data/lib/docyard/templates/assets/css/components/code-group.css +281 -0
  74. data/lib/docyard/templates/assets/css/components/figure.css +22 -0
  75. data/lib/docyard/templates/assets/css/components/file-tree.css +124 -0
  76. data/lib/docyard/templates/assets/css/components/heading-anchor.css +36 -15
  77. data/lib/docyard/templates/assets/css/components/icon.css +0 -1
  78. data/lib/docyard/templates/assets/css/components/lightbox.css +65 -0
  79. data/lib/docyard/templates/assets/css/components/logo.css +0 -2
  80. data/lib/docyard/templates/assets/css/components/nav-menu.css +237 -0
  81. data/lib/docyard/templates/assets/css/components/navigation.css +193 -167
  82. data/lib/docyard/templates/assets/css/components/prev-next.css +68 -48
  83. data/lib/docyard/templates/assets/css/components/search.css +186 -174
  84. data/lib/docyard/templates/assets/css/components/steps.css +122 -0
  85. data/lib/docyard/templates/assets/css/components/tab-bar.css +163 -0
  86. data/lib/docyard/templates/assets/css/components/table-of-contents.css +127 -114
  87. data/lib/docyard/templates/assets/css/components/tabs.css +119 -160
  88. data/lib/docyard/templates/assets/css/components/theme-toggle.css +48 -44
  89. data/lib/docyard/templates/assets/css/components/tooltip.css +113 -0
  90. data/lib/docyard/templates/assets/css/components/video.css +41 -0
  91. data/lib/docyard/templates/assets/css/landing.css +815 -0
  92. data/lib/docyard/templates/assets/css/layout.css +489 -87
  93. data/lib/docyard/templates/assets/css/main.css +1 -3
  94. data/lib/docyard/templates/assets/css/markdown.css +113 -93
  95. data/lib/docyard/templates/assets/css/reset.css +0 -3
  96. data/lib/docyard/templates/assets/css/typography.css +43 -41
  97. data/lib/docyard/templates/assets/css/variables.css +268 -208
  98. data/lib/docyard/templates/assets/favicon.svg +7 -8
  99. data/lib/docyard/templates/assets/fonts/Inter-Variable.ttf +0 -0
  100. data/lib/docyard/templates/assets/js/components/abbreviation.js +85 -0
  101. data/lib/docyard/templates/assets/js/components/banner.js +81 -0
  102. data/lib/docyard/templates/assets/js/components/code-block.js +24 -42
  103. data/lib/docyard/templates/assets/js/components/code-group.js +283 -0
  104. data/lib/docyard/templates/assets/js/components/file-tree.js +39 -0
  105. data/lib/docyard/templates/assets/js/components/heading-anchor.js +26 -24
  106. data/lib/docyard/templates/assets/js/components/lightbox.js +72 -0
  107. data/lib/docyard/templates/assets/js/components/navigation.js +181 -70
  108. data/lib/docyard/templates/assets/js/components/search.js +0 -75
  109. data/lib/docyard/templates/assets/js/components/sidebar-toggle.js +29 -0
  110. data/lib/docyard/templates/assets/js/components/tab-navigation.js +145 -0
  111. data/lib/docyard/templates/assets/js/components/table-of-contents.js +153 -66
  112. data/lib/docyard/templates/assets/js/components/tabs.js +31 -69
  113. data/lib/docyard/templates/assets/js/components/tooltip.js +118 -0
  114. data/lib/docyard/templates/assets/js/theme.js +0 -3
  115. data/lib/docyard/templates/assets/logo-dark.svg +8 -2
  116. data/lib/docyard/templates/assets/logo.svg +7 -4
  117. data/lib/docyard/templates/config/docyard.yml.erb +37 -34
  118. data/lib/docyard/templates/errors/404.html.erb +1 -1
  119. data/lib/docyard/templates/errors/500.html.erb +1 -1
  120. data/lib/docyard/templates/layouts/default.html.erb +19 -67
  121. data/lib/docyard/templates/layouts/splash.html.erb +177 -0
  122. data/lib/docyard/templates/partials/_accordion.html.erb +9 -0
  123. data/lib/docyard/templates/partials/_banner.html.erb +27 -0
  124. data/lib/docyard/templates/partials/_breadcrumbs.html.erb +24 -0
  125. data/lib/docyard/templates/partials/_card.html.erb +23 -0
  126. data/lib/docyard/templates/partials/_code_block.html.erb +5 -3
  127. data/lib/docyard/templates/partials/_doc_footer.html.erb +25 -0
  128. data/lib/docyard/templates/partials/_features.html.erb +15 -0
  129. data/lib/docyard/templates/partials/_footer.html.erb +42 -0
  130. data/lib/docyard/templates/partials/_head.html.erb +22 -0
  131. data/lib/docyard/templates/partials/_header.html.erb +49 -0
  132. data/lib/docyard/templates/partials/_heading_anchor.html.erb +3 -1
  133. data/lib/docyard/templates/partials/_hero.html.erb +27 -0
  134. data/lib/docyard/templates/partials/_nav_group.html.erb +31 -11
  135. data/lib/docyard/templates/partials/_nav_leaf.html.erb +4 -1
  136. data/lib/docyard/templates/partials/_nav_menu.html.erb +42 -0
  137. data/lib/docyard/templates/partials/_nav_nested_section.html.erb +11 -0
  138. data/lib/docyard/templates/partials/_nav_section.html.erb +1 -1
  139. data/lib/docyard/templates/partials/_prev_next.html.erb +8 -2
  140. data/lib/docyard/templates/partials/_scripts.html.erb +7 -0
  141. data/lib/docyard/templates/partials/_search_modal.html.erb +2 -6
  142. data/lib/docyard/templates/partials/_search_trigger.html.erb +2 -6
  143. data/lib/docyard/templates/partials/_sidebar.html.erb +21 -4
  144. data/lib/docyard/templates/partials/_step.html.erb +14 -0
  145. data/lib/docyard/templates/partials/_tab_bar.html.erb +25 -0
  146. data/lib/docyard/templates/partials/_table_of_contents.html.erb +12 -12
  147. data/lib/docyard/templates/partials/_table_of_contents_toggle.html.erb +1 -3
  148. data/lib/docyard/templates/partials/_tabs.html.erb +2 -2
  149. data/lib/docyard/templates/partials/_theme_toggle.html.erb +2 -11
  150. data/lib/docyard/version.rb +1 -1
  151. metadata +70 -5
  152. data/lib/docyard/templates/markdown/getting-started/installation.md.erb +0 -77
  153. data/lib/docyard/templates/markdown/guides/configuration.md.erb +0 -202
  154. data/lib/docyard/templates/markdown/guides/markdown-features.md.erb +0 -247
  155. data/lib/docyard/templates/markdown/index.md.erb +0 -82
@@ -0,0 +1,47 @@
1
+ .docyard-badge {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ padding: 0.125rem 0.5rem;
5
+ font-size: var(--text-xs);
6
+ font-weight: var(--font-medium);
7
+ line-height: var(--leading-normal);
8
+ border-radius: var(--radius-4xl);
9
+ white-space: nowrap;
10
+ vertical-align: middle;
11
+ }
12
+
13
+ .docyard-badge--default {
14
+ background-color: var(--muted);
15
+ color: var(--muted-foreground);
16
+ }
17
+
18
+ .docyard-badge--success {
19
+ background-color: var(--callout-tip-background);
20
+ color: var(--callout-tip-foreground);
21
+ border: 1px solid var(--callout-tip-border);
22
+ }
23
+
24
+ .docyard-badge--warning {
25
+ background-color: var(--callout-warning-background);
26
+ color: var(--callout-warning-foreground);
27
+ border: 1px solid var(--callout-warning-border);
28
+ }
29
+
30
+ .docyard-badge--danger {
31
+ background-color: var(--callout-danger-background);
32
+ color: var(--callout-danger-foreground);
33
+ border: 1px solid var(--callout-danger-border);
34
+ }
35
+
36
+ h1 .docyard-badge,
37
+ h2 .docyard-badge,
38
+ h3 .docyard-badge,
39
+ h4 .docyard-badge,
40
+ h5 .docyard-badge,
41
+ h6 .docyard-badge {
42
+ margin-left: var(--spacing-2);
43
+ font-size: var(--text-xs);
44
+ vertical-align: middle;
45
+ position: relative;
46
+ top: -0.1em;
47
+ }
@@ -0,0 +1,202 @@
1
+ .docyard-announcement {
2
+ position: fixed;
3
+ top: 0;
4
+ left: 0;
5
+ right: 0;
6
+ display: flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+ padding: 0.4rem 3rem;
10
+ background: linear-gradient(135deg, oklch(0.68 0.13 215) 0%, var(--primary) 15%, var(--primary) 85%, oklch(0.52 0.10 225) 100%);
11
+ color: white;
12
+ font-size: var(--text-sm);
13
+ z-index: 9999;
14
+ }
15
+
16
+ .docyard-announcement.is-dismissed {
17
+ animation: docyard-announcement-exit 0.35s cubic-bezier(0.4, 0, 1, 1) forwards;
18
+ }
19
+
20
+ @keyframes docyard-announcement-exit {
21
+ from {
22
+ transform: translateY(0);
23
+ opacity: 1;
24
+ }
25
+ to {
26
+ transform: translateY(-100%);
27
+ opacity: 0;
28
+ }
29
+ }
30
+
31
+ body.has-announcement {
32
+ --announcement-height: 2rem;
33
+ }
34
+
35
+ body.has-announcement .header {
36
+ top: var(--announcement-height);
37
+ }
38
+
39
+ body.has-announcement .tab-bar {
40
+ top: calc(var(--header-height) + var(--announcement-height));
41
+ }
42
+
43
+ body.has-announcement .sidebar {
44
+ top: calc(var(--header-height) + var(--tab-bar-height) + var(--announcement-height));
45
+ height: calc(100vh - var(--header-height) - var(--tab-bar-height) - var(--announcement-height));
46
+ }
47
+
48
+ body.has-announcement .doc-aside {
49
+ top: calc(var(--header-height) + var(--tab-bar-height) + var(--announcement-height));
50
+ }
51
+
52
+ body.has-announcement .secondary-header {
53
+ top: calc(var(--header-height) + var(--tab-bar-height) + var(--announcement-height));
54
+ }
55
+
56
+ body.has-announcement .layout {
57
+ padding-top: calc(var(--header-height) + var(--tab-bar-height) + var(--announcement-height));
58
+ }
59
+
60
+ body.has-announcement:not(.has-tabs) .sidebar {
61
+ top: calc(var(--header-height) + var(--announcement-height));
62
+ height: calc(100vh - var(--header-height) - var(--announcement-height));
63
+ }
64
+
65
+ body.has-announcement:not(.has-tabs) .doc-aside {
66
+ top: calc(var(--header-height) + var(--announcement-height));
67
+ }
68
+
69
+ body.has-announcement:not(.has-tabs) .layout {
70
+ padding-top: calc(var(--header-height) + var(--announcement-height));
71
+ }
72
+
73
+ .docyard-announcement__content {
74
+ display: flex;
75
+ align-items: center;
76
+ justify-content: center;
77
+ gap: 0.75rem;
78
+ min-width: 0;
79
+ overflow: hidden;
80
+ }
81
+
82
+ .docyard-announcement__text {
83
+ font-weight: 500;
84
+ letter-spacing: -0.01em;
85
+ white-space: nowrap;
86
+ overflow: hidden;
87
+ text-overflow: ellipsis;
88
+ }
89
+
90
+ .docyard-announcement__link {
91
+ display: inline-flex;
92
+ align-items: center;
93
+ gap: 0.375rem;
94
+ color: white;
95
+ text-decoration: none;
96
+ min-width: 0;
97
+ transition: gap 0.2s cubic-bezier(0.16, 1, 0.3, 1);
98
+ }
99
+
100
+ .docyard-announcement__link:hover {
101
+ gap: 0.5rem;
102
+ color: white;
103
+ }
104
+
105
+ .docyard-announcement__link .icon {
106
+ width: 1rem;
107
+ height: 1rem;
108
+ flex-shrink: 0;
109
+ transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1);
110
+ }
111
+
112
+ .docyard-announcement__link:hover .icon {
113
+ transform: translateX(2px);
114
+ }
115
+
116
+ .docyard-announcement[data-has-button="true"] .docyard-announcement__link .icon {
117
+ display: none;
118
+ }
119
+
120
+ .docyard-announcement__button {
121
+ display: inline-flex;
122
+ align-items: center;
123
+ flex-shrink: 0;
124
+ padding: 0.175rem 0.625rem;
125
+ background: rgba(255, 255, 255, 0.15);
126
+ border: 1px solid rgba(255, 255, 255, 0.25);
127
+ border-radius: 9999px;
128
+ color: white;
129
+ font-size: var(--text-xs);
130
+ font-weight: 600;
131
+ text-decoration: none;
132
+ backdrop-filter: blur(4px);
133
+ transition:
134
+ transform 0.5s cubic-bezier(0.16, 1, 0.3, 1),
135
+ background 0.2s cubic-bezier(0.16, 1, 0.3, 1),
136
+ border-color 0.2s cubic-bezier(0.16, 1, 0.3, 1);
137
+ }
138
+
139
+ .docyard-announcement__button:hover {
140
+ background: rgba(255, 255, 255, 0.25);
141
+ border-color: rgba(255, 255, 255, 0.4);
142
+ color: white;
143
+ }
144
+
145
+ .docyard-announcement__button:active {
146
+ transform: scale(0.95);
147
+ transition: transform 0.1s cubic-bezier(0.4, 0, 1, 1);
148
+ }
149
+
150
+ .docyard-announcement__dismiss {
151
+ position: absolute;
152
+ right: 0.75rem;
153
+ display: flex;
154
+ align-items: center;
155
+ justify-content: center;
156
+ width: 1.5rem;
157
+ height: 1.5rem;
158
+ padding: 0;
159
+ background: transparent;
160
+ border: none;
161
+ border-radius: var(--radius-4xl);
162
+ color: white;
163
+ cursor: pointer;
164
+ transition: background-color var(--transition-fast), color var(--transition-fast);
165
+ }
166
+
167
+ .docyard-announcement__dismiss:hover {
168
+ color: white;
169
+ background-color: rgba(255, 255, 255, 0.15);
170
+ }
171
+
172
+ .docyard-announcement__dismiss .icon {
173
+ width: 0.875rem;
174
+ height: 0.875rem;
175
+ }
176
+
177
+ @media (max-width: 768px) {
178
+ .docyard-announcement {
179
+ padding: 0.4rem 2.5rem;
180
+ font-size: var(--text-xs);
181
+ }
182
+
183
+ .docyard-announcement__content {
184
+ gap: 0.5rem;
185
+ }
186
+
187
+ .docyard-announcement[data-has-button="true"] .docyard-announcement__link .icon {
188
+ display: inline-flex;
189
+ }
190
+
191
+ .docyard-announcement__button {
192
+ display: none;
193
+ }
194
+
195
+ .docyard-announcement__dismiss {
196
+ right: 0.5rem;
197
+ }
198
+ }
199
+
200
+ .dark .docyard-announcement {
201
+ background: linear-gradient(135deg, oklch(0.78 0.14 210) 0%, var(--primary) 15%, var(--primary) 85%, oklch(0.58 0.11 225) 100%);
202
+ }
@@ -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;
@@ -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
+ }