@xqmsg/ui-core 0.23.1 → 0.23.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 (190) hide show
  1. package/CHANGELOG.md +468 -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 -2
  6. package/dist/ui-core.cjs.development.js.map +1 -1
  7. package/dist/ui-core.cjs.production.min.js.map +1 -1
  8. package/dist/ui-core.esm.js.map +1 -1
  9. package/package.json +118 -118
  10. package/src/components/banner/Banner.stories.tsx +100 -100
  11. package/src/components/banner/index.tsx +73 -73
  12. package/src/components/breadcrumbs/Breadcrumbs.stories.tsx +66 -66
  13. package/src/components/breadcrumbs/components/icon/index.tsx +38 -38
  14. package/src/components/breadcrumbs/components/label/index.tsx +20 -20
  15. package/src/components/breadcrumbs/index.tsx +48 -48
  16. package/src/components/button/Button.stories.tsx +140 -140
  17. package/src/components/button/google/GoogleButton.stories.tsx +23 -23
  18. package/src/components/button/google/index.tsx +29 -29
  19. package/src/components/button/index.tsx +51 -51
  20. package/src/components/button/microsoft/MicrosoftButton.stories.tsx +25 -25
  21. package/src/components/button/microsoft/index.tsx +29 -29
  22. package/src/components/button/spinner/SpinnerButton.stories.tsx +60 -60
  23. package/src/components/button/spinner/index.tsx +36 -36
  24. package/src/components/card/Card.stories.tsx +56 -56
  25. package/src/components/card/index.tsx +78 -78
  26. package/src/components/form/Form.stories.tsx +62 -62
  27. package/src/components/form/FormTypes.ts +20 -20
  28. package/src/components/form/hooks/useFormHandler.tsx +74 -74
  29. package/src/components/form/index.tsx +25 -25
  30. package/src/components/form/section/FormSection.stories.tsx +109 -109
  31. package/src/components/form/section/index.tsx +87 -87
  32. package/src/components/form/utils/formErrors.ts +34 -34
  33. package/src/components/icons/checkmark/checkmark.svg +3 -3
  34. package/src/components/icons/checkmark/index.tsx +13 -13
  35. package/src/components/icons/chevron/down/chevron-down.svg +3 -3
  36. package/src/components/icons/chevron/down/index.tsx +14 -14
  37. package/src/components/icons/chevron/right/chevron-right.svg +3 -3
  38. package/src/components/icons/chevron/right/index.tsx +13 -13
  39. package/src/components/icons/clock/clock.svg +3 -3
  40. package/src/components/icons/clock/index.tsx +13 -13
  41. package/src/components/icons/close/close.svg +3 -3
  42. package/src/components/icons/close/index.tsx +21 -21
  43. package/src/components/icons/dropdown/dropdown.svg +3 -3
  44. package/src/components/icons/dropdown/index.tsx +16 -16
  45. package/src/components/icons/error/error.svg +3 -3
  46. package/src/components/icons/error/index.tsx +13 -13
  47. package/src/components/icons/file/fill/file-fill.svg +4 -4
  48. package/src/components/icons/file/fill/index.tsx +13 -13
  49. package/src/components/icons/file/outline/file-outline.svg +3 -3
  50. package/src/components/icons/file/outline/index.tsx +13 -13
  51. package/src/components/icons/folder/add/fill/folder-add-fill.svg +3 -3
  52. package/src/components/icons/folder/add/fill/index.tsx +13 -13
  53. package/src/components/icons/folder/add/outline/folder-add-outline.svg +3 -3
  54. package/src/components/icons/folder/add/outline/index.tsx +15 -15
  55. package/src/components/icons/folder/fill/folder-fill-gradient.svg +33 -33
  56. package/src/components/icons/folder/fill/folder-fill.svg +4 -4
  57. package/src/components/icons/folder/fill/index.tsx +21 -21
  58. package/src/components/icons/folder/outline/folder-outline.svg +3 -3
  59. package/src/components/icons/folder/outline/index.tsx +13 -13
  60. package/src/components/icons/gear/GearIcon.tsx +36 -36
  61. package/src/components/icons/google/drive/index.tsx +13 -13
  62. package/src/components/icons/google/google.svg +13 -13
  63. package/src/components/icons/google/index.tsx +13 -13
  64. package/src/components/icons/group/group.svg +3 -3
  65. package/src/components/icons/group/index.tsx +13 -13
  66. package/src/components/icons/home/home.svg +3 -3
  67. package/src/components/icons/home/index.tsx +13 -13
  68. package/src/components/icons/image/image.svg +3 -3
  69. package/src/components/icons/image/index.tsx +13 -13
  70. package/src/components/icons/index.tsx +101 -101
  71. package/src/components/icons/link/index.tsx +13 -13
  72. package/src/components/icons/link/link.svg +4 -4
  73. package/src/components/icons/menu/index.tsx +13 -13
  74. package/src/components/icons/menu/menu.svg +3 -3
  75. package/src/components/icons/microsoft/index.tsx +13 -13
  76. package/src/components/icons/microsoft/microsoft.svg +9 -9
  77. package/src/components/icons/microsoft/onedrive/index.tsx +16 -16
  78. package/src/components/icons/neutral/index.tsx +14 -14
  79. package/src/components/icons/neutral/neutral.svg +3 -3
  80. package/src/components/icons/page/index.tsx +13 -13
  81. package/src/components/icons/page/page.svg +3 -3
  82. package/src/components/icons/positive/index.tsx +13 -13
  83. package/src/components/icons/positive/positive.svg +3 -3
  84. package/src/components/icons/question/index.tsx +13 -13
  85. package/src/components/icons/question/question.svg +3 -3
  86. package/src/components/icons/search/index.tsx +13 -13
  87. package/src/components/icons/search/search.svg +3 -3
  88. package/src/components/icons/services/index.tsx +13 -13
  89. package/src/components/icons/services/services.svg +3 -3
  90. package/src/components/icons/settings/index.tsx +14 -14
  91. package/src/components/icons/settings/settings.svg +6 -6
  92. package/src/components/icons/table/fill/index.tsx +13 -13
  93. package/src/components/icons/table/fill/table-fill.svg +3 -3
  94. package/src/components/icons/table/outline/index.tsx +13 -13
  95. package/src/components/icons/table/outline/table-outline.svg +3 -3
  96. package/src/components/icons/task/index.tsx +10 -10
  97. package/src/components/icons/task/task.svg +11 -11
  98. package/src/components/icons/trash/index.tsx +13 -13
  99. package/src/components/icons/trash/trash.svg +3 -3
  100. package/src/components/icons/vault/index.tsx +14 -14
  101. package/src/components/icons/video/index.tsx +13 -13
  102. package/src/components/icons/video/video.svg +3 -3
  103. package/src/components/icons/warning/index.tsx +13 -13
  104. package/src/components/icons/warning/warning.svg +3 -3
  105. package/src/components/icons/workspace/index.tsx +14 -14
  106. package/src/components/input/Input.stories.tsx +287 -287
  107. package/src/components/input/InputTypes.ts +77 -77
  108. package/src/components/input/StackedCheckbox/StackedCheckbox.tsx +44 -44
  109. package/src/components/input/StackedInput/StackedInput.tsx +60 -60
  110. package/src/components/input/StackedMultiSelect/index.tsx +349 -349
  111. package/src/components/input/StackedPilledInput/index.tsx +386 -386
  112. package/src/components/input/StackedRadio/StackedRadioGroup.tsx +38 -38
  113. package/src/components/input/StackedSelect/index.tsx +232 -232
  114. package/src/components/input/StackedSwitch/index.tsx +33 -33
  115. package/src/components/input/StackedTextarea/StackedTextarea.tsx +55 -55
  116. package/src/components/input/components/dropdown/index.tsx +111 -111
  117. package/src/components/input/components/label/index.tsx +35 -35
  118. package/src/components/input/components/token/Token.stories.tsx +25 -25
  119. package/src/components/input/components/token/index.tsx +45 -45
  120. package/src/components/input/index.tsx +298 -298
  121. package/src/components/layout/BorderedBox/index.tsx +30 -30
  122. package/src/components/layout/Layout.stories.tsx +40 -40
  123. package/src/components/layout/index.tsx +100 -100
  124. package/src/components/link/Link.stories.tsx +23 -23
  125. package/src/components/link/index.tsx +34 -34
  126. package/src/components/loading/LoadingIndicator.stories.tsx +45 -45
  127. package/src/components/loading/index.tsx +45 -45
  128. package/src/components/modal/Modal.stories.tsx +36 -36
  129. package/src/components/modal/components/action/index.tsx +37 -37
  130. package/src/components/modal/index.tsx +41 -41
  131. package/src/components/navigation/NavigationMenu.stories.tsx +85 -85
  132. package/src/components/navigation/components/header/index.tsx +27 -27
  133. package/src/components/navigation/components/items/index.tsx +76 -76
  134. package/src/components/navigation/index.tsx +87 -87
  135. package/src/components/select/index.tsx +140 -140
  136. package/src/components/table/Table.stories.tsx +63 -63
  137. package/src/components/table/TableTypes.ts +15 -15
  138. package/src/components/table/components/loading/index.tsx +45 -45
  139. package/src/components/table/components/text/index.tsx +23 -23
  140. package/src/components/table/empty/index.tsx +47 -47
  141. package/src/components/table/index.tsx +84 -84
  142. package/src/components/table/utils/generateTableColumns.ts +9 -9
  143. package/src/components/tabs/TabsWrapper.stories.tsx +85 -85
  144. package/src/components/tabs/index.tsx +39 -39
  145. package/src/components/text/Text.stories.tsx +59 -59
  146. package/src/components/text/index.tsx +16 -16
  147. package/src/components/toast/Toast.stories.tsx +52 -52
  148. package/src/components/toast/index.tsx +78 -78
  149. package/src/components/toolbar/Toolbar.stories.tsx +59 -59
  150. package/src/components/toolbar/components/actions/add/index.tsx +18 -18
  151. package/src/components/toolbar/components/actions/search/index.tsx +38 -38
  152. package/src/components/toolbar/components/actions/sort/index.tsx +49 -49
  153. package/src/components/toolbar/components/breadcrumbs/index.tsx +63 -63
  154. package/src/components/toolbar/components/breadcrumbs/item/index.tsx +72 -72
  155. package/src/components/toolbar/components/dropdown/index.tsx +107 -107
  156. package/src/components/toolbar/components/navigation/components/button/left/index.tsx +28 -28
  157. package/src/components/toolbar/components/navigation/components/button/left/left-arrow.svg +3 -3
  158. package/src/components/toolbar/components/navigation/components/button/right/index.tsx +27 -27
  159. package/src/components/toolbar/components/navigation/components/button/right/right-arrow.svg +3 -3
  160. package/src/components/toolbar/components/navigation/index.tsx +36 -36
  161. package/src/components/toolbar/index.tsx +55 -55
  162. package/src/hooks/useDeepEffect.tsx +22 -22
  163. package/src/hooks/useDidMountEffect.tsx +13 -13
  164. package/src/hooks/useOnOutsideClick.tsx +31 -31
  165. package/src/hooks/useToast.tsx +16 -16
  166. package/src/index.tsx +78 -78
  167. package/src/theme/components/alert.ts +60 -60
  168. package/src/theme/components/badge.ts +59 -59
  169. package/src/theme/components/button.ts +163 -163
  170. package/src/theme/components/checkbox.ts +28 -28
  171. package/src/theme/components/code.ts +16 -16
  172. package/src/theme/components/form-error.ts +31 -31
  173. package/src/theme/components/form-label.ts +17 -17
  174. package/src/theme/components/form.ts +29 -29
  175. package/src/theme/components/input.ts +65 -65
  176. package/src/theme/components/link.ts +118 -118
  177. package/src/theme/components/modal.ts +45 -45
  178. package/src/theme/components/select.ts +36 -36
  179. package/src/theme/components/switch.ts +89 -89
  180. package/src/theme/components/table.ts +42 -42
  181. package/src/theme/components/tabs.ts +255 -255
  182. package/src/theme/components/text.ts +93 -93
  183. package/src/theme/components/textarea.ts +42 -42
  184. package/src/theme/customXQChakraTheme.ts +54 -54
  185. package/src/theme/foundations/breakpoints.ts +18 -18
  186. package/src/theme/foundations/colors.ts +165 -165
  187. package/src/theme/foundations/shadows.ts +23 -23
  188. package/src/theme/foundations/typography.ts +62 -62
  189. package/src/theme/provider/index.tsx +21 -21
  190. 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>