srcdev-nuxt-components 9.6.15 → 9.6.17
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.
|
@@ -209,6 +209,10 @@ All tokens are read via `var(--token, default)` — see the full list in the com
|
|
|
209
209
|
| Token | Default | Controls |
|
|
210
210
|
|---|---|---|
|
|
211
211
|
| `--responsive-header-link-font-size` | `inherit` | Nav-link font-size. **Set this to a fixed value** — see the measurement-pipeline note above for why leaving it `inherit` from a fluid ancestor is a footgun. |
|
|
212
|
+
| `--responsive-header-link-padding-block` / `--responsive-header-link-padding-inline` | `0.8rem` / `0.2rem` | Padding around each top-bar link and summary. The active underline and hover highlight span this box, so larger inline padding makes them reach past the label. Set fixed values, as with the font size: the overflow-collapse measurement only re-runs when the header resizes. |
|
|
213
|
+
| `--responsive-header-nav-item-gap` | `30px` | Gap between items within each top-bar list. Reduce it when you raise the inline padding to keep the label-to-label spacing. |
|
|
214
|
+
| `--responsive-header-link-icon-size` / `--responsive-header-link-icon-gap` | `1.35em` / `6px` | Link icon and summary chevron size, and its gap to the label. Keep the size fixed so a late icon can't widen an item after measurement. |
|
|
215
|
+
| `--responsive-header-nav-group-gap` | `60px` | Gap between the main and secondary nav groups. |
|
|
212
216
|
| `--responsive-header-link-color` | `inherit` | Link/summary text colour. |
|
|
213
217
|
| `--responsive-header-link-color-hover` / `-active` | the resting colour | Per-state link colour in the top bar (added 2026-10-07). Hover falls back to the item's current state. `--overflow-nav-link-color-hover` / `-active` do the same in the overflow panel. |
|
|
214
218
|
| `--responsive-header-bg` / `--responsive-header-padding-*` / `--responsive-header-border*` | transparent / `0` / `none` | Root element theming. |
|
|
@@ -217,6 +221,8 @@ All tokens are read via `var(--token, default)` — see the full list in the com
|
|
|
217
221
|
|
|
218
222
|
Defaults are for a **light** header (changed 2026-10-07): panels use `--page-bg`, borders and hover tints are `color-mix()`es of `--theme-text`, the overflow button is transparent with a `--theme-border-focus` hover outline. They used to assume a dark bar (`Canvas`, translucent white borders and tints). A dark header sets the tokens.
|
|
219
223
|
| `--responsive-nav-decorator-indicator-color` / `--responsive-nav-decorator-hovered-*` | `currentColor` / inherits | The sliding active/hover indicator bar under the main nav. |
|
|
224
|
+
| `--responsive-nav-decorator-indicator-offset` | `2px` | Distance of the active indicator below the active item's bottom edge; negative raises it. |
|
|
225
|
+
| `--responsive-nav-decorator-indicator-height` / `--responsive-nav-decorator-hovered-border-radius` / `--responsive-nav-decorator-transition-duration` | `2px` / `4px` / `200ms` | Active indicator thickness, hover highlight radius, and how long both take to slide. |
|
|
220
226
|
|
|
221
227
|
---
|
|
222
228
|
|
|
@@ -10,6 +10,11 @@ are documented alongside it since that's where they're consumed.
|
|
|
10
10
|
| Token | Default | Controls |
|
|
11
11
|
|---|---|---|
|
|
12
12
|
| `--responsive-header-link-font-size` | `inherit` | Nav-link font-size. **Always set this to a fixed value.** Leaving it `inherit` means a fluid ancestor font-size (`clamp()`/`vw`) can drift nav-item text width without ever re-triggering the overflow-collapse measurement — see the component skill doc's "measurement pipeline" section for the full mechanism. |
|
|
13
|
+
| `--responsive-header-link-padding-block` / `--responsive-header-link-padding-inline` | `0.8rem` / `0.2rem` | Padding around each top-bar link and summary. The active underline and hover highlight span this box, so larger inline padding makes them reach past the label. Set fixed values, as with the font size: the overflow-collapse measurement only re-runs when the header resizes. |
|
|
14
|
+
| `--responsive-header-nav-item-gap` | `30px` | Gap between items within each top-bar list. Reduce it when you raise the inline padding to keep the label-to-label spacing. |
|
|
15
|
+
| `--responsive-header-link-icon-size` | `1.35em` | Size of a top-bar link's icon and a sub-nav summary's chevron. Keep it a fixed size (not `auto`): the slot is reserved so a late-loading icon can't widen an item after the overflow measurement. |
|
|
16
|
+
| `--responsive-header-link-icon-gap` | `6px` | Gap between a top-bar link's icon and label, and a summary's label and chevron. |
|
|
17
|
+
| `--responsive-header-nav-group-gap` | `60px` | Gap between the main and secondary nav groups. |
|
|
13
18
|
| `--responsive-header-link-color` | `inherit` | Link/summary text colour. |
|
|
14
19
|
| `--responsive-header-main-nav-justify-content` | `space-between` | How the main nav's groups are spread along the bar. Use `flex-start`, `safe center` or `safe end`; plain `center`/`end` let items that don't fit spill off the start edge, where they're clipped. (Safari 16 ignores `safe` values and falls back to start alignment.) |
|
|
15
20
|
| `--responsive-header-color` | `inherit` | Root element text colour. |
|
|
@@ -29,8 +34,12 @@ are documented alongside it since that's where they're consumed.
|
|
|
29
34
|
| `--responsive-header-overflow-nav-bg` / `-border` / `-border-radius` / `-padding-block` | `var(--page-bg, var(--theme-surface-subtle))` / `1px solid color-mix(in oklch, var(--theme-text) 20%, transparent)` / `8px` / `12px` | Overflow panel container. |
|
|
30
35
|
| `--responsive-header-overflow-nav-max-block-size` | `70vh` | Tallest the overflow panel gets before it scrolls. |
|
|
31
36
|
| `--responsive-nav-decorator-indicator-color` | `currentColor` | Active-item indicator bar/underline. |
|
|
37
|
+
| `--responsive-nav-decorator-indicator-offset` | `2px` | How far the active indicator sits below the active item's bottom edge. Negative values raise it inside the item (`-4px` sits it 4px up). |
|
|
32
38
|
| `--responsive-nav-decorator-hovered-indicator-color` | inherits the above | Indicator colour while hovering. |
|
|
33
39
|
| `--responsive-nav-decorator-hovered-bg` | `color-mix(in oklch, var(--theme-text) 8%, transparent)` | Hover highlight background behind the hovered item. |
|
|
40
|
+
| `--responsive-nav-decorator-indicator-height` | `2px` | Thickness of the active indicator. |
|
|
41
|
+
| `--responsive-nav-decorator-hovered-border-radius` | `4px` | Corner radius of the hover highlight. |
|
|
42
|
+
| `--responsive-nav-decorator-transition-duration` | `200ms` | How long the active indicator and hover highlight take to slide between items. |
|
|
34
43
|
|
|
35
44
|
### Overflow panel content (`NavigationItems`)
|
|
36
45
|
|
|
@@ -775,10 +775,20 @@ watch(
|
|
|
775
775
|
--responsive-header-overflow-nav-max-block-size (default: 70vh)
|
|
776
776
|
|
|
777
777
|
--responsive-nav-decorator-indicator-color (default: currentColor)
|
|
778
|
+
--responsive-nav-decorator-indicator-offset (default: 2px, below the item; negative raises it)
|
|
778
779
|
--responsive-nav-decorator-hovered-indicator-color (default: inherits --responsive-nav-decorator-indicator-color)
|
|
779
780
|
--responsive-nav-decorator-hovered-bg (default: color-mix(in oklch, var(--theme-text) 8%, transparent))
|
|
781
|
+
--responsive-nav-decorator-indicator-height (default: 2px)
|
|
782
|
+
--responsive-nav-decorator-hovered-border-radius (default: 4px)
|
|
783
|
+
--responsive-nav-decorator-transition-duration (default: 200ms)
|
|
780
784
|
|
|
781
785
|
--responsive-header-link-font-size (default: inherit)
|
|
786
|
+
--responsive-header-link-padding-block (default: 0.8rem)
|
|
787
|
+
--responsive-header-link-padding-inline (default: 0.2rem)
|
|
788
|
+
--responsive-header-nav-item-gap (default: 30px)
|
|
789
|
+
--responsive-header-link-icon-size (default: 1.35em)
|
|
790
|
+
--responsive-header-link-icon-gap (default: 6px)
|
|
791
|
+
--responsive-header-nav-group-gap (default: 60px)
|
|
782
792
|
--responsive-header-main-nav-justify-content (default: space-between)
|
|
783
793
|
──────────────────────────────────────────────────────────────────────── */
|
|
784
794
|
|
|
@@ -810,8 +820,8 @@ watch(
|
|
|
810
820
|
|
|
811
821
|
.main-navigation {
|
|
812
822
|
/* Set up some global vars */
|
|
813
|
-
--_link-padding-block: 0.8rem;
|
|
814
|
-
--_link-padding-inline: 0.2rem;
|
|
823
|
+
--_link-padding-block: var(--responsive-header-link-padding-block, 0.8rem);
|
|
824
|
+
--_link-padding-inline: var(--responsive-header-link-padding-inline, 0.2rem);
|
|
815
825
|
--_link-margin-block: 0.1rem;
|
|
816
826
|
--_link-margin-inline: 0.1rem;
|
|
817
827
|
--_link-focus-visible-outline-width: 0.2rem;
|
|
@@ -822,7 +832,7 @@ watch(
|
|
|
822
832
|
flex-wrap: nowrap;
|
|
823
833
|
flex-grow: 1;
|
|
824
834
|
justify-content: var(--responsive-header-main-nav-justify-content, space-between);
|
|
825
|
-
gap: 60px;
|
|
835
|
+
gap: var(--responsive-header-nav-group-gap, 60px);
|
|
826
836
|
overflow-x: hidden;
|
|
827
837
|
margin-inline-end: v-bind(mainNavigationMarginBlockEndStr);
|
|
828
838
|
|
|
@@ -835,11 +845,11 @@ watch(
|
|
|
835
845
|
flex-wrap: nowrap;
|
|
836
846
|
|
|
837
847
|
&:nth-of-type(1) {
|
|
838
|
-
gap: 30px;
|
|
848
|
+
gap: var(--responsive-header-nav-item-gap, 30px);
|
|
839
849
|
}
|
|
840
850
|
|
|
841
851
|
&:nth-of-type(2) {
|
|
842
|
-
gap: 30px;
|
|
852
|
+
gap: var(--responsive-header-nav-item-gap, 30px);
|
|
843
853
|
}
|
|
844
854
|
|
|
845
855
|
.main-navigation-item {
|
|
@@ -853,7 +863,7 @@ watch(
|
|
|
853
863
|
|
|
854
864
|
.main-navigation-link {
|
|
855
865
|
display: flex;
|
|
856
|
-
gap: 6px;
|
|
866
|
+
gap: var(--responsive-header-link-icon-gap, 6px);
|
|
857
867
|
white-space: nowrap;
|
|
858
868
|
font-size: var(--responsive-header-link-font-size, inherit);
|
|
859
869
|
color: var(--_link-color, var(--responsive-header-link-color, inherit));
|
|
@@ -877,8 +887,8 @@ watch(
|
|
|
877
887
|
(the wrapper's own box doesn't necessarily change size when it happens). */
|
|
878
888
|
.decorator-icon {
|
|
879
889
|
flex-shrink: 0;
|
|
880
|
-
width: 1.35em;
|
|
881
|
-
height: 1.35em;
|
|
890
|
+
width: var(--responsive-header-link-icon-size, 1.35em);
|
|
891
|
+
height: var(--responsive-header-link-icon-size, 1.35em);
|
|
882
892
|
}
|
|
883
893
|
|
|
884
894
|
.main-navigation-details {
|
|
@@ -892,7 +902,7 @@ watch(
|
|
|
892
902
|
|
|
893
903
|
.has-toggle-icon {
|
|
894
904
|
display: flex;
|
|
895
|
-
gap: 6px;
|
|
905
|
+
gap: var(--responsive-header-link-icon-gap, 6px);
|
|
896
906
|
white-space: nowrap;
|
|
897
907
|
|
|
898
908
|
/* Reserved for the same reason as .decorator-icon above — an
|
|
@@ -900,8 +910,8 @@ watch(
|
|
|
900
910
|
.icon {
|
|
901
911
|
display: block;
|
|
902
912
|
flex-shrink: 0;
|
|
903
|
-
width: 1.35em;
|
|
904
|
-
height: 1.35em;
|
|
913
|
+
width: var(--responsive-header-link-icon-size, 1.35em);
|
|
914
|
+
height: var(--responsive-header-link-icon-size, 1.35em);
|
|
905
915
|
transform: var(--_icon-transform);
|
|
906
916
|
transition: transform 0.2s ease-in-out;
|
|
907
917
|
}
|
|
@@ -1188,12 +1198,12 @@ watch(
|
|
|
1188
1198
|
top: anchor(top);
|
|
1189
1199
|
bottom: anchor(bottom);
|
|
1190
1200
|
background: var(--responsive-nav-decorator-hovered-bg, color-mix(in oklch, var(--theme-text) 8%, transparent));
|
|
1191
|
-
border-radius: 4px;
|
|
1201
|
+
border-radius: var(--responsive-nav-decorator-hovered-border-radius, 4px);
|
|
1192
1202
|
z-index: 1;
|
|
1193
1203
|
opacity: 0;
|
|
1194
1204
|
transition:
|
|
1195
|
-
left 200ms ease,
|
|
1196
|
-
right 200ms ease,
|
|
1205
|
+
left var(--responsive-nav-decorator-transition-duration, 200ms) ease,
|
|
1206
|
+
right var(--responsive-nav-decorator-transition-duration, 200ms) ease,
|
|
1197
1207
|
opacity 150ms ease;
|
|
1198
1208
|
}
|
|
1199
1209
|
|
|
@@ -1211,13 +1221,13 @@ watch(
|
|
|
1211
1221
|
position-anchor: --responsive-main-nav-indicator;
|
|
1212
1222
|
left: anchor(left);
|
|
1213
1223
|
right: anchor(right);
|
|
1214
|
-
bottom: calc(anchor(bottom) - 2px);
|
|
1215
|
-
height: 2px;
|
|
1224
|
+
bottom: calc(anchor(bottom) - var(--responsive-nav-decorator-indicator-offset, 2px));
|
|
1225
|
+
height: var(--responsive-nav-decorator-indicator-height, 2px);
|
|
1216
1226
|
background: var(--responsive-nav-decorator-indicator-color, currentColor);
|
|
1217
1227
|
z-index: 3;
|
|
1218
1228
|
transition:
|
|
1219
|
-
left 200ms ease,
|
|
1220
|
-
right 200ms ease;
|
|
1229
|
+
left var(--responsive-nav-decorator-transition-duration, 200ms) ease,
|
|
1230
|
+
right var(--responsive-nav-decorator-transition-duration, 200ms) ease;
|
|
1221
1231
|
}
|
|
1222
1232
|
|
|
1223
1233
|
&:not(.is-animated) .nav-indicator-active {
|