@cbnventures/docusaurus-preset-nova 0.21.0 → 0.22.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 (108) hide show
  1. package/build/package.json +8 -5
  2. package/build/src/lib/regex.d.ts +2 -0
  3. package/build/src/lib/regex.d.ts.map +1 -1
  4. package/build/src/lib/regex.js +47 -42
  5. package/build/src/lib/regex.js.map +1 -1
  6. package/build/src/lib/search/indexer.d.ts.map +1 -1
  7. package/build/src/lib/search/indexer.js +3 -1
  8. package/build/src/lib/search/indexer.js.map +1 -1
  9. package/build/src/lib/search/worker.js +4 -3
  10. package/build/src/lib/search/worker.js.map +1 -1
  11. package/build/src/lib/translations.d.ts.map +1 -1
  12. package/build/src/lib/translations.js +20 -14
  13. package/build/src/lib/translations.js.map +1 -1
  14. package/build/src/lib/use-navbar-active-item.d.ts.map +1 -1
  15. package/build/src/lib/use-navbar-active-item.js +12 -1
  16. package/build/src/lib/use-navbar-active-item.js.map +1 -1
  17. package/build/src/styles/presets/envoy/theme/Navbar/Bridge/style.css +39 -10
  18. package/build/src/styles/presets/envoy/theme/Navbar/Canopy/style.css +50 -11
  19. package/build/src/styles/presets/envoy/theme/Navbar/Compass/style.css +41 -11
  20. package/build/src/styles/presets/envoy/theme/Navbar/Monolith/style.css +20 -5
  21. package/build/src/styles/presets/envoy/theme/Navbar/More/style.css +4 -3
  22. package/build/src/styles/presets/envoy/theme/Navbar/style.css +13 -5
  23. package/build/src/styles/presets/foundry/theme/Navbar/Bridge/style.css +41 -11
  24. package/build/src/styles/presets/foundry/theme/Navbar/Canopy/style.css +40 -11
  25. package/build/src/styles/presets/foundry/theme/Navbar/Compass/style.css +41 -11
  26. package/build/src/styles/presets/foundry/theme/Navbar/Monolith/style.css +20 -5
  27. package/build/src/styles/presets/foundry/theme/Navbar/More/style.css +4 -3
  28. package/build/src/styles/presets/foundry/theme/Navbar/style.css +13 -5
  29. package/build/src/styles/presets/lantern/theme/Navbar/Bridge/style.css +37 -10
  30. package/build/src/styles/presets/lantern/theme/Navbar/Canopy/style.css +45 -12
  31. package/build/src/styles/presets/lantern/theme/Navbar/Compass/style.css +37 -11
  32. package/build/src/styles/presets/lantern/theme/Navbar/Monolith/style.css +23 -5
  33. package/build/src/styles/presets/lantern/theme/Navbar/More/style.css +4 -3
  34. package/build/src/styles/presets/lantern/theme/Navbar/style.css +13 -4
  35. package/build/src/styles/presets/marshal/theme/Navbar/Bridge/style.css +50 -10
  36. package/build/src/styles/presets/marshal/theme/Navbar/Canopy/style.css +41 -12
  37. package/build/src/styles/presets/marshal/theme/Navbar/Compass/style.css +41 -10
  38. package/build/src/styles/presets/marshal/theme/Navbar/Monolith/style.css +34 -3
  39. package/build/src/styles/presets/marshal/theme/Navbar/More/style.css +4 -3
  40. package/build/src/styles/presets/marshal/theme/Navbar/style.css +16 -5
  41. package/build/src/styles/presets/sample/theme/Navbar/Canopy/style.css +16 -0
  42. package/build/src/styles/presets/sentinel/theme/Navbar/Bridge/style.css +41 -11
  43. package/build/src/styles/presets/sentinel/theme/Navbar/Canopy/style.css +40 -11
  44. package/build/src/styles/presets/sentinel/theme/Navbar/Compass/style.css +41 -11
  45. package/build/src/styles/presets/sentinel/theme/Navbar/Monolith/style.css +20 -5
  46. package/build/src/styles/presets/sentinel/theme/Navbar/More/style.css +4 -3
  47. package/build/src/styles/presets/sentinel/theme/Navbar/style.css +14 -4
  48. package/build/src/styles/presets/signal/theme/Navbar/Bridge/style.css +36 -13
  49. package/build/src/styles/presets/signal/theme/Navbar/Canopy/style.css +28 -11
  50. package/build/src/styles/presets/signal/theme/Navbar/Compass/style.css +41 -12
  51. package/build/src/styles/presets/signal/theme/Navbar/Monolith/style.css +22 -5
  52. package/build/src/styles/presets/signal/theme/Navbar/style.css +19 -5
  53. package/build/src/styles/theme/Navbar/Bridge/style.css +33 -0
  54. package/build/src/styles/theme/Navbar/Canopy/style.css +33 -0
  55. package/build/src/styles/theme/Navbar/Compass/style.css +33 -0
  56. package/build/src/styles/theme/Navbar/Monolith/style.css +33 -0
  57. package/build/src/styles/theme/NavbarItem/style.css +68 -0
  58. package/build/src/tests/bin-git-tracked.test.d.ts +2 -0
  59. package/build/src/tests/bin-git-tracked.test.d.ts.map +1 -0
  60. package/build/src/tests/bin-git-tracked.test.js +43 -0
  61. package/build/src/tests/bin-git-tracked.test.js.map +1 -0
  62. package/build/src/tests/lib/search/worker.test.js +15 -0
  63. package/build/src/tests/lib/search/worker.test.js.map +1 -1
  64. package/build/src/tests/lib/translations.test.js +20 -20
  65. package/build/src/tests/lib/translations.test.js.map +1 -1
  66. package/build/src/tests/since-version.test.js +2 -1
  67. package/build/src/tests/since-version.test.js.map +1 -1
  68. package/build/src/theme/BlogArchivePage/index.js +1 -1
  69. package/build/src/theme/BlogArchivePage/index.js.map +1 -1
  70. package/build/src/theme/Navbar/Bridge/mobile-menu.d.ts.map +1 -1
  71. package/build/src/theme/Navbar/Bridge/mobile-menu.js +29 -1
  72. package/build/src/theme/Navbar/Bridge/mobile-menu.js.map +1 -1
  73. package/build/src/theme/Navbar/Canopy/mobile-menu.d.ts.map +1 -1
  74. package/build/src/theme/Navbar/Canopy/mobile-menu.js +29 -1
  75. package/build/src/theme/Navbar/Canopy/mobile-menu.js.map +1 -1
  76. package/build/src/theme/Navbar/Compass/mobile-menu.d.ts.map +1 -1
  77. package/build/src/theme/Navbar/Compass/mobile-menu.js +29 -1
  78. package/build/src/theme/Navbar/Compass/mobile-menu.js.map +1 -1
  79. package/build/src/theme/Navbar/Monolith/mobile-menu.d.ts.map +1 -1
  80. package/build/src/theme/Navbar/Monolith/mobile-menu.js +29 -1
  81. package/build/src/theme/Navbar/Monolith/mobile-menu.js.map +1 -1
  82. package/build/src/theme/NavbarItem/dropdown-navbar-item.d.ts.map +1 -1
  83. package/build/src/theme/NavbarItem/dropdown-navbar-item.js +14 -1
  84. package/build/src/theme/NavbarItem/dropdown-navbar-item.js.map +1 -1
  85. package/build/src/types/lib/search/indexer.d.ts +4 -0
  86. package/build/src/types/lib/search/worker.d.ts +7 -0
  87. package/build/src/types/lib/translations.d.ts +4 -0
  88. package/build/src/types/lib/use-navbar-active-item.d.ts +6 -0
  89. package/build/src/types/tests/bin-git-tracked.test.d.ts +52 -0
  90. package/build/src/types/tests/lib/search/worker.test.d.ts +13 -0
  91. package/build/src/types/theme/Navbar/Bridge/mobile-menu.d.ts +21 -5
  92. package/build/src/types/theme/Navbar/Canopy/mobile-menu.d.ts +21 -5
  93. package/build/src/types/theme/Navbar/Compass/mobile-menu.d.ts +23 -7
  94. package/build/src/types/theme/Navbar/Monolith/mobile-menu.d.ts +21 -5
  95. package/build/src/types/theme/NavbarItem/index.d.ts +12 -0
  96. package/nova-config.d.ts +14 -2
  97. package/nova-sidebars.d.ts +1 -0
  98. package/package.json +8 -5
  99. package/build/src/tests/demo-coverage.test.d.ts +0 -2
  100. package/build/src/tests/demo-coverage.test.d.ts.map +0 -1
  101. package/build/src/tests/demo-coverage.test.js +0 -178
  102. package/build/src/tests/demo-coverage.test.js.map +0 -1
  103. package/build/src/tests/demo-logo-override.test.d.ts +0 -2
  104. package/build/src/tests/demo-logo-override.test.d.ts.map +0 -1
  105. package/build/src/tests/demo-logo-override.test.js +0 -42
  106. package/build/src/tests/demo-logo-override.test.js.map +0 -1
  107. package/build/src/types/tests/demo-coverage.test.d.ts +0 -176
  108. package/build/src/types/tests/demo-logo-override.test.d.ts +0 -45
@@ -190,19 +190,41 @@
190
190
  transition: color var(--nova-marshal-transition);
191
191
  }
192
192
 
193
+ .nova-navbar-monolith-menu-dropdown-summary {
194
+ gap: 0.75rem;
195
+
196
+ font-family: var(--nova-font-code);
197
+ font-size: 0.8rem;
198
+ font-weight: 600;
199
+ letter-spacing: 0.08em;
200
+ text-transform: uppercase;
201
+ color: var(--nova-color-primary-700);
202
+ border-radius: 2px;
203
+
204
+ transition: color var(--nova-marshal-transition);
205
+ }
206
+
193
207
  .nova-navbar-monolith-menu-item:hover,
194
- .nova-navbar-monolith-menu-item:focus-visible {
208
+ .nova-navbar-monolith-menu-item:focus-visible,
209
+ .nova-navbar-monolith-menu-dropdown-summary:hover,
210
+ .nova-navbar-monolith-menu-dropdown-summary:focus-visible {
195
211
  color: var(--nova-color-primary-800);
196
212
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 94%);
197
213
  text-decoration: none;
198
214
  }
199
215
 
200
216
  [data-theme="dark"] .nova-navbar-monolith-menu-item:hover,
201
- [data-theme="dark"] .nova-navbar-monolith-menu-item:focus-visible {
217
+ [data-theme="dark"] .nova-navbar-monolith-menu-item:focus-visible,
218
+ [data-theme="dark"] .nova-navbar-monolith-menu-dropdown-summary:hover,
219
+ [data-theme="dark"] .nova-navbar-monolith-menu-dropdown-summary:focus-visible {
202
220
  color: var(--nova-color-primary-300);
203
221
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 88%);
204
222
  }
205
223
 
224
+ [data-theme="dark"] .nova-navbar-monolith-menu-dropdown-summary {
225
+ color: var(--nova-color-primary-300);
226
+ }
227
+
206
228
  .nova-navbar-monolith-menu-item[aria-current="page"] {
207
229
  color: var(--nova-color-primary-800);
208
230
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 88%);
@@ -230,8 +252,17 @@
230
252
  * `motion.staggeredReveals: false` so items reveal together.
231
253
  * ============================ */
232
254
 
233
- .nova-navbar-monolith-menu-item {
255
+ .nova-navbar-monolith-menu-item,
256
+ .nova-navbar-monolith-menu-dropdown {
234
257
  opacity: 0;
235
258
 
236
259
  animation: marshal-fade-in var(--nova-marshal-transition) forwards;
237
260
  }
261
+
262
+ /* ============================
263
+ * 9. Mobile menu dropdown children - indent
264
+ * ============================ */
265
+
266
+ .nova-navbar-monolith-menu-dropdown-children {
267
+ padding-inline-start: 1.75rem;
268
+ }
@@ -2,9 +2,10 @@
2
2
  * Marshal - `Navbar/More` theme overlay.
3
3
  *
4
4
  * The popover menu, item link, and active-item styling are grouped with
5
- * `.nova-locale-dropdown-menu` / `.nova-version-dropdown-menu` in this
6
- * preset's `Navbar/style.css` so all three navbar dropdowns share one
7
- * surface treatment. No per-component overrides needed here.
5
+ * `.nova-locale-dropdown-menu` / `.nova-version-dropdown-menu` /
6
+ * `.nova-dropdown-menu` in this preset's `Navbar/style.css` so all four
7
+ * navbar dropdowns share one surface treatment. No per-component
8
+ * overrides needed here.
8
9
  *
9
10
  * @since 0.18.0
10
11
  */
@@ -57,6 +57,7 @@
57
57
  /* Popover menu - mirrors search-dropdown ledger-sheet treatment. */
58
58
  .nova-locale-dropdown-menu,
59
59
  .nova-version-dropdown-menu,
60
+ .nova-dropdown-menu,
60
61
  .nova-navbar-more-menu {
61
62
  padding: 0.5rem 0;
62
63
 
@@ -67,6 +68,7 @@
67
68
 
68
69
  [data-theme="dark"] .nova-locale-dropdown-menu,
69
70
  [data-theme="dark"] .nova-version-dropdown-menu,
71
+ [data-theme="dark"] .nova-dropdown-menu,
70
72
  [data-theme="dark"] .nova-navbar-more-menu {
71
73
  background-color: color-mix(in srgb, #ffffff, var(--nova-marshal-bg) 88%);
72
74
  border-color: var(--nova-marshal-border);
@@ -74,13 +76,15 @@
74
76
 
75
77
  /* Item link - Plex Serif body voice, ledger-compact padding.
76
78
  Explicit `display: block`, `border-radius: 0`, `text-transform: none`,
77
- `letter-spacing: normal` defend the More popover items from the variant
78
- nav-item cluster rule (`.nova-navbar-canopy-items a`) which would
79
- otherwise leak inline-flex, sharp 2px corners (rendered too tight in
80
- menu rows), uppercase, and 0.1em tracking onto items rendered inside
81
- the popover. No-op for locale/version where no variant rule competes. */
79
+ `letter-spacing: normal` defend the More and generic dropdown popover
80
+ items from the variant nav-item cluster rule (`.nova-navbar-canopy-items a`)
81
+ which would otherwise leak inline-flex, sharp 2px corners (rendered too
82
+ tight in menu rows), uppercase, and 0.1em tracking onto items rendered
83
+ inside the popover. No-op for locale/version where no variant rule
84
+ competes. */
82
85
  .nova-locale-dropdown-item-link,
83
86
  .nova-version-dropdown-item-link,
87
+ .nova-dropdown-menu .nova-dropdown-item a,
84
88
  .nova-navbar-more-menu .nova-navbar-more-item a {
85
89
  display: block;
86
90
  padding: 0.375rem 0.75rem;
@@ -105,6 +109,7 @@
105
109
  `marshal-ink` token apply in dark mode. */
106
110
  [data-theme="dark"] .nova-locale-dropdown-item-link,
107
111
  [data-theme="dark"] .nova-version-dropdown-item-link,
112
+ [data-theme="dark"] .nova-dropdown-menu .nova-dropdown-item a,
108
113
  [data-theme="dark"] .nova-navbar-more-menu .nova-navbar-more-item a {
109
114
  color: var(--nova-marshal-ink);
110
115
  }
@@ -113,6 +118,8 @@
113
118
  .nova-locale-dropdown-item-link:focus-visible,
114
119
  .nova-version-dropdown-item-link:hover,
115
120
  .nova-version-dropdown-item-link:focus-visible,
121
+ .nova-dropdown-menu .nova-dropdown-item a:hover,
122
+ .nova-dropdown-menu .nova-dropdown-item a:focus-visible,
116
123
  .nova-navbar-more-menu .nova-navbar-more-item a:hover,
117
124
  .nova-navbar-more-menu .nova-navbar-more-item a:focus-visible {
118
125
  text-decoration: none;
@@ -122,6 +129,8 @@
122
129
  .nova-locale-dropdown-item:not(.nova-locale-dropdown-item--active) > .nova-locale-dropdown-item-link:focus-visible,
123
130
  .nova-version-dropdown-item:not(.nova-version-dropdown-item--active) > .nova-version-dropdown-item-link:hover,
124
131
  .nova-version-dropdown-item:not(.nova-version-dropdown-item--active) > .nova-version-dropdown-item-link:focus-visible,
132
+ .nova-dropdown-menu .nova-dropdown-item a:not(.navbar__link--active):not([aria-current="page"]):hover,
133
+ .nova-dropdown-menu .nova-dropdown-item a:not(.navbar__link--active):not([aria-current="page"]):focus-visible,
125
134
  .nova-navbar-more-menu .nova-navbar-more-item a:not(.navbar__link--active):not([aria-current="page"]):hover,
126
135
  .nova-navbar-more-menu .nova-navbar-more-item a:not(.navbar__link--active):not([aria-current="page"]):focus-visible {
127
136
  color: var(--nova-color-accent-800);
@@ -132,6 +141,8 @@
132
141
  [data-theme="dark"] .nova-locale-dropdown-item:not(.nova-locale-dropdown-item--active) > .nova-locale-dropdown-item-link:focus-visible,
133
142
  [data-theme="dark"] .nova-version-dropdown-item:not(.nova-version-dropdown-item--active) > .nova-version-dropdown-item-link:hover,
134
143
  [data-theme="dark"] .nova-version-dropdown-item:not(.nova-version-dropdown-item--active) > .nova-version-dropdown-item-link:focus-visible,
144
+ [data-theme="dark"] .nova-dropdown-menu .nova-dropdown-item a:not(.navbar__link--active):not([aria-current="page"]):hover,
145
+ [data-theme="dark"] .nova-dropdown-menu .nova-dropdown-item a:not(.navbar__link--active):not([aria-current="page"]):focus-visible,
135
146
  [data-theme="dark"] .nova-navbar-more-menu .nova-navbar-more-item a:not(.navbar__link--active):not([aria-current="page"]):hover,
136
147
  [data-theme="dark"] .nova-navbar-more-menu .nova-navbar-more-item a:not(.navbar__link--active):not([aria-current="page"]):focus-visible {
137
148
  color: var(--nova-color-accent-300);
@@ -59,3 +59,19 @@
59
59
  /* ============================
60
60
  * 12. Mobile menu brand
61
61
  * ============================ */
62
+
63
+ /* ============================
64
+ * 13. Mobile Menu - Close
65
+ * ============================ */
66
+
67
+ /* ============================
68
+ * 14. Mobile Menu - Items
69
+ * ============================ */
70
+
71
+ /* ============================
72
+ * 15. Mobile Menu - Animation
73
+ * ============================ */
74
+
75
+ /* ============================
76
+ * 16. Mobile Menu - Dropdown Spacing
77
+ * ============================ */
@@ -75,7 +75,8 @@
75
75
 
76
76
  .nova-navbar-bridge-items a,
77
77
  .nova-navbar-bridge-items button,
78
- .nova-navbar-bridge-items .nova-navbar-more-summary {
78
+ .nova-navbar-bridge-items .nova-navbar-more-summary,
79
+ .nova-navbar-bridge-items .nova-dropdown-summary {
79
80
  display: inline-flex;
80
81
  align-items: center;
81
82
  min-height: 2.25rem;
@@ -95,7 +96,10 @@
95
96
  .nova-navbar-bridge-items button:focus-visible,
96
97
  .nova-navbar-bridge-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"])) > .nova-navbar-more-summary:hover,
97
98
  .nova-navbar-bridge-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"])) > .nova-navbar-more-summary:focus-visible,
98
- .nova-navbar-bridge-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"]))[open] > .nova-navbar-more-summary {
99
+ .nova-navbar-bridge-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"]))[open] > .nova-navbar-more-summary,
100
+ .nova-navbar-bridge-items .nova-dropdown:not(.nova-dropdown--active) > .nova-dropdown-summary:hover,
101
+ .nova-navbar-bridge-items .nova-dropdown:not(.nova-dropdown--active) > .nova-dropdown-summary:focus-visible,
102
+ .nova-navbar-bridge-items .nova-dropdown:not(.nova-dropdown--active)[open] > .nova-dropdown-summary {
99
103
  color: var(--nova-color-primary-700);
100
104
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 95%);
101
105
  text-decoration: none;
@@ -103,7 +107,8 @@
103
107
 
104
108
  [data-theme="dark"] .nova-navbar-bridge-items a,
105
109
  [data-theme="dark"] .nova-navbar-bridge-items button,
106
- [data-theme="dark"] .nova-navbar-bridge-items .nova-navbar-more-summary {
110
+ [data-theme="dark"] .nova-navbar-bridge-items .nova-navbar-more-summary,
111
+ [data-theme="dark"] .nova-navbar-bridge-items .nova-dropdown-summary {
107
112
  color: var(--nova-color-text-muted);
108
113
  }
109
114
 
@@ -113,7 +118,10 @@
113
118
  [data-theme="dark"] .nova-navbar-bridge-items button:focus-visible,
114
119
  [data-theme="dark"] .nova-navbar-bridge-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"])) > .nova-navbar-more-summary:hover,
115
120
  [data-theme="dark"] .nova-navbar-bridge-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"])) > .nova-navbar-more-summary:focus-visible,
116
- [data-theme="dark"] .nova-navbar-bridge-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"]))[open] > .nova-navbar-more-summary {
121
+ [data-theme="dark"] .nova-navbar-bridge-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"]))[open] > .nova-navbar-more-summary,
122
+ [data-theme="dark"] .nova-navbar-bridge-items .nova-dropdown:not(.nova-dropdown--active) > .nova-dropdown-summary:hover,
123
+ [data-theme="dark"] .nova-navbar-bridge-items .nova-dropdown:not(.nova-dropdown--active) > .nova-dropdown-summary:focus-visible,
124
+ [data-theme="dark"] .nova-navbar-bridge-items .nova-dropdown:not(.nova-dropdown--active)[open] > .nova-dropdown-summary {
117
125
  color: var(--nova-color-primary-400);
118
126
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 92%);
119
127
  }
@@ -125,7 +133,8 @@
125
133
  .nova-navbar-bridge-items a[aria-current="page"],
126
134
  .nova-navbar-bridge-items a.navbar__link--active,
127
135
  .nova-navbar-bridge-items .nova-navbar-more:has(a[aria-current="page"]) > .nova-navbar-more-summary,
128
- .nova-navbar-bridge-items .nova-navbar-more:has(a.navbar__link--active) > .nova-navbar-more-summary {
136
+ .nova-navbar-bridge-items .nova-navbar-more:has(a.navbar__link--active) > .nova-navbar-more-summary,
137
+ .nova-navbar-bridge-items .nova-dropdown--active > .nova-dropdown-summary {
129
138
  font-weight: 600;
130
139
  color: var(--nova-color-primary-700);
131
140
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 92%);
@@ -134,7 +143,8 @@
134
143
  [data-theme="dark"] .nova-navbar-bridge-items a[aria-current="page"],
135
144
  [data-theme="dark"] .nova-navbar-bridge-items a.navbar__link--active,
136
145
  [data-theme="dark"] .nova-navbar-bridge-items .nova-navbar-more:has(a[aria-current="page"]) > .nova-navbar-more-summary,
137
- [data-theme="dark"] .nova-navbar-bridge-items .nova-navbar-more:has(a.navbar__link--active) > .nova-navbar-more-summary {
146
+ [data-theme="dark"] .nova-navbar-bridge-items .nova-navbar-more:has(a.navbar__link--active) > .nova-navbar-more-summary,
147
+ [data-theme="dark"] .nova-navbar-bridge-items .nova-dropdown--active > .nova-dropdown-summary {
138
148
  color: var(--nova-color-primary-400);
139
149
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 88%);
140
150
  }
@@ -297,7 +307,8 @@
297
307
  gap: 0.125rem;
298
308
  }
299
309
 
300
- .nova-navbar-bridge-menu-item {
310
+ .nova-navbar-bridge-menu-item,
311
+ .nova-navbar-bridge-menu-dropdown-summary {
301
312
  gap: 0.75rem;
302
313
  font-family: var(--nova-font-display);
303
314
  font-size: 0.875rem;
@@ -311,18 +322,23 @@
311
322
  }
312
323
 
313
324
  .nova-navbar-bridge-menu-item:hover,
314
- .nova-navbar-bridge-menu-item:focus-visible {
325
+ .nova-navbar-bridge-menu-item:focus-visible,
326
+ .nova-navbar-bridge-menu-dropdown-summary:hover,
327
+ .nova-navbar-bridge-menu-dropdown-summary:focus-visible {
315
328
  color: var(--nova-color-primary-700);
316
329
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 94%);
317
330
  box-shadow: inset 0 0 0 1px var(--nova-color-primary-500);
318
331
  }
319
332
 
320
- [data-theme="dark"] .nova-navbar-bridge-menu-item {
333
+ [data-theme="dark"] .nova-navbar-bridge-menu-item,
334
+ [data-theme="dark"] .nova-navbar-bridge-menu-dropdown-summary {
321
335
  color: var(--nova-color-border);
322
336
  }
323
337
 
324
338
  [data-theme="dark"] .nova-navbar-bridge-menu-item:hover,
325
- [data-theme="dark"] .nova-navbar-bridge-menu-item:focus-visible {
339
+ [data-theme="dark"] .nova-navbar-bridge-menu-item:focus-visible,
340
+ [data-theme="dark"] .nova-navbar-bridge-menu-dropdown-summary:hover,
341
+ [data-theme="dark"] .nova-navbar-bridge-menu-dropdown-summary:focus-visible {
326
342
  color: var(--nova-color-primary-300);
327
343
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 92%);
328
344
  }
@@ -351,8 +367,22 @@
351
367
  animation: sentinel-fade-in var(--nova-motion-duration) ease;
352
368
  }
353
369
 
354
- .nova-navbar-bridge-menu-item {
370
+ .nova-navbar-bridge-menu-item,
371
+ .nova-navbar-bridge-menu-dropdown {
355
372
  opacity: 0;
356
373
 
357
374
  animation: sentinel-slide-up 350ms ease forwards;
358
375
  }
376
+
377
+ /* ============================
378
+ * 12. Mobile Menu - Dropdown Spacing
379
+ * ============================ */
380
+
381
+ .nova-navbar-bridge-menu-dropdown[open] > .nova-navbar-bridge-menu-dropdown-summary {
382
+ margin-bottom: 0.125rem;
383
+ }
384
+
385
+ .nova-navbar-bridge-menu-dropdown-children {
386
+ gap: 0.125rem;
387
+ padding-inline-start: 1.75rem;
388
+ }
@@ -64,7 +64,8 @@
64
64
  }
65
65
 
66
66
  .nova-navbar-canopy-items a,
67
- .nova-navbar-canopy-items .nova-navbar-more-summary {
67
+ .nova-navbar-canopy-items .nova-navbar-more-summary,
68
+ .nova-navbar-canopy-items .nova-dropdown-summary {
68
69
  min-height: 2.25rem;
69
70
  font-size: 0.875rem;
70
71
  font-weight: 500;
@@ -81,7 +82,10 @@
81
82
  .nova-navbar-canopy-items a:not(.navbar__link--active):not([aria-current="page"]):focus-visible,
82
83
  .nova-navbar-canopy-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"])) > .nova-navbar-more-summary:hover,
83
84
  .nova-navbar-canopy-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"])) > .nova-navbar-more-summary:focus-visible,
84
- .nova-navbar-canopy-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"]))[open] > .nova-navbar-more-summary {
85
+ .nova-navbar-canopy-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"]))[open] > .nova-navbar-more-summary,
86
+ .nova-navbar-canopy-items .nova-dropdown:not(.nova-dropdown--active) > .nova-dropdown-summary:hover,
87
+ .nova-navbar-canopy-items .nova-dropdown:not(.nova-dropdown--active) > .nova-dropdown-summary:focus-visible,
88
+ .nova-navbar-canopy-items .nova-dropdown:not(.nova-dropdown--active)[open] > .nova-dropdown-summary {
85
89
  color: var(--nova-color-primary-700);
86
90
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 95%);
87
91
  text-decoration: none;
@@ -94,14 +98,16 @@
94
98
  .nova-navbar-canopy-items a[aria-current="page"],
95
99
  .nova-navbar-canopy-items a.navbar__link--active,
96
100
  .nova-navbar-canopy-items .nova-navbar-more:has(a[aria-current="page"]) > .nova-navbar-more-summary,
97
- .nova-navbar-canopy-items .nova-navbar-more:has(a.navbar__link--active) > .nova-navbar-more-summary {
101
+ .nova-navbar-canopy-items .nova-navbar-more:has(a.navbar__link--active) > .nova-navbar-more-summary,
102
+ .nova-navbar-canopy-items .nova-dropdown--active > .nova-dropdown-summary {
98
103
  font-weight: 600;
99
104
  color: var(--nova-color-primary-700);
100
105
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 92%);
101
106
  }
102
107
 
103
108
  [data-theme="dark"] .nova-navbar-canopy-items a,
104
- [data-theme="dark"] .nova-navbar-canopy-items .nova-navbar-more-summary {
109
+ [data-theme="dark"] .nova-navbar-canopy-items .nova-navbar-more-summary,
110
+ [data-theme="dark"] .nova-navbar-canopy-items .nova-dropdown-summary {
105
111
  color: var(--nova-color-text-muted);
106
112
  }
107
113
 
@@ -109,7 +115,10 @@
109
115
  [data-theme="dark"] .nova-navbar-canopy-items a:not(.navbar__link--active):not([aria-current="page"]):focus-visible,
110
116
  [data-theme="dark"] .nova-navbar-canopy-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"])) > .nova-navbar-more-summary:hover,
111
117
  [data-theme="dark"] .nova-navbar-canopy-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"])) > .nova-navbar-more-summary:focus-visible,
112
- [data-theme="dark"] .nova-navbar-canopy-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"]))[open] > .nova-navbar-more-summary {
118
+ [data-theme="dark"] .nova-navbar-canopy-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"]))[open] > .nova-navbar-more-summary,
119
+ [data-theme="dark"] .nova-navbar-canopy-items .nova-dropdown:not(.nova-dropdown--active) > .nova-dropdown-summary:hover,
120
+ [data-theme="dark"] .nova-navbar-canopy-items .nova-dropdown:not(.nova-dropdown--active) > .nova-dropdown-summary:focus-visible,
121
+ [data-theme="dark"] .nova-navbar-canopy-items .nova-dropdown:not(.nova-dropdown--active)[open] > .nova-dropdown-summary {
113
122
  color: var(--nova-color-primary-400);
114
123
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 92%);
115
124
  }
@@ -117,7 +126,8 @@
117
126
  [data-theme="dark"] .nova-navbar-canopy-items a[aria-current="page"],
118
127
  [data-theme="dark"] .nova-navbar-canopy-items a.navbar__link--active,
119
128
  [data-theme="dark"] .nova-navbar-canopy-items .nova-navbar-more:has(a[aria-current="page"]) > .nova-navbar-more-summary,
120
- [data-theme="dark"] .nova-navbar-canopy-items .nova-navbar-more:has(a.navbar__link--active) > .nova-navbar-more-summary {
129
+ [data-theme="dark"] .nova-navbar-canopy-items .nova-navbar-more:has(a.navbar__link--active) > .nova-navbar-more-summary,
130
+ [data-theme="dark"] .nova-navbar-canopy-items .nova-dropdown--active > .nova-dropdown-summary {
121
131
  color: var(--nova-color-primary-400);
122
132
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 88%);
123
133
  }
@@ -326,7 +336,8 @@
326
336
  gap: 0.5rem;
327
337
  }
328
338
 
329
- .nova-navbar-canopy-menu-item {
339
+ .nova-navbar-canopy-menu-item,
340
+ .nova-navbar-canopy-menu-dropdown-summary {
330
341
  flex-direction: column;
331
342
  justify-content: center;
332
343
 
@@ -350,7 +361,9 @@
350
361
  }
351
362
 
352
363
  .nova-navbar-canopy-menu-item:hover,
353
- .nova-navbar-canopy-menu-item:focus-visible {
364
+ .nova-navbar-canopy-menu-item:focus-visible,
365
+ .nova-navbar-canopy-menu-dropdown-summary:hover,
366
+ .nova-navbar-canopy-menu-dropdown-summary:focus-visible {
354
367
  color: var(--nova-color-primary-700);
355
368
 
356
369
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 94%);
@@ -358,7 +371,8 @@
358
371
  box-shadow: inset 0 0 0 1px var(--nova-color-primary-500);
359
372
  }
360
373
 
361
- [data-theme="dark"] .nova-navbar-canopy-menu-item {
374
+ [data-theme="dark"] .nova-navbar-canopy-menu-item,
375
+ [data-theme="dark"] .nova-navbar-canopy-menu-dropdown-summary {
362
376
  color: var(--nova-color-text-muted);
363
377
 
364
378
  background-color: color-mix(in srgb, var(--nova-color-text-muted), transparent 94%);
@@ -366,7 +380,9 @@
366
380
  }
367
381
 
368
382
  [data-theme="dark"] .nova-navbar-canopy-menu-item:hover,
369
- [data-theme="dark"] .nova-navbar-canopy-menu-item:focus-visible {
383
+ [data-theme="dark"] .nova-navbar-canopy-menu-item:focus-visible,
384
+ [data-theme="dark"] .nova-navbar-canopy-menu-dropdown-summary:hover,
385
+ [data-theme="dark"] .nova-navbar-canopy-menu-dropdown-summary:focus-visible {
370
386
  color: var(--nova-color-primary-300);
371
387
 
372
388
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 92%);
@@ -398,8 +414,21 @@
398
414
  animation: sentinel-fade-in var(--nova-motion-duration) ease;
399
415
  }
400
416
 
401
- .nova-navbar-canopy-menu-item {
417
+ .nova-navbar-canopy-menu-item,
418
+ .nova-navbar-canopy-menu-dropdown {
402
419
  opacity: 0;
403
420
 
404
421
  animation: sentinel-slide-up 350ms ease forwards;
405
422
  }
423
+
424
+ /* ============================
425
+ * 14. Mobile Menu - Dropdown Spacing
426
+ * ============================ */
427
+
428
+ .nova-navbar-canopy-menu-dropdown[open] > .nova-navbar-canopy-menu-dropdown-summary {
429
+ margin-bottom: 0.5rem;
430
+ }
431
+
432
+ .nova-navbar-canopy-menu-dropdown-children {
433
+ gap: 0.5rem;
434
+ }
@@ -69,7 +69,8 @@
69
69
  }
70
70
 
71
71
  .nova-navbar-compass-items a,
72
- .nova-navbar-compass-items .nova-navbar-more-summary {
72
+ .nova-navbar-compass-items .nova-navbar-more-summary,
73
+ .nova-navbar-compass-items .nova-dropdown-summary {
73
74
  display: inline-flex;
74
75
  align-items: center;
75
76
  min-height: 2.25rem;
@@ -85,14 +86,18 @@
85
86
  .nova-navbar-compass-items a:not(.navbar__link--active):not([aria-current="page"]):focus-visible,
86
87
  .nova-navbar-compass-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"])) > .nova-navbar-more-summary:hover,
87
88
  .nova-navbar-compass-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"])) > .nova-navbar-more-summary:focus-visible,
88
- .nova-navbar-compass-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"]))[open] > .nova-navbar-more-summary {
89
+ .nova-navbar-compass-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"]))[open] > .nova-navbar-more-summary,
90
+ .nova-navbar-compass-items .nova-dropdown:not(.nova-dropdown--active) > .nova-dropdown-summary:hover,
91
+ .nova-navbar-compass-items .nova-dropdown:not(.nova-dropdown--active) > .nova-dropdown-summary:focus-visible,
92
+ .nova-navbar-compass-items .nova-dropdown:not(.nova-dropdown--active)[open] > .nova-dropdown-summary {
89
93
  color: var(--nova-color-primary-700);
90
94
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 95%);
91
95
  text-decoration: none;
92
96
  }
93
97
 
94
98
  [data-theme="dark"] .nova-navbar-compass-items a,
95
- [data-theme="dark"] .nova-navbar-compass-items .nova-navbar-more-summary {
99
+ [data-theme="dark"] .nova-navbar-compass-items .nova-navbar-more-summary,
100
+ [data-theme="dark"] .nova-navbar-compass-items .nova-dropdown-summary {
96
101
  color: var(--nova-color-text-muted);
97
102
  }
98
103
 
@@ -100,7 +105,10 @@
100
105
  [data-theme="dark"] .nova-navbar-compass-items a:not(.navbar__link--active):not([aria-current="page"]):focus-visible,
101
106
  [data-theme="dark"] .nova-navbar-compass-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"])) > .nova-navbar-more-summary:hover,
102
107
  [data-theme="dark"] .nova-navbar-compass-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"])) > .nova-navbar-more-summary:focus-visible,
103
- [data-theme="dark"] .nova-navbar-compass-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"]))[open] > .nova-navbar-more-summary {
108
+ [data-theme="dark"] .nova-navbar-compass-items .nova-navbar-more:not(:has(a.navbar__link--active)):not(:has(a[aria-current="page"]))[open] > .nova-navbar-more-summary,
109
+ [data-theme="dark"] .nova-navbar-compass-items .nova-dropdown:not(.nova-dropdown--active) > .nova-dropdown-summary:hover,
110
+ [data-theme="dark"] .nova-navbar-compass-items .nova-dropdown:not(.nova-dropdown--active) > .nova-dropdown-summary:focus-visible,
111
+ [data-theme="dark"] .nova-navbar-compass-items .nova-dropdown:not(.nova-dropdown--active)[open] > .nova-dropdown-summary {
104
112
  color: var(--nova-color-primary-400);
105
113
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 92%);
106
114
  }
@@ -112,7 +120,8 @@
112
120
  .nova-navbar-compass-items a[aria-current="page"],
113
121
  .nova-navbar-compass-items a.navbar__link--active,
114
122
  .nova-navbar-compass-items .nova-navbar-more:has(a[aria-current="page"]) > .nova-navbar-more-summary,
115
- .nova-navbar-compass-items .nova-navbar-more:has(a.navbar__link--active) > .nova-navbar-more-summary {
123
+ .nova-navbar-compass-items .nova-navbar-more:has(a.navbar__link--active) > .nova-navbar-more-summary,
124
+ .nova-navbar-compass-items .nova-dropdown--active > .nova-dropdown-summary {
116
125
  font-weight: 600;
117
126
  color: var(--nova-color-primary-700);
118
127
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 92%);
@@ -121,7 +130,8 @@
121
130
  [data-theme="dark"] .nova-navbar-compass-items a[aria-current="page"],
122
131
  [data-theme="dark"] .nova-navbar-compass-items a.navbar__link--active,
123
132
  [data-theme="dark"] .nova-navbar-compass-items .nova-navbar-more:has(a[aria-current="page"]) > .nova-navbar-more-summary,
124
- [data-theme="dark"] .nova-navbar-compass-items .nova-navbar-more:has(a.navbar__link--active) > .nova-navbar-more-summary {
133
+ [data-theme="dark"] .nova-navbar-compass-items .nova-navbar-more:has(a.navbar__link--active) > .nova-navbar-more-summary,
134
+ [data-theme="dark"] .nova-navbar-compass-items .nova-dropdown--active > .nova-dropdown-summary {
125
135
  color: var(--nova-color-primary-400);
126
136
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 88%);
127
137
  }
@@ -275,7 +285,8 @@
275
285
  gap: 0.125rem;
276
286
  }
277
287
 
278
- .nova-navbar-compass-menu-item {
288
+ .nova-navbar-compass-menu-item,
289
+ .nova-navbar-compass-menu-dropdown-summary {
279
290
  gap: 0.75rem;
280
291
  font-family: var(--nova-font-display);
281
292
  font-size: 0.875rem;
@@ -289,18 +300,23 @@
289
300
  }
290
301
 
291
302
  .nova-navbar-compass-menu-item:hover,
292
- .nova-navbar-compass-menu-item:focus-visible {
303
+ .nova-navbar-compass-menu-item:focus-visible,
304
+ .nova-navbar-compass-menu-dropdown-summary:hover,
305
+ .nova-navbar-compass-menu-dropdown-summary:focus-visible {
293
306
  color: var(--nova-color-primary-700);
294
307
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 94%);
295
308
  box-shadow: inset 0 0 0 1px var(--nova-color-primary-500);
296
309
  }
297
310
 
298
- [data-theme="dark"] .nova-navbar-compass-menu-item {
311
+ [data-theme="dark"] .nova-navbar-compass-menu-item,
312
+ [data-theme="dark"] .nova-navbar-compass-menu-dropdown-summary {
299
313
  color: var(--nova-color-text-muted);
300
314
  }
301
315
 
302
316
  [data-theme="dark"] .nova-navbar-compass-menu-item:hover,
303
- [data-theme="dark"] .nova-navbar-compass-menu-item:focus-visible {
317
+ [data-theme="dark"] .nova-navbar-compass-menu-item:focus-visible,
318
+ [data-theme="dark"] .nova-navbar-compass-menu-dropdown-summary:hover,
319
+ [data-theme="dark"] .nova-navbar-compass-menu-dropdown-summary:focus-visible {
304
320
  color: var(--nova-color-primary-300);
305
321
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 92%);
306
322
  }
@@ -330,8 +346,22 @@
330
346
  animation: sentinel-fade-in var(--nova-motion-duration) ease;
331
347
  }
332
348
 
333
- .nova-navbar-compass-menu-item {
349
+ .nova-navbar-compass-menu-item,
350
+ .nova-navbar-compass-menu-dropdown {
334
351
  opacity: 0;
335
352
 
336
353
  animation: sentinel-slide-up 350ms ease forwards;
337
354
  }
355
+
356
+ /* ============================
357
+ * 12. Mobile Menu - Dropdown Spacing
358
+ * ============================ */
359
+
360
+ .nova-navbar-compass-menu-dropdown[open] > .nova-navbar-compass-menu-dropdown-summary {
361
+ margin-bottom: 0.125rem;
362
+ }
363
+
364
+ .nova-navbar-compass-menu-dropdown-children {
365
+ gap: 0.125rem;
366
+ padding-inline-start: 1.75rem;
367
+ }
@@ -186,7 +186,8 @@
186
186
  gap: 0.125rem;
187
187
  }
188
188
 
189
- .nova-navbar-monolith-menu-item {
189
+ .nova-navbar-monolith-menu-item,
190
+ .nova-navbar-monolith-menu-dropdown-summary {
190
191
  gap: 0.75rem;
191
192
  font-family: var(--nova-font-display);
192
193
  font-size: 0.875rem;
@@ -200,18 +201,23 @@
200
201
  }
201
202
 
202
203
  .nova-navbar-monolith-menu-item:hover,
203
- .nova-navbar-monolith-menu-item:focus-visible {
204
+ .nova-navbar-monolith-menu-item:focus-visible,
205
+ .nova-navbar-monolith-menu-dropdown-summary:hover,
206
+ .nova-navbar-monolith-menu-dropdown-summary:focus-visible {
204
207
  color: var(--nova-color-primary-700);
205
208
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 94%);
206
209
  box-shadow: inset 0 0 0 1px var(--nova-color-primary-500);
207
210
  }
208
211
 
209
- [data-theme="dark"] .nova-navbar-monolith-menu-item {
212
+ [data-theme="dark"] .nova-navbar-monolith-menu-item,
213
+ [data-theme="dark"] .nova-navbar-monolith-menu-dropdown-summary {
210
214
  color: var(--nova-color-text-muted);
211
215
  }
212
216
 
213
217
  [data-theme="dark"] .nova-navbar-monolith-menu-item:hover,
214
- [data-theme="dark"] .nova-navbar-monolith-menu-item:focus-visible {
218
+ [data-theme="dark"] .nova-navbar-monolith-menu-item:focus-visible,
219
+ [data-theme="dark"] .nova-navbar-monolith-menu-dropdown-summary:hover,
220
+ [data-theme="dark"] .nova-navbar-monolith-menu-dropdown-summary:focus-visible {
215
221
  color: var(--nova-color-primary-300);
216
222
  background-color: color-mix(in srgb, var(--nova-color-primary-500), transparent 92%);
217
223
  }
@@ -241,8 +247,17 @@
241
247
  animation: sentinel-fade-in var(--nova-motion-duration) ease;
242
248
  }
243
249
 
244
- .nova-navbar-monolith-menu-item {
250
+ .nova-navbar-monolith-menu-item,
251
+ .nova-navbar-monolith-menu-dropdown {
245
252
  opacity: 0;
246
253
 
247
254
  animation: sentinel-slide-up 350ms ease forwards;
248
255
  }
256
+
257
+ /* ============================
258
+ * 10. Mobile Menu - Dropdown Children
259
+ * ============================ */
260
+
261
+ .nova-navbar-monolith-menu-dropdown-children {
262
+ padding-inline-start: 1.75rem;
263
+ }
@@ -2,9 +2,10 @@
2
2
  * Sentinel - `Navbar/More` theme overlay.
3
3
  *
4
4
  * The popover menu, item link, and active-item styling are grouped with
5
- * `.nova-locale-dropdown-menu` / `.nova-version-dropdown-menu` in this
6
- * preset's `Navbar/style.css` so all three navbar dropdowns share one
7
- * surface treatment. No per-component overrides needed here.
5
+ * `.nova-locale-dropdown-menu` / `.nova-version-dropdown-menu` /
6
+ * `.nova-dropdown-menu` in this preset's `Navbar/style.css` so all four
7
+ * navbar dropdowns share one surface treatment. No per-component
8
+ * overrides needed here.
8
9
  *
9
10
  * @since 0.18.0
10
11
  */