feat(page): use subgrid to align masthead to page by srambach · Pull Request #6870 · patternfly/patternfly

@srambach I also modified page layout.

Gave page gap property and padding

:root {
  --pf-v6-c-page--Gap: var(--pf-t--global--spacer--lg);
  --pf-v6-c-page--PaddingInline: var(--pf-t--global--spacer--lg);
  --pf-v6-c-page--ColumnGap: var(--pf-t--global--spacer--lg);
}

Added padding to page

.pf-v6-c-page {
  padding-inline: var(--pf-v6-c-page--PaddingInline);
}

Removed margins from nav, masthead, and page elements and removed grid-areas. This approach was more understandable to me, although you could stick with grid-area.

.pf-v6-c-nav,
.pf-v6-c-page > .pf-v6-c-masthead,
.pf-v6-c-page > .pf-v6-c-masthead .pf-v6-c-masthead__brand,
.pf-v6-c-page__sidebar,
.pf-v6-c-page__main-container {
  --pf-v6-c-page__main-container--MarginInlineStart: 0;
  --pf-v6-c-page__main-container--MarginInlineEnd: 0;

  padding-inline: 0; // remove padding
  margin-inline: 0; // remove padding
  grid-area: unset;
}

Added border to masthead__main in favor of using divider

// masthead border
.pf-v6-c-masthead__main {
  position: relative;
  border: none;
}

.pf-v6-c-masthead__main::before {
  content: "";
  inset-block: 100%;
  inset-inline: calc(var(--pf-v6-c-page--PaddingInline) * -1);
  position: absolute;
  border-bottom: 1px solid gray;
}

Removed width from and added negative margin to sidebar, then applied the same inline padding to sidebar__body to accommodate scrolling for the entire sidebar.

.pf-v6-c-page__sidebar {
  width: unset;
  margin-inline-start: calc(var(--pf-v6-c-page--PaddingInline) * -1);
  margin-inline-end: calc(var(--pf-v6-c-page--ColumnGap) / 2);
}

.pf-v6-c-page__sidebar-body {
  padding-inline-start: var(--pf-v6-c-page--PaddingInline);
  padding-inline-end: calc(var(--pf-v6-c-page--ColumnGap) / 2);
}

Updated grid-template-columns and column spans for tablet layout

@media screen and (min-width: 768px) {
  .pf-v6-c-page {
    grid-template-columns: min-content minmax(200px, max-content) 1fr;
  }

  .pf-v6-c-page__sidebar {
    grid-column: 1 / 3;
  }

  .pf-v6-c-page > .pf-v6-c-masthead,
  .pf-v6-c-page__main-container {
    grid-column: 1 / 4;
  }

  .pf-v6-c-page > .pf-v6-c-masthead {
    grid-template-columns: subgrid;
    column-gap: inhert; // or whatever value needed
  }

  .pf-v6-c-page > .pf-v6-c-masthead .pf-v6-c-masthead__main::before {
    display: none; // this applies to desktop presentation
  }
}

Updated grid-template-columns and column spans for desktop layout

@media screen and (min-width: 1200px) {
  .pf-v6-c-page > .pf-v6-c-masthead .pf-v6-c-masthead__main {
    grid-column-start: 2;
  }

  .pf-v6-c-page > .pf-v6-c-masthead {
    grid-column-start: 1;
    grid-column-end: 5;
  }

  .pf-v6-c-page__main-container {
    grid-column-start: 3;
    grid-column-end: 5;
  }
}