@scality/core-ui 0.193.0 → 0.195.0

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 (155) hide show
  1. package/dist/components/UnsuccessfulResult.component.d.ts.map +1 -1
  2. package/dist/components/accordion/Accordion.component.d.ts.map +1 -1
  3. package/dist/components/banner/Banner.component.d.ts +6 -1
  4. package/dist/components/banner/Banner.component.d.ts.map +1 -1
  5. package/dist/components/banner/Banner.component.js +30 -9
  6. package/dist/components/breadcrumb/Breadcrumb.component.d.ts.map +1 -1
  7. package/dist/components/buttonv2/CopyButton.component.d.ts.map +1 -1
  8. package/dist/components/charts/MetricsTimeSpanProvider.d.ts.map +1 -1
  9. package/dist/components/charts/barchart/Barchart.d.ts.map +1 -1
  10. package/dist/components/charts/barchart/Barchart.js +29 -19
  11. package/dist/components/charts/barchart/Barchart.utils.d.ts.map +1 -1
  12. package/dist/components/charts/barchart/BarchartTooltip.d.ts.map +1 -1
  13. package/dist/components/charts/common/ChartTooltip.d.ts.map +1 -1
  14. package/dist/components/charts/common/SharedComponents.d.ts +6 -6
  15. package/dist/components/charts/common/SharedComponents.d.ts.map +1 -1
  16. package/dist/components/charts/common/SharedComponents.js +7 -3
  17. package/dist/components/charts/common/chartUtils.d.ts +7 -2
  18. package/dist/components/charts/common/chartUtils.d.ts.map +1 -1
  19. package/dist/components/charts/common/chartUtils.js +55 -20
  20. package/dist/components/charts/globalhealthbar/GlobalHealthBar.hooks.d.ts.map +1 -1
  21. package/dist/components/charts/globalhealthbar/GlobalHealthBar.utils.d.ts +3 -1
  22. package/dist/components/charts/globalhealthbar/GlobalHealthBar.utils.d.ts.map +1 -1
  23. package/dist/components/charts/globalhealthbar/GlobalHealthBarTooltip.d.ts.map +1 -1
  24. package/dist/components/charts/globalhealthbar/HealthBarXAxis.d.ts.map +1 -1
  25. package/dist/components/charts/index.d.ts +1 -1
  26. package/dist/components/charts/index.d.ts.map +1 -1
  27. package/dist/components/charts/legend/ChartLegend.d.ts.map +1 -1
  28. package/dist/components/charts/legend/ChartLegendWrapper.d.ts.map +1 -1
  29. package/dist/components/charts/linetimeseries/LineTimeSerieChart.d.ts +12 -47
  30. package/dist/components/charts/linetimeseries/LineTimeSerieChart.d.ts.map +1 -1
  31. package/dist/components/charts/linetimeseries/LineTimeSerieChart.js +46 -220
  32. package/dist/components/charts/linetimeseries/LineTimeSerieChart.types.d.ts +77 -0
  33. package/dist/components/charts/linetimeseries/LineTimeSerieChart.types.d.ts.map +1 -0
  34. package/dist/components/charts/linetimeseries/LineTimeSerieChart.types.js +6 -0
  35. package/dist/components/charts/linetimeseries/LineTimeSerieChart.utils.d.ts.map +1 -1
  36. package/dist/components/charts/linetimeseries/LineTimeSerieChartTooltip.d.ts +18 -0
  37. package/dist/components/charts/linetimeseries/LineTimeSerieChartTooltip.d.ts.map +1 -0
  38. package/dist/components/charts/linetimeseries/LineTimeSerieChartTooltip.js +65 -0
  39. package/dist/components/charts/linetimeseries/useChartData.d.ts +44 -0
  40. package/dist/components/charts/linetimeseries/useChartData.d.ts.map +1 -0
  41. package/dist/components/charts/linetimeseries/useChartData.js +207 -0
  42. package/dist/components/charts/linetimeseries/useChartHover.d.ts +15 -0
  43. package/dist/components/charts/linetimeseries/useChartHover.d.ts.map +1 -0
  44. package/dist/components/charts/linetimeseries/useChartHover.js +29 -0
  45. package/dist/components/checkbox/Checkbox.component.d.ts.map +1 -1
  46. package/dist/components/checkbox/Checkbox.component.js +15 -7
  47. package/dist/components/constrainedtext/Constrainedtext.component.d.ts.map +1 -1
  48. package/dist/components/constrainedtext/Constrainedtext.component.js +3 -2
  49. package/dist/components/coreuithemeprovider/CoreUiThemeProvider.d.ts.map +1 -1
  50. package/dist/components/date/FormattedDateTime.d.ts.map +1 -1
  51. package/dist/components/dropdown/Dropdown.component.d.ts.map +1 -1
  52. package/dist/components/dropdown/Dropdown.component.js +3 -0
  53. package/dist/components/error-pages/ErrorPage401.component.js +1 -1
  54. package/dist/components/error-pages/ErrorPage404.component.js +1 -1
  55. package/dist/components/error-pages/ErrorPage500.component.js +1 -1
  56. package/dist/components/form/Form.component.d.ts.map +1 -1
  57. package/dist/components/form/Form.component.js +3 -3
  58. package/dist/components/icon/CustomsIcons.d.ts +10 -0
  59. package/dist/components/icon/CustomsIcons.d.ts.map +1 -1
  60. package/dist/components/icon/CustomsIcons.js +8 -0
  61. package/dist/components/icon/Icon.component.d.ts +2 -131
  62. package/dist/components/icon/Icon.component.d.ts.map +1 -1
  63. package/dist/components/icon/Icon.component.js +10 -133
  64. package/dist/components/icon/iconTable.d.ts +138 -0
  65. package/dist/components/icon/iconTable.d.ts.map +1 -0
  66. package/dist/components/icon/iconTable.js +137 -0
  67. package/dist/components/iconhelper/IconHelper.d.ts.map +1 -1
  68. package/dist/components/infomessage/InfoMessage.component.d.ts.map +1 -1
  69. package/dist/components/infomessage/InfoMessage.component.js +1 -1
  70. package/dist/components/infomessage/InfoMessageUtils.d.ts.map +1 -1
  71. package/dist/components/inlineinput/InlineInput.d.ts.map +1 -1
  72. package/dist/components/inputlist/InputButtons.d.ts.map +1 -1
  73. package/dist/components/inputlist/InputList.component.d.ts +2 -0
  74. package/dist/components/inputlist/InputList.component.d.ts.map +1 -1
  75. package/dist/components/inputlist/InputList.component.js +2 -2
  76. package/dist/components/inputv2/inputv2.d.ts +2 -0
  77. package/dist/components/inputv2/inputv2.d.ts.map +1 -1
  78. package/dist/components/inputv2/inputv2.js +6 -2
  79. package/dist/components/layout/v2/panels.d.ts.map +1 -1
  80. package/dist/components/modal/Modal.component.d.ts.map +1 -1
  81. package/dist/components/searchinput/SearchInput.component.d.ts.map +1 -1
  82. package/dist/components/searchinput/SearchInput.component.js +1 -1
  83. package/dist/components/statusicon/StatusIcon.component.d.ts.map +1 -1
  84. package/dist/components/tablev2/MultiSelectableContent.d.ts.map +1 -1
  85. package/dist/components/tablev2/Search.d.ts.map +1 -1
  86. package/dist/components/tablev2/TableCommon.d.ts.map +1 -1
  87. package/dist/components/tablev2/TableUtils.d.ts.map +1 -1
  88. package/dist/components/tablev2/Tablestyle.d.ts.map +1 -1
  89. package/dist/components/tablev2/Tablestyle.js +2 -3
  90. package/dist/components/tablev2/Tablev2.component.d.ts.map +1 -1
  91. package/dist/components/tabsv2/useScrollingTabs.d.ts.map +1 -1
  92. package/dist/components/text/Text.component.d.ts +9 -6
  93. package/dist/components/text/Text.component.d.ts.map +1 -1
  94. package/dist/components/text/Text.component.js +5 -0
  95. package/dist/components/toast/Toast.component.d.ts.map +1 -1
  96. package/dist/components/toast/useMutationsHandler.d.ts.map +1 -1
  97. package/dist/components/tooltip/Tooltip.component.js +1 -1
  98. package/dist/index.d.ts +4 -2
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +1 -0
  101. package/dist/next.d.ts +3 -3
  102. package/dist/next.d.ts.map +1 -1
  103. package/dist/organisms/attachments/AttachmentTable.d.ts.map +1 -1
  104. package/dist/spacing.d.ts.map +1 -1
  105. package/dist/utils.d.ts +16 -0
  106. package/dist/utils.d.ts.map +1 -1
  107. package/dist/utils.js +27 -0
  108. package/jest.config.js +6 -1
  109. package/package.json +7 -7
  110. package/src/lib/components/banner/Banner.component.test.tsx +58 -0
  111. package/src/lib/components/banner/Banner.component.tsx +57 -10
  112. package/src/lib/components/charts/barchart/Barchart.test.tsx +3 -1
  113. package/src/lib/components/charts/barchart/Barchart.tsx +123 -106
  114. package/src/lib/components/charts/common/SharedComponents.tsx +15 -11
  115. package/src/lib/components/charts/common/chartUtils.test.ts +27 -12
  116. package/src/lib/components/charts/common/chartUtils.ts +67 -23
  117. package/src/lib/components/charts/index.ts +1 -1
  118. package/src/lib/components/charts/linetimeseries/LineTimeSerieChart.tsx +136 -516
  119. package/src/lib/components/charts/linetimeseries/LineTimeSerieChart.types.ts +93 -0
  120. package/src/lib/components/charts/linetimeseries/LineTimeSerieChartTooltip.tsx +137 -0
  121. package/src/lib/components/charts/linetimeseries/useChartData.ts +322 -0
  122. package/src/lib/components/charts/linetimeseries/useChartHover.ts +35 -0
  123. package/src/lib/components/checkbox/Checkbox.component.tsx +19 -20
  124. package/src/lib/components/constrainedtext/Constrainedtext.component.tsx +3 -2
  125. package/src/lib/components/dropdown/Dropdown.component.tsx +3 -0
  126. package/src/lib/components/error-pages/ErrorPage401.component.tsx +1 -1
  127. package/src/lib/components/error-pages/ErrorPage404.component.tsx +1 -1
  128. package/src/lib/components/error-pages/ErrorPage500.component.tsx +1 -1
  129. package/src/lib/components/form/Form.component.tsx +5 -19
  130. package/src/lib/components/icon/CustomsIcons.tsx +36 -0
  131. package/src/lib/components/icon/Icon.component.tsx +17 -137
  132. package/src/lib/components/icon/iconTable.ts +137 -0
  133. package/src/lib/components/iconhelper/IconHelper.test.tsx +2 -2
  134. package/src/lib/components/infomessage/InfoMessage.component.tsx +1 -1
  135. package/src/lib/components/inputlist/InputList.component.tsx +4 -2
  136. package/src/lib/components/inputv2/inputv2.tsx +11 -5
  137. package/src/lib/components/searchinput/SearchInput.component.tsx +1 -0
  138. package/src/lib/components/searchinput/SearchInput.test.tsx +6 -6
  139. package/src/lib/components/tablev2/Tablestyle.tsx +2 -4
  140. package/src/lib/components/text/Text.component.tsx +18 -10
  141. package/src/lib/components/tooltip/Tooltip.component.tsx +1 -1
  142. package/src/lib/index.ts +3 -2
  143. package/src/lib/next.ts +3 -3
  144. package/src/lib/utils.ts +42 -0
  145. package/stories/GlobalHealthBar/globalhealthbar.stories.tsx +1 -1
  146. package/stories/banner.stories.tsx +37 -5
  147. package/stories/inputlist.stories.tsx +18 -6
  148. package/stories/linetimeseriechart.stories.tsx +325 -6
  149. package/tsconfig.json +1 -1
  150. package/dist/components/date/FormattedDateTime.spec.d.ts +0 -2
  151. package/dist/components/date/FormattedDateTime.spec.d.ts.map +0 -1
  152. package/dist/components/date/FormattedDateTime.spec.js +0 -161
  153. package/dist/components/date/dateDiffer.spec.d.ts +0 -2
  154. package/dist/components/date/dateDiffer.spec.d.ts.map +0 -1
  155. package/dist/components/date/dateDiffer.spec.js +0 -6
@@ -42,7 +42,7 @@ function ErrorPage401({
42
42
  return (
43
43
  <ErrorPageContainer className="sc-error-page401" {...rest}>
44
44
  <Row>
45
- <Icon name="Exclamation-triangle" size="2x" color="statusWarning" />
45
+ <Icon name="Exclamation-circle" size="2x" color="statusWarning" />
46
46
  <Title>{translations[locale].unexpected_error}</Title>
47
47
  </Row>
48
48
  <Row>
@@ -36,7 +36,7 @@ function ErrorPage404({ locale = 'en', onReturnHomeClick, ...rest }: Props) {
36
36
  return (
37
37
  <ErrorPageContainer className="sc-error-page404" {...rest}>
38
38
  <Row>
39
- <Icon name="Exclamation-triangle" size="2x" color="statusWarning" />
39
+ <Icon name="Exclamation-circle" size="2x" color="statusWarning" />
40
40
  <Title>{translations[locale].not_exist}</Title>
41
41
  </Row>
42
42
  <Row>
@@ -49,7 +49,7 @@ function ErrorPage500({
49
49
  return (
50
50
  <ErrorPageContainer className="sc-error-page500" {...rest}>
51
51
  <Row>
52
- <Icon name="Exclamation-triangle" size="2x" color="statusWarning" />
52
+ <Icon name="Exclamation-circle" size="2x" color="statusWarning" />
53
53
  <Title>{translations[locale].unexpected_error}</Title>
54
54
  </Row>
55
55
  <Row>
@@ -18,7 +18,7 @@ import { Box } from '../box/Box';
18
18
  import { Icon, IconName } from '../icon/Icon.component';
19
19
  import { IconHelp } from '../iconhelper/IconHelper';
20
20
  import { ScrollbarWrapper } from '../scrollbarwrapper/ScrollbarWrapper.component';
21
- import { Text } from '../text/Text.component';
21
+ import { HelperText, Text } from '../text/Text.component';
22
22
 
23
23
  const DESCRIPTION_PREFIX = 'describe-';
24
24
  const LABEL_PREFIX = 'label-';
@@ -202,33 +202,19 @@ const FormGroup = ({
202
202
  >
203
203
  {content}
204
204
  {error ? (
205
- <Text
206
- variant="Smaller"
207
- color="statusCritical"
208
- isEmphazed
209
- id={`${DESCRIPTION_PREFIX}${id}`}
210
- >
211
- {error}
212
- </Text>
205
+ <HelperText color="statusCritical" id={`${DESCRIPTION_PREFIX}${id}`}>{error}</HelperText>
213
206
  ) : help ? (
214
207
  <div
215
208
  style={{
216
209
  opacity: disabled ? 0.5 : 1,
217
210
  }}
218
211
  >
219
- <Text
220
- variant="Smaller"
221
- color="textSecondary"
222
- isEmphazed
223
- id={`${DESCRIPTION_PREFIX}${id}`}
224
- >
225
- {help}
226
- </Text>
212
+ <HelperText color="textSecondary" id={`${DESCRIPTION_PREFIX}${id}`}>{help}</HelperText>
227
213
  </div>
228
214
  ) : (
229
- <Text variant="Smaller" isEmphazed>
215
+ <HelperText>
230
216
  &nbsp;
231
- </Text>
217
+ </HelperText>
232
218
  )}
233
219
  </Stack>
234
220
  </Box>
@@ -50,3 +50,39 @@ export const RemoteGroup = ({ ariaLabel, color, size }) => {
50
50
  </svg>
51
51
  );
52
52
  };
53
+
54
+ export const Bucket = ({ ariaLabel, color, size }) => {
55
+ const getColor = useGetColor(color);
56
+ return (
57
+ <svg
58
+ viewBox="0 0 32 28"
59
+ fill="none"
60
+ xmlns="http://www.w3.org/2000/svg"
61
+ className={'svg-inline--fa ' + (size ? `fa-${size}` : '')}
62
+ aria-label={ariaLabel}
63
+ >
64
+ <path
65
+ d="M30.0239 0C31.2114 0 32.1489 1.125 31.9614 2.3125L28.5239 24.5625C28.2114 26.5625 26.5239 28 24.5239 28H7.46143C5.46143 28 3.77393 26.5625 3.52393 24.5625L0.0239303 2.3125C-0.16357 1.125 0.77393 0 2.02393 0H30.0239ZM27.6489 4H4.33643L6.21143 16H25.7739L27.6489 4Z"
66
+ fill={getColor}
67
+ />
68
+ </svg>
69
+ );
70
+ };
71
+
72
+ export const Buckets = ({ ariaLabel, color, size }) => {
73
+ const getColor = useGetColor(color);
74
+ return (
75
+ <svg
76
+ viewBox="0 0 37 28"
77
+ fill="none"
78
+ xmlns="http://www.w3.org/2000/svg"
79
+ className={'svg-inline--fa ' + (size ? `fa-${size}` : '')}
80
+ aria-label={ariaLabel}
81
+ >
82
+ <path
83
+ d="M35.1063 9.33301C35.9032 9.33313 36.5329 10.0834 36.4071 10.875L34.0995 25.708C33.8897 27.0412 32.7571 27.9999 31.4149 28H24.1278C26.417 27.5019 28.221 25.649 28.5985 23.2334V23.2305L29.0975 20H32.2538L33.5126 12H30.3329L30.745 9.33301H35.1063ZM28.0223 0C29.1305 0.000168028 30.0049 1.04998 29.8299 2.1582L26.6219 22.9248C26.3303 24.7915 24.7552 26.1338 22.8885 26.1338H6.96373C5.09707 26.1338 3.52226 24.7915 3.28893 22.9248L0.0223272 2.1582C-0.152604 1.04996 0.721996 0.000113715 1.88854 0H28.0223ZM4.04674 3.7334L5.79674 14.9336H24.0555L25.8055 3.7334H4.04674ZM22.4901 12H17.8671L18.0135 12.9336H15.2987L14.9725 10.875C14.8467 10.0834 15.4756 9.33323 16.3143 9.33301H22.9071L22.4901 12Z"
84
+ fill={getColor}
85
+ />
86
+ </svg>
87
+ );
88
+ };
@@ -10,142 +10,12 @@ import {
10
10
  import styled, { css } from 'styled-components';
11
11
  import { CoreUITheme } from '../../style/theme';
12
12
  import { Loader } from '../loader/Loader.component';
13
- import { RemoteGroup, RemoteUser } from './CustomsIcons';
13
+ import { Bucket, Buckets, RemoteGroup, RemoteUser } from './CustomsIcons';
14
+ import { iconTable } from './iconTable';
14
15
 
15
16
  // Module-level cache for imported icons
16
17
  const iconCache: Record<string, any> = {};
17
18
 
18
- export const iconTable = {
19
- Account: 'fas faWallet',
20
- Backend: 'fas faNetworkWired',
21
- Tape: 'fas faTape',
22
- 'Node-backend': 'fas faServer',
23
- 'Volume-backend': 'fas faHdd',
24
- 'Node-pdf': 'fas faDatabase',
25
- 'Volume-pdf': 'fas faCompactDisc',
26
- Network: 'fas faProjectDiagram',
27
- Bucket: 'fas faGlassWhiskey',
28
- 'Cloud-backend': 'fas faCloud',
29
- Datacenter: 'fas faWarehouse',
30
- 'Simple-user': 'fas faUser',
31
- User: 'fas faUserCog',
32
- Group: 'fas faUsers',
33
- Alert: 'fas faBell',
34
- Bell: 'far faBell',
35
- 'Lat-menu': 'fas faBars',
36
- Dashboard: 'fas faDesktop',
37
- Workflow: 'fas faRoute',
38
- Expiration: 'fas faStopwatch',
39
- Replication: 'fas faCoins',
40
- Transition: 'fas faRocket',
41
- Discovery: 'fas faReply',
42
- Metrics: 'fas faChartLine',
43
- Edit: 'fas faEdit',
44
- Logs: 'far faFileAlt',
45
- Lock: 'fa faLock',
46
- 'Lock-open': 'fa faLockOpen',
47
- 'Create-add': 'fas faPlus',
48
- Delete: 'fas faTrash',
49
- Save: 'fas faSave',
50
- 'External-link': 'fas faExternalLinkAlt',
51
- Link: 'fas faLink',
52
- Unlink: 'fas faUnlink',
53
- Close: 'fas faTimes',
54
- 'Dropdown-down': 'fas faCaretDown',
55
- 'Dropdown-up': 'fas faCaretUp',
56
- Search: 'fas faSearch',
57
- More: 'fas faEllipsisV',
58
- Info: 'fas faQuestionCircle',
59
- Sync: 'fas faSync',
60
- Export: 'fas faFileExport',
61
- Copy: 'far faClone',
62
- 'Simple-upload': 'fas faUpload',
63
- Upload: 'fas faFileUpload',
64
- 'Add-plus': 'fas faPlusSquare',
65
- Minus: 'fas faMinus',
66
- 'Remove-minus': 'fas faMinusSquare',
67
- Sort: 'fas faSort',
68
- 'Sort-up': 'fas faSortUp',
69
- 'Sort-down': 'fas faSortDown',
70
- Calendar: 'fas faCalendarWeek',
71
- 'Calendar-minus': 'fas faCalendarMinus',
72
- 'Arrow-up': 'fas faArrowUp',
73
- 'Arrow-down': 'fas faArrowDown',
74
- 'Arrow-right': 'fas faArrowRight',
75
- 'Arrow-left': 'fas faArrowLeft',
76
- 'Arrow-alt-circle-up': 'fas faArrowAltCircleUp',
77
- Folder: 'far faFolder',
78
- File: 'far faFile',
79
- 'File-invoice': 'fas faFileInvoice',
80
- License: 'fas faFileInvoice',
81
- 'Deletion-marker': 'fas faBan',
82
- 'Map-marker': 'fas faMapMarkerAlt',
83
- Location: 'fas faMapMarkerAlt',
84
- 'Info-circle': 'fas faInfoCircle',
85
- 'Exclamation-triangle': 'fas faExclamationTriangle',
86
- 'Exclamation-circle': 'fas faExclamationCircle',
87
- Exclamation: 'fas faExclamation',
88
- Check: 'fas faCheck',
89
- Protected: 'fas faShieldAlt',
90
- 'Chevron-left': 'fas faChevronLeft',
91
- 'Chevron-right': 'fas faChevronRight',
92
- 'Chevron-down': 'fas faChevronDown',
93
- 'Chevron-up': 'fas faChevronUp',
94
- 'Angle-right': 'fas faAngleRight',
95
- 'Angle-double-right': 'fas faAngleDoubleRight',
96
- Language: 'fas faLanguage',
97
- Theme: 'fas faPalette',
98
- Documentation: 'fas faClipboardList',
99
- Support: 'fas faComments',
100
- EULA: 'fas faFileContract',
101
- 'Log-out': 'fas faSignOutAlt',
102
- Hourglass: 'far faHourglass',
103
- Pause: 'fas faPause',
104
- 'Pause-circle': 'far faPauseCircle',
105
- 'Play-circle': 'far faPlayCircle',
106
- Upgrade: 'fas faLevelUpAlt',
107
- Expansion: 'fas faExpandAlt',
108
- Rebalance: 'fas faBalanceScale',
109
- Maintenance: 'fas faHardHat',
110
- Role: 'fas faHatCowboy',
111
- 'Change-erasure': 'fas faExchangeAlt',
112
- 'Circle-health': 'fas faCircle',
113
- 'Circle-empty': 'far faCircle',
114
- 'Dot-circle': 'fas faDotCircle',
115
- 'Check-circle': 'fas faCheckCircle',
116
- 'Times-circle': 'fas faTimesCircle',
117
- Toolbox: 'fas faToolbox',
118
- Cubes: 'fas faCubes',
119
- Policy: 'fas faFileSignature',
120
- Pen: 'fa faPen',
121
- Pencil: 'fas faPencilAlt',
122
- Eye: 'fas faEye',
123
- EyeSlash: 'fas faEyeSlash',
124
- Snowflake: 'fas faSnowflake',
125
- Key: 'fas faKey',
126
- Filter: 'fas faFilter',
127
- Download: 'fas faDownload',
128
- Certificate: 'fas faCertificate',
129
- Redo: 'fas faRedoAlt',
130
- Eraser: 'fas faEraser',
131
- 'ID-card': 'fas faIdCard',
132
- Setting: 'fas faCog', //TODO: Rename to Gear in FA v6 <i class="fa-sharp fa-solid fa-gear"></i>
133
- Desktop: 'fas faDesktop',
134
- Globe: 'fas faGlobe',
135
- Satellite: 'fas faSatelliteDish',
136
- LightMode: 'fas faSun',
137
- DarkMode: 'fas faMoon',
138
- News: 'fas faBullhorn',
139
- Ring: 'fas faRing',
140
- Stop: 'fas faStop',
141
- Play: 'fas faPlay',
142
- Mail: 'fas faEnvelope',
143
- ThumbsUp: 'far faThumbsUp',
144
- ThumbsDown: 'far faThumbsDown',
145
- Sidebar: 'fas faColumns',
146
- Bookopen: 'fas faBookOpen',
147
- };
148
-
149
19
  type IconProps = {
150
20
  'aria-label'?: string;
151
21
  color?: string;
@@ -164,10 +34,18 @@ export const customIcons: Record<
164
34
  'Remote-group': ({ 'aria-label': ariaLabel, color, size }) => (
165
35
  <RemoteGroup ariaLabel={ariaLabel} color={color} size={size} />
166
36
  ),
37
+ Bucket: ({ 'aria-label': ariaLabel, color, size }) => (
38
+ <Bucket ariaLabel={ariaLabel} color={color} size={size} />
39
+ ),
40
+ Buckets: ({ 'aria-label': ariaLabel, color, size }) => (
41
+ <Buckets ariaLabel={ariaLabel} color={color} size={size} />
42
+ ),
167
43
  };
168
44
 
169
45
  customIcons['Remote-user'].displayName = 'RemoteUser';
170
46
  customIcons['Remote-group'].displayName = 'RemoteGroup';
47
+ customIcons['Bucket'].displayName = 'Bucket';
48
+ customIcons['Buckets'].displayName = 'Buckets';
171
49
 
172
50
  const IconStyled = styled(FontAwesomeIcon)`
173
51
  ${(props) => {
@@ -272,10 +150,12 @@ function NonWrappedIcon({
272
150
  }
273
151
 
274
152
  // Handle FontAwesome icons with dynamic import
275
- import(`@fortawesome/${fontAwesomeType}/${iconClass}.js`).then((module) => {
276
- setIcon(module[iconClass]);
277
- iconCache[cacheKey] = module[iconClass];
278
- });
153
+ import(
154
+ /* webpackExclude: /import\.macro\.js$/ */
155
+ `@fortawesome/${fontAwesomeType}/${iconClass}.js`).then((module) => {
156
+ setIcon(module[iconClass]);
157
+ iconCache[cacheKey] = module[iconClass];
158
+ });
279
159
  return () => setIcon(undefined);
280
160
  }, [name, iconInfo]);
281
161
 
@@ -312,4 +192,4 @@ function Icon({ withWrapper, ...props }: Props) {
312
192
  return <NonWrappedIcon {...props} />;
313
193
  }
314
194
 
315
- export { Icon };
195
+ export { Icon, iconTable };
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Maps human-readable icon names to FontAwesome icon info.
3
+ * Format: 'iconType iconClass' where:
4
+ * - iconType: 'fas' (solid), 'far' (regular)
5
+ * - iconClass: the FA v7 icon class name (e.g., 'faWallet')
6
+ *
7
+ * Updated to FA v7 naming conventions.
8
+ */
9
+ export const iconTable = {
10
+ Account: 'fas faWallet',
11
+ Backend: 'fas faNetworkWired',
12
+ Tape: 'fas faTape',
13
+ 'Node-backend': 'fas faServer',
14
+ 'Volume-backend': 'fas faHardDrive',
15
+ 'Node-pdf': 'fas faDatabase',
16
+ 'Volume-pdf': 'fas faCompactDisc',
17
+ Network: 'fas faDiagramProject',
18
+ 'Cloud-backend': 'fas faCloud',
19
+ Datacenter: 'fas faWarehouse',
20
+ 'Simple-user': 'fas faUser',
21
+ User: 'fas faUserGear',
22
+ Group: 'fas faUsers',
23
+ Alert: 'fas faBell',
24
+ Bell: 'far faBell',
25
+ 'Lat-menu': 'fas faBars',
26
+ Dashboard: 'fas faDesktop',
27
+ Workflow: 'fas faRoute',
28
+ Expiration: 'fas faStopwatch',
29
+ Replication: 'fas faCoins',
30
+ Transition: 'fas faRocket',
31
+ Discovery: 'fas faReply',
32
+ Metrics: 'fas faChartLine',
33
+ Edit: 'fas faPenToSquare',
34
+ Logs: 'far faFileLines',
35
+ Lock: 'fas faLock',
36
+ 'Lock-open': 'fas faLockOpen',
37
+ 'Create-add': 'fas faPlus',
38
+ Delete: 'fas faTrash',
39
+ Save: 'fas faFloppyDisk',
40
+ 'External-link': 'fas faArrowUpRightFromSquare',
41
+ Link: 'fas faLink',
42
+ Unlink: 'fas faLinkSlash',
43
+ Close: 'fas faXmark',
44
+ 'Dropdown-down': 'fas faCaretDown',
45
+ 'Dropdown-up': 'fas faCaretUp',
46
+ Search: 'fas faMagnifyingGlass',
47
+ More: 'fas faEllipsisVertical',
48
+ Info: 'fas faCircleQuestion',
49
+ Sync: 'fas faRotate',
50
+ Export: 'fas faFileExport',
51
+ Copy: 'far faClone',
52
+ 'Simple-upload': 'fas faUpload',
53
+ Upload: 'fas faFileArrowUp',
54
+ 'Add-plus': 'fas faSquarePlus',
55
+ Minus: 'fas faMinus',
56
+ 'Remove-minus': 'fas faSquareMinus',
57
+ Sort: 'fas faSort',
58
+ 'Sort-up': 'fas faSortUp',
59
+ 'Sort-down': 'fas faSortDown',
60
+ Calendar: 'fas faCalendarWeek',
61
+ 'Calendar-minus': 'fas faCalendarMinus',
62
+ 'Arrow-up': 'fas faArrowUp',
63
+ 'Arrow-down': 'fas faArrowDown',
64
+ 'Arrow-right': 'fas faArrowRight',
65
+ 'Arrow-left': 'fas faArrowLeft',
66
+ 'Arrow-alt-circle-up': 'fas faCircleArrowUp',
67
+ Folder: 'far faFolder',
68
+ File: 'far faFile',
69
+ 'File-invoice': 'fas faFileInvoice',
70
+ License: 'fas faFileInvoice',
71
+ 'Deletion-marker': 'fas faBan',
72
+ 'Map-marker': 'fas faLocationDot',
73
+ Location: 'fas faLocationDot',
74
+ 'Info-circle': 'fas faCircleInfo',
75
+ 'Exclamation-triangle': 'fas faTriangleExclamation',
76
+ 'Exclamation-circle': 'fas faCircleExclamation',
77
+ Exclamation: 'fas faExclamation',
78
+ Check: 'fas faCheck',
79
+ Protected: 'fas faShieldHalved',
80
+ 'Chevron-left': 'fas faChevronLeft',
81
+ 'Chevron-right': 'fas faChevronRight',
82
+ 'Chevron-down': 'fas faChevronDown',
83
+ 'Chevron-up': 'fas faChevronUp',
84
+ 'Angle-right': 'fas faAngleRight',
85
+ 'Angle-double-right': 'fas faAnglesRight',
86
+ Language: 'fas faLanguage',
87
+ Theme: 'fas faPalette',
88
+ Documentation: 'fas faClipboardList',
89
+ Support: 'fas faComments',
90
+ EULA: 'fas faFileContract',
91
+ 'Log-out': 'fas faRightFromBracket',
92
+ Hourglass: 'far faHourglass',
93
+ Pause: 'fas faPause',
94
+ 'Pause-circle': 'far faCirclePause',
95
+ 'Play-circle': 'far faCirclePlay',
96
+ Upgrade: 'fas faArrowTurnUp',
97
+ Expansion: 'fas faUpRightAndDownLeftFromCenter',
98
+ Rebalance: 'fas faScaleBalanced',
99
+ Maintenance: 'fas faHelmetSafety',
100
+ Role: 'fas faHatCowboy',
101
+ 'Change-erasure': 'fas faArrowRightArrowLeft',
102
+ 'Circle-health': 'fas faCircle',
103
+ 'Circle-empty': 'far faCircle',
104
+ 'Dot-circle': 'fas faCircleDot',
105
+ 'Check-circle': 'fas faCircleCheck',
106
+ 'Times-circle': 'fas faCircleXmark',
107
+ Toolbox: 'fas faToolbox',
108
+ Cubes: 'fas faCubes',
109
+ Policy: 'fas faFileSignature',
110
+ Pen: 'fas faPen',
111
+ Pencil: 'fas faPencil',
112
+ Eye: 'fas faEye',
113
+ EyeSlash: 'fas faEyeSlash',
114
+ Snowflake: 'fas faSnowflake',
115
+ Key: 'fas faKey',
116
+ Filter: 'fas faFilter',
117
+ Download: 'fas faDownload',
118
+ Certificate: 'fas faCertificate',
119
+ Redo: 'fas faRotateRight',
120
+ Eraser: 'fas faEraser',
121
+ 'ID-card': 'fas faIdCard',
122
+ Setting: 'fas faGear',
123
+ Desktop: 'fas faDesktop',
124
+ Globe: 'fas faGlobe',
125
+ Satellite: 'fas faSatelliteDish',
126
+ LightMode: 'fas faSun',
127
+ DarkMode: 'fas faMoon',
128
+ News: 'fas faBullhorn',
129
+ Ring: 'fas faRing',
130
+ Stop: 'fas faStop',
131
+ Play: 'fas faPlay',
132
+ Mail: 'fas faEnvelope',
133
+ ThumbsUp: 'far faThumbsUp',
134
+ ThumbsDown: 'far faThumbsDown',
135
+ Sidebar: 'fas faTableColumns',
136
+ Bookopen: 'fas faBookOpen',
137
+ };
@@ -35,7 +35,7 @@ describe('IconHelper', () => {
35
35
  expect(screen.getByText(tooltipMessage)).toBeVisible();
36
36
  });
37
37
  });
38
- it('should be able to change accessible label with title', async () => {
38
+ it('should render with title prop (passed to FontAwesome as native tooltip)', async () => {
39
39
  const { Wrapper } = getWrapper();
40
40
  render(
41
41
  <Wrapper>
@@ -46,7 +46,7 @@ describe('IconHelper', () => {
46
46
  </Wrapper>,
47
47
  );
48
48
  await waitFor(() => {
49
- expect(screen.getByLabelText('Info Helper Testing')).toBeInTheDocument();
49
+ expect(screen.getByRole('img', { name: /Info/i })).toBeInTheDocument();
50
50
  });
51
51
  });
52
52
  });
@@ -32,7 +32,7 @@ export const InfoMessage = ({ title, content, link, linkText }: Props) => {
32
32
  >
33
33
  <Stack>
34
34
  <Icon name="Info-circle" color={theme.infoPrimary} size="lg" />
35
- {typeof title === 'string' ? <Text isEmphazed>{title}</Text> : title}
35
+ {typeof title === 'string' ? <Text color="textPrimary" isEmphazed>{title}</Text> : title}
36
36
  </Stack>
37
37
  <Text color="textSecondary" isGentleEmphazed>
38
38
  {content}
@@ -1,7 +1,7 @@
1
1
  import { HTMLProps, forwardRef } from 'react';
2
2
  import { RefCallBack } from 'react-hook-form';
3
3
  import { Box } from '../box/Box';
4
- import { Input } from '../inputv2/inputv2';
4
+ import { Input, InputSize } from '../inputv2/inputv2';
5
5
  import { AddButton, SubButton } from './InputButtons';
6
6
 
7
7
  export type InputListProps<T> = Omit<HTMLProps<HTMLInputElement>, 'size'> & {
@@ -15,6 +15,7 @@ export type InputListProps<T> = Omit<HTMLProps<HTMLInputElement>, 'size'> & {
15
15
  disabled?: boolean;
16
16
  maxItems?: number;
17
17
  value: T[];
18
+ size?: InputSize;
18
19
  };
19
20
 
20
21
  function InternalInputList<
@@ -33,6 +34,7 @@ function InternalInputList<
33
34
  maxItems,
34
35
  value,
35
36
  name,
37
+ size = '1/2',
36
38
  ...rest
37
39
  }: InputListProps<T>,
38
40
  _,
@@ -64,7 +66,7 @@ function InternalInputList<
64
66
  <Input
65
67
  id={`${name}[${index}]`}
66
68
  aria-label={`${name}${index}`}
67
- size="1/2"
69
+ size={size}
68
70
  value={val}
69
71
  onChange={(evt) => {
70
72
  const tempValues = [...value];
@@ -81,19 +81,19 @@ const InputBorder = styled.div<{
81
81
  height: ${spacing.r32};
82
82
  border: ${spacing.r1} solid
83
83
  ${(props) =>
84
- props.hasError ? props.theme.statusCritical : props.theme.border};
84
+ props.hasError ? props.theme.statusCritical : props.theme.border};
85
85
  border-radius: ${spacing.r4};
86
86
  &:hover {
87
87
  ${(props) =>
88
- !props.disabled &&
89
- `border: ${spacing.r1} solid ${props.theme.infoPrimary};`}
88
+ !props.disabled &&
89
+ `border: ${spacing.r1} solid ${props.theme.infoPrimary};`}
90
90
  }
91
91
  &:focus-within {
92
92
  border: ${spacing.r1} solid ${(props) => props.theme.infoPrimary};
93
93
  }
94
94
  `;
95
95
 
96
- const SelfCenterredIcon = styled(Icon)<{ color: keyof CoreUITheme }>`
96
+ const SelfCenterredIcon = styled(Icon) <{ color: keyof CoreUITheme }>`
97
97
  align-self: center;
98
98
  color: ${(props) => props.theme[props.color]};
99
99
  `;
@@ -108,6 +108,7 @@ export type InputProps = {
108
108
  rightIcon?: IconName;
109
109
  rightIconColor?: keyof CoreUITheme;
110
110
  size?: InputSize;
111
+ noPlaceholderPrefix?: boolean;
111
112
  } & Omit<InputHTMLAttributes<HTMLInputElement>, 'size'>;
112
113
 
113
114
  export const Input = forwardRef<HTMLInputElement, InputProps>(
@@ -122,6 +123,7 @@ export const Input = forwardRef<HTMLInputElement, InputProps>(
122
123
  rightIconColor = 'textSecondary',
123
124
  placeholder,
124
125
  size,
126
+ noPlaceholderPrefix,
125
127
  ...inputProps
126
128
  },
127
129
  ref,
@@ -131,7 +133,11 @@ export const Input = forwardRef<HTMLInputElement, InputProps>(
131
133
  disabled: disabledFromFieldContext,
132
134
  error: errorFromFieldContext,
133
135
  } = useFieldContext();
134
- placeholder = placeholder ? `Example: ${placeholder}` : undefined;
136
+ placeholder = placeholder
137
+ ? noPlaceholderPrefix
138
+ ? placeholder
139
+ : `Example: ${placeholder}`
140
+ : undefined;
135
141
 
136
142
  return (
137
143
  <InputBorder
@@ -117,6 +117,7 @@ const SearchInput = forwardRef(
117
117
  aria-label="search"
118
118
  name="search"
119
119
  placeholder={placeholder}
120
+ noPlaceholderPrefix
120
121
  value={debouncedValue}
121
122
  onChange={handleChange}
122
123
  onReset={reset}
@@ -15,7 +15,7 @@ describe('SearchInput', () => {
15
15
  clearButton: () => screen.queryByRole('button'),
16
16
  };
17
17
  it('should render the SearchInput component', async () => {
18
- render(<SearchInputRender value="" onChange={() => {}} />);
18
+ render(<SearchInputRender value="" onChange={() => { }} />);
19
19
  await waitFor(() => screen.queryAllByRole('img', { hidden: true }));
20
20
 
21
21
  const searchInput = selectors.searchInput();
@@ -24,15 +24,15 @@ describe('SearchInput', () => {
24
24
 
25
25
  it('should render the SearchInput component with placeholder', () => {
26
26
  render(
27
- <SearchInputRender value="" onChange={() => {}} placeholder="Search" />,
27
+ <SearchInputRender value="" onChange={() => { }} placeholder="Search" />,
28
28
  );
29
29
 
30
- const searchInput = screen.queryByPlaceholderText('Example: Search');
30
+ const searchInput = screen.queryByPlaceholderText('Search');
31
31
  expect(searchInput).toBeInTheDocument();
32
32
  });
33
33
 
34
34
  it('should render the SearchInput component with disabled prop', () => {
35
- render(<SearchInputRender value="" onChange={() => {}} disabled />);
35
+ render(<SearchInputRender value="" onChange={() => { }} disabled />);
36
36
 
37
37
  const searchInput = selectors.searchInput();
38
38
  expect(searchInput).toBeInTheDocument();
@@ -55,7 +55,7 @@ describe('SearchInput', () => {
55
55
  });
56
56
 
57
57
  it('should have a clear button when the input is not empty', () => {
58
- render(<SearchInputRender value="" onChange={() => {}} />);
58
+ render(<SearchInputRender value="" onChange={() => { }} />);
59
59
 
60
60
  // clear button should not be rendered as value is empty
61
61
  let clearButton = selectors.clearButton();
@@ -72,7 +72,7 @@ describe('SearchInput', () => {
72
72
  it('should call the onReset function when the clear button is clicked and clear the input value', async () => {
73
73
  const onReset = jest.fn();
74
74
  render(
75
- <SearchInputRender value="test" onChange={() => {}} onReset={onReset} />,
75
+ <SearchInputRender value="test" onChange={() => { }} onReset={onReset} />,
76
76
  );
77
77
  const searchInput = selectors.searchInput();
78
78
  const clearButton = selectors.clearButton();
@@ -8,7 +8,6 @@ import { HeaderGroup } from 'react-table';
8
8
  import { Icon } from '../icon/Icon.component';
9
9
  import { FocusVisibleStyle } from '../buttonv2/Buttonv2.component';
10
10
  import { spacing } from '../../spacing';
11
- import { Box } from '../box/Box';
12
11
 
13
12
  const borderSize = '4px';
14
13
  export const SortIncentive = styled.span`
@@ -65,7 +64,6 @@ export const HeadRow = styled.div<HeadRowType>`
65
64
  overflow: hidden;
66
65
  border-bottom: 1px solid
67
66
  ${(props) => props.theme[props.separationLineVariant]};
68
- padding-right: ${borderSize};
69
67
  padding-left: ${spacing.r16};
70
68
  `;
71
69
 
@@ -105,7 +103,7 @@ export const TableRow = styled.div<TableRowType>`
105
103
  if (props.selectedId && props.isSelected) {
106
104
  return css`
107
105
  background-color: ${props.theme.highlight};
108
- border-right: ${borderSize} solid ${props.theme.selectedActive};
106
+ box-shadow: inset -${borderSize} 0 0 ${props.theme.selectedActive};
109
107
  `;
110
108
  }
111
109
  }}
@@ -124,7 +122,7 @@ export const TableRowMultiSelectable = styled.div<TableRowMultiSelectableType>`
124
122
  if (props.isSelected) {
125
123
  return css`
126
124
  background-color: ${(props) => props.theme.highlight};
127
- border-right: ${borderSize} solid ${props.theme.selectedActive};
125
+ box-shadow: inset -${borderSize} 0 0 ${props.theme.selectedActive};
128
126
  `;
129
127
  }
130
128
  }}