@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,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>