@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,826 @@
1
+ import React from 'react';
2
+ import { AutoLinkHeader, Example, Link as PatternflyThemeLink } from '@patternfly/documentation-framework/components';
3
+ import { Fragment, useState } from 'react';
4
+ import RhMicronsCloseIcon from '@patternfly/react-icons/dist/esm/icons/rh-microns-close-icon';
5
+ import RhUiExternalLinkFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-external-link-fill-icon';
6
+ import RhUiAddCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-add-circle-fill-icon';
7
+ import RhUiCopyFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-copy-fill-icon';
8
+ import RhMicronsCaretRightIcon from '@patternfly/react-icons/dist/esm/icons/rh-microns-caret-right-icon';
9
+ import UploadIcon from '@patternfly/react-icons/dist/esm/icons/upload-icon';
10
+ import RhUiNotificationFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-notification-fill-icon';
11
+ import RhUiQuestionMarkCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-question-mark-circle-fill-icon';
12
+ const pageData = {
13
+ "id": "Button",
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/button/react",
24
+ "sourceLink": "https://github.com/patternfly/patternfly-react/blob/main/packages/react-core/src/components/Button/examples/Button.md",
25
+ "relPath": "packages/react-core/src/components/Button/examples/Button.md",
26
+ "propComponents": [
27
+ {
28
+ "name": "Button",
29
+ "description": "",
30
+ "props": [
31
+ {
32
+ "name": "aria-label",
33
+ "type": "string",
34
+ "description": "Adds accessible text to the button."
35
+ },
36
+ {
37
+ "name": "children",
38
+ "type": "React.ReactNode",
39
+ "description": "Content rendered inside the button"
40
+ },
41
+ {
42
+ "name": "className",
43
+ "type": "string",
44
+ "description": "Additional classes added to the button"
45
+ },
46
+ {
47
+ "name": "component",
48
+ "type": "React.ElementType<any> | React.ComponentType<any>",
49
+ "description": "Sets the base component to render. defaults to button"
50
+ },
51
+ {
52
+ "name": "countOptions",
53
+ "type": "BadgeCountObject",
54
+ "description": "Adds count number to button"
55
+ },
56
+ {
57
+ "name": "hamburgerVariant",
58
+ "type": "'expand' | 'collapse'",
59
+ "description": "Adjusts and animates the hamburger icon to indicate what will happen upon clicking the button."
60
+ },
61
+ {
62
+ "name": "hasNoPadding",
63
+ "type": "boolean",
64
+ "description": "Applies no padding on a plain button variant. Use when plain button is placed inline with text"
65
+ },
66
+ {
67
+ "name": "icon",
68
+ "type": "React.ReactNode | null",
69
+ "description": "Icon for the button."
70
+ },
71
+ {
72
+ "name": "iconPosition",
73
+ "type": "'start' | 'end' | 'left' | 'right'",
74
+ "description": "Sets position of the icon. Note: \"left\" and \"right\" are deprecated. Use \"start\" and \"end\" instead"
75
+ },
76
+ {
77
+ "name": "inoperableEvents",
78
+ "type": "string[]",
79
+ "description": "Events to prevent when the button is in an aria-disabled state"
80
+ },
81
+ {
82
+ "name": "isAriaDisabled",
83
+ "type": "boolean",
84
+ "description": "Adds disabled styling and communicates that the button is disabled using the aria-disabled html attribute"
85
+ },
86
+ {
87
+ "name": "isBlock",
88
+ "type": "boolean",
89
+ "description": "Adds block styling to button"
90
+ },
91
+ {
92
+ "name": "isCircle",
93
+ "type": "boolean",
94
+ "description": "Flag indicating the button is a circle button. Intended for buttons that only contain an icon..",
95
+ "beta": true
96
+ },
97
+ {
98
+ "name": "isClicked",
99
+ "type": "boolean",
100
+ "description": "Adds clicked styling to button."
101
+ },
102
+ {
103
+ "name": "isDanger",
104
+ "type": "boolean",
105
+ "description": "Adds danger styling to secondary or link button variants"
106
+ },
107
+ {
108
+ "name": "isDisabled",
109
+ "type": "boolean",
110
+ "description": "Adds disabled styling and disables the button using the disabled html attribute"
111
+ },
112
+ {
113
+ "name": "isDocked",
114
+ "type": "boolean",
115
+ "description": "Flag indicating the button is a docked variant button. For use in docked navigation.",
116
+ "beta": true
117
+ },
118
+ {
119
+ "name": "isExpanded",
120
+ "type": "boolean",
121
+ "description": "Flag indicating whether content the button controls is expanded or not. Required when isHamburger is true."
122
+ },
123
+ {
124
+ "name": "isFavorite",
125
+ "type": "boolean",
126
+ "description": "Adds favorite styling to a button"
127
+ },
128
+ {
129
+ "name": "isFavorited",
130
+ "type": "boolean",
131
+ "description": "Flag indicating whether the button is favorited or not, only when isFavorite is true."
132
+ },
133
+ {
134
+ "name": "isHamburger",
135
+ "type": "boolean",
136
+ "description": "Flag indicating the button is a hamburger button. This will override the icon property."
137
+ },
138
+ {
139
+ "name": "isInline",
140
+ "type": "boolean",
141
+ "description": "Adds inline styling to a link button"
142
+ },
143
+ {
144
+ "name": "isLoading",
145
+ "type": "boolean",
146
+ "description": "Adds progress styling to button"
147
+ },
148
+ {
149
+ "name": "isSettings",
150
+ "type": "boolean",
151
+ "description": "Flag indicating the button is a settings button. This will override the icon property."
152
+ },
153
+ {
154
+ "name": "isTextExpanded",
155
+ "type": "boolean",
156
+ "description": "Flag indicating the docked button should display text. Only applies when isDocked is true.",
157
+ "beta": true
158
+ },
159
+ {
160
+ "name": "ouiaId",
161
+ "type": "number | string",
162
+ "description": "Value to overwrite the randomly generated data-ouia-component-id."
163
+ },
164
+ {
165
+ "name": "ouiaSafe",
166
+ "type": "boolean",
167
+ "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."
168
+ },
169
+ {
170
+ "name": "size",
171
+ "type": "'default' | 'sm' | 'lg'",
172
+ "description": "Adds styling which affects the size of the button"
173
+ },
174
+ {
175
+ "name": "spinnerAriaLabel",
176
+ "type": "string",
177
+ "description": "Accessible label for the spinner to describe what is loading"
178
+ },
179
+ {
180
+ "name": "spinnerAriaLabelledBy",
181
+ "type": "string",
182
+ "description": "Id of element which describes what is being loaded"
183
+ },
184
+ {
185
+ "name": "spinnerAriaValueText",
186
+ "type": "string",
187
+ "description": "Text describing that current loading status or progress"
188
+ },
189
+ {
190
+ "name": "state",
191
+ "type": "'read' | 'unread' | 'attention'",
192
+ "description": "Sets state of the stateful button variant. Default is \"unread\""
193
+ },
194
+ {
195
+ "name": "tabIndex",
196
+ "type": "number",
197
+ "description": "Sets the button tabindex."
198
+ },
199
+ {
200
+ "name": "type",
201
+ "type": "'button' | 'submit' | 'reset'",
202
+ "description": "Sets button type"
203
+ },
204
+ {
205
+ "name": "variant",
206
+ "type": "'primary' | 'secondary' | 'tertiary' | 'danger' | 'warning' | 'link' | 'plain' | 'control' | 'stateful'",
207
+ "description": "Adds button variant styles"
208
+ }
209
+ ]
210
+ },
211
+ {
212
+ "name": "BadgeCountObject",
213
+ "description": "",
214
+ "props": [
215
+ {
216
+ "name": "className",
217
+ "type": "string",
218
+ "description": "Additional classes added to the badge count"
219
+ },
220
+ {
221
+ "name": "count",
222
+ "type": "number",
223
+ "description": "Adds count number right of button"
224
+ },
225
+ {
226
+ "name": "isRead",
227
+ "type": "boolean",
228
+ "description": "Adds styling to the badge to indicate it has been read"
229
+ }
230
+ ]
231
+ }
232
+ ],
233
+ "cssPrefix": [
234
+ "pf-v6-c-button"
235
+ ],
236
+ "examples": [
237
+ "Variant examples",
238
+ "Disabled buttons",
239
+ "Small buttons",
240
+ "Call to action (CTA) buttons",
241
+ "Block level buttons",
242
+ "Progress indicators",
243
+ "Links as buttons",
244
+ "Inline link as span",
245
+ "Custom component",
246
+ "Aria-disabled examples",
247
+ "Button with count",
248
+ "Plain with no padding",
249
+ "Stateful",
250
+ "Circle buttons",
251
+ "Favorite",
252
+ "Settings",
253
+ "Hamburger"
254
+ ]
255
+ };
256
+ pageData.liveContext = {
257
+ Fragment,
258
+ useState,
259
+ RhMicronsCloseIcon,
260
+ RhUiExternalLinkFillIcon,
261
+ RhUiAddCircleFillIcon,
262
+ RhUiCopyFillIcon,
263
+ RhMicronsCaretRightIcon,
264
+ UploadIcon,
265
+ RhUiNotificationFillIcon,
266
+ RhUiQuestionMarkCircleFillIcon
267
+ };
268
+ pageData.examples = {
269
+ 'Variant examples': props =>
270
+ <Example {...pageData} {...props} {...{"code":"import { Button, Flex } from '@patternfly/react-core';\nimport RhMicronsCloseIcon from '@patternfly/react-icons/dist/esm/icons/rh-microns-close-icon';\nimport RhUiExternalLinkFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-external-link-fill-icon';\nimport RhUiAddCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-add-circle-fill-icon';\nimport RhUiCopyFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-copy-fill-icon';\nimport RhUiNotificationFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-notification-fill-icon';\n\nexport const ButtonVariations: React.FunctionComponent = () => (\n <>\n <Flex columnGap={{ default: 'columnGapSm' }}>\n <Button variant=\"primary\" ouiaId=\"Primary\">\n Primary\n </Button>\n <Button variant=\"secondary\" ouiaId=\"Secondary\">\n Secondary\n </Button>\n <Button variant=\"secondary\" ouiaId=\"DangerSecondary\" isDanger>\n Danger Secondary\n </Button>\n <Button variant=\"tertiary\" ouiaId=\"Tertiary\">\n Tertiary\n </Button>\n <Button variant=\"danger\" ouiaId=\"Danger\">\n Danger\n </Button>\n <Button variant=\"warning\" ouiaId=\"Warning\">\n Warning\n </Button>\n </Flex>\n <br />\n <Flex columnGap={{ default: 'columnGapSm' }}>\n <Button variant=\"link\" icon={<RhUiAddCircleFillIcon />}>\n Link\n </Button>\n <Button variant=\"link\" icon={<RhUiExternalLinkFillIcon />} iconPosition=\"end\">\n Link\n </Button>\n <Button variant=\"link\" isInline>\n Inline link\n </Button>\n <Button variant=\"link\" isDanger>\n Danger link\n </Button>\n <Button variant=\"plain\" aria-label=\"Action\" icon={<RhMicronsCloseIcon />} />\n </Flex>\n <br />\n <Flex columnGap={{ default: 'columnGapSm' }}>\n <Button variant=\"control\">Control</Button>\n <Button variant=\"control\" aria-label=\"Copy\" icon={<RhUiCopyFillIcon />} />\n </Flex>\n <br />\n <Flex columnGap={{ default: 'columnGapSm' }}>\n <Button variant=\"stateful\" icon={<RhUiNotificationFillIcon />} state=\"read\">\n Stateful read\n </Button>\n <Button variant=\"stateful\" icon={<RhUiNotificationFillIcon />} state=\"unread\">\n Stateful unread\n </Button>\n <Button variant=\"stateful\" icon={<RhUiNotificationFillIcon />} state=\"attention\">\n Stateful attention\n </Button>\n </Flex>\n </>\n);\n","title":"Variant examples","lang":"ts","className":""}}>
271
+
272
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
273
+ {`PatternFly supports several button styling variants to be used in different scenarios as needed. The following button variants can be assigned using the `}
274
+
275
+ <code {...{"className":"ws-code "}}>
276
+ {`variant`}
277
+ </code>
278
+ {` property.`}
279
+ </p>
280
+ </Example>,
281
+ 'Disabled buttons': props =>
282
+ <Example {...pageData} {...props} {...{"code":"import { Button, Flex } from '@patternfly/react-core';\nimport RhMicronsCloseIcon from '@patternfly/react-icons/dist/esm/icons/rh-microns-close-icon';\nimport RhUiAddCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-add-circle-fill-icon';\nimport RhUiCopyFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-copy-fill-icon';\n\nexport const ButtonDisabled: React.FunctionComponent = () => (\n <>\n <Flex columnGap={{ default: 'columnGapSm' }}>\n <Button isDisabled>Primary</Button>\n <Button variant=\"secondary\" isDisabled>\n Secondary\n </Button>\n <Button variant=\"secondary\" isDanger isDisabled>\n Danger secondary\n </Button>\n <Button isDisabled variant=\"tertiary\">\n Tertiary\n </Button>\n <Button isDisabled variant=\"danger\">\n Danger\n </Button>\n <Button isDisabled variant=\"warning\">\n Warning\n </Button>\n </Flex>\n <br />\n <Flex columnGap={{ default: 'columnGapSm' }}>\n <Button isDisabled variant=\"link\" icon={<RhUiAddCircleFillIcon />}>\n Link\n </Button>\n <Button isDisabled variant=\"link\" isInline>\n Inline link\n </Button>\n <Button variant=\"link\" isDanger isDisabled>\n Danger link\n </Button>\n <Button isDisabled variant=\"plain\" aria-label=\"Action\" icon={<RhMicronsCloseIcon />} />\n </Flex>\n <br />\n <Flex columnGap={{ default: 'columnGapSm' }}>\n <Button isDisabled variant=\"control\">\n Control\n </Button>\n <Button isDisabled variant=\"control\" aria-label=\"Copy\" icon={<RhUiCopyFillIcon />} />\n </Flex>\n </>\n);\n","title":"Disabled buttons","lang":"ts","className":""}}>
283
+
284
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
285
+ {`To indicate that an action is currently unavailable, all button variations can be disabled using the `}
286
+
287
+ <code {...{"className":"ws-code "}}>
288
+ {`isDisabled`}
289
+ </code>
290
+ {` property.`}
291
+ </p>
292
+ </Example>,
293
+ 'Small buttons': props =>
294
+ <Example {...pageData} {...props} {...{"code":"import { Button, Flex } from '@patternfly/react-core';\n\nexport const ButtonSmall: React.FunctionComponent = () => (\n <Flex columnGap={{ default: 'columnGapSm' }}>\n <Button variant=\"primary\" size=\"sm\">\n Primary\n </Button>\n <Button variant=\"secondary\" size=\"sm\">\n Secondary\n </Button>\n <Button variant=\"tertiary\" size=\"sm\">\n Tertiary\n </Button>\n <Button variant=\"danger\" size=\"sm\">\n Danger\n </Button>\n <Button variant=\"warning\" size=\"sm\">\n Warning\n </Button>\n </Flex>\n);\n","title":"Small buttons","lang":"ts","className":""}}>
295
+
296
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
297
+ {`To fit into tight spaces, primary, secondary, tertiary, danger, and warning button variations can be made smaller using the `}
298
+
299
+ <code {...{"className":"ws-code "}}>
300
+ {`"sm"`}
301
+ </code>
302
+ {` value for the `}
303
+
304
+ <code {...{"className":"ws-code "}}>
305
+ {`size`}
306
+ </code>
307
+ {` property.`}
308
+ </p>
309
+ </Example>,
310
+ 'Call to action (CTA) buttons': props =>
311
+ <Example {...pageData} {...props} {...{"code":"import { Button, Flex } from '@patternfly/react-core';\nimport RhMicronsCaretRightIcon from '@patternfly/react-icons/dist/esm/icons/rh-microns-caret-right-icon';\n\nexport const ButtonCallToAction: React.FunctionComponent = () => (\n <Flex columnGap={{ default: 'columnGapSm' }}>\n <Button variant=\"primary\" size=\"lg\">\n Call to action\n </Button>\n <Button variant=\"secondary\" size=\"lg\">\n Call to action\n </Button>\n <Button variant=\"tertiary\" size=\"lg\">\n Call to action\n </Button>\n <Button variant=\"link\" size=\"lg\" icon={<RhMicronsCaretRightIcon />} iconPosition=\"end\">\n Call to action\n </Button>\n </Flex>\n);\n","title":"Call to action (CTA) buttons","lang":"ts","className":""}}>
312
+
313
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
314
+ {`CTA buttons and links direct users to complete an action. Primary, secondary, tertiary, and link button variants can be styled as CTAs using the `}
315
+
316
+ <code {...{"className":"ws-code "}}>
317
+ {`"lg"`}
318
+ </code>
319
+ {` value for the `}
320
+
321
+ <code {...{"className":"ws-code "}}>
322
+ {`size`}
323
+ </code>
324
+ {` property.`}
325
+ </p>
326
+ </Example>,
327
+ 'Block level buttons': props =>
328
+ <Example {...pageData} {...props} {...{"code":"import { Button } from '@patternfly/react-core';\n\nexport const ButtonBlock: React.FunctionComponent = () => <Button isBlock>Block level button</Button>;\n","title":"Block level buttons","lang":"ts","className":""}}>
329
+
330
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
331
+ {`Block level buttons span the full width of the parent element and can be enabled using the `}
332
+
333
+ <code {...{"className":"ws-code "}}>
334
+ {`isBlock`}
335
+ </code>
336
+ {` property.`}
337
+ </p>
338
+ </Example>,
339
+ 'Progress indicators': props =>
340
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Button, Flex } from '@patternfly/react-core';\nimport UploadIcon from '@patternfly/react-icons/dist/esm/icons/upload-icon';\n\ninterface LoadingPropsType {\n spinnerAriaValueText: string;\n spinnerAriaLabelledBy?: string;\n spinnerAriaLabel?: string;\n isLoading: boolean;\n}\n\nexport const ButtonProgress: React.FunctionComponent = () => {\n const [isPrimaryLoading, setIsPrimaryLoading] = useState<boolean>(true);\n const [isSecondaryLoading, setIsSecondaryLoading] = useState<boolean>(true);\n const [isInlineLoading, setIsInlineLoading] = useState<boolean>(true);\n const [isUploading, setIsUploading] = useState<boolean>(false);\n\n const primaryLoadingProps = {} as LoadingPropsType;\n primaryLoadingProps.spinnerAriaValueText = 'Loading';\n primaryLoadingProps.spinnerAriaLabelledBy = 'primary-loading-button';\n primaryLoadingProps.isLoading = isPrimaryLoading;\n\n const secondaryLoadingProps = {} as LoadingPropsType;\n secondaryLoadingProps.spinnerAriaValueText = 'Loading';\n secondaryLoadingProps.spinnerAriaLabel = 'Content being loaded';\n secondaryLoadingProps.isLoading = isSecondaryLoading;\n\n const inlineLoadingProps = {} as LoadingPropsType;\n inlineLoadingProps.spinnerAriaValueText = 'Loading';\n inlineLoadingProps.spinnerAriaLabel = 'Content being loaded';\n inlineLoadingProps.isLoading = isInlineLoading;\n\n const uploadingProps = {} as LoadingPropsType;\n uploadingProps.spinnerAriaValueText = 'Loading';\n uploadingProps.spinnerAriaLabel = 'Uploading data';\n uploadingProps.isLoading = isUploading;\n\n return (\n <>\n <Flex columnGap={{ default: 'columnGapSm' }}>\n <Button\n variant=\"primary\"\n id=\"primary-loading-button\"\n onClick={() => setIsPrimaryLoading(!isPrimaryLoading)}\n {...primaryLoadingProps}\n >\n {isPrimaryLoading ? 'Click to stop loading' : 'Click to start loading'}\n </Button>\n <Button\n variant=\"secondary\"\n onClick={() => setIsSecondaryLoading(!isSecondaryLoading)}\n {...secondaryLoadingProps}\n >\n {isSecondaryLoading ? 'Click to stop loading' : 'Click to start loading'}\n </Button>\n </Flex>\n <br />\n <Button\n variant=\"plain\"\n {...(!isUploading && { 'aria-label': 'Upload' })}\n onClick={() => setIsUploading(!isUploading)}\n icon={<UploadIcon />}\n {...uploadingProps}\n />\n <br />\n <br />\n <Button variant=\"link\" isInline onClick={() => setIsInlineLoading(!isInlineLoading)} {...inlineLoadingProps}>\n {isInlineLoading ? 'Pause loading logs' : 'Resume loading logs'}\n </Button>\n </>\n );\n};\n","title":"Progress indicators","lang":"ts","className":""}}>
341
+
342
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
343
+ {`Progress indicators can be added to buttons to identify that an action is in progress after a click.`}
344
+ </p>
345
+ </Example>,
346
+ 'Links as buttons': props =>
347
+ <Example {...pageData} {...props} {...{"code":"import { Button, Flex } from '@patternfly/react-core';\n\nexport const ButtonLinks: React.FunctionComponent = () => (\n <Flex>\n <Button component=\"a\" href=\"https://www.patternfly.org/\" target=\"_blank\" variant=\"primary\">\n Link to PatternFly home\n </Button>\n <Button component=\"a\" href=\"https://www.patternfly.org/\" target=\"_blank\" variant=\"secondary\">\n Secondary link to PatternFly home\n </Button>\n <Button isDisabled component=\"a\" href=\"https://www.patternfly.org/\" target=\"_blank\" variant=\"tertiary\">\n Tertiary link to PatternFly home\n </Button>\n <Button component=\"a\" href=\"https://www.patternfly.org/\" variant=\"link\">\n Jump to PatternFly home\n </Button>\n </Flex>\n);\n","title":"Links as buttons","lang":"ts","className":""}}>
348
+
349
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
350
+ {`Buttons that link to another resource may take the form of primary, secondary, tertiary, or link variants. Use `}
351
+
352
+ <code {...{"className":"ws-code "}}>
353
+ {`component="a"`}
354
+ </code>
355
+ {` and an `}
356
+
357
+ <code {...{"className":"ws-code "}}>
358
+ {`href`}
359
+ </code>
360
+ {` property to designate the button's target link.`}
361
+ </p>
362
+ </Example>,
363
+ 'Inline link as span': props =>
364
+ <Example {...pageData} {...props} {...{"code":"import { Fragment } from 'react';\nimport { Button, KeyTypes } from '@patternfly/react-core';\n\nconst handleKeydown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n const { key } = event;\n const isEnterKey: boolean = key === KeyTypes.Enter;\n const isEnterOrSpaceKey: boolean = isEnterKey || key === KeyTypes.Space;\n\n if (isEnterOrSpaceKey) {\n event.preventDefault();\n alert(`${isEnterKey ? 'Enter' : 'Space'} key default behavior stopped by onKeyDown`);\n }\n};\n\nexport const ButtonInlineSpanLink: React.FunctionComponent = () => (\n <Fragment>\n <p>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n <Button variant=\"link\" isInline component=\"span\">\n This is long button text that needs to be a span so that it will wrap inline with the text around it.\n </Button>\n Sed hendrerit nisi in cursus maximus. Ut malesuada nisi turpis, in condimentum velit elementum non.\n </p>\n\n <br />\n\n <p>\n Note that using a <b>span</b> as a button does not fire the <b>onclick</b> event for Enter or Space keys.\n <Button variant=\"link\" isInline component=\"span\" onKeyDown={handleKeydown}>\n An <b>onKeyDown</b> event listener is needed for Enter and Space key presses to prevent their default behavior\n and trigger your code.\n </Button>\n Pressing the Enter or Space keys on the inline link as span above demonstrates this by triggering an alert.\n </p>\n </Fragment>\n);\n","title":"Inline link as span","lang":"ts","className":""}}>
365
+
366
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
367
+ {`Inline links should use `}
368
+
369
+ <code {...{"className":"ws-code "}}>
370
+ {`component="span"`}
371
+ </code>
372
+ {` and the `}
373
+
374
+ <code {...{"className":"ws-code "}}>
375
+ {`isInline`}
376
+ </code>
377
+ {` property to wrap inline with surrounding text.`}
378
+ </p>
379
+ </Example>,
380
+ 'Custom component': props =>
381
+ <Example {...pageData} {...props} {...{"code":"import { Button } from '@patternfly/react-core';\n\nexport const ButtonCustomComponent: React.FunctionComponent = () => (\n <Button variant=\"link\" component={(props: any) => <a {...props} href=\"#\" />}>\n Router link\n </Button>\n);\n","title":"Custom component","lang":"ts","className":""}}>
382
+
383
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
384
+ {`In addition to being able to pass a string to the `}
385
+
386
+ <code {...{"className":"ws-code "}}>
387
+ {`component`}
388
+ </code>
389
+ {` property, you can provide more fine-tuned customization by passing a callback that returns a component.`}
390
+ </p>
391
+ </Example>,
392
+ 'Aria-disabled examples': props =>
393
+ <Example {...pageData} {...props} {...{"code":"import { Button, Flex, Tooltip } from '@patternfly/react-core';\nimport RhUiAddCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-add-circle-fill-icon';\n\nexport const ButtonAriaDisabled: React.FunctionComponent = () => (\n <>\n <Flex columnGap={{ default: 'columnGapSm' }}>\n <Button isAriaDisabled>Primary aria disabled</Button>\n <Button isAriaDisabled variant=\"link\" icon={<RhUiAddCircleFillIcon />}>\n Link aria disabled\n </Button>\n <Button isAriaDisabled variant=\"link\" isInline>\n Inline link aria disabled\n </Button>\n </Flex>\n <br />\n <Flex columnGap={{ default: 'columnGapSm' }}>\n <Tooltip content=\"Aria-disabled buttons are like disabled buttons, but focusable. Allows for tooltip support.\">\n <Button isAriaDisabled>Primary button with tooltip</Button>\n </Tooltip>\n <Tooltip content=\"Aria-disabled link as button with tooltip\">\n <Button component=\"a\" isAriaDisabled href=\"https://www.patternfly.org/\" target=\"_blank\" variant=\"secondary\">\n Secondary link as button to PatternFly home\n </Button>\n </Tooltip>\n </Flex>\n </>\n);\n","title":"Aria-disabled examples","lang":"ts","className":""}}>
394
+
395
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
396
+
397
+ <PatternflyThemeLink {...{"to":"https://www.w3.org/WAI/standards-guidelines/aria/","className":""}}>
398
+ {`Accessible Rich Internet Applications (ARIA)`}
399
+ </PatternflyThemeLink>
400
+ {` is a set of roles and attributes specified by the World Wide Web Consortium. ARIA defines ways to make web content and web applications more accessible to people with disabilities.`}
401
+ </p>
402
+
403
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
404
+ {`Buttons that are aria-disabled are similar to normal disabled buttons, except they can receive focus. Every button variant can be aria-disabled using the `}
405
+
406
+ <code {...{"className":"ws-code "}}>
407
+ {`isAriaDisabled`}
408
+ </code>
409
+ {` property.`}
410
+ </p>
411
+
412
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
413
+ {`Unlike normal disabled buttons, aria-disabled buttons can support tooltips. Furthermore, aria-disabled buttons can operate as links, which also support tooltips.`}
414
+ </p>
415
+ </Example>,
416
+ 'Button with count': props =>
417
+ <Example {...pageData} {...props} {...{"code":"import { BadgeCountObject, Button, Flex } from '@patternfly/react-core';\n\nexport const ButtonWithCount: React.FunctionComponent = () => {\n const badgeCountObjectNotRead: BadgeCountObject = {\n isRead: false,\n count: 7,\n className: 'custom-badge-unread'\n };\n\n const badgeCountObjectRead: BadgeCountObject = {\n isRead: true,\n count: 10,\n className: 'custom-badge-read'\n };\n\n return (\n <>\n <div>Unread:</div>\n <Flex columnGap={{ default: 'columnGapSm' }}>\n <Button variant=\"primary\" countOptions={badgeCountObjectNotRead}>\n Issues\n </Button>\n <Button variant=\"secondary\" countOptions={badgeCountObjectNotRead}>\n Issues\n </Button>\n <Button variant=\"tertiary\" countOptions={badgeCountObjectNotRead}>\n Issues\n </Button>\n <Button variant=\"control\" countOptions={badgeCountObjectNotRead}>\n Issues\n </Button>\n <Button variant=\"link\" countOptions={badgeCountObjectNotRead}>\n Issues\n </Button>\n </Flex>\n <br />\n <div>Unread disabled:</div>\n <Flex columnGap={{ default: 'columnGapSm' }}>\n <Button variant=\"primary\" isDisabled countOptions={badgeCountObjectNotRead}>\n Issues\n </Button>\n <Button variant=\"secondary\" isDisabled countOptions={badgeCountObjectNotRead}>\n Issues\n </Button>\n <Button variant=\"tertiary\" isDisabled countOptions={badgeCountObjectNotRead}>\n Issues\n </Button>\n <Button variant=\"control\" isDisabled countOptions={badgeCountObjectNotRead}>\n Issues\n </Button>\n <Button variant=\"link\" isDisabled countOptions={badgeCountObjectNotRead}>\n Issues\n </Button>\n </Flex>\n <br />\n <div>Read:</div>\n <Flex columnGap={{ default: 'columnGapSm' }}>\n <Button variant=\"primary\" countOptions={badgeCountObjectRead}>\n Issues\n </Button>\n <Button variant=\"secondary\" countOptions={badgeCountObjectRead}>\n Issues\n </Button>\n <Button variant=\"tertiary\" countOptions={badgeCountObjectRead}>\n Issues\n </Button>\n <Button variant=\"control\" countOptions={badgeCountObjectRead}>\n Issues\n </Button>\n <Button variant=\"link\" countOptions={badgeCountObjectRead}>\n Issues\n </Button>\n </Flex>\n <br />\n <div>Read disabled:</div>\n <Flex columnGap={{ default: 'columnGapSm' }}>\n <Button variant=\"primary\" isDisabled countOptions={badgeCountObjectRead}>\n Issues\n </Button>\n <Button variant=\"secondary\" isDisabled countOptions={badgeCountObjectRead}>\n Issues\n </Button>\n <Button variant=\"tertiary\" isDisabled countOptions={badgeCountObjectRead}>\n Issues\n </Button>\n <Button variant=\"control\" isDisabled countOptions={badgeCountObjectRead}>\n Issues\n </Button>\n <Button variant=\"link\" isDisabled countOptions={badgeCountObjectRead}>\n Issues\n </Button>\n </Flex>\n </>\n );\n};\n","title":"Button with count","lang":"ts","className":""}}>
418
+
419
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
420
+ {`Buttons can display a `}
421
+
422
+ <code {...{"className":"ws-code "}}>
423
+ {`count`}
424
+ </code>
425
+ {` in the form of a badge to indicate some value or number by passing in the `}
426
+
427
+ <code {...{"className":"ws-code "}}>
428
+ {`countOptions`}
429
+ </code>
430
+ {` prop as a `}
431
+
432
+ <code {...{"className":"ws-code "}}>
433
+ {`BadgeCountObject`}
434
+ </code>
435
+ {` object. The `}
436
+
437
+ <code {...{"className":"ws-code "}}>
438
+ {`BadgeCountObject`}
439
+ </code>
440
+ {` object will handle `}
441
+
442
+ <code {...{"className":"ws-code "}}>
443
+ {`count`}
444
+ </code>
445
+ {`, `}
446
+
447
+ <code {...{"className":"ws-code "}}>
448
+ {`isRead`}
449
+ </code>
450
+ {`, and `}
451
+
452
+ <code {...{"className":"ws-code "}}>
453
+ {`className`}
454
+ </code>
455
+ {` props for the badge count.`}
456
+ </p>
457
+ </Example>,
458
+ 'Plain with no padding': props =>
459
+ <Example {...pageData} {...props} {...{"code":"import { Button } from '@patternfly/react-core';\nimport RhUiQuestionMarkCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-question-mark-circle-fill-icon';\n\nexport const ButtonPlainHasNoPadding: React.FunctionComponent = () => (\n <p>\n This is an example of a button\n <Button variant=\"plain\" hasNoPadding aria-label=\"More info\" icon={<RhUiQuestionMarkCircleFillIcon />} />\n which is placed inline with text\n </p>\n);\n","title":"Plain with no padding","lang":"ts","className":""}}>
460
+
461
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
462
+ {`To display a plain/icon button inline with text, use `}
463
+
464
+ <code {...{"className":"ws-code "}}>
465
+ {`noPadding`}
466
+ </code>
467
+ {` prop in addition to `}
468
+
469
+ <code {...{"className":"ws-code "}}>
470
+ {`variant="plain"`}
471
+ </code>
472
+ {`.`}
473
+ </p>
474
+ </Example>,
475
+ 'Stateful': props =>
476
+ <Example {...pageData} {...props} {...{"code":"import { Button, Flex } from '@patternfly/react-core';\nimport RhUiNotificationFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-notification-fill-icon';\n\nexport const ButtonStateful: React.FunctionComponent = () => (\n <Flex>\n <div>\n <div>\n <strong>Read</strong>\n </div>\n <Button variant=\"stateful\" state=\"read\" icon={<RhUiNotificationFillIcon />}>\n 10 <span className=\"pf-v6-screen-reader\">items</span>\n </Button>\n </div>\n <div>\n <div>\n <strong>Unread</strong>\n </div>\n <Button variant=\"stateful\" state=\"unread\" icon={<RhUiNotificationFillIcon />}>\n 10 <span className=\"pf-v6-screen-reader\">unread items</span>\n </Button>\n </div>\n <div>\n <div>\n <strong>Attention</strong>\n </div>\n <Button variant=\"stateful\" state=\"attention\" icon={<RhUiNotificationFillIcon />}>\n 10 <span className=\"pf-v6-screen-reader\">unread items, needs attention</span>\n </Button>\n </div>\n </Flex>\n);\n","title":"Stateful","lang":"ts","className":""}}>
477
+
478
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
479
+ {`Stateful buttons are ideal for displaying the state of notifications. Use `}
480
+
481
+ <code {...{"className":"ws-code "}}>
482
+ {`variant="stateful"`}
483
+ </code>
484
+ {` alongside with the `}
485
+
486
+ <code {...{"className":"ws-code "}}>
487
+ {`state`}
488
+ </code>
489
+ {` property, which can have these 3 values: `}
490
+
491
+ <code {...{"className":"ws-code "}}>
492
+ {`read`}
493
+ </code>
494
+ {`, `}
495
+
496
+ <code {...{"className":"ws-code "}}>
497
+ {`unread`}
498
+ </code>
499
+ {` (used as default) and `}
500
+
501
+ <code {...{"className":"ws-code "}}>
502
+ {`attention`}
503
+ </code>
504
+ {` (which means unread and requires attention).`}
505
+ </p>
506
+ </Example>,
507
+ 'Circle buttons': props =>
508
+ <Example {...pageData} {...props} {...{"code":"import { Button, Flex } from '@patternfly/react-core';\nimport RhMicronsCloseIcon from '@patternfly/react-icons/dist/esm/icons/rh-microns-close-icon';\nimport RhUiAddCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-add-circle-fill-icon';\nimport RhUiCopyFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-copy-fill-icon';\nimport RhUiNotificationFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-notification-fill-icon';\nimport UploadIcon from '@patternfly/react-icons/dist/esm/icons/upload-icon';\n\ninterface LoadingPropsType {\n spinnerAriaValueText: string;\n spinnerAriaLabelledBy?: string;\n spinnerAriaLabel?: string;\n isLoading: boolean;\n}\n\nexport const ButtonCircle: React.FunctionComponent = () => {\n const [isUploading, setIsUploading] = useState<boolean>(false);\n\n const uploadingProps = {} as LoadingPropsType;\n uploadingProps.spinnerAriaValueText = 'Loading circle variant example';\n uploadingProps.spinnerAriaLabel = 'Uploading circle variant example data';\n uploadingProps.isLoading = isUploading;\n\n return (\n <Flex columnGap={{ default: 'columnGapSm' }}>\n <Button isCircle icon={<RhUiAddCircleFillIcon />} aria-label=\"Add primary circle variant example\" />\n <Button\n variant=\"secondary\"\n isCircle\n icon={<RhUiAddCircleFillIcon />}\n aria-label=\"Add secondary circle variant example\"\n />\n <Button\n variant=\"tertiary\"\n isCircle\n icon={<RhUiAddCircleFillIcon />}\n aria-label=\"Add tertiary circle variant example\"\n />\n <Button\n variant=\"danger\"\n isCircle\n icon={<RhUiAddCircleFillIcon />}\n aria-label=\"Add danger circle variant example\"\n />\n <Button\n variant=\"warning\"\n isCircle\n icon={<RhUiAddCircleFillIcon />}\n aria-label=\"Add warning circle variant example\"\n />\n <Button variant=\"link\" isCircle icon={<RhUiAddCircleFillIcon />} aria-label=\"Add link circle variant example\" />\n <Button variant=\"control\" isCircle icon={<RhUiCopyFillIcon />} aria-label=\"Copy control circle variant example\" />\n <Button variant=\"plain\" isCircle icon={<RhMicronsCloseIcon />} aria-label=\"Remove plain circle variant example\" />\n <Button\n variant=\"stateful\"\n isCircle\n icon={<RhUiNotificationFillIcon />}\n aria-label=\"Stateful unread circle variant example\"\n />\n <Button\n variant=\"stateful\"\n state=\"read\"\n isCircle\n icon={<RhUiNotificationFillIcon />}\n aria-label=\"Stateful read circle variant example\"\n />\n <Button\n variant=\"stateful\"\n state=\"attention\"\n isCircle\n icon={<RhUiNotificationFillIcon />}\n aria-label=\"Stateful attention circle variant example\"\n />\n <Button\n variant=\"plain\"\n isCircle\n {...(!isUploading && { 'aria-label': 'Upload circle variant example' })}\n onClick={() => setIsUploading(!isUploading)}\n icon={<UploadIcon />}\n {...uploadingProps}\n />\n </Flex>\n );\n};\n","title":"Circle buttons","lang":"ts","className":""}}>
509
+
510
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
511
+ {`Pass `}
512
+
513
+ <code {...{"className":"ws-code "}}>
514
+ {`isCircle`}
515
+ </code>
516
+ {` to a button to modify its styling from simply rounded corners to complete circles. Circle buttons are intended for buttons that only contain an icon and adequate accessible naming.`}
517
+ </p>
518
+ </Example>,
519
+ 'Favorite': props =>
520
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Button } from '@patternfly/react-core';\n\nexport const ButtonFavorite: React.FunctionComponent = () => {\n const [isFavorited, setIsFavorited] = useState(false);\n const toggleFavorite = () => {\n setIsFavorited(!isFavorited);\n };\n return (\n <Button\n variant=\"plain\"\n aria-label={isFavorited ? 'Favorite example favorited' : 'Favorite example not favorited'}\n isFavorite\n isFavorited={isFavorited}\n onClick={toggleFavorite}\n />\n );\n};\n","title":"Favorite","lang":"ts","className":""}}>
521
+
522
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
523
+ {`You can pass both the `}
524
+
525
+ <code {...{"className":"ws-code "}}>
526
+ {`isFavorite`}
527
+ </code>
528
+ {` and `}
529
+
530
+ <code {...{"className":"ws-code "}}>
531
+ {`variant="plain"`}
532
+ </code>
533
+ {` properties into the `}
534
+
535
+ <code {...{"className":"ws-code "}}>
536
+ {`<Button>`}
537
+ </code>
538
+ {` to create a favorite button. Passing the `}
539
+
540
+ <code {...{"className":"ws-code "}}>
541
+ {`isFavorited`}
542
+ </code>
543
+ {` property will determine the current favorited state and update styling accordingly.`}
544
+ </p>
545
+ </Example>,
546
+ 'Settings': props =>
547
+ <Example {...pageData} {...props} {...{"code":"import { Button, Flex } from '@patternfly/react-core';\n\nexport const ButtonSettings: React.FunctionComponent = () => (\n <Flex>\n <Button isSettings variant=\"plain\" aria-label=\"Settings\" />\n <Button isSettings variant=\"control\">\n Settings\n </Button>\n </Flex>\n);\n","title":"Settings","lang":"ts","className":""}}>
548
+
549
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
550
+ {`For a "settings" button with animations on hover and focus, you can pass the `}
551
+
552
+ <code {...{"className":"ws-code "}}>
553
+ {`isSettings`}
554
+ </code>
555
+ {` property into either a `}
556
+
557
+ <code {...{"className":"ws-code "}}>
558
+ {`variant="plain"`}
559
+ </code>
560
+ {` or `}
561
+
562
+ <code {...{"className":"ws-code "}}>
563
+ {`variant="control"`}
564
+ </code>
565
+ {` button.`}
566
+ </p>
567
+ </Example>,
568
+ 'Hamburger': props =>
569
+ <Example {...pageData} {...props} {...{"code":"import { Button, Flex } from '@patternfly/react-core';\n\nexport const ButtonHamburger: React.FunctionComponent = () => (\n <Flex>\n <Button variant=\"plain\" isExpanded={false} aria-label=\"Hamburger example\" isHamburger />\n <Button variant=\"plain\" isExpanded={false} aria-label=\"Hamburger example\" isHamburger hamburgerVariant=\"expand\" />\n <Button variant=\"plain\" isExpanded={true} aria-label=\"Hamburger example\" isHamburger hamburgerVariant=\"collapse\" />\n </Flex>\n);\n","title":"Hamburger","lang":"ts","className":""}}>
570
+
571
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
572
+ {`For a "hamburger" button (`}
573
+
574
+ <code {...{"className":"ws-code "}}>
575
+ {`fa-bars`}
576
+ </code>
577
+ {`) that will animate based on the `}
578
+
579
+ <code {...{"className":"ws-code "}}>
580
+ {`hamburgerVariant`}
581
+ </code>
582
+ {` property, you can pass the `}
583
+
584
+ <code {...{"className":"ws-code "}}>
585
+ {`isHamburger`}
586
+ </code>
587
+ {` property. This will render the default icon for a hamburger button, and updating the `}
588
+
589
+ <code {...{"className":"ws-code "}}>
590
+ {`hamburgerVariant`}
591
+ </code>
592
+ {` property with a value of either "expand" or "collapse" will change the icon accordingly with an animation on hover and focus.`}
593
+ </p>
594
+
595
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
596
+ {`When used within a PatternFly `}
597
+
598
+ <code {...{"className":"ws-code "}}>
599
+ {`<Masthead>`}
600
+ </code>
601
+ {`, the animations and icon updates will occur automatically. See one of our `}
602
+
603
+ <PatternflyThemeLink {...{"to":"/components/page/react-demos","className":""}}>
604
+ {`full screen page demos`}
605
+ </PatternflyThemeLink>
606
+ {` to see this in action.`}
607
+ </p>
608
+ </Example>
609
+ };
610
+
611
+ const Component = () => (
612
+ <React.Fragment>
613
+ <AutoLinkHeader {...{"id":"examples","headingLevel":"h2","className":"ws-title ws-h2"}}>
614
+ {`Examples`}
615
+ </AutoLinkHeader>
616
+ {React.createElement(pageData.examples["Variant examples"])}
617
+ <table {...{"className":"ws-table pf-v6-c-table pf-m-grid-lg pf-m-compact","role":"grid"}}>
618
+ <thead {...{"className":"pf-v6-c-table__thead"}}>
619
+ <tr {...{"role":"row","className":"pf-v6-c-table__tr"}}>
620
+ <th {...{"className":"undefined pf-v6-c-table__th pf-m-wrap","role":"columnheader","scope":"col"}}>
621
+ <div {...{"className":""}}>
622
+ {`Variant`}
623
+ </div>
624
+ </th>
625
+ <th {...{"className":"undefined pf-v6-c-table__th pf-m-wrap","role":"columnheader","scope":"col"}}>
626
+ <div {...{"className":""}}>
627
+ {`Description`}
628
+ </div>
629
+ </th>
630
+ </tr>
631
+ </thead>
632
+ <tbody {...{"role":"rowgroup","className":"pf-v6-c-table__tbody"}}>
633
+ <tr {...{"role":"row","className":"pf-v6-c-table__tr"}}>
634
+ <td {...{"role":"cell","className":"pf-v6-c-table__td","data-label":"Variant"}}>
635
+ <div {...{"className":""}}>
636
+ {`Primary`}
637
+ </div>
638
+ </td>
639
+ <td {...{"role":"cell","className":"pf-v6-c-table__td","data-label":"Description"}}>
640
+ <div {...{"className":""}}>
641
+ {`Primary buttons are the most visually prominent variant. Use for the most important call to action.`}
642
+ </div>
643
+ </td>
644
+ </tr>
645
+ <tr {...{"role":"row","className":"pf-v6-c-table__tr"}}>
646
+ <td {...{"role":"cell","className":"pf-v6-c-table__td","data-label":"Variant"}}>
647
+ <div {...{"className":""}}>
648
+ {`Secondary`}
649
+ </div>
650
+ </td>
651
+ <td {...{"role":"cell","className":"pf-v6-c-table__td","data-label":"Description"}}>
652
+ <div {...{"className":""}}>
653
+ {`Secondary buttons are less visually prominant than primary buttons. Use for general actions on a page that require less emphasis than primary buttons.`}
654
+ </div>
655
+ </td>
656
+ </tr>
657
+ <tr {...{"role":"row","className":"pf-v6-c-table__tr"}}>
658
+ <td {...{"role":"cell","className":"pf-v6-c-table__td","data-label":"Variant"}}>
659
+ <div {...{"className":""}}>
660
+ {`Tertiary`}
661
+ </div>
662
+ </td>
663
+ <td {...{"role":"cell","className":"pf-v6-c-table__td","data-label":"Description"}}>
664
+ <div {...{"className":""}}>
665
+ {`Tertiary buttons are the least visually prominent variant. Use to retain a classic button format with less emphasis than primary or secondary buttons.`}
666
+ </div>
667
+ </td>
668
+ </tr>
669
+ <tr {...{"role":"row","className":"pf-v6-c-table__tr"}}>
670
+ <td {...{"role":"cell","className":"pf-v6-c-table__td","data-label":"Variant"}}>
671
+ <div {...{"className":""}}>
672
+ {`Danger`}
673
+ </div>
674
+ </td>
675
+ <td {...{"role":"cell","className":"pf-v6-c-table__td","data-label":"Description"}}>
676
+ <div {...{"className":""}}>
677
+ {`Danger buttons may be used for actions that are potentially destructive or difficult/impossible to undo. Danger is an independent variant, but all button variants may use the the `}
678
+ <code {...{"className":"ws-code "}}>
679
+ {`isDanger`}
680
+ </code>
681
+ {` property to apply similar styling.`}
682
+ </div>
683
+ </td>
684
+ </tr>
685
+ <tr {...{"role":"row","className":"pf-v6-c-table__tr"}}>
686
+ <td {...{"role":"cell","className":"pf-v6-c-table__td","data-label":"Variant"}}>
687
+ <div {...{"className":""}}>
688
+ {`Warning`}
689
+ </div>
690
+ </td>
691
+ <td {...{"role":"cell","className":"pf-v6-c-table__td","data-label":"Description"}}>
692
+ <div {...{"className":""}}>
693
+ {`Warning buttons may be used for actions that change an important setting or behavior, but not in a destructive or irreversible way.`}
694
+ </div>
695
+ </td>
696
+ </tr>
697
+ <tr {...{"role":"row","className":"pf-v6-c-table__tr"}}>
698
+ <td {...{"role":"cell","className":"pf-v6-c-table__td","data-label":"Variant"}}>
699
+ <div {...{"className":""}}>
700
+ {`Link`}
701
+ </div>
702
+ </td>
703
+ <td {...{"role":"cell","className":"pf-v6-c-table__td","data-label":"Description"}}>
704
+ <div {...{"className":""}}>
705
+ {`Links are labeled, but have no background or border. Use for actions that require less emphasis, actions that navigate users to another page within the same window, and/or actions that navigate to external pages in a new window. Links may be placed inline with text using the `}
706
+ <code {...{"className":"ws-code "}}>
707
+ {`isInline`}
708
+ </code>
709
+ {` property.`}
710
+ </div>
711
+ </td>
712
+ </tr>
713
+ <tr {...{"role":"row","className":"pf-v6-c-table__tr"}}>
714
+ <td {...{"role":"cell","className":"pf-v6-c-table__td","data-label":"Variant"}}>
715
+ <div {...{"className":""}}>
716
+ {`Plain`}
717
+ </div>
718
+ </td>
719
+ <td {...{"role":"cell","className":"pf-v6-c-table__td","data-label":"Description"}}>
720
+ <div {...{"className":""}}>
721
+ {`Plain buttons have no styling and are intended to be labeled with icons.`}
722
+ </div>
723
+ </td>
724
+ </tr>
725
+ <tr {...{"role":"row","className":"pf-v6-c-table__tr"}}>
726
+ <td {...{"role":"cell","className":"pf-v6-c-table__td","data-label":"Variant"}}>
727
+ <div {...{"className":""}}>
728
+ {`Control`}
729
+ </div>
730
+ </td>
731
+ <td {...{"role":"cell","className":"pf-v6-c-table__td","data-label":"Description"}}>
732
+ <div {...{"className":""}}>
733
+ {`Control buttons can be labeled with text or icons. Primarily intended to be paired with other controls in an `}
734
+ <PatternflyThemeLink {...{"to":"/components/input-group","className":""}}>
735
+ {`input group`}
736
+ </PatternflyThemeLink>
737
+ {`.`}
738
+ </div>
739
+ </td>
740
+ </tr>
741
+ <tr {...{"role":"row","className":"pf-v6-c-table__tr"}}>
742
+ <td {...{"role":"cell","className":"pf-v6-c-table__td","data-label":"Variant"}}>
743
+ <div {...{"className":""}}>
744
+ {`Stateful`}
745
+ </div>
746
+ </td>
747
+ <td {...{"role":"cell","className":"pf-v6-c-table__td","data-label":"Description"}}>
748
+ <div {...{"className":""}}>
749
+ {`Stateful buttons are ideal for displaying the state of notifications. They have 3 states: `}
750
+ <code {...{"className":"ws-code "}}>
751
+ {`read`}
752
+ </code>
753
+ {`, `}
754
+ <code {...{"className":"ws-code "}}>
755
+ {`unread`}
756
+ </code>
757
+ {` and `}
758
+ <code {...{"className":"ws-code "}}>
759
+ {`attention`}
760
+ </code>
761
+ {`.`}
762
+ </div>
763
+ </td>
764
+ </tr>
765
+ </tbody>
766
+ </table>
767
+ {React.createElement(pageData.examples["Disabled buttons"])}
768
+ {React.createElement(pageData.examples["Small buttons"])}
769
+ {React.createElement(pageData.examples["Call to action (CTA) buttons"])}
770
+ {React.createElement(pageData.examples["Block level buttons"])}
771
+ {React.createElement(pageData.examples["Progress indicators"])}
772
+ {React.createElement(pageData.examples["Links as buttons"])}
773
+ {React.createElement(pageData.examples["Inline link as span"])}
774
+ {React.createElement(pageData.examples["Custom component"])}
775
+ {React.createElement(pageData.examples["Aria-disabled examples"])}
776
+ {React.createElement(pageData.examples["Button with count"])}
777
+ {React.createElement(pageData.examples["Plain with no padding"])}
778
+ {React.createElement(pageData.examples["Stateful"])}
779
+ {React.createElement(pageData.examples["Circle buttons"])}
780
+ <AutoLinkHeader {...{"id":"animated-examples","headingLevel":"h2","className":"ws-title ws-h2"}}>
781
+ {`Animated examples`}
782
+ </AutoLinkHeader>
783
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
784
+ {`The following `}
785
+ <code {...{"className":"ws-code "}}>
786
+ {`<Button>`}
787
+ </code>
788
+ {` implementations have animations built into them. When using one of the following implementations, the `}
789
+ <code {...{"className":"ws-code "}}>
790
+ {`icon`}
791
+ </code>
792
+ {` property will be overridden due to the animations needing specific icons internally.`}
793
+ </p>
794
+ {React.createElement(pageData.examples["Favorite"])}
795
+ {React.createElement(pageData.examples["Settings"])}
796
+ {React.createElement(pageData.examples["Hamburger"])}
797
+ <AutoLinkHeader {...{"id":"using-router-links","headingLevel":"h2","className":"ws-title ws-h2"}}>
798
+ {`Using router links`}
799
+ </AutoLinkHeader>
800
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
801
+ {`Router links can be used for in-app linking in React environments to prevent page reloading. To use a `}
802
+ <code {...{"className":"ws-code "}}>
803
+ {`Link`}
804
+ </code>
805
+ {` component from a router package, you can follow our `}
806
+ <PatternflyThemeLink {...{"to":"#custom-component","className":""}}>
807
+ {`custom component example`}
808
+ </PatternflyThemeLink>
809
+ {` and pass a callback to the `}
810
+ <code {...{"className":"ws-code "}}>
811
+ {`component`}
812
+ </code>
813
+ {` property of the `}
814
+ <code {...{"className":"ws-code "}}>
815
+ {`Button`}
816
+ </code>
817
+ {`:`}
818
+ </p>
819
+ <Example {...{"code":"<Button variant=\"link\" component={(props: any) => <Link {...props} to=\"#\" />}>\n Router link\n</Button>","lang":"nolive","className":""}}>
820
+ </Example>
821
+ </React.Fragment>
822
+ );
823
+ Component.displayName = 'ComponentsButtonReactDocs';
824
+ Component.pageData = pageData;
825
+
826
+ export default Component;