@patternfly/react-docs 7.6.0-prerelease.6 → 7.6.0-prerelease.8

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 (163) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/package.json +12 -13
  3. package/patternfly-docs/generated/components/about-modal/react.js +149 -0
  4. package/patternfly-docs/generated/components/accordion/react.js +262 -0
  5. package/patternfly-docs/generated/components/action-list/react.js +144 -0
  6. package/patternfly-docs/generated/components/alert/react-demos.js +56 -0
  7. package/patternfly-docs/generated/components/alert/react.js +1433 -0
  8. package/patternfly-docs/generated/components/avatar/react.js +166 -0
  9. package/patternfly-docs/generated/components/back-to-top/react-demos.js +60 -0
  10. package/patternfly-docs/generated/components/back-to-top/react.js +77 -0
  11. package/patternfly-docs/generated/components/backdrop/react.js +64 -0
  12. package/patternfly-docs/generated/components/background-image/react.js +62 -0
  13. package/patternfly-docs/generated/components/badge/react.js +97 -0
  14. package/patternfly-docs/generated/components/banner/react-demos.js +57 -0
  15. package/patternfly-docs/generated/components/banner/react.js +148 -0
  16. package/patternfly-docs/generated/components/brand/react.js +142 -0
  17. package/patternfly-docs/generated/components/breadcrumb/react.js +206 -0
  18. package/patternfly-docs/generated/components/button/react-demos.js +57 -0
  19. package/patternfly-docs/generated/components/button/react.js +826 -0
  20. package/patternfly-docs/generated/components/card/react-demos.js +201 -0
  21. package/patternfly-docs/generated/components/card/react.js +1015 -0
  22. package/patternfly-docs/generated/components/charts/area-chart/-Victory.js +1350 -0
  23. package/patternfly-docs/generated/components/charts/bar-chart/-Victory.js +1334 -0
  24. package/patternfly-docs/generated/components/charts/box-plot-chart/-Victory.js +1282 -0
  25. package/patternfly-docs/generated/components/charts/bullet-chart/-Victory.js +848 -0
  26. package/patternfly-docs/generated/components/charts/colors-for-charts/-Victory.js +192 -0
  27. package/patternfly-docs/generated/components/charts/donut-chart/-Victory.js +426 -0
  28. package/patternfly-docs/generated/components/charts/donut-utilization-chart/-Victory.js +804 -0
  29. package/patternfly-docs/generated/components/charts/legends/-Victory.js +3230 -0
  30. package/patternfly-docs/generated/components/charts/line-chart/-Victory.js +1178 -0
  31. package/patternfly-docs/generated/components/charts/line-chart/ECharts.js +525 -0
  32. package/patternfly-docs/generated/components/charts/patterns/-Victory.js +3382 -0
  33. package/patternfly-docs/generated/components/charts/pie-chart/-Victory.js +377 -0
  34. package/patternfly-docs/generated/components/charts/resize-observer/-Victory.js +2475 -0
  35. package/patternfly-docs/generated/components/charts/sankey-chart/ECharts.js +538 -0
  36. package/patternfly-docs/generated/components/charts/scatter-chart/-Victory.js +1551 -0
  37. package/patternfly-docs/generated/components/charts/skeletons/-Victory.js +4115 -0
  38. package/patternfly-docs/generated/components/charts/sparkline-chart/-Victory.js +955 -0
  39. package/patternfly-docs/generated/components/charts/stack-chart/-Victory.js +1173 -0
  40. package/patternfly-docs/generated/components/charts/threshold-chart/-Victory.js +1166 -0
  41. package/patternfly-docs/generated/components/charts/tooltips/-Victory.js +413 -0
  42. package/patternfly-docs/generated/components/chip/react-deprecated.js +323 -0
  43. package/patternfly-docs/generated/components/clipboard-copy/react.js +373 -0
  44. package/patternfly-docs/generated/components/code-block/react.js +148 -0
  45. package/patternfly-docs/generated/components/code-editor/react.js +659 -0
  46. package/patternfly-docs/generated/components/compass/react-demos.js +147 -0
  47. package/patternfly-docs/generated/components/compass/react.js +440 -0
  48. package/patternfly-docs/generated/components/content/react.js +248 -0
  49. package/patternfly-docs/generated/components/data-list/react-demos.js +90 -0
  50. package/patternfly-docs/generated/components/data-list/react.js +709 -0
  51. package/patternfly-docs/generated/components/date-and-time/calendar-month/react.js +283 -0
  52. package/patternfly-docs/generated/components/date-and-time/date-and-time-picker/react-demos.js +64 -0
  53. package/patternfly-docs/generated/components/date-and-time/date-picker/react-demos.js +83 -0
  54. package/patternfly-docs/generated/components/date-and-time/date-picker/react.js +395 -0
  55. package/patternfly-docs/generated/components/date-and-time/time-picker/react.js +241 -0
  56. package/patternfly-docs/generated/components/description-list/react-demos.js +58 -0
  57. package/patternfly-docs/generated/components/description-list/react.js +743 -0
  58. package/patternfly-docs/generated/components/divider/react.js +126 -0
  59. package/patternfly-docs/generated/components/drag-and-drop/react-demos.js +351 -0
  60. package/patternfly-docs/generated/components/drag-and-drop/react-deprecated.js +184 -0
  61. package/patternfly-docs/generated/components/drag-and-drop/react.js +137 -0
  62. package/patternfly-docs/generated/components/drawer/react.js +598 -0
  63. package/patternfly-docs/generated/components/dual-list-selector/react-deprecated.js +772 -0
  64. package/patternfly-docs/generated/components/dual-list-selector/react.js +594 -0
  65. package/patternfly-docs/generated/components/empty-state/react.js +199 -0
  66. package/patternfly-docs/generated/components/expandable-section/react-demos.js +65 -0
  67. package/patternfly-docs/generated/components/expandable-section/react.js +408 -0
  68. package/patternfly-docs/generated/components/file-upload/multiple-file-upload/react-demos.js +52 -0
  69. package/patternfly-docs/generated/components/file-upload/multiple-file-upload/react.js +398 -0
  70. package/patternfly-docs/generated/components/file-upload/simple-file-upload/react.js +749 -0
  71. package/patternfly-docs/generated/components/forms/checkbox/react.js +222 -0
  72. package/patternfly-docs/generated/components/forms/form/react.js +1106 -0
  73. package/patternfly-docs/generated/components/forms/form-select/react.js +208 -0
  74. package/patternfly-docs/generated/components/forms/radio/react.js +212 -0
  75. package/patternfly-docs/generated/components/forms/text-area/react.js +160 -0
  76. package/patternfly-docs/generated/components/forms/text-input/react.js +216 -0
  77. package/patternfly-docs/generated/components/helper-text/react-demos.js +180 -0
  78. package/patternfly-docs/generated/components/helper-text/react.js +164 -0
  79. package/patternfly-docs/generated/components/hero/react.js +88 -0
  80. package/patternfly-docs/generated/components/hint/react.js +169 -0
  81. package/patternfly-docs/generated/components/icon/react.js +215 -0
  82. package/patternfly-docs/generated/components/input-group/react.js +182 -0
  83. package/patternfly-docs/generated/components/jump-links/react-demos.js +154 -0
  84. package/patternfly-docs/generated/components/jump-links/react.js +212 -0
  85. package/patternfly-docs/generated/components/label/react-demos.js +57 -0
  86. package/patternfly-docs/generated/components/label/react.js +417 -0
  87. package/patternfly-docs/generated/components/list/react.js +175 -0
  88. package/patternfly-docs/generated/components/login-page/react.js +587 -0
  89. package/patternfly-docs/generated/components/masthead/react-demos.js +79 -0
  90. package/patternfly-docs/generated/components/masthead/react.js +291 -0
  91. package/patternfly-docs/generated/components/menus/application-launcher/react-demos.js +769 -0
  92. package/patternfly-docs/generated/components/menus/context-selector/react-demos.js +665 -0
  93. package/patternfly-docs/generated/components/menus/custom-menus/react-demos.js +187 -0
  94. package/patternfly-docs/generated/components/menus/dropdown/react-templates.js +163 -0
  95. package/patternfly-docs/generated/components/menus/dropdown/react.js +998 -0
  96. package/patternfly-docs/generated/components/menus/menu/react.js +1540 -0
  97. package/patternfly-docs/generated/components/menus/menu-toggle/react.js +747 -0
  98. package/patternfly-docs/generated/components/menus/options-menu/react-demos.js +508 -0
  99. package/patternfly-docs/generated/components/menus/select/react-templates.js +257 -0
  100. package/patternfly-docs/generated/components/menus/select/react.js +998 -0
  101. package/patternfly-docs/generated/components/modal/react-deprecated.js +554 -0
  102. package/patternfly-docs/generated/components/modal/react.js +597 -0
  103. package/patternfly-docs/generated/components/navigation/react-demos.js +356 -0
  104. package/patternfly-docs/generated/components/navigation/react.js +409 -0
  105. package/patternfly-docs/generated/components/notification-badge/react.js +196 -0
  106. package/patternfly-docs/generated/components/notification-drawer/react-demos.js +107 -0
  107. package/patternfly-docs/generated/components/notification-drawer/react.js +394 -0
  108. package/patternfly-docs/generated/components/number-input/react.js +210 -0
  109. package/patternfly-docs/generated/components/overflow-menu/react.js +274 -0
  110. package/patternfly-docs/generated/components/page/react-demos.js +149 -0
  111. package/patternfly-docs/generated/components/page/react.js +1352 -0
  112. package/patternfly-docs/generated/components/pagination/react.js +492 -0
  113. package/patternfly-docs/generated/components/panel/react.js +236 -0
  114. package/patternfly-docs/generated/components/popover/react.js +390 -0
  115. package/patternfly-docs/generated/components/progress/react-demos.js +59 -0
  116. package/patternfly-docs/generated/components/progress/react.js +283 -0
  117. package/patternfly-docs/generated/components/progress-stepper/react-demos.js +45 -0
  118. package/patternfly-docs/generated/components/progress-stepper/react.js +219 -0
  119. package/patternfly-docs/generated/components/search-input/react-demos.js +113 -0
  120. package/patternfly-docs/generated/components/search-input/react.js +263 -0
  121. package/patternfly-docs/generated/components/sidebar/react.js +236 -0
  122. package/patternfly-docs/generated/components/simple-list/react.js +200 -0
  123. package/patternfly-docs/generated/components/skeleton/react-demos.js +44 -0
  124. package/patternfly-docs/generated/components/skeleton/react.js +122 -0
  125. package/patternfly-docs/generated/components/skip-to-content/react.js +73 -0
  126. package/patternfly-docs/generated/components/slider/react.js +309 -0
  127. package/patternfly-docs/generated/components/spinner/react.js +111 -0
  128. package/patternfly-docs/generated/components/switch/react.js +163 -0
  129. package/patternfly-docs/generated/components/table/react-demos.js +355 -0
  130. package/patternfly-docs/generated/components/table/react-deprecated.js +1350 -0
  131. package/patternfly-docs/generated/components/table/react.js +3241 -0
  132. package/patternfly-docs/generated/components/tabs/react-demos.js +108 -0
  133. package/patternfly-docs/generated/components/tabs/react.js +1359 -0
  134. package/patternfly-docs/generated/components/text-input-group/react-demos.js +152 -0
  135. package/patternfly-docs/generated/components/text-input-group/react.js +278 -0
  136. package/patternfly-docs/generated/components/tile/react-deprecated.js +242 -0
  137. package/patternfly-docs/generated/components/timestamp/react.js +283 -0
  138. package/patternfly-docs/generated/components/title/react.js +94 -0
  139. package/patternfly-docs/generated/components/toggle-group/react.js +299 -0
  140. package/patternfly-docs/generated/components/toolbar/react-demos.js +66 -0
  141. package/patternfly-docs/generated/components/toolbar/react.js +932 -0
  142. package/patternfly-docs/generated/components/tooltip/react.js +241 -0
  143. package/patternfly-docs/generated/components/tree-view/react.js +429 -0
  144. package/patternfly-docs/generated/components/truncate/react.js +211 -0
  145. package/patternfly-docs/generated/components/wizard/react-demos.js +87 -0
  146. package/patternfly-docs/generated/components/wizard/react-deprecated.js +788 -0
  147. package/patternfly-docs/generated/components/wizard/react.js +986 -0
  148. package/patternfly-docs/generated/developer-guides/open-ui-automation/react.js +285 -0
  149. package/patternfly-docs/generated/foundations-and-styles/layouts/bullseye/react.js +70 -0
  150. package/patternfly-docs/generated/foundations-and-styles/layouts/flex/react.js +506 -0
  151. package/patternfly-docs/generated/foundations-and-styles/layouts/gallery/react.js +94 -0
  152. package/patternfly-docs/generated/foundations-and-styles/layouts/grid/react.js +272 -0
  153. package/patternfly-docs/generated/foundations-and-styles/layouts/level/react.js +87 -0
  154. package/patternfly-docs/generated/foundations-and-styles/layouts/split/react.js +124 -0
  155. package/patternfly-docs/generated/foundations-and-styles/layouts/stack/react.js +112 -0
  156. package/patternfly-docs/generated/index.js +1769 -0
  157. package/patternfly-docs/generated/patterns/card-view/react-demos.js +78 -0
  158. package/patternfly-docs/generated/patterns/filters/react-demos.js +141 -0
  159. package/patternfly-docs/generated/patterns/password-generator/react-demos.js +51 -0
  160. package/patternfly-docs/generated/patterns/password-strength/react-demos.js +61 -0
  161. package/patternfly-docs/generated/patterns/primary-detail/react-demos.js +124 -0
  162. package/patternfly-docs/generated/patterns/right-to-left/react-demos.js +81 -0
  163. package/LICENSE +0 -21
@@ -0,0 +1,1359 @@
1
+ import React from 'react';
2
+ import { AutoLinkHeader, Example, Link as PatternflyThemeLink } from '@patternfly/documentation-framework/components';
3
+ import { createRef, Fragment, useEffect, useRef, useState } from 'react';
4
+ import RhUiUsersFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-users-fill-icon';
5
+ import RhUiContainerFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-container-fill-icon';
6
+ import DatabaseIcon from '@patternfly/react-icons/dist/esm/icons/database-icon';
7
+ import RhUiServerStackFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-server-stack-fill-icon';
8
+ import LaptopIcon from '@patternfly/react-icons/dist/esm/icons/laptop-icon';
9
+ import RhUiInfrastructureFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-infrastructure-fill-icon';
10
+ import HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';
11
+ import RhMicronsCloseIcon from '@patternfly/react-icons/dist/esm/icons/rh-microns-close-icon';
12
+ const pageData = {
13
+ "id": "Tabs",
14
+ "section": "components",
15
+ "subsection": "",
16
+ "deprecated": false,
17
+ "template": false,
18
+ "beta": false,
19
+ "demo": false,
20
+ "newImplementationLink": false,
21
+ "source": "react",
22
+ "tabName": null,
23
+ "slug": "/components/tabs/react",
24
+ "sourceLink": "https://github.com/patternfly/patternfly-react/blob/main/packages/react-core/src/components/Tabs/examples/Tabs.md",
25
+ "relPath": "packages/react-core/src/components/Tabs/examples/Tabs.md",
26
+ "propComponents": [
27
+ {
28
+ "name": "Tabs",
29
+ "description": "",
30
+ "props": [
31
+ {
32
+ "name": "activeKey",
33
+ "type": "number | string",
34
+ "description": "The index of the active tab",
35
+ "defaultValue": "0"
36
+ },
37
+ {
38
+ "name": "addButtonAriaLabel",
39
+ "type": "string",
40
+ "description": "Aria-label for the add button"
41
+ },
42
+ {
43
+ "name": "aria-label",
44
+ "type": "string",
45
+ "description": "Provides an accessible label for the tabs. Labels should be unique for each set of tabs that are present on a page. When component is set to nav, this prop should be defined to differentiate the tabs from other navigation regions on the page."
46
+ },
47
+ {
48
+ "name": "backScrollAriaLabel",
49
+ "type": "string",
50
+ "description": "Aria-label for the back scroll button",
51
+ "defaultValue": "'Scroll back'"
52
+ },
53
+ {
54
+ "name": "children",
55
+ "type": "TabsChild | TabsChild[]",
56
+ "description": "Content rendered inside the tabs component. Only `Tab` components or expressions resulting in a falsy value are allowed here.",
57
+ "required": true
58
+ },
59
+ {
60
+ "name": "className",
61
+ "type": "string",
62
+ "description": "Additional classes added to the tabs"
63
+ },
64
+ {
65
+ "name": "component",
66
+ "type": "'div' | 'nav'",
67
+ "description": "Determines what tag is used around the tabs. Use \"nav\" to define the tabs inside a navigation region"
68
+ },
69
+ {
70
+ "name": "defaultActiveKey",
71
+ "type": "number | string",
72
+ "description": "The index of the default active tab. Set this for uncontrolled Tabs"
73
+ },
74
+ {
75
+ "name": "defaultIsExpanded",
76
+ "type": "boolean",
77
+ "description": "Flag indicating the default expanded state for uncontrolled expand/collapse of"
78
+ },
79
+ {
80
+ "name": "expandable",
81
+ "type": "{\n default?: 'expandable' | 'nonExpandable';\n sm?: 'expandable' | 'nonExpandable';\n md?: 'expandable' | 'nonExpandable';\n lg?: 'expandable' | 'nonExpandable';\n xl?: 'expandable' | 'nonExpandable';\n '2xl'?: 'expandable' | 'nonExpandable';\n}",
82
+ "description": "Enable expandable vertical tabs at various breakpoints. (isVertical should be set to true for this to work)"
83
+ },
84
+ {
85
+ "name": "forwardScrollAriaLabel",
86
+ "type": "string",
87
+ "description": "Aria-label for the forward scroll button",
88
+ "defaultValue": "'Scroll forward'"
89
+ },
90
+ {
91
+ "name": "hasNoBorderBottom",
92
+ "type": "boolean",
93
+ "description": "Disables border bottom tab styling on tabs. Defaults to false. To remove the bottom border, set this prop to true.",
94
+ "defaultValue": "false"
95
+ },
96
+ {
97
+ "name": "id",
98
+ "type": "string",
99
+ "description": "Uniquely identifies the tabs"
100
+ },
101
+ {
102
+ "name": "inset",
103
+ "type": "{\n default?: 'insetNone' | 'insetSm' | 'insetMd' | 'insetLg' | 'insetXl' | 'inset2xl';\n sm?: 'insetNone' | 'insetSm' | 'insetMd' | 'insetLg' | 'insetXl' | 'inset2xl';\n md?: 'insetNone' | 'insetSm' | 'insetMd' | 'insetLg' | 'insetXl' | 'inset2xl';\n lg?: 'insetNone' | 'insetSm' | 'insetMd' | 'insetLg' | 'insetXl' | 'inset2xl';\n xl?: 'insetNone' | 'insetSm' | 'insetMd' | 'insetLg' | 'insetXl' | 'inset2xl';\n '2xl'?: 'insetNone' | 'insetSm' | 'insetMd' | 'insetLg' | 'insetXl' | 'inset2xl';\n}",
104
+ "description": "Insets at various breakpoints."
105
+ },
106
+ {
107
+ "name": "isAddButtonDisabled",
108
+ "type": "boolean",
109
+ "description": "Flag indicating that the add button is disabled when onAdd is passed in"
110
+ },
111
+ {
112
+ "name": "isBox",
113
+ "type": "boolean",
114
+ "description": "Enables box styling to the tab component",
115
+ "defaultValue": "false"
116
+ },
117
+ {
118
+ "name": "isExpanded",
119
+ "type": "boolean",
120
+ "description": "Flag to indicate if the vertical tabs are expanded"
121
+ },
122
+ {
123
+ "name": "isFilled",
124
+ "type": "boolean",
125
+ "description": "Enables the filled tab list layout",
126
+ "defaultValue": "false"
127
+ },
128
+ {
129
+ "name": "isNav",
130
+ "type": "boolean",
131
+ "description": "Enables horizontal nav tab styling",
132
+ "defaultValue": "false",
133
+ "beta": true
134
+ },
135
+ {
136
+ "name": "isOverflowHorizontal",
137
+ "type": "boolean | HorizontalOverflowObject",
138
+ "description": "Flag which places overflowing tabs into a menu triggered by the last tab. Additionally an object can be passed with custom settings for the overflow tab."
139
+ },
140
+ {
141
+ "name": "isSubtab",
142
+ "type": "boolean",
143
+ "description": "Enables subtab tab styling",
144
+ "defaultValue": "false"
145
+ },
146
+ {
147
+ "name": "isVertical",
148
+ "type": "boolean",
149
+ "description": "Enables vertical tab styling",
150
+ "defaultValue": "false"
151
+ },
152
+ {
153
+ "name": "leftScrollAriaLabel",
154
+ "type": "string",
155
+ "description": "Please use backScrollAriaLabel. Aria-label for the left scroll button",
156
+ "defaultValue": "'Scroll left'",
157
+ "deprecated": true
158
+ },
159
+ {
160
+ "name": "mountOnEnter",
161
+ "type": "boolean",
162
+ "description": "Waits until the first \"enter\" transition to mount tab children (add them to the DOM)",
163
+ "defaultValue": "false"
164
+ },
165
+ {
166
+ "name": "onAdd",
167
+ "type": "(event: React.MouseEvent<HTMLElement, MouseEvent>) => void",
168
+ "description": "Callback for the add button. Passing this property inserts the add button"
169
+ },
170
+ {
171
+ "name": "onClose",
172
+ "type": "(event: React.MouseEvent<HTMLElement, MouseEvent>, eventKey: TabProps['eventKey']) => void",
173
+ "description": "Callback to handle tab closing and adds a basic close button to all tabs. This is overridden by the tab actions property."
174
+ },
175
+ {
176
+ "name": "onSelect",
177
+ "type": "(event: React.MouseEvent<HTMLElement, MouseEvent>, eventKey: TabProps['eventKey']) => void",
178
+ "description": "Callback to handle tab selection",
179
+ "defaultValue": "() => undefined as any"
180
+ },
181
+ {
182
+ "name": "onToggle",
183
+ "type": "(event: React.MouseEvent, isExpanded: boolean) => void",
184
+ "description": "Callback function to toggle the expandable tabs.",
185
+ "defaultValue": "(_event: React.MouseEvent, _isExpanded: boolean): void => undefined"
186
+ },
187
+ {
188
+ "name": "ouiaId",
189
+ "type": "number | string",
190
+ "description": "Value to overwrite the randomly generated data-ouia-component-id."
191
+ },
192
+ {
193
+ "name": "ouiaSafe",
194
+ "type": "boolean",
195
+ "description": "Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false.",
196
+ "defaultValue": "true"
197
+ },
198
+ {
199
+ "name": "rightScrollAriaLabel",
200
+ "type": "string",
201
+ "description": "Please use forwardScrollAriaLabel. Aria-label for the right scroll button",
202
+ "defaultValue": "'Scroll right'",
203
+ "deprecated": true
204
+ },
205
+ {
206
+ "name": "tabListAriaLabel",
207
+ "type": "string",
208
+ "description": "A readable string to create an accessible name for the tablist element. This can be used to differentiate multiple tablists on a page, and should be used for subtabs."
209
+ },
210
+ {
211
+ "name": "tabListAriaLabelledBy",
212
+ "type": "string",
213
+ "description": "Id of an element that provides an accessible name for the tablist. Use this when a visible label already exists on the page."
214
+ },
215
+ {
216
+ "name": "toggleAriaLabel",
217
+ "type": "string",
218
+ "description": "Aria-label for the expandable toggle"
219
+ },
220
+ {
221
+ "name": "toggleText",
222
+ "type": "string",
223
+ "description": "Text that appears in the expandable toggle"
224
+ },
225
+ {
226
+ "name": "unmountOnExit",
227
+ "type": "boolean",
228
+ "description": "Unmounts tab children (removes them from the DOM) when they are no longer visible",
229
+ "defaultValue": "false"
230
+ },
231
+ {
232
+ "name": "usePageInsets",
233
+ "type": "boolean",
234
+ "description": "Flag indicates that the tabs should use page insets."
235
+ },
236
+ {
237
+ "name": "variant",
238
+ "type": "'default' | 'secondary'",
239
+ "description": "Tabs background color variant",
240
+ "defaultValue": "'default'"
241
+ }
242
+ ]
243
+ },
244
+ {
245
+ "name": "Tab",
246
+ "description": "",
247
+ "props": [
248
+ {
249
+ "name": "actions",
250
+ "type": "React.ReactNode",
251
+ "description": "Actions rendered beside the tab content"
252
+ },
253
+ {
254
+ "name": "children",
255
+ "type": "React.ReactNode",
256
+ "description": "content rendered inside the Tab content area."
257
+ },
258
+ {
259
+ "name": "className",
260
+ "type": "string",
261
+ "description": "additional classes added to the Tab"
262
+ },
263
+ {
264
+ "name": "closeButtonAriaLabel",
265
+ "type": "string",
266
+ "description": "Aria-label for the close button added by passing the onClose property to Tabs."
267
+ },
268
+ {
269
+ "name": "eventKey",
270
+ "type": "number | string",
271
+ "description": "uniquely identifies the tab",
272
+ "required": true
273
+ },
274
+ {
275
+ "name": "href",
276
+ "type": "string",
277
+ "description": "URL associated with the Tab. A Tab with an href will render as an <a> instead of a <button>. A Tab inside a <Tabs component=\"nav\"> should have an href."
278
+ },
279
+ {
280
+ "name": "inoperableEvents",
281
+ "type": "string[]",
282
+ "description": "Events to prevent when the button is in an aria-disabled state"
283
+ },
284
+ {
285
+ "name": "isAriaDisabled",
286
+ "type": "boolean",
287
+ "description": "Adds disabled styling and communicates that the button is disabled using the aria-disabled html attribute"
288
+ },
289
+ {
290
+ "name": "isCloseDisabled",
291
+ "type": "boolean",
292
+ "description": "Flag indicating the close button should be disabled"
293
+ },
294
+ {
295
+ "name": "isDisabled",
296
+ "type": "boolean",
297
+ "description": "Adds disabled styling and disables the button using the disabled html attribute"
298
+ },
299
+ {
300
+ "name": "isHidden",
301
+ "type": "boolean",
302
+ "description": "whether to render the tab or not"
303
+ },
304
+ {
305
+ "name": "ouiaId",
306
+ "type": "number | string",
307
+ "description": "Value to set the data-ouia-component-id for the tab button."
308
+ },
309
+ {
310
+ "name": "ouiaSafe",
311
+ "type": "boolean",
312
+ "description": ""
313
+ },
314
+ {
315
+ "name": "tabContentId",
316
+ "type": "string | number",
317
+ "description": "child id for case in which a TabContent section is defined outside of a Tabs component"
318
+ },
319
+ {
320
+ "name": "tabContentRef",
321
+ "type": "React.RefObject<any>",
322
+ "description": "child reference for case in which a TabContent section is defined outside of a Tabs component"
323
+ },
324
+ {
325
+ "name": "title",
326
+ "type": "React.ReactNode",
327
+ "description": "Content rendered in the tab title. Should be <TabTitleText> and/or <TabTitleIcon> for proper styling.",
328
+ "required": true
329
+ },
330
+ {
331
+ "name": "tooltip",
332
+ "type": "React.ReactElement<any>",
333
+ "description": "Optional Tooltip rendered to a Tab. Should be <Tooltip> with appropriate props for proper rendering."
334
+ }
335
+ ]
336
+ },
337
+ {
338
+ "name": "TabContent",
339
+ "description": "",
340
+ "props": [
341
+ {
342
+ "name": "activeKey",
343
+ "type": "number | string",
344
+ "description": "Identifies the active Tab"
345
+ },
346
+ {
347
+ "name": "aria-label",
348
+ "type": "string",
349
+ "description": "title of controlling Tab if used outside Tabs component"
350
+ },
351
+ {
352
+ "name": "child",
353
+ "type": "React.ReactElement<any>",
354
+ "description": "Child to show in the content area"
355
+ },
356
+ {
357
+ "name": "children",
358
+ "type": "any",
359
+ "description": "content rendered inside the tab content area if used outside Tabs component"
360
+ },
361
+ {
362
+ "name": "className",
363
+ "type": "string",
364
+ "description": "class of tab content area if used outside Tabs component"
365
+ },
366
+ {
367
+ "name": "eventKey",
368
+ "type": "number | string",
369
+ "description": "uniquely identifies the controlling Tab if used outside Tabs component"
370
+ },
371
+ {
372
+ "name": "id",
373
+ "type": "string",
374
+ "description": "id passed from parent to identify the content section",
375
+ "required": true
376
+ },
377
+ {
378
+ "name": "ouiaId",
379
+ "type": "number | string",
380
+ "description": "Value to overwrite the randomly generated data-ouia-component-id."
381
+ },
382
+ {
383
+ "name": "ouiaSafe",
384
+ "type": "boolean",
385
+ "description": "Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false."
386
+ }
387
+ ]
388
+ },
389
+ {
390
+ "name": "TabContentBody",
391
+ "description": "",
392
+ "props": [
393
+ {
394
+ "name": "children",
395
+ "type": "React.ReactNode",
396
+ "description": "Content rendered inside the tab content body.",
397
+ "required": true
398
+ },
399
+ {
400
+ "name": "className",
401
+ "type": "string",
402
+ "description": "Additional classes added to the tab content body."
403
+ },
404
+ {
405
+ "name": "hasPadding",
406
+ "type": "boolean",
407
+ "description": "Indicates if there should be padding around the tab content body"
408
+ }
409
+ ]
410
+ },
411
+ {
412
+ "name": "TabTitleText",
413
+ "description": "",
414
+ "props": [
415
+ {
416
+ "name": "children",
417
+ "type": "React.ReactNode",
418
+ "description": "Text to be rendered inside the tab button title.",
419
+ "required": true
420
+ },
421
+ {
422
+ "name": "className",
423
+ "type": "string",
424
+ "description": "additional classes added to the tab title text",
425
+ "defaultValue": "''"
426
+ }
427
+ ]
428
+ },
429
+ {
430
+ "name": "TabTitleIcon",
431
+ "description": "",
432
+ "props": [
433
+ {
434
+ "name": "children",
435
+ "type": "React.ReactNode",
436
+ "description": "Icon to be rendered inside the tab button title.",
437
+ "required": true
438
+ },
439
+ {
440
+ "name": "className",
441
+ "type": "string",
442
+ "description": "additional classes added to the tab title icon",
443
+ "defaultValue": "''"
444
+ }
445
+ ]
446
+ },
447
+ {
448
+ "name": "HorizontalOverflowObject",
449
+ "description": "",
450
+ "props": [
451
+ {
452
+ "name": "defaultTitleText",
453
+ "type": "string",
454
+ "description": "The text which displays when an overflowing tab isn't selected"
455
+ },
456
+ {
457
+ "name": "popperProps",
458
+ "type": "HorizontalOverflowPopperProps",
459
+ "description": "Additional props to spread to the popper menu."
460
+ },
461
+ {
462
+ "name": "showTabCount",
463
+ "type": "boolean",
464
+ "description": "Flag which shows the count of overflowing tabs when enabled"
465
+ },
466
+ {
467
+ "name": "toggleAriaLabel",
468
+ "type": "string",
469
+ "description": "The aria label applied to the button which toggles the tab overflow menu"
470
+ }
471
+ ]
472
+ },
473
+ {
474
+ "name": "TabAction",
475
+ "description": "",
476
+ "props": [
477
+ {
478
+ "name": "aria-label",
479
+ "type": "string",
480
+ "description": "Accessible label for the tab action"
481
+ },
482
+ {
483
+ "name": "children",
484
+ "type": "React.ReactNode",
485
+ "description": "Content rendered in the tab action"
486
+ },
487
+ {
488
+ "name": "className",
489
+ "type": "string",
490
+ "description": "Additional classes added to the tab action span"
491
+ },
492
+ {
493
+ "name": "isDisabled",
494
+ "type": "boolean",
495
+ "description": "Flag indicating if the tab action is disabled"
496
+ },
497
+ {
498
+ "name": "onClick",
499
+ "type": "(event: React.MouseEvent<HTMLElement, MouseEvent>) => void",
500
+ "description": "Click callback for tab action button"
501
+ },
502
+ {
503
+ "name": "ouiaId",
504
+ "type": "number | string",
505
+ "description": ""
506
+ },
507
+ {
508
+ "name": "ouiaSafe",
509
+ "type": "boolean",
510
+ "description": ""
511
+ }
512
+ ]
513
+ },
514
+ {
515
+ "name": "PopperOptions",
516
+ "description": "Properties of Popper that can be used to customize its behavior.",
517
+ "props": [
518
+ {
519
+ "name": "animationDuration",
520
+ "type": "number",
521
+ "description": "The duration of the CSS fade transition animation."
522
+ },
523
+ {
524
+ "name": "appendTo",
525
+ "type": "HTMLElement | (() => HTMLElement) | 'inline'",
526
+ "description": "The container to append the popper to. Defaults to 'inline'."
527
+ },
528
+ {
529
+ "name": "direction",
530
+ "type": "'up' | 'down'",
531
+ "description": "popper direction"
532
+ },
533
+ {
534
+ "name": "distance",
535
+ "type": "number",
536
+ "description": "Distance of the popper to the trigger"
537
+ },
538
+ {
539
+ "name": "enableFlip",
540
+ "type": "boolean",
541
+ "description": "Enable to flip the popper when it reaches the boundary"
542
+ },
543
+ {
544
+ "name": "entryDelay",
545
+ "type": "number",
546
+ "description": "Delay in ms before the popper appears"
547
+ },
548
+ {
549
+ "name": "exitDelay",
550
+ "type": "number",
551
+ "description": "Delay in ms before the popper disappears"
552
+ },
553
+ {
554
+ "name": "flipBehavior",
555
+ "type": "| 'flip'\n | (\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'top-start'\n | 'top-end'\n | 'bottom-start'\n | 'bottom-end'\n | 'left-start'\n | 'left-end'\n | 'right-start'\n | 'right-end'\n )[]",
556
+ "description": "The behavior of how the popper flips when it reaches the boundary"
557
+ },
558
+ {
559
+ "name": "maxWidth",
560
+ "type": "string | 'trigger'",
561
+ "description": "Maximum width of the popper. If the value is \"trigger\", it will set the max width to the trigger element's width"
562
+ },
563
+ {
564
+ "name": "minWidth",
565
+ "type": "string | 'trigger'",
566
+ "description": "Minimum width of the popper. If the value is \"trigger\", it will set the min width to the trigger element's width"
567
+ },
568
+ {
569
+ "name": "offset",
570
+ "type": "OffsetOptions['offset']",
571
+ "description": "Override for the popper's offset"
572
+ },
573
+ {
574
+ "name": "onBlur",
575
+ "type": "(event?: FocusEvent) => void",
576
+ "description": "Callback function when trigger is blurred (focus leaves)"
577
+ },
578
+ {
579
+ "name": "onDocumentClick",
580
+ "type": "(event?: MouseEvent, triggerElement?: HTMLElement, popperElement?: HTMLElement) => void",
581
+ "description": "Callback function when document is clicked"
582
+ },
583
+ {
584
+ "name": "onDocumentKeyDown",
585
+ "type": "(event?: KeyboardEvent) => void",
586
+ "description": "Callback function when keydown event occurs on document"
587
+ },
588
+ {
589
+ "name": "onFocus",
590
+ "type": "(event?: FocusEvent) => void",
591
+ "description": "Callback function when trigger is focused"
592
+ },
593
+ {
594
+ "name": "onHidden",
595
+ "type": "() => void",
596
+ "description": "Callback when popper's hide transition has finished executing"
597
+ },
598
+ {
599
+ "name": "onHide",
600
+ "type": "() => void",
601
+ "description": "Lifecycle function invoked when the popper begins to transition out."
602
+ },
603
+ {
604
+ "name": "onMount",
605
+ "type": "() => void",
606
+ "description": "Lifecycle function invoked when the popper has been mounted to the DOM."
607
+ },
608
+ {
609
+ "name": "onMouseEnter",
610
+ "type": "(event?: MouseEvent) => void",
611
+ "description": "Callback function when mouse enters trigger"
612
+ },
613
+ {
614
+ "name": "onMouseLeave",
615
+ "type": "(event?: MouseEvent) => void",
616
+ "description": "Callback function when mouse leaves trigger"
617
+ },
618
+ {
619
+ "name": "onPopperClick",
620
+ "type": "(event?: MouseEvent) => void",
621
+ "description": "Callback function when popper is clicked"
622
+ },
623
+ {
624
+ "name": "onPopperMouseEnter",
625
+ "type": "(event?: MouseEvent) => void",
626
+ "description": "Callback function when mouse enters popper content"
627
+ },
628
+ {
629
+ "name": "onPopperMouseLeave",
630
+ "type": "(event?: MouseEvent) => void",
631
+ "description": "Callback function when mouse leaves popper content"
632
+ },
633
+ {
634
+ "name": "onShow",
635
+ "type": "() => void",
636
+ "description": "Lifecycle function invoked when the popper begins to transition in."
637
+ },
638
+ {
639
+ "name": "onShown",
640
+ "type": "() => void",
641
+ "description": "Lifecycle function invoked when the popper has fully transitioned in."
642
+ },
643
+ {
644
+ "name": "onTriggerClick",
645
+ "type": "(event?: MouseEvent) => void",
646
+ "description": "Callback function when trigger is clicked"
647
+ },
648
+ {
649
+ "name": "onTriggerEnter",
650
+ "type": "(event?: KeyboardEvent) => void",
651
+ "description": "Callback function when Enter key is used on trigger"
652
+ },
653
+ {
654
+ "name": "placement",
655
+ "type": "Placement",
656
+ "description": "Instead of direction and position can set the placement of the popper"
657
+ },
658
+ {
659
+ "name": "position",
660
+ "type": "'right' | 'left' | 'center' | 'start' | 'end'",
661
+ "description": "Horizontal position of the popper. Use the additional prop preventOverflow if seeing clipping."
662
+ },
663
+ {
664
+ "name": "positionModifiers",
665
+ "type": "{\n top?: string;\n right?: string;\n bottom?: string;\n left?: string;\n topStart?: string;\n topEnd?: string;\n bottomStart?: string;\n bottomEnd?: string;\n leftStart?: string;\n leftEnd?: string;\n rightStart?: string;\n rightEnd?: string;\n }",
666
+ "description": "Map class names to positions, for example:\n{\n top: styles.modifiers.top,\n bottom: styles.modifiers.bottom,\n left: styles.modifiers.left,\n right: styles.modifiers.right\n}"
667
+ },
668
+ {
669
+ "name": "preventOverflow",
670
+ "type": "boolean",
671
+ "description": "Flag to prevent the popper from overflowing its container and becoming partially obscured."
672
+ },
673
+ {
674
+ "name": "width",
675
+ "type": "string | 'trigger'",
676
+ "description": "Custom width of the popper. If the value is \"trigger\", it will set the width to the trigger element's width"
677
+ },
678
+ {
679
+ "name": "zIndex",
680
+ "type": "number",
681
+ "description": "z-index of the popper element"
682
+ }
683
+ ]
684
+ }
685
+ ],
686
+ "cssPrefix": [
687
+ "pf-v6-c-tabs"
688
+ ],
689
+ "examples": [
690
+ "Default tabs",
691
+ "Boxed secondary tabs",
692
+ "Vertical tabs",
693
+ "Vertical expandable tabs",
694
+ "Vertical expandable uncontrolled",
695
+ "Default overflow tabs",
696
+ "Horizontal overflow tabs",
697
+ "With tooltip react ref",
698
+ "Uncontrolled tabs",
699
+ "With adjusted inset",
700
+ "With page insets",
701
+ "With icons and text",
702
+ "Subtabs",
703
+ "Filled tabs with icons",
704
+ "Tabs linked to nav elements",
705
+ "Subtabs linked to nav elements",
706
+ "Tabs used for site navigation",
707
+ "With separate content",
708
+ "With tab content with body and padding",
709
+ "Children mounting on click",
710
+ "Unmounting invisible children",
711
+ "Toggled tab content",
712
+ "Dynamic tabs",
713
+ "With help action popover",
714
+ "With help and close actions"
715
+ ]
716
+ };
717
+ pageData.liveContext = {
718
+ createRef,
719
+ Fragment,
720
+ useEffect,
721
+ useRef,
722
+ useState,
723
+ RhUiUsersFillIcon,
724
+ RhUiContainerFillIcon,
725
+ DatabaseIcon,
726
+ RhUiServerStackFillIcon,
727
+ LaptopIcon,
728
+ RhUiInfrastructureFillIcon,
729
+ HelpIcon,
730
+ RhMicronsCloseIcon
731
+ };
732
+ pageData.examples = {
733
+ 'Default tabs': props =>
734
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Tabs, Tab, TabTitleText, Checkbox, Tooltip } from '@patternfly/react-core';\n\nexport const TabsDefault: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n const [isBox, setIsBox] = useState<boolean>(false);\n // Toggle currently active tab\n const handleTabClick = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey(tabIndex);\n };\n\n const toggleBox = (checked: boolean) => {\n setIsBox(checked);\n };\n\n const tooltip = (\n <Tooltip content=\"Aria-disabled tabs are like disabled tabs, but focusable. Allows for tooltip support.\" />\n );\n return (\n <div>\n <Tabs\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n isBox={isBox}\n aria-label=\"Tabs in the default example\"\n role=\"region\"\n >\n <Tab eventKey={0} title={<TabTitleText>Users</TabTitleText>} aria-label=\"Default content - users\">\n Users\n </Tab>\n <Tab eventKey={1} title={<TabTitleText>Containers</TabTitleText>}>\n Containers\n </Tab>\n <Tab eventKey={2} title={<TabTitleText>Database</TabTitleText>}>\n Database\n </Tab>\n <Tab eventKey={3} title={<TabTitleText>Disabled</TabTitleText>} isDisabled>\n Disabled\n </Tab>\n <Tab eventKey={4} title={<TabTitleText>ARIA Disabled</TabTitleText>} isAriaDisabled>\n ARIA Disabled\n </Tab>\n <Tab tooltip={tooltip} eventKey={5} title={<TabTitleText>ARIA Disabled (Tooltip)</TabTitleText>} isAriaDisabled>\n ARIA Disabled (Tooltip)\n </Tab>\n </Tabs>\n <div style={{ marginTop: '20px' }}>\n <Checkbox\n label=\"isBox\"\n isChecked={isBox}\n onChange={(_event, checked) => toggleBox(checked)}\n aria-label=\"show box variation checkbox\"\n id=\"toggle-box-default\"\n name=\"toggle-box-default\"\n />\n </div>\n </div>\n );\n};\n","title":"Default tabs","lang":"ts","className":""}}>
735
+
736
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
737
+ {`A `}
738
+
739
+ <code {...{"className":"ws-code "}}>
740
+ {`<Tabs>`}
741
+ </code>
742
+ {` component contains multiple `}
743
+
744
+ <code {...{"className":"ws-code "}}>
745
+ {`<Tab>`}
746
+ </code>
747
+ {` components that may be used to navigate between sets of content within a page.`}
748
+ </p>
749
+
750
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
751
+ {`You can adjust a tab in the following ways:`}
752
+ </p>
753
+
754
+ <ul {...{"className":"pf-v6-c-content--ul pf-m-editorial ws-ul "}}>
755
+
756
+
757
+
758
+ <li {...{"className":"pf-v6-c-content--li pf-m-editorial ws-li "}}>
759
+ {`To label a tab with text, pass a `}
760
+
761
+ <code {...{"className":"ws-code "}}>
762
+ {`<TabTitleText>`}
763
+ </code>
764
+ {` component into the `}
765
+
766
+ <code {...{"className":"ws-code "}}>
767
+ {`title`}
768
+ </code>
769
+ {` property of a `}
770
+
771
+ <code {...{"className":"ws-code "}}>
772
+ {`<Tab>`}
773
+ </code>
774
+ {`.`}
775
+ </li>
776
+
777
+
778
+
779
+ <li {...{"className":"pf-v6-c-content--li pf-m-editorial ws-li "}}>
780
+ {`To disable a tab, use the `}
781
+
782
+ <code {...{"className":"ws-code "}}>
783
+ {`isDisabled`}
784
+ </code>
785
+ {` property. Tabs using `}
786
+
787
+ <code {...{"className":"ws-code "}}>
788
+ {`isDisabled`}
789
+ </code>
790
+ {` are not perceivable or operable by users navigating via assistive technologies.`}
791
+ </li>
792
+
793
+
794
+
795
+ <li {...{"className":"pf-v6-c-content--li pf-m-editorial ws-li "}}>
796
+ {`To disable a tab, but keep it perceivable to assistive technology users, use the `}
797
+
798
+ <code {...{"className":"ws-code "}}>
799
+ {`isAriaDisabled`}
800
+ </code>
801
+ {` property. If a disabled tab has a tooltip, use this property instead of `}
802
+
803
+ <code {...{"className":"ws-code "}}>
804
+ {`isDisabled`}
805
+ </code>
806
+ {`.`}
807
+ </li>
808
+
809
+
810
+
811
+ <li {...{"className":"pf-v6-c-content--li pf-m-editorial ws-li "}}>
812
+ {`To add a tooltip to an aria-disabled tab, use the `}
813
+
814
+ <code {...{"className":"ws-code "}}>
815
+ {`tooltip`}
816
+ </code>
817
+ {` property.`}
818
+ </li>
819
+
820
+
821
+ </ul>
822
+
823
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
824
+ {`Tabs can be styled as 'default' or 'boxed':`}
825
+ </p>
826
+
827
+ <ul {...{"className":"pf-v6-c-content--ul pf-m-editorial ws-ul "}}>
828
+
829
+
830
+
831
+ <li {...{"className":"pf-v6-c-content--li pf-m-editorial ws-li "}}>
832
+ {`Default tabs do not have any borders and use a bottom line to distinguish between a selected tab, a hovered tab, and an inactive tab.`}
833
+ </li>
834
+
835
+
836
+
837
+ <li {...{"className":"pf-v6-c-content--li pf-m-editorial ws-li "}}>
838
+ {`Boxed tabs are outlined to emphasize the area that a tab spans. To preview boxed tabs in the following examples, select the 'isBox' checkbox, which sets the `}
839
+
840
+ <code {...{"className":"ws-code "}}>
841
+ {`isBox`}
842
+ </code>
843
+ {` property to true.`}
844
+ </li>
845
+
846
+
847
+ </ul>
848
+ </Example>,
849
+ 'Boxed secondary tabs': props =>
850
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Tabs, Tab, TabTitleText, Checkbox, Tooltip } from '@patternfly/react-core';\n\nexport const TabsBoxSecondary: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n const [isTabsBoxSecondary, setIsTabsBoxSecondary] = useState<boolean>(true);\n // Toggle currently active tab\n const handleTabClick = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey(tabIndex);\n };\n\n const toggleScheme = (checked: boolean) => {\n setIsTabsBoxSecondary(checked);\n };\n\n const tooltip = (\n <Tooltip content=\"Aria-disabled tabs are like disabled tabs, but focusable. Allows for tooltip support.\" />\n );\n return (\n <div>\n <Tabs\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n variant={isTabsBoxSecondary ? 'secondary' : 'default'}\n isBox\n aria-label=\"Tabs in the box light variation example\"\n role=\"region\"\n >\n <Tab eventKey={0} title={<TabTitleText>Users</TabTitleText>} aria-label=\"Box light variation content - users\">\n Users\n </Tab>\n <Tab eventKey={1} title={<TabTitleText>Containers</TabTitleText>}>\n Containers\n </Tab>\n <Tab eventKey={2} title={<TabTitleText>Database</TabTitleText>}>\n Database\n </Tab>\n <Tab eventKey={3} title={<TabTitleText>Disabled</TabTitleText>} isDisabled>\n Disabled\n </Tab>\n <Tab eventKey={4} title={<TabTitleText>ARIA Disabled</TabTitleText>} isAriaDisabled>\n ARIA Disabled\n </Tab>\n <Tab eventKey={5} title={<TabTitleText>ARIA Disabled (Tooltip)</TabTitleText>} isAriaDisabled tooltip={tooltip}>\n ARIA Disabled (Tooltip)\n </Tab>\n </Tabs>\n <div style={{ marginTop: '20px' }}>\n <Checkbox\n label=\"Tabs secondary variant\"\n isChecked={isTabsBoxSecondary}\n onChange={(_event, checked) => toggleScheme(checked)}\n id=\"toggle-tabs-variant\"\n name=\"toggle-tabs-variant\"\n />\n </div>\n </div>\n );\n};\n","title":"Boxed secondary tabs","lang":"ts","className":""}}>
851
+
852
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
853
+ {`To change the background color of boxed tabs or the tab content, use the `}
854
+
855
+ <code {...{"className":"ws-code "}}>
856
+ {`variant`}
857
+ </code>
858
+ {` property.`}
859
+ </p>
860
+
861
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
862
+ {`Toggle the tab color by selecting the 'Tabs secondary variant' checkbox in the following example.`}
863
+ </p>
864
+ </Example>,
865
+ 'Vertical tabs': props =>
866
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Tabs, Tab, TabTitleText, Checkbox, Tooltip } from '@patternfly/react-core';\n\nexport const TabsVertical: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n const [isBox, setIsBox] = useState<boolean>(false);\n // Toggle currently active tab\n const handleTabClick = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey(tabIndex);\n };\n\n const toggleBox = (checked: boolean) => {\n setIsBox(checked);\n };\n\n const tooltip = (\n <Tooltip content=\"Aria-disabled tabs are like disabled tabs, but focusable. Allows for tooltip support.\" />\n );\n\n return (\n <div>\n <Tabs\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n isVertical\n isBox={isBox}\n aria-label=\"Tabs in the vertical example\"\n role=\"region\"\n >\n <Tab\n eventKey={0}\n title={\n <TabTitleText aria-label=\"vertical\" role=\"region\">\n Users\n </TabTitleText>\n }\n aria-label=\"Vertical example content users\"\n >\n Users\n </Tab>\n <Tab eventKey={1} title={<TabTitleText>Containers</TabTitleText>}>\n Containers\n </Tab>\n <Tab eventKey={2} title={<TabTitleText>Database</TabTitleText>}>\n Database\n </Tab>\n <Tab eventKey={3} title={<TabTitleText>Disabled</TabTitleText>} isDisabled>\n Disabled\n </Tab>\n <Tab eventKey={4} title={<TabTitleText>ARIA Disabled</TabTitleText>} isAriaDisabled>\n ARIA Disabled\n </Tab>\n <Tab eventKey={5} title={<TabTitleText>ARIA Disabled (Tooltip)</TabTitleText>} isAriaDisabled tooltip={tooltip}>\n ARIA Disabled (Tooltip)\n </Tab>\n </Tabs>\n <div style={{ marginTop: '20px' }}>\n <Checkbox\n label=\"isBox\"\n isChecked={isBox}\n onChange={(_event, checked) => toggleBox(checked)}\n aria-label=\"show box variation checkbox with vertical\"\n id=\"toggle-box-vertical\"\n name=\"toggle-box-vertical\"\n />\n </div>\n </div>\n );\n};\n","title":"Vertical tabs","lang":"ts","className":""}}>
867
+
868
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
869
+ {`Vertical tabs are placed on the left-hand side of a page or container and may appear in both 'default' and 'boxed' tab variations.`}
870
+ </p>
871
+
872
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
873
+ {`To style tabs vertically, use the `}
874
+
875
+ <code {...{"className":"ws-code "}}>
876
+ {`isVertical`}
877
+ </code>
878
+ {` property.`}
879
+ </p>
880
+ </Example>,
881
+ 'Vertical expandable tabs': props =>
882
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Tabs, Tab, TabTitleText } from '@patternfly/react-core';\n\nexport const TabsVerticalExpandable: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n const [isExpanded, setIsExpanded] = useState<boolean>(false);\n // Toggle currently active tab\n const handleTabClick = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey(tabIndex);\n };\n\n const onToggle = (_event: React.MouseEvent, isExpanded: boolean) => {\n setIsExpanded(isExpanded);\n };\n\n return (\n <Tabs\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n isVertical\n expandable={{ default: 'expandable', md: 'nonExpandable', lg: 'expandable' }}\n isExpanded={isExpanded}\n onToggle={onToggle}\n toggleText=\"Containers\"\n aria-label=\"Tabs in the vertical expandable example\"\n role=\"region\"\n >\n <Tab eventKey={0} title={<TabTitleText>Users</TabTitleText>} aria-label=\"Vertical expandable content users\">\n Users\n </Tab>\n <Tab eventKey={1} title={<TabTitleText>Containers</TabTitleText>}>\n Containers\n </Tab>\n <Tab eventKey={2} title={<TabTitleText>Database</TabTitleText>}>\n Database\n </Tab>\n <Tab eventKey={3} title={<TabTitleText>Server</TabTitleText>}>\n Server\n </Tab>\n <Tab eventKey={4} title={<TabTitleText>System</TabTitleText>}>\n System\n </Tab>\n <Tab eventKey={6} title={<TabTitleText>Network</TabTitleText>}>\n Network\n </Tab>\n </Tabs>\n );\n};\n","title":"Vertical expandable tabs","lang":"ts","className":""}}>
883
+
884
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
885
+ {`Vertical tabs can be made expandable to save space. Users can select the caret to expand a menu and switch between tabs.`}
886
+ </p>
887
+
888
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
889
+ {`Expandable tabs can be enabled at different breakpoints. The following example passes `}
890
+
891
+ <code {...{"className":"ws-code "}}>
892
+ {`expandable={{ default: 'expandable', md: 'nonExpandable', lg: 'expandable' }}`}
893
+ </code>
894
+ {` into the `}
895
+
896
+ <code {...{"className":"ws-code "}}>
897
+ {`<Tabs>`}
898
+ </code>
899
+ {` component.`}
900
+ </p>
901
+
902
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
903
+ {`To flag vertical tabs when they're expanded, use the `}
904
+
905
+ <code {...{"className":"ws-code "}}>
906
+ {`isExpanded`}
907
+ </code>
908
+ {` property.`}
909
+ </p>
910
+ </Example>,
911
+ 'Vertical expandable uncontrolled': props =>
912
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Tabs, Tab, TabTitleText } from '@patternfly/react-core';\nexport const TabsVerticalExpandableUncontrolled: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n // Toggle currently active tab\n const handleTabClick = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey(tabIndex);\n };\n\n return (\n <Tabs\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n isVertical\n expandable={{ default: 'expandable', md: 'nonExpandable', lg: 'expandable' }}\n defaultIsExpanded={false}\n toggleText=\"Containers\"\n aria-label=\"Tabs in the vertical expandable uncontrolled example\"\n role=\"region\"\n >\n <Tab\n eventKey={0}\n title={<TabTitleText>Users</TabTitleText>}\n aria-label=\"Vertical expandable uncontrolled content users\"\n >\n Users\n </Tab>\n <Tab eventKey={1} title={<TabTitleText>Containers</TabTitleText>}>\n Containers\n </Tab>\n <Tab eventKey={2} title={<TabTitleText>Database</TabTitleText>}>\n Database\n </Tab>\n <Tab eventKey={3} title={<TabTitleText>Server</TabTitleText>}>\n Server\n </Tab>\n <Tab eventKey={4} title={<TabTitleText>System</TabTitleText>}>\n System\n </Tab>\n <Tab eventKey={6} title={<TabTitleText>Network</TabTitleText>}>\n Network\n </Tab>\n </Tabs>\n );\n};\n","title":"Vertical expandable uncontrolled","lang":"ts","className":""}}>
913
+
914
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
915
+ {`To flag the default expanded state for uncontrolled tabs, use the `}
916
+
917
+ <code {...{"className":"ws-code "}}>
918
+ {`defaultIsExpanded`}
919
+ </code>
920
+ {` property.`}
921
+ </p>
922
+ </Example>,
923
+ 'Default overflow tabs': props =>
924
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Tabs, Tab, TabTitleText, Checkbox } from '@patternfly/react-core';\n\nexport const TabsDefaultOverflow: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n const [isBox, setIsBox] = useState<boolean>(false);\n // Toggle currently active tab\n const handleTabClick = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey(tabIndex);\n };\n\n const toggleBox = (checked: boolean) => {\n setIsBox(checked);\n };\n\n return (\n <div>\n <Tabs\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n isBox={isBox}\n aria-label=\"Tabs in the default overflow example\"\n role=\"region\"\n >\n <Tab eventKey={0} title={<TabTitleText>Users</TabTitleText>} aria-label=\"Default overflow content users\">\n Users\n </Tab>\n <Tab eventKey={1} title={<TabTitleText>Containers</TabTitleText>}>\n Containers\n </Tab>\n <Tab eventKey={2} title={<TabTitleText>Database</TabTitleText>}>\n Database\n </Tab>\n <Tab eventKey={3} title={<TabTitleText>Server</TabTitleText>}>\n Server\n </Tab>\n <Tab eventKey={4} title={<TabTitleText>System</TabTitleText>}>\n System\n </Tab>\n <Tab eventKey={6} title={<TabTitleText>Network</TabTitleText>}>\n Network\n </Tab>\n <Tab eventKey={7} title={<TabTitleText>Tab item 7</TabTitleText>}>\n Tab 7 section\n </Tab>\n <Tab eventKey={8} title={<TabTitleText>Tab item 8</TabTitleText>}>\n Tab 8 section\n </Tab>\n <Tab eventKey={9} title={<TabTitleText>Tab item 9</TabTitleText>}>\n Tab 9 section\n </Tab>\n <Tab eventKey={10} title={<TabTitleText>Tab item 10</TabTitleText>}>\n Tab 10 section\n </Tab>\n <Tab eventKey={11} title={<TabTitleText>Tab item 11</TabTitleText>}>\n Tab 11 section\n </Tab>\n </Tabs>\n <div style={{ marginTop: '20px' }}>\n <Checkbox\n label=\"isBox\"\n isChecked={isBox}\n onChange={(_event, checked) => toggleBox(checked)}\n aria-label=\"show box variation checkbox on overflow\"\n id=\"toggle-box-overflow\"\n name=\"toggle-box-overflow\"\n />\n </div>\n </div>\n );\n};\n","title":"Default overflow tabs","lang":"ts","className":""}}>
925
+
926
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
927
+ {`By default, overflow is applied when there are too many tabs for the width of the container they are in. This overflow can be navigated by side-scrolling within the tabs section, or by selecting the left and right arrows.`}
928
+ </p>
929
+ </Example>,
930
+ 'Horizontal overflow tabs': props =>
931
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Tabs, Tab, TabTitleText, Checkbox } from '@patternfly/react-core';\n\nexport const TabsHorizontalOverflow: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n const [showTabCount, setShowTabCount] = useState(false);\n\n const handleTabClick = (_event: any, tabIndex: string | number) => {\n setActiveTabKey(tabIndex);\n };\n\n return (\n <div>\n <Tabs\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n aria-label=\"Tabs in the horizontal overflow example\"\n role=\"region\"\n isOverflowHorizontal={{ showTabCount }}\n >\n <Tab eventKey={0} title={<TabTitleText>Users</TabTitleText>} aria-label=\"Horizontal overflow content users\">\n Users\n </Tab>\n <Tab eventKey={1} title={<TabTitleText>Containers</TabTitleText>}>\n Containers\n </Tab>\n <Tab eventKey={2} title={<TabTitleText>Database</TabTitleText>}>\n Database\n </Tab>\n <Tab eventKey={3} title={<TabTitleText>Server</TabTitleText>}>\n Server\n </Tab>\n <Tab eventKey={4} title={<TabTitleText>System</TabTitleText>}>\n System\n </Tab>\n <Tab eventKey={6} title={<TabTitleText>Network</TabTitleText>}>\n Network\n </Tab>\n <Tab eventKey={7} title={<TabTitleText>Tab item 7</TabTitleText>}>\n Tab 7 section\n </Tab>\n <Tab eventKey={8} title={<TabTitleText>Tab item 8</TabTitleText>}>\n Tab 8 section\n </Tab>\n <Tab eventKey={9} title={<TabTitleText>Tab item 9</TabTitleText>}>\n Tab 9 section\n </Tab>\n <Tab eventKey={10} title={<TabTitleText>Tab item 10</TabTitleText>}>\n Tab 10 section\n </Tab>\n <Tab eventKey={11} title={<TabTitleText>Tab item 11</TabTitleText>}>\n Tab 11 section\n </Tab>\n </Tabs>\n <div style={{ marginTop: '20px' }}>\n <Checkbox\n label=\"Show overflowing tab count\"\n isChecked={showTabCount}\n onChange={() => setShowTabCount(!showTabCount)}\n aria-label=\"show overflow tab count variation checkbox\"\n id=\"toggle-show-count-overflow\"\n name=\"toggle-show-count-overflow\"\n />\n </div>\n </div>\n );\n};\n","title":"Horizontal overflow tabs","lang":"ts","className":""}}>
932
+
933
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
934
+ {`Horizontal overflow can be used instead of the default application. To navigate horizontal overflow tabs users can select the last tab, labeled “more”, to see the overflowed content.`}
935
+ </p>
936
+
937
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
938
+ {`To enable horizontal overflow, use the `}
939
+
940
+ <code {...{"className":"ws-code "}}>
941
+ {`isOverflowHorizontal`}
942
+ </code>
943
+ {` property.`}
944
+ </p>
945
+
946
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
947
+ {`In the following example, select the 'Show overflowing tab count' checkbox to add a count of overflow items to the final “more” tab.`}
948
+ </p>
949
+ </Example>,
950
+ 'With tooltip react ref': props =>
951
+ <Example {...pageData} {...props} {...{"code":"import { createRef, useState } from 'react';\nimport { Tabs, Tab, TabTitleText, Checkbox, Tooltip } from '@patternfly/react-core';\n\nexport const TabsTooltipReactRef: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n const [isBox, setIsBox] = useState<boolean>(false);\n // Toggle currently active tab\n const handleTabClick = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey(tabIndex);\n };\n\n const toggleBox = (checked: boolean) => {\n setIsBox(checked);\n };\n\n const tooltipRef = createRef<HTMLElement>();\n\n return (\n <div>\n <Tabs\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n isBox={isBox}\n aria-label=\"Tabs in the example with a tooltip ref\"\n role=\"region\"\n >\n <Tab eventKey={0} title={<TabTitleText>Users</TabTitleText>} aria-label=\"Tooltip ref content - users\">\n Users\n </Tab>\n <Tab eventKey={1} title={<TabTitleText>Containers</TabTitleText>}>\n Containers\n </Tab>\n <Tab eventKey={2} title={<TabTitleText>Database</TabTitleText>}>\n Database\n </Tab>\n <Tab eventKey={3} title={<TabTitleText>Disabled</TabTitleText>} isDisabled>\n Disabled\n </Tab>\n <Tab eventKey={4} title={<TabTitleText>ARIA Disabled</TabTitleText>} isAriaDisabled>\n ARIA Disabled\n </Tab>\n <Tab\n eventKey={5}\n title={<TabTitleText>ARIA Disabled (Tooltip)</TabTitleText>}\n isAriaDisabled\n ref={tooltipRef}\n aria-describedby=\"tooltip-ref1\"\n >\n ARIA Disabled (Tooltip)\n </Tab>\n </Tabs>\n <Tooltip\n id=\"tooltip-ref1\"\n content=\"Aria-disabled tabs are like disabled tabs, but focusable. Allows for tooltip support.\"\n triggerRef={tooltipRef}\n />\n <div style={{ marginTop: '20px' }}>\n <Checkbox\n label=\"isBox\"\n isChecked={isBox}\n onChange={(_event, checked) => toggleBox(checked)}\n aria-label=\"show box variation checkbox\"\n id=\"toggle-box-tooltip-ref\"\n name=\"toggle-box-tooltip-ref\"\n />\n </div>\n </div>\n );\n};\n","title":"With tooltip react ref","lang":"ts","className":""}}>
952
+
953
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
954
+ {`When using a React ref to link a tooltip to a tab component via the `}
955
+
956
+ <code {...{"className":"ws-code "}}>
957
+ {`reference`}
958
+ </code>
959
+ {` property, you should avoid manually passing in a value of "off" to the `}
960
+
961
+ <code {...{"className":"ws-code "}}>
962
+ {`aria-live`}
963
+ </code>
964
+ {` property. Doing so may cause the tooltip to become less accessible to assistive technologies.`}
965
+ </p>
966
+
967
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
968
+ {`The tooltip should also have the `}
969
+
970
+ <code {...{"className":"ws-code "}}>
971
+ {`id`}
972
+ </code>
973
+ {` property passed in. The value of `}
974
+
975
+ <code {...{"className":"ws-code "}}>
976
+ {`id`}
977
+ </code>
978
+ {` should be passed into the tab's `}
979
+
980
+ <code {...{"className":"ws-code "}}>
981
+ {`aria-describedby`}
982
+ </code>
983
+ {` property. This ensures a tooltip used with a React ref will be announced by the JAWS and NVDA screen readers.`}
984
+ </p>
985
+ </Example>,
986
+ 'Uncontrolled tabs': props =>
987
+ <Example {...pageData} {...props} {...{"code":"import { Tabs, Tab, TabTitleText, Tooltip } from '@patternfly/react-core';\n\nexport const TabsUncontrolled: React.FunctionComponent = () => {\n const tooltip = (\n <Tooltip content=\"Aria-disabled tabs are like disabled tabs, but focusable. Allows for tooltip support.\" />\n );\n\n return (\n <>\n <Tabs defaultActiveKey={0} aria-label=\"Tabs in the uncontrolled example\" role=\"region\">\n <Tab eventKey={0} title={<TabTitleText>Users</TabTitleText>} aria-label=\"Uncontrolled ref content - users\">\n Users\n </Tab>\n <Tab eventKey={1} title={<TabTitleText>Containers</TabTitleText>}>\n Containers\n </Tab>\n <Tab eventKey={2} title={<TabTitleText>Database</TabTitleText>}>\n Database\n </Tab>\n <Tab eventKey={3} title={<TabTitleText>Disabled</TabTitleText>} isDisabled>\n Disabled\n </Tab>\n <Tab eventKey={4} title={<TabTitleText>ARIA Disabled</TabTitleText>} isAriaDisabled>\n ARIA Disabled\n </Tab>\n <Tab eventKey={5} title={<TabTitleText>ARIA Disabled (Tooltip)</TabTitleText>} isAriaDisabled tooltip={tooltip}>\n ARIA Disabled (Tooltip)\n </Tab>\n </Tabs>\n </>\n );\n};\n","title":"Uncontrolled tabs","lang":"ts","className":""}}>
988
+
989
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
990
+ {`To allow the `}
991
+
992
+ <code {...{"className":"ws-code "}}>
993
+ {`<Tabs>`}
994
+ </code>
995
+ {` component to manage setting the active tab and displaying correct content itself, use uncontrolled tabs, as shown in the following example.`}
996
+ </p>
997
+ </Example>,
998
+ 'With adjusted inset': props =>
999
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Tabs, Tab, TabTitleText, Checkbox } from '@patternfly/react-core';\n\nexport const TabsInset: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n const [isBox, setIsBox] = useState<boolean>(false);\n // Toggle currently active tab\n const handleTabClick = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey(tabIndex);\n };\n\n const toggleBox = (checked: boolean) => {\n setIsBox(checked);\n };\n\n return (\n <div>\n <Tabs\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n inset={{\n default: 'insetNone',\n md: 'insetSm',\n xl: 'insetLg',\n '2xl': 'inset2xl'\n }}\n isBox={isBox}\n aria-label=\"Tabs in the inset example\"\n role=\"region\"\n >\n <Tab eventKey={0} title={<TabTitleText>Users</TabTitleText>} aria-label=\"Inset example content users\">\n Users\n </Tab>\n <Tab eventKey={1} title={<TabTitleText>Containers</TabTitleText>}>\n Containers\n </Tab>\n <Tab eventKey={2} title={<TabTitleText>Database</TabTitleText>}>\n Database\n </Tab>\n <Tab eventKey={3} title={<TabTitleText>Server</TabTitleText>}>\n Server\n </Tab>\n <Tab eventKey={4} title={<TabTitleText>System</TabTitleText>}>\n System\n </Tab>\n <Tab eventKey={6} title={<TabTitleText>Network</TabTitleText>}>\n Network\n </Tab>\n </Tabs>\n <div style={{ marginTop: '20px' }}>\n <Checkbox\n label=\"isBox\"\n isChecked={isBox}\n onChange={(_event, checked) => toggleBox(checked)}\n aria-label=\"show box variation checkbox with inset\"\n id=\"toggle-box-inset\"\n name=\"toggle-box-inset\"\n />\n </div>\n </div>\n );\n};\n","title":"With adjusted inset","lang":"ts","className":""}}>
1000
+
1001
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1002
+ {`To adjust the inset of tabs and visually separate them more, use the `}
1003
+
1004
+ <code {...{"className":"ws-code "}}>
1005
+ {`inset`}
1006
+ </code>
1007
+ {` property. You can set the inset to "insetNone", "insetSm", "insetMd", "insetLg", "insetXl", or "inset2xl" at "default", "sm", "md", "lg, "xl, and "2xl" breakpoints.`}
1008
+ </p>
1009
+ </Example>,
1010
+ 'With page insets': props =>
1011
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Tabs, Tab, TabTitleText, Checkbox } from '@patternfly/react-core';\n\nexport const TabsPageInsets: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n const [isBox, setIsBox] = useState<boolean>(false);\n // Toggle currently active tab\n const handleTabClick = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey(tabIndex);\n };\n\n const toggleBox = (checked: boolean) => {\n setIsBox(checked);\n };\n\n return (\n <div>\n <Tabs\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n usePageInsets\n isBox={isBox}\n aria-label=\"Tabs in the page insets example\"\n role=\"region\"\n >\n <Tab eventKey={0} title={<TabTitleText>Users</TabTitleText>} aria-label=\"Page insets example content users\">\n Users\n </Tab>\n <Tab eventKey={1} title={<TabTitleText>Containers</TabTitleText>}>\n Containers\n </Tab>\n <Tab eventKey={2} title={<TabTitleText>Database</TabTitleText>}>\n Database\n </Tab>\n <Tab eventKey={3} title={<TabTitleText>Server</TabTitleText>}>\n Server\n </Tab>\n <Tab eventKey={4} title={<TabTitleText>System</TabTitleText>}>\n System\n </Tab>\n <Tab eventKey={6} title={<TabTitleText>Network</TabTitleText>}>\n Network\n </Tab>\n </Tabs>\n <div style={{ marginTop: '20px' }}>\n <Checkbox\n label=\"isBox\"\n isChecked={isBox}\n onChange={(_event, checked) => toggleBox(checked)}\n aria-label=\"show box variation checkbox with inset\"\n id=\"toggle-box-page-inset\"\n name=\"toggle-box-page-inset\"\n />\n </div>\n </div>\n );\n};\n","title":"With page insets","lang":"ts","className":""}}>
1012
+
1013
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1014
+ {`To adjust the left padding of tabs, use the `}
1015
+
1016
+ <code {...{"className":"ws-code "}}>
1017
+ {`usePageInsets`}
1018
+ </code>
1019
+ {` property. This property aligns the tabs padding with the default padding of the page section, which makes it easier to align tabs with page section content.`}
1020
+ </p>
1021
+ </Example>,
1022
+ 'With icons and text': props =>
1023
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Tabs, Tab, TabTitleText, TabTitleIcon } from '@patternfly/react-core';\nimport RhUiUsersFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-users-fill-icon';\nimport RhUiContainerFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-container-fill-icon';\nimport DatabaseIcon from '@patternfly/react-icons/dist/esm/icons/database-icon';\nimport RhUiServerStackFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-server-stack-fill-icon';\nimport LaptopIcon from '@patternfly/react-icons/dist/esm/icons/laptop-icon';\nimport RhUiInfrastructureFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-infrastructure-fill-icon';\n\nexport const TabsIconAndText: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n // Toggle currently active tab\n const handleTabClick = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey(tabIndex);\n };\n\n return (\n <Tabs\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n aria-label=\"Tabs in the icons and text example\"\n role=\"region\"\n >\n <Tab\n eventKey={0}\n title={\n <>\n <TabTitleIcon>\n <RhUiUsersFillIcon />\n </TabTitleIcon>{' '}\n <TabTitleText>Users</TabTitleText>{' '}\n </>\n }\n aria-label=\"icons and text content\"\n >\n Users\n </Tab>\n <Tab\n eventKey={1}\n title={\n <>\n <TabTitleIcon>\n <RhUiContainerFillIcon />\n </TabTitleIcon>{' '}\n <TabTitleText>Containers</TabTitleText>{' '}\n </>\n }\n >\n Containers\n </Tab>\n <Tab\n eventKey={2}\n title={\n <>\n <TabTitleIcon>\n <DatabaseIcon />\n </TabTitleIcon>{' '}\n <TabTitleText>Database</TabTitleText>{' '}\n </>\n }\n >\n Database\n </Tab>\n <Tab\n eventKey={3}\n title={\n <>\n <TabTitleIcon>\n <RhUiServerStackFillIcon />\n </TabTitleIcon>{' '}\n <TabTitleText>Server</TabTitleText>{' '}\n </>\n }\n >\n Server\n </Tab>\n <Tab\n eventKey={4}\n title={\n <>\n <TabTitleIcon>\n <LaptopIcon />\n </TabTitleIcon>{' '}\n <TabTitleText>System</TabTitleText>{' '}\n </>\n }\n >\n System\n </Tab>\n <Tab\n eventKey={6}\n title={\n <>\n <TabTitleIcon>\n <RhUiInfrastructureFillIcon />\n </TabTitleIcon>{' '}\n <TabTitleText>Network</TabTitleText>{' '}\n </>\n }\n >\n Network\n </Tab>\n </Tabs>\n );\n};\n","title":"With icons and text","lang":"ts","className":""}}>
1024
+
1025
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1026
+ {`You can render different content in the `}
1027
+
1028
+ <code {...{"className":"ws-code "}}>
1029
+ {`title`}
1030
+ </code>
1031
+ {` property of a tab to add icons and text.`}
1032
+ </p>
1033
+
1034
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1035
+ {`To add an icon to a tab, pass a `}
1036
+
1037
+ <code {...{"className":"ws-code "}}>
1038
+ {`<TabTitleIcon>`}
1039
+ </code>
1040
+ {` component that contains the icon of your choice into the `}
1041
+
1042
+ <code {...{"className":"ws-code "}}>
1043
+ {`title`}
1044
+ </code>
1045
+ {`. To use an icon alongside styled text, keep the text in the `}
1046
+
1047
+ <code {...{"className":"ws-code "}}>
1048
+ {`<TabTitleText>`}
1049
+ </code>
1050
+ {` component.`}
1051
+ </p>
1052
+ </Example>,
1053
+ 'Subtabs': props =>
1054
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Tabs, Tab, TabTitleText, Checkbox } from '@patternfly/react-core';\n\nexport const TabsSubtabs: React.FunctionComponent = () => {\n const [activeTabKey1, setActiveTabKey1] = useState<string | number>(0);\n const [activeTabKey2, setActiveTabKey2] = useState<string | number>(0);\n const [isBox, setIsBox] = useState<boolean>(false);\n\n // Toggle currently active primary tab\n const handleTabClickFirst = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey1(tabIndex);\n };\n\n // Toggle currently active subtab\n const handleTabClickSecond = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey2(tabIndex);\n };\n\n const toggleBox = (checked: boolean) => {\n setIsBox(checked);\n };\n\n return (\n <div>\n <Tabs\n activeKey={activeTabKey1}\n onSelect={handleTabClickFirst}\n isBox={isBox}\n aria-label=\"Tabs in the tabs with subtabs example\"\n tabListAriaLabel=\"Primary\"\n role=\"region\"\n >\n <Tab eventKey={0} title={<TabTitleText>Users</TabTitleText>} aria-label=\"Tabs with subtabs content users\">\n <Tabs\n aria-label=\"subtabs for users\"\n role=\"region\"\n activeKey={activeTabKey2}\n isSubtab\n tabListAriaLabel=\"Users\"\n onSelect={handleTabClickSecond}\n >\n <Tab eventKey={20} title={<TabTitleText>Subtab item 1</TabTitleText>}>\n Subtab item 1 item section\n </Tab>\n <Tab eventKey={21} title={<TabTitleText>Subtab item 2</TabTitleText>}>\n Subtab item 2 section\n </Tab>\n <Tab eventKey={22} title={<TabTitleText>Subtab item 3</TabTitleText>}>\n Subtab item 3 section\n </Tab>\n <Tab eventKey={23} title={<TabTitleText>Subtab item 4</TabTitleText>}>\n Subtab item 4 section\n </Tab>\n <Tab eventKey={24} title={<TabTitleText>Subtab item 5</TabTitleText>}>\n Subtab item 5 section\n </Tab>\n <Tab eventKey={25} title={<TabTitleText>Subtab item 6</TabTitleText>}>\n Subtab item 6 section\n </Tab>\n <Tab eventKey={26} title={<TabTitleText>Subtab item 7</TabTitleText>}>\n Subtab item 7 section\n </Tab>\n <Tab eventKey={27} title={<TabTitleText>Subtab item 8</TabTitleText>}>\n Subtab item 8 section\n </Tab>\n </Tabs>\n </Tab>\n <Tab eventKey={1} title={<TabTitleText>Containers</TabTitleText>}>\n Containers\n </Tab>\n <Tab eventKey={2} title={<TabTitleText>Database</TabTitleText>}>\n Database\n </Tab>\n <Tab eventKey={3} title={<TabTitleText>Server</TabTitleText>}>\n Server\n </Tab>\n <Tab eventKey={4} title={<TabTitleText>System</TabTitleText>}>\n System\n </Tab>\n <Tab eventKey={6} title={<TabTitleText>Network</TabTitleText>}>\n Network\n </Tab>\n <Tab eventKey={7} title={<TabTitleText>Tab item 7</TabTitleText>}>\n Tab 7 section\n </Tab>\n <Tab eventKey={8} title={<TabTitleText>Tab item 8</TabTitleText>}>\n Tab 8 section\n </Tab>\n <Tab eventKey={9} title={<TabTitleText>Tab item 9</TabTitleText>}>\n Tab 9 section\n </Tab>\n <Tab eventKey={10} title={<TabTitleText>Tab item 10</TabTitleText>}>\n Tab 10 section\n </Tab>\n <Tab eventKey={11} title={<TabTitleText>Tab item 11</TabTitleText>}>\n Tab 11 section\n </Tab>\n </Tabs>\n <div style={{ marginTop: '20px' }}>\n <Checkbox\n label=\"isBox\"\n isChecked={isBox}\n onChange={(_event, checked) => toggleBox(checked)}\n aria-label=\"show box variation checkbox with sub tabs\"\n id=\"toggle-box-subtab\"\n name=\"toggle-box-subtab\"\n />\n </div>\n </div>\n );\n};\n","title":"Subtabs","lang":"ts","className":""}}>
1055
+
1056
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1057
+ {`Use subtabs within other components, like modals. Subtabs have less visually prominent styling.`}
1058
+ </p>
1059
+
1060
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1061
+ {`To apply subtab styling to tabs, use the `}
1062
+
1063
+ <code {...{"className":"ws-code "}}>
1064
+ {`isSubtab`}
1065
+ </code>
1066
+ {` property.`}
1067
+ </p>
1068
+
1069
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1070
+ {`For accessibility, give the primary tablist an accessible name (for example, `}
1071
+
1072
+ <code {...{"className":"ws-code "}}>
1073
+ {`tabListAriaLabel="Primary"`}
1074
+ </code>
1075
+ {`) and give any subtab tablist an accessible name that matches the currently selected primary tab (for example, `}
1076
+
1077
+ <code {...{"className":"ws-code "}}>
1078
+ {`tabListAriaLabel="Users"`}
1079
+ </code>
1080
+ {`).`}
1081
+ </p>
1082
+ </Example>,
1083
+ 'Filled tabs with icons': props =>
1084
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Tabs, Tab, TabTitleText, TabTitleIcon, Checkbox } from '@patternfly/react-core';\nimport RhUiUsersFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-users-fill-icon';\nimport RhUiContainerFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-container-fill-icon';\nimport DatabaseIcon from '@patternfly/react-icons/dist/esm/icons/database-icon';\n\nexport const TabsFilledWithIcons: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n const [isBox, setIsBox] = useState<boolean>(false);\n // Toggle currently active tab\n const handleTabClick = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey(tabIndex);\n };\n\n const toggleBox = (checked: boolean) => {\n setIsBox(checked);\n };\n\n return (\n <div>\n <Tabs\n isFilled\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n isBox={isBox}\n aria-label=\"Tabs in the filled with icons example\"\n role=\"region\"\n >\n <Tab\n eventKey={0}\n title={\n <>\n <TabTitleIcon>\n <RhUiUsersFillIcon />\n </TabTitleIcon>{' '}\n <TabTitleText>Users</TabTitleText>{' '}\n </>\n }\n aria-label=\"filled tabs with icons content users\"\n >\n Users\n </Tab>\n <Tab\n eventKey={1}\n title={\n <>\n <TabTitleIcon>\n <RhUiContainerFillIcon />\n </TabTitleIcon>{' '}\n <TabTitleText>Containers</TabTitleText>{' '}\n </>\n }\n >\n Containers\n </Tab>\n <Tab\n eventKey={2}\n title={\n <>\n <TabTitleIcon>\n <DatabaseIcon />\n </TabTitleIcon>{' '}\n <TabTitleText>Database</TabTitleText>{' '}\n </>\n }\n >\n Database\n </Tab>\n </Tabs>\n <div style={{ marginTop: '20px' }}>\n <Checkbox\n label=\"isBox\"\n isChecked={isBox}\n onChange={(_event, checked) => toggleBox(checked)}\n aria-label=\"show box variation checkbox with filled icon tabs\"\n id=\"toggle-box-filled-icon\"\n name=\"toggle-box-filled-icon\"\n />\n </div>\n </div>\n );\n};\n","title":"Filled tabs with icons","lang":"ts","className":""}}>
1085
+
1086
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1087
+ {`To allow tabs to fill the available width of the page section, use the `}
1088
+
1089
+ <code {...{"className":"ws-code "}}>
1090
+ {`isFilled`}
1091
+ </code>
1092
+ {` property.`}
1093
+ </p>
1094
+ </Example>,
1095
+ 'Tabs linked to nav elements': props =>
1096
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Tabs, Tab, TabsComponent, TabTitleText } from '@patternfly/react-core';\n\nexport const TabsNav: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n // Toggle currently active tab\n const handleTabClick = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey(tabIndex);\n };\n return (\n <Tabs\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n component={TabsComponent.nav}\n aria-label=\"Tabs in the nav element example\"\n >\n <Tab eventKey={0} title={<TabTitleText>Users</TabTitleText>} href=\"#users\" aria-label=\"Nav element content users\">\n Users\n </Tab>\n <Tab eventKey={1} title={<TabTitleText>Containers</TabTitleText>} href=\"#containers\">\n Containers\n </Tab>\n <Tab eventKey={2} title={<TabTitleText>Database</TabTitleText>} href=\"#database\">\n Database\n </Tab>\n <Tab eventKey={3} title={<TabTitleText>Disabled</TabTitleText>} isDisabled href=\"#disabled\">\n Disabled\n </Tab>\n <Tab eventKey={4} title={<TabTitleText>ARIA Disabled</TabTitleText>} isAriaDisabled href=\"#aria-disabled\">\n ARIA Disabled\n </Tab>\n <Tab eventKey={6} title={<TabTitleText>Network</TabTitleText>} href=\"#network\">\n Network\n </Tab>\n </Tabs>\n );\n};\n","title":"Tabs linked to nav elements","lang":"ts","className":""}}>
1097
+
1098
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1099
+ {`To let tabs link to nav elements, pass `}
1100
+
1101
+ <code {...{"className":"ws-code "}}>
1102
+ {`{TabsComponent.nav}`}
1103
+ </code>
1104
+ {` into the `}
1105
+
1106
+ <code {...{"className":"ws-code "}}>
1107
+ {`component`}
1108
+ </code>
1109
+ {` property.`}
1110
+ </p>
1111
+
1112
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1113
+ {`Nav tabs should use the `}
1114
+
1115
+ <code {...{"className":"ws-code "}}>
1116
+ {`href`}
1117
+ </code>
1118
+ {` property to link the tab to the URL of another page or page section. A tab with an `}
1119
+
1120
+ <code {...{"className":"ws-code "}}>
1121
+ {`href`}
1122
+ </code>
1123
+ {` will render as an `}
1124
+
1125
+ <code {...{"className":"ws-code "}}>
1126
+ {`<a>`}
1127
+ </code>
1128
+ {` instead of a `}
1129
+
1130
+ <code {...{"className":"ws-code "}}>
1131
+ {`<button>`}
1132
+ </code>
1133
+ {`.`}
1134
+ </p>
1135
+ </Example>,
1136
+ 'Subtabs linked to nav elements': props =>
1137
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Tabs, Tab, TabsComponent, TabTitleText } from '@patternfly/react-core';\n\nexport const TabsNavSubtab: React.FunctionComponent = () => {\n const [activeTabKey1, setActiveTabKey1] = useState<string | number>(0);\n const [activeTabKey2, setActiveTabKey2] = useState<string | number>(0);\n\n // Toggle currently active primary tab\n const handleTabClickFirst = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey1(tabIndex);\n };\n\n // Toggle currently active secondary tab\n const handleTabClickSecond = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey2(tabIndex);\n };\n\n return (\n <Tabs\n activeKey={activeTabKey1}\n onSelect={handleTabClickFirst}\n component={TabsComponent.nav}\n aria-label=\"Tabs in the sub tabs with nav element example\"\n tabListAriaLabel=\"Primary\"\n >\n <Tab eventKey={0} title={<TabTitleText>Users</TabTitleText>} href=\"#\" aria-label=\"Subtabs with nav content users\">\n <Tabs\n activeKey={activeTabKey2}\n isSubtab\n onSelect={handleTabClickSecond}\n aria-label=\"Local secondary\"\n component={TabsComponent.nav}\n tabListAriaLabel=\"Users\"\n >\n <Tab eventKey={20} title={<TabTitleText>Item 1</TabTitleText>} href=\"#\">\n Item 1 item section\n </Tab>\n <Tab eventKey={21} title={<TabTitleText>Item 2</TabTitleText>} href=\"#\">\n Item 2 section\n </Tab>\n <Tab eventKey={22} title={<TabTitleText>Item 3</TabTitleText>} href=\"#\">\n Item 3 section\n </Tab>\n <Tab eventKey={3} title={<TabTitleText>Disabled</TabTitleText>} isDisabled href=\"#\">\n Disabled\n </Tab>\n <Tab eventKey={4} title={<TabTitleText>ARIA Disabled</TabTitleText>} isAriaDisabled href=\"#\">\n ARIA Disabled\n </Tab>\n <Tab eventKey={25} title={<TabTitleText>Item 6</TabTitleText>} href=\"#\">\n Item 6 section\n </Tab>\n </Tabs>\n </Tab>\n <Tab eventKey={1} title={<TabTitleText>Containers</TabTitleText>} href=\"#\">\n Containers\n </Tab>\n <Tab eventKey={2} title={<TabTitleText>Database</TabTitleText>} href=\"#\">\n Database\n </Tab>\n <Tab eventKey={3} title={<TabTitleText>Disabled</TabTitleText>} isDisabled href=\"#\">\n Disabled\n </Tab>\n <Tab eventKey={4} title={<TabTitleText>ARIA Disabled</TabTitleText>} isAriaDisabled href=\"#\">\n ARIA Disabled\n </Tab>\n <Tab eventKey={6} title={<TabTitleText>Network</TabTitleText>} href=\"#\">\n Network\n </Tab>\n </Tabs>\n );\n};\n","title":"Subtabs linked to nav elements","lang":"ts","className":""}}>
1138
+
1139
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1140
+ {`Subtabs can also link to nav elements.`}
1141
+ </p>
1142
+ </Example>,
1143
+ 'Tabs used for site navigation': props =>
1144
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Tabs, Tab, TabTitleText } from '@patternfly/react-core';\n\nexport const TabsSiteNav: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n // Toggle currently active tab\n const handleTabClick = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey(tabIndex);\n };\n return (\n <Tabs\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n isNav={true}\n aria-label=\"Site navigation with nav styling example\"\n >\n <Tab eventKey={0} title={<TabTitleText>Users</TabTitleText>} href=\"#users\" aria-label=\"Nav element content users\">\n Users\n </Tab>\n <Tab eventKey={1} title={<TabTitleText>Containers</TabTitleText>} href=\"#containers\">\n Containers\n </Tab>\n <Tab eventKey={2} title={<TabTitleText>Database</TabTitleText>} href=\"#database\">\n Database\n </Tab>\n <Tab eventKey={3} title={<TabTitleText>Disabled</TabTitleText>} isDisabled href=\"#disabled\">\n Disabled\n </Tab>\n <Tab eventKey={4} title={<TabTitleText>ARIA Disabled</TabTitleText>} isAriaDisabled href=\"#aria-disabled\">\n ARIA Disabled\n </Tab>\n <Tab eventKey={6} title={<TabTitleText>Network</TabTitleText>} href=\"#network\">\n Network\n </Tab>\n </Tabs>\n );\n};\n","title":"Tabs used for site navigation","lang":"ts","className":""}}>
1145
+
1146
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1147
+ {`Site navigation tabs`}
1148
+ </p>
1149
+ </Example>,
1150
+ 'With separate content': props =>
1151
+ <Example {...pageData} {...props} {...{"code":"import { createRef, Fragment, useState } from 'react';\nimport { Tabs, Tab, TabTitleText, TabContent } from '@patternfly/react-core';\n\nexport const TabsSeparateContent: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n // Toggle currently active tab\n const handleTabClick = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey(tabIndex);\n };\n\n const contentRef1 = createRef<HTMLElement>();\n const contentRef2 = createRef<HTMLElement>();\n const contentRef3 = createRef<HTMLElement>();\n\n return (\n <Fragment>\n <Tabs\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n aria-label=\"Tabs in the separate content example\"\n role=\"region\"\n >\n <Tab\n eventKey={0}\n title={<TabTitleText>Tab item 1</TabTitleText>}\n tabContentId=\"refTab1Section\"\n tabContentRef={contentRef1}\n />\n <Tab\n eventKey={1}\n title={<TabTitleText>Tab item 2</TabTitleText>}\n tabContentId=\"refTab2Section\"\n tabContentRef={contentRef2}\n />\n <Tab\n eventKey={2}\n title={<TabTitleText>Tab item 3</TabTitleText>}\n tabContentId=\"refTab3Section\"\n tabContentRef={contentRef3}\n />\n </Tabs>\n <div>\n <TabContent\n eventKey={0}\n id=\"refTab1Section\"\n ref={contentRef1}\n aria-label=\"This is content for the first separate content tab\"\n hidden={activeTabKey !== 0}\n >\n Tab 1 section\n </TabContent>\n <TabContent\n eventKey={1}\n id=\"refTab2Section\"\n ref={contentRef2}\n aria-label=\"This is content for the second separate content tab\"\n hidden={activeTabKey !== 1}\n >\n Tab 2 section\n </TabContent>\n <TabContent\n eventKey={2}\n id=\"refTab3Section\"\n ref={contentRef3}\n aria-label=\"This is content for the third separate content tab\"\n hidden={activeTabKey !== 2}\n >\n Tab 3 section\n </TabContent>\n </div>\n </Fragment>\n );\n};\n","title":"With separate content","lang":"ts","className":""}}>
1152
+
1153
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1154
+ {`If a `}
1155
+
1156
+ <code {...{"className":"ws-code "}}>
1157
+ {`<TabContent>`}
1158
+ </code>
1159
+ {` component is defined outside of a `}
1160
+
1161
+ <code {...{"className":"ws-code "}}>
1162
+ {`<Tabs>`}
1163
+ </code>
1164
+ {` component, use the `}
1165
+
1166
+ <code {...{"className":"ws-code "}}>
1167
+ {`tabContentRef`}
1168
+ </code>
1169
+ {` and `}
1170
+
1171
+ <code {...{"className":"ws-code "}}>
1172
+ {`tabContentId`}
1173
+ </code>
1174
+ {` properties. The `}
1175
+
1176
+ <code {...{"className":"ws-code "}}>
1177
+ {`hidden`}
1178
+ </code>
1179
+ {` property is used on `}
1180
+
1181
+ <code {...{"className":"ws-code "}}>
1182
+ {`TabContent`}
1183
+ </code>
1184
+ {` to set the initial visible content.`}
1185
+ </p>
1186
+ </Example>,
1187
+ 'With tab content with body and padding': props =>
1188
+ <Example {...pageData} {...props} {...{"code":"import { createRef, Fragment, useState } from 'react';\nimport { Tabs, Tab, TabTitleText, TabContent, TabContentBody } from '@patternfly/react-core';\n\nexport const TabContentWithBodyPadding: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n // Toggle currently active tab\n const handleTabClick = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey(tabIndex);\n };\n\n const contentRef1 = createRef<HTMLElement>();\n const contentRef2 = createRef<HTMLElement>();\n const contentRef3 = createRef<HTMLElement>();\n\n return (\n <Fragment>\n <Tabs\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n aria-label=\"Tabs in the body and padding example\"\n role=\"region\"\n >\n <Tab\n eventKey={0}\n title={<TabTitleText>Tab item 1</TabTitleText>}\n tabContentId=\"tab1SectionBodyPadding\"\n tabContentRef={contentRef1}\n />\n <Tab\n eventKey={1}\n title={<TabTitleText>Tab item 2</TabTitleText>}\n tabContentId=\"tab2SectionBodyPadding\"\n tabContentRef={contentRef2}\n />\n <Tab\n eventKey={2}\n title={<TabTitleText>Tab item 3</TabTitleText>}\n tabContentId=\"tab3SectionBodyPadding\"\n tabContentRef={contentRef3}\n />\n </Tabs>\n <div>\n <TabContent eventKey={0} id=\"tab1SectionBodyPadding\" ref={contentRef1}>\n <TabContentBody hasPadding> Tab 1 section with body and padding </TabContentBody>\n </TabContent>\n <TabContent eventKey={1} id=\"tab2SectionBodyPadding\" ref={contentRef2} hidden>\n <TabContentBody hasPadding> Tab 2 section with body and padding </TabContentBody>\n </TabContent>\n <TabContent eventKey={2} id=\"tab3SectionBodyPadding\" ref={contentRef3} hidden>\n <TabContentBody hasPadding> Tab 3 section with body and padding </TabContentBody>\n </TabContent>\n </div>\n </Fragment>\n );\n};\n","title":"With tab content with body and padding","lang":"ts","className":""}}>
1189
+
1190
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1191
+ {`To add a content body to a `}
1192
+
1193
+ <code {...{"className":"ws-code "}}>
1194
+ {`<TabContent>`}
1195
+ </code>
1196
+ {` component, pass a `}
1197
+
1198
+ <code {...{"className":"ws-code "}}>
1199
+ {`<TabContentBody>`}
1200
+ </code>
1201
+ {`. To add padding to the body section, use the `}
1202
+
1203
+ <code {...{"className":"ws-code "}}>
1204
+ {`hasPadding`}
1205
+ </code>
1206
+ {` property.`}
1207
+ </p>
1208
+ </Example>,
1209
+ 'Children mounting on click': props =>
1210
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Tabs, Tab, TabTitleText } from '@patternfly/react-core';\n\nexport const TabsChildrenMounting: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n // Toggle currently active tab\n const handleTabClick = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey(tabIndex);\n };\n\n return (\n <Tabs\n mountOnEnter\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n aria-label=\"Tabs in the children mounting on click example\"\n role=\"region\"\n >\n <Tab eventKey={0} title={<TabTitleText>Tab item 1</TabTitleText>} aria-label=\"Tab 1\">\n Tab 1 section\n </Tab>\n <Tab eventKey={1} title={<TabTitleText>Tab item 2</TabTitleText>} aria-label=\"Tab 2\">\n Tab 2 section\n </Tab>\n <Tab eventKey={2} title={<TabTitleText>Tab item 3</TabTitleText>} aria-label=\"Tab 3\">\n Tab 3 section\n </Tab>\n </Tabs>\n );\n};\n","title":"Children mounting on click","lang":"ts","className":""}}>
1211
+
1212
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1213
+ {`To mount tab children (add to the DOM) when a tab is clicked, use the `}
1214
+
1215
+ <code {...{"className":"ws-code "}}>
1216
+ {`mountOnEnter`}
1217
+ </code>
1218
+ {` property.`}
1219
+ </p>
1220
+
1221
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1222
+ {`Note that this property does not create the tab children until the tab is clicked, so they are not preloaded into the DOM.`}
1223
+ </p>
1224
+ </Example>,
1225
+ 'Unmounting invisible children': props =>
1226
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Tabs, Tab, TabTitleText } from '@patternfly/react-core';\n\nexport const TabsUnmountingInvisibleChildren: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n // Toggle currently active tab\n const handleTabClick = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey(tabIndex);\n };\n\n return (\n <Tabs\n unmountOnExit\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n aria-label=\"Tabs in the unmounting invisible children example\"\n role=\"region\"\n >\n <Tab eventKey={0} title={<TabTitleText>Tab item 1</TabTitleText>} aria-label=\"Invisible children tab 1\">\n Tab 1 section\n </Tab>\n <Tab eventKey={1} title={<TabTitleText>Tab item 2</TabTitleText>} aria-label=\"Invisible children tab 2\">\n Tab 2 section\n </Tab>\n <Tab eventKey={2} title={<TabTitleText>Tab item 3</TabTitleText>} aria-label=\"Invisible children tab 3\">\n Tab 3 section\n </Tab>\n </Tabs>\n );\n};\n","title":"Unmounting invisible children","lang":"ts","className":""}}>
1227
+
1228
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1229
+ {`To unmount tab children (remove from the DOM) when they are no longer visible, use the `}
1230
+
1231
+ <code {...{"className":"ws-code "}}>
1232
+ {`unmountOnExit`}
1233
+ </code>
1234
+ {` property.`}
1235
+ </p>
1236
+ </Example>,
1237
+ 'Toggled tab content': props =>
1238
+ <Example {...pageData} {...props} {...{"code":"import { createRef, Fragment, useState } from 'react';\nimport { Tabs, Tab, TabContent, Button, Divider } from '@patternfly/react-core';\n\nexport const TabsToggledSeparateContent: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<string | number>(0);\n const [isTab2Hidden, setIsTab2Hidden] = useState<boolean>(false);\n // Toggle currently active tab\n const handleTabClick = (\n event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,\n tabIndex: string | number\n ) => {\n setActiveTabKey(tabIndex);\n };\n\n const contentRef1 = createRef<HTMLElement>();\n const contentRef2 = createRef<HTMLElement>();\n const contentRef3 = createRef<HTMLElement>();\n\n return (\n <Fragment>\n <Button onClick={() => setIsTab2Hidden(!isTab2Hidden)}>{isTab2Hidden ? 'Show' : 'Hide'} tab 2</Button>\n <Divider style={{ paddingTop: '1rem', paddingBottom: '1rem' }} />\n <Tabs\n activeKey={activeTabKey}\n onSelect={handleTabClick}\n aria-label=\"Tabs in the toggled separate content example\"\n role=\"region\"\n >\n <Tab eventKey={0} title=\"Tab item 1\" tabContentId=\"tab1SectionSeparateContent\" tabContentRef={contentRef1} />\n {!isTab2Hidden && (\n <Tab eventKey={1} title=\"Tab item 2\" tabContentId=\"tab2SectionSeparateContent\" tabContentRef={contentRef2} />\n )}\n <Tab eventKey={2} title=\"Tab item 3\" tabContentId=\"tab3SectionSeparateContent\" tabContentRef={contentRef3} />\n </Tabs>\n <div>\n <TabContent\n eventKey={0}\n id=\"tab1SectionSeparateContent\"\n ref={contentRef1}\n aria-label=\"This is content for the first toggled separate content tab\"\n >\n Tab 1 section\n </TabContent>\n {!isTab2Hidden && (\n <TabContent\n eventKey={1}\n id=\"tab2SectionSeparateContent\"\n ref={contentRef2}\n aria-label=\"This is content for the second toggled separate content tab\"\n hidden\n >\n Tab 2 section\n </TabContent>\n )}\n <TabContent\n eventKey={2}\n id=\"tab3SectionSeparateContent\"\n ref={contentRef3}\n aria-label=\"This is content for the third toggled separate content tab\"\n hidden\n >\n Tab 3 section\n </TabContent>\n </div>\n </Fragment>\n );\n};\n","title":"Toggled tab content","lang":"ts","className":""}}>
1239
+
1240
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1241
+ {`You may control tabs from outside of the tabs component. For example, select the "Hide tab 2" button below to make "Tab item 2" invisible.`}
1242
+ </p>
1243
+
1244
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1245
+ {`The tab its content should only be mounted when the tab is visible.`}
1246
+ </p>
1247
+ </Example>,
1248
+ 'Dynamic tabs': props =>
1249
+ <Example {...pageData} {...props} {...{"code":"import { useEffect, useRef, useState } from 'react';\nimport { Tabs, Tab, TabTitleText } from '@patternfly/react-core';\n\nexport const TabsDynamic: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<number>(0);\n const [tabs, setTabs] = useState<string[]>(['Terminal 1', 'Terminal 2', 'Terminal 3']);\n const [newTabNumber, setNewTabNumber] = useState<number>(4);\n const tabComponentRef = useRef<any>(undefined);\n const firstMount = useRef(true);\n\n const onClose = (event: any, tabIndex: string | number) => {\n const tabIndexNum = tabIndex as number;\n let nextTabIndex = activeTabKey;\n if (tabIndexNum < activeTabKey) {\n // if a preceding tab is closing, keep focus on the new index of the current tab\n nextTabIndex = activeTabKey - 1 > 0 ? activeTabKey - 1 : 0;\n } else if (activeTabKey === tabs.length - 1) {\n // if the closing tab is the last tab, focus the preceding tab\n nextTabIndex = tabs.length - 2 > 0 ? tabs.length - 2 : 0;\n }\n setActiveTabKey(nextTabIndex);\n setTabs(tabs.filter((tab, index) => index !== tabIndex));\n };\n\n const onAdd = () => {\n setTabs([...tabs, `Terminal ${newTabNumber}`]);\n setActiveTabKey(tabs.length);\n setNewTabNumber(newTabNumber + 1);\n };\n\n useEffect(() => {\n if (firstMount.current) {\n firstMount.current = false;\n return;\n } else {\n const first = tabComponentRef.current.tabList.current.childNodes[activeTabKey];\n first && first.firstChild.focus();\n }\n }, [tabs]);\n\n return (\n <Tabs\n activeKey={activeTabKey}\n onSelect={(event: any, tabIndex: string | number) => setActiveTabKey(tabIndex as number)}\n onClose={onClose}\n onAdd={onAdd}\n aria-label=\"Tabs in the addable/closeable example\"\n addButtonAriaLabel=\"Add new tab\"\n role=\"region\"\n ref={tabComponentRef}\n >\n {tabs.map((tab, index) => (\n <Tab\n key={index}\n eventKey={index}\n aria-label={`Dynamic ${tab}`}\n title={<TabTitleText>{tab}</TabTitleText>}\n closeButtonAriaLabel={`Close ${tab}`}\n isCloseDisabled={tabs.length === 1}\n >\n {tab}\n </Tab>\n ))}\n </Tabs>\n );\n};\n","title":"Dynamic tabs","lang":"ts","className":""}}>
1250
+
1251
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1252
+ {`To enable closeable tabs, pass the `}
1253
+
1254
+ <code {...{"className":"ws-code "}}>
1255
+ {`onClose`}
1256
+ </code>
1257
+ {` property to the `}
1258
+
1259
+ <code {...{"className":"ws-code "}}>
1260
+ {`<Tabs>`}
1261
+ </code>
1262
+ {` component. To enable a button that adds new tabs, pass the `}
1263
+
1264
+ <code {...{"className":"ws-code "}}>
1265
+ {`onAdd`}
1266
+ </code>
1267
+ {` property to `}
1268
+
1269
+ <code {...{"className":"ws-code "}}>
1270
+ {`<Tabs>`}
1271
+ </code>
1272
+ {`.`}
1273
+ </p>
1274
+ </Example>,
1275
+ 'With help action popover': props =>
1276
+ <Example {...pageData} {...props} {...{"code":"import { createRef, useState } from 'react';\nimport { Tabs, Tab, TabTitleText, TabAction, Popover } from '@patternfly/react-core';\nimport HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';\n\nexport const TabsHelp: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<number>(0);\n\n const tabs = ['Users', 'Containers', 'Database', 'Disabled', 'ARIA disabled', 'Help disabled'];\n\n const helpPopover = (header: string, popoverRef: React.RefObject<any>) => (\n <Popover\n headerContent={<div>{header}</div>}\n bodyContent={\n <div>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam id feugiat augue, nec fringilla turpis.\n </div>\n }\n footerContent=\"Popover footer\"\n triggerRef={popoverRef}\n />\n );\n\n return (\n <Tabs\n activeKey={activeTabKey}\n onSelect={(event: any, tabIndex: string | number) => setActiveTabKey(tabIndex as number)}\n aria-label=\"Tabs in the help action example\"\n role=\"region\"\n >\n {tabs.map((tab, index) => {\n const ref = createRef<HTMLElement>();\n\n return (\n <Tab\n key={index}\n eventKey={index}\n aria-label={`Help action content - ${tab}`}\n title={<TabTitleText>{tab}</TabTitleText>}\n {...(tab === 'Disabled' && { isDisabled: true })}\n {...(tab === 'ARIA disabled' && { isAriaDisabled: true })}\n actions={\n <>\n <TabAction\n aria-label={`Help action for ${tab}`}\n ref={ref}\n {...(tab === 'Help disabled' && { isDisabled: true })}\n >\n <HelpIcon />\n </TabAction>\n {helpPopover(`Help popover for ${tab}`, ref)}\n </>\n }\n >\n {tab}\n </Tab>\n );\n })}\n </Tabs>\n );\n};\n","title":"With help action popover","lang":"ts","className":""}}>
1277
+
1278
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1279
+ {`You may add a help action to a tab to provide users with additional context in a popover.`}
1280
+ </p>
1281
+
1282
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1283
+ {`To render an action beside the tab content, use the `}
1284
+
1285
+ <code {...{"className":"ws-code "}}>
1286
+ {`actions`}
1287
+ </code>
1288
+ {` property of a `}
1289
+
1290
+ <code {...{"className":"ws-code "}}>
1291
+ {`<Tab>`}
1292
+ </code>
1293
+ {`. Pass a popover and a `}
1294
+
1295
+ <code {...{"className":"ws-code "}}>
1296
+ {`<TabsAction>`}
1297
+ </code>
1298
+ {` component into the `}
1299
+
1300
+ <code {...{"className":"ws-code "}}>
1301
+ {`actions`}
1302
+ </code>
1303
+ {` property.`}
1304
+ </p>
1305
+ </Example>,
1306
+ 'With help and close actions': props =>
1307
+ <Example {...pageData} {...props} {...{"code":"import { createRef, useEffect, useRef, useState } from 'react';\nimport { Tabs, Tab, TabTitleText, Popover, TabAction } from '@patternfly/react-core';\nimport HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';\nimport RhMicronsCloseIcon from '@patternfly/react-icons/dist/esm/icons/rh-microns-close-icon';\n\nexport const TabsHelpAndClose: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState<number>(0);\n const [tabs, setTabs] = useState<string[]>(['Terminal 1', 'Terminal 2', 'Terminal 3']);\n const tabComponentRef = useRef<any>(undefined);\n const firstMount = useRef(true);\n\n const onClose = (event: any, tabIndex: string | number) => {\n const tabIndexNum = tabIndex as number;\n let nextTabIndex = activeTabKey;\n if (tabIndexNum < activeTabKey) {\n // if a preceding tab is closing, keep focus on the new index of the current tab\n nextTabIndex = activeTabKey - 1 > 0 ? activeTabKey - 1 : 0;\n } else if (activeTabKey === tabs.length - 1) {\n // if the closing tab is the last tab, focus the preceding tab\n nextTabIndex = tabs.length - 2 > 0 ? tabs.length - 2 : 0;\n }\n setActiveTabKey(nextTabIndex);\n setTabs(tabs.filter((tab, index) => index !== tabIndex));\n };\n\n const helpPopover = (header: string, popoverRef: React.RefObject<any>) => (\n <Popover\n headerContent={<div>{header}</div>}\n bodyContent={\n <div>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam id feugiat augue, nec fringilla turpis.\n </div>\n }\n footerContent=\"Popover footer\"\n triggerRef={popoverRef}\n />\n );\n\n useEffect(() => {\n if (firstMount.current) {\n firstMount.current = false;\n return;\n } else {\n const first = tabComponentRef.current.tabList.current.childNodes[activeTabKey];\n first && first.firstChild.focus();\n }\n }, [tabs]);\n\n return (\n <Tabs\n activeKey={activeTabKey}\n onSelect={(event: any, tabIndex: string | number) => setActiveTabKey(tabIndex as number)}\n aria-label=\"Tabs in the help enabled and closeable example\"\n role=\"region\"\n ref={tabComponentRef}\n >\n {tabs.map((tab, index) => {\n const ref = createRef<HTMLElement>();\n\n return (\n <Tab\n key={index}\n eventKey={index}\n aria-label={`Help action and closable content - ${tab}`}\n title={<TabTitleText>{tab}</TabTitleText>}\n actions={\n <>\n <TabAction aria-label={`Help for ${tab}`} ref={ref}>\n <HelpIcon />\n </TabAction>\n <TabAction\n aria-label={`Close ${tab}`}\n onClick={(e) => onClose(e, index)}\n isDisabled={tabs.length === 1}\n >\n <RhMicronsCloseIcon />\n </TabAction>\n {helpPopover(`Help popover for ${tab}`, ref)}\n </>\n }\n >\n {tab}\n </Tab>\n );\n })}\n </Tabs>\n );\n};\n","title":"With help and close actions","lang":"ts","className":""}}>
1308
+
1309
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1310
+ {`To add multiple actions to a tab, create a `}
1311
+
1312
+ <code {...{"className":"ws-code "}}>
1313
+ {`<TabAction>`}
1314
+ </code>
1315
+ {` component for each action.`}
1316
+ </p>
1317
+
1318
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
1319
+ {`The following example passes in both help popover and close actions.`}
1320
+ </p>
1321
+ </Example>
1322
+ };
1323
+
1324
+ const Component = () => (
1325
+ <React.Fragment>
1326
+ <AutoLinkHeader {...{"id":"examples","headingLevel":"h2","className":"ws-title ws-h2"}}>
1327
+ {`Examples`}
1328
+ </AutoLinkHeader>
1329
+ {React.createElement(pageData.examples["Default tabs"])}
1330
+ {React.createElement(pageData.examples["Boxed secondary tabs"])}
1331
+ {React.createElement(pageData.examples["Vertical tabs"])}
1332
+ {React.createElement(pageData.examples["Vertical expandable tabs"])}
1333
+ {React.createElement(pageData.examples["Vertical expandable uncontrolled"])}
1334
+ {React.createElement(pageData.examples["Default overflow tabs"])}
1335
+ {React.createElement(pageData.examples["Horizontal overflow tabs"])}
1336
+ {React.createElement(pageData.examples["With tooltip react ref"])}
1337
+ {React.createElement(pageData.examples["Uncontrolled tabs"])}
1338
+ {React.createElement(pageData.examples["With adjusted inset"])}
1339
+ {React.createElement(pageData.examples["With page insets"])}
1340
+ {React.createElement(pageData.examples["With icons and text"])}
1341
+ {React.createElement(pageData.examples["Subtabs"])}
1342
+ {React.createElement(pageData.examples["Filled tabs with icons"])}
1343
+ {React.createElement(pageData.examples["Tabs linked to nav elements"])}
1344
+ {React.createElement(pageData.examples["Subtabs linked to nav elements"])}
1345
+ {React.createElement(pageData.examples["Tabs used for site navigation"])}
1346
+ {React.createElement(pageData.examples["With separate content"])}
1347
+ {React.createElement(pageData.examples["With tab content with body and padding"])}
1348
+ {React.createElement(pageData.examples["Children mounting on click"])}
1349
+ {React.createElement(pageData.examples["Unmounting invisible children"])}
1350
+ {React.createElement(pageData.examples["Toggled tab content"])}
1351
+ {React.createElement(pageData.examples["Dynamic tabs"])}
1352
+ {React.createElement(pageData.examples["With help action popover"])}
1353
+ {React.createElement(pageData.examples["With help and close actions"])}
1354
+ </React.Fragment>
1355
+ );
1356
+ Component.displayName = 'ComponentsTabsReactDocs';
1357
+ Component.pageData = pageData;
1358
+
1359
+ export default Component;