@xqmsg/ui-core 0.23.1-rc.0 → 0.23.1-rc.2

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 (200) hide show
  1. package/CHANGELOG.md +456 -0
  2. package/LICENSE +20 -20
  3. package/README.md +40 -40
  4. package/dist/{89793640b494d7ea.svg → 78c9d6fd7766410f.svg} +9 -9
  5. package/dist/components/input/StackedInput/StackedInput.d.ts +1 -0
  6. package/dist/components/input/StackedPilledInput/index.d.ts +1 -0
  7. package/dist/components/input/StackedTextarea/StackedTextarea.d.ts +1 -0
  8. package/dist/theme/components/button.d.ts +0 -3
  9. package/dist/theme/components/checkbox.d.ts +5 -4
  10. package/dist/theme/components/input.d.ts +12 -1
  11. package/dist/theme/components/select.d.ts +12 -1
  12. package/dist/theme/components/textarea.d.ts +15 -3
  13. package/dist/ui-core.cjs.development.js +85 -78
  14. package/dist/ui-core.cjs.development.js.map +1 -1
  15. package/dist/ui-core.cjs.production.min.js +1 -1
  16. package/dist/ui-core.cjs.production.min.js.map +1 -1
  17. package/dist/ui-core.esm.js +85 -78
  18. package/dist/ui-core.esm.js.map +1 -1
  19. package/package.json +118 -118
  20. package/src/components/banner/Banner.stories.tsx +100 -100
  21. package/src/components/banner/index.tsx +73 -73
  22. package/src/components/breadcrumbs/Breadcrumbs.stories.tsx +66 -66
  23. package/src/components/breadcrumbs/components/icon/index.tsx +38 -38
  24. package/src/components/breadcrumbs/components/label/index.tsx +20 -20
  25. package/src/components/breadcrumbs/index.tsx +48 -48
  26. package/src/components/button/Button.stories.tsx +140 -140
  27. package/src/components/button/google/GoogleButton.stories.tsx +23 -23
  28. package/src/components/button/google/index.tsx +29 -29
  29. package/src/components/button/index.tsx +51 -51
  30. package/src/components/button/microsoft/MicrosoftButton.stories.tsx +25 -25
  31. package/src/components/button/microsoft/index.tsx +29 -29
  32. package/src/components/button/spinner/SpinnerButton.stories.tsx +60 -60
  33. package/src/components/button/spinner/index.tsx +36 -36
  34. package/src/components/card/Card.stories.tsx +56 -56
  35. package/src/components/card/index.tsx +78 -78
  36. package/src/components/form/Form.stories.tsx +62 -62
  37. package/src/components/form/FormTypes.ts +20 -20
  38. package/src/components/form/hooks/useFormHandler.tsx +74 -74
  39. package/src/components/form/index.tsx +25 -25
  40. package/src/components/form/section/FormSection.stories.tsx +109 -109
  41. package/src/components/form/section/index.tsx +87 -87
  42. package/src/components/form/utils/formErrors.ts +34 -34
  43. package/src/components/icons/checkmark/checkmark.svg +3 -3
  44. package/src/components/icons/checkmark/index.tsx +13 -13
  45. package/src/components/icons/chevron/down/chevron-down.svg +3 -3
  46. package/src/components/icons/chevron/down/index.tsx +14 -14
  47. package/src/components/icons/chevron/right/chevron-right.svg +3 -3
  48. package/src/components/icons/chevron/right/index.tsx +13 -13
  49. package/src/components/icons/clock/clock.svg +3 -3
  50. package/src/components/icons/clock/index.tsx +13 -13
  51. package/src/components/icons/close/close.svg +3 -3
  52. package/src/components/icons/close/index.tsx +21 -21
  53. package/src/components/icons/dropdown/dropdown.svg +3 -3
  54. package/src/components/icons/dropdown/index.tsx +16 -16
  55. package/src/components/icons/error/error.svg +3 -3
  56. package/src/components/icons/error/index.tsx +13 -13
  57. package/src/components/icons/file/fill/file-fill.svg +4 -4
  58. package/src/components/icons/file/fill/index.tsx +13 -13
  59. package/src/components/icons/file/outline/file-outline.svg +3 -3
  60. package/src/components/icons/file/outline/index.tsx +13 -13
  61. package/src/components/icons/folder/add/fill/folder-add-fill.svg +3 -3
  62. package/src/components/icons/folder/add/fill/index.tsx +13 -13
  63. package/src/components/icons/folder/add/outline/folder-add-outline.svg +3 -3
  64. package/src/components/icons/folder/add/outline/index.tsx +15 -15
  65. package/src/components/icons/folder/fill/folder-fill-gradient.svg +33 -33
  66. package/src/components/icons/folder/fill/folder-fill.svg +4 -4
  67. package/src/components/icons/folder/fill/index.tsx +21 -21
  68. package/src/components/icons/folder/outline/folder-outline.svg +3 -3
  69. package/src/components/icons/folder/outline/index.tsx +13 -13
  70. package/src/components/icons/gear/GearIcon.tsx +36 -36
  71. package/src/components/icons/google/drive/index.tsx +13 -13
  72. package/src/components/icons/google/google.svg +13 -13
  73. package/src/components/icons/google/index.tsx +13 -13
  74. package/src/components/icons/group/group.svg +3 -3
  75. package/src/components/icons/group/index.tsx +13 -13
  76. package/src/components/icons/home/home.svg +3 -3
  77. package/src/components/icons/home/index.tsx +13 -13
  78. package/src/components/icons/image/image.svg +3 -3
  79. package/src/components/icons/image/index.tsx +13 -13
  80. package/src/components/icons/index.tsx +101 -101
  81. package/src/components/icons/link/index.tsx +13 -13
  82. package/src/components/icons/link/link.svg +4 -4
  83. package/src/components/icons/menu/index.tsx +13 -13
  84. package/src/components/icons/menu/menu.svg +3 -3
  85. package/src/components/icons/microsoft/index.tsx +13 -13
  86. package/src/components/icons/microsoft/microsoft.svg +9 -9
  87. package/src/components/icons/microsoft/onedrive/index.tsx +16 -16
  88. package/src/components/icons/neutral/index.tsx +14 -14
  89. package/src/components/icons/neutral/neutral.svg +3 -3
  90. package/src/components/icons/page/index.tsx +13 -13
  91. package/src/components/icons/page/page.svg +3 -3
  92. package/src/components/icons/positive/index.tsx +13 -13
  93. package/src/components/icons/positive/positive.svg +3 -3
  94. package/src/components/icons/question/index.tsx +13 -13
  95. package/src/components/icons/question/question.svg +3 -3
  96. package/src/components/icons/search/index.tsx +13 -13
  97. package/src/components/icons/search/search.svg +3 -3
  98. package/src/components/icons/services/index.tsx +13 -13
  99. package/src/components/icons/services/services.svg +3 -3
  100. package/src/components/icons/settings/index.tsx +14 -14
  101. package/src/components/icons/settings/settings.svg +6 -6
  102. package/src/components/icons/table/fill/index.tsx +13 -13
  103. package/src/components/icons/table/fill/table-fill.svg +3 -3
  104. package/src/components/icons/table/outline/index.tsx +13 -13
  105. package/src/components/icons/table/outline/table-outline.svg +3 -3
  106. package/src/components/icons/task/index.tsx +10 -10
  107. package/src/components/icons/task/task.svg +11 -11
  108. package/src/components/icons/trash/index.tsx +13 -13
  109. package/src/components/icons/trash/trash.svg +3 -3
  110. package/src/components/icons/vault/index.tsx +14 -14
  111. package/src/components/icons/video/index.tsx +13 -13
  112. package/src/components/icons/video/video.svg +3 -3
  113. package/src/components/icons/warning/index.tsx +13 -13
  114. package/src/components/icons/warning/warning.svg +3 -3
  115. package/src/components/icons/workspace/index.tsx +14 -14
  116. package/src/components/input/Input.stories.tsx +287 -286
  117. package/src/components/input/InputTypes.ts +77 -77
  118. package/src/components/input/StackedCheckbox/StackedCheckbox.tsx +44 -44
  119. package/src/components/input/StackedInput/StackedInput.tsx +60 -55
  120. package/src/components/input/StackedMultiSelect/index.tsx +349 -349
  121. package/src/components/input/StackedPilledInput/index.tsx +386 -362
  122. package/src/components/input/StackedRadio/StackedRadioGroup.tsx +38 -38
  123. package/src/components/input/StackedSelect/index.tsx +232 -232
  124. package/src/components/input/StackedSwitch/index.tsx +33 -33
  125. package/src/components/input/StackedTextarea/StackedTextarea.tsx +55 -53
  126. package/src/components/input/components/dropdown/index.tsx +111 -111
  127. package/src/components/input/components/label/index.tsx +35 -35
  128. package/src/components/input/components/token/Token.stories.tsx +25 -25
  129. package/src/components/input/components/token/index.tsx +45 -45
  130. package/src/components/input/index.tsx +298 -295
  131. package/src/components/layout/BorderedBox/index.tsx +30 -30
  132. package/src/components/layout/Layout.stories.tsx +40 -40
  133. package/src/components/layout/index.tsx +100 -100
  134. package/src/components/link/Link.stories.tsx +23 -23
  135. package/src/components/link/index.tsx +34 -34
  136. package/src/components/loading/LoadingIndicator.stories.tsx +45 -45
  137. package/src/components/loading/index.tsx +45 -45
  138. package/src/components/modal/Modal.stories.tsx +36 -36
  139. package/src/components/modal/components/action/index.tsx +37 -37
  140. package/src/components/modal/index.tsx +41 -41
  141. package/src/components/navigation/NavigationMenu.stories.tsx +85 -85
  142. package/src/components/navigation/components/header/index.tsx +27 -27
  143. package/src/components/navigation/components/items/index.tsx +76 -76
  144. package/src/components/navigation/index.tsx +87 -87
  145. package/src/components/select/index.tsx +140 -184
  146. package/src/components/table/Table.stories.tsx +63 -63
  147. package/src/components/table/TableTypes.ts +15 -15
  148. package/src/components/table/components/loading/index.tsx +45 -45
  149. package/src/components/table/components/text/index.tsx +23 -23
  150. package/src/components/table/empty/index.tsx +47 -47
  151. package/src/components/table/index.tsx +84 -84
  152. package/src/components/table/utils/generateTableColumns.ts +9 -9
  153. package/src/components/tabs/TabsWrapper.stories.tsx +85 -85
  154. package/src/components/tabs/index.tsx +39 -39
  155. package/src/components/text/Text.stories.tsx +59 -59
  156. package/src/components/text/index.tsx +16 -16
  157. package/src/components/toast/Toast.stories.tsx +52 -52
  158. package/src/components/toast/index.tsx +78 -78
  159. package/src/components/toolbar/Toolbar.stories.tsx +59 -59
  160. package/src/components/toolbar/components/actions/add/index.tsx +18 -18
  161. package/src/components/toolbar/components/actions/search/index.tsx +38 -38
  162. package/src/components/toolbar/components/actions/sort/index.tsx +49 -49
  163. package/src/components/toolbar/components/breadcrumbs/index.tsx +63 -63
  164. package/src/components/toolbar/components/breadcrumbs/item/index.tsx +72 -72
  165. package/src/components/toolbar/components/dropdown/index.tsx +107 -107
  166. package/src/components/toolbar/components/navigation/components/button/left/index.tsx +28 -28
  167. package/src/components/toolbar/components/navigation/components/button/left/left-arrow.svg +3 -3
  168. package/src/components/toolbar/components/navigation/components/button/right/index.tsx +27 -27
  169. package/src/components/toolbar/components/navigation/components/button/right/right-arrow.svg +3 -3
  170. package/src/components/toolbar/components/navigation/index.tsx +36 -36
  171. package/src/components/toolbar/index.tsx +55 -55
  172. package/src/hooks/useDeepEffect.tsx +22 -22
  173. package/src/hooks/useDidMountEffect.tsx +13 -13
  174. package/src/hooks/useOnOutsideClick.tsx +31 -31
  175. package/src/hooks/useToast.tsx +16 -16
  176. package/src/index.tsx +78 -78
  177. package/src/theme/components/alert.ts +60 -60
  178. package/src/theme/components/badge.ts +59 -59
  179. package/src/theme/components/button.ts +163 -163
  180. package/src/theme/components/checkbox.ts +28 -25
  181. package/src/theme/components/code.ts +16 -16
  182. package/src/theme/components/form-error.ts +31 -31
  183. package/src/theme/components/form-label.ts +17 -17
  184. package/src/theme/components/form.ts +29 -29
  185. package/src/theme/components/input.ts +65 -57
  186. package/src/theme/components/link.ts +118 -118
  187. package/src/theme/components/modal.ts +45 -45
  188. package/src/theme/components/select.ts +36 -36
  189. package/src/theme/components/switch.ts +89 -89
  190. package/src/theme/components/table.ts +42 -42
  191. package/src/theme/components/tabs.ts +255 -255
  192. package/src/theme/components/text.ts +93 -93
  193. package/src/theme/components/textarea.ts +42 -41
  194. package/src/theme/customXQChakraTheme.ts +54 -54
  195. package/src/theme/foundations/breakpoints.ts +18 -18
  196. package/src/theme/foundations/colors.ts +165 -165
  197. package/src/theme/foundations/shadows.ts +23 -23
  198. package/src/theme/foundations/typography.ts +62 -62
  199. package/src/theme/provider/index.tsx +21 -21
  200. package/src/theme/styles.ts +19 -19
@@ -1,53 +1,55 @@
1
- import React from 'react';
2
- import { Flex, Textarea } from '@chakra-ui/react';
3
- import { TextareaFieldProps } from '../InputTypes';
4
-
5
- export interface StackedTextareaProps extends TextareaFieldProps {
6
- isRequired?: boolean;
7
- allowDefault?: boolean;
8
- variant: string;
9
- }
10
-
11
- /**
12
- * A functional React component utilized to render the `StackedTextarea` component.
13
- */
14
- const StackedTextarea = React.forwardRef<
15
- HTMLTextAreaElement,
16
- StackedTextareaProps
17
- >(({ isRequired, allowDefault, variant, ...props }, _ref) => {
18
- if (variant === 'mobile') {
19
- return (
20
- <Flex>
21
- {allowDefault}
22
- <Textarea
23
- ref={_ref}
24
- {...props}
25
- variant={variant}
26
- fontSize="17px"
27
- onKeyDown={e => {
28
- if (e.key === 'Enter' && !allowDefault) {
29
- e.stopPropagation();
30
- e.preventDefault();
31
- }
32
- }}
33
- />
34
- </Flex>
35
- );
36
- }
37
- return (
38
- <Textarea
39
- ref={_ref}
40
- {...props}
41
- variant={variant}
42
- fontSize={variant === '' ? '13px' : '17px'}
43
- onKeyDown={e => {
44
- if (e.key === 'Enter' && !allowDefault) {
45
- e.stopPropagation();
46
- e.preventDefault();
47
- }
48
- }}
49
- />
50
- );
51
- });
52
-
53
- export default StackedTextarea;
1
+ import React from 'react';
2
+ import { Flex, Textarea } from '@chakra-ui/react';
3
+ import { TextareaFieldProps } from '../InputTypes';
4
+
5
+ export interface StackedTextareaProps extends TextareaFieldProps {
6
+ isRequired?: boolean;
7
+ allowDefault?: boolean;
8
+ variant: string;
9
+ label?: string;
10
+ }
11
+
12
+ /**
13
+ * A functional React component utilized to render the `StackedTextarea` component.
14
+ */
15
+ const StackedTextarea = React.forwardRef<
16
+ HTMLTextAreaElement,
17
+ StackedTextareaProps
18
+ >(({ isRequired, allowDefault, variant, label, ...props }, _ref) => {
19
+ const isMobile = variant === 'mobile';
20
+ if (isMobile) {
21
+ return (
22
+ <Flex>
23
+ <Textarea
24
+ ref={_ref}
25
+ {...props}
26
+ variant={variant}
27
+ fontSize="17px"
28
+ placeholder={label ?? ''}
29
+ onKeyDown={e => {
30
+ if (e.key === 'Enter' && !allowDefault) {
31
+ e.stopPropagation();
32
+ e.preventDefault();
33
+ }
34
+ }}
35
+ />
36
+ </Flex>
37
+ );
38
+ }
39
+ return (
40
+ <Textarea
41
+ ref={_ref}
42
+ {...props}
43
+ variant={variant}
44
+ fontSize="13px"
45
+ onKeyDown={e => {
46
+ if (e.key === 'Enter' && !allowDefault) {
47
+ e.stopPropagation();
48
+ e.preventDefault();
49
+ }
50
+ }}
51
+ />
52
+ );
53
+ });
54
+
55
+ export default StackedTextarea;
@@ -1,111 +1,111 @@
1
- import React, { RefObject, useMemo } from 'react';
2
- import { Box, Flex } from '@chakra-ui/react';
3
- import colors from '../../../../../src/theme/foundations/colors';
4
- import { FieldOption, FieldOptions } from '../../InputTypes';
5
-
6
- export interface DropdownProps {
7
- onSelectItem: (option: FieldOption) => void;
8
- options: FieldOptions;
9
- dropdownRef: RefObject<HTMLDivElement>;
10
- position: 'top' | 'bottom';
11
- optionIndex?: number | null;
12
- }
13
-
14
- /**
15
- * A functional React component utilized to render the `Dropdown` component
16
- */
17
- export const Dropdown: React.FC<DropdownProps> = ({
18
- onSelectItem,
19
- options,
20
- dropdownRef,
21
- position,
22
- optionIndex,
23
- }) => {
24
- const DropdownContent = useMemo(() => {
25
- return options.map((option, idx) => (
26
- <Box key={idx} width="100%" role="combobox">
27
- {option.value === 'section_header' &&
28
- options[idx + 1] &&
29
- options[idx + 1].value !== 'section_header' && (
30
- <Box
31
- color={colors.label.secondary.light}
32
- fontSize="13px"
33
- width="100%"
34
- fontWeight="bold"
35
- px="8px"
36
- bg="inherit"
37
- whiteSpace="nowrap"
38
- >
39
- {idx > 0 && (
40
- <Box
41
- width="100%"
42
- my="3px"
43
- borderTop="2px solid"
44
- borderColor={colors.border.default}
45
- />
46
- )}
47
- {option.label}
48
- </Box>
49
- )}
50
- {option.value !== 'section_header' && (
51
- <Box
52
- cursor="pointer"
53
- borderRadius="inherit"
54
- onClick={() => onSelectItem(option)}
55
- key={option.value}
56
- fontSize="13px"
57
- px="8px"
58
- py="4px"
59
- width="100%"
60
- color={
61
- optionIndex === idx
62
- ? colors.label.primary.dark
63
- : colors.label.primary.light
64
- }
65
- _hover={{
66
- color: colors.label.primary.dark,
67
- bg: colors.fill.action,
68
- borderRadius: '4px',
69
- width: '100%',
70
- }}
71
- bg={optionIndex === idx ? colors.fill.action : 'inherit'}
72
- whiteSpace="nowrap"
73
- id={option.value}
74
- >
75
- {option.label}
76
- </Box>
77
- )}
78
- </Box>
79
- ));
80
- }, [onSelectItem, optionIndex, options]);
81
-
82
- if (!options) return null;
83
-
84
- return (
85
- <Flex
86
- flexDirection="column"
87
- ref={dropdownRef}
88
- scrollMargin="15px"
89
- bg={colors.fill.light.quaternary}
90
- backdropFilter="auto"
91
- backdropBlur="64px"
92
- borderRadius="4px"
93
- border="0.25px solid"
94
- borderColor={colors.fill.light.tertiary}
95
- mt="3px"
96
- maxH="240px"
97
- overflowY="auto"
98
- px="8px"
99
- py="4px"
100
- position="absolute"
101
- top={position === 'top' ? 26 : undefined}
102
- bottom={position === 'bottom' ? 30 : undefined}
103
- width="fit-content"
104
- minWidth="100%"
105
- zIndex={100}
106
- tabIndex={-2000}
107
- >
108
- {DropdownContent}
109
- </Flex>
110
- );
111
- };
1
+ import React, { RefObject, useMemo } from 'react';
2
+ import { Box, Flex } from '@chakra-ui/react';
3
+ import colors from '../../../../../src/theme/foundations/colors';
4
+ import { FieldOption, FieldOptions } from '../../InputTypes';
5
+
6
+ export interface DropdownProps {
7
+ onSelectItem: (option: FieldOption) => void;
8
+ options: FieldOptions;
9
+ dropdownRef: RefObject<HTMLDivElement>;
10
+ position: 'top' | 'bottom';
11
+ optionIndex?: number | null;
12
+ }
13
+
14
+ /**
15
+ * A functional React component utilized to render the `Dropdown` component
16
+ */
17
+ export const Dropdown: React.FC<DropdownProps> = ({
18
+ onSelectItem,
19
+ options,
20
+ dropdownRef,
21
+ position,
22
+ optionIndex,
23
+ }) => {
24
+ const DropdownContent = useMemo(() => {
25
+ return options.map((option, idx) => (
26
+ <Box key={idx} width="100%" role="combobox">
27
+ {option.value === 'section_header' &&
28
+ options[idx + 1] &&
29
+ options[idx + 1].value !== 'section_header' && (
30
+ <Box
31
+ color={colors.label.secondary.light}
32
+ fontSize="13px"
33
+ width="100%"
34
+ fontWeight="bold"
35
+ px="8px"
36
+ bg="inherit"
37
+ whiteSpace="nowrap"
38
+ >
39
+ {idx > 0 && (
40
+ <Box
41
+ width="100%"
42
+ my="3px"
43
+ borderTop="2px solid"
44
+ borderColor={colors.border.default}
45
+ />
46
+ )}
47
+ {option.label}
48
+ </Box>
49
+ )}
50
+ {option.value !== 'section_header' && (
51
+ <Box
52
+ cursor="pointer"
53
+ borderRadius="inherit"
54
+ onClick={() => onSelectItem(option)}
55
+ key={option.value}
56
+ fontSize="13px"
57
+ px="8px"
58
+ py="4px"
59
+ width="100%"
60
+ color={
61
+ optionIndex === idx
62
+ ? colors.label.primary.dark
63
+ : colors.label.primary.light
64
+ }
65
+ _hover={{
66
+ color: colors.label.primary.dark,
67
+ bg: colors.fill.action,
68
+ borderRadius: '4px',
69
+ width: '100%',
70
+ }}
71
+ bg={optionIndex === idx ? colors.fill.action : 'inherit'}
72
+ whiteSpace="nowrap"
73
+ id={option.value}
74
+ >
75
+ {option.label}
76
+ </Box>
77
+ )}
78
+ </Box>
79
+ ));
80
+ }, [onSelectItem, optionIndex, options]);
81
+
82
+ if (!options) return null;
83
+
84
+ return (
85
+ <Flex
86
+ flexDirection="column"
87
+ ref={dropdownRef}
88
+ scrollMargin="15px"
89
+ bg={colors.fill.light.quaternary}
90
+ backdropFilter="auto"
91
+ backdropBlur="64px"
92
+ borderRadius="4px"
93
+ border="0.25px solid"
94
+ borderColor={colors.fill.light.tertiary}
95
+ mt="3px"
96
+ maxH="240px"
97
+ overflowY="auto"
98
+ px="8px"
99
+ py="4px"
100
+ position="absolute"
101
+ top={position === 'top' ? 26 : undefined}
102
+ bottom={position === 'bottom' ? 30 : undefined}
103
+ width="fit-content"
104
+ minWidth="100%"
105
+ zIndex={100}
106
+ tabIndex={-2000}
107
+ >
108
+ {DropdownContent}
109
+ </Flex>
110
+ );
111
+ };
@@ -1,35 +1,35 @@
1
- import React from 'react';
2
- import { Box, FormLabel, Tooltip } from '@chakra-ui/react';
3
- import colors from '../../../../../src/theme/foundations/colors';
4
- import { QuestionOutlineIcon } from '@chakra-ui/icons';
5
-
6
- export interface LabelProps {
7
- label: string;
8
- tooltipText?: string;
9
- isRequired?: boolean;
10
- }
11
-
12
- /**
13
- * A functional React component utilized to render the `Label` component
14
- */
15
- export const Label: React.FC<LabelProps> = ({
16
- tooltipText,
17
- isRequired,
18
- label,
19
- }) => {
20
- return (
21
- <FormLabel display="flex" ml="0">
22
- {label}
23
- {isRequired && (
24
- <Box ml={1} color={colors.label.error}>
25
- *
26
- </Box>
27
- )}
28
- {!!tooltipText && (
29
- <Tooltip label={tooltipText} placement="top">
30
- <QuestionOutlineIcon boxSize="13px" ml="8px" />
31
- </Tooltip>
32
- )}
33
- </FormLabel>
34
- );
35
- };
1
+ import React from 'react';
2
+ import { Box, FormLabel, Tooltip } from '@chakra-ui/react';
3
+ import colors from '../../../../../src/theme/foundations/colors';
4
+ import { QuestionOutlineIcon } from '@chakra-ui/icons';
5
+
6
+ export interface LabelProps {
7
+ label: string;
8
+ tooltipText?: string;
9
+ isRequired?: boolean;
10
+ }
11
+
12
+ /**
13
+ * A functional React component utilized to render the `Label` component
14
+ */
15
+ export const Label: React.FC<LabelProps> = ({
16
+ tooltipText,
17
+ isRequired,
18
+ label,
19
+ }) => {
20
+ return (
21
+ <FormLabel display="flex" ml="0">
22
+ {label}
23
+ {isRequired && (
24
+ <Box ml={1} color={colors.label.error}>
25
+ *
26
+ </Box>
27
+ )}
28
+ {!!tooltipText && (
29
+ <Tooltip label={tooltipText} placement="top">
30
+ <QuestionOutlineIcon boxSize="13px" ml="8px" />
31
+ </Tooltip>
32
+ )}
33
+ </FormLabel>
34
+ );
35
+ };
@@ -1,25 +1,25 @@
1
- import { Meta, Story } from '@storybook/react';
2
- import React from 'react';
3
- import { Box } from '@chakra-ui/react';
4
- import Token, { TokenProps } from '.';
5
-
6
- const meta: Meta<TokenProps> = {
7
- title: 'Token example',
8
- component: Token,
9
- argTypes: {},
10
- parameters: {
11
- controls: { expanded: true },
12
- },
13
- };
14
-
15
- export default meta;
16
- const Template: Story<TokenProps> = args => (
17
- <Box width="fit-content">
18
- <Token {...args} onDelete={() => null} />
19
- </Box>
20
- );
21
-
22
- export const Default = Template.bind({});
23
- Default.args = {
24
- label: 'Label',
25
- };
1
+ import { Meta, Story } from '@storybook/react';
2
+ import React from 'react';
3
+ import { Box } from '@chakra-ui/react';
4
+ import Token, { TokenProps } from '.';
5
+
6
+ const meta: Meta<TokenProps> = {
7
+ title: 'Token example',
8
+ component: Token,
9
+ argTypes: {},
10
+ parameters: {
11
+ controls: { expanded: true },
12
+ },
13
+ };
14
+
15
+ export default meta;
16
+ const Template: Story<TokenProps> = args => (
17
+ <Box width="fit-content">
18
+ <Token {...args} onDelete={() => null} />
19
+ </Box>
20
+ );
21
+
22
+ export const Default = Template.bind({});
23
+ Default.args = {
24
+ label: 'Label',
25
+ };
@@ -1,45 +1,45 @@
1
- import { Flex, Text } from '@chakra-ui/react';
2
- import { truncate } from 'lodash';
3
- import React from 'react';
4
- import { Close } from '../../../icons/close';
5
- import colors from '../../../../../src/theme/foundations/colors';
6
-
7
- export interface TokenProps {
8
- label: any;
9
- onDelete: any;
10
- isMobile?: boolean;
11
- }
12
-
13
- // For v1 we are truncating the label at 15 characters to avoid overflow
14
- const Token: React.FC<TokenProps> = ({ label, onDelete, isMobile = false }) => {
15
- return (
16
- <Flex
17
- key={label}
18
- borderRadius={'full'}
19
- backgroundColor="#7676801F"
20
- alignItems="center"
21
- width="fit-content"
22
- w="auto"
23
- h={isMobile ? '18px' : '16px'}
24
- pl="6px"
25
- pr="2px"
26
- py="2px"
27
- position="relative"
28
- >
29
- <Text
30
- whiteSpace="nowrap"
31
- color={colors.label.primary.light}
32
- fontSize={isMobile ? '17px' : '13px'}
33
- pr="4px"
34
- >
35
- {truncate(label.trim(), {
36
- length: 15,
37
- omission: '...',
38
- })}
39
- </Text>
40
- <Close boxSize={isMobile ? '17px' : '11px'} onClick={onDelete} />
41
- </Flex>
42
- );
43
- };
44
-
45
- export default Token;
1
+ import { Flex, Text } from '@chakra-ui/react';
2
+ import { truncate } from 'lodash';
3
+ import React from 'react';
4
+ import { Close } from '../../../icons/close';
5
+ import colors from '../../../../../src/theme/foundations/colors';
6
+
7
+ export interface TokenProps {
8
+ label: any;
9
+ onDelete: any;
10
+ isMobile?: boolean;
11
+ }
12
+
13
+ // For v1 we are truncating the label at 15 characters to avoid overflow
14
+ const Token: React.FC<TokenProps> = ({ label, onDelete, isMobile = false }) => {
15
+ return (
16
+ <Flex
17
+ key={label}
18
+ borderRadius={'full'}
19
+ backgroundColor="#7676801F"
20
+ alignItems="center"
21
+ width="fit-content"
22
+ w="auto"
23
+ h={isMobile ? '18px' : '16px'}
24
+ pl="6px"
25
+ pr="2px"
26
+ py="2px"
27
+ position="relative"
28
+ >
29
+ <Text
30
+ whiteSpace="nowrap"
31
+ color={colors.label.primary.light}
32
+ fontSize={isMobile ? '17px' : '13px'}
33
+ pr="4px"
34
+ >
35
+ {truncate(label.trim(), {
36
+ length: 15,
37
+ omission: '...',
38
+ })}
39
+ </Text>
40
+ <Close boxSize={isMobile ? '17px' : '11px'} onClick={onDelete} />
41
+ </Flex>
42
+ );
43
+ };
44
+
45
+ export default Token;