@xqmsg/ui-core 0.23.1-rc.1 → 0.23.1-rc.3

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 (193) 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/index.d.ts +2 -1
  6. package/dist/ui-core.cjs.development.js +5 -3
  7. package/dist/ui-core.cjs.development.js.map +1 -1
  8. package/dist/ui-core.cjs.production.min.js +1 -1
  9. package/dist/ui-core.cjs.production.min.js.map +1 -1
  10. package/dist/ui-core.esm.js +5 -3
  11. package/dist/ui-core.esm.js.map +1 -1
  12. package/package.json +118 -118
  13. package/src/components/banner/Banner.stories.tsx +100 -100
  14. package/src/components/banner/index.tsx +73 -73
  15. package/src/components/breadcrumbs/Breadcrumbs.stories.tsx +66 -66
  16. package/src/components/breadcrumbs/components/icon/index.tsx +38 -38
  17. package/src/components/breadcrumbs/components/label/index.tsx +20 -20
  18. package/src/components/breadcrumbs/index.tsx +48 -48
  19. package/src/components/button/Button.stories.tsx +140 -140
  20. package/src/components/button/google/GoogleButton.stories.tsx +23 -23
  21. package/src/components/button/google/index.tsx +29 -29
  22. package/src/components/button/index.tsx +51 -51
  23. package/src/components/button/microsoft/MicrosoftButton.stories.tsx +25 -25
  24. package/src/components/button/microsoft/index.tsx +29 -29
  25. package/src/components/button/spinner/SpinnerButton.stories.tsx +60 -60
  26. package/src/components/button/spinner/index.tsx +36 -36
  27. package/src/components/card/Card.stories.tsx +56 -56
  28. package/src/components/card/index.tsx +78 -78
  29. package/src/components/form/Form.stories.tsx +62 -62
  30. package/src/components/form/FormTypes.ts +20 -20
  31. package/src/components/form/hooks/useFormHandler.tsx +74 -74
  32. package/src/components/form/index.tsx +25 -25
  33. package/src/components/form/section/FormSection.stories.tsx +109 -109
  34. package/src/components/form/section/index.tsx +87 -87
  35. package/src/components/form/utils/formErrors.ts +34 -34
  36. package/src/components/icons/checkmark/checkmark.svg +3 -3
  37. package/src/components/icons/checkmark/index.tsx +13 -13
  38. package/src/components/icons/chevron/down/chevron-down.svg +3 -3
  39. package/src/components/icons/chevron/down/index.tsx +14 -14
  40. package/src/components/icons/chevron/right/chevron-right.svg +3 -3
  41. package/src/components/icons/chevron/right/index.tsx +13 -13
  42. package/src/components/icons/clock/clock.svg +3 -3
  43. package/src/components/icons/clock/index.tsx +13 -13
  44. package/src/components/icons/close/close.svg +3 -3
  45. package/src/components/icons/close/index.tsx +21 -21
  46. package/src/components/icons/dropdown/dropdown.svg +3 -3
  47. package/src/components/icons/dropdown/index.tsx +16 -16
  48. package/src/components/icons/error/error.svg +3 -3
  49. package/src/components/icons/error/index.tsx +13 -13
  50. package/src/components/icons/file/fill/file-fill.svg +4 -4
  51. package/src/components/icons/file/fill/index.tsx +13 -13
  52. package/src/components/icons/file/outline/file-outline.svg +3 -3
  53. package/src/components/icons/file/outline/index.tsx +13 -13
  54. package/src/components/icons/folder/add/fill/folder-add-fill.svg +3 -3
  55. package/src/components/icons/folder/add/fill/index.tsx +13 -13
  56. package/src/components/icons/folder/add/outline/folder-add-outline.svg +3 -3
  57. package/src/components/icons/folder/add/outline/index.tsx +15 -15
  58. package/src/components/icons/folder/fill/folder-fill-gradient.svg +33 -33
  59. package/src/components/icons/folder/fill/folder-fill.svg +4 -4
  60. package/src/components/icons/folder/fill/index.tsx +21 -21
  61. package/src/components/icons/folder/outline/folder-outline.svg +3 -3
  62. package/src/components/icons/folder/outline/index.tsx +13 -13
  63. package/src/components/icons/gear/GearIcon.tsx +36 -36
  64. package/src/components/icons/google/drive/index.tsx +13 -13
  65. package/src/components/icons/google/google.svg +13 -13
  66. package/src/components/icons/google/index.tsx +13 -13
  67. package/src/components/icons/group/group.svg +3 -3
  68. package/src/components/icons/group/index.tsx +13 -13
  69. package/src/components/icons/home/home.svg +3 -3
  70. package/src/components/icons/home/index.tsx +13 -13
  71. package/src/components/icons/image/image.svg +3 -3
  72. package/src/components/icons/image/index.tsx +13 -13
  73. package/src/components/icons/index.tsx +101 -101
  74. package/src/components/icons/link/index.tsx +13 -13
  75. package/src/components/icons/link/link.svg +4 -4
  76. package/src/components/icons/menu/index.tsx +13 -13
  77. package/src/components/icons/menu/menu.svg +3 -3
  78. package/src/components/icons/microsoft/index.tsx +13 -13
  79. package/src/components/icons/microsoft/microsoft.svg +9 -9
  80. package/src/components/icons/microsoft/onedrive/index.tsx +16 -16
  81. package/src/components/icons/neutral/index.tsx +14 -14
  82. package/src/components/icons/neutral/neutral.svg +3 -3
  83. package/src/components/icons/page/index.tsx +13 -13
  84. package/src/components/icons/page/page.svg +3 -3
  85. package/src/components/icons/positive/index.tsx +13 -13
  86. package/src/components/icons/positive/positive.svg +3 -3
  87. package/src/components/icons/question/index.tsx +13 -13
  88. package/src/components/icons/question/question.svg +3 -3
  89. package/src/components/icons/search/index.tsx +13 -13
  90. package/src/components/icons/search/search.svg +3 -3
  91. package/src/components/icons/services/index.tsx +13 -13
  92. package/src/components/icons/services/services.svg +3 -3
  93. package/src/components/icons/settings/index.tsx +14 -14
  94. package/src/components/icons/settings/settings.svg +6 -6
  95. package/src/components/icons/table/fill/index.tsx +13 -13
  96. package/src/components/icons/table/fill/table-fill.svg +3 -3
  97. package/src/components/icons/table/outline/index.tsx +13 -13
  98. package/src/components/icons/table/outline/table-outline.svg +3 -3
  99. package/src/components/icons/task/index.tsx +10 -10
  100. package/src/components/icons/task/task.svg +11 -11
  101. package/src/components/icons/trash/index.tsx +13 -13
  102. package/src/components/icons/trash/trash.svg +3 -3
  103. package/src/components/icons/vault/index.tsx +14 -14
  104. package/src/components/icons/video/index.tsx +13 -13
  105. package/src/components/icons/video/video.svg +3 -3
  106. package/src/components/icons/warning/index.tsx +13 -13
  107. package/src/components/icons/warning/warning.svg +3 -3
  108. package/src/components/icons/workspace/index.tsx +14 -14
  109. package/src/components/input/Input.stories.tsx +287 -287
  110. package/src/components/input/InputTypes.ts +77 -77
  111. package/src/components/input/StackedCheckbox/StackedCheckbox.tsx +44 -44
  112. package/src/components/input/StackedInput/StackedInput.tsx +60 -60
  113. package/src/components/input/StackedMultiSelect/index.tsx +349 -349
  114. package/src/components/input/StackedPilledInput/index.tsx +375 -386
  115. package/src/components/input/StackedRadio/StackedRadioGroup.tsx +38 -38
  116. package/src/components/input/StackedSelect/index.tsx +232 -232
  117. package/src/components/input/StackedSwitch/index.tsx +33 -33
  118. package/src/components/input/StackedTextarea/StackedTextarea.tsx +55 -55
  119. package/src/components/input/components/dropdown/index.tsx +111 -111
  120. package/src/components/input/components/label/index.tsx +35 -35
  121. package/src/components/input/components/token/Token.stories.tsx +25 -25
  122. package/src/components/input/components/token/index.tsx +45 -45
  123. package/src/components/input/index.tsx +301 -298
  124. package/src/components/layout/BorderedBox/index.tsx +30 -30
  125. package/src/components/layout/Layout.stories.tsx +40 -40
  126. package/src/components/layout/index.tsx +100 -100
  127. package/src/components/link/Link.stories.tsx +23 -23
  128. package/src/components/link/index.tsx +34 -34
  129. package/src/components/loading/LoadingIndicator.stories.tsx +45 -45
  130. package/src/components/loading/index.tsx +45 -45
  131. package/src/components/modal/Modal.stories.tsx +36 -36
  132. package/src/components/modal/components/action/index.tsx +37 -37
  133. package/src/components/modal/index.tsx +41 -41
  134. package/src/components/navigation/NavigationMenu.stories.tsx +85 -85
  135. package/src/components/navigation/components/header/index.tsx +27 -27
  136. package/src/components/navigation/components/items/index.tsx +76 -76
  137. package/src/components/navigation/index.tsx +87 -87
  138. package/src/components/select/index.tsx +140 -140
  139. package/src/components/table/Table.stories.tsx +63 -63
  140. package/src/components/table/TableTypes.ts +15 -15
  141. package/src/components/table/components/loading/index.tsx +45 -45
  142. package/src/components/table/components/text/index.tsx +23 -23
  143. package/src/components/table/empty/index.tsx +47 -47
  144. package/src/components/table/index.tsx +84 -84
  145. package/src/components/table/utils/generateTableColumns.ts +9 -9
  146. package/src/components/tabs/TabsWrapper.stories.tsx +85 -85
  147. package/src/components/tabs/index.tsx +39 -39
  148. package/src/components/text/Text.stories.tsx +59 -59
  149. package/src/components/text/index.tsx +16 -16
  150. package/src/components/toast/Toast.stories.tsx +52 -52
  151. package/src/components/toast/index.tsx +78 -78
  152. package/src/components/toolbar/Toolbar.stories.tsx +59 -59
  153. package/src/components/toolbar/components/actions/add/index.tsx +18 -18
  154. package/src/components/toolbar/components/actions/search/index.tsx +38 -38
  155. package/src/components/toolbar/components/actions/sort/index.tsx +49 -49
  156. package/src/components/toolbar/components/breadcrumbs/index.tsx +63 -63
  157. package/src/components/toolbar/components/breadcrumbs/item/index.tsx +72 -72
  158. package/src/components/toolbar/components/dropdown/index.tsx +107 -107
  159. package/src/components/toolbar/components/navigation/components/button/left/index.tsx +28 -28
  160. package/src/components/toolbar/components/navigation/components/button/left/left-arrow.svg +3 -3
  161. package/src/components/toolbar/components/navigation/components/button/right/index.tsx +27 -27
  162. package/src/components/toolbar/components/navigation/components/button/right/right-arrow.svg +3 -3
  163. package/src/components/toolbar/components/navigation/index.tsx +36 -36
  164. package/src/components/toolbar/index.tsx +55 -55
  165. package/src/hooks/useDeepEffect.tsx +22 -22
  166. package/src/hooks/useDidMountEffect.tsx +13 -13
  167. package/src/hooks/useOnOutsideClick.tsx +31 -31
  168. package/src/hooks/useToast.tsx +16 -16
  169. package/src/index.tsx +78 -78
  170. package/src/theme/components/alert.ts +60 -60
  171. package/src/theme/components/badge.ts +59 -59
  172. package/src/theme/components/button.ts +163 -163
  173. package/src/theme/components/checkbox.ts +28 -28
  174. package/src/theme/components/code.ts +16 -16
  175. package/src/theme/components/form-error.ts +31 -31
  176. package/src/theme/components/form-label.ts +17 -17
  177. package/src/theme/components/form.ts +29 -29
  178. package/src/theme/components/input.ts +65 -65
  179. package/src/theme/components/link.ts +118 -118
  180. package/src/theme/components/modal.ts +45 -45
  181. package/src/theme/components/select.ts +36 -36
  182. package/src/theme/components/switch.ts +89 -89
  183. package/src/theme/components/table.ts +42 -42
  184. package/src/theme/components/tabs.ts +255 -255
  185. package/src/theme/components/text.ts +93 -93
  186. package/src/theme/components/textarea.ts +42 -42
  187. package/src/theme/customXQChakraTheme.ts +54 -54
  188. package/src/theme/foundations/breakpoints.ts +18 -18
  189. package/src/theme/foundations/colors.ts +165 -165
  190. package/src/theme/foundations/shadows.ts +23 -23
  191. package/src/theme/foundations/typography.ts +62 -62
  192. package/src/theme/provider/index.tsx +21 -21
  193. package/src/theme/styles.ts +19 -19
@@ -1,49 +1,49 @@
1
- import React, { useRef, useState } from 'react';
2
- import { Box, Flex, useOutsideClick } from '@chakra-ui/react';
3
- import { ChevronDown, TableOutline } from '../../../../icons';
4
- import { Dropdown } from '../../dropdown';
5
- import { FieldOption, FieldOptions } from '../../../../input/InputTypes';
6
-
7
- export interface SortProps {
8
- onSelectItem: (option: FieldOption) => void;
9
- sortOptions: FieldOptions;
10
- }
11
-
12
- /**
13
- * A functional React component utilized to render the `Sort` component
14
- */
15
- export const Sort: React.FC<SortProps> = ({ onSelectItem, sortOptions }) => {
16
- const dropdownMenuRef = useRef<HTMLDivElement>(null);
17
- const [showDropdown, setShowDropdown] = useState(false);
18
- const [optionIndex, setOptionIndex] = useState<number | null>(null);
19
-
20
- useOutsideClick({
21
- ref: dropdownMenuRef,
22
- handler: () => setShowDropdown(false),
23
- });
24
-
25
- return (
26
- <Box onClick={() => setShowDropdown(!showDropdown)} position="relative">
27
- <Flex
28
- alignItems="center"
29
- cursor="pointer"
30
- onClick={() => setShowDropdown(!showDropdown)}
31
- >
32
- <TableOutline boxSize="16px" />
33
- <Box ml="2px">
34
- <ChevronDown boxSize="12px" />
35
- </Box>
36
- {showDropdown && (
37
- <Dropdown
38
- onSelectItem={onSelectItem}
39
- options={sortOptions}
40
- position="top"
41
- dropdownRef={dropdownMenuRef}
42
- optionIndex={optionIndex}
43
- setOptionIndex={setOptionIndex}
44
- />
45
- )}
46
- </Flex>
47
- </Box>
48
- );
49
- };
1
+ import React, { useRef, useState } from 'react';
2
+ import { Box, Flex, useOutsideClick } from '@chakra-ui/react';
3
+ import { ChevronDown, TableOutline } from '../../../../icons';
4
+ import { Dropdown } from '../../dropdown';
5
+ import { FieldOption, FieldOptions } from '../../../../input/InputTypes';
6
+
7
+ export interface SortProps {
8
+ onSelectItem: (option: FieldOption) => void;
9
+ sortOptions: FieldOptions;
10
+ }
11
+
12
+ /**
13
+ * A functional React component utilized to render the `Sort` component
14
+ */
15
+ export const Sort: React.FC<SortProps> = ({ onSelectItem, sortOptions }) => {
16
+ const dropdownMenuRef = useRef<HTMLDivElement>(null);
17
+ const [showDropdown, setShowDropdown] = useState(false);
18
+ const [optionIndex, setOptionIndex] = useState<number | null>(null);
19
+
20
+ useOutsideClick({
21
+ ref: dropdownMenuRef,
22
+ handler: () => setShowDropdown(false),
23
+ });
24
+
25
+ return (
26
+ <Box onClick={() => setShowDropdown(!showDropdown)} position="relative">
27
+ <Flex
28
+ alignItems="center"
29
+ cursor="pointer"
30
+ onClick={() => setShowDropdown(!showDropdown)}
31
+ >
32
+ <TableOutline boxSize="16px" />
33
+ <Box ml="2px">
34
+ <ChevronDown boxSize="12px" />
35
+ </Box>
36
+ {showDropdown && (
37
+ <Dropdown
38
+ onSelectItem={onSelectItem}
39
+ options={sortOptions}
40
+ position="top"
41
+ dropdownRef={dropdownMenuRef}
42
+ optionIndex={optionIndex}
43
+ setOptionIndex={setOptionIndex}
44
+ />
45
+ )}
46
+ </Flex>
47
+ </Box>
48
+ );
49
+ };
@@ -1,63 +1,63 @@
1
- import React, { useMemo, useCallback } from 'react';
2
- import { Box, Flex, useMediaQuery } from '@chakra-ui/react';
3
- import { ToolbarBreadcrumbItem } from './item';
4
- import { ToolbarLabelAndHandler } from '../..';
5
- import { ChevronRight } from '../../../../components/icons';
6
-
7
- export interface ToolbarBreadcrumbsProps {
8
- pageList: ToolbarLabelAndHandler[];
9
- currentPage: string;
10
- }
11
-
12
- /**
13
- * A functional React component utilized to render the `ToolbarBreadcrumbs` component
14
- */
15
- export const ToolbarBreadcrumbs: React.FC<ToolbarBreadcrumbsProps> = ({
16
- pageList,
17
- currentPage,
18
- }) => {
19
- const [breakpoint400] = useMediaQuery('(max-width: 400px)');
20
-
21
- const filteredPageList = useMemo(() => {
22
- if (breakpoint400)
23
- return pageList.filter(page => page.label === currentPage);
24
-
25
- const sliceIndex = pageList.findIndex(page => page.label === currentPage);
26
- return pageList.slice(0, sliceIndex + 1);
27
- }, [breakpoint400, currentPage, pageList]);
28
-
29
- const getPageType = useCallback(
30
- (index: number) => {
31
- switch (index) {
32
- case filteredPageList.length - 1:
33
- return 'current';
34
- case filteredPageList.length - 2:
35
- return 'previous';
36
- case 0:
37
- return 'initial';
38
- default:
39
- return 'other';
40
- }
41
- },
42
- [filteredPageList]
43
- );
44
-
45
- return (
46
- <Flex height="26px">
47
- {filteredPageList.map((page, i) => (
48
- <Flex alignItems="center" key={i}>
49
- <ToolbarBreadcrumbItem
50
- page={getPageType(i)}
51
- pageLabel={page.label}
52
- onClick={page.handler}
53
- />
54
- {i !== filteredPageList.length - 1 && (
55
- <Box mx="8px">
56
- <ChevronRight boxSize="16px" />
57
- </Box>
58
- )}
59
- </Flex>
60
- ))}
61
- </Flex>
62
- );
63
- };
1
+ import React, { useMemo, useCallback } from 'react';
2
+ import { Box, Flex, useMediaQuery } from '@chakra-ui/react';
3
+ import { ToolbarBreadcrumbItem } from './item';
4
+ import { ToolbarLabelAndHandler } from '../..';
5
+ import { ChevronRight } from '../../../../components/icons';
6
+
7
+ export interface ToolbarBreadcrumbsProps {
8
+ pageList: ToolbarLabelAndHandler[];
9
+ currentPage: string;
10
+ }
11
+
12
+ /**
13
+ * A functional React component utilized to render the `ToolbarBreadcrumbs` component
14
+ */
15
+ export const ToolbarBreadcrumbs: React.FC<ToolbarBreadcrumbsProps> = ({
16
+ pageList,
17
+ currentPage,
18
+ }) => {
19
+ const [breakpoint400] = useMediaQuery('(max-width: 400px)');
20
+
21
+ const filteredPageList = useMemo(() => {
22
+ if (breakpoint400)
23
+ return pageList.filter(page => page.label === currentPage);
24
+
25
+ const sliceIndex = pageList.findIndex(page => page.label === currentPage);
26
+ return pageList.slice(0, sliceIndex + 1);
27
+ }, [breakpoint400, currentPage, pageList]);
28
+
29
+ const getPageType = useCallback(
30
+ (index: number) => {
31
+ switch (index) {
32
+ case filteredPageList.length - 1:
33
+ return 'current';
34
+ case filteredPageList.length - 2:
35
+ return 'previous';
36
+ case 0:
37
+ return 'initial';
38
+ default:
39
+ return 'other';
40
+ }
41
+ },
42
+ [filteredPageList]
43
+ );
44
+
45
+ return (
46
+ <Flex height="26px">
47
+ {filteredPageList.map((page, i) => (
48
+ <Flex alignItems="center" key={i}>
49
+ <ToolbarBreadcrumbItem
50
+ page={getPageType(i)}
51
+ pageLabel={page.label}
52
+ onClick={page.handler}
53
+ />
54
+ {i !== filteredPageList.length - 1 && (
55
+ <Box mx="8px">
56
+ <ChevronRight boxSize="16px" />
57
+ </Box>
58
+ )}
59
+ </Flex>
60
+ ))}
61
+ </Flex>
62
+ );
63
+ };
@@ -1,72 +1,72 @@
1
- import React, { useMemo } from 'react';
2
- import { Box, useMediaQuery } from '@chakra-ui/react';
3
- import colors from '../../../../../theme/foundations/colors';
4
-
5
- export interface ToolbarBreadcrumbItemProps {
6
- pageLabel: string;
7
- page: 'current' | 'previous' | 'initial' | 'other';
8
- onClick: () => void;
9
- }
10
-
11
- /**
12
- * A functional React component utilized to render the `ToolbarBreadcrumbItem` component
13
- */
14
- export const ToolbarBreadcrumbItem: React.FC<ToolbarBreadcrumbItemProps> = ({
15
- page,
16
- pageLabel,
17
- onClick,
18
- }) => {
19
- const [breakpoint400] = useMediaQuery('(max-width: 400px)');
20
- const [breakpoint600] = useMediaQuery('(max-width: 600px)');
21
- const [breakpoint800] = useMediaQuery('(max-width: 800px)');
22
- const [breakpoint1512] = useMediaQuery('(max-width: 1512px)');
23
-
24
- const getPageLabel = useMemo(() => {
25
- if (breakpoint400) {
26
- if (page === 'current') {
27
- return pageLabel;
28
- }
29
- }
30
-
31
- if (breakpoint600) {
32
- if (page === 'current' || page === 'previous') {
33
- return pageLabel;
34
- }
35
-
36
- return '...';
37
- }
38
-
39
- if (breakpoint800 || breakpoint1512) {
40
- if (page !== 'other') {
41
- return pageLabel;
42
- }
43
-
44
- return '...';
45
- }
46
-
47
- return pageLabel;
48
- }, [
49
- breakpoint1512,
50
- breakpoint400,
51
- breakpoint600,
52
- breakpoint800,
53
- page,
54
- pageLabel,
55
- ]);
56
-
57
- return (
58
- <Box
59
- color={
60
- page === 'current'
61
- ? colors.label.primary.light
62
- : colors.label.secondary.light
63
- }
64
- fontSize="13px"
65
- letterSpacing="0.02em"
66
- onClick={onClick}
67
- cursor="pointer"
68
- >
69
- {getPageLabel}
70
- </Box>
71
- );
72
- };
1
+ import React, { useMemo } from 'react';
2
+ import { Box, useMediaQuery } from '@chakra-ui/react';
3
+ import colors from '../../../../../theme/foundations/colors';
4
+
5
+ export interface ToolbarBreadcrumbItemProps {
6
+ pageLabel: string;
7
+ page: 'current' | 'previous' | 'initial' | 'other';
8
+ onClick: () => void;
9
+ }
10
+
11
+ /**
12
+ * A functional React component utilized to render the `ToolbarBreadcrumbItem` component
13
+ */
14
+ export const ToolbarBreadcrumbItem: React.FC<ToolbarBreadcrumbItemProps> = ({
15
+ page,
16
+ pageLabel,
17
+ onClick,
18
+ }) => {
19
+ const [breakpoint400] = useMediaQuery('(max-width: 400px)');
20
+ const [breakpoint600] = useMediaQuery('(max-width: 600px)');
21
+ const [breakpoint800] = useMediaQuery('(max-width: 800px)');
22
+ const [breakpoint1512] = useMediaQuery('(max-width: 1512px)');
23
+
24
+ const getPageLabel = useMemo(() => {
25
+ if (breakpoint400) {
26
+ if (page === 'current') {
27
+ return pageLabel;
28
+ }
29
+ }
30
+
31
+ if (breakpoint600) {
32
+ if (page === 'current' || page === 'previous') {
33
+ return pageLabel;
34
+ }
35
+
36
+ return '...';
37
+ }
38
+
39
+ if (breakpoint800 || breakpoint1512) {
40
+ if (page !== 'other') {
41
+ return pageLabel;
42
+ }
43
+
44
+ return '...';
45
+ }
46
+
47
+ return pageLabel;
48
+ }, [
49
+ breakpoint1512,
50
+ breakpoint400,
51
+ breakpoint600,
52
+ breakpoint800,
53
+ page,
54
+ pageLabel,
55
+ ]);
56
+
57
+ return (
58
+ <Box
59
+ color={
60
+ page === 'current'
61
+ ? colors.label.primary.light
62
+ : colors.label.secondary.light
63
+ }
64
+ fontSize="13px"
65
+ letterSpacing="0.02em"
66
+ onClick={onClick}
67
+ cursor="pointer"
68
+ >
69
+ {getPageLabel}
70
+ </Box>
71
+ );
72
+ };
@@ -1,107 +1,107 @@
1
- import React, { RefObject, useMemo } from 'react';
2
- import { Box, Flex } from '@chakra-ui/react';
3
- import colors from '../../../../theme/foundations/colors';
4
- import { FieldOption, FieldOptions } from '../../../input/InputTypes';
5
- import { Checkmark } from '../../../icons';
6
-
7
- export interface DropdownProps {
8
- onSelectItem: (option: FieldOption) => void;
9
- options: FieldOptions;
10
- dropdownRef: RefObject<HTMLDivElement>;
11
- position: 'top' | 'bottom';
12
- optionIndex: number | null;
13
- setOptionIndex: React.Dispatch<React.SetStateAction<number | null>>;
14
- }
15
-
16
- /**
17
- * A functional React component utilized to render the `Dropdown` component
18
- */
19
- export const Dropdown: React.FC<DropdownProps> = ({
20
- onSelectItem,
21
- options,
22
- dropdownRef,
23
- position,
24
- optionIndex,
25
- setOptionIndex,
26
- }) => {
27
- const DropdownContent = useMemo(() => {
28
- return options.map((option, idx) => (
29
- <Box key={idx}>
30
- {option.value === 'section_header' &&
31
- options[idx + 1] &&
32
- options[idx + 1].value !== 'section_header' && (
33
- <Box
34
- color={colors.label.secondary.light}
35
- fontSize="13px"
36
- width="fit-content"
37
- fontWeight="bold"
38
- px="8px"
39
- pl="26px"
40
- whiteSpace="nowrap"
41
- >
42
- {idx > 0 && (
43
- <Box
44
- width="100%"
45
- my="3px"
46
- borderTop="2px solid"
47
- borderColor={colors.border.default}
48
- />
49
- )}
50
- {option.label}
51
- </Box>
52
- )}
53
- {option.value !== 'section_header' && (
54
- <Flex
55
- alignItems="center"
56
- cursor="pointer"
57
- onClick={() => {
58
- setOptionIndex(idx);
59
- onSelectItem(option);
60
- }}
61
- key={option.value}
62
- fontSize="13px"
63
- px="8px"
64
- py="4px"
65
- width="100%"
66
- color={colors.label.primary.light}
67
- whiteSpace="nowrap"
68
- id={option.value}
69
- >
70
- <Box mr="8px" width="12px">
71
- {optionIndex === idx && <Checkmark boxSize="12px" />}
72
- </Box>
73
-
74
- {option.label}
75
- </Flex>
76
- )}
77
- </Box>
78
- ));
79
- }, [onSelectItem, optionIndex, options, setOptionIndex]);
80
-
81
- return (
82
- <Flex
83
- flexDirection="column"
84
- ref={dropdownRef}
85
- scrollMargin="15px"
86
- backdropFilter="auto"
87
- backdropBlur="64px"
88
- borderRadius="4px"
89
- bg={colors.fill.light.tertiary}
90
- mt="3px"
91
- maxH="240px"
92
- overflowY="auto"
93
- px="8px"
94
- py="4px"
95
- position="absolute"
96
- top={position === 'top' ? 26 : undefined}
97
- bottom={position === 'bottom' ? 30 : undefined}
98
- right={0}
99
- width="fit-content"
100
- minWidth="100%"
101
- zIndex={100}
102
- tabIndex={-2000}
103
- >
104
- {DropdownContent}
105
- </Flex>
106
- );
107
- };
1
+ import React, { RefObject, useMemo } from 'react';
2
+ import { Box, Flex } from '@chakra-ui/react';
3
+ import colors from '../../../../theme/foundations/colors';
4
+ import { FieldOption, FieldOptions } from '../../../input/InputTypes';
5
+ import { Checkmark } from '../../../icons';
6
+
7
+ export interface DropdownProps {
8
+ onSelectItem: (option: FieldOption) => void;
9
+ options: FieldOptions;
10
+ dropdownRef: RefObject<HTMLDivElement>;
11
+ position: 'top' | 'bottom';
12
+ optionIndex: number | null;
13
+ setOptionIndex: React.Dispatch<React.SetStateAction<number | null>>;
14
+ }
15
+
16
+ /**
17
+ * A functional React component utilized to render the `Dropdown` component
18
+ */
19
+ export const Dropdown: React.FC<DropdownProps> = ({
20
+ onSelectItem,
21
+ options,
22
+ dropdownRef,
23
+ position,
24
+ optionIndex,
25
+ setOptionIndex,
26
+ }) => {
27
+ const DropdownContent = useMemo(() => {
28
+ return options.map((option, idx) => (
29
+ <Box key={idx}>
30
+ {option.value === 'section_header' &&
31
+ options[idx + 1] &&
32
+ options[idx + 1].value !== 'section_header' && (
33
+ <Box
34
+ color={colors.label.secondary.light}
35
+ fontSize="13px"
36
+ width="fit-content"
37
+ fontWeight="bold"
38
+ px="8px"
39
+ pl="26px"
40
+ whiteSpace="nowrap"
41
+ >
42
+ {idx > 0 && (
43
+ <Box
44
+ width="100%"
45
+ my="3px"
46
+ borderTop="2px solid"
47
+ borderColor={colors.border.default}
48
+ />
49
+ )}
50
+ {option.label}
51
+ </Box>
52
+ )}
53
+ {option.value !== 'section_header' && (
54
+ <Flex
55
+ alignItems="center"
56
+ cursor="pointer"
57
+ onClick={() => {
58
+ setOptionIndex(idx);
59
+ onSelectItem(option);
60
+ }}
61
+ key={option.value}
62
+ fontSize="13px"
63
+ px="8px"
64
+ py="4px"
65
+ width="100%"
66
+ color={colors.label.primary.light}
67
+ whiteSpace="nowrap"
68
+ id={option.value}
69
+ >
70
+ <Box mr="8px" width="12px">
71
+ {optionIndex === idx && <Checkmark boxSize="12px" />}
72
+ </Box>
73
+
74
+ {option.label}
75
+ </Flex>
76
+ )}
77
+ </Box>
78
+ ));
79
+ }, [onSelectItem, optionIndex, options, setOptionIndex]);
80
+
81
+ return (
82
+ <Flex
83
+ flexDirection="column"
84
+ ref={dropdownRef}
85
+ scrollMargin="15px"
86
+ backdropFilter="auto"
87
+ backdropBlur="64px"
88
+ borderRadius="4px"
89
+ bg={colors.fill.light.tertiary}
90
+ mt="3px"
91
+ maxH="240px"
92
+ overflowY="auto"
93
+ px="8px"
94
+ py="4px"
95
+ position="absolute"
96
+ top={position === 'top' ? 26 : undefined}
97
+ bottom={position === 'bottom' ? 30 : undefined}
98
+ right={0}
99
+ width="fit-content"
100
+ minWidth="100%"
101
+ zIndex={100}
102
+ tabIndex={-2000}
103
+ >
104
+ {DropdownContent}
105
+ </Flex>
106
+ );
107
+ };
@@ -1,28 +1,28 @@
1
- import React from 'react';
2
- import { Box } from '@chakra-ui/react';
3
- import { ReactComponent as LeftArrow } from './left-arrow.svg';
4
-
5
- export interface LeftArrowButtonProps {
6
- onClick: () => void;
7
- disabled: boolean;
8
- }
9
-
10
- /**
11
- * A functional React component utilized to render the `LeftArrowButton` component
12
- */
13
- export const LeftArrowButton: React.FC<LeftArrowButtonProps> = ({
14
- onClick,
15
- disabled,
16
- }) => {
17
- return (
18
- <Box
19
- onClick={() => {
20
- if (!disabled) return onClick();
21
- }}
22
- cursor={disabled ? 'not-allowed' : 'pointer'}
23
- transform="scaleX(-1)"
24
- >
25
- <LeftArrow stroke={disabled ? '#3C3C43' : 'black'} />
26
- </Box>
27
- );
28
- };
1
+ import React from 'react';
2
+ import { Box } from '@chakra-ui/react';
3
+ import { ReactComponent as LeftArrow } from './left-arrow.svg';
4
+
5
+ export interface LeftArrowButtonProps {
6
+ onClick: () => void;
7
+ disabled: boolean;
8
+ }
9
+
10
+ /**
11
+ * A functional React component utilized to render the `LeftArrowButton` component
12
+ */
13
+ export const LeftArrowButton: React.FC<LeftArrowButtonProps> = ({
14
+ onClick,
15
+ disabled,
16
+ }) => {
17
+ return (
18
+ <Box
19
+ onClick={() => {
20
+ if (!disabled) return onClick();
21
+ }}
22
+ cursor={disabled ? 'not-allowed' : 'pointer'}
23
+ transform="scaleX(-1)"
24
+ >
25
+ <LeftArrow stroke={disabled ? '#3C3C43' : 'black'} />
26
+ </Box>
27
+ );
28
+ };
@@ -1,3 +1,3 @@
1
- <svg width="8" height="14" viewBox="0 0 8 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M7.125 13.25L0.875 7L7.125 0.75" stroke="current" stroke-linecap="round" stroke-linejoin="round"/>
3
- </svg>
1
+ <svg width="8" height="14" viewBox="0 0 8 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M7.125 13.25L0.875 7L7.125 0.75" stroke="current" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>