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

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