@patternfly/patternfly 6.5.0-prerelease.31 → 6.5.0-prerelease.32

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 (44) hide show
  1. package/components/Compass/compass.css +14 -4
  2. package/components/Compass/compass.scss +16 -4
  3. package/components/Masthead/masthead.css +40 -0
  4. package/components/Masthead/masthead.scss +47 -0
  5. package/components/Nav/nav.css +55 -0
  6. package/components/Nav/nav.scss +70 -3
  7. package/components/Page/page.css +20 -0
  8. package/components/Page/page.scss +27 -0
  9. package/components/Toolbar/toolbar.css +32 -6
  10. package/components/Toolbar/toolbar.scss +28 -4
  11. package/components/_index.css +161 -10
  12. package/docs/components/Compass/examples/Compass.css +8 -2
  13. package/docs/components/Compass/examples/Compass.md +22 -1
  14. package/docs/components/Masthead/examples/masthead.md +67 -0
  15. package/docs/components/Nav/examples/Navigation.md +44 -0
  16. package/docs/components/Page/examples/Page.md +37 -0
  17. package/docs/components/Toolbar/examples/Toolbar.md +28 -0
  18. package/docs/demos/AboutModal/examples/AboutModal.md +5 -5
  19. package/docs/demos/Alert/examples/Alert.md +15 -15
  20. package/docs/demos/BackToTop/examples/BackToTop.md +5 -5
  21. package/docs/demos/Banner/examples/Banner.md +10 -10
  22. package/docs/demos/CardView/examples/CardView.md +5 -5
  23. package/docs/demos/Compass/examples/Compass.md +208 -0
  24. package/docs/demos/Dashboard/examples/Dashboard.md +5 -5
  25. package/docs/demos/DataList/examples/DataList.md +20 -23
  26. package/docs/demos/DescriptionList/examples/DescriptionList.md +15 -15
  27. package/docs/demos/Drawer/examples/Drawer.md +25 -25
  28. package/docs/demos/JumpLinks/examples/JumpLinks.md +30 -30
  29. package/docs/demos/Masthead/examples/Masthead.md +55 -58
  30. package/docs/demos/Modal/examples/Modal.md +30 -33
  31. package/docs/demos/Nav/examples/Nav.md +299 -62
  32. package/docs/demos/NotificationDrawer/examples/NotificationDrawer.md +25 -25
  33. package/docs/demos/Page/examples/Page.md +70 -79
  34. package/docs/demos/PrimaryDetail/examples/PrimaryDetail.md +35 -35
  35. package/docs/demos/Skeleton/examples/Skeleton.md +5 -5
  36. package/docs/demos/Table/examples/Table.md +75 -78
  37. package/docs/demos/Tabs/examples/Tabs.md +30 -30
  38. package/docs/demos/Toolbar/examples/Toolbar.md +10 -10
  39. package/docs/demos/Wizard/examples/Wizard.md +45 -48
  40. package/package.json +1 -1
  41. package/patternfly-no-globals.css +161 -10
  42. package/patternfly.css +161 -10
  43. package/patternfly.min.css +1 -1
  44. package/patternfly.min.css.map +1 -1
@@ -19,16 +19,16 @@
19
19
  --pf-v6-c-compass__main-header-content--RowGap: var(--pf-t--global--spacer--sm);
20
20
  --pf-v6-c-compass__main-header-content--ColumnGap: var(--pf-t--global--spacer--md);
21
21
  --pf-v6-c-compass__main-footer--MarginBlockStart: calc(var(--pf-v6-c-compass__main--RowGap) * -1 + var(--pf-v6-c-compass--Gap));
22
- --pf-v6-c-compass__panel--BackgroundColor: var(--pf-t--global--background--color--glass--default);
23
- --pf-v6-c-compass__panel--BackdropFilter: var(--pf-t--global--background--color--glass--filter);
24
- --pf-v6-c-compass__panel--BorderRadius: var(--pf-t--global--border--radius--large);
25
22
  --pf-v6-c-compass__panel--m-pill--BorderRadius: var(--pf-t--global--border--radius--pill);
26
23
  --pf-v6-c-compass__panel--PaddingBlockStart: var(--pf-t--global--spacer--inset--page-chrome);
27
24
  --pf-v6-c-compass__panel--PaddingBlockEnd: var(--pf-t--global--spacer--inset--page-chrome);
28
25
  --pf-v6-c-compass__panel--PaddingInlineStart: var(--pf-t--global--spacer--inset--page-chrome);
29
26
  --pf-v6-c-compass__panel--PaddingInlineEnd: var(--pf-t--global--spacer--inset--page-chrome);
30
- --pf-v6-c-compass__panel--BorderWidth: var(--pf-t--global--border--width--regular);
27
+ --pf-v6-c-compass__panel--BackgroundColor: var(--pf-t--global--background--color--glass--default);
28
+ --pf-v6-c-compass__panel--BackdropFilter: var(--pf-t--global--background--color--glass--filter);
31
29
  --pf-v6-c-compass__panel--BorderColor: var(--pf-t--global--border--color--alt);
30
+ --pf-v6-c-compass__panel--BorderRadius: var(--pf-t--global--border--radius--large);
31
+ --pf-v6-c-compass__panel--BorderWidth: var(--pf-t--global--border--width--regular);
32
32
  --pf-v6-c-compass__panel--BoxShadow: var(--pf-t--global--box-shadow--md);
33
33
  --pf-v6-c-compass__message-bar--Width: 450px;
34
34
  --pf-v6-c-compass__message-bar--MinWidth: 300px;
@@ -79,6 +79,16 @@
79
79
  background-image: var(--pf-v6-c-compass--BackgroundImage);
80
80
  background-size: cover;
81
81
  }
82
+ .pf-v6-c-compass.pf-m-dock {
83
+ grid-template-areas: "dock main";
84
+ grid-template-rows: auto;
85
+ grid-template-columns: auto 1fr;
86
+ align-items: stretch;
87
+ padding: 0;
88
+ }
89
+ .pf-v6-c-compass.pf-m-dock .pf-v6-c-compass__main {
90
+ padding: var(--pf-v6-c-compass--Padding);
91
+ }
82
92
  :root:where(.pf-v6-theme-dark) .pf-v6-c-compass {
83
93
  --pf-v6-c-compass--BackgroundImage: var(--pf-v6-c-compass--BackgroundImage--dark);
84
94
  }
@@ -21,16 +21,16 @@
21
21
  --#{$compass}__main-header-content--RowGap: var(--pf-t--global--spacer--sm);
22
22
  --#{$compass}__main-header-content--ColumnGap: var(--pf-t--global--spacer--md);
23
23
  --#{$compass}__main-footer--MarginBlockStart: calc(var(--#{$compass}__main--RowGap) * -1 + var(--#{$compass}--Gap)); // Creates same gap as parent compass grid, mimicking the compass footer
24
- --#{$compass}__panel--BackgroundColor: var(--pf-t--global--background--color--glass--default);
25
- --#{$compass}__panel--BackdropFilter: var(--pf-t--global--background--color--glass--filter);
26
- --#{$compass}__panel--BorderRadius: var(--pf-t--global--border--radius--large);
27
24
  --#{$compass}__panel--m-pill--BorderRadius: var(--pf-t--global--border--radius--pill);
28
25
  --#{$compass}__panel--PaddingBlockStart: var(--pf-t--global--spacer--inset--page-chrome);
29
26
  --#{$compass}__panel--PaddingBlockEnd: var(--pf-t--global--spacer--inset--page-chrome);
30
27
  --#{$compass}__panel--PaddingInlineStart: var(--pf-t--global--spacer--inset--page-chrome);
31
28
  --#{$compass}__panel--PaddingInlineEnd: var(--pf-t--global--spacer--inset--page-chrome);
32
- --#{$compass}__panel--BorderWidth: var(--pf-t--global--border--width--regular);
29
+ --#{$compass}__panel--BackgroundColor: var(--pf-t--global--background--color--glass--default);
30
+ --#{$compass}__panel--BackdropFilter: var(--pf-t--global--background--color--glass--filter);
33
31
  --#{$compass}__panel--BorderColor: var(--pf-t--global--border--color--alt);
32
+ --#{$compass}__panel--BorderRadius: var(--pf-t--global--border--radius--large);
33
+ --#{$compass}__panel--BorderWidth: var(--pf-t--global--border--width--regular);
34
34
  --#{$compass}__panel--BoxShadow: var(--pf-t--global--box-shadow--md);
35
35
  --#{$compass}__message-bar--Width: 450px;
36
36
  --#{$compass}__message-bar--MinWidth: 300px;
@@ -86,6 +86,18 @@
86
86
  background-image: var(--#{$compass}--BackgroundImage);
87
87
  background-size: cover;
88
88
 
89
+ &.pf-m-dock {
90
+ grid-template-areas: "dock main";
91
+ grid-template-rows: auto;
92
+ grid-template-columns: auto 1fr;
93
+ align-items: stretch;
94
+ padding: 0;
95
+
96
+ .#{$compass}__main {
97
+ padding: var(--#{$compass}--Padding);
98
+ }
99
+ }
100
+
89
101
  :root:where(.#{$pf-prefix}theme-dark) & {
90
102
  --#{$compass}--BackgroundImage: var(--#{$compass}--BackgroundImage--dark);
91
103
  }
@@ -36,6 +36,15 @@
36
36
  --pf-v6-c-masthead--m-display-inline__main--toggle--content--GridColumn: 2;
37
37
  --pf-v6-c-masthead--m-display-inline__main--Display: flex;
38
38
  --pf-v6-c-masthead--m-display-inline__main--ColumnGap: var(--pf-t--global--spacer--md);
39
+ --pf-v6-c-masthead--m-docked--GridTemplateRows: min-content 1fr;
40
+ --pf-v6-c-masthead--m-docked--RowGap: var(--pf-t--global--spacer--gutter--default);
41
+ --pf-v6-c-masthead--m-docked--PaddingBlockStart: var(--pf-t--global--spacer--lg);
42
+ --pf-v6-c-masthead--m-docked--PaddingBlockEnd: var(--pf-t--global--spacer--lg);
43
+ --pf-v6-c-masthead--m-docked--PaddingInlineStart: var(--pf-t--global--spacer--sm);
44
+ --pf-v6-c-masthead--m-docked--PaddingInlineEnd: var(--pf-t--global--spacer--sm);
45
+ --pf-v6-c-masthead--m-docked--BackgroundColor: var(--pf-t--global--background--color--glass--default);
46
+ --pf-v6-c-masthead--m-docked--BackdropFilter: var(--pf-t--global--background--color--glass--filter);
47
+ --pf-v6-c-masthead--m-docked--c-toolbar--Height: 100%;
39
48
  --pf-v6-c-masthead__expandable-content--BoxShadow: var(--pf-t--global--box-shadow--md--bottom);
40
49
  --pf-v6-c-masthead__expandable-content--BorderBlockStart: var(--pf-v6-c-masthead--BorderWidth) solid var(--pf-v6-c-masthead--BorderColor);
41
50
  --pf-v6-c-masthead--c-toolbar--Width: 100%;
@@ -56,6 +65,7 @@
56
65
  --pf-v6-c-masthead__main--Display: var(--pf-v6-c-masthead--m-display-stack__main--Display);
57
66
  --pf-v6-c-masthead__main--ColumnGap: var(--pf-v6-c-masthead--m-display-stack__main--ColumnGap);
58
67
  display: grid;
68
+ grid-template-rows: var(--pf-v6-c-masthead--GridTemplateRows);
59
69
  grid-template-columns: var(--pf-v6-c-masthead--GridTemplateColumns);
60
70
  row-gap: var(--pf-v6-c-masthead--RowGap);
61
71
  column-gap: var(--pf-v6-c-masthead--ColumnGap);
@@ -88,6 +98,36 @@
88
98
  --pf-v6-c-masthead__main--ColumnGap: var(--pf-v6-c-masthead--m-display-inline__main--ColumnGap);
89
99
  }
90
100
  }
101
+ .pf-v6-c-masthead.pf-m-docked {
102
+ --pf-v6-c-masthead--BackgroundColor: var(--pf-v6-c-masthead--m-docked--BackgroundColor);
103
+ --pf-v6-c-masthead--GridTemplateRows: var(--pf-v6-c-masthead--m-docked--GridTemplateRows);
104
+ --pf-v6-c-masthead--PaddingBlockStart: var(--pf-v6-c-masthead--m-docked--PaddingBlockStart);
105
+ --pf-v6-c-masthead--PaddingBlockEnd: var(--pf-v6-c-masthead--m-docked--PaddingBlockEnd);
106
+ --pf-v6-c-masthead--PaddingInlineStart: var(--pf-v6-c-masthead--m-docked--PaddingInlineStart);
107
+ --pf-v6-c-masthead--PaddingInlineEnd: var(--pf-v6-c-masthead--m-docked--PaddingInlineEnd);
108
+ --pf-v6-c-masthead--GridTemplateColumns: auto;
109
+ --pf-v6-c-masthead--RowGap: var(--pf-v6-c-masthead--m-docked--RowGap);
110
+ --pf-v6-c-masthead--m-display-inline--breakpoint--xl--GridTemplateColumns: auto;
111
+ --pf-v6-c-masthead__main--GridColumn: auto;
112
+ --pf-v6-c-masthead__content--GridColumn: auto;
113
+ --pf-v6-c-masthead__logo--Width: auto;
114
+ --pf-v6-c-masthead__main--MarginInlineEnd: 0;
115
+ display: flex;
116
+ flex-direction: column;
117
+ align-items: center;
118
+ width: fit-content;
119
+ height: 100%;
120
+ backdrop-filter: var(--pf-v6-c-masthead--m-docked--BackdropFilter);
121
+ }
122
+ .pf-v6-c-masthead.pf-m-docked .pf-v6-c-masthead__content {
123
+ flex-direction: column;
124
+ flex-grow: 1;
125
+ align-self: revert;
126
+ }
127
+ .pf-v6-c-masthead.pf-m-docked .pf-v6-c-toolbar {
128
+ --pf-v6-c-masthead--c-toolbar--Width: fit-content;
129
+ height: var(--pf-v6-c-masthead--m-docked--c-toolbar--Height);
130
+ }
91
131
  .pf-v6-c-masthead .pf-v6-c-toolbar__content-section {
92
132
  flex-wrap: nowrap;
93
133
  min-width: 0;
@@ -55,6 +55,17 @@ $pf-v6-c-masthead--inset-map: build-spacer-map("none", "sm", "md", "lg", "xl", "
55
55
  --#{$masthead}--m-display-inline__main--Display: flex;
56
56
  --#{$masthead}--m-display-inline__main--ColumnGap: var(--pf-t--global--spacer--md);
57
57
 
58
+ // Masthead docked
59
+ --#{$masthead}--m-docked--GridTemplateRows: min-content 1fr;
60
+ --#{$masthead}--m-docked--RowGap: var(--pf-t--global--spacer--gutter--default);
61
+ --#{$masthead}--m-docked--PaddingBlockStart: var(--pf-t--global--spacer--lg);
62
+ --#{$masthead}--m-docked--PaddingBlockEnd: var(--pf-t--global--spacer--lg);
63
+ --#{$masthead}--m-docked--PaddingInlineStart: var(--pf-t--global--spacer--sm);
64
+ --#{$masthead}--m-docked--PaddingInlineEnd: var(--pf-t--global--spacer--sm);
65
+ --#{$masthead}--m-docked--BackgroundColor: var(--pf-t--global--background--color--glass--default);
66
+ --#{$masthead}--m-docked--BackdropFilter: var(--pf-t--global--background--color--glass--filter);
67
+ --#{$masthead}--m-docked--c-toolbar--Height: 100%;
68
+
58
69
  // * Masthead toolbar
59
70
  --#{$masthead}__expandable-content--BoxShadow: var(--pf-t--global--box-shadow--md--bottom);
60
71
  --#{$masthead}__expandable-content--BorderBlockStart: var(--#{$masthead}--BorderWidth) solid var(--#{$masthead}--BorderColor);
@@ -116,6 +127,7 @@ $pf-v6-c-masthead--inset-map: build-spacer-map("none", "sm", "md", "lg", "xl", "
116
127
 
117
128
  // - Masthead
118
129
  display: grid;
130
+ grid-template-rows: var(--#{$masthead}--GridTemplateRows);
119
131
  grid-template-columns: var(--#{$masthead}--GridTemplateColumns);
120
132
  row-gap: var(--#{$masthead}--RowGap);
121
133
  column-gap: var(--#{$masthead}--ColumnGap);
@@ -129,6 +141,41 @@ $pf-v6-c-masthead--inset-map: build-spacer-map("none", "sm", "md", "lg", "xl", "
129
141
  padding-inline-end: var(--#{$masthead}--PaddingInlineEnd, var(--#{$masthead}--PaddingInline));
130
142
  background-color: var(--#{$masthead}--BackgroundColor);
131
143
 
144
+ &.pf-m-docked {
145
+ --#{$masthead}--BackgroundColor: var(--#{$masthead}--m-docked--BackgroundColor);
146
+ --#{$masthead}--GridTemplateRows: var(--#{$masthead}--m-docked--GridTemplateRows);
147
+ --#{$masthead}--PaddingBlockStart: var(--#{$masthead}--m-docked--PaddingBlockStart);
148
+ --#{$masthead}--PaddingBlockEnd: var(--#{$masthead}--m-docked--PaddingBlockEnd);
149
+ --#{$masthead}--PaddingInlineStart: var(--#{$masthead}--m-docked--PaddingInlineStart);
150
+ --#{$masthead}--PaddingInlineEnd: var(--#{$masthead}--m-docked--PaddingInlineEnd);
151
+ --#{$masthead}--GridTemplateColumns: auto;
152
+ --#{$masthead}--RowGap: var(--#{$masthead}--m-docked--RowGap);
153
+ --#{$masthead}--m-display-inline--breakpoint--xl--GridTemplateColumns: auto;
154
+ --#{$masthead}__main--GridColumn: auto;
155
+ --#{$masthead}__content--GridColumn: auto;
156
+ --#{$masthead}__logo--Width: auto;
157
+ --#{$masthead}__main--MarginInlineEnd: 0;
158
+
159
+ display: flex;
160
+ flex-direction: column;
161
+ align-items: center;
162
+ width: fit-content;
163
+ height: 100%;
164
+ backdrop-filter: var(--#{$masthead}--m-docked--BackdropFilter);
165
+
166
+ .#{$masthead}__content {
167
+ flex-direction: column;
168
+ flex-grow: 1;
169
+ align-self: revert;
170
+ }
171
+
172
+ .#{$toolbar} {
173
+ --#{$masthead}--c-toolbar--Width: fit-content;
174
+
175
+ height: var(--#{$masthead}--m-docked--c-toolbar--Height);
176
+ }
177
+ }
178
+
132
179
  .#{$toolbar}__content-section {
133
180
  flex-wrap: nowrap;
134
181
  min-width: 0;
@@ -28,6 +28,15 @@
28
28
  --pf-v6-c-nav__section-title--PaddingInlineStart: var(--pf-v6-c-nav__link--PaddingInlineStart);
29
29
  --pf-v6-c-nav__section-title--PaddingInlineEnd: var(--pf-v6-c-nav__link--PaddingInlineEnd);
30
30
  --pf-v6-c-nav__item--RowGap: var(--pf-v6-c-nav__list--RowGap);
31
+ --pf-v6-c-nav__item--accent--size: var(--pf-t--global--border--width--extra-strong);
32
+ --pf-v6-c-nav__item--accent--color: var(--pf-t--global--border--color--clicked);
33
+ --pf-v6-c-nav__item--accent--offset: calc(var(--pf-t--global--spacer--sm) * -1);
34
+ --pf-v6-c-nav__item--accent--BorderRadius: var(--pf-t--global--border--radius--small);
35
+ --pf-v6-c-nav__item--accent--ScaleY: 0;
36
+ --pf-v6-c-nav__item--current--accent--ScaleY: 1;
37
+ --pf-v6-c-nav__item--accent--TransitionDuration: 0;
38
+ --pf-v6-c-nav__item--current--accent--TransitionDuration: var(--pf-t--global--motion--duration--fade--default);
39
+ --pf-v6-c-nav__item--accent--TransitionTimingFunction: var(--pf-t--global--motion--timing-function--decelerate);
31
40
  --pf-v6-c-nav__item__toggle-icon--Rotate: 0;
32
41
  --pf-v6-c-nav__item--m-expanded__toggle-icon--Rotate: 90deg;
33
42
  --pf-v6-c-nav__item__toggle-icon--TransitionDuration--transform: var(--pf-t--global--motion--duration--icon--default);
@@ -52,6 +61,7 @@
52
61
  --pf-v6-c-nav__link--m-current--TransitionTimingFunction--color: var(--pf-t--global--motion--timing-function--default);
53
62
  --pf-v6-c-nav__link-icon--Color: var(--pf-t--global--icon--color--subtle);
54
63
  --pf-v6-c-nav__link--m-current__link-icon--Color: var(--pf-t--global--icon--color--regular);
64
+ --pf-v6-c-nav__link-text--FontSize: initial;
55
65
  --pf-v6-c-nav__subnav--RowGap: var(--pf-t--global--border--width--extra-strong);
56
66
  --pf-v6-c-nav__subnav--PaddingBlockStart: var(--pf-v6-c-nav__item--RowGap);
57
67
  --pf-v6-c-nav__subnav--PaddingBlockEnd: var(--pf-v6-c-nav__item--RowGap);
@@ -92,6 +102,11 @@
92
102
  --pf-v6-c-nav--m-horizontal--m-subnav__link--PaddingBlockEnd: var(--pf-t--global--spacer--xs);
93
103
  --pf-v6-c-nav--m-horizontal--m-subnav__link--PaddingInlineStart: var(--pf-t--global--spacer--md);
94
104
  --pf-v6-c-nav--m-horizontal--m-subnav__link--PaddingInlineEnd: var(--pf-t--global--spacer--md);
105
+ --pf-v6-c-nav--m-docked__list--RowGap: var(--pf-t--global--spacer--gap--action-to-action--plain);
106
+ --pf-v6-c-nav--m-docked__link--PaddingInlineStart: var(--pf-t--global--spacer--sm);
107
+ --pf-v6-c-nav--m-docked__link--PaddingInlineEnd: var(--pf-t--global--spacer--sm);
108
+ --pf-v6-c-nav--m-docked__link--hover--BackgroundColor: var(--pf-t--global--background--color--action--plain--hover);
109
+ --pf-v6-c-nav--m-docked__link--m-current--BackgroundColor: var(--pf-t--global--background--color--action--plain--clicked);
95
110
  }
96
111
  @media screen and (prefers-reduced-motion: no-preference) {
97
112
  .pf-v6-c-nav {
@@ -133,6 +148,21 @@
133
148
  .pf-v6-c-nav.pf-m-fill {
134
149
  flex-grow: 1;
135
150
  }
151
+ .pf-v6-c-nav.pf-m-docked {
152
+ --pf-v6-c-nav--PaddingBlockStart: 0;
153
+ --pf-v6-c-nav--PaddingBlockEnd: 0;
154
+ --pf-v6-c-nav__list--RowGap: var(--pf-v6-c-nav--m-docked__list--RowGap);
155
+ --pf-v6-c-nav__link--PaddingInlineStart: var(--pf-v6-c-nav--m-docked__link--PaddingInlineStart);
156
+ --pf-v6-c-nav__link--PaddingInlineEnd: var(--pf-v6-c-nav--m-docked__link--PaddingInlineEnd);
157
+ --pf-v6-c-nav__link--hover--BackgroundColor: var(--pf-v6-c-nav--m-docked__link--hover--BackgroundColor);
158
+ --pf-v6-c-nav__link--m-current--BackgroundColor: var(--pf-v6-c-nav--m-docked__link--m-current--BackgroundColor);
159
+ width: fit-content;
160
+ }
161
+ .pf-v6-c-nav.pf-m-docked .pf-v6-c-nav__link-icon {
162
+ position: relative;
163
+ align-self: center;
164
+ min-width: 1lh;
165
+ }
136
166
  .pf-v6-c-nav .pf-v6-c-menu {
137
167
  --pf-v6-c-menu--MinWidth: 100%;
138
168
  }
@@ -196,14 +226,34 @@
196
226
  }
197
227
 
198
228
  .pf-v6-c-nav__item {
229
+ position: relative;
199
230
  scroll-snap-align: var(--pf-v6-c-nav__item--ScrollSnapAlign);
200
231
  }
232
+ .pf-v6-c-nav__item::before {
233
+ position: absolute;
234
+ inset-block-start: 0;
235
+ inset-block-end: 0;
236
+ inset-inline-start: var(--pf-v6-c-nav__item--accent--offset);
237
+ width: var(--pf-v6-c-nav__item--accent--size);
238
+ pointer-events: none;
239
+ content: var(--pf-v6-c-nav__item--accent--content, "");
240
+ background-color: var(--pf-v6-c-nav__item--accent--color);
241
+ border-radius: var(--pf-v6-c-nav__item--accent--BorderRadius);
242
+ transition-timing-function: var(--pf-v6-c-nav__item--accent--TransitionTimingFunction);
243
+ transition-duration: var(--pf-v6-c-nav__item--accent--TransitionDuration);
244
+ transition-property: scale;
245
+ scale: 1 var(--pf-v6-c-nav__item--accent--ScaleY);
246
+ }
201
247
  .pf-v6-c-nav__item > .pf-v6-c-nav__link[button] {
202
248
  margin-block-end: var(--pf-v6-c-nav__button--RowGap--row-offset);
203
249
  }
204
250
  .pf-v6-c-nav__item.pf-m-expanded:last-child > .pf-v6-c-nav__subnav {
205
251
  margin-block-end: calc(var(--pf-v6-c-nav__subnav--PaddingBlockEnd) * -1);
206
252
  }
253
+ .pf-v6-c-nav__item:has(> .pf-v6-c-nav__link.pf-m-current) {
254
+ --pf-v6-c-nav__item--accent--ScaleY: var(--pf-v6-c-nav__item--current--accent--ScaleY);
255
+ --pf-v6-c-nav__item--accent--TransitionDuration: var(--pf-v6-c-nav__item--current--accent--TransitionDuration);
256
+ }
207
257
 
208
258
  .pf-v6-c-nav__section {
209
259
  row-gap: var(--pf-v6-c-nav__section--RowGap, var(--pf-v6-c-nav__list--RowGap));
@@ -265,6 +315,10 @@
265
315
  color: var(--pf-v6-c-nav__link-icon--Color);
266
316
  }
267
317
 
318
+ .pf-v6-c-nav__link-text {
319
+ font-size: var(--pf-v6-c-nav__link-text--FontSize, inherit);
320
+ }
321
+
268
322
  .pf-v6-c-nav__toggle {
269
323
  flex: none;
270
324
  align-self: start;
@@ -320,6 +374,7 @@
320
374
  }
321
375
 
322
376
  .pf-v6-c-nav:where(.pf-m-horizontal) {
377
+ --pf-v6-c-nav__item--accent--content: none;
323
378
  padding: 0;
324
379
  overflow: hidden;
325
380
  }
@@ -40,6 +40,17 @@
40
40
  // * Nav item
41
41
  --#{$nav}__item--RowGap: var(--#{$nav}__list--RowGap);
42
42
 
43
+ // Nav item accent
44
+ --#{$nav}__item--accent--size: var(--pf-t--global--border--width--extra-strong);
45
+ --#{$nav}__item--accent--color: var(--pf-t--global--border--color--clicked);
46
+ --#{$nav}__item--accent--offset: calc(var(--pf-t--global--spacer--sm) * -1);
47
+ --#{$nav}__item--accent--BorderRadius: var(--pf-t--global--border--radius--small);
48
+ --#{$nav}__item--accent--ScaleY: 0;
49
+ --#{$nav}__item--current--accent--ScaleY: 1;
50
+ --#{$nav}__item--accent--TransitionDuration: 0;
51
+ --#{$nav}__item--current--accent--TransitionDuration: var(--pf-t--global--motion--duration--fade--default);
52
+ --#{$nav}__item--accent--TransitionTimingFunction: var(--pf-t--global--motion--timing-function--decelerate);
53
+
43
54
  // * Nav item toggle icon
44
55
  --#{$nav}__item__toggle-icon--Rotate: 0;
45
56
  --#{$nav}__item--m-expanded__toggle-icon--Rotate: 90deg;
@@ -74,6 +85,9 @@
74
85
  --#{$nav}__link-icon--Color: var(--pf-t--global--icon--color--subtle);
75
86
  --#{$nav}__link--m-current__link-icon--Color: var(--pf-t--global--icon--color--regular);
76
87
 
88
+ // Nav link text
89
+ --#{$nav}__link-text--FontSize: initial;
90
+
77
91
  // * Nav subnav
78
92
  --#{$nav}__subnav--RowGap: var(--pf-t--global--border--width--extra-strong);
79
93
  --#{$nav}__subnav--PaddingBlockStart: var(--#{$nav}__item--RowGap); // needed to keep focus outline on first item from being cut off
@@ -129,6 +143,13 @@
129
143
  --#{$nav}--m-horizontal--m-subnav__link--PaddingBlockEnd: var(--pf-t--global--spacer--xs);
130
144
  --#{$nav}--m-horizontal--m-subnav__link--PaddingInlineStart: var(--pf-t--global--spacer--md);
131
145
  --#{$nav}--m-horizontal--m-subnav__link--PaddingInlineEnd: var(--pf-t--global--spacer--md);
146
+
147
+ // Docked
148
+ --#{$nav}--m-docked__list--RowGap: var(--pf-t--global--spacer--gap--action-to-action--plain);
149
+ --#{$nav}--m-docked__link--PaddingInlineStart: var(--pf-t--global--spacer--sm);
150
+ --#{$nav}--m-docked__link--PaddingInlineEnd: var(--pf-t--global--spacer--sm);
151
+ --#{$nav}--m-docked__link--hover--BackgroundColor: var(--pf-t--global--background--color--action--plain--hover);
152
+ --#{$nav}--m-docked__link--m-current--BackgroundColor: var(--pf-t--global--background--color--action--plain--clicked);
132
153
  }
133
154
 
134
155
  // - Nav display - default to grid
@@ -168,6 +189,24 @@
168
189
  flex-grow: 1;
169
190
  }
170
191
 
192
+ &.pf-m-docked {
193
+ --#{$nav}--PaddingBlockStart: 0;
194
+ --#{$nav}--PaddingBlockEnd: 0;
195
+ --#{$nav}__list--RowGap: var(--#{$nav}--m-docked__list--RowGap);
196
+ --#{$nav}__link--PaddingInlineStart: var(--#{$nav}--m-docked__link--PaddingInlineStart);
197
+ --#{$nav}__link--PaddingInlineEnd: var(--#{$nav}--m-docked__link--PaddingInlineEnd);
198
+ --#{$nav}__link--hover--BackgroundColor: var(--#{$nav}--m-docked__link--hover--BackgroundColor);
199
+ --#{$nav}__link--m-current--BackgroundColor: var(--#{$nav}--m-docked__link--m-current--BackgroundColor);
200
+
201
+ width: fit-content;
202
+
203
+ .#{$nav}__link-icon {
204
+ position: relative;
205
+ align-self: center;
206
+ min-width: 1lh;
207
+ }
208
+ }
209
+
171
210
  .#{$menu} {
172
211
  --#{$menu}--MinWidth: 100%;
173
212
 
@@ -244,8 +283,25 @@
244
283
 
245
284
  // - Nav item
246
285
  .#{$nav}__item {
286
+ position: relative;
247
287
  scroll-snap-align: var(--#{$nav}__item--ScrollSnapAlign);
248
288
 
289
+ &::before {
290
+ position: absolute;
291
+ inset-block-start: 0;
292
+ inset-block-end: 0;
293
+ inset-inline-start: var(--#{$nav}__item--accent--offset);
294
+ width: var(--#{$nav}__item--accent--size);
295
+ pointer-events: none;
296
+ content: var(--#{$nav}__item--accent--content, "");
297
+ background-color: var(--#{$nav}__item--accent--color);
298
+ border-radius: var(--#{$nav}__item--accent--BorderRadius);
299
+ transition-timing-function: var(--#{$nav}__item--accent--TransitionTimingFunction);
300
+ transition-duration: var(--#{$nav}__item--accent--TransitionDuration);
301
+ transition-property: scale;
302
+ scale: 1 var(--#{$nav}__item--accent--ScaleY);
303
+ }
304
+
249
305
  > .#{$nav}__link[button] {
250
306
  margin-block-end: var(--#{$nav}__button--RowGap--row-offset);
251
307
  }
@@ -255,6 +311,11 @@
255
311
  margin-block-end: calc(var(--#{$nav}__subnav--PaddingBlockEnd) * -1); // offset bottom padding
256
312
  }
257
313
  }
314
+
315
+ &:has(> .#{$nav}__link.pf-m-current) {
316
+ --#{$nav}__item--accent--ScaleY: var(--#{$nav}__item--current--accent--ScaleY);
317
+ --#{$nav}__item--accent--TransitionDuration: var(--#{$nav}__item--current--accent--TransitionDuration);
318
+ }
258
319
  }
259
320
 
260
321
  // - Nav section
@@ -305,7 +366,6 @@
305
366
  border-radius: inherit;
306
367
  }
307
368
 
308
-
309
369
  // explicitly set background-color prop to avoid affecting child elements settings
310
370
  &:hover,
311
371
  &.pf-m-hover,
@@ -326,11 +386,16 @@
326
386
  }
327
387
  }
328
388
 
329
- // - Nav toggle caret
389
+ // - Nav link icon
330
390
  .#{$nav}__link-icon {
331
391
  color: var(--#{$nav}__link-icon--Color);
332
392
  }
333
393
 
394
+ // - Nav link text
395
+ .#{$nav}__link-text {
396
+ font-size: var(--#{$nav}__link-text--FontSize, inherit);
397
+ }
398
+
334
399
  // - Nav toggle caret
335
400
  .#{$nav}__toggle {
336
401
  flex: none;
@@ -341,7 +406,7 @@
341
406
  transform: translateY(var(--#{$nav}__toggle--TranslateY));
342
407
  }
343
408
 
344
- // - Nav toggle icon
409
+ // - Nav toggle caret icon
345
410
  .#{$nav}__toggle-icon {
346
411
  display: inline-block;
347
412
  transition-timing-function: var(--#{$nav}__item__toggle-icon--TransitionTimingFunction--transform);
@@ -404,6 +469,8 @@
404
469
 
405
470
  // - Nav horizontal
406
471
  .#{$nav}:where(.pf-m-horizontal) {
472
+ --#{$nav}__item--accent--content: none;
473
+
407
474
  padding: 0;
408
475
  overflow: hidden;
409
476
 
@@ -2,6 +2,7 @@
2
2
  --pf-v6-c-page--BackgroundColor: var(--pf-t--global--background--color--secondary--default);
3
3
  --pf-v6-c-page--inset: var(--pf-t--global--spacer--inset--page-chrome);
4
4
  --pf-v6-c-page--c-masthead--ZIndex: var(--pf-t--global--z-index--md);
5
+ --pf-v6-c-page__dock--ZIndex: var(--pf-t--global--z-index--md);
5
6
  --pf-v6-c-page__sidebar--ZIndex: var(--pf-t--global--z-index--sm);
6
7
  --pf-v6-c-page__sidebar--Width--base: 18.125rem;
7
8
  --pf-v6-c-page__sidebar--Width: var(--pf-v6-c-page__sidebar--Width--base);
@@ -109,6 +110,9 @@
109
110
  --pf-v6-c-page__main-wizard--BorderBlockStartWidth: var(--pf-t--global--border--width--action--default);
110
111
  --pf-v6-c-page__drawer--c-drawer--BorderBlockStartWidth: var(--pf-t--global--border--width--high-contrast--regular);
111
112
  --pf-v6-c-page__drawer--c-drawer--BorderBlockStartColor: var(--pf-t--global--border--color--high-contrast);
113
+ --pf-v6-c-page--m-dock__main-container--MaxHeight: calc(100% - var(--pf-t--global--spacer--lg) * 2);
114
+ --pf-v6-c-page--m-dock__main-container--MarginBlockStart: var(--pf-t--global--spacer--lg);
115
+ --pf-v6-c-page--m-dock--ColumnGap: var(--pf-t--global--spacer--inset--page-chrome);
112
116
  }
113
117
  @media screen and (prefers-reduced-motion: no-preference) {
114
118
  .pf-v6-c-page {
@@ -151,6 +155,16 @@
151
155
  grid-template-columns: var(--pf-v6-c-page__sidebar--Width) 1fr;
152
156
  }
153
157
  }
158
+ .pf-v6-c-page.pf-m-dock {
159
+ --pf-v6-c-page--masthead--main-container--GridArea: main;
160
+ --pf-v6-c-page__main-container--MaxHeight: var(--pf-v6-c-page--m-dock__main-container--MaxHeight);
161
+ --pf-v6-c-page__main-container--MarginBlockStart: var(--pf-v6-c-page--m-dock__main-container--MarginBlockStart);
162
+ --pf-v6-c-page__main-container--MarginInlineStart: 0;
163
+ grid-template-areas: "dock main";
164
+ grid-template-rows: auto;
165
+ grid-template-columns: auto 1fr;
166
+ column-gap: var(--pf-v6-c-page--m-dock--ColumnGap);
167
+ }
154
168
  .pf-v6-c-page > .pf-v6-c-masthead .pf-v6-c-masthead__toggle .pf-v6-c-button.pf-m-hamburger:is(:hover, :focus-visible) {
155
169
  --pf-v6-c-button--hamburger-icon--top--path: var(--pf-v6-c-button--hamburger-icon--top--collapse--path);
156
170
  --pf-v6-c-button--hamburger-icon--arrow--path: var(--pf-v6-c-button--hamburger-icon--arrow--collapse--path);
@@ -207,6 +221,11 @@
207
221
  }
208
222
  }
209
223
 
224
+ .pf-v6-c-page__dock {
225
+ z-index: var(--pf-v6-c-page__dock--ZIndex);
226
+ grid-area: dock;
227
+ }
228
+
210
229
  .pf-v6-c-page__sidebar {
211
230
  z-index: var(--pf-v6-c-page__sidebar--ZIndex);
212
231
  display: flex;
@@ -510,6 +529,7 @@
510
529
  flex-direction: column;
511
530
  align-self: var(--pf-v6-c-page__main-container--AlignSelf);
512
531
  max-height: var(--pf-v6-c-page__main-container--MaxHeight);
532
+ margin-block-start: var(--pf-v6-c-page__main-container--MarginBlockStart, 0);
513
533
  margin-inline-start: var(--pf-v6-c-page__main-container--MarginInlineStart);
514
534
  margin-inline-end: var(--pf-v6-c-page__main-container--MarginInlineEnd);
515
535
  background: var(--pf-v6-c-page__main-container--BackgroundColor);
@@ -12,6 +12,9 @@ $pf-page-v6--height-breakpoint-map: build-breakpoint-map("base", "sm", "md", "lg
12
12
  // Header
13
13
  --#{$page}--c-masthead--ZIndex: var(--pf-t--global--z-index--md);
14
14
 
15
+ // Dock
16
+ --#{$page}__dock--ZIndex: var(--pf-t--global--z-index--md);
17
+
15
18
  // Sidebar
16
19
  --#{$page}__sidebar--ZIndex: var(--pf-t--global--z-index--sm);
17
20
  --#{$page}__sidebar--Width--base: #{pf-size-prem(290px)};
@@ -166,6 +169,11 @@ $pf-page-v6--height-breakpoint-map: build-breakpoint-map("base", "sm", "md", "lg
166
169
  // Drawer section
167
170
  --#{$page}__drawer--c-drawer--BorderBlockStartWidth: var(--pf-t--global--border--width--high-contrast--regular);
168
171
  --#{$page}__drawer--c-drawer--BorderBlockStartColor: var(--pf-t--global--border--color--high-contrast);
172
+
173
+ // Docked nav
174
+ --#{$page}--m-dock__main-container--MaxHeight: calc(100% - var(--pf-t--global--spacer--lg) * 2);
175
+ --#{$page}--m-dock__main-container--MarginBlockStart: var(--pf-t--global--spacer--lg);
176
+ --#{$page}--m-dock--ColumnGap: var(--pf-t--global--spacer--inset--page-chrome);
169
177
  }
170
178
 
171
179
  .#{$page} {
@@ -190,6 +198,18 @@ $pf-page-v6--height-breakpoint-map: build-breakpoint-map("base", "sm", "md", "lg
190
198
  grid-template-columns: var(--#{$page}__sidebar--Width) 1fr;
191
199
  }
192
200
 
201
+ &.pf-m-dock {
202
+ --#{$page}--masthead--main-container--GridArea: main;
203
+ --#{$page}__main-container--MaxHeight: var(--#{$page}--m-dock__main-container--MaxHeight);
204
+ --#{$page}__main-container--MarginBlockStart: var(--#{$page}--m-dock__main-container--MarginBlockStart);
205
+ --#{$page}__main-container--MarginInlineStart: 0;
206
+
207
+ grid-template-areas: "dock main";
208
+ grid-template-rows: auto;
209
+ grid-template-columns: auto 1fr;
210
+ column-gap: var(--#{$page}--m-dock--ColumnGap);
211
+ }
212
+
193
213
  // Hamburger menu animation
194
214
  // mobile - show expand on hover
195
215
  > .#{$masthead} .#{$masthead}__toggle .#{$button}.pf-m-hamburger:is(:hover, :focus-visible) {
@@ -230,6 +250,12 @@ $pf-page-v6--height-breakpoint-map: build-breakpoint-map("base", "sm", "md", "lg
230
250
  grid-area: header;
231
251
  }
232
252
 
253
+ // Dock
254
+ .#{$page}__dock {
255
+ z-index: var(--#{$page}__dock--ZIndex);
256
+ grid-area: dock;
257
+ }
258
+
233
259
  // Sidebar
234
260
  .#{$page}__sidebar {
235
261
  z-index: var(--#{$page}__sidebar--ZIndex);
@@ -404,6 +430,7 @@ $pf-page-v6--height-breakpoint-map: build-breakpoint-map("base", "sm", "md", "lg
404
430
  flex-direction: column;
405
431
  align-self: var(--#{$page}__main-container--AlignSelf);
406
432
  max-height: var(--#{$page}__main-container--MaxHeight);
433
+ margin-block-start: var(--#{$page}__main-container--MarginBlockStart, 0);
407
434
  margin-inline-start: var(--#{$page}__main-container--MarginInlineStart);
408
435
  margin-inline-end: var(--#{$page}__main-container--MarginInlineEnd);
409
436
  background: var(--#{$page}__main-container--BackgroundColor);