@patternfly/patternfly 6.3.0-prerelease.3 → 6.3.0-prerelease.31

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 (112) hide show
  1. package/README.md +1 -1
  2. package/assets/images/icon-help.hbs +3 -0
  3. package/assets/images/icon-outlined-star.hbs +3 -0
  4. package/assets/images/icon-star.hbs +3 -0
  5. package/base/patternfly-common.css +46 -11
  6. package/base/patternfly-common.scss +58 -13
  7. package/components/Accordion/accordion.css +72 -3
  8. package/components/Accordion/accordion.scss +78 -6
  9. package/components/Alert/alert-group.css +52 -31
  10. package/components/Alert/alert-group.scss +77 -46
  11. package/components/Button/button.css +154 -6
  12. package/components/Button/button.scss +160 -8
  13. package/components/CodeEditor/code-editor.css +3 -0
  14. package/components/CodeEditor/code-editor.scss +3 -1
  15. package/components/DualListSelector/dual-list-selector.css +36 -0
  16. package/components/DualListSelector/dual-list-selector.scss +43 -0
  17. package/components/ExpandableSection/expandable-section.css +45 -1
  18. package/components/ExpandableSection/expandable-section.scss +48 -1
  19. package/components/Form/form.css +40 -1
  20. package/components/Form/form.scss +47 -1
  21. package/components/FormControl/form-control.css +16 -0
  22. package/components/FormControl/form-control.scss +9 -0
  23. package/components/Menu/menu.css +24 -4
  24. package/components/Menu/menu.scss +20 -5
  25. package/components/MenuToggle/menu-toggle.css +38 -4
  26. package/components/MenuToggle/menu-toggle.scss +48 -3
  27. package/components/Nav/nav.css +22 -8
  28. package/components/Nav/nav.scss +22 -9
  29. package/components/Page/page.css +66 -6
  30. package/components/Page/page.scss +48 -5
  31. package/components/Progress/progress.css +16 -0
  32. package/components/Progress/progress.scss +11 -1
  33. package/components/ProgressStepper/progress-stepper.scss +1 -0
  34. package/components/Skeleton/skeleton.css +22 -2
  35. package/components/Skeleton/skeleton.scss +25 -3
  36. package/components/Spinner/spinner.css +5 -0
  37. package/components/Spinner/spinner.scss +6 -0
  38. package/components/Table/table-grid.css +6 -5
  39. package/components/Table/table-grid.scss +2 -1
  40. package/components/Table/table.css +68 -8
  41. package/components/Table/table.scss +89 -5
  42. package/components/Tabs/tabs.css +25 -15
  43. package/components/Tabs/tabs.scss +26 -13
  44. package/components/TextInputGroup/text-input-group.css +16 -0
  45. package/components/TextInputGroup/text-input-group.scss +8 -0
  46. package/components/Timestamp/timestamp.css +4 -0
  47. package/components/Timestamp/timestamp.scss +7 -0
  48. package/components/TreeView/tree-view.css +39 -0
  49. package/components/TreeView/tree-view.scss +42 -2
  50. package/components/Truncate/truncate.css +6 -0
  51. package/components/Truncate/truncate.scss +9 -0
  52. package/components/_index.css +775 -94
  53. package/docs/components/Breadcrumb/examples/Breadcrumb.md +1 -1
  54. package/docs/components/Button/examples/Button.md +161 -6
  55. package/docs/components/Card/examples/Card.md +8 -8
  56. package/docs/components/CodeBlock/examples/CodeBlock.md +1 -1
  57. package/docs/components/CodeEditor/examples/CodeEditor.md +26 -2
  58. package/docs/components/DataList/examples/DataList.md +23 -23
  59. package/docs/components/Divider/examples/Divider.md +1 -1
  60. package/docs/components/Drawer/examples/Drawer.md +4 -0
  61. package/docs/components/DualListSelector/examples/DualListSelector.md +534 -16
  62. package/docs/components/ExpandableSection/examples/ExpandableSection.md +6 -6
  63. package/docs/components/Form/examples/Form.md +1179 -114
  64. package/docs/components/Hint/examples/Hint.md +3 -3
  65. package/docs/components/InlineEdit/examples/InlineEdit.md +2 -2
  66. package/docs/components/JumpLinks/examples/JumpLinks.md +1 -1
  67. package/docs/components/Masthead/examples/masthead.md +90 -12
  68. package/docs/components/Menu/examples/Menu.md +122 -6
  69. package/docs/components/MenuToggle/examples/MenuToggle.md +93 -55
  70. package/docs/components/ModalBox/examples/ModalBox.md +13 -1
  71. package/docs/components/MultipleFileUpload/examples/MultipleFileUpload.md +2 -10
  72. package/docs/components/OverflowMenu/examples/overflow-menu.md +5 -5
  73. package/docs/components/Page/examples/Page.md +148 -14
  74. package/docs/components/Pagination/examples/Pagination.md +12 -12
  75. package/docs/components/ProgressStepper/examples/ProgressStepper.md +32 -6
  76. package/docs/components/Spinner/examples/Spinner.md +10 -0
  77. package/docs/components/Table/examples/Table.md +9363 -6223
  78. package/docs/components/Tabs/examples/Tabs.md +1214 -6729
  79. package/docs/components/Toolbar/examples/Toolbar.md +7 -7
  80. package/docs/components/Truncate/examples/Truncate.md +53 -10
  81. package/docs/demos/AboutModal/examples/AboutModal.md +22 -3
  82. package/docs/demos/Alert/examples/Alert.md +66 -9
  83. package/docs/demos/BackToTop/examples/BackToTop.md +22 -3
  84. package/docs/demos/Banner/examples/Banner.md +47 -6
  85. package/docs/demos/Card/examples/Card.md +5 -62
  86. package/docs/demos/CardView/examples/CardView.md +24 -5
  87. package/docs/demos/Dashboard/examples/Dashboard.md +24 -5
  88. package/docs/demos/DataList/examples/DataList.md +100 -24
  89. package/docs/demos/DescriptionList/examples/DescriptionList.md +66 -47
  90. package/docs/demos/Drawer/examples/Drawer.md +110 -53
  91. package/docs/demos/Form/examples/BasicForms.md +142 -22
  92. package/docs/demos/JumpLinks/examples/JumpLinks.md +132 -18
  93. package/docs/demos/Masthead/examples/Masthead.md +171 -19
  94. package/docs/demos/Modal/examples/Modal.md +171 -21
  95. package/docs/demos/Nav/examples/Nav.md +113 -18
  96. package/docs/demos/NotificationDrawer/examples/NotificationDrawer.md +110 -15
  97. package/docs/demos/Page/examples/Page.md +661 -40
  98. package/docs/demos/PasswordGenerator/examples/PasswordGenerator.md +13 -1
  99. package/docs/demos/PrimaryDetail/examples/PrimaryDetail.md +160 -103
  100. package/docs/demos/Skeleton/examples/Skeleton.md +22 -3
  101. package/docs/demos/Table/examples/Table.md +504 -175
  102. package/docs/demos/Tabs/examples/Tabs.md +137 -593
  103. package/docs/demos/Toolbar/examples/Toolbar.md +72 -34
  104. package/docs/demos/Wizard/examples/Wizard.md +198 -27
  105. package/package.json +6 -6
  106. package/patternfly-base-no-globals.css +45 -11
  107. package/patternfly-base.css +45 -11
  108. package/patternfly-no-globals.css +820 -105
  109. package/patternfly.css +820 -105
  110. package/patternfly.min.css +1 -1
  111. package/patternfly.min.css.map +1 -1
  112. package/sass-utilities/mixins.scss +54 -0
@@ -51,7 +51,7 @@
51
51
  --pf-v6-c-form__field-group--GridTemplateColumns--toggle: calc(var(--pf-t--global--spacer--md) * 2 + var(--pf-v6-c-form__field-group-toggle-icon--MinWidth) + var(--pf-t--global--spacer--xs));
52
52
  --pf-v6-c-form__field-group-toggle--PaddingBlockStart: var(--pf-v6-c-form__field-group-header--PaddingBlockStart);
53
53
  --pf-v6-c-form__field-group-toggle--PaddingInlineEnd: var(--pf-t--global--spacer--xs);
54
- --pf-v6-c-form__field-group__field-group__field-group-toggle--PaddingBlockStart: var(--pf-t--global--spacer--md);
54
+ --pf-v6-c-form__field-group__field-group__field-group-toggle--PaddingBlockStart: var(--pf-t--global--spacer--lg);
55
55
  --pf-v6-c-form__field-group-header-toggle--BorderWidth--base: var(--pf-t--global--border--width--divider--default);
56
56
  --pf-v6-c-form__field-group__field-group--field-group__field-group-toggle--after--BorderBlockStartWidth: var(--pf-v6-c-form__field-group-header-toggle--BorderWidth--base);
57
57
  --pf-v6-c-form__field-group-toggle-button--MarginBlockStart: calc(var(--pf-t--global--spacer--control--vertical--plain) * -1);
@@ -71,6 +71,8 @@
71
71
  --pf-v6-c-form__field-group-header-description--MarginBlockStart: var(--pf-t--global--spacer--xs);
72
72
  --pf-v6-c-form__field-group-header-description--Color: var(--pf-t--global--text--color--subtle);
73
73
  --pf-v6-c-form__field-group-header-actions--MarginInlineStart: var(--pf-t--global--spacer--sm);
74
+ --pf-v6-c-form__field-group-header-actions--MarginBlockStart: calc(var(--pf-t--global--spacer--control--vertical--plain) * -1);
75
+ --pf-v6-c-form__field-group-header-actions--MarginBlockEnd: calc(var(--pf-t--global--spacer--control--vertical--plain) * -1);
74
76
  --pf-v6-c-form__field-group-body--PaddingBlockStart: var(--pf-t--global--spacer--lg);
75
77
  --pf-v6-c-form__field-group-body--PaddingBlockEnd: var(--pf-t--global--spacer--lg);
76
78
  --pf-v6-c-form__field-group-body--Gap: var(--pf-v6-c-form--GridGap);
@@ -78,6 +80,19 @@
78
80
  --pf-v6-c-form__field-group__field-group__field-group-body--GridColumn: 1 / 3;
79
81
  --pf-v6-c-form__field-group__field-group__field-group-toggle--field-group-body--GridColumn: 2 / 3;
80
82
  --pf-v6-c-form__field-group-body__field-group--last-child--MarginBlockEnd: calc(var(--pf-v6-c-form__field-group-body--PaddingBlockEnd) * -1);
83
+ --pf-v6-c-form__field-group-body--TranslateY: 0;
84
+ --pf-v6-c-form__field-group--m-expanded__field-group-body--TranslateY: 0;
85
+ --pf-v6-c-form__field-group-body--TransitionDuration--expand--slide: 0s;
86
+ --pf-v6-c-form__field-group-body--TransitionDuration--expand--fade: var(--pf-t--global--motion--duration--fade--default);
87
+ --pf-v6-c-form__field-group-body--TransitionDuration--collapse--slide: 0s;
88
+ --pf-v6-c-form__field-group-body--TransitionDuration--collapse--fade: var(--pf-t--global--motion--duration--fade--short);
89
+ }
90
+ @media screen and (prefers-reduced-motion: no-preference) {
91
+ .pf-v6-c-form {
92
+ --pf-v6-c-form__field-group-body--TransitionDuration--expand--slide: var(--pf-t--global--motion--duration--fade--default);
93
+ --pf-v6-c-form__field-group-body--TransitionDuration--collapse--slide: var(--pf-t--global--motion--duration--fade--short);
94
+ --pf-v6-c-form__field-group-body--TranslateY: -.5rem;
95
+ }
81
96
  }
82
97
 
83
98
  .pf-v6-c-form {
@@ -434,6 +449,16 @@
434
449
  .pf-v6-c-form__field-group.pf-m-expanded > .pf-v6-c-form__field-group-toggle {
435
450
  --pf-v6-c-form__field-group-toggle-icon--Rotate: var(--pf-v6-c-form__field-group--m-expanded__toggle-icon--Rotate);
436
451
  }
452
+ .pf-v6-c-form__field-group.pf-m-expanded.pf-m-expandable > .pf-v6-c-form__field-group-body {
453
+ max-height: 99999px;
454
+ padding-block-start: var(--pf-v6-c-form__field-group-body--PaddingBlockStart);
455
+ padding-block-end: var(--pf-v6-c-form__field-group-body--PaddingBlockEnd);
456
+ visibility: visible;
457
+ opacity: 1;
458
+ transition-delay: 0s;
459
+ transition-duration: var(--pf-v6-c-form__field-group-body--TransitionDuration--expand--fade), var(--pf-v6-c-form__field-group-body--TransitionDuration--expand--slide), 0s, 0s, 0s, 0s;
460
+ translate: 0 var(--pf-v6-c-form__field-group--m-expanded__field-group-body--TranslateY);
461
+ }
437
462
 
438
463
  .pf-v6-c-form__field-group-toggle {
439
464
  grid-row: 1/2;
@@ -492,6 +517,8 @@
492
517
  }
493
518
 
494
519
  .pf-v6-c-form__field-group-header-actions {
520
+ margin-block-start: var(--pf-v6-c-form__field-group-header-actions--MarginBlockStart);
521
+ margin-block-end: var(--pf-v6-c-form__field-group-header-actions--MarginBlockEnd);
495
522
  margin-inline-start: var(--pf-v6-c-form__field-group-header-actions--MarginInlineStart);
496
523
  white-space: nowrap;
497
524
  }
@@ -503,6 +530,18 @@
503
530
  padding-block-start: var(--pf-v6-c-form__field-group-body--PaddingBlockStart);
504
531
  padding-block-end: var(--pf-v6-c-form__field-group-body--PaddingBlockEnd);
505
532
  }
533
+ .pf-v6-c-form__field-group.pf-m-expandable > .pf-v6-c-form__field-group-body {
534
+ max-height: 0;
535
+ padding-block-start: 0;
536
+ padding-block-end: 0;
537
+ visibility: hidden;
538
+ opacity: 0;
539
+ transition-delay: 0s, 0s, var(--pf-v6-c-form__field-group-body--TransitionDuration--collapse--fade), var(--pf-v6-c-form__field-group-body--TransitionDuration--collapse--fade), var(--pf-v6-c-form__field-group-body--TransitionDuration--collapse--fade), var(--pf-v6-c-form__field-group-body--TransitionDuration--collapse--fade);
540
+ transition-duration: var(--pf-v6-c-form__field-group-body--TransitionDuration--collapse--fade), var(--pf-v6-c-form__field-group-body--TransitionDuration--collapse--slide), 0s, 0s, 0s, 0s;
541
+ transition-property: opacity, translate, visibility, max-height, padding-block-start, padding-block-end;
542
+ translate: 0 var(--pf-v6-c-form__field-group-body--TranslateY);
543
+ }
544
+
506
545
  .pf-v6-c-form__field-group-body > .pf-v6-c-form__field-group:first-child {
507
546
  --pf-v6-c-form__field-group-toggle--PaddingBlockStart: 0;
508
547
  --pf-v6-c-form__field-group-header--PaddingBlockStart: 0;
@@ -125,10 +125,12 @@ $pf-v6-c-form--m-horizontal--breakpoint-map: build-breakpoint-map("sm", "md", "l
125
125
  --#{$form}__field-group--BorderBlockEndWidth: var(--#{$form}__field-group--border-width-base);
126
126
  --#{$form}__field-group--BorderBlockEndColor: var(--pf-t--global--border--color--default);
127
127
  --#{$form}__field-group--field-group--MarginBlockStart: calc(var(--#{$form}--GridGap) * -1);
128
+
129
+ // Field group toggle
128
130
  --#{$form}__field-group--GridTemplateColumns--toggle: calc(var(--pf-t--global--spacer--md) * 2 + var(--#{$form}__field-group-toggle-icon--MinWidth) + var(--pf-t--global--spacer--xs)); // based off of the expected width of the group toggle, for use to define a column when the toggle is not present
129
131
  --#{$form}__field-group-toggle--PaddingBlockStart: var(--#{$form}__field-group-header--PaddingBlockStart);
130
132
  --#{$form}__field-group-toggle--PaddingInlineEnd: var(--pf-t--global--spacer--xs);
131
- --#{$form}__field-group__field-group__field-group-toggle--PaddingBlockStart: var(--pf-t--global--spacer--md);
133
+ --#{$form}__field-group__field-group__field-group-toggle--PaddingBlockStart: var(--pf-t--global--spacer--lg); // remove in breaking change
132
134
  --#{$form}__field-group-header-toggle--BorderWidth--base: var(--pf-t--global--border--width--divider--default);
133
135
  --#{$form}__field-group__field-group--field-group__field-group-toggle--after--BorderBlockStartWidth: var(--#{$form}__field-group-header-toggle--BorderWidth--base);
134
136
  --#{$form}__field-group-toggle-button--MarginBlockStart: calc(var(--pf-t--global--spacer--control--vertical--plain) * -1);
@@ -138,6 +140,8 @@ $pf-v6-c-form--m-horizontal--breakpoint-map: build-breakpoint-map("sm", "md", "l
138
140
  --#{$form}__field-group-toggle-icon--MinWidth: var(--pf-t--global--font--size--body--default);
139
141
  --#{$form}__field-group-toggle-icon--Rotate: 0;
140
142
  --#{$form}__field-group--m-expanded__toggle-icon--Rotate: 90deg;
143
+
144
+ // Field group header
141
145
  --#{$form}__field-group-header--PaddingBlockStart: var(--pf-t--global--spacer--md);
142
146
  --#{$form}__field-group-header--PaddingBlockEnd: var(--pf-t--global--spacer--md);
143
147
  --#{$form}__field-group-header--GridColumn: 1 / 3;
@@ -148,6 +152,11 @@ $pf-v6-c-form--m-horizontal--breakpoint-map: build-breakpoint-map("sm", "md", "l
148
152
  --#{$form}__field-group-header-description--MarginBlockStart: var(--pf-t--global--spacer--xs);
149
153
  --#{$form}__field-group-header-description--Color: var(--pf-t--global--text--color--subtle);
150
154
  --#{$form}__field-group-header-actions--MarginInlineStart: var(--pf-t--global--spacer--sm);
155
+ --#{$form}__field-group-header-actions--MarginBlockStart: calc(var(--pf-t--global--spacer--control--vertical--plain) * -1);
156
+ --#{$form}__field-group-header-actions--MarginBlockEnd: calc(var(--pf-t--global--spacer--control--vertical--plain) * -1);
157
+
158
+
159
+ // Field group body
151
160
  --#{$form}__field-group-body--PaddingBlockStart: var(--pf-t--global--spacer--lg);
152
161
  --#{$form}__field-group-body--PaddingBlockEnd: var(--pf-t--global--spacer--lg);
153
162
  --#{$form}__field-group-body--Gap: var(--#{$form}--GridGap);
@@ -155,6 +164,18 @@ $pf-v6-c-form--m-horizontal--breakpoint-map: build-breakpoint-map("sm", "md", "l
155
164
  --#{$form}__field-group__field-group__field-group-body--GridColumn: 1 / 3;
156
165
  --#{$form}__field-group__field-group__field-group-toggle--field-group-body--GridColumn: 2 / 3;
157
166
  --#{$form}__field-group-body__field-group--last-child--MarginBlockEnd: calc(var(--#{$form}__field-group-body--PaddingBlockEnd) * -1);
167
+ --#{$form}__field-group-body--TranslateY: 0;
168
+ --#{$form}__field-group--m-expanded__field-group-body--TranslateY: 0;
169
+ --#{$form}__field-group-body--TransitionDuration--expand--slide: 0s;
170
+ --#{$form}__field-group-body--TransitionDuration--expand--fade: var(--pf-t--global--motion--duration--fade--default);
171
+ --#{$form}__field-group-body--TransitionDuration--collapse--slide: 0s;
172
+ --#{$form}__field-group-body--TransitionDuration--collapse--fade: var(--pf-t--global--motion--duration--fade--short);
173
+
174
+ @media screen and (prefers-reduced-motion: no-preference) {
175
+ --#{$form}__field-group-body--TransitionDuration--expand--slide: var(--pf-t--global--motion--duration--fade--default);
176
+ --#{$form}__field-group-body--TransitionDuration--collapse--slide: var(--pf-t--global--motion--duration--fade--short);
177
+ --#{$form}__field-group-body--TranslateY: -.5rem;
178
+ }
158
179
  }
159
180
 
160
181
  .#{$form} {
@@ -385,6 +406,17 @@ $pf-v6-c-form--m-horizontal--breakpoint-map: build-breakpoint-map("sm", "md", "l
385
406
  > .#{$form}__field-group-toggle {
386
407
  --#{$form}__field-group-toggle-icon--Rotate: var(--#{$form}__field-group--m-expanded__toggle-icon--Rotate);
387
408
  }
409
+
410
+ &.pf-m-expandable > .#{$form}__field-group-body { // TODO - remove .pf-m-expandable in a breaking change, it shouldn't be needed. Only needed now so that these styles are an opt-in behind .pf-m-expandable
411
+ max-height: 99999px;
412
+ padding-block-start: var(--#{$form}__field-group-body--PaddingBlockStart);
413
+ padding-block-end: var(--#{$form}__field-group-body--PaddingBlockEnd);
414
+ visibility: visible;
415
+ opacity: 1;
416
+ transition-delay: 0s;
417
+ transition-duration: var(--#{$form}__field-group-body--TransitionDuration--expand--fade), var(--#{$form}__field-group-body--TransitionDuration--expand--slide), 0s, 0s, 0s, 0s;
418
+ translate: 0 var(--#{$form}__field-group--m-expanded__field-group-body--TranslateY);
419
+ }
388
420
  }
389
421
  }
390
422
 
@@ -445,6 +477,8 @@ $pf-v6-c-form--m-horizontal--breakpoint-map: build-breakpoint-map("sm", "md", "l
445
477
  }
446
478
 
447
479
  .#{$form}__field-group-header-actions {
480
+ margin-block-start: var(--#{$form}__field-group-header-actions--MarginBlockStart);
481
+ margin-block-end: var(--#{$form}__field-group-header-actions--MarginBlockEnd);
448
482
  margin-inline-start: var(--#{$form}__field-group-header-actions--MarginInlineStart);
449
483
  white-space: nowrap;
450
484
  }
@@ -456,6 +490,18 @@ $pf-v6-c-form--m-horizontal--breakpoint-map: build-breakpoint-map("sm", "md", "l
456
490
  padding-block-start: var(--#{$form}__field-group-body--PaddingBlockStart);
457
491
  padding-block-end: var(--#{$form}__field-group-body--PaddingBlockEnd);
458
492
 
493
+ @at-root .#{$form}__field-group.pf-m-expandable > & {
494
+ max-height: 0;
495
+ padding-block-start: 0;
496
+ padding-block-end: 0;
497
+ visibility: hidden;
498
+ opacity: 0;
499
+ transition-delay: 0s, 0s, var(--#{$form}__field-group-body--TransitionDuration--collapse--fade), var(--#{$form}__field-group-body--TransitionDuration--collapse--fade), var(--#{$form}__field-group-body--TransitionDuration--collapse--fade), var(--#{$form}__field-group-body--TransitionDuration--collapse--fade);
500
+ transition-duration: var(--#{$form}__field-group-body--TransitionDuration--collapse--fade), var(--#{$form}__field-group-body--TransitionDuration--collapse--slide), 0s, 0s, 0s, 0s;
501
+ transition-property: opacity, translate, visibility, max-height, padding-block-start, padding-block-end;
502
+ translate: 0 var(--#{$form}__field-group-body--TranslateY);
503
+ }
504
+
459
505
  > .#{$form}__field-group {
460
506
  &:first-child {
461
507
  --#{$form}__field-group-toggle--PaddingBlockStart: 0;
@@ -226,6 +226,22 @@
226
226
  --pf-v6-c-form-control__icon--m-status--Color: var(--pf-v6-c-form-control--m-error__icon--m-status--Color);
227
227
  --pf-v6-c-form-control--after--BorderWidth: var(--pf-v6-c-form-control--m-error--after--BorderWidth);
228
228
  }
229
+ @media (prefers-reduced-motion: no-preference) {
230
+ .pf-v6-c-form-control.pf-m-error {
231
+ translate: var(--pf-v6-global--danger-jiggle--TranslateX, 0);
232
+ animation-name: pf-v6-global-danger-jiggle-motion;
233
+ animation-duration: var(--pf-v6-global--danger-jiggle--AnimationDuration--Transform);
234
+ animation-timing-function: var(--pf-v6-global--danger-jiggle--AnimationTimingFunction--Transform);
235
+ animation-fill-mode: both;
236
+ }
237
+ }
238
+ .pf-v6-c-form-control.pf-m-error .pf-v6-c-form-control__icon.pf-m-status {
239
+ --pf-v6-c-form-control--TransitionDuration--Opacity: var(--pf-t--global--motion--duration--fade--default);
240
+ --pf-v6-c-form-control--TransitionTimingFunction--Opacity: var(--pf-t--global--motion--timing-function--default);
241
+ animation-name: pf-v6-global-fade-in;
242
+ animation-duration: var(--pf-v6-c-form-control--TransitionDuration--Opacity);
243
+ animation-timing-function: var(--pf-v6-c-form-control--TransitionTimingFunction--Opacity);
244
+ }
229
245
  .pf-v6-c-form-control.pf-m-error > textarea {
230
246
  padding-inline-end: var(--pf-v6-c-form-control--m-error--PaddingInlineEnd, var(--pf-v6-c-form-control__textarea--m-error--PaddingInlineEnd));
231
247
  }
@@ -290,6 +290,14 @@
290
290
  --#{$form-control}__icon--m-status--Color: var(--#{$form-control}--m-error__icon--m-status--Color);
291
291
  --#{$form-control}--after--BorderWidth: var(--#{$form-control}--m-error--after--BorderWidth);
292
292
 
293
+ @media (prefers-reduced-motion: no-preference) {
294
+ @include pf-v6-animate-danger-jiggle;
295
+ }
296
+
297
+ .#{$form-control}__icon.pf-m-status {
298
+ @include pf-v6-fade-default(#{$form-control});
299
+ }
300
+
293
301
  > textarea {
294
302
  padding-inline-end: var(--#{$form-control}--m-error--PaddingInlineEnd, var(--#{$form-control}__textarea--m-error--PaddingInlineEnd));
295
303
  }
@@ -438,6 +446,7 @@
438
446
 
439
447
  &.pf-m-status {
440
448
  --#{$form-control}__icon--Color: var(--#{$form-control}__icon--m-status--Color);
449
+
441
450
  }
442
451
  }
443
452
 
@@ -12,7 +12,7 @@
12
12
  --pf-v6-c-menu--ZIndex: var(--pf-t--global--z-index--sm);
13
13
  --pf-v6-c-menu--button--disabled--Color: var(--pf-t--global--text--color--disabled);
14
14
  --pf-v6-c-menu--icon--disabled--Color: var(--pf-t--global--icon--color--disabled);
15
- --pf-v6-c-menu--TransitionDuration: var(--pf-t--global--motion--duration--fade--default);
15
+ --pf-v6-c-menu--TransitionDuration: 0s;
16
16
  --pf-v6-c-menu--TransitionTimingFunction: var(--pf-t--global--motion--timing-function--default);
17
17
  --pf-v6-c-menu--m-plain--BoxShadow: none;
18
18
  --pf-v6-c-menu__content--RowGap: var(--pf-v6-c-menu--RowGap);
@@ -85,14 +85,34 @@
85
85
  --pf-v6-c-menu--m-flyout__menu--m-left--InsetInlineEnd: calc(100% + var(--pf-v6-c-menu--m-flyout__menu--m-left--right-offset));
86
86
  --pf-v6-c-menu--m-drilldown__content--TransitionDuration--height: var(--pf-t--global--motion--duration--slide-in--default);
87
87
  --pf-v6-c-menu--m-drilldown__content--TransitionDuration--transform: var(--pf-t--global--motion--duration--slide-in--default);
88
- --pf-v6-c-menu--m-drilldown__content--Transition: transform var(--pf-v6-c-menu--m-drilldown__content--TransitionDuration--transform), height var(--pf-v6-c-menu--m-drilldown__content--TransitionDuration--height);
88
+ --pf-v6-c-menu--m-drilldown__content--Transition: height var(--pf-v6-c-menu--m-drilldown__content--TransitionDuration--height);
89
89
  --pf-v6-c-menu--m-drilldown--c-menu--InsetBlockStart: 0;
90
- --pf-v6-c-menu--m-drilldown--c-menu--TransitionDuration--transform: var(--pf-t--global--motion--duration--slide-in--default);
90
+ --pf-v6-c-menu--m-drilldown--c-menu--TransitionDuration--transform: 0s;
91
91
  --pf-v6-c-menu--m-drilldown--c-menu--Transition: transform var(--pf-v6-c-menu--m-drilldown--c-menu--TransitionDuration--transform);
92
- --pf-v6-c-menu--m-drilldown__list--TransitionDuration--transform: var(--pf-t--global--motion--duration--slide-in--default);
92
+ --pf-v6-c-menu--m-drilldown__list--TransitionDuration--transform: 0s;
93
93
  --pf-v6-c-menu--m-drilldown__list--Transition: transform var(--pf-v6-c-menu--m-drilldown__list--TransitionDuration--transform);
94
94
  --pf-v6-c-menu--m-drilled-in--c-menu__list-item--m-current-path--c-menu--ZIndex: var(--pf-t--global--z-index--xs);
95
95
  }
96
+ @media (prefers-reduced-motion: no-preference) {
97
+ .pf-v6-c-menu {
98
+ --pf-v6-c-menu--TransitionDuration: var(--pf-t--global--motion--duration--fade--default);
99
+ }
100
+ }
101
+ @media (prefers-reduced-motion: no-preference) {
102
+ .pf-v6-c-menu {
103
+ --pf-v6-c-menu--m-drilldown__content--Transition: transform var(--pf-v6-c-menu--m-drilldown__content--TransitionDuration--transform), height var(--pf-v6-c-menu--m-drilldown__content--TransitionDuration--height);
104
+ }
105
+ }
106
+ @media (prefers-reduced-motion: no-preference) {
107
+ .pf-v6-c-menu {
108
+ --pf-v6-c-menu--m-drilldown--c-menu--TransitionDuration--transform: var(--pf-t--global--motion--duration--slide-in--default);
109
+ }
110
+ }
111
+ @media (prefers-reduced-motion: no-preference) {
112
+ .pf-v6-c-menu {
113
+ --pf-v6-c-menu--m-drilldown__list--TransitionDuration--transform: var(--pf-t--global--motion--duration--slide-in--default);
114
+ }
115
+ }
96
116
 
97
117
  .pf-v6-c-menu__content,
98
118
  .pf-v6-c-menu__list-item,
@@ -15,8 +15,12 @@
15
15
  --#{$menu}--ZIndex: var(--pf-t--global--z-index--sm);
16
16
  --#{$menu}--button--disabled--Color: var(--pf-t--global--text--color--disabled);
17
17
  --#{$menu}--icon--disabled--Color: var(--pf-t--global--icon--color--disabled);
18
- --#{$menu}--TransitionDuration: var(--pf-t--global--motion--duration--fade--default);
18
+ --#{$menu}--TransitionDuration: 0s;
19
19
  --#{$menu}--TransitionTimingFunction: var(--pf-t--global--motion--timing-function--default);
20
+
21
+ @media (prefers-reduced-motion: no-preference) {
22
+ --#{$menu}--TransitionDuration: var(--pf-t--global--motion--duration--fade--default);
23
+ }
20
24
 
21
25
  // * Menu plain
22
26
  --#{$menu}--m-plain--BoxShadow: none;
@@ -126,19 +130,30 @@
126
130
  --#{$menu}--m-flyout__menu--m-left--InsetInlineEnd: calc(100% + var(--#{$menu}--m-flyout__menu--m-left--right-offset));
127
131
 
128
132
  // * Menu drilldown content
129
- // TODO Reduced motion default needed for drilldown
130
133
  --#{$menu}--m-drilldown__content--TransitionDuration--height: var(--pf-t--global--motion--duration--slide-in--default);
131
134
  --#{$menu}--m-drilldown__content--TransitionDuration--transform: var(--pf-t--global--motion--duration--slide-in--default);
132
- --#{$menu}--m-drilldown__content--Transition: transform var(--#{$menu}--m-drilldown__content--TransitionDuration--transform), height var(--#{$menu}--m-drilldown__content--TransitionDuration--height);
135
+ --#{$menu}--m-drilldown__content--Transition: height var(--#{$menu}--m-drilldown__content--TransitionDuration--height);
136
+
137
+ @media (prefers-reduced-motion: no-preference) {
138
+ --#{$menu}--m-drilldown__content--Transition: transform var(--#{$menu}--m-drilldown__content--TransitionDuration--transform), height var(--#{$menu}--m-drilldown__content--TransitionDuration--height);
139
+ }
133
140
 
134
141
  // * Menu drilldown menu
135
142
  --#{$menu}--m-drilldown--c-menu--InsetBlockStart: 0;
136
- --#{$menu}--m-drilldown--c-menu--TransitionDuration--transform: var(--pf-t--global--motion--duration--slide-in--default);
143
+ --#{$menu}--m-drilldown--c-menu--TransitionDuration--transform: 0s;
137
144
  --#{$menu}--m-drilldown--c-menu--Transition: transform var(--#{$menu}--m-drilldown--c-menu--TransitionDuration--transform);
138
145
 
146
+ @media (prefers-reduced-motion: no-preference) {
147
+ --#{$menu}--m-drilldown--c-menu--TransitionDuration--transform: var(--pf-t--global--motion--duration--slide-in--default);
148
+ }
149
+
139
150
  // * Menu drilldown list
140
- --#{$menu}--m-drilldown__list--TransitionDuration--transform: var(--pf-t--global--motion--duration--slide-in--default);
151
+ --#{$menu}--m-drilldown__list--TransitionDuration--transform: 0s;
141
152
  --#{$menu}--m-drilldown__list--Transition: transform var(--#{$menu}--m-drilldown__list--TransitionDuration--transform);
153
+
154
+ @media (prefers-reduced-motion: no-preference) {
155
+ --#{$menu}--m-drilldown__list--TransitionDuration--transform: var(--pf-t--global--motion--duration--slide-in--default);
156
+ }
142
157
 
143
158
  // * Menu drilled in
144
159
  --#{$menu}--m-drilled-in--c-menu__list-item--m-current-path--c-menu--ZIndex: var(--pf-t--global--z-index--xs);
@@ -33,6 +33,14 @@
33
33
  --pf-v6-c-menu-toggle--disabled--BackgroundColor: var(--pf-t--global--background--color--disabled--default);
34
34
  --pf-v6-c-menu-toggle__icon--MinHeight: calc(var(--pf-v6-c-menu-toggle--FontSize) * var(--pf-v6-c-menu-toggle--LineHeight));
35
35
  --pf-v6-c-menu-toggle__icon--Color: var(--pf-t--global--icon--color--regular);
36
+ --pf-v6-c-menu-toggle__icon--TransitionDelay: 0s;
37
+ --pf-v6-c-menu-toggle__icon--TransitionDuration: 0s;
38
+ --pf-v6-c-menu-toggle__icon--TransitionProperty: none;
39
+ --pf-v6-c-menu-toggle--hover__icon--TransitionDelay: 0s;
40
+ --pf-v6-c-menu-toggle--hover__icon--TransitionDuration: 0s;
41
+ --pf-v6-c-menu-toggle--hover__icon--TransitionProperty: none;
42
+ --pf-v6-c-menu-toggle__icon--Rotate: 0deg;
43
+ --pf-v6-c-menu-toggle--hover__icon--Rotate: 0deg;
36
44
  --pf-v6-c-menu-toggle__toggle-icon--MinHeight: calc(var(--pf-v6-c-menu-toggle--FontSize) * var(--pf-v6-c-menu-toggle--LineHeight));
37
45
  --pf-v6-c-menu-toggle__toggle-icon--Color: var(--pf-t--global--icon--color--regular);
38
46
  --pf-v6-c-menu-toggle--m-primary--PaddingInlineStart: var(--pf-t--global--spacer--action--horizontal--default);
@@ -130,6 +138,11 @@
130
138
  --pf-v6-c-menu-toggle--m-danger--AnimationTimingFunction--Transform: var(--pf-t--global--motion--timing-function--default);
131
139
  --pf-v6-c-menu-toggle--m-placeholder--Color: var(--pf-t--global--text--color--placeholder);
132
140
  --pf-v6-c-menu-toggle__controls--Gap: var(--pf-t--global--spacer--sm);
141
+ --pf-v6-c-menu-toggle--m-settings__icon--TransitionDuration: var(--pf-t--global--motion--duration--icon--long);
142
+ --pf-v6-c-menu-toggle--m-settings__icon--TransitionTimingFunction: var(--pf-t--global--motion--timing-function--accelerate);
143
+ --pf-v6-c-menu-toggle--m-settings--hover__icon--TransitionDuration: var(--pf-t--global--motion--duration--icon--long);
144
+ --pf-v6-c-menu-toggle--m-settings--hover__icon--TransitionTimingFunction: var(--pf-t--global--motion--timing-function--decelerate);
145
+ --pf-v6-c-menu-toggle--m-settings--hover__icon--Rotate: 60deg;
133
146
  }
134
147
 
135
148
  .pf-v6-c-menu-toggle {
@@ -243,6 +256,10 @@
243
256
  --pf-v6-c-menu-toggle--BorderWidth: var(--pf-v6-c-menu-toggle--hover--BorderWidth);
244
257
  --pf-v6-c-menu-toggle--BorderColor: var(--pf-v6-c-menu-toggle--hover--BorderColor);
245
258
  --pf-v6-c-menu-toggle__toggle-icon--Color: var(--pf-v6-c-menu-toggle--hover__toggle-icon--Color);
259
+ --pf-v6-c-menu-toggle__icon--TransitionDelay: var(--pf-v6-c-menu-toggle--hover__icon--TransitionDelay);
260
+ --pf-v6-c-menu-toggle__icon--TransitionDuration: var(--pf-v6-c-menu-toggle--hover__icon--TransitionDuration);
261
+ --pf-v6-c-menu-toggle__icon--TransitionProperty: var(--pf-v6-c-menu-toggle--hover__icon--TransitionProperty);
262
+ --pf-v6-c-menu-toggle__icon--Rotate: var(--pf-v6-c-menu-toggle--hover__icon--Rotate);
246
263
  }
247
264
  .pf-v6-c-menu-toggle:is(.pf-m-expanded, [aria-expanded=true]) {
248
265
  --pf-v6-c-menu-toggle--Color: var(--pf-v6-c-menu-toggle--expanded--Color);
@@ -298,6 +315,15 @@
298
315
  opacity: 1;
299
316
  }
300
317
  }
318
+ .pf-v6-c-menu-toggle.pf-m-settings {
319
+ --pf-v6-c-menu-toggle__icon--TransitionProperty: rotate;
320
+ --pf-v6-c-menu-toggle__icon--TransitionDuration: var(--pf-v6-c-menu-toggle--m-settings__icon--TransitionDuration);
321
+ --pf-v6-c-menu-toggle__icon--TransitionTimingFunction: var(--pf-v6-c-menu-toggle--m-settings__icon--TransitionTimingFunction);
322
+ --pf-v6-c-menu-toggle--hover__icon--TransitionProperty: rotate;
323
+ --pf-v6-c-menu-toggle--hover__icon--TransitionDuration: var(--pf-v6-c-menu-toggle--m-settings--hover__icon--TransitionDuration);
324
+ --pf-v6-c-menu-toggle--hover__icon--TransitionTimingFunction: var(--pf-v6-c-menu-toggle--m-settings--hover__icon--TransitionTimingFunction);
325
+ --pf-v6-c-menu-toggle--hover__icon--Rotate: var(--pf-v6-c-menu-toggle--m-settings--hover__icon--Rotate);
326
+ }
301
327
  .pf-v6-c-menu-toggle.pf-m-placeholder {
302
328
  --pf-v6-c-menu-toggle--Color: var(--pf-v6-c-menu-toggle--m-placeholder--Color);
303
329
  }
@@ -450,16 +476,24 @@
450
476
  flex-wrap: nowrap;
451
477
  }
452
478
 
453
- .pf-v6-c-menu-toggle__icon {
454
- flex-shrink: 0;
455
- }
456
479
  .pf-v6-c-menu-toggle__icon.pf-m-avatar .pf-v6-c-avatar,
457
480
  .pf-v6-c-menu-toggle__icon.pf-m-avatar img,
458
- .pf-v6-c-menu-toggle__icon.pf-m-avatar svg {
481
+ .pf-v6-c-menu-toggle__icon.pf-m-avatar svg, .pf-v6-c-menu-toggle:not(.pf-m-plain) .pf-v6-c-menu-toggle__icon {
459
482
  margin-block-start: calc(var(--pf-v6-c-menu-toggle--PaddingBlockStart) * -1);
460
483
  margin-block-end: calc(var(--pf-v6-c-menu-toggle--PaddingBlockEnd) * -1);
461
484
  }
462
485
 
486
+ .pf-v6-c-menu-toggle__icon {
487
+ flex-shrink: 0;
488
+ transition-delay: var(--pf-v6-c-menu-toggle__icon--TransitionDelay);
489
+ transition-duration: var(--pf-v6-c-menu-toggle__icon--TransitionDuration);
490
+ transition-property: var(--pf-v6-c-menu-toggle__icon--TransitionProperty);
491
+ rotate: var(--pf-v6-c-menu-toggle__icon--Rotate);
492
+ }
493
+ .pf-v6-c-menu-toggle__icon :where(picture, img) {
494
+ vertical-align: middle;
495
+ }
496
+
463
497
  .pf-v6-c-menu-toggle__controls {
464
498
  display: flex;
465
499
  gap: var(--pf-v6-c-menu-toggle__controls--Gap);
@@ -43,6 +43,14 @@
43
43
  // * Menu toggle icon
44
44
  --#{$menu-toggle}__icon--MinHeight: calc(var(--#{$menu-toggle}--FontSize) * var(--#{$menu-toggle}--LineHeight));
45
45
  --#{$menu-toggle}__icon--Color: var(--pf-t--global--icon--color--regular);
46
+ --#{$menu-toggle}__icon--TransitionDelay: 0s;
47
+ --#{$menu-toggle}__icon--TransitionDuration: 0s;
48
+ --#{$menu-toggle}__icon--TransitionProperty: none;
49
+ --#{$menu-toggle}--hover__icon--TransitionDelay: 0s;
50
+ --#{$menu-toggle}--hover__icon--TransitionDuration: 0s;
51
+ --#{$menu-toggle}--hover__icon--TransitionProperty: none;
52
+ --#{$menu-toggle}__icon--Rotate: 0deg;
53
+ --#{$menu-toggle}--hover__icon--Rotate: 0deg;
46
54
 
47
55
  // * Menu toggle toggle icon
48
56
  --#{$menu-toggle}__toggle-icon--MinHeight: calc(var(--#{$menu-toggle}--FontSize) * var(--#{$menu-toggle}--LineHeight));
@@ -174,6 +182,13 @@
174
182
 
175
183
  // Controls
176
184
  --#{$menu-toggle}__controls--Gap: var(--pf-t--global--spacer--sm);
185
+
186
+ // Settings
187
+ --#{$menu-toggle}--m-settings__icon--TransitionDuration: var(--pf-t--global--motion--duration--icon--long);
188
+ --#{$menu-toggle}--m-settings__icon--TransitionTimingFunction: var(--pf-t--global--motion--timing-function--accelerate);
189
+ --#{$menu-toggle}--m-settings--hover__icon--TransitionDuration: var(--pf-t--global--motion--duration--icon--long);
190
+ --#{$menu-toggle}--m-settings--hover__icon--TransitionTimingFunction: var(--pf-t--global--motion--timing-function--decelerate);
191
+ --#{$menu-toggle}--m-settings--hover__icon--Rotate: 60deg;
177
192
  }
178
193
 
179
194
  .#{$menu-toggle} {
@@ -299,6 +314,10 @@
299
314
  --#{$menu-toggle}--BorderWidth: var(--#{$menu-toggle}--hover--BorderWidth);
300
315
  --#{$menu-toggle}--BorderColor: var(--#{$menu-toggle}--hover--BorderColor);
301
316
  --#{$menu-toggle}__toggle-icon--Color: var(--#{$menu-toggle}--hover__toggle-icon--Color);
317
+ --#{$menu-toggle}__icon--TransitionDelay: var(--#{$menu-toggle}--hover__icon--TransitionDelay);
318
+ --#{$menu-toggle}__icon--TransitionDuration: var(--#{$menu-toggle}--hover__icon--TransitionDuration);
319
+ --#{$menu-toggle}__icon--TransitionProperty: var(--#{$menu-toggle}--hover__icon--TransitionProperty);
320
+ --#{$menu-toggle}__icon--Rotate: var(--#{$menu-toggle}--hover__icon--Rotate);
302
321
  }
303
322
 
304
323
  &:is(.pf-m-expanded, [aria-expanded="true"]) {
@@ -369,6 +388,16 @@
369
388
  }
370
389
  }
371
390
 
391
+ &.pf-m-settings {
392
+ --#{$menu-toggle}__icon--TransitionProperty: rotate;
393
+ --#{$menu-toggle}__icon--TransitionDuration: var(--#{$menu-toggle}--m-settings__icon--TransitionDuration);
394
+ --#{$menu-toggle}__icon--TransitionTimingFunction: var(--#{$menu-toggle}--m-settings__icon--TransitionTimingFunction);
395
+ --#{$menu-toggle}--hover__icon--TransitionProperty: rotate;
396
+ --#{$menu-toggle}--hover__icon--TransitionDuration: var(--#{$menu-toggle}--m-settings--hover__icon--TransitionDuration);
397
+ --#{$menu-toggle}--hover__icon--TransitionTimingFunction: var(--#{$menu-toggle}--m-settings--hover__icon--TransitionTimingFunction);
398
+ --#{$menu-toggle}--hover__icon--Rotate: var(--#{$menu-toggle}--m-settings--hover__icon--Rotate);
399
+ }
400
+
372
401
  &.pf-m-placeholder {
373
402
  --#{$menu-toggle}--Color: var(--#{$menu-toggle}--m-placeholder--Color);
374
403
  }
@@ -567,17 +596,33 @@
567
596
  flex-wrap: nowrap;
568
597
  }
569
598
 
599
+ %pf-v6-menu-toggle__icon--MarginBlock {
600
+ margin-block-start: calc(var(--#{$menu-toggle}--PaddingBlockStart) * -1);
601
+ margin-block-end: calc(var(--#{$menu-toggle}--PaddingBlockEnd) * -1);
602
+ }
603
+
570
604
  .#{$menu-toggle}__icon {
571
605
  flex-shrink: 0;
572
-
606
+ transition-delay: var(--#{$menu-toggle}__icon--TransitionDelay);
607
+ transition-duration: var(--#{$menu-toggle}__icon--TransitionDuration);
608
+ transition-property: var(--#{$menu-toggle}__icon--TransitionProperty);
609
+ rotate: var(--#{$menu-toggle}__icon--Rotate);
610
+
611
+ @at-root .#{$menu-toggle}:not(.pf-m-plain) & {
612
+ @extend %pf-v6-menu-toggle__icon--MarginBlock;
613
+ }
614
+
573
615
  &.pf-m-avatar {
574
616
  .#{$avatar},
575
617
  img,
576
618
  svg {
577
- margin-block-start: calc(var(--#{$menu-toggle}--PaddingBlockStart) * -1);
578
- margin-block-end: calc(var(--#{$menu-toggle}--PaddingBlockEnd) * -1);
619
+ @extend %pf-v6-menu-toggle__icon--MarginBlock;
579
620
  }
580
621
  }
622
+
623
+ :where(picture, img) {
624
+ vertical-align: middle;
625
+ }
581
626
  }
582
627
 
583
628
  // - Menu toggle controls
@@ -52,9 +52,13 @@
52
52
  --pf-v6-c-nav__subnav--PaddingBlockStart: var(--pf-v6-c-nav__item--RowGap);
53
53
  --pf-v6-c-nav__subnav--PaddingBlockEnd: var(--pf-v6-c-nav__item--RowGap);
54
54
  --pf-v6-c-nav__subnav--PaddingInlineStart: var(--pf-t--global--spacer--md);
55
- --pf-v6-c-nav__subnav--TransitionDuration--expand: var(--pf-t--global--motion--duration--slide-in--default);
56
- --pf-v6-c-nav__subnav--TransitionDuration--collapse: var(--pf-t--global--motion--duration--slide-in--short);
55
+ --pf-v6-c-nav__subnav--TransitionDuration--expand: var(--pf-t--global--motion--duration--fade--default);
56
+ --pf-v6-c-nav__subnav--TransitionDuration--expand--slide: 0s;
57
+ --pf-v6-c-nav__subnav--TransitionDuration--collapse: var(--pf-t--global--motion--duration--fade--short);
58
+ --pf-v6-c-nav__subnav--TransitionDuration--collapse--slide: 0s;
57
59
  --pf-v6-c-nav__subnav--TransitionTimingFunction--expand: var(--pf-t--global--motion--timing-function--default);
60
+ --pf-v6-c-nav__subnav--TranslateY: 0;
61
+ --pf-v6-c-nav__subnav--hidden--TranslateY: 0;
58
62
  --pf-v6-c-nav__scroll-button--BorderColor: var(--pf-t--global--border--color--default);
59
63
  --pf-v6-c-nav__scroll-button--BorderWidth: var(--pf-t--global--border--width--divider--default);
60
64
  --pf-v6-c-nav__scroll-button--first-of-type--c-button--BorderStartStartRadius: var(--pf-t--global--border--radius--pill);
@@ -83,6 +87,13 @@
83
87
  --pf-v6-c-nav--m-horizontal--m-subnav__link--PaddingInlineStart: var(--pf-t--global--spacer--md);
84
88
  --pf-v6-c-nav--m-horizontal--m-subnav__link--PaddingInlineEnd: var(--pf-t--global--spacer--md);
85
89
  }
90
+ @media screen and (prefers-reduced-motion: no-preference) {
91
+ .pf-v6-c-nav {
92
+ --pf-v6-c-nav__subnav--TransitionDuration--expand--slide: var(--pf-t--global--motion--duration--fade--default);
93
+ --pf-v6-c-nav__subnav--TransitionDuration--collapse--slide: var(--pf-t--global--motion--duration--fade--short);
94
+ --pf-v6-c-nav__subnav--hidden--TranslateY: -.5rem;
95
+ }
96
+ }
86
97
 
87
98
  .pf-v6-c-nav,
88
99
  .pf-v6-c-nav__section,
@@ -153,24 +164,27 @@
153
164
 
154
165
  .pf-v6-c-nav__subnav {
155
166
  --pf-v6-c-nav__list--RowGap: var(--pf-v6-c-nav__subnav--RowGap);
156
- grid-template-rows: 1fr;
157
- min-height: 0;
167
+ max-height: 99999px;
158
168
  padding-block-start: var(--pf-v6-c-nav__subnav--PaddingBlockStart);
159
169
  padding-block-end: var(--pf-v6-c-nav__subnav--PaddingBlockEnd);
160
170
  padding-inline-start: var(--pf-v6-c-nav__subnav--PaddingInlineStart);
161
171
  overflow-y: clip;
162
- transition-delay: 0s, var(--pf-v6-c-nav__subnav--TransitionDelay--expand--focus, 0s), var(--pf-v6-c-nav__subnav--TransitionDelay--expand--focus, 0s), var(--pf-v6-c-nav__subnav--TransitionDelay--expand--focus, 0s), var(--pf-v6-c-nav__subnav--TransitionDelay--expand--focus, 0s);
172
+ visibility: visible;
173
+ transition-delay: 0s, 0s, var(--pf-v6-c-nav__subnav--TransitionDelay--expand--focus, 0s), var(--pf-v6-c-nav__subnav--TransitionDelay--expand--focus, 0s), var(--pf-v6-c-nav__subnav--TransitionDelay--expand--focus, 0s), var(--pf-v6-c-nav__subnav--TransitionDelay--expand--focus, 0s);
163
174
  transition-timing-function: var(--pf-v6-c-nav__subnav--TransitionTimingFunction--expand);
164
- transition-duration: var(--pf-v6-c-nav__subnav--TransitionDuration--expand), 0s, 0s, 0s, 0s;
165
- transition-property: opacity, visibility, grid-template-rows, padding-block-start, padding-block-end;
175
+ transition-duration: var(--pf-v6-c-nav__subnav--TransitionDuration--expand), var(--pf-v6-c-nav__subnav--TransitionDuration--expand--slide), 0s, 0s, 0s, 0s;
176
+ transition-property: opacity, translate, visibility, max-height, padding-block-start, padding-block-end;
177
+ translate: 0 var(--pf-v6-c-nav__subnav--TranslateY);
166
178
  }
167
179
  .pf-v6-c-nav__subnav[hidden] {
168
180
  --pf-v6-c-nav__subnav--TransitionDelay--expand--focus: var(--pf-v6-c-nav__subnav--TransitionDuration--expand);
169
181
  --pf-v6-c-nav__subnav--TransitionDuration--expand: var(--pf-v6-c-nav__subnav--TransitionDuration--collapse);
182
+ --pf-v6-c-nav__subnav--TransitionDuration--expand--slide: var(--pf-v6-c-nav__subnav--TransitionDuration--collapse--slide);
170
183
  --pf-v6-c-nav__subnav--PaddingBlockStart: 0;
171
184
  --pf-v6-c-nav__subnav--PaddingBlockEnd: 0;
185
+ --pf-v6-c-nav__subnav--TranslateY: var(--pf-v6-c-nav__subnav--hidden--TranslateY);
172
186
  display: grid;
173
- grid-template-rows: 0fr;
187
+ max-height: 0;
174
188
  visibility: hidden;
175
189
  opacity: 0;
176
190
  }
@@ -75,9 +75,19 @@
75
75
  --#{$nav}__subnav--PaddingBlockStart: var(--#{$nav}__item--RowGap); // needed to keep focus outline on first item from being cut off
76
76
  --#{$nav}__subnav--PaddingBlockEnd: var(--#{$nav}__item--RowGap); // needed to keep focus outline on last item from being cut off
77
77
  --#{$nav}__subnav--PaddingInlineStart: var(--pf-t--global--spacer--md);
78
- --#{$nav}__subnav--TransitionDuration--expand: var(--pf-t--global--motion--duration--slide-in--default);
79
- --#{$nav}__subnav--TransitionDuration--collapse: var(--pf-t--global--motion--duration--slide-in--short);
78
+ --#{$nav}__subnav--TransitionDuration--expand: var(--pf-t--global--motion--duration--fade--default);
79
+ --#{$nav}__subnav--TransitionDuration--expand--slide: 0s;
80
+ --#{$nav}__subnav--TransitionDuration--collapse: var(--pf-t--global--motion--duration--fade--short);
81
+ --#{$nav}__subnav--TransitionDuration--collapse--slide: 0s;
80
82
  --#{$nav}__subnav--TransitionTimingFunction--expand: var(--pf-t--global--motion--timing-function--default);
83
+ --#{$nav}__subnav--TranslateY: 0;
84
+ --#{$nav}__subnav--hidden--TranslateY: 0;
85
+
86
+ @media screen and (prefers-reduced-motion: no-preference) {
87
+ --#{$nav}__subnav--TransitionDuration--expand--slide: var(--pf-t--global--motion--duration--fade--default);
88
+ --#{$nav}__subnav--TransitionDuration--collapse--slide: var(--pf-t--global--motion--duration--fade--short);
89
+ --#{$nav}__subnav--hidden--TranslateY: -.5rem;
90
+ }
81
91
 
82
92
  // * Nav scroll button
83
93
  --#{$nav}__scroll-button--BorderColor: var(--pf-t--global--border--color--default);
@@ -199,25 +209,28 @@
199
209
  .#{$nav}__subnav {
200
210
  --#{$nav}__list--RowGap: var(--#{$nav}__subnav--RowGap); // this value is passed to --#{$nav}__item--RowGap--row-offset and updates clickable area based on value passed
201
211
 
202
- grid-template-rows: 1fr;
203
- min-height: 0;
212
+ max-height: 99999px;
204
213
  padding-block-start: var(--#{$nav}__subnav--PaddingBlockStart);
205
214
  padding-block-end: var(--#{$nav}__subnav--PaddingBlockEnd);
206
215
  padding-inline-start: var(--#{$nav}__subnav--PaddingInlineStart); // indent nested lists
207
216
  overflow-y: clip;
208
- transition-delay: 0s, var(--#{$nav}__subnav--TransitionDelay--expand--focus, 0s), var(--#{$nav}__subnav--TransitionDelay--expand--focus, 0s), var(--#{$nav}__subnav--TransitionDelay--expand--focus, 0s), var(--#{$nav}__subnav--TransitionDelay--expand--focus, 0s);
217
+ visibility: visible;
218
+ transition-delay: 0s, 0s, var(--#{$nav}__subnav--TransitionDelay--expand--focus, 0s), var(--#{$nav}__subnav--TransitionDelay--expand--focus, 0s), var(--#{$nav}__subnav--TransitionDelay--expand--focus, 0s), var(--#{$nav}__subnav--TransitionDelay--expand--focus, 0s);
209
219
  transition-timing-function: var(--#{$nav}__subnav--TransitionTimingFunction--expand);
210
- transition-duration: var(--#{$nav}__subnav--TransitionDuration--expand), 0s, 0s, 0s, 0s;
211
- transition-property: opacity, visibility, grid-template-rows, padding-block-start, padding-block-end;
212
-
220
+ transition-duration: var(--#{$nav}__subnav--TransitionDuration--expand), var(--#{$nav}__subnav--TransitionDuration--expand--slide), 0s, 0s, 0s, 0s;
221
+ transition-property: opacity, translate, visibility, max-height, padding-block-start, padding-block-end;
222
+ translate: 0 var(--#{$nav}__subnav--TranslateY);
223
+
213
224
  &[hidden] {
214
225
  --#{$nav}__subnav--TransitionDelay--expand--focus: var(--#{$nav}__subnav--TransitionDuration--expand);
215
226
  --#{$nav}__subnav--TransitionDuration--expand: var(--#{$nav}__subnav--TransitionDuration--collapse);
227
+ --#{$nav}__subnav--TransitionDuration--expand--slide: var(--#{$nav}__subnav--TransitionDuration--collapse--slide);
216
228
  --#{$nav}__subnav--PaddingBlockStart: 0;
217
229
  --#{$nav}__subnav--PaddingBlockEnd: 0;
230
+ --#{$nav}__subnav--TranslateY: var(--#{$nav}__subnav--hidden--TranslateY);
218
231
 
219
232
  display: grid; // overrides `display: none` - element is hidden via `visibility: hidden`
220
- grid-template-rows: 0fr;
233
+ max-height: 0;
221
234
  visibility: hidden;
222
235
  opacity: 0;
223
236
  }