@spaced-out/ui-design-system 0.3.38-beta.0 → 0.3.39-beta.0

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 (307) hide show
  1. package/.cspell/custom-words.txt +4 -0
  2. package/.github/workflows/publish_to_npm.yml +32 -4
  3. package/CHANGELOG.md +16 -0
  4. package/dts-generator/.editorconfig +10 -0
  5. package/dts-generator/.gitattributes +4 -0
  6. package/dts-generator/README.md +63 -0
  7. package/dts-generator/convert.js +101 -0
  8. package/dts-generator/package.json +16 -0
  9. package/gulpfile.js +20 -1
  10. package/lib/components/Avatar/Avatar.d.ts +264 -0
  11. package/lib/components/Avatar/index.d.ts +1 -0
  12. package/lib/components/AvatarGroup/AvatarGroup.d.ts +161 -0
  13. package/lib/components/AvatarGroup/index.d.ts +1 -0
  14. package/lib/components/Badge/Badge.d.ts +138 -0
  15. package/lib/components/Badge/index.d.ts +1 -0
  16. package/lib/components/Banner/Banner.d.ts +52 -0
  17. package/lib/components/Banner/index.d.ts +1 -0
  18. package/lib/components/Breadcrumbs/BreadcrumbLink/BreadcrumbLink.d.ts +50 -0
  19. package/lib/components/Breadcrumbs/BreadcrumbLink/index.d.ts +1 -0
  20. package/lib/components/Breadcrumbs/Breadcrumbs.d.ts +64 -0
  21. package/lib/components/Breadcrumbs/index.d.ts +2 -0
  22. package/lib/components/Button/Button.d.ts +288 -0
  23. package/lib/components/Button/index.d.ts +14 -0
  24. package/lib/components/ButtonDropdown/ButtonDropdown.d.ts +192 -0
  25. package/lib/components/ButtonDropdown/SimpleButtonDropdown.d.ts +148 -0
  26. package/lib/components/ButtonDropdown/index.d.ts +2 -0
  27. package/lib/components/ButtonTabs/ButtonTab/ButtonTab.d.ts +82 -0
  28. package/lib/components/ButtonTabs/ButtonTab/index.d.ts +1 -0
  29. package/lib/components/ButtonTabs/ButtonTabDropdown.d.ts +118 -0
  30. package/lib/components/ButtonTabs/ButtonTabs.d.ts +113 -0
  31. package/lib/components/ButtonTabs/index.d.ts +2 -0
  32. package/lib/components/Card/Card.d.ts +163 -0
  33. package/lib/components/Card/index.d.ts +1 -0
  34. package/lib/components/Charts/ChartTooltip/index.d.ts +10 -0
  35. package/lib/components/Charts/ChartWrapper/ChartWrapper.d.ts +184 -0
  36. package/lib/components/Charts/ChartWrapper/index.d.ts +1 -0
  37. package/lib/components/Charts/ColumnChart/ColumnChart.d.ts +111 -0
  38. package/lib/components/Charts/ColumnChart/index.d.ts +1 -0
  39. package/lib/components/Charts/DonutChart/DonutChart.d.ts +142 -0
  40. package/lib/components/Charts/DonutChart/index.d.ts +1 -0
  41. package/lib/components/Charts/FunnelChart/FunnelChart.d.ts +99 -0
  42. package/lib/components/Charts/FunnelChart/index.d.ts +1 -0
  43. package/lib/components/Charts/LineChart/LineChart.d.ts +97 -0
  44. package/lib/components/Charts/LineChart/index.d.ts +1 -0
  45. package/lib/components/Charts/SpiderChart/SpiderChart.d.ts +95 -0
  46. package/lib/components/Charts/SpiderChart/index.d.ts +1 -0
  47. package/lib/components/Charts/index.d.ts +7 -0
  48. package/lib/components/ChatBubble/ChatBubble.d.ts +203 -0
  49. package/lib/components/ChatBubble/index.d.ts +1 -0
  50. package/lib/components/Checkbox/Checkbox.d.ts +165 -0
  51. package/lib/components/Checkbox/CheckboxGroup.d.ts +113 -0
  52. package/lib/components/Checkbox/index.d.ts +2 -0
  53. package/lib/components/Chip/Chip.d.ts +181 -0
  54. package/lib/components/Chip/index.d.ts +2 -0
  55. package/lib/components/CircularLoader/CircularLoader.d.ts +56 -0
  56. package/lib/components/CircularLoader/index.d.ts +1 -0
  57. package/lib/components/CollapsibleCard/CollapsibleCard.d.ts +134 -0
  58. package/lib/components/CollapsibleCard/index.d.ts +1 -0
  59. package/lib/components/Combobox/Combobox.d.ts +292 -0
  60. package/lib/components/Combobox/helper.d.ts +205 -0
  61. package/lib/components/Combobox/index.d.ts +1 -0
  62. package/lib/components/ConditionalWrapper/ConditionalWrapper.d.ts +12 -0
  63. package/lib/components/ConditionalWrapper/index.d.ts +1 -0
  64. package/lib/components/DateRangePicker/Calendar.d.ts +119 -0
  65. package/lib/components/DateRangePicker/DateRangePicker.d.ts +196 -0
  66. package/lib/components/DateRangePicker/DateRangeWrapper.d.ts +311 -0
  67. package/lib/components/DateRangePicker/Day.d.ts +70 -0
  68. package/lib/components/DateRangePicker/index.d.ts +1 -0
  69. package/lib/components/Dialog/Dialog.d.ts +208 -0
  70. package/lib/components/Dialog/index.d.ts +1 -0
  71. package/lib/components/Disclaimer/Disclaimer.d.ts +32 -0
  72. package/lib/components/Disclaimer/index.d.ts +1 -0
  73. package/lib/components/Dropdown/Dropdown.d.ts +145 -0
  74. package/lib/components/Dropdown/SimpleDropdown.d.ts +142 -0
  75. package/lib/components/Dropdown/index.d.ts +2 -0
  76. package/lib/components/EmptyState/EmptyImages/CalendarEmptyImage.d.ts +108 -0
  77. package/lib/components/EmptyState/EmptyImages/ChartEmptyImage.d.ts +194 -0
  78. package/lib/components/EmptyState/EmptyImages/DataEmptyImage.d.ts +116 -0
  79. package/lib/components/EmptyState/EmptyImages/FileEmptyImage.d.ts +133 -0
  80. package/lib/components/EmptyState/EmptyImages/MessageEmptyImage.d.ts +64 -0
  81. package/lib/components/EmptyState/EmptyImages/UploadEmptyImage.d.ts +67 -0
  82. package/lib/components/EmptyState/EmptyImages/index.d.ts +6 -0
  83. package/lib/components/EmptyState/EmptyState.d.ts +82 -0
  84. package/lib/components/EmptyState/index.d.ts +1 -0
  85. package/lib/components/ErrorMessage/ErrorImages/ForbiddenImage.d.ts +85 -0
  86. package/lib/components/ErrorMessage/ErrorImages/NotFoundImage.d.ts +117 -0
  87. package/lib/components/ErrorMessage/ErrorImages/ServerErrorImage.d.ts +237 -0
  88. package/lib/components/ErrorMessage/ErrorImages/UnauthorizedImage.d.ts +73 -0
  89. package/lib/components/ErrorMessage/ErrorImages/index.d.ts +4 -0
  90. package/lib/components/ErrorMessage/ErrorMessage.d.ts +86 -0
  91. package/lib/components/ErrorMessage/index.d.ts +1 -0
  92. package/lib/components/FileUpload/FileBlock/FileBlock.d.ts +137 -0
  93. package/lib/components/FileUpload/FileBlock/index.d.ts +1 -0
  94. package/lib/components/FileUpload/FileUpload.d.ts +190 -0
  95. package/lib/components/FileUpload/index.d.ts +2 -0
  96. package/lib/components/FocusManager/FocusManager.d.ts +52 -0
  97. package/lib/components/FocusManager/index.d.ts +1 -0
  98. package/lib/components/FocusManagerWithArrowKeyNavigation/FocusManagerWithArrowKeyNavigation.d.ts +137 -0
  99. package/lib/components/FocusManagerWithArrowKeyNavigation/index.d.ts +1 -0
  100. package/lib/components/FormTitleWrapper/FormTitleWrapper.d.ts +62 -0
  101. package/lib/components/FormTitleWrapper/index.d.ts +1 -0
  102. package/lib/components/Grid/Grid.d.ts +104 -0
  103. package/lib/components/Grid/index.d.ts +1 -0
  104. package/lib/components/Icon/ClickableIcon.d.ts +101 -0
  105. package/lib/components/Icon/Icon.d.ts +71 -0
  106. package/lib/components/Icon/Icon.docs.d.ts +138 -0
  107. package/lib/components/Icon/SemanticIcon.d.ts +42 -0
  108. package/lib/components/Icon/index.d.ts +3 -0
  109. package/lib/components/InContextAlert/InContextAlert.d.ts +210 -0
  110. package/lib/components/InContextAlert/index.d.ts +1 -0
  111. package/lib/components/InlineDropdown/InlineDropdown.d.ts +146 -0
  112. package/lib/components/InlineDropdown/SimpleInlineDropdown.d.ts +145 -0
  113. package/lib/components/InlineDropdown/index.d.ts +2 -0
  114. package/lib/components/Input/Input.d.ts +327 -0
  115. package/lib/components/Input/index.d.ts +1 -0
  116. package/lib/components/KPIBox/KPIBox.d.ts +89 -0
  117. package/lib/components/KPIBox/index.d.ts +1 -0
  118. package/lib/components/LinearLoader/LinearLoader.d.ts +44 -0
  119. package/lib/components/LinearLoader/index.d.ts +1 -0
  120. package/lib/components/Link/Link.d.ts +225 -0
  121. package/lib/components/Link/index.d.ts +1 -0
  122. package/lib/components/Menu/Menu.d.ts +379 -0
  123. package/lib/components/Menu/MenuOptionButton.d.ts +199 -0
  124. package/lib/components/Menu/index.d.ts +2 -0
  125. package/lib/components/Modal/Modal.d.ts +354 -0
  126. package/lib/components/Modal/index.d.ts +14 -0
  127. package/lib/components/Notification/Notification.d.ts +147 -0
  128. package/lib/components/Notification/index.d.ts +1 -0
  129. package/lib/components/OptionButton/OptionButton.d.ts +150 -0
  130. package/lib/components/OptionButton/SimpleOptionButton.d.ts +150 -0
  131. package/lib/components/OptionButton/index.d.ts +2 -0
  132. package/lib/components/PageTitle/PageTitle.d.ts +256 -0
  133. package/lib/components/PageTitle/index.d.ts +1 -0
  134. package/lib/components/Pagination/Pagination.d.ts +144 -0
  135. package/lib/components/Pagination/PaginationItem.d.ts +136 -0
  136. package/lib/components/Pagination/index.d.ts +1 -0
  137. package/lib/components/Panel/Panel.d.ts +168 -0
  138. package/lib/components/Panel/index.d.ts +9 -0
  139. package/lib/components/ProgressDonut/ProgressDonut.d.ts +102 -0
  140. package/lib/components/ProgressDonut/index.d.ts +1 -0
  141. package/lib/components/PromptChip/PromptChip.d.ts +167 -0
  142. package/lib/components/PromptChip/index.d.ts +1 -0
  143. package/lib/components/PromptInput/PromptInput.d.ts +189 -0
  144. package/lib/components/PromptInput/index.d.ts +1 -0
  145. package/lib/components/RadioButton/RadioButton.d.ts +132 -0
  146. package/lib/components/RadioButton/RadioGroup.d.ts +88 -0
  147. package/lib/components/RadioButton/index.d.ts +2 -0
  148. package/lib/components/RadioTile/RadioTile.d.ts +109 -0
  149. package/lib/components/RadioTile/index.d.ts +1 -0
  150. package/lib/components/RangeSlider/RangeSlider.d.ts +207 -0
  151. package/lib/components/RangeSlider/index.d.ts +1 -0
  152. package/lib/components/Rating/Rating.d.ts +131 -0
  153. package/lib/components/Rating/index.d.ts +1 -0
  154. package/lib/components/ScoreBar/ScoreBar.d.ts +122 -0
  155. package/lib/components/ScoreBar/index.d.ts +1 -0
  156. package/lib/components/SearchInput/SearchInput.d.ts +79 -0
  157. package/lib/components/SearchInput/index.d.ts +2 -0
  158. package/lib/components/Separator/Separator.d.ts +51 -0
  159. package/lib/components/Separator/index.d.ts +1 -0
  160. package/lib/components/Shimmer/Shimmer.d.ts +131 -0
  161. package/lib/components/Shimmer/index.d.ts +1 -0
  162. package/lib/components/SideMenuLink/SideMenuLink.d.ts +336 -0
  163. package/lib/components/SideMenuLink/index.d.ts +1 -0
  164. package/lib/components/StatusIndicator/StatusIndicator.d.ts +60 -0
  165. package/lib/components/StatusIndicator/index.d.ts +1 -0
  166. package/lib/components/Stepper/Step/Step.d.ts +119 -0
  167. package/lib/components/Stepper/Step/StepContent.d.ts +35 -0
  168. package/lib/components/Stepper/Step/StepLabel.d.ts +35 -0
  169. package/lib/components/Stepper/Step/index.d.ts +3 -0
  170. package/lib/components/Stepper/Stepper.d.ts +60 -0
  171. package/lib/components/Stepper/index.d.ts +2 -0
  172. package/lib/components/StickyBar/StickyBar.d.ts +55 -0
  173. package/lib/components/StickyBar/index.d.ts +1 -0
  174. package/lib/components/SubMenu/SubMenu.d.ts +89 -0
  175. package/lib/components/SubMenu/SubMenuGroup.d.ts +156 -0
  176. package/lib/components/SubMenu/SubMenuItem.d.ts +161 -0
  177. package/lib/components/SubMenu/SubMenuLink.d.ts +81 -0
  178. package/lib/components/SubMenu/index.d.ts +4 -0
  179. package/lib/components/Table/Cell.d.ts +107 -0
  180. package/lib/components/Table/DefaultRow.d.ts +144 -0
  181. package/lib/components/Table/DefaultTableHeader.d.ts +236 -0
  182. package/lib/components/Table/StaticTable.d.ts +198 -0
  183. package/lib/components/Table/Table.d.ts +113 -0
  184. package/lib/components/Table/Table.docs.d.ts +532 -0
  185. package/lib/components/Table/TableActionBar.d.ts +48 -0
  186. package/lib/components/Table/TableBottomBar.d.ts +20 -0
  187. package/lib/components/Table/TableTopBar.d.ts +20 -0
  188. package/lib/components/Table/dummyTableData.d.ts +2189 -0
  189. package/lib/components/Table/hooks.d.ts +98 -0
  190. package/lib/components/Table/index.d.ts +8 -0
  191. package/lib/components/Tabs/Tab/Tab.d.ts +146 -0
  192. package/lib/components/Tabs/Tab/index.d.ts +1 -0
  193. package/lib/components/Tabs/TabList/TabDropdown.d.ts +100 -0
  194. package/lib/components/Tabs/TabList/TabList.d.ts +157 -0
  195. package/lib/components/Tabs/TabList/index.d.ts +1 -0
  196. package/lib/components/Tabs/index.d.ts +2 -0
  197. package/lib/components/Text/Text.d.ts +1021 -0
  198. package/lib/components/Text/index.d.ts +30 -0
  199. package/lib/components/TextTile/TextTile.d.ts +40 -0
  200. package/lib/components/TextTile/index.d.ts +1 -0
  201. package/lib/components/Textarea/Textarea.d.ts +132 -0
  202. package/lib/components/Textarea/index.d.ts +2 -0
  203. package/lib/components/Timeline/Timeline.d.ts +40 -0
  204. package/lib/components/Timeline/TimelineItem/TimelineItem.d.ts +121 -0
  205. package/lib/components/Timeline/TimelineItem/index.d.ts +1 -0
  206. package/lib/components/Timeline/index.d.ts +2 -0
  207. package/lib/components/Toast/Toast.d.ts +248 -0
  208. package/lib/components/Toast/ToastContainer.d.ts +140 -0
  209. package/lib/components/Toast/ToastManager.d.ts +58 -0
  210. package/lib/components/Toast/index.d.ts +10 -0
  211. package/lib/components/Toggle/Toggle.d.ts +111 -0
  212. package/lib/components/Toggle/index.d.ts +1 -0
  213. package/lib/components/TokenListInput/TokenListInput.d.ts +333 -0
  214. package/lib/components/TokenListInput/TokenValueChips.d.ts +64 -0
  215. package/lib/components/TokenListInput/index.d.ts +1 -0
  216. package/lib/components/Tooltip/Tooltip.d.ts +186 -0
  217. package/lib/components/Tooltip/index.d.ts +1 -0
  218. package/lib/components/Truncate/Truncate.d.ts +87 -0
  219. package/lib/components/Truncate/index.d.ts +2 -0
  220. package/lib/components/TruncatedTextWithTooltip/TruncatedTextWithTooltip.d.ts +95 -0
  221. package/lib/components/TruncatedTextWithTooltip/index.d.ts +1 -0
  222. package/lib/components/Typeahead/SimpleTypeahead.d.ts +141 -0
  223. package/lib/components/Typeahead/Typeahead.d.ts +217 -0
  224. package/lib/components/Typeahead/index.d.ts +2 -0
  225. package/lib/components/WeekdayPicker/WeekdayPicker.d.ts +242 -0
  226. package/lib/components/WeekdayPicker/index.d.ts +1 -0
  227. package/lib/components/index.d.ts +71 -0
  228. package/lib/hooks/index.d.ts +12 -0
  229. package/lib/hooks/useArbitraryOptionAddition/index.d.ts +1 -0
  230. package/lib/hooks/useArbitraryOptionAddition/useArbitraryOptionAddition.d.ts +124 -0
  231. package/lib/hooks/useCopyToClipboard/index.d.ts +1 -0
  232. package/lib/hooks/useCopyToClipboard/useCopyToClipboard.d.ts +27 -0
  233. package/lib/hooks/useFileUpload/index.d.ts +1 -0
  234. package/lib/hooks/useFileUpload/useFileUpload.d.ts +342 -0
  235. package/lib/hooks/useFilteredOptions/index.d.ts +1 -0
  236. package/lib/hooks/useFilteredOptions/useFilteredOptions.d.ts +87 -0
  237. package/lib/hooks/useInputState/index.d.ts +1 -0
  238. package/lib/hooks/useInputState/useInputState.d.ts +22 -0
  239. package/lib/hooks/useLockedBody/index.d.ts +1 -0
  240. package/lib/hooks/useLockedBody/useLockedBody.d.ts +46 -0
  241. package/lib/hooks/useModal/index.d.ts +1 -0
  242. package/lib/hooks/useModal/useModal.d.ts +32 -0
  243. package/lib/hooks/useMountTransition/index.d.ts +24 -0
  244. package/lib/hooks/usePagination/index.d.ts +1 -0
  245. package/lib/hooks/usePagination/usePagination.d.ts +140 -0
  246. package/lib/hooks/useToastPortal/index.d.ts +1 -0
  247. package/lib/hooks/useToastPortal/useToastPortal.d.ts +31 -0
  248. package/lib/hooks/useToggle/index.d.ts +1 -0
  249. package/lib/hooks/useToggle/useToggle.d.ts +11 -0
  250. package/lib/hooks/useWindowSize/index.d.ts +1 -0
  251. package/lib/hooks/useWindowSize/useWindowSize.d.ts +28 -0
  252. package/lib/index.d.ts +5 -0
  253. package/lib/styles/index.d.ts +267 -0
  254. package/lib/styles/variables/_border.d.ts +12 -0
  255. package/lib/styles/variables/_color.d.ts +104 -0
  256. package/lib/styles/variables/_elevation.d.ts +7 -0
  257. package/lib/styles/variables/_font.d.ts +30 -0
  258. package/lib/styles/variables/_motion.d.ts +6 -0
  259. package/lib/styles/variables/_opacity.d.ts +15 -0
  260. package/lib/styles/variables/_shadow.d.ts +24 -0
  261. package/lib/styles/variables/_size.d.ts +57 -0
  262. package/lib/styles/variables/_space.d.ts +12 -0
  263. package/lib/types/charts.d.ts +225 -0
  264. package/lib/types/common.d.ts +10 -0
  265. package/lib/types/date-range-picker.d.ts +17 -0
  266. package/lib/types/date-range-picker.js.flow +2 -3
  267. package/lib/types/index.d.ts +6 -0
  268. package/lib/types/menu.d.ts +13 -0
  269. package/lib/types/toast.d.ts +32 -0
  270. package/lib/types/typography.d.ts +17 -0
  271. package/lib/utils/array/are-arrays-equal.d.ts +11 -0
  272. package/lib/utils/array/index.d.ts +1 -0
  273. package/lib/utils/charts/charts.d.ts +102 -0
  274. package/lib/utils/charts/columnChart.d.ts +51 -0
  275. package/lib/utils/charts/donutChart.d.ts +116 -0
  276. package/lib/utils/charts/funnelChart.d.ts +94 -0
  277. package/lib/utils/charts/helpers.d.ts +44 -0
  278. package/lib/utils/charts/index.d.ts +7 -0
  279. package/lib/utils/charts/lineChart.d.ts +44 -0
  280. package/lib/utils/charts/spiderChart.d.ts +46 -0
  281. package/lib/utils/charts/typography.d.ts +42 -0
  282. package/lib/utils/classify/index.d.ts +27 -0
  283. package/lib/utils/click-away/click-away.d.ts +194 -0
  284. package/lib/utils/click-away/index.d.ts +1 -0
  285. package/lib/utils/date-range-picker/date-range-picker.d.ts +391 -0
  286. package/lib/utils/date-range-picker/index.d.ts +2 -0
  287. package/lib/utils/date-range-picker/timezones.d.ts +262 -0
  288. package/lib/utils/dom/dom.d.ts +245 -0
  289. package/lib/utils/dom/index.d.ts +1 -0
  290. package/lib/utils/helpers/helpers.d.ts +48 -0
  291. package/lib/utils/helpers/index.d.ts +1 -0
  292. package/lib/utils/index.d.ts +14 -0
  293. package/lib/utils/makeClassNameComponent/index.d.ts +1 -0
  294. package/lib/utils/makeClassNameComponent/makeClassNameComponent.d.ts +73 -0
  295. package/lib/utils/menu/index.d.ts +1 -0
  296. package/lib/utils/merge-refs/index.d.ts +1 -0
  297. package/lib/utils/merge-refs/merge-refs.d.ts +15 -0
  298. package/lib/utils/rating/index.d.ts +1 -0
  299. package/lib/utils/rating/rating.d.ts +31 -0
  300. package/lib/utils/score-bar/index.d.ts +1 -0
  301. package/lib/utils/score-bar/score-bar.d.ts +54 -0
  302. package/lib/utils/string/index.d.ts +1 -0
  303. package/lib/utils/string/string.d.ts +30 -0
  304. package/lib/utils/token-list-input/token-list-input.d.ts +32 -0
  305. package/lib/utils/tokens/index.d.ts +1 -0
  306. package/lib/utils/tokens/tokens.d.ts +230 -0
  307. package/package.json +5 -5
@@ -0,0 +1,391 @@
1
+ import {$Values} from 'utility-types';
2
+ // @ts-expect-error - strict types for date-fns
3
+ import parseISO from 'date-fns/parseISO';
4
+ import invariant from 'invariant';
5
+ import {chunk, isEmpty, range} from 'lodash';
6
+ // @ts-expect-error[untyped-import]
7
+ import moment from 'moment';
8
+ import type {
9
+ DateRange,
10
+ DateRangePickerError,
11
+ DateRangeWithTimezone,
12
+ TimeUnit,
13
+ } from 'src/types/date-range-picker';
14
+ import type {MenuOption} from '../../components/Menu';
15
+ import {TIMEZONES} from './timezones';
16
+ export const NAVIGATION_ACTION = Object.freeze({
17
+ NEXT: 'next',
18
+ PREV: 'prev',
19
+ });
20
+ export const MARKERS = Object.freeze({
21
+ DATE_RANGE_START: 'FIRST',
22
+ DATE_RANGE_END: 'SECOND',
23
+ });
24
+ export const WEEKDAYS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];
25
+ export const MONTHS = [
26
+ {
27
+ key: '0',
28
+ label: 'Jan',
29
+ },
30
+ {
31
+ key: '1',
32
+ label: 'Feb',
33
+ },
34
+ {
35
+ key: '2',
36
+ label: 'Mar',
37
+ },
38
+ {
39
+ key: '3',
40
+ label: 'Apr',
41
+ },
42
+ {
43
+ key: '4',
44
+ label: 'May',
45
+ },
46
+ {
47
+ key: '5',
48
+ label: 'Jun',
49
+ },
50
+ {
51
+ key: '6',
52
+ label: 'Jul',
53
+ },
54
+ {
55
+ key: '7',
56
+ label: 'Aug',
57
+ },
58
+ {
59
+ key: '8',
60
+ label: 'Sep',
61
+ },
62
+ {
63
+ key: '9',
64
+ label: 'Oct',
65
+ },
66
+ {
67
+ key: '10',
68
+ label: 'Nov',
69
+ },
70
+ {
71
+ key: '11',
72
+ label: 'Dec',
73
+ },
74
+ ];
75
+ export const DATE_RANGE_PICKER_ERRORS = Object.freeze({
76
+ MIN_MAX_INVALID: {
77
+ type: 'MIN_MAX_INVALID',
78
+ description: 'Given minDate and maxDate are invalid.',
79
+ },
80
+ START_DATE_EARLY: {
81
+ type: 'START_DATE_EARLY',
82
+ description: 'Given startDate can not come before minDate.',
83
+ },
84
+ START_DATE_LATE: {
85
+ type: 'START_DATE_LATE',
86
+ description: 'Given startDate can not come after endDate.',
87
+ },
88
+ END_DATE_LATE: {
89
+ type: 'END_DATE_LATE',
90
+ description: 'Given endDate can not come after maxDate.',
91
+ },
92
+ });
93
+ export const checkRangeValidity = (
94
+ rangeStart?: string | null | undefined,
95
+ rangeEnd?: string | null | undefined,
96
+ errorBody: DateRangePickerError,
97
+ onError?: (arg0: DateRangePickerError) => void,
98
+ ): boolean => {
99
+ const isRangeStartValid = isValid(rangeStart);
100
+ const isRangeEndValid = isRangeStartValid && isValid(rangeEnd);
101
+ const isRangeValid = isRangeEndValid && isSameOrBefore(rangeStart, rangeEnd);
102
+ invariant(isRangeValid, JSON.stringify(errorBody));
103
+
104
+ if (!isRangeValid) {
105
+ onError?.(errorBody);
106
+ }
107
+
108
+ return isRangeValid;
109
+ };
110
+ export const wrangleMoment = (date?: string | Date): Date => {
111
+ if (date instanceof Date) {
112
+ return date;
113
+ } else if (!date) {
114
+ return new Date();
115
+ }
116
+
117
+ return date instanceof moment ? date.toDate() : parseISO(date);
118
+ };
119
+ export const formatIsoDate = (date?: string | Date): string =>
120
+ moment.utc(date).format('YYYY-MM-DD');
121
+ export const isStartOfRange = ({startDate}: DateRange, date: string): boolean =>
122
+ Boolean(startDate) && moment.utc(date).isSame(moment.utc(startDate), 'd');
123
+ export const isEndOfRange = ({endDate}: DateRange, date: string): boolean =>
124
+ Boolean(endDate) && moment.utc(date).isSame(moment.utc(endDate), 'd');
125
+ export const inDateRange = (
126
+ {startDate, endDate}: DateRange,
127
+ date: string,
128
+ ): boolean => {
129
+ if (startDate && endDate) {
130
+ const momentDay = moment.utc(date);
131
+ const momentStartDate = moment.utc(startDate);
132
+ const momentEndDate = moment.utc(endDate);
133
+ return isBetween(momentDay, momentStartDate, momentEndDate);
134
+ }
135
+
136
+ return false;
137
+ };
138
+ export const isStartDateEndDateSame = ({
139
+ startDate,
140
+ endDate,
141
+ }: DateRange): boolean => {
142
+ if (startDate && endDate) {
143
+ return moment.utc(startDate).isSame(moment.utc(endDate), 'd');
144
+ }
145
+
146
+ return false;
147
+ };
148
+
149
+ const getMonthAndYear = (date) => {
150
+ const momentDate = date ? moment.utc(date) : moment.utc();
151
+ return [momentDate.month(), momentDate.year()];
152
+ };
153
+
154
+ export const getDaysInMonth = (date: string): Array<Array<string>> => {
155
+ const startWeek = moment.utc(date).startOf('month').startOf('week');
156
+ const endWeek = moment.utc(date).endOf('month').endOf('week');
157
+ const days = [],
158
+ current = startWeek;
159
+
160
+ while (isBefore(current, endWeek)) {
161
+ days.push(current.clone().format('YYYY-MM-DD'));
162
+ current.add(1, 'd');
163
+ }
164
+
165
+ const daysInChunks = chunk(days, 7);
166
+
167
+ // if total rows in calendar are 5 add one more week to the calendar
168
+ if (daysInChunks.length === 5) {
169
+ const nextWeek = getAddedDate(endWeek, WEEKDAYS.length, 'd');
170
+ const extraDays = [];
171
+
172
+ while (isSameOrBefore(current, nextWeek)) {
173
+ extraDays.push(current.clone().format('YYYY-MM-DD'));
174
+ current.add(1, 'd');
175
+ }
176
+
177
+ daysInChunks.push(extraDays);
178
+ }
179
+
180
+ return daysInChunks;
181
+ };
182
+ export const getAddedDate = (
183
+ date: string,
184
+ addCount: number,
185
+ timeUnit: TimeUnit,
186
+ ): string => formatIsoDate(moment.utc(date).add(addCount, timeUnit));
187
+ export const getSubtractedDate = (
188
+ date: string,
189
+ subtractCount: number,
190
+ timeUnit: TimeUnit,
191
+ ): string => formatIsoDate(moment.utc(date).subtract(subtractCount, timeUnit));
192
+ export const getMonthEndDate = (date: string): string =>
193
+ formatIsoDate(moment.utc(date).endOf('M'));
194
+ export const getTimezones = (): Array<MenuOption> =>
195
+ Object.keys(TIMEZONES).reduce((menuOptions, key) => {
196
+ menuOptions.push({
197
+ key,
198
+ label: TIMEZONES[key],
199
+ });
200
+ return menuOptions;
201
+ }, []);
202
+ export const generateAvailableYears = ({
203
+ marker,
204
+ minDate,
205
+ maxDate,
206
+ rangeStartMonth,
207
+ rangeEndMonth,
208
+ }: {
209
+ marker: $Values<typeof MARKERS>;
210
+ minDate: string;
211
+ maxDate: string;
212
+ rangeStartMonth: string;
213
+ rangeEndMonth: string;
214
+ }): Array<MenuOption> => {
215
+ const rangeStartYear = moment.utc(rangeStartMonth).year();
216
+ const rangeEndYear = moment.utc(rangeEndMonth).year();
217
+
218
+ const isWithinRange = (year: number) =>
219
+ marker === MARKERS.DATE_RANGE_START
220
+ ? year <= rangeEndYear
221
+ : year >= rangeStartYear;
222
+
223
+ return range(moment.utc(minDate).year(), moment.utc(maxDate).year() + 1)
224
+ .filter((year) => isWithinRange(year))
225
+ .map((year) => ({
226
+ key: year.toString(),
227
+ label: year.toString(),
228
+ }));
229
+ };
230
+ export const getAvailableMonths = ({
231
+ marker,
232
+ minDate,
233
+ maxDate,
234
+ rangeStartMonth,
235
+ rangeEndMonth,
236
+ }: {
237
+ marker: $Values<typeof MARKERS>;
238
+ minDate: string;
239
+ maxDate: string;
240
+ rangeStartMonth: string;
241
+ rangeEndMonth: string;
242
+ }): Array<MenuOption> => {
243
+ const [rangeStartMonthKey, rangeStartYear] = getMonthAndYear(rangeStartMonth);
244
+ const [rangeEndMonthKey, rangeEndYear] = getMonthAndYear(rangeEndMonth);
245
+ const [minDateMonth, minDateYear] = getMonthAndYear(minDate);
246
+ const [maxDateMonth, maxDateYear] = getMonthAndYear(maxDate);
247
+ return MONTHS.filter((month: MenuOption) => {
248
+ const isSameYear = rangeStartYear === rangeEndYear;
249
+ const isFirstAndMinDateYearSame = rangeStartYear === minDateYear;
250
+ const isSecondAndMaxDateYearSame = rangeEndYear === maxDateYear;
251
+
252
+ if (marker === MARKERS.DATE_RANGE_START) {
253
+ if (isSameYear && month.key >= rangeEndMonthKey) {
254
+ return false;
255
+ } else if (isFirstAndMinDateYearSame && month.key < minDateMonth) {
256
+ return false;
257
+ } else {
258
+ return true;
259
+ }
260
+ } else {
261
+ if (isSameYear && month.key <= rangeStartMonthKey) {
262
+ return false;
263
+ } else if (isSecondAndMaxDateYearSame && month.key > maxDateMonth) {
264
+ return false;
265
+ } else {
266
+ return true;
267
+ }
268
+ }
269
+ });
270
+ };
271
+ export const getValidDates = ({
272
+ selectedDateRange,
273
+ minDate,
274
+ maxDate,
275
+ today,
276
+ onError,
277
+ }: {
278
+ selectedDateRange: DateRangeWithTimezone;
279
+ minDate?: string | null | undefined;
280
+ maxDate?: string | null | undefined;
281
+ today: string;
282
+ onError?: (arg0: DateRangePickerError) => void;
283
+ }): {
284
+ validMinDate: string;
285
+ validMaxDate: string;
286
+ validDateRange: DateRange;
287
+ } => {
288
+ const {startDate, endDate} = selectedDateRange;
289
+ const validMaxDate = maxDate && !isEmpty(maxDate) ? maxDate : today;
290
+ const validMinDate =
291
+ minDate && !isEmpty(minDate) ? minDate : getSubtractedDate(today, 8, 'y');
292
+
293
+ const isRangeValid = (min, max, errorMessage) =>
294
+ checkRangeValidity(min, max, errorMessage, onError);
295
+
296
+ // minDate should be after maxDate
297
+ const isMinMaxRangeInvalid = !isRangeValid(
298
+ validMinDate,
299
+ validMaxDate,
300
+ DATE_RANGE_PICKER_ERRORS.MIN_MAX_INVALID,
301
+ );
302
+ // if startDate is defined and then it should be after minDate
303
+ const isStartDateInvalid =
304
+ isMinMaxRangeInvalid ||
305
+ isEmpty(startDate) ||
306
+ !isRangeValid(
307
+ validMinDate,
308
+ startDate,
309
+ DATE_RANGE_PICKER_ERRORS.START_DATE_EARLY,
310
+ );
311
+
312
+ if (isMinMaxRangeInvalid || isStartDateInvalid) {
313
+ return {
314
+ validDateRange: {
315
+ startDate: null,
316
+ endDate: null,
317
+ },
318
+ validMinDate,
319
+ validMaxDate,
320
+ };
321
+ }
322
+
323
+ // if endDate is defined then it should be before maxDate
324
+ const isEndDateInvalid =
325
+ isEmpty(endDate) ||
326
+ !isRangeValid(
327
+ endDate,
328
+ validMaxDate,
329
+ DATE_RANGE_PICKER_ERRORS.END_DATE_LATE,
330
+ );
331
+ // startDate should be before endDate
332
+ const isStartEndRangeInvalid =
333
+ isEndDateInvalid ||
334
+ !isRangeValid(startDate, endDate, DATE_RANGE_PICKER_ERRORS.START_DATE_LATE);
335
+
336
+ if (isEndDateInvalid || isStartEndRangeInvalid) {
337
+ return {
338
+ validDateRange: {
339
+ startDate,
340
+ endDate: null,
341
+ },
342
+ validMinDate,
343
+ validMaxDate,
344
+ };
345
+ }
346
+
347
+ return {
348
+ validDateRange: {
349
+ startDate: isEmpty(startDate) ? null : startDate,
350
+ endDate: isEmpty(endDate) ? null : endDate,
351
+ },
352
+ validMinDate,
353
+ validMaxDate,
354
+ };
355
+ };
356
+ // If date1 is same as date2 w.r.t the unit passed
357
+ export const isSame = (
358
+ date1: string,
359
+ date2: string,
360
+ unit: 'd' | 'month',
361
+ ): boolean => moment.utc(date1).isSame(moment.utc(date2), unit);
362
+ // If date1 is before date2
363
+ export const isBefore = (date1: string, date2: string): boolean =>
364
+ moment.utc(date1).isBefore(moment.utc(date2));
365
+ // If date1 is after date2 w.r.t the unit passed
366
+ export const isAfter = (date1: string, date2: string): boolean =>
367
+ moment.utc(date1).isAfter(moment.utc(date2));
368
+ // If date1 is same or before date2 w.r.t the unit passed
369
+ export const isSameOrBefore = (
370
+ date1?: string | null | undefined,
371
+ date2?: string | null | undefined,
372
+ unit?: 'd' | 'month',
373
+ ): boolean => moment.utc(date1).isSameOrBefore(moment.utc(date2), unit);
374
+ // If date1 is same or after date2 w.r.t the unit passed
375
+ export const isSameOrAfter = (
376
+ date1?: string | null | undefined,
377
+ date2?: string | null | undefined,
378
+ unit?: 'd' | 'month',
379
+ ): boolean => moment.utc(date1).isSameOrAfter(moment.utc(date2), unit);
380
+ // If date is between startRange and endRange
381
+ export const isBetween = (
382
+ date: string,
383
+ startRange: string,
384
+ endRange: string,
385
+ ): boolean =>
386
+ moment
387
+ .utc(date)
388
+ .isBetween(moment.utc(startRange), moment.utc(endRange), null, '[]');
389
+ // If the date results in a date that exists in the calendar
390
+ export const isValid = (date?: string | null | undefined): boolean =>
391
+ moment.utc(date).isValid();
@@ -0,0 +1,2 @@
1
+ export * from './date-range-picker';
2
+ export * from './timezones';
@@ -0,0 +1,262 @@
1
+ // @ts-expect-error[untyped-import]
2
+ import moment from 'moment-timezone';
3
+ export const TIMEZONES = {
4
+ 'Pacific/Niue': '(GMT-11:00) Niue',
5
+ 'Pacific/Pago_Pago': '(GMT-11:00) Pago Pago',
6
+ 'Pacific/Honolulu': '(GMT-10:00) Hawaii Time',
7
+ 'Pacific/Rarotonga': '(GMT-10:00) Rarotonga',
8
+ 'Pacific/Tahiti': '(GMT-10:00) Tahiti',
9
+ 'Pacific/Marquesas': '(GMT-09:30) Marquesas',
10
+ 'America/Anchorage': '(GMT-09:00) Alaska Time',
11
+ 'Pacific/Gambier': '(GMT-09:00) Gambier',
12
+ 'America/Los_Angeles': '(GMT-08:00) Pacific Time',
13
+ 'America/Tijuana': '(GMT-08:00) Pacific Time - Tijuana',
14
+ 'America/Vancouver': '(GMT-08:00) Pacific Time - Vancouver',
15
+ 'America/Whitehorse': '(GMT-08:00) Pacific Time - Whitehorse',
16
+ 'Pacific/Pitcairn': '(GMT-08:00) Pitcairn',
17
+ 'America/Dawson_Creek': '(GMT-07:00) Mountain Time - Dawson Creek',
18
+ 'America/Denver': '(GMT-07:00) Mountain Time',
19
+ 'America/Edmonton': '(GMT-07:00) Mountain Time - Edmonton',
20
+ 'America/Hermosillo': '(GMT-07:00) Mountain Time - Hermosillo',
21
+ 'America/Mazatlan': '(GMT-07:00) Mountain Time - Chihuahua, Mazatlan',
22
+ 'America/Phoenix': '(GMT-07:00) Mountain Time - Arizona',
23
+ 'America/Yellowknife': '(GMT-07:00) Mountain Time - Yellowknife',
24
+ 'America/Belize': '(GMT-06:00) Belize',
25
+ 'America/Chicago': '(GMT-06:00) Central Time',
26
+ 'America/Costa_Rica': '(GMT-06:00) Costa Rica',
27
+ 'America/El_Salvador': '(GMT-06:00) El Salvador',
28
+ 'America/Guatemala': '(GMT-06:00) Guatemala',
29
+ 'America/Managua': '(GMT-06:00) Managua',
30
+ 'America/Mexico_City': '(GMT-06:00) Central Time - Mexico City',
31
+ 'America/Regina': '(GMT-06:00) Central Time - Regina',
32
+ 'America/Tegucigalpa': '(GMT-06:00) Central Time - Tegucigalpa',
33
+ 'America/Winnipeg': '(GMT-06:00) Central Time - Winnipeg',
34
+ 'Pacific/Galapagos': '(GMT-06:00) Galapagos',
35
+ 'America/Bogota': '(GMT-05:00) Bogota',
36
+ 'America/Cancun': '(GMT-05:00) America Cancun',
37
+ 'America/Cayman': '(GMT-05:00) Cayman',
38
+ 'America/Guayaquil': '(GMT-05:00) Guayaquil',
39
+ 'America/Havana': '(GMT-05:00) Havana',
40
+ 'America/Iqaluit': '(GMT-05:00) Eastern Time - Iqaluit',
41
+ 'America/Jamaica': '(GMT-05:00) Jamaica',
42
+ 'America/Lima': '(GMT-05:00) Lima',
43
+ 'America/Nassau': '(GMT-05:00) Nassau',
44
+ 'America/New_York': '(GMT-05:00) Eastern Time',
45
+ 'America/Panama': '(GMT-05:00) Panama',
46
+ 'America/Port-au-Prince': '(GMT-05:00) Port-au-Prince',
47
+ 'America/Rio_Branco': '(GMT-05:00) Rio Branco',
48
+ 'America/Toronto': '(GMT-05:00) Eastern Time - Toronto',
49
+ 'Pacific/Easter': '(GMT-05:00) Easter Island',
50
+ 'America/Caracas': '(GMT-04:00) Caracas',
51
+ 'America/Asuncion': '(GMT-03:00) Asuncion',
52
+ 'America/Barbados': '(GMT-04:00) Barbados',
53
+ 'America/Boa_Vista': '(GMT-04:00) Boa Vista',
54
+ 'America/Campo_Grande': '(GMT-03:00) Campo Grande',
55
+ 'America/Cuiaba': '(GMT-03:00) Cuiaba',
56
+ 'America/Curacao': '(GMT-04:00) Curacao',
57
+ 'America/Grand_Turk': '(GMT-04:00) Grand Turk',
58
+ 'America/Guyana': '(GMT-04:00) Guyana',
59
+ 'America/Halifax': '(GMT-04:00) Atlantic Time - Halifax',
60
+ 'America/La_Paz': '(GMT-04:00) La Paz',
61
+ 'America/Manaus': '(GMT-04:00) Manaus',
62
+ 'America/Martinique': '(GMT-04:00) Martinique',
63
+ 'America/Port_of_Spain': '(GMT-04:00) Port of Spain',
64
+ 'America/Porto_Velho': '(GMT-04:00) Porto Velho',
65
+ 'America/Puerto_Rico': '(GMT-04:00) Puerto Rico',
66
+ 'America/Santo_Domingo': '(GMT-04:00) Santo Domingo',
67
+ 'America/Thule': '(GMT-04:00) Thule',
68
+ 'Atlantic/Bermuda': '(GMT-04:00) Bermuda',
69
+ 'America/St_Johns': '(GMT-03:30) Newfoundland Time - St. Johns',
70
+ 'America/Araguaina': '(GMT-03:00) Araguaina',
71
+ 'America/Argentina/Buenos_Aires': '(GMT-03:00) Buenos Aires',
72
+ 'America/Bahia': '(GMT-03:00) Salvador',
73
+ 'America/Belem': '(GMT-03:00) Belem',
74
+ 'America/Cayenne': '(GMT-03:00) Cayenne',
75
+ 'America/Fortaleza': '(GMT-03:00) Fortaleza',
76
+ 'America/Godthab': '(GMT-03:00) Godthab',
77
+ 'America/Maceio': '(GMT-03:00) Maceio',
78
+ 'America/Miquelon': '(GMT-03:00) Miquelon',
79
+ 'America/Montevideo': '(GMT-03:00) Montevideo',
80
+ 'America/Paramaribo': '(GMT-03:00) Paramaribo',
81
+ 'America/Recife': '(GMT-03:00) Recife',
82
+ 'America/Santiago': '(GMT-03:00) Santiago',
83
+ 'America/Sao_Paulo': '(GMT-03:00) Sao Paulo',
84
+ 'Antarctica/Palmer': '(GMT-03:00) Palmer',
85
+ 'Antarctica/Rothera': '(GMT-03:00) Rothera',
86
+ 'Atlantic/Stanley': '(GMT-03:00) Stanley',
87
+ 'America/Noronha': '(GMT-02:00) Noronha',
88
+ 'Atlantic/South_Georgia': '(GMT-02:00) South Georgia',
89
+ 'America/Scoresbysund': '(GMT-01:00) Scoresbysund',
90
+ 'Atlantic/Azores': '(GMT-01:00) Azores',
91
+ 'Atlantic/Cape_Verde': '(GMT-01:00) Cape Verde',
92
+ 'Africa/Abidjan': '(GMT+00:00) Abidjan',
93
+ 'Africa/Accra': '(GMT+00:00) Accra',
94
+ 'Africa/Bissau': '(GMT+00:00) Bissau',
95
+ 'Africa/Casablanca': '(GMT+00:00) Casablanca',
96
+ 'Africa/El_Aaiun': '(GMT+00:00) El Aaiun',
97
+ 'Africa/Monrovia': '(GMT+00:00) Monrovia',
98
+ 'America/Danmarkshavn': '(GMT+00:00) Danmarkshavn',
99
+ 'Atlantic/Canary': '(GMT+00:00) Canary Islands',
100
+ 'Atlantic/Faroe': '(GMT+00:00) Faeroe',
101
+ 'Atlantic/Reykjavik': '(GMT+00:00) Reykjavik',
102
+ 'Etc/GMT': '(GMT+00:00) GMT (no daylight saving)',
103
+ 'Europe/Dublin': '(GMT+00:00) Dublin',
104
+ 'Europe/Lisbon': '(GMT+00:00) Lisbon',
105
+ 'Europe/London': '(GMT+00:00) London',
106
+ 'Africa/Algiers': '(GMT+01:00) Algiers',
107
+ 'Africa/Ceuta': '(GMT+01:00) Ceuta',
108
+ 'Africa/Lagos': '(GMT+01:00) Lagos',
109
+ 'Africa/Ndjamena': '(GMT+01:00) Ndjamena',
110
+ 'Africa/Tunis': '(GMT+01:00) Tunis',
111
+ 'Africa/Windhoek': '(GMT+02:00) Windhoek',
112
+ 'Europe/Amsterdam': '(GMT+01:00) Amsterdam',
113
+ 'Europe/Andorra': '(GMT+01:00) Andorra',
114
+ 'Europe/Belgrade': '(GMT+01:00) Central European Time - Belgrade',
115
+ 'Europe/Berlin': '(GMT+01:00) Berlin',
116
+ 'Europe/Brussels': '(GMT+01:00) Brussels',
117
+ 'Europe/Budapest': '(GMT+01:00) Budapest',
118
+ 'Europe/Copenhagen': '(GMT+01:00) Copenhagen',
119
+ 'Europe/Gibraltar': '(GMT+01:00) Gibraltar',
120
+ 'Europe/Luxembourg': '(GMT+01:00) Luxembourg',
121
+ 'Europe/Madrid': '(GMT+01:00) Madrid',
122
+ 'Europe/Malta': '(GMT+01:00) Malta',
123
+ 'Europe/Monaco': '(GMT+01:00) Monaco',
124
+ 'Europe/Oslo': '(GMT+01:00) Oslo',
125
+ 'Europe/Paris': '(GMT+01:00) Paris',
126
+ 'Europe/Prague': '(GMT+01:00) Central European Time - Prague',
127
+ 'Europe/Rome': '(GMT+01:00) Rome',
128
+ 'Europe/Stockholm': '(GMT+01:00) Stockholm',
129
+ 'Europe/Tirane': '(GMT+01:00) Tirane',
130
+ 'Europe/Vienna': '(GMT+01:00) Vienna',
131
+ 'Europe/Warsaw': '(GMT+01:00) Warsaw',
132
+ 'Europe/Zurich': '(GMT+01:00) Zurich',
133
+ 'Africa/Cairo': '(GMT+02:00) Cairo',
134
+ 'Africa/Johannesburg': '(GMT+02:00) Johannesburg',
135
+ 'Africa/Maputo': '(GMT+02:00) Maputo',
136
+ 'Africa/Tripoli': '(GMT+02:00) Tripoli',
137
+ 'Asia/Amman': '(GMT+02:00) Amman',
138
+ 'Asia/Beirut': '(GMT+02:00) Beirut',
139
+ 'Asia/Damascus': '(GMT+02:00) Damascus',
140
+ 'Asia/Gaza': '(GMT+02:00) Gaza',
141
+ 'Asia/Jerusalem': '(GMT+02:00) Jerusalem',
142
+ 'Asia/Nicosia': '(GMT+02:00) Nicosia',
143
+ 'Europe/Athens': '(GMT+02:00) Athens',
144
+ 'Europe/Bucharest': '(GMT+02:00) Bucharest',
145
+ 'Europe/Chisinau': '(GMT+02:00) Chisinau',
146
+ 'Europe/Helsinki': '(GMT+02:00) Helsinki',
147
+ 'Europe/Istanbul': '(GMT+03:00) Istanbul',
148
+ 'Europe/Kaliningrad': '(GMT+02:00) Moscow-01 - Kaliningrad',
149
+ 'Europe/Kyiv': '(GMT+02:00) Kyiv',
150
+ 'Europe/Riga': '(GMT+02:00) Riga',
151
+ 'Europe/Sofia': '(GMT+02:00) Sofia',
152
+ 'Europe/Tallinn': '(GMT+02:00) Tallinn',
153
+ 'Europe/Vilnius': '(GMT+02:00) Vilnius',
154
+ 'Africa/Khartoum': '(GMT+03:00) Khartoum',
155
+ 'Africa/Nairobi': '(GMT+03:00) Nairobi',
156
+ 'Antarctica/Syowa': '(GMT+03:00) Syowa',
157
+ 'Asia/Baghdad': '(GMT+03:00) Baghdad',
158
+ 'Asia/Qatar': '(GMT+03:00) Qatar',
159
+ 'Asia/Riyadh': '(GMT+03:00) Riyadh',
160
+ 'Europe/Minsk': '(GMT+03:00) Minsk',
161
+ 'Europe/Moscow': '(GMT+03:00) Moscow+00 - Moscow',
162
+ 'Asia/Tehran': '(GMT+03:30) Tehran',
163
+ 'Asia/Baku': '(GMT+04:00) Baku',
164
+ 'Asia/Dubai': '(GMT+04:00) Dubai',
165
+ 'Asia/Tbilisi': '(GMT+04:00) Tbilisi',
166
+ 'Asia/Yerevan': '(GMT+04:00) Yerevan',
167
+ 'Europe/Samara': '(GMT+04:00) Moscow+01 - Samara',
168
+ 'Indian/Mahe': '(GMT+04:00) Mahe',
169
+ 'Indian/Mauritius': '(GMT+04:00) Mauritius',
170
+ 'Indian/Reunion': '(GMT+04:00) Reunion',
171
+ 'Asia/Kabul': '(GMT+04:30) Kabul',
172
+ 'Antarctica/Mawson': '(GMT+05:00) Mawson',
173
+ 'Asia/Aqtau': '(GMT+05:00) Aqtau',
174
+ 'Asia/Aqtobe': '(GMT+05:00) Aqtobe',
175
+ 'Asia/Ashgabat': '(GMT+05:00) Ashgabat',
176
+ 'Asia/Dushanbe': '(GMT+05:00) Dushanbe',
177
+ 'Asia/Karachi': '(GMT+05:00) Karachi',
178
+ 'Asia/Tashkent': '(GMT+05:00) Tashkent',
179
+ 'Asia/Yekaterinburg': '(GMT+05:00) Moscow+02 - Yekaterinburg',
180
+ 'Indian/Kerguelen': '(GMT+05:00) Kerguelen',
181
+ 'Indian/Maldives': '(GMT+05:00) Maldives',
182
+ 'Asia/Calcutta': '(GMT+05:30) India Standard Time',
183
+ 'Asia/Colombo': '(GMT+05:30) Colombo',
184
+ 'Asia/Katmandu': '(GMT+05:45) Katmandu',
185
+ 'Antarctica/Vostok': '(GMT+06:00) Vostok',
186
+ 'Asia/Almaty': '(GMT+06:00) Almaty',
187
+ 'Asia/Bishkek': '(GMT+06:00) Bishkek',
188
+ 'Asia/Dhaka': '(GMT+06:00) Dhaka',
189
+ 'Asia/Omsk': '(GMT+06:00) Moscow+03 - Omsk, Novosibirsk',
190
+ 'Asia/Thimphu': '(GMT+06:00) Thimphu',
191
+ 'Indian/Chagos': '(GMT+06:00) Chagos',
192
+ 'Asia/Rangoon': '(GMT+06:30) Rangoon',
193
+ 'Indian/Cocos': '(GMT+06:30) Cocos',
194
+ 'Antarctica/Davis': '(GMT+07:00) Davis',
195
+ 'Asia/Bangkok': '(GMT+07:00) Bangkok',
196
+ 'Asia/Hovd': '(GMT+07:00) Hovd',
197
+ 'Asia/Jakarta': '(GMT+07:00) Jakarta',
198
+ 'Asia/Krasnoyarsk': '(GMT+07:00) Moscow+04 - Krasnoyarsk',
199
+ 'Asia/Saigon': '(GMT+07:00) Hanoi',
200
+ 'Asia/Ho_Chi_Minh': '(GMT+07:00) Ho Chi Minh',
201
+ 'Indian/Christmas': '(GMT+07:00) Christmas',
202
+ 'Antarctica/Casey': '(GMT+08:00) Casey',
203
+ 'Asia/Brunei': '(GMT+08:00) Brunei',
204
+ 'Asia/Choibalsan': '(GMT+08:00) Choibalsan',
205
+ 'Asia/Hong_Kong': '(GMT+08:00) Hong Kong',
206
+ 'Asia/Irkutsk': '(GMT+08:00) Moscow+05 - Irkutsk',
207
+ 'Asia/Kuala_Lumpur': '(GMT+08:00) Kuala Lumpur',
208
+ 'Asia/Macau': '(GMT+08:00) Macau',
209
+ 'Asia/Makassar': '(GMT+08:00) Makassar',
210
+ 'Asia/Manila': '(GMT+08:00) Manila',
211
+ 'Asia/Shanghai': '(GMT+08:00) China Time - Beijing',
212
+ 'Asia/Singapore': '(GMT+08:00) Singapore',
213
+ 'Asia/Taipei': '(GMT+08:00) Taipei',
214
+ 'Asia/Ulaanbaatar': '(GMT+08:00) Ulaanbaatar',
215
+ 'Australia/Perth': '(GMT+08:00) Western Time - Perth',
216
+ 'Asia/Pyongyang': '(GMT+08:30) Pyongyang',
217
+ 'Asia/Dili': '(GMT+09:00) Dili',
218
+ 'Asia/Jayapura': '(GMT+09:00) Jayapura',
219
+ 'Asia/Seoul': '(GMT+09:00) Seoul',
220
+ 'Asia/Tokyo': '(GMT+09:00) Tokyo',
221
+ 'Asia/Yakutsk': '(GMT+09:00) Moscow+06 - Yakutsk',
222
+ 'Pacific/Palau': '(GMT+09:00) Palau',
223
+ 'Australia/Adelaide': '(GMT+10:30) Central Time - Adelaide',
224
+ 'Australia/Darwin': '(GMT+09:30) Central Time - Darwin',
225
+ 'Antarctica/DumontDUrville': "(GMT+10:00) Dumont D'Urville",
226
+ 'Asia/Magadan': '(GMT+10:00) Moscow+07 - Magadan',
227
+ 'Asia/Vladivostok': '(GMT+10:00) Moscow+07 - Vladivostok',
228
+ 'Australia/Brisbane': '(GMT+10:00) Eastern Time - Brisbane',
229
+ 'Asia/Sakhalin': '(GMT+11:00) Moscow+08 - Yuzhno-Sakhalin',
230
+ 'Australia/Hobart': '(GMT+11:00) Eastern Time - Hobart',
231
+ 'Australia/Sydney': '(GMT+11:00) Eastern Time - Melbourne, Sydney',
232
+ 'Pacific/Chuuk': '(GMT+10:00) Truk',
233
+ 'Pacific/Guam': '(GMT+10:00) Guam',
234
+ 'Pacific/Port_Moresby': '(GMT+10:00) Port Moresby',
235
+ 'Pacific/Efate': '(GMT+11:00) Efate',
236
+ 'Pacific/Guadalcanal': '(GMT+11:00) Guadalcanal',
237
+ 'Pacific/Kosrae': '(GMT+11:00) Kosrae',
238
+ 'Pacific/Norfolk': '(GMT+11:00) Norfolk',
239
+ 'Pacific/Noumea': '(GMT+11:00) Noumea',
240
+ 'Pacific/Pohnpei': '(GMT+11:00) Ponape',
241
+ 'Asia/Kamchatka': '(GMT+12:00) Moscow+09 - Petropavlovsk-Kamchatskiy',
242
+ 'Pacific/Auckland': '(GMT+13:00) Auckland',
243
+ 'Pacific/Fiji': '(GMT+13:00) Fiji',
244
+ 'Pacific/Funafuti': '(GMT+12:00) Funafuti',
245
+ 'Pacific/Kwajalein': '(GMT+12:00) Kwajalein',
246
+ 'Pacific/Majuro': '(GMT+12:00) Majuro',
247
+ 'Pacific/Nauru': '(GMT+12:00) Nauru',
248
+ 'Pacific/Tarawa': '(GMT+12:00) Tarawa',
249
+ 'Pacific/Wake': '(GMT+12:00) Wake',
250
+ 'Pacific/Wallis': '(GMT+12:00) Wallis',
251
+ 'Pacific/Apia': '(GMT+14:00) Apia',
252
+ 'Pacific/Enderbury': '(GMT+13:00) Enderbury',
253
+ 'Pacific/Fakaofo': '(GMT+13:00) Fakaofo',
254
+ 'Pacific/Tongatapu': '(GMT+13:00) Tongatapu',
255
+ 'Pacific/Kiritimati': '(GMT+14:00) Kiritimati',
256
+ };
257
+ export const addTimezoneStartOfDay = (date: string, timezone: string): string =>
258
+ moment.tz(date, timezone).startOf('d').toISOString();
259
+ export const addTimezoneEndOfDay = (date: string, timezone: string): string =>
260
+ moment.tz(date, timezone).endOf('d').toISOString();
261
+ export const getTodayInTimezone = (timezone: string): string =>
262
+ moment.tz(timezone).format('YYYY-MM-DD');