@patternfly/react-core 6.5.0-prerelease.1 → 6.5.0-prerelease.10

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 (287) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/components/package.json +1 -1
  3. package/deprecated/package.json +1 -1
  4. package/dist/dynamic/components/AboutModal/package.json +1 -1
  5. package/dist/dynamic/components/Accordion/package.json +1 -1
  6. package/dist/dynamic/components/ActionList/package.json +1 -1
  7. package/dist/dynamic/components/Alert/package.json +1 -1
  8. package/dist/dynamic/components/Avatar/package.json +1 -1
  9. package/dist/dynamic/components/BackToTop/package.json +1 -1
  10. package/dist/dynamic/components/Backdrop/package.json +1 -1
  11. package/dist/dynamic/components/BackgroundImage/package.json +1 -1
  12. package/dist/dynamic/components/Badge/package.json +1 -1
  13. package/dist/dynamic/components/Banner/package.json +1 -1
  14. package/dist/dynamic/components/Brand/package.json +1 -1
  15. package/dist/dynamic/components/Breadcrumb/package.json +1 -1
  16. package/dist/dynamic/components/Button/package.json +1 -1
  17. package/dist/dynamic/components/CalendarMonth/package.json +1 -1
  18. package/dist/dynamic/components/Card/package.json +1 -1
  19. package/dist/dynamic/components/Checkbox/package.json +1 -1
  20. package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
  21. package/dist/dynamic/components/CodeBlock/package.json +1 -1
  22. package/dist/dynamic/components/Compass/package.json +1 -1
  23. package/dist/dynamic/components/Content/package.json +1 -1
  24. package/dist/dynamic/components/DataList/package.json +1 -1
  25. package/dist/dynamic/components/DatePicker/package.json +1 -1
  26. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  27. package/dist/dynamic/components/Divider/package.json +1 -1
  28. package/dist/dynamic/components/Drawer/package.json +1 -1
  29. package/dist/dynamic/components/Dropdown/package.json +1 -1
  30. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  31. package/dist/dynamic/components/EmptyState/package.json +1 -1
  32. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  33. package/dist/dynamic/components/FileUpload/package.json +1 -1
  34. package/dist/dynamic/components/Form/package.json +1 -1
  35. package/dist/dynamic/components/FormSelect/package.json +1 -1
  36. package/dist/dynamic/components/HelperText/package.json +1 -1
  37. package/dist/dynamic/components/Hint/package.json +1 -1
  38. package/dist/dynamic/components/Icon/package.json +1 -1
  39. package/dist/dynamic/components/InputGroup/package.json +1 -1
  40. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  41. package/dist/dynamic/components/Label/package.json +1 -1
  42. package/dist/dynamic/components/List/package.json +1 -1
  43. package/dist/dynamic/components/LoginPage/package.json +1 -1
  44. package/dist/dynamic/components/Masthead/package.json +1 -1
  45. package/dist/dynamic/components/Menu/package.json +1 -1
  46. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  47. package/dist/dynamic/components/Modal/package.json +1 -1
  48. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  49. package/dist/dynamic/components/Nav/package.json +1 -1
  50. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  51. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  52. package/dist/dynamic/components/NumberInput/package.json +1 -1
  53. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  54. package/dist/dynamic/components/Page/package.json +1 -1
  55. package/dist/dynamic/components/Pagination/package.json +1 -1
  56. package/dist/dynamic/components/Panel/package.json +1 -1
  57. package/dist/dynamic/components/Popover/package.json +1 -1
  58. package/dist/dynamic/components/Progress/package.json +1 -1
  59. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  60. package/dist/dynamic/components/Radio/package.json +1 -1
  61. package/dist/dynamic/components/SearchInput/package.json +1 -1
  62. package/dist/dynamic/components/Select/package.json +1 -1
  63. package/dist/dynamic/components/Sidebar/package.json +1 -1
  64. package/dist/dynamic/components/SimpleList/package.json +1 -1
  65. package/dist/dynamic/components/Skeleton/package.json +1 -1
  66. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  67. package/dist/dynamic/components/Slider/package.json +1 -1
  68. package/dist/dynamic/components/Spinner/package.json +1 -1
  69. package/dist/dynamic/components/Switch/package.json +1 -1
  70. package/dist/dynamic/components/Tabs/package.json +1 -1
  71. package/dist/dynamic/components/TextArea/package.json +1 -1
  72. package/dist/dynamic/components/TextInput/package.json +1 -1
  73. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  74. package/dist/dynamic/components/TimePicker/package.json +1 -1
  75. package/dist/dynamic/components/Timestamp/package.json +1 -1
  76. package/dist/dynamic/components/Title/package.json +1 -1
  77. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  78. package/dist/dynamic/components/Toolbar/package.json +1 -1
  79. package/dist/dynamic/components/Tooltip/package.json +1 -1
  80. package/dist/dynamic/components/TreeView/package.json +1 -1
  81. package/dist/dynamic/components/Truncate/package.json +1 -1
  82. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  83. package/dist/dynamic/components/Wizard/package.json +1 -1
  84. package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
  85. package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Tile/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  90. package/dist/dynamic/deprecated/components/package.json +1 -1
  91. package/dist/dynamic/helpers/AnimationsProvider/AnimationsProvider/package.json +1 -1
  92. package/dist/dynamic/helpers/AnimationsProvider/package.json +1 -1
  93. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  94. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  95. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  96. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  97. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  98. package/dist/dynamic/helpers/constants/package.json +1 -1
  99. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  100. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  101. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  102. package/dist/dynamic/helpers/package.json +1 -1
  103. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  104. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  105. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  106. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  107. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  108. package/dist/dynamic/helpers/util/package.json +1 -1
  109. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  110. package/dist/dynamic/layouts/Flex/package.json +1 -1
  111. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  112. package/dist/dynamic/layouts/Grid/package.json +1 -1
  113. package/dist/dynamic/layouts/Level/package.json +1 -1
  114. package/dist/dynamic/layouts/Split/package.json +1 -1
  115. package/dist/dynamic/layouts/Stack/package.json +1 -1
  116. package/dist/dynamic/styles/package.json +1 -1
  117. package/dist/esm/components/Card/CardSubtitle.d.ts +9 -0
  118. package/dist/esm/components/Card/CardSubtitle.d.ts.map +1 -0
  119. package/dist/esm/components/Card/CardSubtitle.js +10 -0
  120. package/dist/esm/components/Card/CardSubtitle.js.map +1 -0
  121. package/dist/esm/components/Card/CardTitle.d.ts +2 -0
  122. package/dist/esm/components/Card/CardTitle.d.ts.map +1 -1
  123. package/dist/esm/components/Card/CardTitle.js +5 -3
  124. package/dist/esm/components/Card/CardTitle.js.map +1 -1
  125. package/dist/esm/components/Compass/Compass.d.ts.map +1 -1
  126. package/dist/esm/components/Compass/Compass.js +2 -2
  127. package/dist/esm/components/Compass/Compass.js.map +1 -1
  128. package/dist/esm/components/DataList/DataList.d.ts +2 -0
  129. package/dist/esm/components/DataList/DataList.d.ts.map +1 -1
  130. package/dist/esm/components/DataList/DataList.js +2 -2
  131. package/dist/esm/components/DataList/DataList.js.map +1 -1
  132. package/dist/esm/components/Drawer/Drawer.d.ts +2 -0
  133. package/dist/esm/components/Drawer/Drawer.d.ts.map +1 -1
  134. package/dist/esm/components/Drawer/Drawer.js +2 -2
  135. package/dist/esm/components/Drawer/Drawer.js.map +1 -1
  136. package/dist/esm/components/Drawer/DrawerPanelContent.d.ts +2 -0
  137. package/dist/esm/components/Drawer/DrawerPanelContent.d.ts.map +1 -1
  138. package/dist/esm/components/Drawer/DrawerPanelContent.js +2 -2
  139. package/dist/esm/components/Drawer/DrawerPanelContent.js.map +1 -1
  140. package/dist/esm/components/ExpandableSection/ExpandableSection.d.ts +9 -2
  141. package/dist/esm/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
  142. package/dist/esm/components/ExpandableSection/ExpandableSection.js +5 -3
  143. package/dist/esm/components/ExpandableSection/ExpandableSection.js.map +1 -1
  144. package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.d.ts +5 -0
  145. package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.d.ts.map +1 -1
  146. package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.js +3 -2
  147. package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.js.map +1 -1
  148. package/dist/esm/components/Page/Page.d.ts.map +1 -1
  149. package/dist/esm/components/Page/Page.js +1 -0
  150. package/dist/esm/components/Page/Page.js.map +1 -1
  151. package/dist/esm/components/Page/PageContext.d.ts +1 -0
  152. package/dist/esm/components/Page/PageContext.d.ts.map +1 -1
  153. package/dist/esm/components/Page/PageContext.js +1 -0
  154. package/dist/esm/components/Page/PageContext.js.map +1 -1
  155. package/dist/esm/components/Page/PageSidebar.js +2 -2
  156. package/dist/esm/components/Page/PageSidebar.js.map +1 -1
  157. package/dist/esm/components/Progress/Progress.d.ts +2 -0
  158. package/dist/esm/components/Progress/Progress.d.ts.map +1 -1
  159. package/dist/esm/components/Progress/Progress.js +2 -2
  160. package/dist/esm/components/Progress/Progress.js.map +1 -1
  161. package/dist/esm/components/Progress/ProgressContainer.d.ts +2 -0
  162. package/dist/esm/components/Progress/ProgressContainer.d.ts.map +1 -1
  163. package/dist/esm/components/Progress/ProgressContainer.js +2 -2
  164. package/dist/esm/components/Progress/ProgressContainer.js.map +1 -1
  165. package/dist/esm/components/Tabs/Tabs.d.ts.map +1 -1
  166. package/dist/esm/components/Tabs/Tabs.js +2 -2
  167. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  168. package/dist/esm/components/Truncate/Truncate.d.ts.map +1 -1
  169. package/dist/esm/components/Truncate/Truncate.js +5 -4
  170. package/dist/esm/components/Truncate/Truncate.js.map +1 -1
  171. package/dist/js/components/Card/CardSubtitle.d.ts +9 -0
  172. package/dist/js/components/Card/CardSubtitle.d.ts.map +1 -0
  173. package/dist/js/components/Card/CardSubtitle.js +14 -0
  174. package/dist/js/components/Card/CardSubtitle.js.map +1 -0
  175. package/dist/js/components/Card/CardTitle.d.ts +2 -0
  176. package/dist/js/components/Card/CardTitle.d.ts.map +1 -1
  177. package/dist/js/components/Card/CardTitle.js +4 -2
  178. package/dist/js/components/Card/CardTitle.js.map +1 -1
  179. package/dist/js/components/Compass/Compass.d.ts.map +1 -1
  180. package/dist/js/components/Compass/Compass.js +1 -1
  181. package/dist/js/components/Compass/Compass.js.map +1 -1
  182. package/dist/js/components/DataList/DataList.d.ts +2 -0
  183. package/dist/js/components/DataList/DataList.d.ts.map +1 -1
  184. package/dist/js/components/DataList/DataList.js +2 -2
  185. package/dist/js/components/DataList/DataList.js.map +1 -1
  186. package/dist/js/components/Drawer/Drawer.d.ts +2 -0
  187. package/dist/js/components/Drawer/Drawer.d.ts.map +1 -1
  188. package/dist/js/components/Drawer/Drawer.js +2 -2
  189. package/dist/js/components/Drawer/Drawer.js.map +1 -1
  190. package/dist/js/components/Drawer/DrawerPanelContent.d.ts +2 -0
  191. package/dist/js/components/Drawer/DrawerPanelContent.d.ts.map +1 -1
  192. package/dist/js/components/Drawer/DrawerPanelContent.js +2 -2
  193. package/dist/js/components/Drawer/DrawerPanelContent.js.map +1 -1
  194. package/dist/js/components/ExpandableSection/ExpandableSection.d.ts +9 -2
  195. package/dist/js/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
  196. package/dist/js/components/ExpandableSection/ExpandableSection.js +5 -3
  197. package/dist/js/components/ExpandableSection/ExpandableSection.js.map +1 -1
  198. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.d.ts +5 -0
  199. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.d.ts.map +1 -1
  200. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.js +3 -2
  201. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.js.map +1 -1
  202. package/dist/js/components/Page/Page.d.ts.map +1 -1
  203. package/dist/js/components/Page/Page.js +1 -0
  204. package/dist/js/components/Page/Page.js.map +1 -1
  205. package/dist/js/components/Page/PageContext.d.ts +1 -0
  206. package/dist/js/components/Page/PageContext.d.ts.map +1 -1
  207. package/dist/js/components/Page/PageContext.js +1 -0
  208. package/dist/js/components/Page/PageContext.js.map +1 -1
  209. package/dist/js/components/Page/PageSidebar.js +2 -2
  210. package/dist/js/components/Page/PageSidebar.js.map +1 -1
  211. package/dist/js/components/Progress/Progress.d.ts +2 -0
  212. package/dist/js/components/Progress/Progress.d.ts.map +1 -1
  213. package/dist/js/components/Progress/Progress.js +2 -2
  214. package/dist/js/components/Progress/Progress.js.map +1 -1
  215. package/dist/js/components/Progress/ProgressContainer.d.ts +2 -0
  216. package/dist/js/components/Progress/ProgressContainer.d.ts.map +1 -1
  217. package/dist/js/components/Progress/ProgressContainer.js +2 -2
  218. package/dist/js/components/Progress/ProgressContainer.js.map +1 -1
  219. package/dist/js/components/Tabs/Tabs.d.ts.map +1 -1
  220. package/dist/js/components/Tabs/Tabs.js +2 -2
  221. package/dist/js/components/Tabs/Tabs.js.map +1 -1
  222. package/dist/js/components/Truncate/Truncate.d.ts.map +1 -1
  223. package/dist/js/components/Truncate/Truncate.js +5 -4
  224. package/dist/js/components/Truncate/Truncate.js.map +1 -1
  225. package/dist/styles/base-no-reset.css +46 -0
  226. package/dist/styles/base.css +53 -0
  227. package/dist/umd/assets/{output-COsUhzfR.css → output-4DDCBaXc.css} +21206 -21163
  228. package/dist/umd/react-core.min.js +3 -3
  229. package/helpers/package.json +1 -1
  230. package/layouts/package.json +1 -1
  231. package/next/package.json +1 -1
  232. package/package.json +6 -6
  233. package/src/components/Card/CardSubtitle.tsx +20 -0
  234. package/src/components/Card/CardTitle.tsx +6 -0
  235. package/src/components/Card/__tests__/CardSubtitle.test.tsx +48 -0
  236. package/src/components/Card/__tests__/CardTitle.test.tsx +27 -17
  237. package/src/components/Card/__tests__/__snapshots__/CardSubtitle.test.tsx.snap +21 -0
  238. package/src/components/Card/__tests__/__snapshots__/CardTitle.test.tsx.snap +1 -1
  239. package/src/components/Card/examples/Card.md +16 -1
  240. package/src/components/Card/examples/CardSubtitle.tsx +9 -0
  241. package/src/components/Card/examples/CardSubtitleActions.tsx +107 -0
  242. package/src/components/ClipboardCopy/__tests__/ClipboardCopyTruncateIntegration.test.tsx +32 -0
  243. package/src/components/Compass/Compass.tsx +4 -2
  244. package/src/components/Compass/__tests__/__snapshots__/Compass.test.tsx.snap +32 -28
  245. package/src/components/Compass/examples/Compass.md +10 -1
  246. package/src/components/Compass/examples/CompassDemo.tsx +6 -6
  247. package/src/components/DataList/DataList.tsx +4 -0
  248. package/src/components/DataList/__tests__/DataList.test.tsx +6 -0
  249. package/src/components/DataList/examples/DataList.md +6 -0
  250. package/src/components/DataList/examples/DataListPlain.tsx +32 -0
  251. package/src/components/Drawer/Drawer.tsx +4 -0
  252. package/src/components/Drawer/DrawerPanelContent.tsx +4 -0
  253. package/src/components/Drawer/__tests__/Drawer.test.tsx +26 -1
  254. package/src/components/Drawer/__tests__/DrawerPanelContent.test.tsx +10 -0
  255. package/src/components/Drawer/examples/Drawer.md +13 -0
  256. package/src/components/Drawer/examples/DrawerBasicPill.tsx +57 -0
  257. package/src/components/Drawer/examples/DrawerPillInline.tsx +57 -0
  258. package/src/components/ExpandableSection/ExpandableSection.tsx +17 -5
  259. package/src/components/ExpandableSection/ExpandableSectionToggle.tsx +48 -38
  260. package/src/components/ExpandableSection/__tests__/ExpandableSection.test.tsx +63 -0
  261. package/src/components/ExpandableSection/__tests__/ExpandableSectionToggle.test.tsx +28 -0
  262. package/src/components/ExpandableSection/examples/ExpandableSection.md +16 -0
  263. package/src/components/ExpandableSection/examples/ExpandableSectionCustomToggle.tsx +31 -16
  264. package/src/components/ExpandableSection/examples/ExpandableSectionUncontrolledDynamicToggleFunction.tsx +13 -0
  265. package/src/components/ExpandableSection/examples/ExpandableSectionWithHeading.tsx +89 -0
  266. package/src/components/Page/Page.tsx +1 -0
  267. package/src/components/Page/PageContext.tsx +2 -0
  268. package/src/components/Page/PageSidebar.tsx +2 -2
  269. package/src/components/Page/__tests__/Generated/__snapshots__/PageSidebar.test.tsx.snap +1 -1
  270. package/src/components/Page/__tests__/__snapshots__/Page.test.tsx.snap +12 -12
  271. package/src/components/Progress/Progress.tsx +4 -0
  272. package/src/components/Progress/ProgressContainer.tsx +5 -2
  273. package/src/components/Progress/__tests__/Generated/ProgressContainer.test.tsx +1 -0
  274. package/src/components/Progress/__tests__/Progress.test.tsx +32 -0
  275. package/src/components/Progress/examples/Progress.md +2 -14
  276. package/src/components/Progress/examples/ProgressInteractiveFailure.tsx +55 -0
  277. package/src/components/Tabs/Tabs.tsx +2 -2
  278. package/src/components/Tabs/__tests__/Tabs.test.tsx +60 -0
  279. package/src/components/Tabs/__tests__/__snapshots__/Tabs.test.tsx.snap +13 -13
  280. package/src/components/Tabs/examples/Tabs.md +8 -0
  281. package/src/components/Tabs/examples/TabsSiteNav.tsx +40 -0
  282. package/src/components/Truncate/Truncate.tsx +5 -4
  283. package/src/components/Truncate/__tests__/Truncate.test.tsx +21 -3
  284. package/src/components/Truncate/__tests__/__snapshots__/Truncate.test.tsx.snap +3 -9
  285. package/src/components/Progress/examples/ProgressFailureWithoutMeasure.tsx +0 -5
  286. package/src/components/Progress/examples/ProgressInsideSuccess.tsx +0 -10
  287. package/src/components/Progress/examples/ProgressOutsideFailure.tsx +0 -10
@@ -0,0 +1,89 @@
1
+ import { useState, MouseEvent } from 'react';
2
+ import { ExpandableSection, ExpandableSectionToggle, Stack, StackItem } from '@patternfly/react-core';
3
+ import CheckCircleIcon from '@patternfly/react-icons/dist/esm/icons/check-circle-icon';
4
+
5
+ export const ExpandableSectionWithHeading = () => {
6
+ const [isExpanded1, setIsExpanded1] = useState(false);
7
+ const [isExpanded2, setIsExpanded2] = useState(false);
8
+ const [isExpandedDetached, setIsExpandedDetached] = useState(false);
9
+
10
+ const onToggle1 = (_event: MouseEvent, isExpanded: boolean) => {
11
+ setIsExpanded1(isExpanded);
12
+ };
13
+
14
+ const onToggle2 = (_event: MouseEvent, isExpanded: boolean) => {
15
+ setIsExpanded2(isExpanded);
16
+ };
17
+
18
+ const onToggleDetached = (isExpanded: boolean) => {
19
+ setIsExpandedDetached(isExpanded);
20
+ };
21
+
22
+ return (
23
+ <Stack hasGutter>
24
+ <StackItem>
25
+ <h4>Document with Expandable Sections</h4>
26
+ <p>This demonstrates how to use expandable sections with proper heading semantics.</p>
27
+
28
+ {/* Using toggleWrapper prop for proper heading semantics */}
29
+ <ExpandableSection
30
+ toggleWrapper="h5"
31
+ toggleText="Toggle as a heading"
32
+ onToggle={onToggle1}
33
+ isExpanded={isExpanded1}
34
+ >
35
+ <p>
36
+ This content is visible only when the component is expanded. The toggle text above functions as a proper
37
+ heading in the document structure, which is important for screen readers and other assistive technologies.
38
+ </p>
39
+ <p>
40
+ When using the <code>toggleWrapper</code> prop with heading elements (h1-h6), the button is rendered inside
41
+ the heading element, maintaining proper semantic structure.
42
+ </p>
43
+ </ExpandableSection>
44
+ </StackItem>
45
+
46
+ <StackItem>
47
+ <h4>Detached Variant with Heading</h4>
48
+ <p>You can also use the detached variant with heading semantics:</p>
49
+
50
+ <ExpandableSectionToggle
51
+ toggleWrapper="h5"
52
+ toggleId="detached-heading-toggle"
53
+ contentId="detached-heading-content"
54
+ isExpanded={isExpandedDetached}
55
+ onToggle={onToggleDetached}
56
+ >
57
+ Detached Toggle with Heading
58
+ </ExpandableSectionToggle>
59
+
60
+ <ExpandableSection
61
+ isDetached
62
+ toggleId="detached-heading-toggle"
63
+ contentId="detached-heading-content"
64
+ isExpanded={isExpandedDetached}
65
+ >
66
+ <p>This is detached content that can be positioned anywhere in the DOM.</p>
67
+ </ExpandableSection>
68
+ </StackItem>
69
+
70
+ <StackItem>
71
+ <h4>Custom Content with Heading</h4>
72
+ <p>You can also use custom content within heading wrappers:</p>
73
+
74
+ <ExpandableSection
75
+ toggleWrapper="h5"
76
+ toggleContent={
77
+ <span>
78
+ <CheckCircleIcon /> Custom Heading Content with Icon
79
+ </span>
80
+ }
81
+ onToggle={onToggle2}
82
+ isExpanded={isExpanded2}
83
+ >
84
+ <p>This expandable section uses custom content with an icon inside a heading wrapper.</p>
85
+ </ExpandableSection>
86
+ </StackItem>
87
+ </Stack>
88
+ );
89
+ };
@@ -266,6 +266,7 @@ class Page extends Component<PageProps, PageState> {
266
266
  isManagedSidebar,
267
267
  onSidebarToggle: mobileView ? this.onSidebarToggleMobile : this.onSidebarToggleDesktop,
268
268
  isSidebarOpen: mobileView ? mobileIsSidebarOpen : desktopIsSidebarOpen,
269
+ isMobile: mobileView,
269
270
  width,
270
271
  height,
271
272
  getBreakpoint,
@@ -6,6 +6,7 @@ export interface PageContextProps {
6
6
  isManagedSidebar: boolean;
7
7
  onSidebarToggle: () => void;
8
8
  isSidebarOpen: boolean;
9
+ isMobile: boolean;
9
10
  width: number;
10
11
  height: number;
11
12
  getBreakpoint: (width: number | null) => 'default' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
@@ -16,6 +17,7 @@ export const pageContextDefaults: PageContextProps = {
16
17
  isManagedSidebar: false,
17
18
  isSidebarOpen: false,
18
19
  onSidebarToggle: () => null,
20
+ isMobile: false,
19
21
  width: null,
20
22
  height: null,
21
23
  getBreakpoint,
@@ -35,7 +35,7 @@ export const PageSidebar: React.FunctionComponent<PageSidebarProps> = ({
35
35
  ...props
36
36
  }: PageSidebarProps) => (
37
37
  <PageContextConsumer>
38
- {({ isManagedSidebar, isSidebarOpen: managedIsNavOpen }: PageSidebarProps) => {
38
+ {({ isManagedSidebar, isSidebarOpen: managedIsNavOpen, isMobile }) => {
39
39
  const sidebarOpen = isManagedSidebar ? managedIsNavOpen : isSidebarOpen;
40
40
 
41
41
  return (
@@ -43,7 +43,7 @@ export const PageSidebar: React.FunctionComponent<PageSidebarProps> = ({
43
43
  id={id}
44
44
  className={css(
45
45
  styles.pageSidebar,
46
- sidebarOpen && styles.modifiers.expanded,
46
+ sidebarOpen && isMobile && styles.modifiers.expanded,
47
47
  !sidebarOpen && styles.modifiers.collapsed,
48
48
  className
49
49
  )}
@@ -4,7 +4,7 @@ exports[`PageSidebar should match snapshot (auto-generated) 1`] = `
4
4
  <DocumentFragment>
5
5
  <div
6
6
  aria-hidden="false"
7
- class="pf-v6-c-page__sidebar pf-m-expanded ''"
7
+ class="pf-v6-c-page__sidebar ''"
8
8
  id="page-sidebar"
9
9
  >
10
10
  <div>
@@ -12,7 +12,7 @@ exports[`Page Check dark page against snapshot 1`] = `
12
12
  />
13
13
  <div
14
14
  aria-hidden="false"
15
- class="pf-v6-c-page__sidebar pf-m-expanded"
15
+ class="pf-v6-c-page__sidebar"
16
16
  id="page-sidebar"
17
17
  >
18
18
  <div
@@ -55,7 +55,7 @@ exports[`Page Check page horizontal layout example against snapshot 1`] = `
55
55
  />
56
56
  <div
57
57
  aria-hidden="false"
58
- class="pf-v6-c-page__sidebar pf-m-expanded"
58
+ class="pf-v6-c-page__sidebar"
59
59
  id="page-sidebar"
60
60
  />
61
61
  <div
@@ -92,7 +92,7 @@ exports[`Page Check page to verify breadcrumb is created - PageBreadcrumb syntax
92
92
  />
93
93
  <div
94
94
  aria-hidden="false"
95
- class="pf-v6-c-page__sidebar pf-m-expanded"
95
+ class="pf-v6-c-page__sidebar"
96
96
  id="page-sidebar"
97
97
  />
98
98
  <div
@@ -237,7 +237,7 @@ exports[`Page Check page to verify breadcrumb is created 1`] = `
237
237
  />
238
238
  <div
239
239
  aria-hidden="false"
240
- class="pf-v6-c-page__sidebar pf-m-expanded"
240
+ class="pf-v6-c-page__sidebar"
241
241
  id="page-sidebar"
242
242
  />
243
243
  <div
@@ -386,7 +386,7 @@ exports[`Page Check page to verify grouped nav and breadcrumb - new components s
386
386
  />
387
387
  <div
388
388
  aria-hidden="false"
389
- class="pf-v6-c-page__sidebar pf-m-expanded"
389
+ class="pf-v6-c-page__sidebar"
390
390
  id="page-sidebar"
391
391
  />
392
392
  <div
@@ -629,7 +629,7 @@ exports[`Page Check page to verify grouped nav and breadcrumb - old / props synt
629
629
  />
630
630
  <div
631
631
  aria-hidden="false"
632
- class="pf-v6-c-page__sidebar pf-m-expanded"
632
+ class="pf-v6-c-page__sidebar"
633
633
  id="page-sidebar"
634
634
  />
635
635
  <div
@@ -913,7 +913,7 @@ exports[`Page Check page to verify skip to content points to main content region
913
913
  />
914
914
  <div
915
915
  aria-hidden="false"
916
- class="pf-v6-c-page__sidebar pf-m-expanded"
916
+ class="pf-v6-c-page__sidebar"
917
917
  id="page-sidebar"
918
918
  />
919
919
  <div
@@ -1063,7 +1063,7 @@ exports[`Page Check page vertical layout example against snapshot 1`] = `
1063
1063
  />
1064
1064
  <div
1065
1065
  aria-hidden="false"
1066
- class="pf-v6-c-page__sidebar pf-m-expanded"
1066
+ class="pf-v6-c-page__sidebar"
1067
1067
  id="page-sidebar"
1068
1068
  >
1069
1069
  <div
@@ -1106,7 +1106,7 @@ exports[`Page Sticky bottom breadcrumb on all height breakpoints - PageBreadcrum
1106
1106
  />
1107
1107
  <div
1108
1108
  aria-hidden="false"
1109
- class="pf-v6-c-page__sidebar pf-m-expanded"
1109
+ class="pf-v6-c-page__sidebar"
1110
1110
  id="page-sidebar"
1111
1111
  />
1112
1112
  <div
@@ -1251,7 +1251,7 @@ exports[`Page Verify sticky bottom breadcrumb on all height breakpoints 1`] = `
1251
1251
  />
1252
1252
  <div
1253
1253
  aria-hidden="false"
1254
- class="pf-v6-c-page__sidebar pf-m-expanded"
1254
+ class="pf-v6-c-page__sidebar"
1255
1255
  id="page-sidebar"
1256
1256
  />
1257
1257
  <div
@@ -1400,7 +1400,7 @@ exports[`Page Verify sticky top breadcrumb on all height breakpoints - PageBread
1400
1400
  />
1401
1401
  <div
1402
1402
  aria-hidden="false"
1403
- class="pf-v6-c-page__sidebar pf-m-expanded"
1403
+ class="pf-v6-c-page__sidebar"
1404
1404
  id="page-sidebar"
1405
1405
  />
1406
1406
  <div
@@ -1545,7 +1545,7 @@ exports[`Page Verify sticky top breadcrumb on all height breakpoints 1`] = `
1545
1545
  />
1546
1546
  <div
1547
1547
  aria-hidden="false"
1548
- class="pf-v6-c-page__sidebar pf-m-expanded"
1548
+ class="pf-v6-c-page__sidebar"
1549
1549
  id="page-sidebar"
1550
1550
  />
1551
1551
  <div
@@ -48,6 +48,8 @@ export interface ProgressProps extends Omit<React.HTMLProps<HTMLDivElement>, 'si
48
48
  * We recommend the helper text component as it was designed for this purpose.
49
49
  */
50
50
  helperText?: React.ReactNode;
51
+ /** Flag indicating whether the status icon should be hidden, helpful when space is limited (such as within table cells). When set to true, you must ensure the context of the status is provided in another way, such as via the progress measure. */
52
+ hideStatusIcon?: boolean;
51
53
  }
52
54
 
53
55
  class Progress extends Component<ProgressProps> {
@@ -94,6 +96,7 @@ class Progress extends Component<ProgressProps> {
94
96
  'aria-labelledby': ariaLabelledBy,
95
97
  'aria-describedby': ariaDescribedBy,
96
98
  helperText,
99
+ hideStatusIcon,
97
100
  ...props
98
101
  } = this.props;
99
102
 
@@ -151,6 +154,7 @@ class Progress extends Component<ProgressProps> {
151
154
  isTitleTruncated={isTitleTruncated}
152
155
  tooltipPosition={tooltipPosition}
153
156
  helperText={helperText}
157
+ hideStatusIcon={hideStatusIcon}
154
158
  />
155
159
  </div>
156
160
  );
@@ -58,6 +58,8 @@ export interface ProgressContainerProps extends Omit<React.HTMLProps<HTMLDivElem
58
58
  * We recommend the helper text component as it was designed for this purpose.
59
59
  */
60
60
  helperText?: React.ReactNode;
61
+ /** Hide the status icon, helpful when space is limited (such as within table cells) */
62
+ hideStatusIcon?: boolean;
61
63
  }
62
64
 
63
65
  const variantToIcon = {
@@ -76,9 +78,10 @@ export const ProgressContainer: React.FunctionComponent<ProgressContainerProps>
76
78
  measureLocation = ProgressMeasureLocation.top,
77
79
  isTitleTruncated = false,
78
80
  tooltipPosition,
79
- helperText
81
+ helperText,
82
+ hideStatusIcon = false
80
83
  }: ProgressContainerProps) => {
81
- const StatusIcon = variantToIcon.hasOwnProperty(variant) && variantToIcon[variant];
84
+ const StatusIcon = !hideStatusIcon && variantToIcon.hasOwnProperty(variant) && variantToIcon[variant];
82
85
  const [tooltip, setTooltip] = useState('');
83
86
  const titleRef = useRef(null);
84
87
  const updateTooltip = (event: any) => {
@@ -15,6 +15,7 @@ it('ProgressContainer should match snapshot (auto-generated)', () => {
15
15
  variant={'danger'}
16
16
  measureLocation={'outside'}
17
17
  value={42}
18
+ hideStatusIcon={false}
18
19
  />
19
20
  );
20
21
  expect(asFragment()).toMatchSnapshot();
@@ -108,3 +108,35 @@ test('Renders passed helper text', () => {
108
108
 
109
109
  expect(screen.getByText('Test helper text')).toBeVisible();
110
110
  });
111
+
112
+ describe('hideStatusIcon prop behavior', () => {
113
+ test('shows status icon by default when hideStatusIcon is not set', () => {
114
+ render(<Progress id="default-status-icon-test" value={100} variant="success" />);
115
+
116
+ expect(screen.getByRole('img', { hidden: true })).toBeInTheDocument();
117
+ });
118
+
119
+ test('hides status icon when hideStatusIcon flag is set with success variant', () => {
120
+ render(<Progress id="hide-icon-success" value={100} variant="success" hideStatusIcon />);
121
+
122
+ expect(screen.queryByRole('img', { hidden: true })).not.toBeInTheDocument();
123
+ });
124
+
125
+ test('hides status icon when hideStatusIcon flag is set with danger variant', () => {
126
+ render(<Progress id="hide-icon-danger" value={50} variant="danger" hideStatusIcon />);
127
+
128
+ expect(screen.queryByRole('img', { hidden: true })).not.toBeInTheDocument();
129
+ });
130
+
131
+ test('hides status icon when hideStatusIcon flag is set with warning variant', () => {
132
+ render(<Progress id="hide-icon-warning" value={75} variant="warning" hideStatusIcon />);
133
+
134
+ expect(screen.queryByRole('img', { hidden: true })).not.toBeInTheDocument();
135
+ });
136
+
137
+ test('shows status icon when hideStatusIcon is explicitly false', () => {
138
+ render(<Progress id="show-icon-success" value={100} variant="success" hideStatusIcon={false} />);
139
+
140
+ expect(screen.getByRole('img', { hidden: true })).toBeInTheDocument();
141
+ });
142
+ });
@@ -107,20 +107,8 @@ When conveying status, you should ensure:
107
107
 
108
108
  ```
109
109
 
110
- ### Inside success
110
+ ### Interactive status icon and measure location
111
111
 
112
- ```ts file="./ProgressInsideSuccess.tsx"
113
-
114
- ```
115
-
116
- ### Outside failure
117
-
118
- ```ts file="./ProgressOutsideFailure.tsx"
119
-
120
- ```
121
-
122
- ### Failure without measure
123
-
124
- ```ts file="./ProgressFailureWithoutMeasure.tsx"
112
+ ```ts file="./ProgressInteractiveFailure.tsx"
125
113
 
126
114
  ```
@@ -0,0 +1,55 @@
1
+ import { useState } from 'react';
2
+ import {
3
+ Progress,
4
+ ProgressMeasureLocation,
5
+ ProgressVariant,
6
+ Radio,
7
+ Checkbox,
8
+ Form,
9
+ FormGroup
10
+ } from '@patternfly/react-core';
11
+
12
+ export const ProgressInteractiveFailure: React.FunctionComponent = () => {
13
+ const [measureLocation, setMeasureLocation] = useState<ProgressMeasureLocation>(ProgressMeasureLocation.inside);
14
+ const [hideStatusIcon, setHideStatusIcon] = useState<boolean>(false);
15
+
16
+ const measureLocationOptions = [
17
+ { value: ProgressMeasureLocation.inside, label: 'Inside' },
18
+ { value: ProgressMeasureLocation.outside, label: 'Outside' },
19
+ { value: ProgressMeasureLocation.top, label: 'Top' },
20
+ { value: ProgressMeasureLocation.none, label: 'None' }
21
+ ];
22
+
23
+ return (
24
+ <Form>
25
+ <FormGroup fieldId="measure-location" label="Measure location">
26
+ {measureLocationOptions.map((option) => (
27
+ <Radio
28
+ key={option.value}
29
+ id={`measure-location-${option.value}`}
30
+ name="measure-location"
31
+ label={option.label}
32
+ value={option.value}
33
+ isChecked={measureLocation === option.value}
34
+ onChange={() => setMeasureLocation(option.value)}
35
+ />
36
+ ))}
37
+ </FormGroup>
38
+ <FormGroup fieldId="hide-status-icon">
39
+ <Checkbox
40
+ id="hide-status-icon"
41
+ label="Hide status icon"
42
+ isChecked={hideStatusIcon}
43
+ onChange={(_, checked) => setHideStatusIcon(checked)}
44
+ />
45
+ </FormGroup>
46
+ <Progress
47
+ value={33}
48
+ title="Title"
49
+ measureLocation={measureLocation}
50
+ variant={ProgressVariant.danger}
51
+ hideStatusIcon={hideStatusIcon}
52
+ />
53
+ </Form>
54
+ );
55
+ };
@@ -206,7 +206,6 @@ class Tabs extends Component<TabsProps, TabsState> {
206
206
  backScrollAriaLabel: 'Scroll back',
207
207
  rightScrollAriaLabel: 'Scroll right',
208
208
  forwardScrollAriaLabel: 'Scroll forward',
209
- component: TabsComponent.div,
210
209
  mountOnEnter: false,
211
210
  unmountOnExit: false,
212
211
  ouiaSafe: true,
@@ -529,7 +528,8 @@ class Tabs extends Component<TabsProps, TabsState> {
529
528
  const overflowingTabProps = filteredChildrenOverflowing.map((child: React.ReactElement<TabProps>) => child.props);
530
529
 
531
530
  const uniqueId = id || getUniqueId();
532
- const Component: any = component === TabsComponent.nav ? 'nav' : 'div';
531
+ const defaultComponent = isNav && !component ? 'nav' : 'div';
532
+ const Component: any = component !== undefined ? component : defaultComponent;
533
533
  const localActiveKey = defaultActiveKey !== undefined ? uncontrolledActiveKey : activeKey;
534
534
 
535
535
  const isExpandedLocal = defaultIsExpanded !== undefined ? uncontrolledIsExpandedLocal : isExpanded;
@@ -166,6 +166,66 @@ test(`Does not render with class ${styles.modifiers.initializingAccent} when unc
166
166
  expect(screen.getByRole('region')).not.toHaveClass(styles.modifiers.initializingAccent);
167
167
  });
168
168
 
169
+ test(`Renders with class ${styles.modifiers.nav} when isNav is true`, () => {
170
+ render(
171
+ <Tabs isNav role="region">
172
+ <Tab title="Test title" eventKey={0}>
173
+ Tab Content
174
+ </Tab>
175
+ </Tabs>
176
+ );
177
+
178
+ expect(screen.getByRole('region')).toHaveClass(styles.modifiers.nav);
179
+ });
180
+
181
+ test(`Renders with div wrapper by default`, () => {
182
+ render(
183
+ <Tabs>
184
+ <Tab title="Test title" eventKey={0}>
185
+ Tab Content
186
+ </Tab>
187
+ </Tabs>
188
+ );
189
+
190
+ expect(screen.queryByRole('navigation')).not.toBeInTheDocument();
191
+ });
192
+
193
+ test(`Renders with nav wrapper when component="nav"`, () => {
194
+ render(
195
+ <Tabs component="nav">
196
+ <Tab title="Test title" eventKey={0}>
197
+ Tab Content
198
+ </Tab>
199
+ </Tabs>
200
+ );
201
+
202
+ expect(screen.getByRole('navigation')).toBeInTheDocument();
203
+ });
204
+
205
+ test(`Renders with nav wrapper when isNav is true`, () => {
206
+ render(
207
+ <Tabs isNav>
208
+ <Tab title="Test title" eventKey={0}>
209
+ Tab Content
210
+ </Tab>
211
+ </Tabs>
212
+ );
213
+
214
+ expect(screen.getByRole('navigation')).toBeInTheDocument();
215
+ });
216
+
217
+ test(`Overrides isNav nav wrapper when component="div" is passed`, () => {
218
+ render(
219
+ <Tabs component="div" isNav>
220
+ <Tab title="Test title" eventKey={0}>
221
+ Tab Content
222
+ </Tab>
223
+ </Tabs>
224
+ );
225
+
226
+ expect(screen.queryByRole('navigation')).not.toBeInTheDocument();
227
+ });
228
+
169
229
  test('should render simple tabs', () => {
170
230
  const { asFragment } = render(
171
231
  <Tabs id="simpleTabs">
@@ -5,7 +5,7 @@ exports[`should render accessible tabs 1`] = `
5
5
  <nav
6
6
  aria-label="accessible Tabs example"
7
7
  class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
8
- data-ouia-component-id="OUIA-Generated-Tabs-14"
8
+ data-ouia-component-id="OUIA-Generated-Tabs-19"
9
9
  data-ouia-component-type="PF6/Tabs"
10
10
  data-ouia-safe="true"
11
11
  id="accessibleTabs"
@@ -122,7 +122,7 @@ exports[`should render box tabs 1`] = `
122
122
  <DocumentFragment>
123
123
  <div
124
124
  class="pf-v6-c-tabs pf-m-animate-current pf-m-box pf-m-initializing-accent"
125
- data-ouia-component-id="OUIA-Generated-Tabs-13"
125
+ data-ouia-component-id="OUIA-Generated-Tabs-18"
126
126
  data-ouia-component-type="PF6/Tabs"
127
127
  data-ouia-safe="true"
128
128
  id="boxTabs"
@@ -281,7 +281,7 @@ exports[`should render box tabs of secondary variant 1`] = `
281
281
  <DocumentFragment>
282
282
  <div
283
283
  class="pf-v6-c-tabs pf-m-animate-current pf-m-box pf-m-secondary pf-m-initializing-accent"
284
- data-ouia-component-id="OUIA-Generated-Tabs-24"
284
+ data-ouia-component-id="OUIA-Generated-Tabs-29"
285
285
  data-ouia-component-type="PF6/Tabs"
286
286
  data-ouia-safe="true"
287
287
  id="boxSecondaryVariantTabs"
@@ -398,7 +398,7 @@ exports[`should render expandable vertical tabs 1`] = `
398
398
  <DocumentFragment>
399
399
  <div
400
400
  class="pf-v6-c-tabs pf-m-animate-current pf-m-vertical pf-m-expandable pf-m-initializing-accent"
401
- data-ouia-component-id="OUIA-Generated-Tabs-11"
401
+ data-ouia-component-id="OUIA-Generated-Tabs-16"
402
402
  data-ouia-component-type="PF6/Tabs"
403
403
  data-ouia-safe="true"
404
404
  id="verticalTabs"
@@ -605,7 +605,7 @@ exports[`should render filled tabs 1`] = `
605
605
  <DocumentFragment>
606
606
  <div
607
607
  class="pf-v6-c-tabs pf-m-animate-current pf-m-fill pf-m-initializing-accent"
608
- data-ouia-component-id="OUIA-Generated-Tabs-15"
608
+ data-ouia-component-id="OUIA-Generated-Tabs-20"
609
609
  data-ouia-component-type="PF6/Tabs"
610
610
  data-ouia-safe="true"
611
611
  id="filledTabs"
@@ -722,7 +722,7 @@ exports[`should render simple tabs 1`] = `
722
722
  <DocumentFragment>
723
723
  <div
724
724
  class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
725
- data-ouia-component-id="OUIA-Generated-Tabs-6"
725
+ data-ouia-component-id="OUIA-Generated-Tabs-11"
726
726
  data-ouia-component-type="PF6/Tabs"
727
727
  data-ouia-safe="true"
728
728
  id="simpleTabs"
@@ -881,7 +881,7 @@ exports[`should render subtabs 1`] = `
881
881
  <DocumentFragment>
882
882
  <div
883
883
  class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
884
- data-ouia-component-id="OUIA-Generated-Tabs-16"
884
+ data-ouia-component-id="OUIA-Generated-Tabs-21"
885
885
  data-ouia-component-type="PF6/Tabs"
886
886
  data-ouia-safe="true"
887
887
  id="primarieTabs"
@@ -967,7 +967,7 @@ exports[`should render subtabs 1`] = `
967
967
  >
968
968
  <div
969
969
  class="pf-v6-c-tabs pf-m-animate-current pf-m-subtab pf-m-initializing-accent"
970
- data-ouia-component-id="OUIA-Generated-Tabs-17"
970
+ data-ouia-component-id="OUIA-Generated-Tabs-22"
971
971
  data-ouia-component-type="PF6/Tabs"
972
972
  data-ouia-safe="true"
973
973
  id="subtabs"
@@ -1110,7 +1110,7 @@ exports[`should render tabs with eventKey Strings 1`] = `
1110
1110
  <DocumentFragment>
1111
1111
  <div
1112
1112
  class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
1113
- data-ouia-component-id="OUIA-Generated-Tabs-18"
1113
+ data-ouia-component-id="OUIA-Generated-Tabs-23"
1114
1114
  data-ouia-component-type="PF6/Tabs"
1115
1115
  data-ouia-safe="true"
1116
1116
  id="eventKeyTabs"
@@ -1228,7 +1228,7 @@ exports[`should render tabs with no bottom border 1`] = `
1228
1228
  <DocumentFragment>
1229
1229
  <div
1230
1230
  class="pf-v6-c-tabs pf-m-animate-current pf-m-no-border-bottom pf-m-initializing-accent"
1231
- data-ouia-component-id="OUIA-Generated-Tabs-25"
1231
+ data-ouia-component-id="OUIA-Generated-Tabs-30"
1232
1232
  data-ouia-component-type="PF6/Tabs"
1233
1233
  data-ouia-safe="true"
1234
1234
  id="noBottomBorderTabs"
@@ -1345,7 +1345,7 @@ exports[`should render tabs with separate content 1`] = `
1345
1345
  <DocumentFragment>
1346
1346
  <div
1347
1347
  class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
1348
- data-ouia-component-id="OUIA-Generated-Tabs-19"
1348
+ data-ouia-component-id="OUIA-Generated-Tabs-24"
1349
1349
  data-ouia-component-type="PF6/Tabs"
1350
1350
  data-ouia-safe="true"
1351
1351
  id="separateTabs"
@@ -1472,7 +1472,7 @@ exports[`should render uncontrolled tabs 1`] = `
1472
1472
  <DocumentFragment>
1473
1473
  <div
1474
1474
  class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
1475
- data-ouia-component-id="OUIA-Generated-Tabs-9"
1475
+ data-ouia-component-id="OUIA-Generated-Tabs-14"
1476
1476
  data-ouia-component-type="PF6/Tabs"
1477
1477
  data-ouia-safe="true"
1478
1478
  style="--pf-v6-c-tabs--link-accent--length: 0px; --pf-v6-c-tabs--link-accent--start: 0px;"
@@ -1630,7 +1630,7 @@ exports[`should render vertical tabs 1`] = `
1630
1630
  <DocumentFragment>
1631
1631
  <div
1632
1632
  class="pf-v6-c-tabs pf-m-animate-current pf-m-vertical pf-m-initializing-accent"
1633
- data-ouia-component-id="OUIA-Generated-Tabs-10"
1633
+ data-ouia-component-id="OUIA-Generated-Tabs-15"
1634
1634
  data-ouia-component-type="PF6/Tabs"
1635
1635
  data-ouia-safe="true"
1636
1636
  id="verticalTabs"
@@ -189,6 +189,14 @@ Subtabs can also link to nav elements.
189
189
 
190
190
  ```
191
191
 
192
+ ### Tabs used for site navigation
193
+
194
+ Site navigation tabs
195
+
196
+ ```ts file="./TabsSiteNav.tsx"
197
+
198
+ ```
199
+
192
200
  ### With separate content
193
201
 
194
202
  If a `<TabContent>` component is defined outside of a `<Tabs>` component, use the `tabContentRef` and `tabContentId` properties. The `hidden` property is used on `TabContent` to set the initial visible content.