Skip to content

Commit ce92601

Browse files
author
Fergus Bisset
committed
chore(build): update dist artifacts after header hydration improvements
1 parent 749cb9f commit ce92601

File tree

15 files changed

+375
-241
lines changed

15 files changed

+375
-241
lines changed

dist/components/Header/Header.css

Lines changed: 51 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@
5353
.nhsuk-header__navigation-container {
5454
margin: 0 auto;
5555
position: relative;
56+
/* Default reserve for More button space (0 by default; can be overridden) */
57+
--nhs-header-more-reserve: 0px;
5658
box-shadow: inset 0 0.25px 0 0 #d8dde0;
5759
}
5860
.nhsuk-header__navigation-container.nhsuk-header__navigation-container--padded {
@@ -67,6 +69,8 @@
6769
}
6870
.nhsuk-header__navigation-container--initializing {
6971
transition: opacity 150ms ease-in-out;
72+
/* During init, conservatively reserve space for the More button to avoid shifts */
73+
--nhs-header-more-reserve: var(--fdp-header-more-reserve, 104px);
7074
}
7175
.nhsuk-header__navigation-container:not(.nhsuk-header__navigation-container--initializing) {
7276
opacity: 1;
@@ -288,6 +292,13 @@
288292
margin: 0 -8px;
289293
padding: 0;
290294
width: calc(100% + 24px);
295+
/* Flex spacer to reserve space for potential More button */
296+
}
297+
.nhsuk-header__navigation-list::after {
298+
content: "";
299+
flex: 0 0 var(--nhs-header-more-reserve, 0px);
300+
inline-size: var(--nhs-header-more-reserve, 0px);
301+
block-size: 1px; /* minimal size to avoid affecting line-height */
291302
}
292303
@media (min-width: 768px) {
293304
.nhsuk-header__navigation-list {
@@ -402,7 +413,7 @@
402413
width: 24px;
403414
height: 24px;
404415
margin-left: 4px;
405-
margin-top: -4px;
416+
margin-top: -6px;
406417
vertical-align: middle;
407418
transform: rotate(90deg);
408419
transition: transform 150ms cubic-bezier(0, 0, 0.2, 1);
@@ -716,11 +727,11 @@
716727
}
717728
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue {
718729
background-color: var(--fdp-header-dark-blue-bg, #003087);
719-
color: var(--fdp-header-dark-blue-text, #ffffff);
730+
color: #ffffff;
720731
}
721732
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__navigation {
722-
background-color: var(--fdp-header-dark-blue-nav-bg, #003087);
723-
color: var(--fdp-header-dark-blue-nav-text, #ffffff);
733+
background-color: transparent;
734+
color: #ffffff;
724735
}
725736
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__navigation a {
726737
color: var(--fdp-header-dark-blue-nav-text, #ffffff);
@@ -730,19 +741,23 @@
730741
color: #003087;
731742
}
732743
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__navigation__navigation-link, [data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__navigation__navigation-button {
733-
color: var(--fdp-header-dark-blue-nav-text, #ffffff);
734-
}
735-
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue__navigation-link, [data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue__navigation-button {
736-
color: var(--fdp-header-dark-blue-nav-text, #ffffff);
744+
color: #ffffff;
737745
}
738746
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__service-logo,
739747
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__service-name,
740748
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__service-name[href],
741-
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__organisation-name,
749+
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__organisation-name {
750+
color: #ffffff;
751+
}
742752
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__navigation-link,
743753
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__navigation-button {
744754
color: #ffffff;
745755
}
756+
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__navigation-link:focus,
757+
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__navigation-button:focus {
758+
background-color: #d6cce3;
759+
color: #003087;
760+
}
746761
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue__service-logo:hover, [data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue__service-name:hover, [data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue__service-name[href]:hover {
747762
color: #ffffff;
748763
text-decoration: none;
@@ -808,10 +823,17 @@
808823
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey .nhsuk-header__service-logo,
809824
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey .nhsuk-header__service-name,
810825
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey .nhsuk-header__service-name[href],
811-
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey .nhsuk-header__organisation-name,
826+
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey .nhsuk-header__organisation-name {
827+
color: #ffffff;
828+
}
812829
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey .nhsuk-header__navigation-link,
813830
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey .nhsuk-header__navigation-button {
814-
color: var(--fdp-header-dark-grey-text, #ffffff);
831+
color: #ffffff;
832+
}
833+
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey .nhsuk-header__navigation-link:focus,
834+
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey .nhsuk-header__navigation-button:focus {
835+
background-color: #d6cce3;
836+
color: #212b32;
815837
}
816838
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey__service-logo, [data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey__service-name, [data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey__service-name[href] {
817839
color: var(--fdp-header-dark-grey-text, #ffffff);
@@ -842,10 +864,17 @@
842864
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__service-logo,
843865
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__service-name,
844866
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__service-name[href],
845-
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__organisation-name,
867+
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__organisation-name {
868+
color: #ffffff;
869+
}
846870
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__navigation-link,
847871
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__navigation-button {
848-
color: var(--fdp-header-mid-grey-text, #ffffff);
872+
color: #ffffff;
873+
}
874+
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__navigation-link:focus,
875+
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__navigation-button:focus {
876+
background-color: #d6cce3;
877+
color: #212b32;
849878
}
850879
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__navigation {
851880
background-color: transparent;
@@ -879,10 +908,17 @@
879908
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__service-logo,
880909
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__service-name,
881910
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__service-name[href],
882-
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__organisation-name,
911+
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__organisation-name {
912+
color: #ffffff;
913+
}
883914
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__navigation-link,
884915
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__navigation-button {
885-
color: var(--fdp-header-dark-grey-gradient-text, #ffffff);
916+
color: #ffffff;
917+
}
918+
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__navigation-link:focus,
919+
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__navigation-button:focus {
920+
background-color: #d6cce3;
921+
color: #212b32;
886922
}
887923
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__navigation-container {
888924
background: inherit;

dist/components/Header/index.css

Lines changed: 65 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,8 @@ span .nhsuk-u-visually-hidden {
245245
.nhsuk-header__navigation-container {
246246
margin: 0 auto;
247247
position: relative;
248+
/* Default reserve for More button space (0 by default; can be overridden) */
249+
--nhs-header-more-reserve: 0px;
248250
box-shadow: inset 0 0.25px 0 0 #d8dde0;
249251
}
250252

@@ -262,6 +264,8 @@ span .nhsuk-u-visually-hidden {
262264

263265
.nhsuk-header__navigation-container--initializing {
264266
transition: opacity 150ms ease-in-out;
267+
/* During init, conservatively reserve space for the More button to avoid shifts */
268+
--nhs-header-more-reserve: var(--fdp-header-more-reserve, 104px);
265269
}
266270

267271
.nhsuk-header__navigation-container:not(.nhsuk-header__navigation-container--initializing) {
@@ -522,6 +526,14 @@ span .nhsuk-u-visually-hidden {
522526
margin: 0 -8px;
523527
padding: 0;
524528
width: calc(100% + 24px);
529+
/* Flex spacer to reserve space for potential More button */
530+
}
531+
532+
.nhsuk-header__navigation-list::after {
533+
content: "";
534+
flex: 0 0 var(--nhs-header-more-reserve, 0px);
535+
inline-size: var(--nhs-header-more-reserve, 0px);
536+
block-size: 1px; /* minimal size to avoid affecting line-height */
525537
}
526538

527539
@media (min-width: 768px) {
@@ -658,7 +670,7 @@ span .nhsuk-u-visually-hidden {
658670
width: 24px;
659671
height: 24px;
660672
margin-left: 4px;
661-
margin-top: -4px;
673+
margin-top: -6px;
662674
vertical-align: middle;
663675
transform: rotate(90deg);
664676
transition: transform 150ms cubic-bezier(0, 0, 0.2, 1);
@@ -1036,12 +1048,12 @@ span .nhsuk-u-visually-hidden {
10361048

10371049
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue {
10381050
background-color: var(--fdp-header-dark-blue-bg, #003087);
1039-
color: var(--fdp-header-dark-blue-text, #ffffff);
1051+
color: #ffffff;
10401052
}
10411053

10421054
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__navigation {
1043-
background-color: var(--fdp-header-dark-blue-nav-bg, #003087);
1044-
color: var(--fdp-header-dark-blue-nav-text, #ffffff);
1055+
background-color: transparent;
1056+
color: #ffffff;
10451057
}
10461058

10471059
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__navigation a {
@@ -1054,22 +1066,27 @@ span .nhsuk-u-visually-hidden {
10541066
}
10551067

10561068
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__navigation__navigation-link, [data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__navigation__navigation-button {
1057-
color: var(--fdp-header-dark-blue-nav-text, #ffffff);
1058-
}
1059-
1060-
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue__navigation-link, [data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue__navigation-button {
1061-
color: var(--fdp-header-dark-blue-nav-text, #ffffff);
1069+
color: #ffffff;
10621070
}
10631071

10641072
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__service-logo,
10651073
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__service-name,
10661074
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__service-name[href],
1067-
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__organisation-name,
1075+
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__organisation-name {
1076+
color: #ffffff;
1077+
}
1078+
10681079
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__navigation-link,
10691080
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__navigation-button {
10701081
color: #ffffff;
10711082
}
10721083

1084+
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__navigation-link:focus,
1085+
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue .nhsuk-header__navigation-button:focus {
1086+
background-color: #d6cce3;
1087+
color: #003087;
1088+
}
1089+
10731090
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue__service-logo:hover, [data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue__service-name:hover, [data-brand=fdp] .nhsuk-header.nhsuk-header--dark-blue__service-name[href]:hover {
10741091
color: #ffffff;
10751092
text-decoration: none;
@@ -1151,10 +1168,19 @@ span .nhsuk-u-visually-hidden {
11511168
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey .nhsuk-header__service-logo,
11521169
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey .nhsuk-header__service-name,
11531170
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey .nhsuk-header__service-name[href],
1154-
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey .nhsuk-header__organisation-name,
1171+
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey .nhsuk-header__organisation-name {
1172+
color: #ffffff;
1173+
}
1174+
11551175
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey .nhsuk-header__navigation-link,
11561176
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey .nhsuk-header__navigation-button {
1157-
color: var(--fdp-header-dark-grey-text, #ffffff);
1177+
color: #ffffff;
1178+
}
1179+
1180+
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey .nhsuk-header__navigation-link:focus,
1181+
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey .nhsuk-header__navigation-button:focus {
1182+
background-color: #d6cce3;
1183+
color: #212b32;
11581184
}
11591185

11601186
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey__service-logo, [data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey__service-name, [data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey__service-name[href] {
@@ -1193,10 +1219,19 @@ span .nhsuk-u-visually-hidden {
11931219
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__service-logo,
11941220
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__service-name,
11951221
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__service-name[href],
1196-
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__organisation-name,
1222+
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__organisation-name {
1223+
color: #ffffff;
1224+
}
1225+
11971226
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__navigation-link,
11981227
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__navigation-button {
1199-
color: var(--fdp-header-mid-grey-text, #ffffff);
1228+
color: #ffffff;
1229+
}
1230+
1231+
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__navigation-link:focus,
1232+
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__navigation-button:focus {
1233+
background-color: #d6cce3;
1234+
color: #212b32;
12001235
}
12011236

12021237
[data-brand=fdp] .nhsuk-header.nhsuk-header--mid-grey .nhsuk-header__navigation {
@@ -1239,10 +1274,19 @@ span .nhsuk-u-visually-hidden {
12391274
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__service-logo,
12401275
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__service-name,
12411276
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__service-name[href],
1242-
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__organisation-name,
1277+
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__organisation-name {
1278+
color: #ffffff;
1279+
}
1280+
12431281
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__navigation-link,
12441282
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__navigation-button {
1245-
color: var(--fdp-header-dark-grey-gradient-text, #ffffff);
1283+
color: #ffffff;
1284+
}
1285+
1286+
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__navigation-link:focus,
1287+
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__navigation-button:focus {
1288+
background-color: #d6cce3;
1289+
color: #212b32;
12461290
}
12471291

12481292
[data-brand=fdp] .nhsuk-header.nhsuk-header--dark-grey-gradient .nhsuk-header__navigation-container {
@@ -1329,6 +1373,8 @@ nav[data-ssr-hydrating=true] + .nhsuk-header__dropdown-menu {
13291373
/* SSR Fallback Navigation Container */
13301374

13311375
.nhsuk-header__navigation-container--ssr {
1376+
/* Reserve space for potential More button to avoid layout shift on hydration */
1377+
--nhs-header-more-reserve: var(--fdp-header-more-reserve, 104px);
13321378
/* Server-side: start as single line; overflow handled via progressive enhancement */
13331379
}
13341380

@@ -1365,9 +1411,9 @@ nav[data-ssr-hydrating=true] + .nhsuk-header__dropdown-menu {
13651411
/* Progressive Enhancement Indicator */
13661412

13671413
.nhsuk-header__navigation-container--initializing {
1368-
/* Subtle loading state while JavaScript calculates overflow */
1369-
opacity: 0.95;
1370-
transition: opacity 150ms ease-in-out;
1414+
/* Avoid visual change during hydration to prevent flash */
1415+
opacity: 1;
1416+
transition: none;
13711417
}
13721418

13731419
/* No-JS Fallback Styles */

dist/index.esm.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3147,6 +3147,10 @@ const eu = ({
31473147
H += P, J += 1;
31483148
}
31493149
const L = J < i.items.length, G = L ? J : i.items.length;
3150+
try {
3151+
I.style.setProperty("--nhs-header-more-reserve", L ? `${D}px` : "0px");
3152+
} catch {
3153+
}
31503154
x((U) => U === L ? U : L), g((U) => U === G ? U : G), I.classList.remove("nhsuk-header__navigation-container--measuring"), j.current = !1;
31513155
}, [T, i?.items]);
31523156
rt(() => {

dist/index.esm.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.umd.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.umd.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)