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

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 +6 -0
  2. package/LICENSE +21 -0
  3. package/package.json +12 -11
  4. package/patternfly-docs/generated/components/about-modal/react.js +0 -149
  5. package/patternfly-docs/generated/components/accordion/react.js +0 -262
  6. package/patternfly-docs/generated/components/action-list/react.js +0 -144
  7. package/patternfly-docs/generated/components/alert/react-demos.js +0 -56
  8. package/patternfly-docs/generated/components/alert/react.js +0 -1433
  9. package/patternfly-docs/generated/components/avatar/react.js +0 -166
  10. package/patternfly-docs/generated/components/back-to-top/react-demos.js +0 -60
  11. package/patternfly-docs/generated/components/back-to-top/react.js +0 -77
  12. package/patternfly-docs/generated/components/backdrop/react.js +0 -64
  13. package/patternfly-docs/generated/components/background-image/react.js +0 -62
  14. package/patternfly-docs/generated/components/badge/react.js +0 -97
  15. package/patternfly-docs/generated/components/banner/react-demos.js +0 -57
  16. package/patternfly-docs/generated/components/banner/react.js +0 -148
  17. package/patternfly-docs/generated/components/brand/react.js +0 -142
  18. package/patternfly-docs/generated/components/breadcrumb/react.js +0 -206
  19. package/patternfly-docs/generated/components/button/react-demos.js +0 -57
  20. package/patternfly-docs/generated/components/button/react.js +0 -826
  21. package/patternfly-docs/generated/components/card/react-demos.js +0 -201
  22. package/patternfly-docs/generated/components/card/react.js +0 -1015
  23. package/patternfly-docs/generated/components/charts/area-chart/-Victory.js +0 -1350
  24. package/patternfly-docs/generated/components/charts/bar-chart/-Victory.js +0 -1334
  25. package/patternfly-docs/generated/components/charts/box-plot-chart/-Victory.js +0 -1282
  26. package/patternfly-docs/generated/components/charts/bullet-chart/-Victory.js +0 -848
  27. package/patternfly-docs/generated/components/charts/colors-for-charts/-Victory.js +0 -192
  28. package/patternfly-docs/generated/components/charts/donut-chart/-Victory.js +0 -426
  29. package/patternfly-docs/generated/components/charts/donut-utilization-chart/-Victory.js +0 -804
  30. package/patternfly-docs/generated/components/charts/legends/-Victory.js +0 -3230
  31. package/patternfly-docs/generated/components/charts/line-chart/-Victory.js +0 -1178
  32. package/patternfly-docs/generated/components/charts/line-chart/ECharts.js +0 -525
  33. package/patternfly-docs/generated/components/charts/patterns/-Victory.js +0 -3382
  34. package/patternfly-docs/generated/components/charts/pie-chart/-Victory.js +0 -377
  35. package/patternfly-docs/generated/components/charts/resize-observer/-Victory.js +0 -2475
  36. package/patternfly-docs/generated/components/charts/sankey-chart/ECharts.js +0 -538
  37. package/patternfly-docs/generated/components/charts/scatter-chart/-Victory.js +0 -1551
  38. package/patternfly-docs/generated/components/charts/skeletons/-Victory.js +0 -4115
  39. package/patternfly-docs/generated/components/charts/sparkline-chart/-Victory.js +0 -955
  40. package/patternfly-docs/generated/components/charts/stack-chart/-Victory.js +0 -1173
  41. package/patternfly-docs/generated/components/charts/threshold-chart/-Victory.js +0 -1166
  42. package/patternfly-docs/generated/components/charts/tooltips/-Victory.js +0 -413
  43. package/patternfly-docs/generated/components/chip/react-deprecated.js +0 -323
  44. package/patternfly-docs/generated/components/clipboard-copy/react.js +0 -373
  45. package/patternfly-docs/generated/components/code-block/react.js +0 -148
  46. package/patternfly-docs/generated/components/code-editor/react.js +0 -659
  47. package/patternfly-docs/generated/components/compass/react-demos.js +0 -147
  48. package/patternfly-docs/generated/components/compass/react.js +0 -440
  49. package/patternfly-docs/generated/components/content/react.js +0 -248
  50. package/patternfly-docs/generated/components/data-list/react-demos.js +0 -90
  51. package/patternfly-docs/generated/components/data-list/react.js +0 -709
  52. package/patternfly-docs/generated/components/date-and-time/calendar-month/react.js +0 -283
  53. package/patternfly-docs/generated/components/date-and-time/date-and-time-picker/react-demos.js +0 -64
  54. package/patternfly-docs/generated/components/date-and-time/date-picker/react-demos.js +0 -83
  55. package/patternfly-docs/generated/components/date-and-time/date-picker/react.js +0 -395
  56. package/patternfly-docs/generated/components/date-and-time/time-picker/react.js +0 -241
  57. package/patternfly-docs/generated/components/description-list/react-demos.js +0 -58
  58. package/patternfly-docs/generated/components/description-list/react.js +0 -743
  59. package/patternfly-docs/generated/components/divider/react.js +0 -126
  60. package/patternfly-docs/generated/components/drag-and-drop/react-demos.js +0 -351
  61. package/patternfly-docs/generated/components/drag-and-drop/react-deprecated.js +0 -184
  62. package/patternfly-docs/generated/components/drag-and-drop/react.js +0 -137
  63. package/patternfly-docs/generated/components/drawer/react.js +0 -598
  64. package/patternfly-docs/generated/components/dual-list-selector/react-deprecated.js +0 -772
  65. package/patternfly-docs/generated/components/dual-list-selector/react.js +0 -594
  66. package/patternfly-docs/generated/components/empty-state/react.js +0 -199
  67. package/patternfly-docs/generated/components/expandable-section/react-demos.js +0 -65
  68. package/patternfly-docs/generated/components/expandable-section/react.js +0 -408
  69. package/patternfly-docs/generated/components/file-upload/multiple-file-upload/react-demos.js +0 -52
  70. package/patternfly-docs/generated/components/file-upload/multiple-file-upload/react.js +0 -398
  71. package/patternfly-docs/generated/components/file-upload/simple-file-upload/react.js +0 -749
  72. package/patternfly-docs/generated/components/forms/checkbox/react.js +0 -222
  73. package/patternfly-docs/generated/components/forms/form/react.js +0 -1106
  74. package/patternfly-docs/generated/components/forms/form-select/react.js +0 -208
  75. package/patternfly-docs/generated/components/forms/radio/react.js +0 -212
  76. package/patternfly-docs/generated/components/forms/text-area/react.js +0 -160
  77. package/patternfly-docs/generated/components/forms/text-input/react.js +0 -216
  78. package/patternfly-docs/generated/components/helper-text/react-demos.js +0 -180
  79. package/patternfly-docs/generated/components/helper-text/react.js +0 -164
  80. package/patternfly-docs/generated/components/hero/react.js +0 -88
  81. package/patternfly-docs/generated/components/hint/react.js +0 -169
  82. package/patternfly-docs/generated/components/icon/react.js +0 -215
  83. package/patternfly-docs/generated/components/input-group/react.js +0 -182
  84. package/patternfly-docs/generated/components/jump-links/react-demos.js +0 -154
  85. package/patternfly-docs/generated/components/jump-links/react.js +0 -212
  86. package/patternfly-docs/generated/components/label/react-demos.js +0 -57
  87. package/patternfly-docs/generated/components/label/react.js +0 -417
  88. package/patternfly-docs/generated/components/list/react.js +0 -175
  89. package/patternfly-docs/generated/components/login-page/react.js +0 -587
  90. package/patternfly-docs/generated/components/masthead/react-demos.js +0 -79
  91. package/patternfly-docs/generated/components/masthead/react.js +0 -291
  92. package/patternfly-docs/generated/components/menus/application-launcher/react-demos.js +0 -769
  93. package/patternfly-docs/generated/components/menus/context-selector/react-demos.js +0 -665
  94. package/patternfly-docs/generated/components/menus/custom-menus/react-demos.js +0 -187
  95. package/patternfly-docs/generated/components/menus/dropdown/react-templates.js +0 -163
  96. package/patternfly-docs/generated/components/menus/dropdown/react.js +0 -998
  97. package/patternfly-docs/generated/components/menus/menu/react.js +0 -1540
  98. package/patternfly-docs/generated/components/menus/menu-toggle/react.js +0 -747
  99. package/patternfly-docs/generated/components/menus/options-menu/react-demos.js +0 -508
  100. package/patternfly-docs/generated/components/menus/select/react-templates.js +0 -257
  101. package/patternfly-docs/generated/components/menus/select/react.js +0 -998
  102. package/patternfly-docs/generated/components/modal/react-deprecated.js +0 -554
  103. package/patternfly-docs/generated/components/modal/react.js +0 -597
  104. package/patternfly-docs/generated/components/navigation/react-demos.js +0 -356
  105. package/patternfly-docs/generated/components/navigation/react.js +0 -409
  106. package/patternfly-docs/generated/components/notification-badge/react.js +0 -196
  107. package/patternfly-docs/generated/components/notification-drawer/react-demos.js +0 -107
  108. package/patternfly-docs/generated/components/notification-drawer/react.js +0 -394
  109. package/patternfly-docs/generated/components/number-input/react.js +0 -210
  110. package/patternfly-docs/generated/components/overflow-menu/react.js +0 -274
  111. package/patternfly-docs/generated/components/page/react-demos.js +0 -149
  112. package/patternfly-docs/generated/components/page/react.js +0 -1352
  113. package/patternfly-docs/generated/components/pagination/react.js +0 -492
  114. package/patternfly-docs/generated/components/panel/react.js +0 -236
  115. package/patternfly-docs/generated/components/popover/react.js +0 -390
  116. package/patternfly-docs/generated/components/progress/react-demos.js +0 -59
  117. package/patternfly-docs/generated/components/progress/react.js +0 -283
  118. package/patternfly-docs/generated/components/progress-stepper/react-demos.js +0 -45
  119. package/patternfly-docs/generated/components/progress-stepper/react.js +0 -219
  120. package/patternfly-docs/generated/components/search-input/react-demos.js +0 -113
  121. package/patternfly-docs/generated/components/search-input/react.js +0 -263
  122. package/patternfly-docs/generated/components/sidebar/react.js +0 -236
  123. package/patternfly-docs/generated/components/simple-list/react.js +0 -200
  124. package/patternfly-docs/generated/components/skeleton/react-demos.js +0 -44
  125. package/patternfly-docs/generated/components/skeleton/react.js +0 -122
  126. package/patternfly-docs/generated/components/skip-to-content/react.js +0 -73
  127. package/patternfly-docs/generated/components/slider/react.js +0 -309
  128. package/patternfly-docs/generated/components/spinner/react.js +0 -111
  129. package/patternfly-docs/generated/components/switch/react.js +0 -163
  130. package/patternfly-docs/generated/components/table/react-demos.js +0 -355
  131. package/patternfly-docs/generated/components/table/react-deprecated.js +0 -1350
  132. package/patternfly-docs/generated/components/table/react.js +0 -3241
  133. package/patternfly-docs/generated/components/tabs/react-demos.js +0 -108
  134. package/patternfly-docs/generated/components/tabs/react.js +0 -1359
  135. package/patternfly-docs/generated/components/text-input-group/react-demos.js +0 -152
  136. package/patternfly-docs/generated/components/text-input-group/react.js +0 -278
  137. package/patternfly-docs/generated/components/tile/react-deprecated.js +0 -242
  138. package/patternfly-docs/generated/components/timestamp/react.js +0 -283
  139. package/patternfly-docs/generated/components/title/react.js +0 -94
  140. package/patternfly-docs/generated/components/toggle-group/react.js +0 -299
  141. package/patternfly-docs/generated/components/toolbar/react-demos.js +0 -66
  142. package/patternfly-docs/generated/components/toolbar/react.js +0 -932
  143. package/patternfly-docs/generated/components/tooltip/react.js +0 -241
  144. package/patternfly-docs/generated/components/tree-view/react.js +0 -429
  145. package/patternfly-docs/generated/components/truncate/react.js +0 -211
  146. package/patternfly-docs/generated/components/wizard/react-demos.js +0 -87
  147. package/patternfly-docs/generated/components/wizard/react-deprecated.js +0 -788
  148. package/patternfly-docs/generated/components/wizard/react.js +0 -986
  149. package/patternfly-docs/generated/developer-guides/open-ui-automation/react.js +0 -285
  150. package/patternfly-docs/generated/foundations-and-styles/layouts/bullseye/react.js +0 -70
  151. package/patternfly-docs/generated/foundations-and-styles/layouts/flex/react.js +0 -506
  152. package/patternfly-docs/generated/foundations-and-styles/layouts/gallery/react.js +0 -94
  153. package/patternfly-docs/generated/foundations-and-styles/layouts/grid/react.js +0 -272
  154. package/patternfly-docs/generated/foundations-and-styles/layouts/level/react.js +0 -87
  155. package/patternfly-docs/generated/foundations-and-styles/layouts/split/react.js +0 -124
  156. package/patternfly-docs/generated/foundations-and-styles/layouts/stack/react.js +0 -112
  157. package/patternfly-docs/generated/index.js +0 -1769
  158. package/patternfly-docs/generated/patterns/card-view/react-demos.js +0 -78
  159. package/patternfly-docs/generated/patterns/filters/react-demos.js +0 -141
  160. package/patternfly-docs/generated/patterns/password-generator/react-demos.js +0 -51
  161. package/patternfly-docs/generated/patterns/password-strength/react-demos.js +0 -61
  162. package/patternfly-docs/generated/patterns/primary-detail/react-demos.js +0 -124
  163. package/patternfly-docs/generated/patterns/right-to-left/react-demos.js +0 -81
@@ -1,201 +0,0 @@
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 { RhUiEllipsisVerticalFillIcon, RhMicronsCaretRightIcon, RhUiCheckCircleFillIcon, RhUiErrorFillIcon, RhMicronsExternalLinkIcon, RhUiInformationFillIcon, RhUiWarningFillIcon, RhUiNotificationFillIcon } from '@patternfly/react-icons';
5
- import { Table, Thead, Tbody, Tr, Th, Td, ExpandableRowContent } from '@patternfly/react-table';
6
- import { Chart, ChartAxis, ChartGroup, ChartVoronoiContainer, ChartStack, ChartBar, ChartTooltip, ChartDonutThreshold, ChartDonutUtilization, ChartArea, ChartContainer, ChartLabel } from '@patternfly/react-charts/victory';
7
- import chart_color_yellow_100 from '@patternfly/react-tokens/dist/esm/chart_color_yellow_100';
8
- import chart_color_yellow_300 from '@patternfly/react-tokens/dist/esm/chart_color_yellow_300';
9
- import chart_color_orange_300 from '@patternfly/react-tokens/dist/esm/chart_color_orange_300';
10
- import chart_color_red_orange_400 from '@patternfly/react-tokens/dist/esm/chart_color_red_orange_400';
11
- import cssGridTemplateColumnsMin from '@patternfly/react-tokens/dist/esm/l_gallery_GridTemplateColumns_min';
12
- import t_global_text_color_subtle from '@patternfly/react-tokens/dist/esm/t_global_text_color_subtle';
13
- import flex from '@patternfly/react-styles/css/utilities/Flex/flex';
14
- import text from '@patternfly/react-styles/css/utilities/Text/text';
15
- import sizing from '@patternfly/react-styles/css/utilities/Sizing/sizing';
16
- import accessibility from '@patternfly/react-styles/css/utilities/Accessibility/accessibility';
17
- import srcImportcardview from './react-demos/card-view.png';
18
- const pageData = {
19
- "id": "Card",
20
- "section": "components",
21
- "subsection": "",
22
- "deprecated": false,
23
- "template": false,
24
- "beta": false,
25
- "demo": false,
26
- "newImplementationLink": false,
27
- "source": "react-demos",
28
- "tabName": null,
29
- "slug": "/components/card/react-demos",
30
- "sourceLink": "https://github.com/patternfly/patternfly-react/blob/main/packages/react-core/src/demos/CardDemos.md",
31
- "relPath": "packages/react-core/src/demos/CardDemos.md",
32
- "examples": [
33
- "Horizontal card grid",
34
- "Horizontal split",
35
- "Details card",
36
- "Aggregate status card",
37
- "Status",
38
- "Status Tabbed",
39
- "Utilization card 1",
40
- "Utilization card 2",
41
- "Utilization card 3",
42
- "Utilization card 4",
43
- "Nested cards",
44
- "With accordion",
45
- "Trend card 1",
46
- "Trend card 2",
47
- "Log view",
48
- "Events view"
49
- ]
50
- };
51
- pageData.liveContext = {
52
- Fragment,
53
- useState,
54
- RhUiEllipsisVerticalFillIcon,
55
- RhMicronsCaretRightIcon,
56
- RhUiCheckCircleFillIcon,
57
- RhUiErrorFillIcon,
58
- RhMicronsExternalLinkIcon,
59
- RhUiInformationFillIcon,
60
- RhUiWarningFillIcon,
61
- RhUiNotificationFillIcon,
62
- Table,
63
- Thead,
64
- Tbody,
65
- Tr,
66
- Th,
67
- Td,
68
- ExpandableRowContent,
69
- Chart,
70
- ChartAxis,
71
- ChartGroup,
72
- ChartVoronoiContainer,
73
- ChartStack,
74
- ChartBar,
75
- ChartTooltip,
76
- ChartDonutThreshold,
77
- ChartDonutUtilization,
78
- ChartArea,
79
- ChartContainer,
80
- ChartLabel,
81
- chart_color_yellow_100,
82
- chart_color_yellow_300,
83
- chart_color_orange_300,
84
- chart_color_red_orange_400,
85
- cssGridTemplateColumnsMin,
86
- t_global_text_color_subtle,
87
- flex,
88
- text,
89
- sizing,
90
- accessibility
91
- };
92
- pageData.examples = {
93
- 'Horizontal card grid': props =>
94
- <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport {\n Card,\n CardHeader,\n CardTitle,\n CardBody,\n CardExpandableContent,\n Level,\n LabelGroup,\n Label,\n LabelColor,\n Grid,\n Flex,\n List,\n ListItem,\n Button,\n Dropdown,\n DropdownList,\n DropdownItem,\n MenuToggle,\n MenuToggleElement\n} from '@patternfly/react-core';\nimport RhUiInformationFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-information-fill-icon';\nimport RhMicronsCaretRightIcon from '@patternfly/react-icons/dist/esm/icons/rh-microns-caret-right-icon';\nimport RhMicronsExternalLinkIcon from '@patternfly/react-icons/dist/esm/icons/rh-microns-external-link-icon';\nimport RhUiEllipsisVerticalFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-ellipsis-vertical-fill-icon';\n\nexport const CardHorizontalGrid: React.FunctionComponent = () => {\n const [isCardExpanded, setIsCardExpanded] = useState(false);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\n const onCardExpand = () => {\n setIsCardExpanded(!isCardExpanded);\n };\n\n const onActionToggle = () => {\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n const onActionSelect = () => {\n setIsDropdownOpen(false);\n };\n\n const dropdownItems = (\n <>\n <DropdownItem key=\"action1\">Action 1</DropdownItem>\n <DropdownItem key=\"action2\">Action 2</DropdownItem>\n <DropdownItem key=\"disabled action3\" isDisabled>\n Disabled Action 3\n </DropdownItem>\n <DropdownItem key=\"action4\">Action 4</DropdownItem>\n </>\n );\n const headerActions = (\n <Dropdown\n onSelect={onActionSelect}\n isOpen={isDropdownOpen}\n popperProps={{ position: 'right' }}\n onOpenChange={(isOpen: boolean) => setIsDropdownOpen(isOpen)}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n ref={toggleRef}\n isExpanded={isDropdownOpen}\n onClick={onActionToggle}\n variant=\"plain\"\n aria-label=\"Horizontal card grid demo kebab toggle\"\n icon={<RhUiEllipsisVerticalFillIcon />}\n />\n )}\n >\n <DropdownList>{dropdownItems}</DropdownList>\n </Dropdown>\n );\n\n return (\n <Card id=\"horizontal card\" isExpanded={isCardExpanded}>\n <CardHeader\n actions={{ actions: headerActions }}\n onExpand={onCardExpand}\n toggleButtonProps={{\n id: 'toggle-button',\n 'aria-label': 'Actions',\n 'aria-labelledby': 'titleId toggle-button',\n 'aria-expanded': isCardExpanded\n }}\n >\n {isCardExpanded && <CardTitle id=\"titleId\">Getting Started</CardTitle>}\n {!isCardExpanded && (\n <Level hasGutter>\n <CardTitle id=\"titleId\">Getting Started</CardTitle>\n <LabelGroup isCompact>\n <Label isCompact icon={<RhUiInformationFillIcon />} color={LabelColor.blue}>\n Set up your cluster\n </Label>\n <Label isCompact icon={<RhUiInformationFillIcon />} color={LabelColor.purple}>\n Guided tours\n </Label>\n <Label isCompact icon={<RhUiInformationFillIcon />} color={LabelColor.green}>\n Quick starts\n </Label>\n <Label isCompact icon={<RhUiInformationFillIcon />} color={LabelColor.orange}>\n Learning resources\n </Label>\n </LabelGroup>\n </Level>\n )}\n </CardHeader>\n <CardExpandableContent>\n <CardBody>\n <Grid md={6} lg={3} hasGutter>\n <Flex\n spaceItems={{ default: 'spaceItemsLg' }}\n alignItems={{ default: 'alignItemsFlexStart' }}\n direction={{ default: 'column' }}\n >\n <Flex\n spaceItems={{ default: 'spaceItemsSm' }}\n alignItems={{ default: 'alignItemsFlexStart' }}\n direction={{ default: 'column' }}\n grow={{ default: 'grow' }}\n >\n <Label icon={<RhUiInformationFillIcon />} color={LabelColor.blue}>\n Set up your cluster\n </Label>\n <p>Continue setting up your cluster to access all you cain in the Console</p>\n <List isPlain>\n <ListItem>\n <a href=\"#\">Add identity provider</a>\n </ListItem>\n <ListItem>\n <a href=\"#\">Configure alert receivers</a>\n </ListItem>\n <ListItem>\n <a href=\"#\">Configure default ingress certificate</a>\n </ListItem>\n </List>\n </Flex>\n <Button\n href=\"#\"\n component=\"a\"\n variant=\"link\"\n isInline\n icon={<RhMicronsCaretRightIcon />}\n iconPosition=\"right\"\n >\n View all set up cluster steps\n </Button>\n </Flex>\n <Flex\n spaceItems={{ default: 'spaceItemsLg' }}\n alignItems={{ default: 'alignItemsFlexStart' }}\n direction={{ default: 'column' }}\n >\n <Flex\n spaceItems={{ default: 'spaceItemsSm' }}\n alignItems={{ default: 'alignItemsFlexStart' }}\n direction={{ default: 'column' }}\n grow={{ default: 'grow' }}\n >\n <Label icon={<RhUiInformationFillIcon />} color={LabelColor.purple}>\n Guided tours\n </Label>\n <p>Tour some of the key features around the console</p>\n <List isPlain>\n <ListItem>\n <a href=\"#\">Tour the console</a>\n </ListItem>\n <ListItem>\n <a href=\"#\">Getting started with Serverless</a>\n </ListItem>\n </List>\n </Flex>\n <Button\n href=\"#\"\n component=\"a\"\n variant=\"link\"\n isInline\n icon={<RhMicronsCaretRightIcon />}\n iconPosition=\"right\"\n >\n View all guided tours\n </Button>\n </Flex>\n <Flex\n spaceItems={{ default: 'spaceItemsLg' }}\n alignItems={{ default: 'alignItemsFlexStart' }}\n direction={{ default: 'column' }}\n >\n <Flex\n spaceItems={{ default: 'spaceItemsSm' }}\n alignItems={{ default: 'alignItemsFlexStart' }}\n direction={{ default: 'column' }}\n grow={{ default: 'grow' }}\n >\n <Label icon={<RhUiInformationFillIcon />} color={LabelColor.green}>\n Quick starts\n </Label>\n <p>Get started with features using our step-by-step documentation</p>\n <List isPlain>\n <ListItem>\n <a href=\"#\">Getting started with Serverless</a>\n </ListItem>\n <ListItem>\n <a href=\"#\">Explore virtualization</a>\n </ListItem>\n <ListItem>\n <a href=\"#\">Build pipelines</a>\n </ListItem>\n </List>\n </Flex>\n <Button\n href=\"#\"\n component=\"a\"\n variant=\"link\"\n isInline\n icon={<RhMicronsCaretRightIcon />}\n iconPosition=\"right\"\n >\n View all quick starts\n </Button>\n </Flex>\n <Flex\n spaceItems={{ default: 'spaceItemsLg' }}\n alignItems={{ default: 'alignItemsFlexStart' }}\n direction={{ default: 'column' }}\n >\n <Flex\n spaceItems={{ default: 'spaceItemsSm' }}\n alignItems={{ default: 'alignItemsFlexStart' }}\n direction={{ default: 'column' }}\n grow={{ default: 'grow' }}\n >\n <Label icon={<RhUiInformationFillIcon />} color={LabelColor.orange}>\n Learning resources\n </Label>\n <p>Learn about new features within the Console and get started with demo apps</p>\n <List isPlain>\n <ListItem>\n <a href=\"#\">See what's possible with the Explore page</a>\n </ListItem>\n <ListItem>\n <a href=\"#\">\n OpenShift 4.5: Top Tasks\n <RhMicronsExternalLinkIcon />\n </a>\n </ListItem>\n <ListItem>\n <a href=\"#\">Try a demo app</a>\n </ListItem>\n </List>\n </Flex>\n <Button\n href=\"#\"\n component=\"a\"\n variant=\"link\"\n isInline\n icon={<RhMicronsCaretRightIcon />}\n iconPosition=\"right\"\n >\n View all learning resources\n </Button>\n </Flex>\n </Grid>\n </CardBody>\n </CardExpandableContent>\n </Card>\n );\n};\n","title":"Horizontal card grid","lang":"ts","className":""}}>
95
-
96
- <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
97
- {`The following demo shows how you may use a `}
98
-
99
- <code {...{"className":"ws-code "}}>
100
- {`<Grid>`}
101
- </code>
102
- {` within a card for scenarios that require multiple subsections.`}
103
- </p>
104
- </Example>,
105
- 'Horizontal split': props =>
106
- <Example {...pageData} {...props} {...{"code":"import { Card, CardTitle, CardBody, CardFooter, Grid, GridItem, Button } from '@patternfly/react-core';\n\nexport const CardHorizontalSplitDemo: React.FunctionComponent = () => (\n <Card id=\"card-demo-horizontal-split-example\">\n <Grid md={6}>\n <GridItem\n style={{\n minHeight: '200px',\n backgroundPosition: 'center',\n backgroundSize: 'cover',\n backgroundImage:\n 'url(https://raw.githubusercontent.com/patternfly/patternfly-react/main/packages/react-integration/demo-app-ts/src/assets/images/pfbg_992.jpg)'\n }}\n />\n <GridItem>\n <CardTitle>Headline</CardTitle>\n <CardBody>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse arcu purus, lobortis nec euismod eu,\n tristique ut sapien. Nullam turpis lectus, aliquet sit amet volutpat eu, semper eget quam. Maecenas in tempus\n diam. Aenean interdum velit sed massa aliquet, sit amet malesuada nulla hendrerit. Aenean non faucibus odio.\n Etiam non metus turpis. Praesent sollicitudin elit neque, id ullamcorper nibh faucibus eget.\n </CardBody>\n <CardFooter>\n <Button variant=\"tertiary\">Call to action</Button>\n </CardFooter>\n </GridItem>\n </Grid>\n </Card>\n);\n","title":"Horizontal split","lang":"ts","className":""}}>
107
-
108
- <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
109
- {`The following demo shows how you may utilize `}
110
-
111
- <code {...{"className":"ws-code "}}>
112
- {`<Grid>`}
113
- </code>
114
- {` to split a card into two halves, one with an image, and one with text content.`}
115
- </p>
116
- </Example>,
117
- 'Details card': props =>
118
- <Example {...pageData} {...props} {...{"code":"import {\n Card,\n CardTitle,\n CardBody,\n CardFooter,\n Gallery,\n Title,\n DescriptionList,\n DescriptionListGroup,\n DescriptionListTerm,\n DescriptionListDescription,\n Divider\n} from '@patternfly/react-core';\nimport cssGridTemplateColumnsMin from '@patternfly/react-tokens/dist/esm/l_gallery_GridTemplateColumns_min';\n\nexport const CardDetailsDemo: React.FunctionComponent = () => (\n <Gallery hasGutter style={{ [cssGridTemplateColumnsMin.name]: '260px' } as React.CSSProperties}>\n <Card>\n <CardTitle>\n <Title headingLevel=\"h4\" size=\"xl\">\n Details\n </Title>\n </CardTitle>\n <CardBody>\n <DescriptionList aria-label=\"Cluster details for API1\">\n <DescriptionListGroup>\n <DescriptionListTerm>Cluster API Address</DescriptionListTerm>\n <DescriptionListDescription>\n <a href=\"#\">https://api1.devcluster.openshift.com</a>\n </DescriptionListDescription>\n </DescriptionListGroup>\n <DescriptionListGroup>\n <DescriptionListTerm>Cluster ID</DescriptionListTerm>\n <DescriptionListDescription>63b97ac1-b850-41d9-8820-239becde9e86</DescriptionListDescription>\n </DescriptionListGroup>\n <DescriptionListGroup>\n <DescriptionListTerm>Provide</DescriptionListTerm>\n <DescriptionListDescription>AWS</DescriptionListDescription>\n </DescriptionListGroup>\n <DescriptionListGroup>\n <DescriptionListTerm>OpenShift Version</DescriptionListTerm>\n <DescriptionListDescription>4.5.0.ci-2020-06-16-015028</DescriptionListDescription>\n </DescriptionListGroup>\n <DescriptionListGroup>\n <DescriptionListTerm>Update Channel</DescriptionListTerm>\n <DescriptionListDescription>stable-4.5</DescriptionListDescription>\n </DescriptionListGroup>\n </DescriptionList>\n </CardBody>\n <Divider />\n <CardFooter>\n <a href=\"#\">View Settings</a>\n </CardFooter>\n </Card>\n <Card>\n <CardTitle>\n <Title headingLevel=\"h4\" size=\"xl\">\n Details\n </Title>\n </CardTitle>\n <CardBody>\n <DescriptionList aria-label=\"Cluster details for API2\">\n <DescriptionListGroup>\n <DescriptionListTerm>Cluster API Address</DescriptionListTerm>\n <DescriptionListDescription>\n <a href=\"#\">https://api2.devcluster.openshift.com</a>\n </DescriptionListDescription>\n </DescriptionListGroup>\n <DescriptionListGroup>\n <DescriptionListTerm>Cluster ID</DescriptionListTerm>\n <DescriptionListDescription>08908908-b850-41d9-8820-239becde9e86</DescriptionListDescription>\n </DescriptionListGroup>\n <DescriptionListGroup>\n <DescriptionListTerm>Provider</DescriptionListTerm>\n <DescriptionListDescription>Azure</DescriptionListDescription>\n </DescriptionListGroup>\n <DescriptionListGroup>\n <DescriptionListTerm>OpenShift Version</DescriptionListTerm>\n <DescriptionListDescription>4.5.0.ci-2020-06-16-015026</DescriptionListDescription>\n </DescriptionListGroup>\n <DescriptionListGroup>\n <DescriptionListTerm>Update Channel</DescriptionListTerm>\n <DescriptionListDescription>stable-4.4</DescriptionListDescription>\n </DescriptionListGroup>\n </DescriptionList>\n </CardBody>\n <Divider />\n <CardFooter>\n <a href=\"#\">View Settings</a>\n </CardFooter>\n </Card>\n </Gallery>\n);\n","title":"Details card","lang":"ts","className":""}}>
119
-
120
- </Example>,
121
- 'Aggregate status card': props =>
122
- <Example {...pageData} {...props} {...{"code":"import { Fragment } from 'react';\nimport {\n Card,\n CardBody,\n CardTitle,\n Divider,\n Flex,\n FlexItem,\n Gallery,\n Grid,\n GridItem,\n Stack,\n Icon\n} from '@patternfly/react-core';\nimport RhUiCheckCircleFillIcon from '@patternfly/react-icons/dist/js/icons/rh-ui-check-circle-fill-icon';\nimport RhUiErrorFillIcon from '@patternfly/react-icons/dist/js/icons/rh-ui-error-fill-icon';\nimport RhUiWarningFillIcon from '@patternfly/react-icons/dist/js/icons/rh-ui-warning-fill-icon';\nimport cssGridTemplateColumnsMin from '@patternfly/react-tokens/dist/esm/l_gallery_GridTemplateColumns_min';\n\ninterface ContentType {\n icon?: React.ReactNode;\n count?: number;\n status?: string;\n subtitle?: string;\n}\ninterface CardData {\n [attribute: string]: {\n title: string;\n content: {\n icon: React.JSX.Element;\n count?: number;\n status?: string;\n subtitle?: string;\n }[];\n layout: string;\n }[];\n}\n\nconst cardData: CardData = {\n iconOnly: [\n {\n title: '5 Clusters',\n content: [\n {\n icon: (\n <Icon status=\"success\">\n <RhUiCheckCircleFillIcon />\n </Icon>\n )\n }\n ],\n layout: 'icon'\n },\n {\n title: '15 Clusters',\n content: [\n {\n icon: (\n <Icon status=\"warning\">\n <RhUiWarningFillIcon />\n </Icon>\n )\n }\n ],\n layout: 'icon'\n },\n {\n title: '3 Clusters',\n content: [\n {\n icon: (\n <Icon status=\"danger\">\n <RhUiErrorFillIcon />\n </Icon>\n )\n }\n ],\n layout: 'icon'\n }\n ],\n iconWithCount: [\n {\n title: '10 Hosts',\n content: [\n {\n icon: (\n <Icon status=\"success\">\n <RhUiCheckCircleFillIcon />\n </Icon>\n ),\n count: 2\n },\n {\n icon: (\n <Icon status=\"warning\">\n <RhUiWarningFillIcon />\n </Icon>\n ),\n count: 1\n }\n ],\n layout: 'multiIcon'\n },\n {\n title: '50 Hosts',\n content: [\n {\n icon: (\n <Icon status=\"success\">\n <RhUiCheckCircleFillIcon />\n </Icon>\n ),\n count: 5\n },\n {\n icon: (\n <Icon status=\"danger\">\n <RhUiErrorFillIcon />\n </Icon>\n ),\n count: 12\n }\n ],\n layout: 'multiIcon'\n },\n {\n title: '12 Hosts',\n content: [\n {\n icon: (\n <Icon status=\"warning\">\n <RhUiWarningFillIcon />\n </Icon>\n ),\n count: 3\n },\n {\n icon: (\n <Icon status=\"danger\">\n <RhUiErrorFillIcon />\n </Icon>\n ),\n count: 7\n }\n ],\n layout: 'multiIcon'\n }\n ],\n withSubtitle: [\n {\n title: '13 Hosts',\n content: [\n {\n icon: (\n <Icon status=\"danger\">\n <RhUiErrorFillIcon />\n </Icon>\n ),\n status: '2 errors',\n subtitle: 'subtitle'\n },\n {\n icon: (\n <Icon status=\"warning\">\n <RhUiWarningFillIcon />\n </Icon>\n ),\n status: '1 warning',\n subtitle: 'subtitle'\n }\n ],\n layout: 'withSubtitle'\n },\n {\n title: '3 Hosts',\n content: [\n {\n icon: (\n <Icon status=\"success\">\n <RhUiCheckCircleFillIcon />\n </Icon>\n ),\n status: '2 successes',\n subtitle: 'subtitle'\n },\n {\n icon: (\n <Icon status=\"warning\">\n <RhUiWarningFillIcon />\n </Icon>\n ),\n status: '3 warnings',\n subtitle: 'subtitle'\n }\n ],\n layout: 'withSubtitle'\n },\n {\n title: '50 Hosts',\n content: [\n {\n icon: (\n <Icon status=\"warning\">\n <RhUiWarningFillIcon />\n </Icon>\n ),\n status: '7 warnings',\n subtitle: 'subtitle'\n },\n {\n icon: (\n <Icon status=\"danger\">\n <RhUiErrorFillIcon />\n </Icon>\n ),\n status: '1 error',\n subtitle: 'subtitle'\n }\n ],\n layout: 'withSubtitle'\n }\n ]\n};\n\nexport const CardAggregateStatus: React.FunctionComponent = () => {\n const renderContent = (content: ContentType[], layout: string) => {\n if (layout === 'icon') {\n return content[0].icon;\n }\n if (layout === 'multiIcon') {\n return (\n <Flex display={{ default: 'inlineFlex' }}>\n {content.map(({ icon, count }, index: number) => (\n <Fragment key={index}>\n <Flex spaceItems={{ default: 'spaceItemsSm' }}>\n <FlexItem>{icon}</FlexItem>\n <FlexItem>\n <a href=\"#\">{count}</a>\n </FlexItem>\n </Flex>\n {content.length > 1 && index === 0 && (\n <Divider\n key={`${index}_d`}\n orientation={{\n default: 'vertical'\n }}\n />\n )}\n </Fragment>\n ))}\n </Flex>\n );\n }\n if (layout === 'withSubtitle') {\n return (\n <Flex justifyContent={{ default: 'justifyContentSpaceAround' }}>\n {content.map(({ icon, status, subtitle }, index: number) => (\n <Flex key={index}>\n <FlexItem>{icon}</FlexItem>\n <Stack>\n <a href=\"#\">{status}</a>\n <span>{subtitle}</span>\n </Stack>\n </Flex>\n ))}\n </Flex>\n );\n }\n };\n return (\n <Grid hasGutter>\n {Object.keys(cardData).map((cardGroup, groupIndex) => {\n let galleryWidth: string = '';\n let cardAlign: string;\n let titleAlign: string;\n if (cardGroup === 'withSubtitle') {\n galleryWidth = '260px';\n cardAlign = '';\n titleAlign = 'center';\n } else {\n cardAlign = 'center';\n }\n return (\n <GridItem key={groupIndex}>\n <Gallery hasGutter style={{ [cssGridTemplateColumnsMin.name]: galleryWidth } as React.CSSProperties}>\n {cardData[cardGroup].map(({ title, content, layout }, cardIndex: number) => (\n <Card\n style={{ textAlign: cardAlign } as React.CSSProperties}\n key={`${groupIndex}${cardIndex}`}\n component=\"div\"\n >\n <CardTitle style={{ textAlign: titleAlign } as React.CSSProperties}>{title}</CardTitle>\n <CardBody>{renderContent(content, layout)}</CardBody>\n </Card>\n ))}\n </Gallery>\n </GridItem>\n );\n })}\n </Grid>\n );\n};\n","title":"Aggregate status card","lang":"ts","className":""}}>
123
-
124
- </Example>,
125
- 'Status': props =>
126
- <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport {\n Alert,\n Card,\n CardBody,\n CardHeader,\n Divider,\n Flex,\n FlexItem,\n Grid,\n GridItem,\n Label,\n LabelStatus,\n NotificationDrawer,\n NotificationDrawerBody,\n NotificationDrawerGroup,\n NotificationDrawerList,\n NotificationDrawerListItem,\n NotificationDrawerListItemBody,\n NotificationDrawerListItemHeader,\n Popover,\n Title,\n Icon\n} from '@patternfly/react-core';\nimport { Table, Thead, Tbody, Tr, Th, Td, ExpandableRowContent } from '@patternfly/react-table';\nimport RhUiCheckCircleFillIcon from '@patternfly/react-icons/dist/js/icons/rh-ui-check-circle-fill-icon';\nimport RhUiErrorFillIcon from '@patternfly/react-icons/dist/js/icons/rh-ui-error-fill-icon';\nimport t_global_text_color_subtle from '@patternfly/react-tokens/dist/esm/t_global_text_color_subtle';\n\nexport const CardStatus: React.FunctionComponent = () => {\n const [drawerExpanded, setDrawerExpanded] = useState(false);\n const handleDrawerToggleClick = () => {\n setDrawerExpanded(!drawerExpanded);\n };\n\n const [rowsExpanded, setRowsExpanded] = useState([false, false, false]);\n const handleToggleExpand = (_: any, rowIndex: number) => {\n const newRowsExpanded = [...rowsExpanded];\n newRowsExpanded[rowIndex] = !rowsExpanded[rowIndex];\n setRowsExpanded(newRowsExpanded);\n };\n\n const header = (\n <CardHeader>\n <Title headingLevel=\"h4\" size=\"lg\">\n Status\n </Title>\n </CardHeader>\n );\n\n const columns = ['Components', 'Response Rate'];\n\n const rows = [\n {\n content: ['API Servers', '20%'],\n child: (\n <Alert\n title=\"This is a critical alert that can be associated with the control panel.\"\n variant=\"danger\"\n isInline\n ></Alert>\n )\n },\n {\n content: ['Controller Managers', '100%'],\n child: (\n <Alert\n title=\"This is a critical alert that can be associated with the control panel.\"\n variant=\"danger\"\n isInline\n ></Alert>\n )\n },\n {\n content: ['etcd', '91%'],\n child: (\n <Alert\n title=\"This is a critical alert that can be associated with the control panel.\"\n variant=\"danger\"\n isInline\n ></Alert>\n )\n }\n ];\n\n const popoverBodyContent = (\n <>\n <div>\n Components of the Control Panel are responsible for maintaining and reconciling the state of the cluster.\n </div>\n <Table variant=\"compact\">\n <Thead>\n <Tr>\n <Th screenReaderText=\"Row expansion\" />\n {columns.map((column, columnIndex) => (\n <Th key={columnIndex} modifier=\"fitContent\">\n {column}\n </Th>\n ))}\n </Tr>\n </Thead>\n {rows.map((row, rowIndex) => {\n const parentRow = (\n <Tr key={rowIndex}>\n <Td\n key={`${rowIndex}_0`}\n expand={row.child && { isExpanded: rowsExpanded[rowIndex], rowIndex, onToggle: handleToggleExpand }}\n />\n {row.content.map((cell, cellIndex) => (\n <Td key={`${rowIndex}_${cellIndex}`} dataLabel={columns[cellIndex]} modifier=\"fitContent\">\n {cell}\n </Td>\n ))}\n </Tr>\n );\n const childRow = row.child ? (\n <Tr key={`${rowIndex}_child`} isExpanded={rowsExpanded[rowIndex]}>\n <Td key={`${rowIndex}_1`} colSpan={3} dataLabel={`${rowIndex}_child`}>\n <ExpandableRowContent>{row.child}</ExpandableRowContent>\n </Td>\n </Tr>\n ) : null;\n return (\n <Tbody key={rowIndex} isExpanded={rowsExpanded[rowIndex]}>\n {parentRow}\n {childRow}\n </Tbody>\n );\n })}\n </Table>\n </>\n );\n\n const body = (\n <CardBody>\n <Grid hasGutter sm={6} lg={3}>\n <GridItem>\n <Flex spaceItems={{ default: 'spaceItemsSm' }}>\n <FlexItem>\n <Icon status=\"success\">\n <RhUiCheckCircleFillIcon />\n </Icon>\n </FlexItem>\n <FlexItem>\n <span>Cluster</span>\n </FlexItem>\n </Flex>\n </GridItem>\n <GridItem>\n <Flex spaceItems={{ default: 'spaceItemsSm' }}>\n <FlexItem>\n <Icon status=\"danger\">\n <RhUiErrorFillIcon />\n </Icon>\n </FlexItem>\n <FlexItem>\n <Popover headerContent=\"Control Panel Status\" bodyContent={popoverBodyContent} minWidth=\"400px\">\n <a href=\"#\" onClick={(e) => e.preventDefault()}>\n Control Panel\n </a>\n </Popover>\n </FlexItem>\n </Flex>\n </GridItem>\n <GridItem>\n <Flex spaceItems={{ default: 'spaceItemsSm' }}>\n <FlexItem>\n <Icon status=\"danger\">\n <RhUiErrorFillIcon />\n </Icon>\n </FlexItem>\n <Flex direction={{ default: 'column' }} spaceItems={{ default: 'spaceItemsNone' }}>\n <FlexItem>\n <a href=\"#\">Operators</a>\n </FlexItem>\n <FlexItem>\n <span style={{ color: t_global_text_color_subtle.var }}>1 degraded</span>\n </FlexItem>\n </Flex>\n </Flex>\n </GridItem>\n <GridItem>\n <Flex spaceItems={{ default: 'spaceItemsSm' }}>\n <FlexItem>\n <Icon status=\"success\">\n <RhUiCheckCircleFillIcon />\n </Icon>\n </FlexItem>\n <Flex direction={{ default: 'column' }} spaceItems={{ default: 'spaceItemsNone' }}>\n <FlexItem>\n <a href=\"#\">Image Vulnerabilities</a>\n </FlexItem>\n <FlexItem>\n <span style={{ color: t_global_text_color_subtle.var }}>0 vulnerabilities</span>\n </FlexItem>\n </Flex>\n </Flex>\n </GridItem>\n </Grid>\n </CardBody>\n );\n\n const drawerTitle = (\n <Flex spaceItems={{ default: 'spaceItemsSm' }}>\n <FlexItem spacer={{ default: 'spacerMd' }}>\n <span>Notifications</span>\n </FlexItem>\n <Label status={LabelStatus.danger}>1</Label>\n <Label status={LabelStatus.warning}>3</Label>\n <Label status={LabelStatus.success}>3</Label>\n <Label status={LabelStatus.danger}>3</Label>\n <Label status={LabelStatus.info}>3</Label>\n </Flex>\n );\n\n const drawer = (\n <NotificationDrawer>\n <NotificationDrawerBody>\n <NotificationDrawerGroup\n count={0}\n onExpand={handleDrawerToggleClick}\n isExpanded={drawerExpanded}\n title={drawerTitle}\n headingLevel=\"h4\"\n >\n <NotificationDrawerList isHidden={!drawerExpanded}>\n <NotificationDrawerListItem variant=\"danger\">\n <NotificationDrawerListItemHeader\n variant=\"danger\"\n headingLevel=\"h5\"\n title=\"Critical alert regarding control plane\"\n />\n <NotificationDrawerListItemBody>\n This is a long description to show how the title will wrap if it is long and wraps to multiple lines.\n </NotificationDrawerListItemBody>\n </NotificationDrawerListItem>\n <NotificationDrawerListItem variant=\"warning\">\n <NotificationDrawerListItemHeader variant=\"warning\" headingLevel=\"h5\" title=\"Warning alert\" />\n <NotificationDrawerListItemBody>\n This is a warning notification description.\n </NotificationDrawerListItemBody>\n </NotificationDrawerListItem>\n </NotificationDrawerList>\n </NotificationDrawerGroup>\n </NotificationDrawerBody>\n </NotificationDrawer>\n );\n\n return (\n <Card>\n {header}\n {body}\n <Divider />\n {drawer}\n </Card>\n );\n};\n","title":"Status","lang":"ts","className":""}}>
127
-
128
- </Example>,
129
- 'Status Tabbed': props =>
130
- <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport {\n Card,\n CardBody,\n CardHeader,\n DescriptionList,\n DescriptionListDescription,\n DescriptionListGroup,\n DescriptionListTerm,\n Flex,\n FlexItem,\n Icon,\n Tab,\n TabContent,\n Tabs,\n TabTitleText,\n Title\n} from '@patternfly/react-core';\nimport RhUiCheckCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-check-circle-fill-icon';\nimport RhUiErrorFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-error-fill-icon';\n\nconst descriptionListData = [\n {\n status: 'Running',\n resourceName: 'Resource name that is long and can wrap',\n detail: '121 Systems',\n icon: (\n <Icon status=\"success\">\n <RhUiCheckCircleFillIcon />\n </Icon>\n )\n },\n {\n status: 'Failed',\n resourceName: 'Resource name that is long and can wrap',\n detail: '123 Systems',\n icon: (\n <Icon status=\"danger\">\n <RhUiErrorFillIcon />\n </Icon>\n )\n },\n {\n status: 'Running',\n resourceName: 'Resource name that is long and can wrap',\n detail: '122 Systems',\n icon: (\n <Icon status=\"success\">\n <RhUiCheckCircleFillIcon />\n </Icon>\n )\n },\n {\n status: 'Failed',\n resourceName: 'Resource name that is long and can wrap',\n detail: '124 Systems',\n icon: (\n <Icon status=\"danger\">\n <RhUiErrorFillIcon />\n </Icon>\n )\n }\n];\n\nexport const CardStatusTabbed: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = useState(0);\n const handleTabClick = (_e: React.MouseEvent<HTMLElement, MouseEvent>, tabIndex: string | number) => {\n setActiveTabKey(Number(tabIndex));\n };\n\n const tabContent = (tabIndex: number) => (\n <DescriptionList isHorizontal columnModifier={{ lg: '2Col' }} aria-label={`Object ${tabIndex + 1} status`}>\n {descriptionListData.map(({ status, resourceName, detail, icon }, index) => (\n <DescriptionListGroup key={index}>\n <DescriptionListTerm>\n <Flex>\n <FlexItem>{icon}</FlexItem>\n <FlexItem>\n <Title headingLevel=\"h4\" size=\"md\">\n {status}\n </Title>\n </FlexItem>\n </Flex>\n </DescriptionListTerm>\n <DescriptionListDescription>\n <a href=\"#\">{resourceName}</a>\n <div>{detail}</div>\n </DescriptionListDescription>\n </DescriptionListGroup>\n ))}\n </DescriptionList>\n );\n\n return (\n <>\n <Card>\n <CardHeader>\n <Title headingLevel=\"h4\" size=\"lg\">\n Status\n </Title>\n </CardHeader>\n <CardBody>\n <Tabs isFilled id=\"status-tabs\" activeKey={activeTabKey} onSelect={handleTabClick}>\n {[1, 2, 3].map((tab, tabIndex) => (\n <Tab\n key={tabIndex}\n eventKey={tabIndex}\n title={<TabTitleText>{`Object ${tabIndex + 1}`}</TabTitleText>}\n tabContentId={`tabContent${tabIndex}`}\n />\n ))}\n </Tabs>\n </CardBody>\n <CardBody>\n {[1, 2, 3].map((tab, tabIndex) => (\n <TabContent\n key={tabIndex}\n eventKey={tabIndex}\n id={`tabContent${tabIndex}`}\n activeKey={activeTabKey}\n hidden={tabIndex !== activeTabKey}\n >\n {tabContent(tabIndex)}\n </TabContent>\n ))}\n </CardBody>\n </Card>\n </>\n );\n};\n","title":"Status Tabbed","lang":"ts","className":""}}>
131
-
132
- </Example>,
133
- 'Utilization card 1': props =>
134
- <Example {...pageData} {...props} {...{"code":"import {\n Card,\n CardTitle,\n CardBody,\n CardFooter,\n Title,\n Gallery,\n GalleryItem,\n Flex,\n FlexItem,\n Stack,\n Divider\n} from '@patternfly/react-core';\nimport { ChartArea, ChartGroup, ChartVoronoiContainer } from '@patternfly/react-charts/victory';\n\nexport const CardUtilizationDemo1: React.FunctionComponent = () => (\n <Gallery hasGutter minWidths={{ default: '360px' }}>\n <GalleryItem>\n <Card id=\"utilization-card-1-card\" component=\"div\">\n <CardTitle>\n <Title headingLevel=\"h4\" size=\"lg\">\n Top Utilized Clusters\n </Title>\n </CardTitle>\n <CardBody>\n <Flex direction={{ default: 'column' }}>\n <FlexItem>\n <Stack>\n <b>Cluster-1204</b>\n <span>27.3 cores available</span>\n </Stack>\n </FlexItem>\n <FlexItem>\n <ChartGroup\n ariaDesc=\"Mock average cluster utilization\"\n ariaTitle=\"Mock cluster sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer labels={({ datum }) => `${datum.name}: ${datum.y}`} constrainToVisibleArea />\n }\n height={100}\n maxDomain={{ y: 9 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Cluster', x: '2015', y: 7 },\n { name: 'Cluster', x: '2016', y: 6 },\n { name: 'Cluster', x: '2017', y: 8 },\n { name: 'Cluster', x: '2018', y: 3 },\n { name: 'Cluster', x: '2019', y: 4 },\n { name: 'Cluster', x: '2020', y: 1 },\n { name: 'Cluster', x: '2021', y: 0 }\n ]}\n />\n </ChartGroup>\n </FlexItem>\n <FlexItem>\n <a href=\"#\">View details</a>\n </FlexItem>\n </Flex>\n </CardBody>\n <CardBody>\n <Flex direction={{ default: 'column' }}>\n <FlexItem>\n <Stack>\n <b>Abcdef-1204</b>\n <span>50.6 cores available</span>\n </Stack>\n </FlexItem>\n <FlexItem>\n <ChartGroup\n ariaDesc=\"Mock average cluster utilization\"\n ariaTitle=\"Mock cluster sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer labels={({ datum }) => `${datum.name}: ${datum.y}`} constrainToVisibleArea />\n }\n height={100}\n maxDomain={{ y: 9 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Cluster', x: '2015', y: 7 },\n { name: 'Cluster', x: '2016', y: 6 },\n { name: 'Cluster', x: '2017', y: 8 },\n { name: 'Cluster', x: '2018', y: 3 },\n { name: 'Cluster', x: '2019', y: 4 },\n { name: 'Cluster', x: '2020', y: 1 },\n { name: 'Cluster', x: '2021', y: 0 }\n ]}\n />\n </ChartGroup>\n </FlexItem>\n <FlexItem>\n <a href=\"#\">View details</a>\n </FlexItem>\n </Flex>\n </CardBody>\n <Divider />\n <CardFooter>\n <a href=\"#\">View all clusters</a>\n </CardFooter>\n </Card>\n </GalleryItem>\n </Gallery>\n);\n","title":"Utilization card 1","lang":"ts","className":""}}>
135
-
136
- </Example>,
137
- 'Utilization card 2': props =>
138
- <Example {...pageData} {...props} {...{"code":"import {\n Card,\n CardTitle,\n CardBody,\n CardFooter,\n Title,\n Gallery,\n GalleryItem,\n Flex,\n FlexItem,\n Stack,\n Divider\n} from '@patternfly/react-core';\nimport { ChartArea, ChartGroup, ChartVoronoiContainer } from '@patternfly/react-charts/victory';\n\nexport const CardUtilizationDemo2: React.FunctionComponent = () => (\n <Gallery hasGutter minWidths={{ default: '360px' }}>\n <GalleryItem>\n <Card id=\"utilization-card-2-card\" component=\"div\">\n <CardTitle>\n <Title headingLevel=\"h4\" size=\"lg\">\n Top Utilized Clusters\n </Title>\n </CardTitle>\n <CardBody>\n <Flex direction={{ default: 'column' }}>\n <FlexItem>\n <Stack>\n <a href=\"#\">Cluster-1204</a>\n <span>27.3 cores available</span>\n </Stack>\n </FlexItem>\n <FlexItem>\n <ChartGroup\n ariaDesc=\"Mock average cluster utilization\"\n ariaTitle=\"Mock cluster sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer labels={({ datum }) => `${datum.name}: ${datum.y}`} constrainToVisibleArea />\n }\n height={100}\n maxDomain={{ y: 9 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Cluster', x: '2015', y: 7 },\n { name: 'Cluster', x: '2016', y: 6 },\n { name: 'Cluster', x: '2017', y: 8 },\n { name: 'Cluster', x: '2018', y: 3 },\n { name: 'Cluster', x: '2019', y: 4 },\n { name: 'Cluster', x: '2020', y: 1 },\n { name: 'Cluster', x: '2021', y: 0 }\n ]}\n />\n </ChartGroup>\n </FlexItem>\n </Flex>\n </CardBody>\n <CardBody>\n <Flex direction={{ default: 'column' }}>\n <FlexItem>\n <Stack>\n <a href=\"#\">Abcdef-1204</a>\n <span>50.6 cores available</span>\n </Stack>\n </FlexItem>\n <FlexItem>\n <ChartGroup\n ariaDesc=\"Mock average cluster utilization\"\n ariaTitle=\"Mock cluster sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer labels={({ datum }) => `${datum.name}: ${datum.y}`} constrainToVisibleArea />\n }\n height={100}\n maxDomain={{ y: 9 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Cluster', x: '2015', y: 7 },\n { name: 'Cluster', x: '2016', y: 6 },\n { name: 'Cluster', x: '2017', y: 8 },\n { name: 'Cluster', x: '2018', y: 3 },\n { name: 'Cluster', x: '2019', y: 4 },\n { name: 'Cluster', x: '2020', y: 1 },\n { name: 'Cluster', x: '2021', y: 0 }\n ]}\n />\n </ChartGroup>\n </FlexItem>\n </Flex>\n </CardBody>\n <Divider />\n <CardFooter>\n <a href=\"#\">View all clusters</a>\n </CardFooter>\n </Card>\n </GalleryItem>\n </Gallery>\n);\n","title":"Utilization card 2","lang":"ts","className":""}}>
139
-
140
- </Example>,
141
- 'Utilization card 3': props =>
142
- <Example {...pageData} {...props} {...{"code":"import { Fragment, useState } from 'react';\nimport {\n Card,\n CardTitle,\n CardHeader,\n CardBody,\n CardFooter,\n Title,\n Gallery,\n GalleryItem,\n Flex,\n FlexItem,\n Select,\n SelectList,\n SelectOption,\n MenuToggle,\n MenuToggleElement,\n Icon\n} from '@patternfly/react-core';\nimport RhUiErrorFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-error-fill-icon';\nimport { Chart, ChartStack, ChartBar, ChartTooltip } from '@patternfly/react-charts/victory';\nimport chart_color_yellow_100 from '@patternfly/react-tokens/dist/esm/chart_color_yellow_100';\nimport chart_color_yellow_300 from '@patternfly/react-tokens/dist/esm/chart_color_yellow_300';\nimport chart_color_orange_300 from '@patternfly/react-tokens/dist/esm/chart_color_orange_300';\nimport chart_color_red_orange_400 from '@patternfly/react-tokens/dist/esm/chart_color_red_orange_400';\nimport flex from '@patternfly/react-styles/css/utilities/Flex/flex';\n\nexport const CardUtilizationDemo3: React.FunctionComponent = () => {\n const [isOpen, setIsOpen] = useState(false);\n\n const selectItems = (\n <SelectList>\n <SelectOption key=\"option1\" value=\"Last hour\">\n Last hour\n </SelectOption>\n <SelectOption key=\"option2\" value=\"Last 6 hours\">\n Last 6 hours\n </SelectOption>\n <SelectOption key=\"option3\" value=\"Last 24 hours\">\n Last 24 hours\n </SelectOption>\n <SelectOption key=\"option4\" value=\"Last 7 days\">\n Last 7 days\n </SelectOption>\n </SelectList>\n );\n\n const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle ref={toggleRef} onClick={() => setIsOpen(!isOpen)} isExpanded={isOpen} variant=\"plainText\">\n Filter\n </MenuToggle>\n );\n\n const headerActions = (\n <Select onSelect={() => setIsOpen(!isOpen)} onOpenChange={setIsOpen} isOpen={isOpen} toggle={toggle}>\n {selectItems}\n </Select>\n );\n\n return (\n <Fragment>\n <b>Note:</b> Custom CSS is used in this demo to align the card title and select toggle text to{' '}\n <code>baseline</code> alignment.\n <br />\n <br />\n <Gallery hasGutter minWidths={{ default: '360px' }}>\n <GalleryItem>\n <Card id=\"utilization-card-3-card\" component=\"div\">\n <CardHeader className={flex.alignItemsFlexStart} actions={{ actions: headerActions, hasNoOffset: true }}>\n <CardTitle>\n <Title headingLevel=\"h4\" size=\"lg\" style={{ paddingTop: '3px' }}>\n Recommendations\n </Title>\n </CardTitle>\n </CardHeader>\n <CardBody>\n <Flex direction={{ default: 'column' }}>\n <FlexItem>\n <span>System</span>\n </FlexItem>\n <Flex>\n <Icon status=\"danger\">\n <RhUiErrorFillIcon />\n </Icon>\n <a href=\"#\">25 incidents detected</a>\n </Flex>\n <FlexItem>\n <Chart\n ariaDesc=\"Mock incidents chart\"\n ariaTitle=\"Mock stack chart\"\n domainPadding={{ x: [30, 25] }}\n legendData={[\n { name: 'Low', symbol: { fill: chart_color_yellow_100.value } },\n { name: 'Important', symbol: { fill: chart_color_yellow_300.value } },\n { name: 'Moderate', symbol: { fill: chart_color_orange_300.value } },\n { name: 'Critical', symbol: { fill: chart_color_red_orange_400.value } }\n ]}\n legendPosition=\"bottom-left\"\n height={50}\n padding={{\n bottom: 40,\n left: 0,\n right: 0,\n top: 0\n }}\n width={350}\n showAxis={false}\n >\n <ChartStack\n horizontal\n colorScale={[\n chart_color_yellow_100.value,\n chart_color_yellow_300.value,\n chart_color_orange_300.value,\n chart_color_red_orange_400.value\n ]}\n >\n <ChartBar\n data={[\n {\n name: 'Low',\n x: 'Cluster A',\n y: 6,\n label: 'Low: 6'\n }\n ]}\n labelComponent={<ChartTooltip constrainToVisibleArea />}\n />\n <ChartBar\n data={[\n {\n name: 'Important',\n x: 'Cluster A',\n y: 2,\n label: 'Important: 2'\n }\n ]}\n labelComponent={<ChartTooltip constrainToVisibleArea />}\n />\n <ChartBar\n data={[\n {\n name: 'Moderate',\n x: 'Cluster A',\n y: 4,\n label: 'Moderate: 4'\n }\n ]}\n labelComponent={<ChartTooltip constrainToVisibleArea />}\n />\n <ChartBar\n data={[\n {\n name: 'Critical',\n x: 'Cluster A',\n y: 2,\n label: 'Critical: 2'\n }\n ]}\n labelComponent={<ChartTooltip constrainToVisibleArea />}\n />\n </ChartStack>\n </Chart>\n </FlexItem>\n </Flex>\n </CardBody>\n <CardFooter>\n <a href=\"#\">See details</a>\n </CardFooter>\n </Card>\n </GalleryItem>\n </Gallery>\n </Fragment>\n );\n};\n","title":"Utilization card 3","lang":"ts","className":""}}>
143
-
144
- </Example>,
145
- 'Utilization card 4': props =>
146
- <Example {...pageData} {...props} {...{"code":"import { Card, CardTitle, CardBody, CardFooter, Title, Gallery, GalleryItem } from '@patternfly/react-core';\nimport { ChartDonutThreshold, ChartDonutUtilization } from '@patternfly/react-charts/victory';\n\nexport const CardUtilizationDemo4: React.FunctionComponent = () => (\n <Gallery hasGutter minWidths={{ default: '360px' }}>\n <GalleryItem>\n <Card id=\"utilization-card-4-card\" component=\"div\">\n <CardTitle>\n <Title headingLevel=\"h4\" size=\"lg\">\n CPU Usage\n </Title>\n </CardTitle>\n <CardBody>\n <ChartDonutThreshold\n ariaDesc=\"Mock storage capacity\"\n ariaTitle=\"Mock donut utilization chart\"\n constrainToVisibleArea={true}\n data={[\n { x: 'Warning at 60%', y: 60 },\n { x: 'Danger at 90%', y: 90 }\n ]}\n height={200}\n labels={({ datum }) => (datum.x ? datum.x : null)}\n padding={{\n bottom: 0,\n left: 10,\n right: 150,\n top: 0\n }}\n width={350}\n >\n <ChartDonutUtilization\n data={{ x: 'Storage capacity', y: 80 }}\n labels={({ datum }) => (datum.x ? `${datum.x}: ${datum.y}%` : null)}\n legendData={[{ name: `Capacity: 80%` }, { name: 'Warning at 60%' }, { name: 'Danger at 90%' }]}\n legendOrientation=\"vertical\"\n title=\"80%\"\n subTitle=\"of 100 GBps\"\n thresholds={[{ value: 60 }, { value: 90 }]}\n />\n </ChartDonutThreshold>{' '}\n </CardBody>\n <CardFooter>\n <a href=\"#\">See details</a>\n </CardFooter>\n </Card>\n </GalleryItem>\n </Gallery>\n);\n","title":"Utilization card 4","lang":"ts","className":""}}>
147
-
148
- </Example>,
149
- 'Nested cards': props =>
150
- <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport {\n Card,\n CardHeader,\n CardTitle,\n CardBody,\n CardExpandableContent,\n Checkbox,\n Title,\n Divider,\n Grid,\n GridItem,\n Flex,\n FlexItem\n} from '@patternfly/react-core';\nimport { ChartArea, ChartGroup, ChartVoronoiContainer } from '@patternfly/react-charts/victory';\nimport sizing from '@patternfly/react-styles/css/utilities/Sizing/sizing';\nimport accessibility from '@patternfly/react-styles/css/utilities/Accessibility/accessibility';\n\nexport const CardNested: React.FunctionComponent = () => {\n const [isCardExpanded1, onCardExpand1] = useState(true);\n const [isCardExpanded2, onCardExpand2] = useState(false);\n const [isCardExpanded3, onCardExpand3] = useState(false);\n const [isToggleOnRight, onCheckClick] = useState(false);\n\n return (\n <>\n <div style={{ marginBottom: '12px' }}>\n <Checkbox\n id=\"isToggleRightAligned\"\n key=\"isToggleRightAligned\"\n label=\"Align expand toggle on right\"\n isChecked={isToggleOnRight}\n onChange={(_event) => onCheckClick(!isToggleOnRight)}\n />\n </div>\n <Card id=\"nested-cards-card\">\n <CardHeader>\n <CardTitle id=\"nested-cards-toggle-title\">\n <Title headingLevel=\"h4\" size=\"lg\">\n {' '}\n Hardware Monitor{' '}\n </Title>\n </CardTitle>\n </CardHeader>\n <Card id=\"nested-cards-toggle-group-1\" isPlain isExpanded={isCardExpanded1}>\n <CardHeader\n onExpand={() => onCardExpand1(!isCardExpanded1)}\n isToggleRightAligned={isToggleOnRight}\n toggleButtonProps={{\n id: 'toggle-button-1',\n 'aria-label': 'Details',\n 'aria-labelledby': 'nested-cards-toggle-group-1-title toggle-button-1',\n 'aria-expanded': isCardExpanded1\n }}\n >\n <CardTitle id=\"nested-cards-toggle-group-1-title\">\n <span className=\"pf-v6-u-font-weight-light\">CPU 1</span>\n </CardTitle>\n </CardHeader>\n <CardExpandableContent>\n <CardBody>\n <Grid hasGutter>\n <Grid hasGutter>\n <GridItem md={4}>\n <Flex\n className={sizing.h_100OnMd}\n direction={{ md: 'column' }}\n spaceItems={{ md: 'spaceItemsNone' }}\n justifyContent={{ md: 'justifyContentCenter' }}\n >\n <FlexItem>\n <b>Temperature</b>\n </FlexItem>\n <Divider\n className={accessibility.hiddenOnMd}\n orientation={{\n default: 'vertical'\n }}\n inset={{ default: 'insetSm' }}\n />\n <FlexItem>\n <span>64C</span>\n </FlexItem>\n </Flex>\n </GridItem>\n <GridItem md={8}>\n <Grid hasGutter>\n <GridItem span={2}>\n <Flex\n direction={{ default: 'column' }}\n spaceItems={{ default: 'spaceItemsNone' }}\n alignItems={{ md: 'alignItemsFlexEnd' }}\n >\n <FlexItem>100C</FlexItem>\n <FlexItem>50C</FlexItem>\n <FlexItem>0C</FlexItem>\n </Flex>\n </GridItem>\n <GridItem span={10}>\n <ChartGroup\n ariaDesc=\"Mock CPU temperature\"\n ariaTitle=\"Mock CPU temperature sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer\n labels={({ datum }) => `${datum.name}: ${datum.y}`}\n constrainToVisibleArea\n />\n }\n height={60}\n maxDomain={{ y: 100 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Temp', x: '1', y: 25 },\n { name: 'Temp', x: '2', y: 40 },\n { name: 'Temp', x: '3', y: 20 },\n { name: 'Temp', x: '4', y: 60 },\n { name: 'Temp', x: '5', y: 20 },\n { name: 'Temp', x: '6', y: 41 },\n { name: 'Temp', x: '7', y: 45 },\n { name: 'Temp', x: '8', y: 41 },\n { name: 'Temp', x: '9', y: 62 }\n ]}\n />\n </ChartGroup>\n </GridItem>\n </Grid>\n </GridItem>\n </Grid>\n <Divider className={accessibility.hiddenOnMd} />\n <Grid hasGutter>\n <GridItem md={4}>\n <Flex\n className={sizing.h_100OnMd}\n direction={{ md: 'column' }}\n spaceItems={{ md: 'spaceItemsNone' }}\n justifyContent={{ md: 'justifyContentCenter' }}\n >\n <FlexItem>\n <b>Speed</b>\n </FlexItem>\n <Divider\n className={accessibility.hiddenOnMd}\n orientation={{\n default: 'vertical'\n }}\n inset={{ default: 'insetSm' }}\n />\n <FlexItem>\n <span>2.3Ghz</span>\n </FlexItem>\n </Flex>\n </GridItem>\n <GridItem md={8}>\n <Grid hasGutter>\n <GridItem span={2}>\n <Flex\n direction={{ default: 'column' }}\n spaceItems={{ default: 'spaceItemsNone' }}\n alignItems={{ md: 'alignItemsFlexEnd' }}\n >\n <FlexItem>3.6Ghz</FlexItem>\n <FlexItem>1.5Ghz</FlexItem>\n <FlexItem>0GHZ</FlexItem>\n </Flex>\n </GridItem>\n <GridItem span={10}>\n <ChartGroup\n ariaDesc=\"Mock CPU speed\"\n ariaTitle=\"Mock CPU speed sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer\n labels={({ datum }) => `${datum.name}: ${datum.y}`}\n constrainToVisibleArea\n />\n }\n height={60}\n maxDomain={{ y: 3.6 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Temp', x: '1', y: 0.9 },\n { name: 'Temp', x: '2', y: 1.44 },\n { name: 'Temp', x: '3', y: 0.72 },\n { name: 'Temp', x: '4', y: 2.16 },\n { name: 'Temp', x: '5', y: 0.72 },\n { name: 'Temp', x: '6', y: 1.48 },\n { name: 'Temp', x: '7', y: 1.62 },\n { name: 'Temp', x: '8', y: 1.48 },\n { name: 'Temp', x: '9', y: 2.23 }\n ]}\n />\n </ChartGroup>\n </GridItem>\n </Grid>\n </GridItem>\n </Grid>\n </Grid>\n </CardBody>\n </CardExpandableContent>\n </Card>\n <Card id=\"nested-cards-toggle-group-2\" isPlain isExpanded={isCardExpanded3}>\n <CardHeader\n onExpand={() => onCardExpand3(!isCardExpanded3)}\n isToggleRightAligned={isToggleOnRight}\n toggleButtonProps={{\n id: 'toggle-button-2',\n 'aria-label': 'Details',\n 'aria-labelledby': 'nested-cards-toggle-group-2-title toggle-button-2',\n 'aria-expanded': isCardExpanded3\n }}\n >\n <CardTitle id=\"nested-cards-toggle-group-2-title\">\n <span className=\"pf-v6-u-font-weight-light\">CPU 2</span>\n </CardTitle>\n </CardHeader>\n <CardExpandableContent>\n <CardBody>\n <Grid hasGutter>\n <Grid hasGutter>\n <GridItem md={4}>\n <Flex\n className={sizing.h_100OnMd}\n direction={{ md: 'column' }}\n spaceItems={{ md: 'spaceItemsNone' }}\n justifyContent={{ md: 'justifyContentCenter' }}\n >\n <FlexItem>\n <b>Temperature</b>\n </FlexItem>\n <Divider\n className={accessibility.hiddenOnMd}\n orientation={{\n default: 'vertical'\n }}\n inset={{ default: 'insetSm' }}\n />\n <FlexItem>\n <span>64C</span>\n </FlexItem>\n </Flex>\n </GridItem>\n <GridItem md={8}>\n <Grid hasGutter>\n <GridItem span={2}>\n <Flex\n direction={{ default: 'column' }}\n spaceItems={{ default: 'spaceItemsNone' }}\n alignItems={{ md: 'alignItemsFlexEnd' }}\n >\n <FlexItem>100C</FlexItem>\n <FlexItem>50C</FlexItem>\n <FlexItem>0C</FlexItem>\n </Flex>\n </GridItem>\n <GridItem span={10}>\n <ChartGroup\n ariaDesc=\"Mock CPU temperature\"\n ariaTitle=\"Mock CPU temperature sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer\n labels={({ datum }) => `${datum.name}: ${datum.y}`}\n constrainToVisibleArea\n />\n }\n height={60}\n maxDomain={{ y: 100 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Temp', x: '1', y: 25 },\n { name: 'Temp', x: '2', y: 40 },\n { name: 'Temp', x: '3', y: 20 },\n { name: 'Temp', x: '4', y: 60 },\n { name: 'Temp', x: '5', y: 20 },\n { name: 'Temp', x: '6', y: 41 },\n { name: 'Temp', x: '7', y: 45 },\n { name: 'Temp', x: '8', y: 41 },\n { name: 'Temp', x: '9', y: 62 }\n ]}\n />\n </ChartGroup>\n </GridItem>\n </Grid>\n </GridItem>\n </Grid>\n <Divider className={accessibility.hiddenOnMd} />\n <Grid hasGutter>\n <GridItem md={4}>\n <Flex\n className={sizing.h_100OnMd}\n direction={{ md: 'column' }}\n spaceItems={{ md: 'spaceItemsNone' }}\n justifyContent={{ md: 'justifyContentCenter' }}\n >\n <FlexItem>\n <b>Speed</b>\n </FlexItem>\n <Divider\n className={accessibility.hiddenOnMd}\n orientation={{\n default: 'vertical'\n }}\n inset={{ default: 'insetSm' }}\n />\n <FlexItem>\n <span>2.3Ghz</span>\n </FlexItem>\n </Flex>\n </GridItem>\n <GridItem md={8}>\n <Grid hasGutter>\n <GridItem span={2}>\n <Flex\n direction={{ default: 'column' }}\n spaceItems={{ default: 'spaceItemsNone' }}\n alignItems={{ md: 'alignItemsFlexEnd' }}\n >\n <FlexItem>3.6Ghz</FlexItem>\n <FlexItem>1.5Ghz</FlexItem>\n <FlexItem>0GHZ</FlexItem>\n </Flex>\n </GridItem>\n <GridItem span={10}>\n <ChartGroup\n ariaDesc=\"Mock CPU speed\"\n ariaTitle=\"Mock CPU speed sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer\n labels={({ datum }) => `${datum.name}: ${datum.y}`}\n constrainToVisibleArea\n />\n }\n height={60}\n maxDomain={{ y: 3.6 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Temp', x: '1', y: 0.9 },\n { name: 'Temp', x: '2', y: 1.44 },\n { name: 'Temp', x: '3', y: 0.72 },\n { name: 'Temp', x: '4', y: 2.16 },\n { name: 'Temp', x: '5', y: 0.72 },\n { name: 'Temp', x: '6', y: 1.48 },\n { name: 'Temp', x: '7', y: 1.62 },\n { name: 'Temp', x: '8', y: 1.48 },\n { name: 'Temp', x: '9', y: 2.23 }\n ]}\n />\n </ChartGroup>\n </GridItem>\n </Grid>\n </GridItem>\n </Grid>\n </Grid>\n </CardBody>\n </CardExpandableContent>\n </Card>\n <Card id=\"nested-cards-toggle-group-3\" isPlain isExpanded={isCardExpanded2}>\n <CardHeader\n onExpand={() => onCardExpand2(!isCardExpanded2)}\n isToggleRightAligned={isToggleOnRight}\n toggleButtonProps={{\n id: 'toggle-button-3',\n 'aria-label': 'Details',\n 'aria-labelledby': 'nested-cards-toggle-group-3-title toggle-button-3',\n 'aria-expanded': isCardExpanded2\n }}\n >\n <CardTitle id=\"nested-cards-toggle-group-3-title\">\n <span className=\"pf-v6-u-font-weight-light\">CPU 3</span>\n </CardTitle>\n </CardHeader>\n <CardExpandableContent>\n <CardBody>\n <Grid hasGutter>\n <Grid hasGutter>\n <GridItem md={4}>\n <Flex\n className={sizing.h_100OnMd}\n direction={{ md: 'column' }}\n spaceItems={{ md: 'spaceItemsNone' }}\n justifyContent={{ md: 'justifyContentCenter' }}\n >\n <FlexItem>\n <b>Temperature</b>\n </FlexItem>\n <Divider\n className={accessibility.hiddenOnMd}\n orientation={{\n default: 'vertical'\n }}\n inset={{ default: 'insetSm' }}\n />\n <FlexItem>\n <span>64C</span>\n </FlexItem>\n </Flex>\n </GridItem>\n <GridItem md={8}>\n <Grid hasGutter>\n <GridItem span={2}>\n <Flex\n direction={{ default: 'column' }}\n spaceItems={{ default: 'spaceItemsNone' }}\n alignItems={{ md: 'alignItemsFlexEnd' }}\n >\n <FlexItem>100C</FlexItem>\n <FlexItem>50C</FlexItem>\n <FlexItem>0C</FlexItem>\n </Flex>\n </GridItem>\n <GridItem span={10}>\n <ChartGroup\n ariaDesc=\"Mock CPU temperature\"\n ariaTitle=\"Mock CPU temperature sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer\n labels={({ datum }) => `${datum.name}: ${datum.y}`}\n constrainToVisibleArea\n />\n }\n height={60}\n maxDomain={{ y: 100 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Temp', x: '1', y: 25 },\n { name: 'Temp', x: '2', y: 40 },\n { name: 'Temp', x: '3', y: 20 },\n { name: 'Temp', x: '4', y: 60 },\n { name: 'Temp', x: '5', y: 20 },\n { name: 'Temp', x: '6', y: 41 },\n { name: 'Temp', x: '7', y: 45 },\n { name: 'Temp', x: '8', y: 41 },\n { name: 'Temp', x: '9', y: 62 }\n ]}\n />\n </ChartGroup>\n </GridItem>\n </Grid>\n </GridItem>\n </Grid>\n <Divider className={accessibility.hiddenOnMd} />\n <Grid hasGutter>\n <GridItem md={4}>\n <Flex\n className={sizing.h_100OnMd}\n direction={{ md: 'column' }}\n spaceItems={{ md: 'spaceItemsNone' }}\n justifyContent={{ md: 'justifyContentCenter' }}\n >\n <FlexItem>\n <b>Speed</b>\n </FlexItem>\n <Divider\n className={accessibility.hiddenOnMd}\n orientation={{\n default: 'vertical'\n }}\n inset={{ default: 'insetSm' }}\n />\n <FlexItem>\n <span>2.3Ghz</span>\n </FlexItem>\n </Flex>\n </GridItem>\n <GridItem md={8}>\n <Grid hasGutter>\n <GridItem span={2}>\n <Flex\n direction={{ default: 'column' }}\n spaceItems={{ default: 'spaceItemsNone' }}\n alignItems={{ md: 'alignItemsFlexEnd' }}\n >\n <FlexItem>3.6Ghz</FlexItem>\n <FlexItem>1.5Ghz</FlexItem>\n <FlexItem>0GHZ</FlexItem>\n </Flex>\n </GridItem>\n <GridItem span={10}>\n <ChartGroup\n ariaDesc=\"Mock CPU speed\"\n ariaTitle=\"Mock CPU speed sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer\n labels={({ datum }) => `${datum.name}: ${datum.y}`}\n constrainToVisibleArea\n />\n }\n height={60}\n maxDomain={{ y: 3.6 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Temp', x: '1', y: 0.9 },\n { name: 'Temp', x: '2', y: 1.44 },\n { name: 'Temp', x: '3', y: 0.72 },\n { name: 'Temp', x: '4', y: 2.16 },\n { name: 'Temp', x: '5', y: 0.72 },\n { name: 'Temp', x: '6', y: 1.48 },\n { name: 'Temp', x: '7', y: 1.62 },\n { name: 'Temp', x: '8', y: 1.48 },\n { name: 'Temp', x: '9', y: 2.23 }\n ]}\n />\n </ChartGroup>\n </GridItem>\n </Grid>\n </GridItem>\n </Grid>\n </Grid>\n </CardBody>\n </CardExpandableContent>\n </Card>\n </Card>\n </>\n );\n};\n","title":"Nested cards","lang":"ts","className":""}}>
151
-
152
- </Example>,
153
- 'With accordion': props =>
154
- <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport {\n Card,\n CardTitle,\n CardBody,\n CardHeader,\n Title,\n Accordion,\n AccordionItem,\n AccordionToggle,\n AccordionContent,\n Divider,\n Grid,\n GridItem,\n Flex,\n FlexItem\n} from '@patternfly/react-core';\nimport { ChartArea, ChartGroup, ChartVoronoiContainer } from '@patternfly/react-charts/victory';\nimport sizing from '@patternfly/react-styles/css/utilities/Sizing/sizing';\nimport accessibility from '@patternfly/react-styles/css/utilities/Accessibility/accessibility';\n\nexport const CardWithAccordion: React.FunctionComponent = () => {\n const [openCPU, setOpenCPU] = useState('cpu1');\n\n return (\n <Card>\n <CardHeader>\n <CardTitle>\n <Title headingLevel=\"h4\" size=\"lg\">\n Hardware Monitor\n </Title>\n </CardTitle>\n </CardHeader>\n <CardBody>\n <Accordion>\n <AccordionItem isExpanded={openCPU === 'cpu1'}>\n <AccordionToggle\n id=\"cpu1-toggle\"\n onClick={() => {\n if (openCPU === 'cpu1') {\n setOpenCPU(null);\n } else {\n setOpenCPU('cpu1');\n }\n }}\n >\n CPU 1\n </AccordionToggle>\n <AccordionContent>\n <Grid hasGutter>\n <Grid hasGutter>\n <GridItem md={4}>\n <Flex\n className={sizing.h_100OnMd}\n direction={{ md: 'column' }}\n spaceItems={{ md: 'spaceItemsNone' }}\n justifyContent={{ md: 'justifyContentCenter' }}\n >\n <FlexItem>\n <b>Temperature</b>\n </FlexItem>\n <Divider\n className={accessibility.hiddenOnMd}\n orientation={{\n default: 'vertical'\n }}\n inset={{ default: 'insetSm' }}\n />\n <FlexItem>\n <span>64C</span>\n </FlexItem>\n </Flex>\n </GridItem>\n <GridItem md={8}>\n <Grid hasGutter>\n <GridItem span={2}>\n <Flex\n direction={{ default: 'column' }}\n spaceItems={{ default: 'spaceItemsNone' }}\n alignItems={{ md: 'alignItemsFlexEnd' }}\n >\n <FlexItem>100C</FlexItem>\n <FlexItem>50C</FlexItem>\n <FlexItem>0C</FlexItem>\n </Flex>\n </GridItem>\n <GridItem span={10}>\n <ChartGroup\n ariaDesc=\"Mock CPU temperature\"\n ariaTitle=\"Mock CPU temperature sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer\n labels={({ datum }) => `${datum.name}: ${datum.y}`}\n constrainToVisibleArea\n />\n }\n height={60}\n maxDomain={{ y: 100 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Temp', x: '1', y: 25 },\n { name: 'Temp', x: '2', y: 40 },\n { name: 'Temp', x: '3', y: 20 },\n { name: 'Temp', x: '4', y: 60 },\n { name: 'Temp', x: '5', y: 20 },\n { name: 'Temp', x: '6', y: 41 },\n { name: 'Temp', x: '7', y: 45 },\n { name: 'Temp', x: '8', y: 41 },\n { name: 'Temp', x: '9', y: 62 }\n ]}\n />\n </ChartGroup>\n </GridItem>\n </Grid>\n </GridItem>\n </Grid>\n <Divider className={accessibility.hiddenOnMd} />\n <Grid hasGutter>\n <GridItem md={4}>\n <Flex\n className={sizing.h_100OnMd}\n direction={{ md: 'column' }}\n spaceItems={{ md: 'spaceItemsNone' }}\n justifyContent={{ md: 'justifyContentCenter' }}\n >\n <FlexItem>\n <b>Speed</b>\n </FlexItem>\n <Divider\n className={accessibility.hiddenOnMd}\n orientation={{\n default: 'vertical'\n }}\n inset={{ default: 'insetSm' }}\n />\n <FlexItem>\n <span>2.3Ghz</span>\n </FlexItem>\n </Flex>\n </GridItem>\n <GridItem md={8}>\n <Grid hasGutter>\n <GridItem span={2}>\n <Flex\n direction={{ default: 'column' }}\n spaceItems={{ default: 'spaceItemsNone' }}\n alignItems={{ md: 'alignItemsFlexEnd' }}\n >\n <FlexItem>3.6Ghz</FlexItem>\n <FlexItem>1.5Ghz</FlexItem>\n <FlexItem>0GHZ</FlexItem>\n </Flex>\n </GridItem>\n <GridItem span={10}>\n <ChartGroup\n ariaDesc=\"Mock CPU speed\"\n ariaTitle=\"Mock CPU speed sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer\n labels={({ datum }) => `${datum.name}: ${datum.y}`}\n constrainToVisibleArea\n />\n }\n height={60}\n maxDomain={{ y: 3.6 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Temp', x: '1', y: 0.9 },\n { name: 'Temp', x: '2', y: 1.44 },\n { name: 'Temp', x: '3', y: 0.72 },\n { name: 'Temp', x: '4', y: 2.16 },\n { name: 'Temp', x: '5', y: 0.72 },\n { name: 'Temp', x: '6', y: 1.48 },\n { name: 'Temp', x: '7', y: 1.62 },\n { name: 'Temp', x: '8', y: 1.48 },\n { name: 'Temp', x: '9', y: 2.23 }\n ]}\n />\n </ChartGroup>\n </GridItem>\n </Grid>\n </GridItem>\n </Grid>\n </Grid>\n </AccordionContent>\n </AccordionItem>\n <AccordionItem isExpanded={openCPU === 'cpu2'}>\n <AccordionToggle\n id=\"cpu2-toggle\"\n onClick={() => {\n if (openCPU === 'cpu2') {\n setOpenCPU(null);\n } else {\n setOpenCPU('cpu2');\n }\n }}\n >\n CPU 2\n </AccordionToggle>\n <AccordionContent>\n <Grid hasGutter>\n <Grid hasGutter>\n <GridItem md={4}>\n <Flex\n className={sizing.h_100OnMd}\n direction={{ md: 'column' }}\n spaceItems={{ md: 'spaceItemsNone' }}\n justifyContent={{ md: 'justifyContentCenter' }}\n >\n <FlexItem>\n <b>Temperature</b>\n </FlexItem>\n <Divider\n className={accessibility.hiddenOnMd}\n orientation={{\n default: 'vertical'\n }}\n inset={{ default: 'insetSm' }}\n />\n <FlexItem>\n <span>64C</span>\n </FlexItem>\n </Flex>\n </GridItem>\n <GridItem md={8}>\n <Grid hasGutter>\n <GridItem span={2}>\n <Flex\n direction={{ default: 'column' }}\n spaceItems={{ default: 'spaceItemsNone' }}\n alignItems={{ md: 'alignItemsFlexEnd' }}\n >\n <FlexItem>100C</FlexItem>\n <FlexItem>50C</FlexItem>\n <FlexItem>0C</FlexItem>\n </Flex>\n </GridItem>\n <GridItem span={10}>\n <ChartGroup\n ariaDesc=\"Mock CPU temperature\"\n ariaTitle=\"Mock CPU temperature sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer\n labels={({ datum }) => `${datum.name}: ${datum.y}`}\n constrainToVisibleArea\n />\n }\n height={60}\n maxDomain={{ y: 100 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Temp', x: '1', y: 25 },\n { name: 'Temp', x: '2', y: 40 },\n { name: 'Temp', x: '3', y: 20 },\n { name: 'Temp', x: '4', y: 60 },\n { name: 'Temp', x: '5', y: 20 },\n { name: 'Temp', x: '6', y: 41 },\n { name: 'Temp', x: '7', y: 45 },\n { name: 'Temp', x: '8', y: 41 },\n { name: 'Temp', x: '9', y: 62 }\n ]}\n />\n </ChartGroup>\n </GridItem>\n </Grid>\n </GridItem>\n </Grid>\n <Divider className={accessibility.hiddenOnMd} />\n <Grid hasGutter>\n <GridItem md={4}>\n <Flex\n className={sizing.h_100OnMd}\n direction={{ md: 'column' }}\n spaceItems={{ md: 'spaceItemsNone' }}\n justifyContent={{ md: 'justifyContentCenter' }}\n >\n <FlexItem>\n <b>Speed</b>\n </FlexItem>\n <Divider\n className={accessibility.hiddenOnMd}\n orientation={{\n default: 'vertical'\n }}\n inset={{ default: 'insetSm' }}\n />\n <FlexItem>\n <span>2.3Ghz</span>\n </FlexItem>\n </Flex>\n </GridItem>\n <GridItem md={8}>\n <Grid hasGutter>\n <GridItem span={2}>\n <Flex\n direction={{ default: 'column' }}\n spaceItems={{ default: 'spaceItemsNone' }}\n alignItems={{ md: 'alignItemsFlexEnd' }}\n >\n <FlexItem>3.6Ghz</FlexItem>\n <FlexItem>1.5Ghz</FlexItem>\n <FlexItem>0GHZ</FlexItem>\n </Flex>\n </GridItem>\n <GridItem span={10}>\n <ChartGroup\n ariaDesc=\"Mock CPU speed\"\n ariaTitle=\"Mock CPU speed sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer\n labels={({ datum }) => `${datum.name}: ${datum.y}`}\n constrainToVisibleArea\n />\n }\n height={60}\n maxDomain={{ y: 3.6 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Temp', x: '1', y: 0.9 },\n { name: 'Temp', x: '2', y: 1.44 },\n { name: 'Temp', x: '3', y: 0.72 },\n { name: 'Temp', x: '4', y: 2.16 },\n { name: 'Temp', x: '5', y: 0.72 },\n { name: 'Temp', x: '6', y: 1.48 },\n { name: 'Temp', x: '7', y: 1.62 },\n { name: 'Temp', x: '8', y: 1.48 },\n { name: 'Temp', x: '9', y: 2.23 }\n ]}\n />\n </ChartGroup>\n </GridItem>\n </Grid>\n </GridItem>\n </Grid>\n </Grid>\n </AccordionContent>\n </AccordionItem>\n <AccordionItem isExpanded={openCPU === 'cpu3'}>\n <AccordionToggle\n id=\"cpu3-toggle\"\n onClick={() => {\n if (openCPU === 'cpu3') {\n setOpenCPU(null);\n } else {\n setOpenCPU('cpu3');\n }\n }}\n >\n CPU 3\n </AccordionToggle>\n <AccordionContent>\n <Grid hasGutter>\n <Grid hasGutter>\n <GridItem md={4}>\n <Flex\n className={sizing.h_100OnMd}\n direction={{ md: 'column' }}\n spaceItems={{ md: 'spaceItemsNone' }}\n justifyContent={{ md: 'justifyContentCenter' }}\n >\n <FlexItem>\n <b>Temperature</b>\n </FlexItem>\n <Divider\n className={accessibility.hiddenOnMd}\n orientation={{\n default: 'vertical'\n }}\n inset={{ default: 'insetSm' }}\n />\n <FlexItem>\n <span>64C</span>\n </FlexItem>\n </Flex>\n </GridItem>\n <GridItem md={8}>\n <Grid hasGutter>\n <GridItem span={2}>\n <Flex\n direction={{ default: 'column' }}\n spaceItems={{ default: 'spaceItemsNone' }}\n alignItems={{ md: 'alignItemsFlexEnd' }}\n >\n <FlexItem>100C</FlexItem>\n <FlexItem>50C</FlexItem>\n <FlexItem>0C</FlexItem>\n </Flex>\n </GridItem>\n <GridItem span={10}>\n <ChartGroup\n ariaDesc=\"Mock CPU temperature\"\n ariaTitle=\"Mock CPU temperature sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer\n labels={({ datum }) => `${datum.name}: ${datum.y}`}\n constrainToVisibleArea\n />\n }\n height={60}\n maxDomain={{ y: 100 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Temp', x: '1', y: 25 },\n { name: 'Temp', x: '2', y: 40 },\n { name: 'Temp', x: '3', y: 20 },\n { name: 'Temp', x: '4', y: 60 },\n { name: 'Temp', x: '5', y: 20 },\n { name: 'Temp', x: '6', y: 41 },\n { name: 'Temp', x: '7', y: 45 },\n { name: 'Temp', x: '8', y: 41 },\n { name: 'Temp', x: '9', y: 62 }\n ]}\n />\n </ChartGroup>\n </GridItem>\n </Grid>\n </GridItem>\n </Grid>\n <Divider className={accessibility.hiddenOnMd} />\n <Grid hasGutter>\n <GridItem md={4}>\n <Flex\n className={sizing.h_100OnMd}\n direction={{ md: 'column' }}\n spaceItems={{ md: 'spaceItemsNone' }}\n justifyContent={{ md: 'justifyContentCenter' }}\n >\n <FlexItem>\n <b>Speed</b>\n </FlexItem>\n <Divider\n className={accessibility.hiddenOnMd}\n orientation={{\n default: 'vertical'\n }}\n inset={{ default: 'insetSm' }}\n />\n <FlexItem>\n <span>2.3Ghz</span>\n </FlexItem>\n </Flex>\n </GridItem>\n <GridItem md={8}>\n <Grid hasGutter>\n <GridItem span={2}>\n <Flex\n direction={{ default: 'column' }}\n spaceItems={{ default: 'spaceItemsNone' }}\n alignItems={{ md: 'alignItemsFlexEnd' }}\n >\n <FlexItem>3.6Ghz</FlexItem>\n <FlexItem>1.5Ghz</FlexItem>\n <FlexItem>0GHZ</FlexItem>\n </Flex>\n </GridItem>\n <GridItem span={10}>\n <ChartGroup\n ariaDesc=\"Mock CPU speed\"\n ariaTitle=\"Mock CPU speed sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer\n labels={({ datum }) => `${datum.name}: ${datum.y}`}\n constrainToVisibleArea\n />\n }\n height={60}\n maxDomain={{ y: 3.6 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Temp', x: '1', y: 0.9 },\n { name: 'Temp', x: '2', y: 1.44 },\n { name: 'Temp', x: '3', y: 0.72 },\n { name: 'Temp', x: '4', y: 2.16 },\n { name: 'Temp', x: '5', y: 0.72 },\n { name: 'Temp', x: '6', y: 1.48 },\n { name: 'Temp', x: '7', y: 1.62 },\n { name: 'Temp', x: '8', y: 1.48 },\n { name: 'Temp', x: '9', y: 2.23 }\n ]}\n />\n </ChartGroup>\n </GridItem>\n </Grid>\n </GridItem>\n </Grid>\n </Grid>\n </AccordionContent>\n </AccordionItem>\n </Accordion>\n </CardBody>\n </Card>\n );\n};\n","title":"With accordion","lang":"ts","className":""}}>
155
-
156
- </Example>,
157
- 'Trend card 1': props =>
158
- <Example {...pageData} {...props} {...{"code":"import { Fragment, useState } from 'react';\nimport {\n Card,\n CardTitle,\n CardBody,\n CardHeader,\n Title,\n Gallery,\n GalleryItem,\n Flex,\n FlexItem,\n Select,\n SelectList,\n SelectOption,\n MenuToggle,\n MenuToggleElement\n} from '@patternfly/react-core';\nimport { ChartArea, ChartGroup, ChartVoronoiContainer } from '@patternfly/react-charts/victory';\n\nexport const CardTrendDemo1: React.FunctionComponent = () => {\n const [isOpen, setIsOpen] = useState(false);\n\n const selectItems = (\n <SelectList>\n <SelectOption key=\"option1\" value=\"Last hour\">\n Last hour\n </SelectOption>\n <SelectOption key=\"option2\" value=\"Last 6 hours\">\n Last 6 hours\n </SelectOption>\n <SelectOption key=\"option3\" value=\"Last 24 hours\">\n Last 24 hours\n </SelectOption>\n <SelectOption key=\"option4\" value=\"Last 7 days\">\n Last 7 days\n </SelectOption>\n </SelectList>\n );\n\n const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle ref={toggleRef} onClick={() => setIsOpen(!isOpen)} isExpanded={isOpen} variant=\"plainText\">\n Filter\n </MenuToggle>\n );\n\n const headerActions = (\n <Select onSelect={() => setIsOpen(!isOpen)} onOpenChange={setIsOpen} isOpen={isOpen} toggle={toggle}>\n {selectItems}\n </Select>\n );\n\n return (\n <Fragment>\n <b>Note:</b> Custom CSS is used in this demo to align the card title and select toggle text to{' '}\n <code>baseline</code> alignment.\n <br />\n <br />\n <Gallery hasGutter minWidths={{ default: '360px' }}>\n <GalleryItem>\n <Card id=\"trend-card-1-card\" component=\"div\">\n <CardHeader actions={{ actions: headerActions, hasNoOffset: true }}>\n <Flex direction={{ default: 'column' }} spaceItems={{ default: 'spaceItemsNone' }}>\n <FlexItem>\n <CardTitle>\n <Title headingLevel=\"h4\" size=\"lg\">\n 1,050,765 IOPS\n </Title>\n </CardTitle>\n </FlexItem>\n <FlexItem>\n <span>Workload</span>\n </FlexItem>\n </Flex>\n </CardHeader>\n <CardBody>\n <ChartGroup\n ariaDesc=\"Mock average cluster utilization\"\n ariaTitle=\"Mock cluster sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer labels={({ datum }) => `${datum.name}: ${datum.y}`} constrainToVisibleArea />\n }\n height={100}\n maxDomain={{ y: 9 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Cluster', x: '2015', y: 7 },\n { name: 'Cluster', x: '2016', y: 6 },\n { name: 'Cluster', x: '2017', y: 8 },\n { name: 'Cluster', x: '2018', y: 3 },\n { name: 'Cluster', x: '2019', y: 4 },\n { name: 'Cluster', x: '2020', y: 1 },\n { name: 'Cluster', x: '2021', y: 0 }\n ]}\n />\n </ChartGroup>\n </CardBody>\n </Card>\n </GalleryItem>\n </Gallery>\n </Fragment>\n );\n};\n","title":"Trend card 1","lang":"ts","className":""}}>
159
-
160
- </Example>,
161
- 'Trend card 2': props =>
162
- <Example {...pageData} {...props} {...{"code":"import {\n Card,\n CardTitle,\n CardFooter,\n CardHeader,\n Title,\n Gallery,\n GalleryItem,\n Flex,\n FlexItem\n} from '@patternfly/react-core';\nimport { ChartArea, ChartGroup, ChartVoronoiContainer } from '@patternfly/react-charts/victory';\n\nexport const CardTrendDemo2: React.FunctionComponent = () => (\n <Gallery hasGutter minWidths={{ default: '360px' }}>\n <GalleryItem>\n <Card id=\"trend-card-2-card\" component=\"div\">\n <CardHeader>\n <Flex alignItems={{ default: 'alignItemsCenter' }}>\n <FlexItem flex={{ default: 'flexNone' }}>\n <Flex direction={{ default: 'column' }} spaceItems={{ default: 'spaceItemsNone' }}>\n <FlexItem>\n <CardTitle>\n <Title headingLevel=\"h4\" size=\"2xl\">\n 842 TB\n </Title>\n </CardTitle>\n </FlexItem>\n <FlexItem>\n <span>Storage capacity</span>\n </FlexItem>\n </Flex>\n </FlexItem>\n <FlexItem flex={{ default: 'flex_1' }}>\n <ChartGroup\n ariaDesc=\"Mock average cluster utilization\"\n ariaTitle=\"Mock cluster sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer labels={({ datum }) => `${datum.name}: ${datum.y}`} constrainToVisibleArea />\n }\n height={100}\n maxDomain={{ y: 9 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Cluster', x: '2015', y: 7 },\n { name: 'Cluster', x: '2016', y: 6 },\n { name: 'Cluster', x: '2017', y: 8 },\n { name: 'Cluster', x: '2018', y: 3 },\n { name: 'Cluster', x: '2019', y: 4 },\n { name: 'Cluster', x: '2020', y: 1 },\n { name: 'Cluster', x: '2021', y: 0 }\n ]}\n />\n </ChartGroup>\n </FlexItem>\n </Flex>\n </CardHeader>\n <CardFooter>\n <Flex>\n <FlexItem>\n <a href=\"#\">Action 1</a>\n </FlexItem>\n <FlexItem>\n <a href=\"#\">Action 2</a>\n </FlexItem>\n </Flex>\n </CardFooter>\n </Card>\n </GalleryItem>\n </Gallery>\n);\n","title":"Trend card 2","lang":"ts","className":""}}>
163
-
164
- </Example>,
165
- 'Log view': props =>
166
- <Example {...pageData} {...props} {...{"code":"import { Fragment, useState } from 'react';\nimport {\n Card,\n CardHeader,\n CardTitle,\n CardBody,\n CardFooter,\n DescriptionList,\n DescriptionListGroup,\n DescriptionListTerm,\n DescriptionListDescription,\n Divider,\n Gallery,\n MenuToggle,\n MenuToggleElement,\n Select,\n SelectList,\n SelectOption,\n Timestamp,\n Title\n} from '@patternfly/react-core';\nimport flex from '@patternfly/react-styles/css/utilities/Flex/flex';\nimport cssGridTemplateColumnsMin from '@patternfly/react-tokens/dist/esm/l_gallery_GridTemplateColumns_min';\n\nexport const CardLogView: React.FunctionComponent = () => {\n const [isOpen, setIsOpen] = useState(false);\n\n const selectItems = (\n <SelectList>\n <SelectOption key=\"option1\" value=\"Last hour\">\n Last hour\n </SelectOption>\n <SelectOption key=\"option2\" value=\"Last 6 hours\">\n Last 6 hours\n </SelectOption>\n <SelectOption key=\"option3\" value=\"Last 24 hours\">\n Last 24 hours\n </SelectOption>\n <SelectOption key=\"option4\" value=\"Last 7 days\">\n Last 7 days\n </SelectOption>\n </SelectList>\n );\n\n const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle ref={toggleRef} onClick={() => setIsOpen(!isOpen)} isExpanded={isOpen} variant=\"plainText\">\n Filter\n </MenuToggle>\n );\n\n const headerActions = (\n <Select onSelect={() => setIsOpen(!isOpen)} onOpenChange={setIsOpen} isOpen={isOpen} toggle={toggle}>\n {selectItems}\n </Select>\n );\n\n return (\n <Fragment>\n <b>Note:</b> Custom CSS is used in this demo to align the card title and select toggle text to{' '}\n <code>baseline</code> alignment.\n <br />\n <br />\n <Gallery hasGutter style={{ [cssGridTemplateColumnsMin.name]: '360px' } as React.CSSProperties}>\n <Card id=\"card-log-view-example\">\n <CardHeader className={flex.alignItemsFlexStart} actions={{ actions: headerActions, hasNoOffset: true }}>\n <CardTitle>\n <Title headingLevel=\"h4\" size=\"xl\" style={{ paddingTop: '3px' }}>\n Activity\n </Title>\n </CardTitle>\n </CardHeader>\n <CardBody>\n <DescriptionList aria-label=\"Activity logs\">\n <DescriptionListGroup>\n <DescriptionListTerm>Readiness probe failed</DescriptionListTerm>\n <DescriptionListDescription>\n Readiness probe failed: Get https://10.131.0.7:5000/healthz: dial tcp 10.131.0.7:5000: connect:\n connection refused\n </DescriptionListDescription>\n <DescriptionListDescription>\n <Timestamp date={new Date('2023-06-17T11:02')} dateFormat=\"medium\" timeFormat=\"short\" />\n </DescriptionListDescription>\n </DescriptionListGroup>\n <DescriptionListGroup>\n <DescriptionListTerm>Successful assignment</DescriptionListTerm>\n <DescriptionListDescription>\n Successfully assigned default/example to ip-10-0-130-149.ec2.internal\n </DescriptionListDescription>\n <DescriptionListDescription>\n <Timestamp date={new Date('2023-06-17T11:13')} dateFormat=\"medium\" timeFormat=\"short\" />\n </DescriptionListDescription>\n </DescriptionListGroup>\n <DescriptionListGroup>\n <DescriptionListTerm>Pulling image</DescriptionListTerm>\n <DescriptionListDescription>Pulling image \"openshift/hello-openshift\"</DescriptionListDescription>\n <DescriptionListDescription>\n <Timestamp date={new Date('2023-06-17T10:59')} dateFormat=\"medium\" timeFormat=\"short\" />\n </DescriptionListDescription>\n </DescriptionListGroup>\n <DescriptionListGroup>\n <DescriptionListTerm>Created container</DescriptionListTerm>\n <DescriptionListDescription>Created container hello-openshift</DescriptionListDescription>\n <DescriptionListDescription>\n <Timestamp date={new Date('2023-06-17T10:45')} dateFormat=\"medium\" timeFormat=\"short\" />\n </DescriptionListDescription>\n </DescriptionListGroup>\n </DescriptionList>\n </CardBody>\n <Divider />\n <CardFooter>\n <a href=\"#\">View all activity</a>\n </CardFooter>\n </Card>\n </Gallery>\n </Fragment>\n );\n};\n","title":"Log view","lang":"ts","className":""}}>
167
-
168
- </Example>,
169
- 'Events view': props =>
170
- <Example {...pageData} {...props} {...{"code":"import { Fragment, useState } from 'react';\nimport {\n Card,\n CardHeader,\n CardTitle,\n CardBody,\n CardFooter,\n DescriptionList,\n DescriptionListGroup,\n DescriptionListTerm,\n DescriptionListDescription,\n Divider,\n Flex,\n FlexItem,\n Gallery,\n Icon,\n MenuToggle,\n Select,\n SelectList,\n SelectOption,\n Spinner,\n Timestamp,\n Title\n} from '@patternfly/react-core';\nimport RhUiErrorFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-error-fill-icon';\nimport RhUiCheckCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-check-circle-fill-icon';\nimport flex from '@patternfly/react-styles/css/utilities/Flex/flex';\nimport cssGridTemplateColumnsMin from '@patternfly/react-tokens/dist/esm/l_gallery_GridTemplateColumns_min';\n\nexport const CardEventsView: React.FunctionComponent = () => {\n const [isOpen, setIsOpen] = useState(false);\n\n const selectItems = (\n <SelectList>\n <SelectOption value=\"Success\" key=\"option1\">\n Success\n </SelectOption>\n <SelectOption value=\"Error\" key=\"option2\">\n Error\n </SelectOption>\n <SelectOption value=\"Warning\" key=\"option3\">\n Warning\n </SelectOption>\n </SelectList>\n );\n\n const toggle = (toggleRef) => (\n <MenuToggle ref={toggleRef} onClick={() => setIsOpen(!isOpen)} isExpanded={isOpen} variant=\"plainText\">\n Status\n </MenuToggle>\n );\n\n const headerActions = (\n <Select onSelect={() => setIsOpen(!isOpen)} onOpenChange={setIsOpen} isOpen={isOpen} toggle={toggle}>\n {selectItems}\n </Select>\n );\n return (\n <Fragment>\n <b>Note:</b> Custom CSS is used in this demo to align the card title and select toggle text to{' '}\n <code>baseline</code> alignment.\n <br />\n <br />\n <Gallery hasGutter style={{ [cssGridTemplateColumnsMin.name]: '360px' } as React.CSSProperties}>\n <Card id=\"card-events-view-example\">\n <CardHeader className={flex.alignItemsFlexStart} actions={{ actions: headerActions, hasNoOffset: true }}>\n <CardTitle>\n <Title headingLevel=\"h4\" size=\"xl\" style={{ paddingTop: '3px' }}>\n Events\n </Title>\n </CardTitle>\n </CardHeader>\n <CardBody>\n <DescriptionList aria-label=\"Events view\">\n <DescriptionListGroup>\n <DescriptionListTerm>\n <Flex flexWrap={{ default: 'nowrap' }}>\n <FlexItem>\n <Icon status=\"danger\">\n <RhUiErrorFillIcon />\n </Icon>\n </FlexItem>\n <FlexItem>\n <span>Readiness probe failed</span>\n </FlexItem>\n </Flex>\n </DescriptionListTerm>\n <DescriptionListDescription>\n Readiness probe failed: Get https://10.131.0.7:5000/healthz: dial tcp 10.131.0.7:5000: connect:\n connection refused\n </DescriptionListDescription>\n <DescriptionListDescription>\n <Timestamp date={new Date('2023-06-17T11:02')} dateFormat=\"medium\" timeFormat=\"short\" />\n </DescriptionListDescription>\n </DescriptionListGroup>\n <DescriptionListGroup>\n <DescriptionListTerm>\n <Flex flexWrap={{ default: 'nowrap' }}>\n <FlexItem>\n <Icon status=\"success\">\n <RhUiCheckCircleFillIcon />\n </Icon>\n </FlexItem>\n <FlexItem>\n <span>Successful assignment</span>\n </FlexItem>\n </Flex>\n </DescriptionListTerm>\n <DescriptionListDescription>\n Successfully assigned default/example to ip-10-0-130-149.ec2.internal\n </DescriptionListDescription>\n <DescriptionListDescription>\n <Timestamp date={new Date('2023-06-17T11:13')} dateFormat=\"medium\" timeFormat=\"short\" />\n </DescriptionListDescription>\n </DescriptionListGroup>\n <DescriptionListGroup>\n <DescriptionListTerm>\n <Flex flexWrap={{ default: 'nowrap' }}>\n <FlexItem>\n <Spinner size=\"md\" aria-label=\"loading spinner\" />\n </FlexItem>\n <FlexItem>\n <span>Pulling image</span>\n </FlexItem>\n </Flex>\n </DescriptionListTerm>\n <DescriptionListDescription>Pulling image \"openshift/hello-openshift\"</DescriptionListDescription>\n <DescriptionListDescription>\n <Timestamp date={new Date('2023-06-17T10:59')} dateFormat=\"medium\" timeFormat=\"short\" />\n </DescriptionListDescription>\n </DescriptionListGroup>\n <DescriptionListGroup>\n <DescriptionListTerm>\n <Flex flexWrap={{ default: 'nowrap' }}>\n <FlexItem>\n <Icon status=\"success\">\n <RhUiCheckCircleFillIcon />\n </Icon>\n </FlexItem>\n <FlexItem>\n <span>Created container</span>\n </FlexItem>\n </Flex>\n </DescriptionListTerm>\n <DescriptionListDescription>Created container hello-openshift</DescriptionListDescription>\n <DescriptionListDescription>\n <Timestamp date={new Date('2023-06-17T10:45')} dateFormat=\"medium\" timeFormat=\"short\" />\n </DescriptionListDescription>\n </DescriptionListGroup>\n </DescriptionList>\n </CardBody>\n <Divider />\n <CardFooter>\n <a href=\"#\">View all events</a>\n </CardFooter>\n </Card>\n </Gallery>\n </Fragment>\n );\n};\n","title":"Events view","lang":"ts","className":""}}>
171
-
172
- </Example>
173
- };
174
-
175
- const Component = () => (
176
- <React.Fragment>
177
- <AutoLinkHeader {...{"id":"demos","headingLevel":"h2","className":"ws-title ws-h2"}}>
178
- {`Demos`}
179
- </AutoLinkHeader>
180
- {React.createElement(pageData.examples["Horizontal card grid"])}
181
- {React.createElement(pageData.examples["Horizontal split"])}
182
- {React.createElement(pageData.examples["Details card"])}
183
- {React.createElement(pageData.examples["Aggregate status card"])}
184
- {React.createElement(pageData.examples["Status"])}
185
- {React.createElement(pageData.examples["Status Tabbed"])}
186
- {React.createElement(pageData.examples["Utilization card 1"])}
187
- {React.createElement(pageData.examples["Utilization card 2"])}
188
- {React.createElement(pageData.examples["Utilization card 3"])}
189
- {React.createElement(pageData.examples["Utilization card 4"])}
190
- {React.createElement(pageData.examples["Nested cards"])}
191
- {React.createElement(pageData.examples["With accordion"])}
192
- {React.createElement(pageData.examples["Trend card 1"])}
193
- {React.createElement(pageData.examples["Trend card 2"])}
194
- {React.createElement(pageData.examples["Log view"])}
195
- {React.createElement(pageData.examples["Events view"])}
196
- </React.Fragment>
197
- );
198
- Component.displayName = 'ComponentsCardReactDemosDocs';
199
- Component.pageData = pageData;
200
-
201
- export default Component;